MINT2
BW_BW.h
Go to the documentation of this file.
1 #ifndef BREITWIGNER_BLATTWEISSKOPF_HH
2 #define BREITWIGNER_BLATTWEISSKOPF_HH
3 // author: Jonas Rademacker (Jonas.Rademacker@bristol.ac.uk)
4 // status: Mon 9 Feb 2009 19:18:04 GMT
5 
6 #include <complex>
7 #include <string>
8 #include <iostream>
9 #include <vector>
10 #include <stack>
11 
12 #include "Mint/ILineshape.h"
14 #include "Mint/DalitzCoordinate.h"
15 #include "Mint/MultiQuarkContent.h"
16 #include "Mint/GaussFct.h"
17 #include "Mint/IGenFct.h"
19 #include "Mint/FitParDependent.h"
21 #include "Mint/NamedParameter.h"
23 
24 #include "TRandom.h"
25 
26 class ParticleProperties;
27 
28 // Breit-Wigner with Blatt-Weisskopf penetration factors.
29 // Can only do 2 body decays for now... (it's the BW penetration factors)
30 class BW_BW : virtual public ILineshape, public MINT::FitParDependent{
31  private:
33  // mutable std::stack<IDalitzEvent*> _oldPointers;
34 
35  mutable double _prSq, _prSqForGofM, _pABSq, //_mumsPDGMass, _mumsPDGWidth,
37  mutable int _mumsPID;
38  mutable bool _mumsPID_set;
39 
40  // mutable double _mumsPDGRadius;
41 
43 
44  mutable int _twoLPlusOne;
45 
46  mutable std::vector<double> _daughterRecoMass2
48 
49  mutable bool _substitutePDGForReco;
50 
52 
53  double peakShift() const;
54  double peakPosition() const;
55 
56  void makeGeneratingFunction() const;
57 
58  protected:
60 
63 
64  std::string _prefix;
65 
68 
71 
72  const std::string& prefix() const{return _prefix;}
73  bool substitutePDGForReco() const{
74  return _substitutePDGForReco;
75  }
76 
77  virtual double twoBody_dgtPsq_in_MumsFrame(double mumsMass
78  , double mA
79  , double mB)const;
80  virtual double twoBody_dgtPsq_in_MumsPDGFrame() const;
81  virtual double twoBody_recodgtPsq_in_MumsPDGFrame() const;
82  virtual double twoBody_dgtPsq_in_MumsRecoFrame();
83 
84  bool setEventPtr(IDalitzEvent& evt) const;
85  IDalitzEvent* getEvent() const;
86 
87  public:
88  virtual double prSq() const;
89  virtual double prSqForGofM() const;
90  virtual double pABSq();
91 
92  virtual double prSqMax() const;
93  protected:
94 
95  bool setAllFitParameters();
96 
100 
103 
104  virtual const ParticleProperties* mumsProperties() const;
106 
107  virtual int mumsPID() const;
108  virtual double mumsMass() const;
109  //virtual double mumsPDGMass() const;
110  virtual double mumsWidth() const;
111  //virtual double mumsPDGWidth() const;
112  virtual double mumsRadius() const; // individual resonance radius
113  //virtual double mumsPDGRadius() const; // fixed default value
114  virtual double globalRadius() const; // global resonance radius (equal for all resonances)
115  virtual double Radius() const; // returns either global (default) or individual radius depending on options
116  double GetAlpha() const{
117  return _RPL->get(mumsPID())->alpha();
118  }
119  virtual int lowestPossibleTwoLPlusOne() const;
120  // none of all this can handle half-integer spins
121  // (i.e. only mesons - so far - should be easy to
122  // adjust one day, but needs to be done).
123  virtual int maxDaughterSpinSum() const;
124  virtual int minDaughterSpinSum() const;
125  virtual int minDaughterSpinSum2() const;
126  virtual int minDaughterSpinSum3() const;
127  virtual int minDaughterSpinSum4() const;
128  virtual int maxDaughterPairSpinSum(int i, int j) const;
129  virtual int minDaughterPairSpinSum(int i, int j) const;
130 
131  virtual std::string mumsSpin() const;
132  virtual int mumsSpinValue() const;
133  virtual int mumsParity() const;
134 
135  virtual bool startOfDecayChain() const;
136 
137  virtual bool parityConservingL(int L)const;
138 
139  virtual double mumsRecoMass2() const;
140  virtual double mumsRecoMass() const;
141  virtual MultiQuarkContent mumsQuarkContent() const;
142 
143  bool nonResonant() const;
144 
145  virtual int numDaughters() const;
146  virtual TLorentzVector daughterP4(int i) const;
147 
148  virtual double daughterPDGMass( const int& i ) const;
149  virtual double daughterWidth(int i) const;
150  virtual double daughterRecoMass2(int i) const;
151  virtual double daughterRecoMass(int i) const;
152  virtual std::string daughterSpin(int i) const;
153  virtual int daughterSpinValue(int i) const;
154  virtual MultiQuarkContent daughterQuarkContent(int i) const;
155  virtual int daughterP(int i)const;
156  virtual int dgtrsInternalParity() const;
157 
158  virtual MultiQuarkContent dgtrsQuarkContent() const;
159 
160  virtual bool isWeakDecay() const;
161 
162  /*
163  Unnormalised Blatt-Weisskopf Barrier Factors
164  */
165  virtual double Fr_PDG_BL();
166  virtual double Fr_BELLE(double prSquared);
167  virtual double Fr_BELLE_Max();
168 
169  virtual double Fr();
170  virtual double FrForGofM();
171  virtual double FrMax();
172  virtual double GofM();
173 
174  virtual std::complex<double> BreitWigner();
175 
176  // virtual bool thisIsD() const;
177 
178 
179  virtual void resetInternals();
180 
181  virtual void resetPDG();
182 
183  public:
184  BW_BW( const AssociatedDecayTree& decay, const std::string& lineshapePrefix="", MINT::MinuitParameterSet* mps=0);
185  BW_BW(const BW_BW& other);
186  virtual ~BW_BW();
187 
188  virtual std::complex<double> getVal(IDalitzEvent& evt);
189 
190  virtual void print(IDalitzEvent& evt, std::ostream& out = std::cout);
191  virtual void print(std::ostream& out = std::cout) const;
192 
193  virtual DalitzCoordinate getDalitzCoordinate(double nSigma=3) const;
195 
196  virtual void setGenerationLimits(double mi, double ma);
197 
198  virtual std::string name() const{
199  return "BW_BW("+_theDecay.oneLiner() +")";
200  }
201 
202  virtual int twoLPlusOne() const;
203 
204  virtual std::complex<double> EvtGenValue(IDalitzEvent& evt);
205 };
206 
207 std::ostream& operator<<(std::ostream& out, const BW_BW& amp);
208 
209 #endif
210 //
virtual double prSqForGofM() const
Definition: BW_BW.cpp:989
virtual int daughterP(int i) const
Definition: BW_BW.cpp:255
ResonancePropertiesList * _RPL
Definition: BW_BW.h:97
const MINT::MinuitParameterSet * getMinuitParameterSet() const
Definition: BW_BW.cpp:133
virtual double prSq() const
Definition: BW_BW.cpp:969
virtual void resetInternals()
Definition: BW_BW.cpp:1114
double _gen_s_ma
Definition: BW_BW.h:70
virtual double Fr()
Definition: BW_BW.cpp:710
double _prSq
Definition: BW_BW.h:35
virtual double FrForGofM()
Definition: BW_BW.cpp:713
virtual const ParticleProperties * mumsProperties() const
Definition: BW_BW.cpp:380
virtual bool parityConservingL(int L) const
Definition: BW_BW.cpp:233
std::vector< double > _daughterPDGMass
Definition: BW_BW.h:47
std::ostream & operator<<(std::ostream &out, const BW_BW &amp)
Definition: BW_BW.cpp:1453
int _twoLPlusOne
Definition: BW_BW.h:44
virtual bool isWeakDecay() const
Definition: BW_BW.cpp:211
const AssociatedDecayTree & _theDecay
Definition: BW_BW.h:69
virtual double mumsMass() const
Definition: BW_BW.cpp:453
virtual double Radius() const
Definition: BW_BW.cpp:481
virtual int minDaughterPairSpinSum(int i, int j) const
Definition: BW_BW.cpp:375
virtual double daughterPDGMass(const int &i) const
Definition: BW_BW.cpp:648
virtual int daughterSpinValue(int i) const
Definition: BW_BW.cpp:707
virtual int twoLPlusOne() const
Definition: BW_BW.cpp:151
virtual void resetPDG()
Definition: BW_BW.cpp:1123
bool setEventPtr(IDalitzEvent &evt) const
Definition: BW_BW.cpp:141
int _mumsParity
Definition: BW_BW.h:42
int _dgtrsInternalParity
Definition: BW_BW.h:42
virtual int dgtrsInternalParity() const
Definition: BW_BW.cpp:273
MINT::MinuitParameterSet * _mps
Definition: BW_BW.h:59
virtual MultiQuarkContent daughterQuarkContent(int i) const
Definition: BW_BW.cpp:692
virtual std::complex< double > EvtGenValue(IDalitzEvent &evt)
Definition: BW_BW.cpp:1304
double _gen_s_mi
Definition: BW_BW.h:70
virtual int mumsPID() const
Definition: BW_BW.cpp:517
double _prSqForGofM
Definition: BW_BW.h:35
virtual double FrMax()
Definition: BW_BW.cpp:716
virtual void setGenerationLimits(double mi, double ma)
Definition: BW_BW.cpp:1109
virtual double prSqMax() const
Definition: BW_BW.cpp:944
virtual void print(IDalitzEvent &evt, std::ostream &out=std::cout)
Definition: BW_BW.cpp:1287
const ResonanceProperties * get(int i) const
std::string _prefix
Definition: BW_BW.h:64
bool setAllFitParameters()
Definition: BW_BW.cpp:426
virtual double daughterRecoMass2(int i) const
Definition: BW_BW.cpp:583
Definition: BW_BW.h:30
virtual int minDaughterSpinSum4() const
Definition: BW_BW.cpp:354
virtual double daughterRecoMass(int i) const
Definition: BW_BW.cpp:617
virtual double Fr_PDG_BL()
Definition: BW_BW.cpp:830
BW_BW(const AssociatedDecayTree &decay, const std::string &lineshapePrefix="", MINT::MinuitParameterSet *mps=0)
Definition: BW_BW.cpp:26
virtual int minDaughterSpinSum3() const
Definition: BW_BW.cpp:343
virtual double globalRadius() const
Definition: BW_BW.cpp:470
IDalitzEvent * getEvent() const
Definition: BW_BW.cpp:147
virtual int mumsSpinValue() const
Definition: BW_BW.cpp:513
bool nonResonant() const
Definition: BW_BW.cpp:221
double peakPosition() const
Definition: BW_BW.cpp:1237
virtual int maxDaughterPairSpinSum(int i, int j) const
Definition: BW_BW.cpp:371
virtual int minDaughterSpinSum2() const
Definition: BW_BW.cpp:340
bool _substitutePDGForReco
Definition: BW_BW.h:49
virtual double mumsRecoMass2() const
Definition: BW_BW.cpp:548
virtual double Fr_BELLE_Max()
Definition: BW_BW.cpp:776
virtual ~BW_BW()
Definition: BW_BW.cpp:128
virtual std::string daughterSpin(int i) const
Definition: BW_BW.cpp:682
virtual MultiQuarkContent dgtrsQuarkContent() const
Definition: BW_BW.cpp:225
double _pABSq
Definition: BW_BW.h:35
virtual TLorentzVector daughterP4(int i) const
Definition: BW_BW.cpp:566
std::vector< double > _daughterRecoMass2
Definition: BW_BW.h:47
virtual MultiQuarkContent mumsQuarkContent() const
Definition: BW_BW.cpp:215
int _mumsPID
Definition: BW_BW.h:37
double GetAlpha() const
Definition: BW_BW.h:116
virtual double pABSq()
Definition: BW_BW.cpp:1014
MINT::NamedParameter< int > _normBF
Definition: BW_BW.h:66
virtual ResonancePropertiesFitRef & mumsFittableProperties() const
Definition: BW_BW.cpp:414
double _Fr_BELLE
Definition: BW_BW.h:35
virtual bool startOfDecayChain() const
Definition: BW_BW.cpp:532
virtual double Fr_BELLE(double prSquared)
Definition: BW_BW.cpp:720
MINT::FitParRef * _fittableGlobalRadiusPtr
Definition: BW_BW.h:99
bool substitutePDGForReco() const
Definition: BW_BW.h:73
virtual MINT::counted_ptr< IGenFct > generatingFunction() const
Definition: BW_BW.cpp:1277
virtual double twoBody_recodgtPsq_in_MumsPDGFrame() const
Definition: BW_BW.cpp:903
const ResonanceProperties * resonanceProperties() const
Definition: BW_BW.cpp:403
virtual double GofM()
Definition: BW_BW.cpp:1035
virtual double mumsRecoMass() const
Definition: BW_BW.cpp:631
bool _mumsPID_set
Definition: BW_BW.h:38
virtual double mumsWidth() const
Definition: BW_BW.cpp:460
virtual int mumsParity() const
Definition: BW_BW.cpp:238
virtual double mumsRadius() const
Definition: BW_BW.cpp:465
void oneLiner(std::stringstream &seam, int generation=0) const
Definition: DDTree.h:375
double peakShift() const
Definition: BW_BW.cpp:1207
virtual int numDaughters() const
Definition: BW_BW.cpp:252
ResonancePropertiesList * resonancePropertiesList() const
Definition: BW_BW.cpp:391
double _Fr_PDG_BL
Definition: BW_BW.h:35
std::vector< double > _daughterWidth
Definition: BW_BW.h:47
virtual double twoBody_dgtPsq_in_MumsRecoFrame()
Definition: BW_BW.cpp:910
double _GofM
Definition: BW_BW.h:35
virtual int lowestPossibleTwoLPlusOne() const
Definition: BW_BW.cpp:163
virtual std::string name() const
Definition: BW_BW.h:198
ResonancePropertiesFitRef * _fittableResonancePropertiesPtr
Definition: BW_BW.h:98
virtual std::string mumsSpin() const
Definition: BW_BW.cpp:509
virtual double daughterWidth(int i) const
Definition: BW_BW.cpp:668
virtual int minDaughterSpinSum() const
Definition: BW_BW.cpp:292
virtual double twoBody_dgtPsq_in_MumsFrame(double mumsMass, double mA, double mB) const
Definition: BW_BW.cpp:917
virtual int maxDaughterSpinSum() const
Definition: BW_BW.cpp:284
MINT::counted_ptr< IGenFct > _genFct
Definition: BW_BW.h:51
bool _useGlobalRadius
Definition: BW_BW.h:67
virtual double twoBody_dgtPsq_in_MumsPDGFrame() const
Definition: BW_BW.cpp:889
virtual std::complex< double > getVal(IDalitzEvent &evt)
Definition: BW_BW.cpp:1138
const std::string & prefix() const
Definition: BW_BW.h:72
double _mumsRecoMass2
Definition: BW_BW.h:35
virtual std::complex< double > BreitWigner()
Definition: BW_BW.cpp:1093
virtual DalitzCoordinate getDalitzCoordinate(double nSigma=3) const
Definition: BW_BW.cpp:537
IDalitzEvent * _eventPtr
Definition: BW_BW.h:32
double _mumsRecoMass
Definition: BW_BW.h:35
void makeGeneratingFunction() const
Definition: BW_BW.cpp:1245