35 model_name=
"DTopipi0Eta";
51 phi[0] = -3.3276; rho[0] = 0.31478;
52 phi[1] = 0.0; rho[1] = 1.0;
53 phi[2] = 0.0; rho[2] = -1.0;
64 const double mk0 = 0.497614;
65 const double mass_Kaon = 0.49368;
67 const double mass_Pi0 = 0.1349766;
68 const double meta = 0.547862;
74 sck = mass_Kaon*mass_Kaon;
76 snpi = mass_Pi0*mass_Pi0;
84 int GG[4][4] = { {1,0,0,0}, {0,-1,0,0}, {0,0,-1,0}, {0,0,0,-1} };
85 for (
int i=0; i<4; i++) {
86 for (
int j=0; j<4; j++) {
130 double P1[4], P2[4], P3[4];
131 P1[0] = D1.
get(0); P1[1] = D1.
get(1); P1[2] = D1.
get(2); P1[3] = D1.
get(3);
132 P2[0] = D2.
get(0); P2[1] = D2.
get(1); P2[2] = D2.
get(2); P2[3] = D2.
get(3);
133 P3[0] = D3.
get(0); P3[1] = D3.
get(1); P3[2] = D3.
get(2); P3[3] = D3.
get(3);
136 value = calDalEva(P1, P2, P3);
142double EvtDTopipi0Eta::calDalEva(
double P1[],
double P2[],
double P3[])
153 PDF[0] = Spin_factor(P1, P2, P3, 1, 2, mrho, Grho);
154 PDF[1] = Spin_factor(P1, P3, P2, 0, 30, ma0, Ga0);
155 PDF[2] = Spin_factor(P2, P3, P1, 0, 31, ma0, Ga0);
158 for(
int i=0; i<3; i++){
160 pdf = pdf + cof*PDF[i];
162 module =
conj(pdf)*pdf;
163 value =
real(module);
164 return (value <= 0) ? 1e-20 : value;
167EvtComplex EvtDTopipi0Eta::Spin_factor(
double P1[],
double P2[],
double P3[],
int spin,
int flag,
double mass_R,
double width_R)
170 double R[4],
s[3], sp2,
B[2];
172 for(
int i=0; i<4; i++){
173 R[i] = P1[i] + P2[i];
183 if(
flag == 0) prop = one;
184 if(
flag == 1) prop = propagatorRBW(mass_R,width_R,
s[0],
s[1],
s[2],3.0,0);
186 rhokk = Flatte_rhoab(
s[0],snk,sck);
187 rhopieta = Flatte_rhoab(
s[0],scpi,seta);
188 prop = 1.0/(mass_R*mass_R -
s[0] - ci*(0.341*rhopieta+0.341*0.892*rhokk));
192 qKsK = 0.25*(
s[0] + 3.899750596e-03)*(
s[0] + 3.899750596e-03)/
s[0] - 0.497614*0.497614;
193 if(qKsK > 0) rhokk = 2.0*sqrt(qKsK/
s[0])*one;
194 if(qKsK < 0) rhokk = 2.0*sqrt(qKsK/
s[0])*ci;
195 rhopieta = Flatte_rhoab(
s[0],snpi,seta);
196 prop = 1.0/(mass_R*mass_R -
s[0] - ci*(0.341*rhopieta+0.341*0.892*rhokk));
205 prop = propagatorRBW(mass_R,width_R,
s[0],
s[1],
s[2],3.0,1);
208 prop = propagatorGS(mass_R, width_R,
s[0],
s[1],
s[2],3.0,1);
211 prop1 = propagatorGS(mass_R, width_R,
s[0],
s[1],
s[2],3.0,1);
212 prop2 = propagatorRBW(0.78266,0.01358,
s[0],
s[1],
s[2],3.0,1);
218 B[0] = barrier(1,
s[0],
s[1],
s[2],3.0,mass_R);
219 B[1] = barrier(1,sD,
s[0],sp2, 5.0,mD);
221 for(
int i=0; i<4; i++){
222 tmp += T1[i]*t1[i]*G[i][i];
224 amp = tmp*prop*
B[0]*
B[1];
227 double T2[4][4], t2[4][4];
230 B[0] = barrier(2,
s[0],
s[1],
s[2],3.0,mass_R);
231 B[1] = barrier(2,sD,
s[0],sp2, 5.0,mD);
233 for(
int i=0; i<4; i++){
234 for(
int j=0; j<4; j++){
235 tmp += T2[i][j]*t2[j][i]*G[j][j]*G[i][i];
238 if(
flag == 0) prop = one;
239 if(
flag == 1) prop = propagatorRBW(mass_R,width_R,
s[0],
s[1],
s[2],3.0,2);
240 amp = tmp*prop*
B[0]*
B[1];
243 cout<<
"Only S, P, D wave allowed"<<endl;
248double EvtDTopipi0Eta::dot(
double *a1,
double *a2)
251 for(
int i=0; i!=4; i++){
252 Dot += a1[i]*a2[i]*G[i][i];
257double EvtDTopipi0Eta::Qabcs(
double sa,
double sb,
double sc)
259 double Qabcs = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
260 if(Qabcs < 0) Qabcs = 1e-16;
264double EvtDTopipi0Eta::barrier(
double l,
double sa,
double sb,
double sc,
double r,
double mass)
267 double q0 = Qabcs(sa0,sb,sc);
269 double q = Qabcs(sa,sb,sc);
276 if(l == 1) F = sqrt((1+z0)/(1+z));
277 if(l == 2) F = sqrt((9+3*z0+z0*z0)/(9+3*z+z*z));
281void EvtDTopipi0Eta::calt1(
double daug1[],
double daug2[],
double t1[])
285 for(
int i=0; i!=4; i++){
286 pa[i] = daug1[i] + daug2[i];
287 qa[i] = daug1[i] - daug2[i];
291 for(
int i=0; i!=4; i++){
292 t1[i] = qa[i] - pq/p*pa[i];
296void EvtDTopipi0Eta::calt2(
double daug1[],
double daug2[],
double t2[][4])
300 calt1(daug1,daug2,t1);
302 for(
int i=0; i!=4; i++){
303 pa[i] = daug1[i] + daug2[i];
306 for(
int i=0; i!=4; i++){
307 for(
int j=0; j!=4; j++){
308 t2[i][j] = t1[i]*t1[j] - 1.0/3*r*(G[i][j]-pa[i]*pa[j]/p);
313double EvtDTopipi0Eta::wid(
double mass,
double sa,
double sb,
double sc,
double r,
int l)
315 double widm(0.),
q(0.), q0(0.);
319 q0 = Qabcs(sa0,sb,sc);
326 if(l == 1) F = sqrt((1+z0)/(1+z));
327 if(l == 2) F = sqrt((9+3*z0+z0*z0)/(9+3*z+z*z));
328 widm = pow(
t,l+0.5)*
mass/m*F*F;
332EvtComplex EvtDTopipi0Eta::propagatorRBW(
double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l)
338double EvtDTopipi0Eta::h(
double m,
double q)
340 double h = 2.0/pi*
q/m*log((m+2*
q)/(0.13957 + 0.134976));
344double EvtDTopipi0Eta::dh(
double mass,
double q0)
350double EvtDTopipi0Eta::f(
double mass,
double sx,
double q0,
double q)
357double EvtDTopipi0Eta::d(
double mass,
double q0)
359 double cmpi = 0.5*(0.13957 + 0.134976);
360 double mpi2 = cmpi*cmpi;
361 double d = 3.0/pi*
mpi2/(q0*q0)*log((
mass+2*q0)/(2*cmpi))+
mass/(2*pi*q0) - (mpi2*
mass)/(pi*pow(q0,3));
365EvtComplex EvtDTopipi0Eta::propagatorGS(
double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l)
367 double q = Qabcs(sa,sb,sc);
369 double q0 = Qabcs(sa0,sb,sc);
376EvtComplex EvtDTopipi0Eta::Flatte_rhoab(
double sa,
double sb,
double sc)
378 double q = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
381 rho = 2.0*sqrt(
q/sa)*one;
384 rho = 2.0*sqrt(-
q/sa)*ci;
389EvtComplex EvtDTopipi0Eta::propagatorFlatte(
double mass,
double width,
double sx,
double *sb,
double *sc)
391 const double g1sq = 0.5468*0.5468;
392 const double g2sq = 0.23*0.23;
393 EvtComplex rho1 = Flatte_rhoab(sx,sb[0],sc[0]);
394 EvtComplex rho2 = Flatte_rhoab(sx,sb[1],sc[1]);
double sin(const BesAngle a)
double cos(const BesAngle a)
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
Evt3Rank3C conj(const Evt3Rank3C &t2)
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
virtual ~EvtDTopipi0Eta()
void getName(std::string &name)
void decay(EvtParticle *p)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void setProb(double prob)
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
complex_t R(double Q2, double M2, double G, double Mp2, double Mm2)
float Dot(vector3 v1, vector3 v2)