StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
EvtAbsLineShape.hh
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 
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);
40 
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();
49 
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  virtual void reSetBlattBirth(double /*blatt*/) {};
56  void includeBirthFactor(bool yesno) { _includeBirthFact = yesno; }
57  void includeDecayFactor(bool yesno) { _includeDecayFact = yesno; }
58  void setPWForDecay( int spin, EvtId d1, EvtId d2) {
59  _userSetPW.push_back(spin);
60  _userSetPWD1.push_back(d1);
61  _userSetPWD2.push_back(d2);
62  }
63  void setPWForBirthL( int spin, EvtId par, EvtId othD) {
64  _userSetBirthPW.push_back(spin);
65  _userSetBirthOthD.push_back(othD);
66  _userSetBirthPar.push_back(par);
67  }
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 
Definition: EvtId.hh:27