#include <EvtMassAmp.hh>
Inheritance diagram for EvtMassAmp:
Public Member Functions | |
EvtMassAmp (const EvtPropBreitWignerRel &prop, const EvtTwoBodyVertex &vd) | |
EvtMassAmp (const EvtMassAmp &other) | |
virtual | ~EvtMassAmp () |
virtual EvtComplex | amplitude (const EvtPoint1D &p) const |
virtual EvtAmplitude< EvtPoint1D > * | clone () const |
void | setBirthVtx (const EvtTwoBodyVertex &vb) |
void | addBirthFact () |
void | addDeathFact () |
void | addBirthFactFF () |
void | addDeathFactFF () |
void | fixUpMassForMax () |
void | addFactorPn (double factor) |
EvtComplex | evaluate (const EvtPoint1D &p) const |
Private Attributes | |
EvtPropBreitWignerRel | _prop |
EvtTwoBodyVertex | _vd |
EvtTwoBodyVertex * | _vb |
double | _addfactor |
bool | _useBirthFact |
bool | _useDeathFact |
bool | _useBirthFactFF |
bool | _useDeathFactFF |
bool | _fixUpMassForMax |
Definition at line 29 of file EvtMassAmp.hh.
EvtMassAmp::EvtMassAmp | ( | const EvtPropBreitWignerRel & | prop, | |
const EvtTwoBodyVertex & | vd | |||
) |
Definition at line 20 of file EvtMassAmp.cc.
Referenced by clone().
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 {}
EvtMassAmp::EvtMassAmp | ( | const EvtMassAmp & | other | ) |
Definition at line 28 of file EvtMassAmp.cc.
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 {}
EvtMassAmp::~EvtMassAmp | ( | ) | [virtual] |
void EvtMassAmp::addBirthFact | ( | ) | [inline] |
Definition at line 46 of file EvtMassAmp.hh.
References _useBirthFact.
Referenced by EvtRelBreitWignerBarrierFact::getRandMass().
00046 { _useBirthFact = true; }
void EvtMassAmp::addBirthFactFF | ( | ) | [inline] |
Definition at line 48 of file EvtMassAmp.hh.
References _useBirthFactFF.
Referenced by EvtRelBreitWignerBarrierFact::getRandMass().
00048 { _useBirthFactFF = true; }
void EvtMassAmp::addDeathFact | ( | ) | [inline] |
Definition at line 47 of file EvtMassAmp.hh.
References _useDeathFact.
Referenced by EvtRelBreitWignerBarrierFact::getRandMass().
00047 { _useDeathFact = true; }
void EvtMassAmp::addDeathFactFF | ( | ) | [inline] |
Definition at line 49 of file EvtMassAmp.hh.
References _useDeathFactFF.
Referenced by EvtRelBreitWignerBarrierFact::getRandMass().
00049 { _useDeathFactFF = true; }
void EvtMassAmp::addFactorPn | ( | double | factor | ) | [inline] |
Definition at line 51 of file EvtMassAmp.hh.
References _addfactor.
Referenced by EvtRelBreitWignerBarrierFact::getRandMass().
00051 {_addfactor = factor;}
EvtComplex EvtMassAmp::amplitude | ( | const EvtPoint1D & | p | ) | const [virtual] |
Implements EvtAmplitude< EvtPoint1D >.
Definition at line 47 of file EvtMassAmp.cc.
References _addfactor, _fixUpMassForMax, _prop, _useBirthFact, _useBirthFactFF, _useDeathFact, _useDeathFactFF, _vb, _vd, EvtTwoBodyKine::AB, EvtTwoBodyVertex::formFactor(), EvtPropagator::g0(), EvtTwoBodyVertex::L(), EvtPropagator::m0(), EvtTwoBodyVertex::mA(), EvtTwoBodyVertex::mAB(), EvtTwoBodyVertex::mB(), EvtTwoBodyVertex::pD(), EvtTwoBodyVertex::phaseSpaceFactor(), EvtPoint1D::value(), and EvtTwoBodyVertex::widthFactor().
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 }
virtual EvtAmplitude<EvtPoint1D>* EvtMassAmp::clone | ( | ) | const [inline, virtual] |
Implements EvtAmplitude< EvtPoint1D >.
Definition at line 38 of file EvtMassAmp.hh.
References EvtMassAmp().
00039 { return new EvtMassAmp(*this); }
EvtComplex EvtAmplitude< EvtPoint1D >::evaluate | ( | const EvtPoint1D & | p | ) | const [inline, inherited] |
Definition at line 26 of file EvtAmplitude.hh.
References EvtAmplitude< T >::amplitude().
00027 { 00028 EvtComplex ret(0.,0.); 00029 if(p.isValid()) ret = amplitude(p); 00030 return ret; 00031 }
void EvtMassAmp::fixUpMassForMax | ( | ) | [inline] |
Definition at line 50 of file EvtMassAmp.hh.
References _fixUpMassForMax.
00050 { _fixUpMassForMax = true;}
void EvtMassAmp::setBirthVtx | ( | const EvtTwoBodyVertex & | vb | ) | [inline] |
Definition at line 41 of file EvtMassAmp.hh.
References _vb.
Referenced by EvtRelBreitWignerBarrierFact::getRandMass().
00042 { 00043 _vb = new EvtTwoBodyVertex(vb); 00044 }
double EvtMassAmp::_addfactor [private] |
bool EvtMassAmp::_fixUpMassForMax [private] |
EvtPropBreitWignerRel EvtMassAmp::_prop [private] |
bool EvtMassAmp::_useBirthFact [private] |
bool EvtMassAmp::_useBirthFactFF [private] |
bool EvtMassAmp::_useDeathFact [private] |
bool EvtMassAmp::_useDeathFactFF [private] |
EvtTwoBodyVertex* EvtMassAmp::_vb [private] |
Definition at line 57 of file EvtMassAmp.hh.
Referenced by amplitude(), setBirthVtx(), and ~EvtMassAmp().
EvtTwoBodyVertex EvtMassAmp::_vd [private] |