20#include "EvtGenBase/EvtPatches.hh"
21#include "EvtGenBase/EvtParticle.hh"
22#include "EvtGenBase/EvtGenKine.hh"
23#include "EvtGenBase/EvtPDL.hh"
24#include "EvtGenBase/EvtReport.hh"
25#include "EvtGenModels/EvtDToKSpipipi.hh"
26#include "EvtGenBase/EvtComplex.hh"
27#include "EvtGenBase/EvtDecayTable.hh"
33 model_name=
"DToKSpipipi";
50 std::cout <<
"EvtDToKSpipipi ==> Initialization !" << std::endl;
52 mK1270 = 1.272; mK1400 = 1.403;
53 GK1270 = 0.09; GK1400 = 0.174;
54 mKstr = 0.89166; mrho = 0.77549;
55 GKstr = 0.0462; Grho = 0.1491;
106 for (
int i=0; i<13; i++) {
107 cout << i <<
"rho,phi = " << rho[i] <<
", "<< phi[i] << endl;
124 int GG[4][4] = { {1,0,0,0}, {0,-1,0,0}, {0,0,-1,0}, {0,0,0,-1} };
126 { { {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} },
127 {{0,0,0,0}, {0,0,0,0}, {0,0,0,1}, {0,0,-1,0}},
128 {{0,0,0,0}, {0,0,0,-1}, {0,0,0,0}, {0,1,0,0} },
129 {{0,0,0,0}, {0,0,1,0}, {0,-1,0,0}, {0,0,0,0} } },
130 { {{0,0,0,0}, {0,0,0,0}, {0,0,0,-1}, {0,0,1,0} },
131 {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} },
132 {{0,0,0,1}, {0,0,0,0}, {0,0,0,0}, {-1,0,0,0}},
133 {{0,0,-1,0}, {0,0,0,0}, {1,0,0,0}, {0,0,0,0} } },
134 { {{0,0,0,0}, {0,0,0,1}, {0,0,0,0}, {0,-1,0,0}},
135 {{0,0,0,-1}, {0,0,0,0}, {0,0,0,0}, {1,0,0,0} },
136 {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} },
137 {{0,1,0,0}, {-1,0,0,0}, {0,0,0,0}, {0,0,0,0} } },
138 { {{0,0,0,0}, {0,0,-1,0}, {0,1,0,0}, {0,0,0,0} },
139 {{0,0,1,0}, {0,0,0,0}, {-1,0,0,0}, {0,0,0,0} },
140 {{0,-1,0,0}, {1,0,0,0}, {0,0,0,0}, {0,0,0,0} },
141 {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} } } };
142 for (
int i=0; i<4; i++) {
143 for (
int j=0; j<4; j++) {
145 for (
int k=0; k<4; k++) {
146 for (
int l=0; l<4; l++) {
147 E[i][j][k][l] = EE[i][j][k][l];
186 double Ks[4],Pip1[4],Pip2[4],Pim[4];
187 Ks[0] = Ks0.
get(0); Pip1[0] = pi1.
get(0); Pip2[0] = pi2.
get(0); Pim[0] = pi3.
get(0);
188 Ks[1] = Ks0.
get(1); Pip1[1] = pi1.
get(1); Pip2[1] = pi2.
get(1); Pim[1] = pi3.
get(1);
189 Ks[2] = Ks0.
get(2); Pip1[2] = pi1.
get(2); Pip2[2] = pi2.
get(2); Pim[2] = pi3.
get(2);
190 Ks[3] = Ks0.
get(3); Pip1[3] = pi1.
get(3); Pip2[3] = pi2.
get(3); Pim[3] = pi3.
get(3);
191 double prob = calPDF(Ks, Pip1, Pip2, Pim);
196double EvtDToKSpipipi::calPDF(
double Ks[],
double Pip1[],
double Pip2[],
double Pim[]) {
198 double P14[4], P24[4], P34[4], P124[4], P134[4], P234[4];
199 for(
int i=0; i<4; i++){
200 P14[i] = Ks[i] + Pim[i];
201 P24[i] = Pip1[i] + Pim[i];
202 P34[i] = Pip2[i] + Pim[i];
203 P124[i] = P14[i] + Pip1[i];
204 P134[i] = P14[i] + Pip2[i];
205 P234[i] = P24[i] + Pip2[i];
209 PDF[0] = D2AP_A2VP(Ks,Pip2,Pip1,Pim,0)*getprop(P24,Pip2,ma1,Ga1,1,0)*
210 getprop(Pip1,Pim,mrho,Grho,2,1) +
211 D2AP_A2VP(Ks,Pip1,Pip2,Pim,0)*getprop(P34,Pip1,ma1,Ga1,1,0)*
212 getprop(Pip2,Pim,mrho,Grho,2,1);
213 PDF[1] = D2AP_A2VP(Ks,Pip2,Pip1,Pim,2)*getprop(P24,Pip2,ma1,Ga1,1,2)*
214 getprop(Pip1,Pim,mrho,Grho,2,1) +
215 D2AP_A2VP(Ks,Pip1,Pip2,Pim,2)*getprop(P34,Pip1,ma1,Ga1,1,2)*
216 getprop(Pip2,Pim,mrho,Grho,2,1);
218 PDF[2] = D2AP_A2SP(Ks,Pip2,Pip1,Pim)*getprop(P24,Pip2,ma1,Ga1,1,1)*
219 getprop(Pip1,Pim,msigma,Gsigma,4,0) +
220 D2AP_A2SP(Ks,Pip1,Pip2,Pim)*getprop(P34,Pip1,ma1,Ga1,1,1)*
221 getprop(Pip2,Pim,msigma,Gsigma,4,0);
225 PDF[3] = D2AP_A2VP(Pip2,Pip1,Ks,Pim,0)*getprop(P14,Pip1,mK1400,GK1400,1,0)*
226 getprop(Ks,Pim,mKstr,GKstr,1,1) +
227 D2AP_A2VP(Pip1,Pip2,Ks,Pim,0)*getprop(P14,Pip2,mK1400,GK1400,1,0)*
228 getprop(Ks,Pim,mKstr,GKstr,1,1);
230 PDF[4] = D2AP_A2VP(Pip2,Pip1,Ks,Pim,2)*getprop(P14,Pip1,mK1400,GK1400,1,2)*
231 getprop(Ks,Pim,mKstr,GKstr,1,1) +
232 D2AP_A2VP(Pip1,Pip2,Ks,Pim,2)*getprop(P14,Pip2,mK1400,GK1400,1,2)*
233 getprop(Ks,Pim,mKstr,GKstr,1,1);
236 PDF[5] = D2AP_A2VP(Pip2,Ks,Pip1,Pim,0)*getprop(P24,Ks,mK1270,GK1270,0,0)*
237 getprop(Pip1,Pim,mrho,Grho,2,1) +
238 D2AP_A2VP(Pip1,Ks,Pip2,Pim,0)*getprop(P34,Ks,mK1270,GK1270,0,0)*
239 getprop(Pip2,Pim,mrho,Grho,2,1);
241 PDF[6] = D2AP_A2VP(Pip2,Ks,Pip1,Pim,0)*getprop(Pip1,Pim,mrho,Grho,2,1) +
242 D2AP_A2VP(Pip1,Ks,Pip2,Pim,0)*getprop(Pip2,Pim,mrho,Grho,2,1);
243 PDF[7] = D2AP_A2VP(Pip2,Ks,Pip1,Pim,2)*getprop(Pip1,Pim,mrho,Grho,2,1) +
244 D2AP_A2VP(Pip1,Ks,Pip2,Pim,2)*getprop(Pip2,Pim,mrho,Grho,2,1);
246 PDF[8] = D2PP_P2VP(Pip2,Ks,Pip1,Pim)*getprop(P24,Ks,mK1460,GK1460,1,1)*
247 getprop(Pip1,Pim,mrho,Grho,2,1) +
248 D2PP_P2VP(Pip1,Ks,Pip2,Pim)*getprop(P34,Ks,mK1460,GK1460,1,1)*
249 getprop(Pip2,Pim,mrho,Grho,2,1);
251 PDF[9] = D2AP_A2VP(Pip2,Pip1,Ks,Pim,0)*getprop(P14,Pip1,mK1650,GK1650,1,0)*
252 getprop(Ks,Pim,mKstr,GKstr,1,1) +
253 D2AP_A2VP(Pip1,Pip2,Ks,Pim,0)*getprop(P14,Pip2,mK1650,GK1650,1,0)*
254 getprop(Ks,Pim,mKstr,GKstr,1,1);
256 PDF[10] = D2AP_A2SP(Pip2,Ks,Pip1,Pim) + D2AP_A2SP(Pip1,Ks,Pip2,Pim);
259 PDF[11] = corr*PHSP(Ks,Pim);
262 PDF[12] = D2PP_P2VP(Pip2,Pip1,Ks,Pim)*getprop(P14,Pip1,mK1460,GK1460,1,1)*
263 getprop(Ks,Pim,mKstr,GKstr,1,1) +
264 D2PP_P2VP(Pip1,Pip2,Ks,Pim)*getprop(P14,Pip2,mK1460,GK1460,1,1)*
265 getprop(Ks,Pim,mKstr,GKstr,1,1);
270 for(
int i=0; i<13; i++){
272 pdf = pdf + cof*PDF[i];
274 module =
conj(pdf)*pdf;
276 value =
real(module);
277 return (value <= 0) ? 1e-20 : value;
280EvtComplex EvtDToKSpipipi::KPiSFormfactor(
double sa,
double sb,
double sc,
double r)
282 double m1430 = 1.463;
283 double sa0 = m1430*m1430;
284 double w1430 = 0.233;
285 double q0 = (sa0+sb-sc)*(sa0+sb-sc)/(4*sa0)-sb;
287 double qs = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
289 double width = w1430*
q*m1430/sqrt(sa*q0);
290 double temp_R = atan(m1430*width/(sa0-sa));
291 if(temp_R<0) temp_R += math_pi;
292 double deltaR = -5.31 + temp_R;
293 double temp_F = atan(2*1.07*
q/(2+(-1.8)*1.07*qs));
294 if(temp_F<0) temp_F += math_pi;
295 double deltaF = 2.33 + temp_F;
301EvtComplex EvtDToKSpipipi::D2AP_A2VP(
double P1[],
double P2[],
double P3[],
double P4[],
int L)
306 double t1V[4], t1D[4], t2A[4][4];
307 double sa[3], sb[3], sc[3],
B[3];
308 double pV[4],pA[4],pD[4];
309 for(
int i=0; i!=4; i++){
310 pV[i] = P3[i] + P4[i];
311 pA[i] = pV[i] + P2[i];
312 pD[i] = pA[i] + P1[i];
323 B[0] = barrier(1,sa[0],sb[0],sc[0],3);
324 B[2] = barrier(1,sa[2],sb[2],sc[2],rD);
328 for(
int i=0; i!=4; i++){
329 for(
int j=0; j!=4; j++){
330 temp_PDF += t1D[i]*(G[i][j] - pA[i]*pA[j]/sa[1])*t1V[j]*(G[i][i])*(G[j][j]);
337 for(
int i=0; i!=4; i++){
338 for(
int j=0; j!=4; j++){
339 temp_PDF += t1D[i]*t2A[i][j]*t1V[j]*(G[i][i])*(G[j][j]);
342 B[1] = barrier(2,sa[1],sb[1],sc[1],3);
344 amp_PDF = temp_PDF*
B[0]*
B[1]*
B[2];
347EvtComplex EvtDToKSpipipi::D2AP_A2SP(
double P1[],
double P2[],
double P3[],
double P4[])
352 double sa[3], sb[3], sc[3],
B[3];
353 double t1D[4], t1A[4];
354 double pS[4], pA[4], pD[4];
355 for(
int i=0; i!=4; i++){
356 pS[i] = P3[i] + P4[i];
357 pA[i] = pS[i] + P2[i];
358 pD[i] = pA[i] + P1[i];
369 B[1] = barrier(1,sa[1],sb[1],sc[1],3);
370 B[2] = barrier(1,sa[2],sb[2],sc[2],rD);
373 for(
int i=0; i!=4; i++){
374 temp_PDF += t1D[i]*t1A[i]*(G[i][i]);
376 amp_PDF = temp_PDF*
B[1]*
B[2];
379EvtComplex EvtDToKSpipipi::D2PP_P2VP(
double P1[],
double P2[],
double P3[],
double P4[])
384 double sa[3], sb[3], sc[3],
B[3];
386 double pV[4], pP[4], pD[4];
387 for(
int i=0; i!=4; i++){
388 pV[i] = P3[i] + P4[i];
389 pP[i] = pV[i] + P2[i];
390 pD[i] = pP[i] + P1[i];
401 B[0] = barrier(1,sa[0],sb[0],sc[0],3);
402 B[1] = barrier(1,sa[1],sb[1],sc[1],3);
404 for(
int i=0; i!=4; i++){
405 temp_PDF += P2[i]*t1V[i]*(G[i][i]);
407 amp_PDF = temp_PDF*
B[0]*
B[1];
410EvtComplex EvtDToKSpipipi::D2VP_V2VP(
double P1[],
double P2[],
double P3[],
double P4[])
415 double sa[3], sb[3], sc[3],
B[3];
416 double pV1[4], pV2[4], qV1[4], qV2[4], pD[4];
417 for(
int i=0; i!=4; i++){
418 pV2[i] = P3[i] + P4[i];
419 qV2[i] = P3[i] - P4[i];
420 pV1[i] = pV2[i] + P2[i];
421 qV1[i] = pV2[i] - P2[i];
422 pD[i] = pV1[i] + P1[i];
424 for(
int i=0; i!=4; i++){
425 for(
int j=0; j!=4; j++){
426 for(
int k=0; k!=4; k++){
427 for(
int l=0; l!=4; l++){
428 temp_PDF += E[i][j][k][l]*pV1[i]*qV1[j]*P1[k]*qV2[l]*(G[i][i])*(G[j][j])*(G[k][k])*(G[l][l]);
433 sa[0] = dot(pV2,pV2);
436 sa[1] = dot(pV1,pV1);
442 B[0] = barrier(1,sa[0],sb[0],sc[0],3.0);
443 B[1] = barrier(1,sa[1],sb[1],sc[1],3.0);
444 B[2] = barrier(1,sa[2],sb[2],sc[2],rD);
445 amp_PDF = temp_PDF*
B[0]*
B[1]*
B[2];
448EvtComplex EvtDToKSpipipi::PHSP(
double Km[],
double Pip[])
453 for(
int i=0; i!=4; i++){
454 KPi[i] = Km[i] + Pip[i];
459 amp_PDF = KPiSFormfactor(sa,sb,sc,3.0);
462EvtComplex EvtDToKSpipipi::getprop(
double daug1[],
double daug2[],
double mass,
double width,
int flag,
int L){
472 for(
int i=0; i<4; i++){
473 pR[i] = daug1[i] + daug2[i];
477 sb = dot(daug1,daug1);
478 sc = dot(daug2,daug2);
479 if(
flag == 0)
return propogator(mass,width,sa);
480 if(
flag == 1)
return propagatorRBW(mass,width,sa,sb,sc,3.0,L);
482 prop1 = propagatorGS(mass,width,sa,sb,sc,3.0,L);
483 prop2 = propagatorRBW(0.783,0.008,sa,sb,sc,3.0,L);
485 prop = prop1*(
one + 0.783*0.783*coef_omega*prop2);
493 double f = 0.5843+1.6663*sa;
495 double mpi2 = mass_Pion*mass_Pion;
497 double g1 =
f*(sa-
mpi2/2)/(mass2-mpi2/2)*
exp((mass2-sa)/1.082);
502 prop = 1.0/(M*M-sa-ci*M*(
g1*rho1s/rho1M+0.0024*rho2s/rho2M));
505 cout<<
"Please set a right flag! "<<
flag<<endl;
508EvtComplex EvtDToKSpipipi::rhoab(
double sa,
double sb,
double sc){
510 double q = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
513 if(
q>0) rho =
one*sqrt(
q/sa);
514 if(
q<0) rho = ci*sqrt(-
q/sa);
520 double mpi = 0.13957;
524 double temp = 1-16*
mpi*
mpi/sa;
525 if(temp > 0) rho =
one*sqrt(temp)/(1+
exp(9.8-3.5*sa));
526 if(temp < 0) rho = ci*sqrt(-temp)/(1+
exp(9.8-3.5*sa));
530EvtComplex EvtDToKSpipipi::propogator(
double mass,
double width,
double sx)
const
536double EvtDToKSpipipi::wid(
double mass,
double sa,
double sb,
double sc,
double r,
int l)
const
538 double widm(0.),
q(0.), q0(0.);
542 q0 = Qabcs(sa0,sb,sc);
549 if(l == 1) F = sqrt((1+z0)/(1+z));
550 if(l == 2) F = sqrt((9+3*z0+z0*z0)/(9+3*z+z*z));
551 widm = pow(
t,l+0.5)*
mass/m*F*F;
554double EvtDToKSpipipi::h(
double m,
double q)
const
557 h = 2/pi*
q/m*log((m+2*
q)/(2*mpi));
560double EvtDToKSpipipi::dh(
double mass,
double q0)
const
562 double dh = h(mass,q0)*(1.0/(8*q0*q0)-1.0/(2*mass*mass))+1.0/(2*pi*mass*mass);
565double EvtDToKSpipipi::f(
double mass,
double sx,
double q0,
double q)
const
568 double f =
mass*
mass/(pow(q0,3))*(
q*
q*(h(m,
q)-h(mass,q0))+(
mass*
mass-sx)*q0*q0*dh(mass,q0));
571double EvtDToKSpipipi::d(
double mass,
double q0)
const
573 double d = 3.0/pi*
mpi*
mpi/(q0*q0)*log((mass+2*q0)/(2*
mpi))+
mass/(2*pi*q0) - (mpi*mpi*mass)/(pi*pow(q0,3));
576EvtComplex EvtDToKSpipipi::propagatorRBW(
double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l)
const
582EvtComplex EvtDToKSpipipi::propagatorGS(
double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l)
const
585 double q = Qabcs(sa,sb,sc);
587 double q0 = Qabcs(sa0,sb,sc);
590 EvtComplex prop = (1+d(mass,q0)*width/
mass)/(mass*mass-sa+width*
f(mass,sa,q0,
q)-ci*
mass*width*wid(mass,sa,sb,sc,r,l));
593double EvtDToKSpipipi::Flatte_rhoab(
double sa,
double sb,
double sc)
const
595 double q = Qabcs(sa,sb,sc);
596 double rho = sqrt(
q/sa);
599EvtComplex EvtDToKSpipipi::propagatorFlatte(
double mass,
double width,
double sx,
double *sb,
double *sc)
const
602 double rho1 = Flatte_rhoab(sx,sb[0],sc[0]);
603 double rho2 = Flatte_rhoab(sx,sb[1],sc[1]);
608double EvtDToKSpipipi::dot(
double *a1,
double *a2)
const
611 for(
int i=0; i!=4; i++){
612 dot += a1[i]*a2[i]*G[i][i];
616double EvtDToKSpipipi::Qabcs(
double sa,
double sb,
double sc)
const
618 double Qabcs = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
619 if(Qabcs < 0) Qabcs = 1e-16;
622double EvtDToKSpipipi::barrier(
double l,
double sa,
double sb,
double sc,
double r)
const
624 double q = Qabcs(sa,sb,sc);
633 F = sqrt((2*z)/(1+z));
636 F = sqrt((13*z*z)/(9+3*z+z*z));
640void EvtDToKSpipipi::calt1(
double daug1[],
double daug2[],
double t1[])
const
644 for(
int i=0; i!=4; i++){
645 pa[i] = daug1[i] + daug2[i];
646 qa[i] = daug1[i] - daug2[i];
650 for(
int i=0; i!=4; i++){
651 t1[i] = qa[i] - pq/p*pa[i];
654void EvtDToKSpipipi::calt2(
double daug1[],
double daug2[],
double t2[][4])
const
658 calt1(daug1,daug2,t1);
660 for(
int i=0; i!=4; i++){
661 pa[i] = daug1[i] + daug2[i];
664 for(
int i=0; i!=4; i++){
665 for(
int j=0; j!=4; j++){
666 t2[i][j] = t1[i]*t1[j] - 1.0/3*r*(G[i][j]-pa[i]*pa[j]/p);
double sin(const BesAngle a)
double cos(const BesAngle a)
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
****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
Evt3Rank3C conj(const Evt3Rank3C &t2)
EvtComplex exp(const EvtComplex &c)
double precision pisqo6 one
void getName(std::string &name)
void decay(EvtParticle *p)
virtual ~EvtDToKSpipipi()
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)