1 //--------------------------------------------------------------------------
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.
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 1998 Caltech, UCSB
11 // Module: EvtGen/EvtAbsLineShape.hh
13 // Description: Class to keep the particle properties for
16 // Modification history:
18 // Lange March 10, 2001 Module created
20 //------------------------------------------------------------------------
22 #ifndef EVTABSLINESHAPE_HH
23 #define EVTABSLINESHAPE_HH
25 #include "EvtGenBase/EvtSpinType.hh"
26 #include "EvtGenBase/EvtId.hh"
31 class 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);
41 double getMass() {return _mass;}
42 double getMassMin() {return _massMin;}
43 double getMassMax() {return _massMax;}
44 double getMaxRange() {return _maxRange;}
45 double getWidth() {return _width;}
46 EvtSpinType::spintype getSpinType() {return _spin;}
47 virtual double rollMass();
48 virtual EvtAbsLineShape* clone();
50 void reSetMass(double mass) { _mass=mass;}
51 void reSetWidth(double width) { _width=width;}
52 void reSetMassMin(double mass) { _massMin=mass;}
53 void reSetMassMax(double mass) { _massMax=mass;}
54 virtual void reSetBlatt(double blatt) {};
55 void includeBirthFactor(bool yesno) { _includeBirthFact = yesno; }
56 void includeDecayFactor(bool yesno) { _includeDecayFact = yesno; }
57 void setPWForDecay( int spin, EvtId d1, EvtId d2) {
58 _userSetPW.push_back(spin);
59 _userSetPWD1.push_back(d1);
60 _userSetPWD2.push_back(d2);
62 void setPWForBirthL( int spin, EvtId par, EvtId othD) {
63 _userSetBirthPW.push_back(spin);
64 _userSetBirthOthD.push_back(othD);
65 _userSetBirthPar.push_back(par);
68 virtual double getRandMass(EvtId *parId, int nDaug, EvtId *dauId, EvtId *othDaugId,double maxMass, double *dauMasses);
69 virtual double getMassProb(double mass, double massPar, int nDaug, double *massDau);
71 void fixForSP8() { _applyFixForSP8=true;}
74 bool _includeDecayFact;
75 bool _includeBirthFact;
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>"
86 std::vector<EvtId> _userSetPWD1,_userSetPWD2;
87 std::vector<int> _userSetPW;
89 // also do it for birth factors
90 std::vector<EvtId> _userSetBirthPar,_userSetBirthOthD;
91 std::vector<int> _userSetBirthPW;
93 EvtSpinType::spintype _spin;