34 model_name=
"DToKSpipipi";
53 mK1270 = 1.272; mK1400 = 1.403;
54 GK1270 = 0.09; GK1400 = 0.174;
55 mKstr = 0.89166; mrho = 0.77549;
56 GKstr = 0.0462; Grho = 0.1491;
125 int GG[4][4] = { {1,0,0,0}, {0,-1,0,0}, {0,0,-1,0}, {0,0,0,-1} };
127 { { {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} },
128 {{0,0,0,0}, {0,0,0,0}, {0,0,0,1}, {0,0,-1,0}},
129 {{0,0,0,0}, {0,0,0,-1}, {0,0,0,0}, {0,1,0,0} },
130 {{0,0,0,0}, {0,0,1,0}, {0,-1,0,0}, {0,0,0,0} } },
131 { {{0,0,0,0}, {0,0,0,0}, {0,0,0,-1}, {0,0,1,0} },
132 {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} },
133 {{0,0,0,1}, {0,0,0,0}, {0,0,0,0}, {-1,0,0,0}},
134 {{0,0,-1,0}, {0,0,0,0}, {1,0,0,0}, {0,0,0,0} } },
135 { {{0,0,0,0}, {0,0,0,1}, {0,0,0,0}, {0,-1,0,0}},
136 {{0,0,0,-1}, {0,0,0,0}, {0,0,0,0}, {1,0,0,0} },
137 {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} },
138 {{0,1,0,0}, {-1,0,0,0}, {0,0,0,0}, {0,0,0,0} } },
139 { {{0,0,0,0}, {0,0,-1,0}, {0,1,0,0}, {0,0,0,0} },
140 {{0,0,1,0}, {0,0,0,0}, {-1,0,0,0}, {0,0,0,0} },
141 {{0,-1,0,0}, {1,0,0,0}, {0,0,0,0}, {0,0,0,0} },
142 {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} } } };
143 for (
int i=0; i<4; i++) {
144 for (
int j=0; j<4; j++) {
146 for (
int k=0; k<4; k++) {
147 for (
int l=0; l<4; l++) {
148 E[i][j][k][l] = EE[i][j][k][l];
187 double Ks[4],Pip1[4],Pip2[4],Pim[4];
188 Ks[0] = Ks0.
get(0); Pip1[0] = pi1.
get(0); Pip2[0] = pi2.
get(0); Pim[0] = pi3.
get(0);
189 Ks[1] = Ks0.
get(1); Pip1[1] = pi1.
get(1); Pip2[1] = pi2.
get(1); Pim[1] = pi3.
get(1);
190 Ks[2] = Ks0.
get(2); Pip1[2] = pi1.
get(2); Pip2[2] = pi2.
get(2); Pim[2] = pi3.
get(2);
191 Ks[3] = Ks0.
get(3); Pip1[3] = pi1.
get(3); Pip2[3] = pi2.
get(3); Pim[3] = pi3.
get(3);
192 double prob = calPDF(Ks, Pip1, Pip2, Pim);
197double EvtDToKSpipipi::calPDF(
double Ks[],
double Pip1[],
double Pip2[],
double Pim[]) {
199 double P14[4], P24[4], P34[4], P124[4], P134[4], P234[4];
200 for(
int i=0; i<4; i++){
201 P14[i] = Ks[i] + Pim[i];
202 P24[i] = Pip1[i] + Pim[i];
203 P34[i] = Pip2[i] + Pim[i];
204 P124[i] = P14[i] + Pip1[i];
205 P134[i] = P14[i] + Pip2[i];
206 P234[i] = P24[i] + Pip2[i];
210 PDF[0] = D2AP_A2VP(Ks,Pip2,Pip1,Pim,0)*getprop(P24,Pip2,ma1,Ga1,1,0)*
211 getprop(Pip1,Pim,mrho,Grho,2,1) +
212 D2AP_A2VP(Ks,Pip1,Pip2,Pim,0)*getprop(P34,Pip1,ma1,Ga1,1,0)*
213 getprop(Pip2,Pim,mrho,Grho,2,1);
214 PDF[1] = D2AP_A2VP(Ks,Pip2,Pip1,Pim,2)*getprop(P24,Pip2,ma1,Ga1,1,2)*
215 getprop(Pip1,Pim,mrho,Grho,2,1) +
216 D2AP_A2VP(Ks,Pip1,Pip2,Pim,2)*getprop(P34,Pip1,ma1,Ga1,1,2)*
217 getprop(Pip2,Pim,mrho,Grho,2,1);
219 PDF[2] = D2AP_A2SP(Ks,Pip2,Pip1,Pim)*getprop(P24,Pip2,ma1,Ga1,1,1)*
220 getprop(Pip1,Pim,msigma,Gsigma,4,0) +
221 D2AP_A2SP(Ks,Pip1,Pip2,Pim)*getprop(P34,Pip1,ma1,Ga1,1,1)*
222 getprop(Pip2,Pim,msigma,Gsigma,4,0);
226 PDF[3] = D2AP_A2VP(Pip2,Pip1,Ks,Pim,0)*getprop(P14,Pip1,mK1400,GK1400,1,0)*
227 getprop(Ks,Pim,mKstr,GKstr,1,1) +
228 D2AP_A2VP(Pip1,Pip2,Ks,Pim,0)*getprop(P14,Pip2,mK1400,GK1400,1,0)*
229 getprop(Ks,Pim,mKstr,GKstr,1,1);
231 PDF[4] = D2AP_A2VP(Pip2,Pip1,Ks,Pim,2)*getprop(P14,Pip1,mK1400,GK1400,1,2)*
232 getprop(Ks,Pim,mKstr,GKstr,1,1) +
233 D2AP_A2VP(Pip1,Pip2,Ks,Pim,2)*getprop(P14,Pip2,mK1400,GK1400,1,2)*
234 getprop(Ks,Pim,mKstr,GKstr,1,1);
237 PDF[5] = D2AP_A2VP(Pip2,Ks,Pip1,Pim,0)*getprop(P24,Ks,mK1270,GK1270,0,0)*
238 getprop(Pip1,Pim,mrho,Grho,2,1) +
239 D2AP_A2VP(Pip1,Ks,Pip2,Pim,0)*getprop(P34,Ks,mK1270,GK1270,0,0)*
240 getprop(Pip2,Pim,mrho,Grho,2,1);
242 PDF[6] = D2AP_A2VP(Pip2,Ks,Pip1,Pim,0)*getprop(Pip1,Pim,mrho,Grho,2,1) +
243 D2AP_A2VP(Pip1,Ks,Pip2,Pim,0)*getprop(Pip2,Pim,mrho,Grho,2,1);
244 PDF[7] = D2AP_A2VP(Pip2,Ks,Pip1,Pim,2)*getprop(Pip1,Pim,mrho,Grho,2,1) +
245 D2AP_A2VP(Pip1,Ks,Pip2,Pim,2)*getprop(Pip2,Pim,mrho,Grho,2,1);
247 PDF[8] = D2PP_P2VP(Pip2,Ks,Pip1,Pim)*getprop(P24,Ks,mK1460,GK1460,1,1)*
248 getprop(Pip1,Pim,mrho,Grho,2,1) +
249 D2PP_P2VP(Pip1,Ks,Pip2,Pim)*getprop(P34,Ks,mK1460,GK1460,1,1)*
250 getprop(Pip2,Pim,mrho,Grho,2,1);
252 PDF[9] = D2AP_A2VP(Pip2,Pip1,Ks,Pim,0)*getprop(P14,Pip1,mK1650,GK1650,1,0)*
253 getprop(Ks,Pim,mKstr,GKstr,1,1) +
254 D2AP_A2VP(Pip1,Pip2,Ks,Pim,0)*getprop(P14,Pip2,mK1650,GK1650,1,0)*
255 getprop(Ks,Pim,mKstr,GKstr,1,1);
257 PDF[10] = D2AP_A2SP(Pip2,Ks,Pip1,Pim) + D2AP_A2SP(Pip1,Ks,Pip2,Pim);
260 PDF[11] = corr*PHSP(Ks,Pim);
263 PDF[12] = D2PP_P2VP(Pip2,Pip1,Ks,Pim)*getprop(P14,Pip1,mK1460,GK1460,1,1)*
264 getprop(Ks,Pim,mKstr,GKstr,1,1) +
265 D2PP_P2VP(Pip1,Pip2,Ks,Pim)*getprop(P14,Pip2,mK1460,GK1460,1,1)*
266 getprop(Ks,Pim,mKstr,GKstr,1,1);
271 for(
int i=0; i<13; i++){
273 pdf = pdf + cof*PDF[i];
275 module =
conj(pdf)*pdf;
277 value =
real(module);
278 return (value <= 0) ? 1e-20 : value;
281EvtComplex EvtDToKSpipipi::KPiSFormfactor(
double sa,
double sb,
double sc,
double r)
283 double m1430 = 1.463;
284 double sa0 = m1430*m1430;
285 double w1430 = 0.233;
286 double q0 = (sa0+sb-sc)*(sa0+sb-sc)/(4*sa0)-sb;
288 double qs = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
290 double width = w1430*
q*m1430/sqrt(sa*q0);
291 double temp_R = atan(m1430*width/(sa0-sa));
292 if(temp_R<0) temp_R += math_pi;
293 double deltaR = -5.31 + temp_R;
294 double temp_F = atan(2*1.07*
q/(2+(-1.8)*1.07*qs));
295 if(temp_F<0) temp_F += math_pi;
296 double deltaF = 2.33 + temp_F;
302EvtComplex EvtDToKSpipipi::D2AP_A2VP(
double P1[],
double P2[],
double P3[],
double P4[],
int L)
307 double t1V[4], t1D[4], t2A[4][4];
308 double sa[3], sb[3], sc[3],
B[3];
309 double pV[4],pA[4],pD[4];
310 for(
int i=0; i!=4; i++){
311 pV[i] = P3[i] + P4[i];
312 pA[i] = pV[i] + P2[i];
313 pD[i] = pA[i] + P1[i];
324 B[0] = barrier(1,sa[0],sb[0],sc[0],3);
325 B[2] = barrier(1,sa[2],sb[2],sc[2],rD);
329 for(
int i=0; i!=4; i++){
330 for(
int j=0; j!=4; j++){
331 temp_PDF += t1D[i]*(G[i][j] - pA[i]*pA[j]/sa[1])*t1V[j]*(G[i][i])*(G[j][j]);
338 for(
int i=0; i!=4; i++){
339 for(
int j=0; j!=4; j++){
340 temp_PDF += t1D[i]*t2A[i][j]*t1V[j]*(G[i][i])*(G[j][j]);
343 B[1] = barrier(2,sa[1],sb[1],sc[1],3);
345 amp_PDF = temp_PDF*
B[0]*
B[1]*
B[2];
348EvtComplex EvtDToKSpipipi::D2AP_A2SP(
double P1[],
double P2[],
double P3[],
double P4[])
353 double sa[3], sb[3], sc[3],
B[3];
354 double t1D[4], t1A[4];
355 double pS[4], pA[4], pD[4];
356 for(
int i=0; i!=4; i++){
357 pS[i] = P3[i] + P4[i];
358 pA[i] = pS[i] + P2[i];
359 pD[i] = pA[i] + P1[i];
370 B[1] = barrier(1,sa[1],sb[1],sc[1],3);
371 B[2] = barrier(1,sa[2],sb[2],sc[2],rD);
374 for(
int i=0; i!=4; i++){
375 temp_PDF += t1D[i]*t1A[i]*(G[i][i]);
377 amp_PDF = temp_PDF*
B[1]*
B[2];
380EvtComplex EvtDToKSpipipi::D2PP_P2VP(
double P1[],
double P2[],
double P3[],
double P4[])
385 double sa[3], sb[3], sc[3],
B[3];
387 double pV[4], pP[4], pD[4];
388 for(
int i=0; i!=4; i++){
389 pV[i] = P3[i] + P4[i];
390 pP[i] = pV[i] + P2[i];
391 pD[i] = pP[i] + P1[i];
402 B[0] = barrier(1,sa[0],sb[0],sc[0],3);
403 B[1] = barrier(1,sa[1],sb[1],sc[1],3);
405 for(
int i=0; i!=4; i++){
406 temp_PDF += P2[i]*t1V[i]*(G[i][i]);
408 amp_PDF = temp_PDF*
B[0]*
B[1];
411EvtComplex EvtDToKSpipipi::D2VP_V2VP(
double P1[],
double P2[],
double P3[],
double P4[])
416 double sa[3], sb[3], sc[3],
B[3];
417 double pV1[4], pV2[4], qV1[4], qV2[4], pD[4];
418 for(
int i=0; i!=4; i++){
419 pV2[i] = P3[i] + P4[i];
420 qV2[i] = P3[i] - P4[i];
421 pV1[i] = pV2[i] + P2[i];
422 qV1[i] = pV2[i] - P2[i];
423 pD[i] = pV1[i] + P1[i];
425 for(
int i=0; i!=4; i++){
426 for(
int j=0; j!=4; j++){
427 for(
int k=0; k!=4; k++){
428 for(
int l=0; l!=4; l++){
429 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]);
434 sa[0] = dot(pV2,pV2);
437 sa[1] = dot(pV1,pV1);
443 B[0] = barrier(1,sa[0],sb[0],sc[0],3.0);
444 B[1] = barrier(1,sa[1],sb[1],sc[1],3.0);
445 B[2] = barrier(1,sa[2],sb[2],sc[2],rD);
446 amp_PDF = temp_PDF*
B[0]*
B[1]*
B[2];
449EvtComplex EvtDToKSpipipi::PHSP(
double Km[],
double Pip[])
454 for(
int i=0; i!=4; i++){
455 KPi[i] = Km[i] + Pip[i];
460 amp_PDF = KPiSFormfactor(sa,sb,sc,3.0);
463EvtComplex EvtDToKSpipipi::getprop(
double daug1[],
double daug2[],
double mass,
double width,
int flag,
int L){
473 for(
int i=0; i<4; i++){
474 pR[i] = daug1[i] + daug2[i];
478 sb = dot(daug1,daug1);
479 sc = dot(daug2,daug2);
480 if(
flag == 0)
return propogator(mass,width,sa);
481 if(
flag == 1)
return propagatorRBW(mass,width,sa,sb,sc,3.0,L);
483 prop1 = propagatorGS(mass,width,sa,sb,sc,3.0,L);
484 prop2 = propagatorRBW(0.783,0.008,sa,sb,sc,3.0,L);
486 prop = prop1*(
one + 0.783*0.783*coef_omega*prop2);
494 double f = 0.5843+1.6663*sa;
496 double mpi2 = mass_Pion*mass_Pion;
498 double g1 =
f*(sa-
mpi2/2)/(mass2-mpi2/2)*
exp((mass2-sa)/1.082);
503 prop = 1.0/(M*M-sa-ci*M*(
g1*rho1s/rho1M+0.0024*rho2s/rho2M));
506 cout<<
"Please set a right flag! "<<
flag<<endl;
509EvtComplex EvtDToKSpipipi::rhoab(
double sa,
double sb,
double sc){
511 double q = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
514 if(
q>0) rho =
one*sqrt(
q/sa);
515 if(
q<0) rho = ci*sqrt(-
q/sa);
521 double mpi = 0.13957;
525 double temp = 1-16*
mpi*
mpi/sa;
526 if(temp > 0) rho =
one*sqrt(temp)/(1+
exp(9.8-3.5*sa));
527 if(temp < 0) rho = ci*sqrt(-temp)/(1+
exp(9.8-3.5*sa));
531EvtComplex EvtDToKSpipipi::propogator(
double mass,
double width,
double sx)
const
537double EvtDToKSpipipi::wid(
double mass,
double sa,
double sb,
double sc,
double r,
int l)
const
539 double widm(0.),
q(0.), q0(0.);
543 q0 = Qabcs(sa0,sb,sc);
550 if(l == 1) F = sqrt((1+z0)/(1+z));
551 if(l == 2) F = sqrt((9+3*z0+z0*z0)/(9+3*z+z*z));
552 widm = pow(
t,l+0.5)*
mass/m*F*F;
555double EvtDToKSpipipi::h(
double m,
double q)
const
558 h = 2/pi*
q/m*log((m+2*
q)/(2*mpi));
561double EvtDToKSpipipi::dh(
double mass,
double q0)
const
563 double dh = h(mass,q0)*(1.0/(8*q0*q0)-1.0/(2*mass*mass))+1.0/(2*pi*mass*mass);
566double EvtDToKSpipipi::f(
double mass,
double sx,
double q0,
double q)
const
569 double f =
mass*
mass/(pow(q0,3))*(
q*
q*(h(m,
q)-h(mass,q0))+(
mass*
mass-sx)*q0*q0*dh(mass,q0));
572double EvtDToKSpipipi::d(
double mass,
double q0)
const
574 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));
577EvtComplex EvtDToKSpipipi::propagatorRBW(
double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l)
const
583EvtComplex EvtDToKSpipipi::propagatorGS(
double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l)
const
586 double q = Qabcs(sa,sb,sc);
588 double q0 = Qabcs(sa0,sb,sc);
591 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));
594double EvtDToKSpipipi::Flatte_rhoab(
double sa,
double sb,
double sc)
const
596 double q = Qabcs(sa,sb,sc);
597 double rho = sqrt(
q/sa);
600EvtComplex EvtDToKSpipipi::propagatorFlatte(
double mass,
double width,
double sx,
double *sb,
double *sc)
const
603 double rho1 = Flatte_rhoab(sx,sb[0],sc[0]);
604 double rho2 = Flatte_rhoab(sx,sb[1],sc[1]);
609double EvtDToKSpipipi::dot(
double *a1,
double *a2)
const
612 for(
int i=0; i!=4; i++){
613 dot += a1[i]*a2[i]*G[i][i];
617double EvtDToKSpipipi::Qabcs(
double sa,
double sb,
double sc)
const
619 double Qabcs = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
620 if(Qabcs < 0) Qabcs = 1e-16;
623double EvtDToKSpipipi::barrier(
double l,
double sa,
double sb,
double sc,
double r)
const
625 double q = Qabcs(sa,sb,sc);
634 F = sqrt((2*z)/(1+z));
637 F = sqrt((13*z*z)/(9+3*z+z*z));
641void EvtDToKSpipipi::calt1(
double daug1[],
double daug2[],
double t1[])
const
645 for(
int i=0; i!=4; i++){
646 pa[i] = daug1[i] + daug2[i];
647 qa[i] = daug1[i] - daug2[i];
651 for(
int i=0; i!=4; i++){
652 t1[i] = qa[i] - pq/p*pa[i];
655void EvtDToKSpipipi::calt2(
double daug1[],
double daug2[],
double t2[][4])
const
659 calt1(daug1,daug2,t1);
661 for(
int i=0; i!=4; i++){
662 pa[i] = daug1[i] + daug2[i];
665 for(
int i=0; i!=4; i++){
666 for(
int j=0; j!=4; j++){
667 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")
Evt3Rank3C conj(const Evt3Rank3C &t2)
EvtComplex exp(const EvtComplex &c)
****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
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)
double precision pisqo6 one