BOSS 7.1.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtEtap2gpipi.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of models developed at BES collaboration
5// based on the EvtGen framework. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/BesCopyright
9// Copyright (A) 2006 Ping Rong-Gang @IHEP
10//
11// Module: EvtEtap2gpipi.cc
12//
13// Description: etaprime -> gamma pipi without/with box contribution
14// see PRL 120, 242003 (2018) and refs. therein
15//
16// Modification history:
17// Dec 18 05:52:33 2022 Liaoyuan Dong Module created
18//
19//------------------------------------------------------------------------
20
22#include <stdlib.h>
25#include "EvtGenBase/EvtPDL.hh"
29#include <string>
30using namespace std; //::endl;
31
33
34void EvtEtap2gpipi::getName(std::string& model_name){
35 model_name="Etap2gpipi";
36}
37
39 return new EvtEtap2gpipi;
40}
41
43 checkNArg(1);
44 checkNDaug(3);
47 _flag=getArg(0);
48
49 if (_flag==1) {
50 Mrho = 7.76565e-01;
51 Grho = 1.50839e-01;
52 delta = 1.60865e-03;
53 argdelta = 6.71184e-02;
54 delta2 = 4.15936e-01 ;
55 argdelta2 = 2.00844e-02;
56 Eetap = -2.13798e+01;
57 } else {
58 Mrho = 7.72929e-01;
59 Grho = 1.50184e-01;
60 delta = 1.58745e-03;
61 argdelta = 6.25729e+00;
62 delta2 = 2.58505e-01;
63 argdelta2 = 3.28230e+00;
64 Eetap = 0.000000;
65 }
66 Momega = 0.78265;
67 Gomega = 0.00849;
68 Mrhop = 1.465;
69 Grhop = 0.400;
70
71 PI = 3.14159265;
72 mpi=0.13957018;
73}
74
76 if (_flag==1) {
77 //std::cout << "Initializing EvtEtap2gpipi... flag= " << _flag << " MaxProb= " << 0.0786 << std::endl;
78 setProbMax(0.0786);
79 } else {
80 //std::cout << "Initializing EvtEtap2gpipi... flag= " << _flag << " MaxProb= " << 0.2760 << std::endl;
81 setProbMax(0.2760);
82 }
83}
84
86/*
87 double maxprob = 0.0;
88 for(int ir=0;ir<=60000000;ir++){
89 p->initializePhaseSpace(getNDaug(),getDaugs());
90 _pd[0]=p->getDaug(0)->getP4();
91 _pd[1]=p->getDaug(1)->getP4();
92 _pd[2]=p->getDaug(2)->getP4();
93 double Prob = AMPsq();
94 if(Prob>maxprob) {
95 maxprob=Prob;
96 std::cout << "Max PDF = " << ir << " prob= " << Prob << std::endl;
97 }
98 }
99 std::cout << "Max!!!!!!!!!!! " << maxprob<< std::endl;
100*/
102 _pd[0]=p->getDaug(0)->getP4();
103 _pd[1]=p->getDaug(1)->getP4();
104 _pd[2]=p->getDaug(2)->getP4();
105 double prob = AMPsq();
106 setProb(prob);
107 return;
108}
109
110double EvtEtap2gpipi::AMPsq(){
111 EvtVector4R prho=_pd[0]+_pd[1];
112 EvtVector4R mprho(prho.get(0),-1*prho.get(1),-1*prho.get(2),-1*prho.get(3));
113 double m2=(_pd[0]+_pd[1]).mass2();
114 double m=(_pd[0]+_pd[1]).mass();
115
116 EvtVector4R pi_rhocms = boostTo(_pd[0],mprho);
117 EvtVector4R gam_rhocms = boostTo(_pd[2],mprho);
118 EvtVector4R etap_rhocms = boostTo(prho+_pd[2],mprho);
119 double coshel_pi = pi_rhocms.dot(etap_rhocms)/pi_rhocms.d3mag()/etap_rhocms.d3mag();
120 double ang_part = 1-coshel_pi*coshel_pi;
121
122 double kgamma=0;
123 if(m<0.95778) kgamma = (0.95778*0.95778-m*m)/(2*0.95778);
124 double qpim=0;
125 if(m>2*mpi) qpim = sqrt(0.25*m*m - pow(mpi,2));
126
127 double qpimrho = sqrt(0.25*Mrho*Mrho - pow(mpi,2));
128 double qpimrhop = sqrt(0.25*Mrhop*Mrhop - pow(mpi,2));
129
130 double hm = (2./PI)*(qpim/m)*log((m+2*qpim)/(2*mpi));
131
132 double hmrho = (2./PI)*(qpimrho/Mrho)*log((Mrho+2*qpimrho)/(2.*mpi));
133 double hmrhop = (2./PI)*(qpimrhop/Mrhop)*log((Mrhop+2*qpimrhop)/(2.*mpi));
134
135 double d=(3./PI)*(mpi*mpi/pow(qpimrho,2))*log((Mrho+2*qpimrho)/(2*mpi))+(Mrho/(2*PI*qpimrho))-((mpi*mpi*Mrho)/(PI*pow(qpimrho,3)));
136 double drhop=(3./PI)*(mpi*mpi/pow(qpimrhop,2))*log((Mrhop+2*qpimrhop)/(2*mpi))+(Mrhop/(2*PI*qpimrhop))-((mpi*mpi*Mrhop)/(PI*pow(qpimrhop,3)));
137
138 double dhds = hmrho*(pow(8*pow(qpimrho,2),-1)-pow(2*Mrho*Mrho,-1))+pow(2*PI*Mrho*Mrho,-1);
139 double dhdsrhop = hmrhop*(pow(8*pow(qpimrhop,2),-1)-pow(2*Mrhop*Mrhop,-1))+pow(2*PI*Mrhop*Mrhop,-1);
140
141 double fm2 = Grho*(Mrho*Mrho/pow(qpimrho,3))*(qpim*qpim*(hm-hmrho)+(Mrho*Mrho-m*m)*qpimrho*qpimrho*(dhds));
142 double fm2rhop = Grhop*(Mrhop*Mrhop/pow(qpimrhop,3))*(qpim*qpim*(hm-hmrhop)+(Mrhop*Mrhop-m*m)*qpimrhop*qpimrhop*(dhdsrhop));
143
144 double Grhom = Grho*pow((qpim/qpimrho),3)*(Mrho/m);
145 double Grhopm = Grhop*pow((qpim/qpimrhop),3)*(Mrhop/m);
146
147 double coefficient = (1./(48*PI*PI*PI))*pow(kgamma,2)*pow(qpim,2);
148 double coe1= pow((2*sqrt(48*PI*pow(Mrho,-4))),2);
149
150 EvtComplex denomGrhom(Mrho*Mrho-m*m+fm2,-1*Mrho*Grhom);
151 EvtComplex real(Mrho*Mrho*(1+d*Grho/Mrho),0);
152 EvtComplex BWrho= real/denomGrhom;
153
154 EvtComplex denomBWomega(Momega*Momega-m*m,-Momega*Gomega);
155 EvtComplex real1(Momega*Momega,0);
156 EvtComplex BWomega = real1/denomBWomega;
157 EvtComplex cdelta(delta*cos(argdelta),delta*sin(argdelta));
158 EvtComplex part2=BWrho*cdelta*BWomega*(m*m)/(Momega*Momega);
159
160 EvtComplex denomGrhopm(Mrhop*Mrhop-m*m+fm2rhop,-1*Mrhop*Grhopm);
161 EvtComplex realpm(Mrhop*Mrhop*(1+drhop*Grhop/Mrhop),0);
162 EvtComplex BWrhop = realpm/denomGrhopm;
163 EvtComplex cdelta2(delta2*cos(argdelta2),delta2*sin(argdelta2));
164 EvtComplex denom(delta2*cos(argdelta2)+1.0,delta2*sin(argdelta2));
165 EvtComplex part3=cdelta2*BWrhop;
166
167 EvtComplex eof(Eetap,0);
168 EvtComplex amp=(( BWrho* (cdelta*BWomega*(m*m)/(Momega*Momega)+1.0) + cdelta2*BWrhop)/(cdelta2+1)*sqrt(coe1)+ eof);
169
170 double total = coefficient* abs2(amp);
171 double amp2 = total*ang_part;
172 return amp2;
173}
double sin(const BesAngle a)
Definition: BesAngle.h:210
double cos(const BesAngle a)
Definition: BesAngle.h:213
double mass
double abs2(const EvtComplex &c)
Definition: EvtComplex.hh:221
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
void setProbMax(double prbmx)
EvtId getParentId()
Definition: EvtDecayBase.hh:60
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)
void setProb(double prob)
Definition: EvtDecayProb.hh:34
EvtDecayBase * clone()
virtual ~EvtEtap2gpipi()
void initProbMax()
void getName(std::string &name)
void decay(EvtParticle *p)
static EvtSpinType::spintype getSpinType(EvtId i)
Definition: EvtPDL.hh:61
const EvtVector4R & getP4() const
Definition: EvtParticle.cc:120
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:84
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
double dot(const EvtVector4R &v2) const
Definition: EvtVector4R.cc:199
double get(int i) const
Definition: EvtVector4R.hh:179
double d3mag() const
Definition: EvtVector4R.cc:186
double double * m2
Definition: qcdloop1.h:75