1 //-----------------------------------------------------------------------
2 // File and Version Information:
3 // $Id: EvtMassAmp.cpp,v 1.3 2009-03-16 15:47:10 robbep Exp $
6 // This software is part of the EvtGen package developed jointly
7 // for the BaBar and CLEO collaborations. If you use all or part
8 // of it, please give an appropriate acknowledgement.
10 // Copyright Information:
11 // Copyright (C) 1998 Caltech, UCSB
14 // Alexei Dvoretskii, Caltech, 2001-2002.
15 //-----------------------------------------------------------------------
16 #include "EvtGenBase/EvtPatches.hh"
18 #include "EvtGenBase/EvtMassAmp.hh"
20 EvtMassAmp::EvtMassAmp(const EvtPropBreitWignerRel& prop, const EvtTwoBodyVertex& vd)
21 : EvtAmplitude<EvtPoint1D>()
22 ,_prop(prop), _vd(vd), _vb(0)
23 ,_useBirthFact(false), _useDeathFact(false)
24 ,_useBirthFactFF(false), _useDeathFactFF(false)
27 EvtMassAmp::EvtMassAmp(const EvtMassAmp& other)
28 : EvtAmplitude<EvtPoint1D>(other)
29 ,_prop(other._prop), _vd(other._vd)
30 ,_vb(other._vb ? new EvtTwoBodyVertex(*other._vb) : 0)
31 ,_useBirthFact(other._useBirthFact)
32 ,_useDeathFact(other._useDeathFact)
33 ,_useBirthFactFF(other._useBirthFactFF)
34 ,_useDeathFactFF(other._useDeathFactFF)
38 EvtMassAmp::~EvtMassAmp()
44 EvtComplex EvtMassAmp::amplitude(const EvtPoint1D& p) const
49 // keep things from crashing..
51 if ( m< (_vd.mA()+_vd.mB()) ) return EvtComplex(0.,0.);
53 EvtTwoBodyKine vd(_vd.mA(),_vd.mB(),m);
55 // Compute mass-dependent width for relativistic propagator
57 EvtPropBreitWignerRel bw(_prop.m0(),_prop.g0()*_vd.widthFactor(vd));
58 EvtComplex amp = bw.evaluate(m);
61 // Birth vertex factors
66 if ( (m+_vb->mB()) < _vb->mAB() ) {
67 EvtTwoBodyKine vb(m,_vb->mB(),_vb->mAB());
68 amp *= _vb->phaseSpaceFactor(vb,EvtTwoBodyKine::AB);
69 amp *= sqrt((vb.p() / _vb->pD()));
74 amp *= _vb->formFactor(vb);
78 if ( _vb->L() != 0 ) amp=0.;
83 // Decay vertex factors
86 amp *= _vd.phaseSpaceFactor(vd,EvtTwoBodyKine::AB);
87 amp *= sqrt((vd.p() / _vd.pD()));
89 if(_useDeathFactFF) amp *= _vd.formFactor(vd);