BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtPhiDalitz.cc
Go to the documentation of this file.
2
8#include "EvtPhiDalitz.hh"
9#include <math.h>
10#include <stdlib.h>
11#include <string>
12
14
15void EvtPhiDalitz::getName( std::string& model_name ) { model_name = "PHI_DALITZ"; }
16
18
20
21 // check that there are 0 arguments
22 checkNArg( 0 );
23 checkNDaug( 3 );
24
26
30}
31
33
34 EvtId PIP = EvtPDL::getId( "pi+" );
35 EvtId PIM = EvtPDL::getId( "pi-" );
36 EvtId PIZ = EvtPDL::getId( "pi0" );
37 EvtId RHOP = EvtPDL::getId( "rho+" );
38 EvtId RHOM = EvtPDL::getId( "rho-" );
39 EvtId RHOZ = EvtPDL::getId( "rho0" );
40 EvtId OMEGA = EvtPDL::getId( "omega" );
41
43
44 EvtVector4R Ppip = p->getDaug( 0 )->getP4();
45 EvtVector4R Ppim = p->getDaug( 1 )->getP4();
46 EvtVector4R Ppi0 = p->getDaug( 2 )->getP4();
47 EvtVector4R Qp = ( Ppim + Ppi0 );
48 EvtVector4R Qm = ( Ppip + Ppi0 );
49 EvtVector4R Q0 = ( Ppip + Ppim );
50 double m2_pip = pow( EvtPDL::getMeanMass( PIP ), 2 );
51 double m2_pim = pow( EvtPDL::getMeanMass( PIM ), 2 );
52 double m2_pi0 = pow( EvtPDL::getMeanMass( PIZ ), 2 );
53 double M2rhop = pow( EvtPDL::getMeanMass( RHOP ), 2 );
54 double M2rhom = pow( EvtPDL::getMeanMass( RHOM ), 2 );
55 double M2rho0 = pow( EvtPDL::getMeanMass( RHOZ ), 2 );
56 double M2omega = pow( EvtPDL::getMeanMass( OMEGA ), 2 );
57
58 double Wrhop = EvtPDL::getWidth( RHOP );
59 double Wrhom = EvtPDL::getWidth( RHOM );
60 double Wrho0 = EvtPDL::getWidth( RHOZ );
61 double Womega = EvtPDL::getWidth( OMEGA );
62
63 EvtComplex Atot( 0, 0 );
64
65 // Rho+ Risonance Amplitude
66 double Gp = Wrhop *
67 pow( ( ( Qp.mass2() - m2_pim - m2_pi0 ) / 2 - M2rhop / 4 ) /
68 ( M2rhop / 4 - ( m2_pim + m2_pi0 ) / 2 ),
69 3 / 2 ) *
70 ( M2rhop / Qp.mass2() );
71 EvtComplex Drhop( ( Qp.mass2() - M2rhop ), Qp.mass() * Gp );
72 EvtComplex A1( M2rhop / Drhop );
73
74 // Rho- Risonance Amplitude
75 double Gm = Wrhom *
76 pow( ( ( Qm.mass2() - m2_pip - m2_pi0 ) / 2 - M2rhom / 4 ) /
77 ( M2rhom / 4 - ( m2_pip + m2_pi0 ) / 2 ),
78 3 / 2 ) *
79 ( M2rhom / Qm.mass2() );
80 EvtComplex Drhom( ( Qm.mass2() - M2rhom ), Qm.mass() * Gm );
81 EvtComplex A2( M2rhom / Drhom );
82
83 // Rho0 Risonance Amplitude
84 double G0 = Wrho0 *
85 pow( ( ( Q0.mass2() - m2_pip - m2_pim ) / 2 - M2rho0 / 4 ) /
86 ( M2rho0 / 4 - ( m2_pip + m2_pim ) / 2 ),
87 3 / 2 ) *
88 ( M2rho0 / Q0.mass2() );
89 EvtComplex Drho0( ( Q0.mass2() - M2rho0 ), Q0.mass() * G0 );
90 EvtComplex A3( M2rho0 / Drho0 );
91
92 // Omega Risonance Amplitude
93 EvtComplex OmegaPhase( 0, -0.22 );
94 EvtComplex DOmega( ( Q0.mass2() - M2omega ), Q0.mass() * Womega );
95 EvtComplex A4( 0.0071 * M2omega * exp( OmegaPhase ) / DOmega );
96
97 // Direct Decay Amplitude
98 EvtComplex DirPhase( 0, 2.47 );
99 EvtComplex A5( 0.78 * exp( DirPhase ) );
100
101 Atot = A1 + A2 + A3 + A4 + A5;
102
103 vertex( 0, Atot );
104 vertex( 1, Atot );
105 vertex( 2, Atot );
106
107 return;
108}
EvtComplex exp(const EvtComplex &c)
void vertex(const EvtComplex &amp)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
Definition EvtId.hh:27
static double getWidth(EvtId i)
Definition EvtPDL.hh:59
static double getMeanMass(EvtId i)
Definition EvtPDL.hh:43
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtDecayBase * clone()
void decay(EvtParticle *p)
virtual ~EvtPhiDalitz()
void getName(std::string &name)
double mass() const
double mass2() const