EvtPto3PAmp Class Reference

#include <EvtPto3PAmp.hh>

Inheritance diagram for EvtPto3PAmp:

EvtAmplitude< EvtDalitzPoint > List of all members.

Public Types

 NBW = 0
 RBW_ZEMACH = 1
 RBW_KUEHN = 2
 RBW_CLEO = 3
enum  NumType { NBW = 0, RBW_ZEMACH = 1, RBW_KUEHN = 2, RBW_CLEO = 3 }

Public Member Functions

 EvtPto3PAmp (EvtDalitzPlot dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, EvtSpinType::spintype spin, const EvtPropagator &prop, NumType typeN)
 EvtPto3PAmp (const EvtPto3PAmp &other)
 ~EvtPto3PAmp ()
virtual EvtAmplitude< EvtDalitzPoint > * clone () const
virtual EvtComplex amplitude (const EvtDalitzPoint &p) const
EvtComplex numerator (const EvtDalitzPoint &p) const
double angDep (const EvtDalitzPoint &p) const
void set_fd (double R)
void set_fb (double R)
EvtComplex evaluate (const EvtDalitzPoint &p) const

Private Attributes

EvtCyclic3::Pair _pairAng
EvtCyclic3::Pair _pairRes
EvtSpinType::spintype _spin
NumType _typeN
EvtPropagator_prop
double _g0
EvtTwoBodyVertex _vb
EvtTwoBodyVertex _vd

Detailed Description

Definition at line 25 of file EvtPto3PAmp.hh.


Member Enumeration Documentation

enum EvtPto3PAmp::NumType

Enumerator:
NBW 
RBW_ZEMACH 
RBW_KUEHN 
RBW_CLEO 

Definition at line 31 of file EvtPto3PAmp.hh.

00031 {NBW=0,RBW_ZEMACH=1,RBW_KUEHN=2,RBW_CLEO=3};


Constructor & Destructor Documentation

EvtPto3PAmp::EvtPto3PAmp ( EvtDalitzPlot  dp,
EvtCyclic3::Pair  pairAng,
EvtCyclic3::Pair  pairRes,
EvtSpinType::spintype  spin,
const EvtPropagator prop,
NumType  typeN 
)

Referenced by clone().

EvtPto3PAmp::EvtPto3PAmp ( const EvtPto3PAmp other  ) 

Definition at line 39 of file EvtPto3PAmp.cc.

00040   : EvtAmplitude<EvtDalitzPoint>(other),
00041   _pairAng(other._pairAng),
00042   _pairRes(other._pairRes),
00043   _spin(other._spin),
00044   _typeN(other._typeN),
00045   _prop( (other._prop) ? (EvtPropagator*) other._prop->clone() : 0),
00046   _g0(other._g0),
00047   _vb(other._vb), _vd(other._vd)
00048 {}

EvtPto3PAmp::~EvtPto3PAmp (  ) 

Definition at line 51 of file EvtPto3PAmp.cc.

References _prop.

00052 {
00053   if(_prop) delete _prop;
00054 }


Member Function Documentation

EvtComplex EvtPto3PAmp::amplitude ( const EvtDalitzPoint p  )  const [virtual]

Implements EvtAmplitude< EvtDalitzPoint >.

Definition at line 68 of file EvtPto3PAmp.cc.

References _g0, _pairRes, _prop, _typeN, _vb, _vd, EvtAmplitude< T >::evaluate(), EvtCyclic3::first(), EvtTwoBodyVertex::formFactor(), NBW, numerator(), EvtCyclic3::other(), EvtCyclic3::second(), EvtPropagator::set_g0(), EvtTwoBodyVertex::widthFactor(), and x.

00069 {
00070   EvtComplex amp(1.0,0.0);
00071 
00072   double m = sqrt(x.q(_pairRes));
00073   EvtTwoBodyKine vd(x.m(EvtCyclic3::first(_pairRes)),
00074                     x.m(EvtCyclic3::second(_pairRes)),m);
00075   EvtTwoBodyKine vb(m,x.m(EvtCyclic3::other(_pairRes)),x.bigM());
00076 
00077 
00078   // Compute mass-dependent width for relativistic propagators
00079 
00080   if(_typeN != NBW) {
00081     
00082     _prop->set_g0(_g0*_vd.widthFactor(vd));
00083   }
00084   
00085   // Compute propagator
00086 
00087   amp *= _prop->evaluate(m);
00088 
00089   // Compute form-factors
00090 
00091   amp *= _vd.formFactor(vd);
00092   amp *= _vb.formFactor(vb);
00093 
00094   amp *= numerator(x);
00095   
00096   return amp;
00097 }

double EvtPto3PAmp::angDep ( const EvtDalitzPoint p  )  const

Definition at line 189 of file EvtPto3PAmp.cc.

References _pairAng, _pairRes, _spin, EvtdFunction::d(), EvtSpinType::getSpin2(), Bes_Common::INFO, report(), and x.

Referenced by numerator().

00190 { 
00191   // Angular dependece for factorizable amplitudes  
00192   // unphysical cosines indicate we are in big trouble
00193 
00194   double cosTh = x.cosTh(_pairAng,_pairRes);  
00195   if(fabs(cosTh) > 1.) {
00196     
00197     report(INFO,"EvtGen") << "cosTh " << cosTh << endl; 
00198     assert(0);
00199   }
00200   
00201   // in units of half-spin
00202   
00203   return EvtdFunction::d(EvtSpinType::getSpin2(_spin),2*0,2*0,acos(cosTh));
00204 }

virtual EvtAmplitude<EvtDalitzPoint>* EvtPto3PAmp::clone (  )  const [inline, virtual]

Implements EvtAmplitude< EvtDalitzPoint >.

Definition at line 43 of file EvtPto3PAmp.hh.

References EvtPto3PAmp().

00044   { return new EvtPto3PAmp(*this); }

EvtComplex EvtAmplitude< EvtDalitzPoint >::evaluate ( const EvtDalitzPoint p  )  const [inline, inherited]

Definition at line 26 of file EvtAmplitude.hh.

00027   {
00028     EvtComplex ret(0.,0.);
00029     if(p.isValid()) ret = amplitude(p);
00030     return ret;
00031   }

EvtComplex EvtPto3PAmp::numerator ( const EvtDalitzPoint p  )  const

Definition at line 100 of file EvtPto3PAmp.cc.

References _pairAng, _pairRes, _prop, _spin, _typeN, _vd, EvtTwoBodyKine::AB, angDep(), EvtCyclic3::combine(), EvtCyclic3::common(), EvtCyclic3::first(), EvtPropagator::m0(), NBW, EvtCyclic3::other(), EvtTwoBodyVertex::phaseSpaceFactor(), RBW_CLEO, RBW_KUEHN, RBW_ZEMACH, EvtSpinType::SCALAR, EvtCyclic3::second(), EvtSpinType::TENSOR, EvtSpinType::VECTOR, and x.

Referenced by amplitude().

00101 {
00102   EvtComplex ret(0.,0.);
00103   double m = sqrt(x.q(_pairRes)); 
00104   EvtTwoBodyKine vd(x.m(EvtCyclic3::first(_pairRes)),
00105                     x.m(EvtCyclic3::second(_pairRes)),m);
00106   EvtTwoBodyKine vb(m,x.m(EvtCyclic3::other(_pairRes)),x.bigM());
00107 
00108   // Non-relativistic Breit-Wigner
00109 
00110   if(NBW == _typeN) {
00111 
00112     ret = angDep(x);
00113   }
00114 
00115   // Standard relativistic Zemach propagator
00116 
00117   else if(RBW_ZEMACH == _typeN) {
00118 
00119     ret = _vd.phaseSpaceFactor(vd,EvtTwoBodyKine::AB)*angDep(x);
00120   }
00121     
00122   // Kuehn-Santamaria normalization:
00123   
00124   else if(RBW_KUEHN == _typeN) {
00125 
00126     ret = _prop->m0()*_prop->m0() * angDep(x);
00127   }
00128 
00129 
00130   // CLEO amplitude is not factorizable
00131   //
00132   // The CLEO amplitude numerator is proportional to:
00133   //
00134   // m2_AC - m2_BC + (m2_D - m2_C)(m2_B - m2_A)/m2_0
00135   //
00136   // m2_AC = (eA + eC)^2 + (P - P_C cosTh(BC))^2
00137   // m2_BC = (eB + eC)^2 + (P + P_C cosTh(BC))^2
00138   //
00139   // The first term m2_AB-m2_BC is therefore a p-wave term
00140   // - 4PP_C cosTh(BC) 
00141   // The second term is an s-wave, the amplitude
00142   // does not factorize!
00143   //
00144   // The first term is just Zemach. However, the sign is flipped! 
00145   // Let's consistently use the convention in which the amplitude
00146   // is proportional to +cosTh(BC). In the CLEO expressions, I will
00147   // therefore exchange AB to get rid of the sign flip.
00148   
00149 
00150   if(RBW_CLEO == _typeN) {
00151 
00152     Index iA = other(_pairAng);           // A = other(BC)
00153     Index iB = common(_pairRes,_pairAng); // B = common(AB,BC)
00154     Index iC = other(_pairRes);           // C = other(AB)
00155     
00156     double M = x.bigM();
00157     double mA = x.m(iA);
00158     double mB = x.m(iB);
00159     double mC = x.m(iC);
00160     double qAB = x.q(combine(iA,iB));
00161     double qBC = x.q(combine(iB,iC));
00162     double qCA = x.q(combine(iC,iA));
00163     
00164     double m0 = _prop->m0();
00165 
00166     if(_spin == EvtSpinType::SCALAR) ret = EvtComplex(1.,0.);
00167     else
00168       if(_spin == EvtSpinType::VECTOR) {
00169         
00170         ret = qBC - qCA + (M*M - mC*mC)*(mA*mA - mB*mB)/m0/m0;;
00171       }
00172       else
00173         if(_spin == EvtSpinType::TENSOR) {
00174       
00175           double x1 = qBC - qCA + (M*M - mC*mC)*(mA*mA - mB*mB)/m0/m0;       
00176           double x2 = M*M - mC*mC;      
00177           double x3 = qAB - 2*M*M - 2*mC*mC + x2*x2/m0/m0;      
00178           double x4 = mB*mB - mA*mA;
00179           double x5 = qAB - 2*mB*mB - 2*mA*mA + x4*x4/m0/m0;
00180           ret = (x1*x1 - 1./3.*x3*x5);
00181         }
00182         else assert(0);
00183   }
00184 
00185   return ret;
00186 }

void EvtPto3PAmp::set_fb ( double  R  ) 

Definition at line 62 of file EvtPto3PAmp.cc.

References _vb, and EvtTwoBodyVertex::set_f().

Referenced by EvtPto3PAmpFactory::processAmp().

00063 {
00064   _vb.set_f(R);
00065 }

void EvtPto3PAmp::set_fd ( double  R  ) 

Definition at line 57 of file EvtPto3PAmp.cc.

References _vd, and EvtTwoBodyVertex::set_f().

Referenced by EvtPto3PAmpFactory::processAmp().

00058 {
00059   _vd.set_f(R);
00060 }


Member Data Documentation

double EvtPto3PAmp::_g0 [private]

Definition at line 73 of file EvtPto3PAmp.hh.

Referenced by amplitude().

EvtCyclic3::Pair EvtPto3PAmp::_pairAng [private]

Definition at line 58 of file EvtPto3PAmp.hh.

Referenced by angDep(), and numerator().

EvtCyclic3::Pair EvtPto3PAmp::_pairRes [private]

Definition at line 59 of file EvtPto3PAmp.hh.

Referenced by amplitude(), angDep(), and numerator().

EvtPropagator* EvtPto3PAmp::_prop [private]

Definition at line 72 of file EvtPto3PAmp.hh.

Referenced by amplitude(), numerator(), and ~EvtPto3PAmp().

EvtSpinType::spintype EvtPto3PAmp::_spin [private]

Definition at line 63 of file EvtPto3PAmp.hh.

Referenced by angDep(), and numerator().

NumType EvtPto3PAmp::_typeN [private]

Definition at line 67 of file EvtPto3PAmp.hh.

Referenced by amplitude(), and numerator().

EvtTwoBodyVertex EvtPto3PAmp::_vb [private]

Definition at line 77 of file EvtPto3PAmp.hh.

Referenced by amplitude(), and set_fb().

EvtTwoBodyVertex EvtPto3PAmp::_vd [private]

Definition at line 78 of file EvtPto3PAmp.hh.

Referenced by amplitude(), numerator(), and set_fd().


Generated on Tue Nov 29 23:19:14 2016 for BOSS_7.0.2 by  doxygen 1.4.7