]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenBase/EvtAbsLineShape.hh
Updates EvtGen Code
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / 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
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   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