1 #include "EvtGenBase/EvtPatches.hh"
2 /*******************************************************************************
3 * Project: BaBar detector at the SLAC PEP-II B-factory
5 * Author : D. Dujmic, J. Thompson
7 * Copyright (C) 2005 SLAC
8 *******************************************************************************/
11 #include "EvtGenBase/EvtPropFlatte.hh"
17 EvtPropFlatte::EvtPropFlatte(double m0,
18 double g0, double m0a, double m0b,
19 double g1, double m1a, double m1b) :
20 EvtPropagator( m0, g0),
29 EvtPropFlatte::EvtPropFlatte(const EvtPropFlatte& other) :
39 EvtPropFlatte::~EvtPropFlatte()
43 EvtAmplitude<EvtPoint1D>* EvtPropFlatte::clone() const
45 return new EvtPropFlatte(*this);
50 EvtComplex EvtPropFlatte::amplitude(const EvtPoint1D& x) const
55 Use BES parameterization:
58 -----------------------------------------
59 m0^2 - m^2 - i*m0*( g1*rho1 + g2*rho2 )
63 Channel1: m0a, m0b, g0
64 Channel2: m1a, m1b, g1
66 where breakup momenta q's are:
68 E0a = (m^2 + m0a^2 - m0b^2) / 2m
69 q0 = sqrt( E0a^2 - m0a^2 )
71 E1a = (m^2 + m1a^2 - m1b^2) / 2m
72 q1 = sqrt( E1a^2 - m1a^2 )
79 double s = x.value()*x.value();
82 double E0a = 0.5 * (s + _m0a*_m0a - _m0b*_m0b) / m;
83 double qSq0 = E0a*E0a - _m0a*_m0a;
85 double E1a = 0.5 * (s + _m1a*_m1a - _m1b*_m1b) / m;
86 double qSq1 = E1a*E1a - _m1a*_m1a;
88 EvtComplex gamma0 = qSq0 >= 0 ? EvtComplex( _g0 * sqrt(qSq0), 0) : EvtComplex( 0, _g0 * sqrt(-qSq0) );
89 EvtComplex gamma1 = qSq1 >= 0 ? EvtComplex( _g1 * sqrt(qSq1), 0) : EvtComplex( 0, _g1 * sqrt(-qSq1) );
91 EvtComplex gamma = gamma0 + gamma1;
93 EvtComplex a = 1.0/( _m0*_m0 - s - EvtComplex(0.0,2*_m0/m)*gamma );