35 model_name=
"DToKSpieta";
46 ma0 = 1.004; Ga0 = 0.0732;
47 mKn_1430 = 1.423; GKn_1430 = 0.1815;
48 mK1270 = 1.272; mK1400 = 1.403;
49 GK1270 = 0.09; GK1400 = 0.174;
90 int GG[4][4] = { {1,0,0,0}, {0,-1,0,0}, {0,0,-1,0}, {0,0,0,-1} };
92 { { {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} },
93 {{0,0,0,0}, {0,0,0,0}, {0,0,0,1}, {0,0,-1,0}},
94 {{0,0,0,0}, {0,0,0,-1}, {0,0,0,0}, {0,1,0,0} },
95 {{0,0,0,0}, {0,0,1,0}, {0,-1,0,0}, {0,0,0,0} } },
96 { {{0,0,0,0}, {0,0,0,0}, {0,0,0,-1}, {0,0,1,0} },
97 {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} },
98 {{0,0,0,1}, {0,0,0,0}, {0,0,0,0}, {-1,0,0,0}},
99 {{0,0,-1,0}, {0,0,0,0}, {1,0,0,0}, {0,0,0,0} } },
100 { {{0,0,0,0}, {0,0,0,1}, {0,0,0,0}, {0,-1,0,0}},
101 {{0,0,0,-1}, {0,0,0,0}, {0,0,0,0}, {1,0,0,0} },
102 {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} },
103 {{0,1,0,0}, {-1,0,0,0}, {0,0,0,0}, {0,0,0,0} } },
104 { {{0,0,0,0}, {0,0,-1,0}, {0,1,0,0}, {0,0,0,0} },
105 {{0,0,1,0}, {0,0,0,0}, {-1,0,0,0}, {0,0,0,0} },
106 {{0,-1,0,0}, {1,0,0,0}, {0,0,0,0}, {0,0,0,0} },
107 {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} } } };
108 for (
int i=0; i<4; i++) {
109 for (
int j=0; j<4; j++) {
111 for (
int k=0; k<4; k++) {
112 for (
int l=0; l<4; l++) {
113 E[i][j][k][l] = EE[i][j][k][l];
153 double Ks0[4],Pic[4],
Pi0[4];
154 Ks0[0] = ks0.
get(0); Pic[0] = pic.
get(0);
Pi0[0] = pi0.
get(0);
155 Ks0[1] = ks0.
get(1); Pic[1] = pic.
get(1);
Pi0[1] = pi0.
get(1);
156 Ks0[2] = ks0.
get(2); Pic[2] = pic.
get(2);
Pi0[2] = pi0.
get(2);
157 Ks0[3] = ks0.
get(3); Pic[3] = pic.
get(3);
Pi0[3] = pi0.
get(3);
160 calPDF(Ks0, Pic,
Pi0, value);
165double EvtDToKSpieta::calPDF(
double Ks0[],
double Pic[],
double Pi0[],
double & Result) {
166 double cof[2], amp_tmp1[2], amp_tmp2[2], amp_tmp[2], amp_PDF[2], PDF[2];
167 double flag[3], mass_R[2], width_R[2];
169 double sa[3], sb[3], sc[3], B[3];
170 double t1D[4], t1V[4], t1A[4];
171 double pS[4], pV[4], pD[4], pA[4];
172 double pro1[2], pro2[2],proKPi_S[2];
177 double mass1[2] ={ ma0, mKn_1430 };
178 double width1[2]={ Ga0, GKn_1430 };
179 double g0[2] ={ 3, 1 };
183 double P12[4], P23[4], P13[4];
184 double scpi, snpi, sks0;
186 for(
int i=0; i<4; i++){
187 P12[i] = Pic[i] + Ks0[i];
188 P13[i] =
Pi0[i] + Ks0[i];
189 P23[i] = Pic[i] +
Pi0[i];
191 scpi = SCADot(Pic,Pic);
193 sks0 = SCADot(Ks0,Ks0);
194 s12 = SCADot(P12,P12);
195 s13 = SCADot(P13,P13);
196 s23 = SCADot(P23,P23);
206 for(
int i=0; i<2; i++) {
209 mass1sq = mass1[i]*mass1[i];
210 cof[0] = rho[i]*
cos(phi[i]);
211 cof[1] = rho[i]*
sin(phi[i]);
213 if(modetype[i] == 23){
214 temp_PDF = DDalitz( Pic,
Pi0, Ks0, spin[i], mass1[i]);
215 if(g0[i]==1) propagatorRBW(mass1sq,mass1[i],width1[i],
s23,scpi,snpi,rRes,spin[i],pro);
216 if(g0[i]==2) KPiSLASS(
s23,scpi,snpi,pro);
217 if(g0[i]==3) propagatorFlatte(mass1[i],width1[i],
s23,scpi,snpi,0,pro);
222 amp_tmp[0] = temp_PDF*pro[0];
223 amp_tmp[1] = temp_PDF*pro[1];
225 if(modetype[i] == 12){
226 temp_PDF = DDalitz(Ks0, Pic,
Pi0, spin[i], mass1[i]);
227 if(g0[i]==1) propagatorRBW(mass1sq, mass1[i],width1[i],
s12,sks0,scpi,rRes,spin[i],pro);
228 if(g0[i]==2) {propagatorFlatte(mass1[i],width1[i],
s12,sks0,scpi,1,pro);
229 pro[0]=pro[0]*(0.01+0.990*0.990)/(0.01+
s12);
230 pro[1]=pro[1]*(0.01+0.990*0.990)/(0.01+
s12);
232 if(g0[i]==3) propagatorFlatte(mass1[i],width1[i],
s12,sks0,scpi,1,pro);
238 amp_tmp[0] = temp_PDF*pro[0];
239 amp_tmp[1] = temp_PDF*pro[1];
241 if(modetype[i] == 13){
242 temp_PDF = DDalitz(Ks0,
Pi0, Pic, spin[i], mass1[i]);
243 if(g0[i]==1) propagatorRBW(mass1sq, mass1[i],width1[i],s13,sks0,snpi,rRes,spin[i],pro);
245 double skm2[2]={sks0, mass_Ks *mass_Ks};
246 double spi2[2]={snpi, mass_Eta *mass_Eta};
247 propagatorKstr1430(mass1[i],s13,skm2,spi2,pro);
249 if(g0[i]==3) propagatorFlatte(mass1[i],width1[i],s13,sks0,snpi,1,pro);
254 amp_tmp[0] = temp_PDF*pro[0];
255 amp_tmp[1] = temp_PDF*pro[1];
257 if(modetype[i] == 132){
258 KPiSLASS(
s12,sks0,scpi,Amp_KPiS);
259 amp_tmp[0] = Amp_KPiS[0];
260 amp_tmp[1] = Amp_KPiS[1];
263 Com_Multi(amp_tmp,cof,amp_PDF);
264 PDF[0] += amp_PDF[0];
265 PDF[1] += amp_PDF[1];
271 double value = PDF[0]*PDF[0] + PDF[1]*PDF[1];
278void EvtDToKSpieta:: Com_Multi(
double a1[2],
double a2[2],
double res[2])
280 res[0] = a1[0]*a2[0]-a1[1]*a2[1];
281 res[1] = a1[1]*a2[0]+a1[0]*a2[1];
283void EvtDToKSpieta:: Com_Divide(
double a1[2],
double a2[2],
double res[2])
285 double tmp = a2[0]*a2[0]+a2[1]*a2[1];
286 res[0] = (a1[0]*a2[0]+a1[1]*a2[1])/tmp;
287 res[1] = (a1[1]*a2[0]-a1[0]*a2[1])/tmp;
290double EvtDToKSpieta:: SCADot(
double a1[4],
double a2[4])
292 double _cal = a1[0]*a2[0]-a1[1]*a2[1]-a1[2]*a2[2]-a1[3]*a2[3];
296double EvtDToKSpieta:: barrier(
int l,
double sa,
double sb,
double sc,
double r,
double mass)
298 double q = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
304 double q0 = (sa0+sb-sc)*(sa0+sb-sc)/(4*sa0)-sb;
305 if(q0 < 0) q0 = 1e-16;
309 if(l == 1) F = sqrt((1+z0)/(1+z));
310 if(l == 2) F = sqrt((9+3*z0+z0*z0)/(9+3*z+z*z));
314double EvtDToKSpieta:: Barrier(
int l,
double sa,
double sb,
double sc,
double r2)
317 double tmp = sa+sb-sc;
318 double q = 0.25*tmp*tmp/sa-sb;
319 if (
q < 0)
q = 1e-16;
322 F = sqrt(2.0*z/(1.0+z));
326 F = sqrt(13.0*z2/(9.0+3.0*z+z2));
334void EvtDToKSpieta:: calt1(
double daug1[4],
double daug2[4],
double t1[4])
338 for(
int i=0; i<4; i++) {
339 pa[i] = daug1[i] + daug2[i];
340 qa[i] = daug1[i] - daug2[i];
345 for(
int i=0; i<4; i++) {
346 t1[i] = qa[i] - tmp*pa[i];
349void EvtDToKSpieta:: calt2(
double daug1[4],
double daug2[4],
double t2[4][4])
353 calt1(daug1,daug2,t1);
354 r = SCADot(t1,t1)/3.0;
355 for(
int i=0; i<4; i++) {
356 pa[i] = daug1[i] + daug2[i];
359 for(
int i=0; i<4; i++) {
360 for(
int j=0; j<4; j++) {
361 t2[i][j] = t1[i]*t1[j] - r*(G[i][j]-pa[i]*pa[j]/p);
366void EvtDToKSpieta:: propagator(
double mass2,
double mass,
double width,
double sx,
double prop[2])
373 Com_Divide(a,
b,prop);
375double EvtDToKSpieta:: wid(
double mass2,
double mass,
double sa,
double sb,
double sc,
double r2,
int l)
380 double tmp1 = sa+tmp;
381 double q = 0.25*tmp1*tmp1/sa-sb;
383 double tmp2 = mass2+tmp;
384 double q0 = 0.25*tmp2*tmp2/mass2-sb;
389 if(l == 0) {widm = sqrt(
t)*
mass/m;}
390 else if(l == 1) {widm =
t*sqrt(
t)*
mass/m*(1+z0)/(1+z);}
391 else if(l == 2) {widm =
t*
t*sqrt(
t)*
mass/m*(9+3*z0+z0*z0)/(9+3*z+z*z);}
394double EvtDToKSpieta:: widl1(
double mass2,
double mass,
double sa,
double sb,
double sc,
double r2)
399 double tmp1 = sa+tmp;
400 double q = 0.25*tmp1*tmp1/sa-sb;
402 double tmp2 = mass2+tmp;
403 double q0 = 0.25*tmp2*tmp2/mass2-sb;
407 double F = (1+z0)/(1+z);
409 widm =
t*sqrt(
t)*
mass/m*F;
412void EvtDToKSpieta:: propagatorRBW(
double mass2,
double mass,
double width,
double sa,
double sb,
double sc,
double r2,
int l,
double prop[2])
417 double q=0.25*(sa+sb-sc)*(sa+sb-sc)/sa-sb;
420 b[1] = -
mass*width*wid(mass2,
mass,sa,sb,sc,r2,l);
421 Com_Divide(a,
b,prop);
425void EvtDToKSpieta:: propagatorFlatte(
double mass,
double width,
double sa,
double sb,
double sc,
int r,
double prop[2]){
426 double q, qKsK,qetapi;
428 double rhoab[2], rhoKsK[2];
429 q = 0.25*(sa+sb-sc)*(sa+sb-sc)/sa-sb;
430 qetapi=0.25*(sa+0.547862*0.547862-0.13957039*0.13957039)*(sa+0.547862*0.547862-0.13957039*0.13957039)/sa-0.547862*0.547862;
431 if(r == 0) qKsK = 0.25*sa - 0.49368*0.49368;
432 if(r == 1) qKsK = 0.25*(sa+sb-sc)*(sa+sb-sc)/sa - sb;
434 rhoab[0] = 2*sqrt(qetapi/sa);
439 rhoab[1] = 2*sqrt(-qetapi/sa);
442 rhoKsK[0] = 2*sqrt(qKsK/sa);
447 rhoKsK[1] = 2*sqrt(-qKsK/sa);
452 b[0] =
mass*
mass - sa + 0.341*rhoab[1] + 0.892*0.341*rhoKsK[1];
453 b[1] = - (0.341*rhoab[0] + 0.892*0.341*rhoKsK[0]);
454 Com_Divide(a,
b,prop);
457void EvtDToKSpieta:: PiPiSWASS(
double sa,
double sb,
double sc,
double prop[2]) {
459 double tmp2 = sa+tmp;
460 double qs = 0.25*tmp2*tmp2/sa-sb;
462 double a0 = -0.11/mass_Pion;
463 prop[0] = 1/(1+
a0*
a0*
q*
q);
466void EvtDToKSpieta:: KPiSLASS(
double sa,
double sb,
double sc,
double prop[2]) {
467 const double m1430 = 1.441;
468 const double sa0 = 1.441*1.441;
469 const double w1430 = 0.193;
470 const double Lass1 = 0.25/sa0;
472 double tmp1 = sa0+tmp;
473 double q0 = Lass1*tmp1*tmp1-sb;
475 double tmp2 = sa+tmp;
476 double qs = 0.25*tmp2*tmp2/sa-sb;
478 double width = w1430*
q*m1430/sqrt(sa*q0);
479 double temp_R = atan(m1430*width/(sa0-sa));
480 if(temp_R<0) temp_R += math_pi;
481 double deltaR = -1.915 + temp_R;
482 double temp_F = atan(0.226*
q/(2.0-3.819*qs));
483 if(temp_F<0) temp_F += math_pi;
484 double deltaF = 0.002 + temp_F;
485 double deltaS = deltaR + 2.0*deltaF;
486 double t1 = 0.96*
sin(deltaF);
487 double t2 =
sin(deltaR);
493 prop[0] = t1*CF[0] + t2*
CS[0];
494 prop[1] = t1*CF[1] + t2*
CS[1];
497void EvtDToKSpieta:: Flatte_rhoab(
double sa,
double sb,
double sc,
double rho[2]){
498 double q = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
500 rho[0]=2* sqrt(
q/sa);
505 rho[1]=2*sqrt(-
q/sa);
509void EvtDToKSpieta:: propagatorKstr1430(
double mass,
double sx,
double *sb,
double *sc,
double prop[2])
511 double unit[2]={1.0};
514 Flatte_rhoab(sx,sb[0],sc[0],rho1);
516 Flatte_rhoab(sx,sb[1],sc[1],rho2);
517 double gKPi_Kstr1430=0.2990, gEtaPK_Kstr1430=0.0529;
518 double tmp1[2]={gKPi_Kstr1430,0};
520 double tmp2[2]={gEtaPK_Kstr1430,0};
522 Com_Multi(tmp1,rho1,tmp11);
523 Com_Multi(tmp2,rho2,tmp22);
524 double tmp3[2]={tmp11[0]+tmp22[0],tmp11[1]+tmp22[1]};
526 Com_Multi(tmp3, ci,tmp31);
527 double tmp4[2]={
mass*
mass-sx-tmp31[0], -1.0*tmp31[1]};
528 Com_Divide(
unit,tmp4, prop);
530double EvtDToKSpieta:: DDalitz(
double P1[4],
double P2[4],
double P3[4],
int Ang,
double mass){
532 double temp_PDF, v_re;
535 double B[2], s1, s2, s3, sR, sD;
536 for(
int i=0; i<4; i++){
537 pR[i] = P1[i] + P2[i];
538 pD[i] = pR[i] + P3[i];
546 for(
int i=0; i!=4; i++){
547 for(
int j=0; j!=4; j++){
549 if(i==0) G[i][j] = 1;
561 B[0] = barrier(1,sR,s1,s2,3.0,
mass);
562 B[1] = barrier(1,sD,sR,s3,5.0,1.869);
569 for(
int i=0; i<4; i++){
570 temp_PDF += t1[i]*T1[i]*G[i][i];
574 B[0] = barrier(2,sR,s1,s2,3.0,
mass);
575 B[1] = barrier(2,sD,sR,s3,5.0,1.869);
578 double t2[4][4], T2[4][4];
582 for(
int i=0; i<4; i++){
583 for(
int j=0; j<4; j++){
584 temp_PDF += t2[i][j]*T2[j][i]*G[i][i]*G[j][j];
588 v_re = temp_PDF*
B[0]*
B[1];
double sin(const BesAngle a)
double cos(const BesAngle a)
character *LEPTONflag integer iresonances real zeta5 real a0
*******INTEGER m_nBinMax INTEGER m_NdiMax !No of bins in histogram for cell exploration division $ !Last vertex $ !Last active cell $ !Last cell in buffer $ !No of sampling when dividing cell $ !No of function total $ !Flag for random ceel for $ !Flag for type of for WtMax $ !Flag which decides whether vertices are included in the sampling $ entire domain is hyp !Maximum effective eevents per saves r n generator level $ !Flag for chat level in !Latex Output unit
****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)
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 double double double * s12
double double double double double * s23