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