#include <EvtMassAmp.hh>
Inheritance diagram for EvtMassAmp:
Public Member Functions | |
void | addBirthFact () |
void | addBirthFactFF () |
void | addDeathFact () |
void | addDeathFactFF () |
void | addFactorPn (double factor) |
virtual EvtComplex | amplitude (const EvtPoint1D &p) const |
virtual EvtAmplitude< EvtPoint1D > * | clone () const |
EvtComplex | evaluate (const EvtPoint1D &p) const |
EvtMassAmp (const EvtMassAmp &other) | |
EvtMassAmp (const EvtPropBreitWignerRel &prop, const EvtTwoBodyVertex &vd) | |
void | fixUpMassForMax () |
void | setBirthVtx (const EvtTwoBodyVertex &vb) |
virtual | ~EvtMassAmp () |
Private Attributes | |
double | _addfactor |
bool | _fixUpMassForMax |
EvtPropBreitWignerRel | _prop |
bool | _useBirthFact |
bool | _useBirthFactFF |
bool | _useDeathFact |
bool | _useDeathFactFF |
EvtTwoBodyVertex * | _vb |
EvtTwoBodyVertex | _vd |
|
00021 : EvtAmplitude<EvtPoint1D>() 00022 ,_prop(prop), _vd(vd), _vb(0) 00023 ,_useBirthFact(false), _useDeathFact(false) 00024 ,_useBirthFactFF(false), _useDeathFactFF(false) 00025 ,_fixUpMassForMax(false),_addfactor(0.) 00026 {}
|
|
00029 : EvtAmplitude<EvtPoint1D>(other) 00030 ,_prop(other._prop), _vd(other._vd) 00031 ,_vb(other._vb ? new EvtTwoBodyVertex(*other._vb) : 0) 00032 ,_useBirthFact(other._useBirthFact) 00033 ,_useDeathFact(other._useDeathFact) 00034 ,_useBirthFactFF(other._useBirthFactFF) 00035 ,_useDeathFactFF(other._useDeathFactFF) 00036 ,_fixUpMassForMax(other._fixUpMassForMax) 00037 ,_addfactor(other._addfactor) 00038 {}
|
|
00042 { 00043 if(_vb) delete _vb; 00044 }
|
|
00046 { _useBirthFact = true; }
|
|
00048 { _useBirthFactFF = true; }
|
|
00047 { _useDeathFact = true; }
|
|
00049 { _useDeathFactFF = true; }
|
|
00051 {_addfactor = factor;}
|
|
Implements EvtAmplitude< EvtPoint1D >. 00048 { 00049 // Modified vertex 00050 00051 double m = p.value(); 00052 // keep things from crashing.. 00053 00054 if ( m< (_vd.mA()+_vd.mB()) ) return EvtComplex(0.,0.); 00055 00056 EvtTwoBodyKine vd(_vd.mA(),_vd.mB(),m); 00057 00058 // Compute mass-dependent width for relativistic propagator 00059 00060 EvtPropBreitWignerRel bw(_prop.m0(),_prop.g0()*_vd.widthFactor(vd)); 00061 EvtComplex amp = bw.evaluate(m); 00062 00063 00064 // Birth vertex factors 00065 00066 if(_useBirthFact) { 00067 00068 assert(_vb); 00069 if ( (m+_vb->mB()) < _vb->mAB() ) { 00070 EvtTwoBodyKine vb(m,_vb->mB(),_vb->mAB()); 00071 double phsp= _vb->phaseSpaceFactor(vb,EvtTwoBodyKine::AB); 00072 amp *= phsp; 00073 00074 if ( _fixUpMassForMax ) { 00075 amp *= sqrt((vb.p() / _vb->pD())); 00076 } 00077 if(_useBirthFactFF) { 00078 00079 assert(_vb); 00080 amp *= _vb->formFactor(vb); 00081 } 00082 } 00083 else{ 00084 if ( _vb->L() != 0 ) amp=0.; 00085 } 00086 } 00087 00088 00089 // Decay vertex factors 00090 00091 if(_useDeathFact) { 00092 amp *= _vd.phaseSpaceFactor(vd,EvtTwoBodyKine::AB); 00093 if ( _fixUpMassForMax ) { 00094 amp *= sqrt((vd.p() / _vd.pD())); 00095 } 00096 } 00097 if(_useDeathFactFF) amp *= _vd.formFactor(vd); 00098 00099 // AddFactorPn 00100 00101 if(fabs(_addfactor) > 0.00000001){ //addFactorPn, pingrg-2011-1-6 00102 assert(_vb); 00103 double phsp; 00104 if ( (m+_vb->mB()) < _vb->mAB() ) { 00105 EvtTwoBodyKine vb(m,_vb->mB(),_vb->mAB()); 00106 phsp= vb.p(EvtTwoBodyKine::AB); 00107 } else{ 00108 if ( _vb->L() != 0 ) phsp=0.; 00109 } 00110 00111 amp *= pow(phsp,_addfactor); 00112 // std::cout<<"EvtMassAmp::addFactorPn= "<<pow(phsp,_addfactor)<<std::endl; 00113 } 00114 00115 return amp; 00116 }
|
|
Implements EvtAmplitude< EvtPoint1D >. 00039 { return new EvtMassAmp(*this); }
|
|
00027 { 00028 EvtComplex ret(0.,0.); 00029 if(p.isValid()) ret = amplitude(p); 00030 return ret; 00031 }
|
|
00050 { _fixUpMassForMax = true;}
|
|
00042 { 00043 _vb = new EvtTwoBodyVertex(vb); 00044 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|