Line data Source code
1 : //--------------------------------------------------------------------------
2 : //
3 : // Environment:
4 : // This software is part of the EvtGen package developed jointly
5 : // for the BaBar and CLEO collaborations. If you use all or part
6 : // of it, please give an appropriate acknowledgement.
7 : //
8 : // Copyright Information: See EvtGen/COPYRIGHT
9 : // Copyright (C) 1998 Caltech, UCSB
10 : //
11 : // Module: EvtGen/EvtAbsLineShape.hh
12 : //
13 : // Description: Class to keep the particle properties for
14 : // one particle
15 : //
16 : // Modification history:
17 : //
18 : // Lange March 10, 2001 Module created
19 : //
20 : //------------------------------------------------------------------------
21 :
22 : #ifndef EVTABSLINESHAPE_HH
23 : #define EVTABSLINESHAPE_HH
24 :
25 : #include "EvtGenBase/EvtSpinType.hh"
26 : #include "EvtGenBase/EvtId.hh"
27 : #include <vector>
28 :
29 : class EvtId;
30 :
31 : class EvtAbsLineShape {
32 :
33 : public:
34 :
35 : EvtAbsLineShape();
36 : EvtAbsLineShape(double mass, double width, double maxRange, EvtSpinType::spintype sp);
37 : virtual ~EvtAbsLineShape();
38 : EvtAbsLineShape& operator=(const EvtAbsLineShape& x);
39 : EvtAbsLineShape(const EvtAbsLineShape& x);
40 :
41 0 : double getMass() {return _mass;}
42 0 : double getMassMin() {return _massMin;}
43 0 : double getMassMax() {return _massMax;}
44 0 : double getMaxRange() {return _maxRange;}
45 0 : double getWidth() {return _width;}
46 0 : EvtSpinType::spintype getSpinType() {return _spin;}
47 : virtual double rollMass();
48 : virtual EvtAbsLineShape* clone();
49 :
50 0 : void reSetMass(double mass) { _mass=mass;}
51 0 : void reSetWidth(double width) { _width=width;}
52 0 : void reSetMassMin(double mass) { _massMin=mass;}
53 0 : void reSetMassMax(double mass) { _massMax=mass;}
54 0 : virtual void reSetBlatt(double /*blatt*/) {};
55 0 : virtual void reSetBlattBirth(double /*blatt*/) {};
56 0 : void includeBirthFactor(bool yesno) { _includeBirthFact = yesno; }
57 0 : void includeDecayFactor(bool yesno) { _includeDecayFact = yesno; }
58 : void setPWForDecay( int spin, EvtId d1, EvtId d2) {
59 0 : _userSetPW.push_back(spin);
60 0 : _userSetPWD1.push_back(d1);
61 0 : _userSetPWD2.push_back(d2);
62 0 : }
63 : void setPWForBirthL( int spin, EvtId par, EvtId othD) {
64 0 : _userSetBirthPW.push_back(spin);
65 0 : _userSetBirthOthD.push_back(othD);
66 0 : _userSetBirthPar.push_back(par);
67 0 : }
68 :
69 : virtual double getRandMass(EvtId *parId, int nDaug, EvtId *dauId, EvtId *othDaugId,double maxMass, double *dauMasses);
70 : virtual double getMassProb(double mass, double massPar, int nDaug, double *massDau);
71 :
72 : protected:
73 :
74 : bool _includeDecayFact;
75 : bool _includeBirthFact;
76 : double _mass;
77 : double _massMin;
78 : double _massMax;
79 : double _width;
80 : double _maxRange;
81 :
82 : // allow for special cases where the default method of picking the
83 : //lowest allowed partial wave for a decay is not the right answer.
84 : // string is "<spin> <daughter1> <daughter2>"
85 : //new 9/12/2003 Lange
86 : std::vector<EvtId> _userSetPWD1,_userSetPWD2;
87 : std::vector<int> _userSetPW;
88 :
89 : // also do it for birth factors
90 : std::vector<EvtId> _userSetBirthPar,_userSetBirthOthD;
91 : std::vector<int> _userSetBirthPW;
92 :
93 : EvtSpinType::spintype _spin;
94 : };
95 :
96 : #endif
97 :
|