58 mass1[0] = 7.7526e-01;
59 mass1[1] = 9.8000e-01;
60 mass1[2] = 9.8000e-01;
61 mass2[0] = 1.2300e+00;
62 mass2[1] = 7.7526e-01;
63 mass2[2] = 1.8000e+00;
64 width1[0] = 1.4910e-01;
65 width1[1] = 7.0000e-02;
66 width1[2] = 7.0000e-02;
67 width2[0] = 3.3049e-01;
68 width2[1] = 1.4910e-01;
69 width2[2] = 3.8900e-01;
96 int GG[4][4] = { { 1, 0, 0, 0 }, { 0, -1, 0, 0 }, { 0, 0, -1, 0 }, { 0, 0, 0, -1 } };
97 for (
int a = 0; a < 4; a++ )
99 for (
int j = 0; j < 4; j++ ) { G[a][j] = GG[a][j]; }
143 double Pic[4], Pi01[4], Pi02[4], Eta[4];
144 Pic[0] = pic.
get( 0 );
145 Pic[1] = pic.
get( 1 );
146 Pic[2] = pic.
get( 2 );
147 Pic[3] = pic.
get( 3 );
148 Pi01[0] = pi01.
get( 0 );
149 Pi01[1] = pi01.
get( 1 );
150 Pi01[2] = pi01.
get( 2 );
151 Pi01[3] = pi01.
get( 3 );
152 Pi02[0] = pi02.
get( 0 );
153 Pi02[1] = pi02.
get( 1 );
154 Pi02[2] = pi02.
get( 2 );
155 Pi02[3] = pi02.
get( 3 );
156 Eta[0] = eta.
get( 0 );
157 Eta[1] = eta.
get( 1 );
158 Eta[2] = eta.
get( 2 );
159 Eta[3] = eta.
get( 3 );
162 int g0[3] = { 1, 1, 1 };
163 int g1[3] = { 1, 1, 1 };
164 int g2[3] = { 0, 1, 0 };
167 calEvaMy( Pic, Pi01, Pi02, Eta, mass1, mass2, width1, width2, rho, phi, g0,
g1, g2, modetype,
174void EvtDsToEtapi2pi0::calEvaMy(
double* Pic,
double* Pi01,
double* Pi02,
double* Eta,
175 double* mass1,
double* mass2,
double* width1,
double* width2,
176 double* amp,
double* phase,
int* g0,
int*
g1,
int* g2,
177 int* modetype,
int nstates,
double& Result ) {
179 double P12[4], P13[4], P14[4], P23[4], P24[4], P34[4], P123[4], P124[4], P134[4], P234[4],
181 for (
int i = 0; i != 4; i++ )
183 P12[i] = Pic[i] + Pi01[i];
184 P13[i] = Pic[i] + Pi02[i];
185 P14[i] = Pic[i] + Eta[i];
186 P23[i] = Pi01[i] + Pi02[i];
187 P24[i] = Pi01[i] + Eta[i];
188 P34[i] = Pi02[i] + Eta[i];
189 P123[i] = Pic[i] + Pi01[i] + Pi02[i];
190 P124[i] = Pic[i] + Pi01[i] + Eta[i];
191 P134[i] = Pic[i] + Pi02[i] + Eta[i];
192 P234[i] = Pi01[i] + Pi02[i] + Eta[i];
193 PD[i] = P123[i] + Eta[i];
196 double cof[2], amp_tmp1[2], amp_tmp2[2], amp_tmp[2], amp_PDF[2], PDF[2];
197 double s124, s134, t1f11[4], t1f14[4], t1f15[4], t1f16[4], t1f17[4];
198 double spic, spi01, spi02, seta, s12, s13, s14, s23, s24, s34, s123, s234, sD;
200 spic = SCADot( Pic, Pic );
201 spi01 = SCADot( Pi01, Pi01 );
202 spi02 = SCADot( Pi02, Pi02 );
203 seta = SCADot( Eta, Eta );
204 s12 = SCADot( P12, P12 );
205 s13 = SCADot( P13, P13 );
206 s14 = SCADot( P14, P14 );
207 s23 = SCADot( P23, P23 );
208 s24 = SCADot( P24, P24 );
209 s34 = SCADot( P34, P34 );
210 s123 = SCADot( P123, P123 );
211 s124 = SCADot( P124, P124 );
212 s134 = SCADot( P134, P134 );
213 s234 = SCADot( P234, P234 );
214 sD = SCADot( PD, PD );
216 double seta2[2] = { mass_Ks * mass_Ks, seta };
217 double spion12[2] = { mass_Kaon * mass_Kaon, spi01 };
218 double spion22[2] = { mass_Kaon * mass_Kaon, spi02 };
219 double spim2[2] = { mass_Kaon * mass_Kaon, spic };
221 double t1rho1[4], t1rho2[4], t1a01[4], t1a02[4], t1d01[4], t1d02[4], t1D[4], t1a1[4],
222 t1sigma[4], t1d03[4], t2a11[4][4], t2a12[4][4];
223 double t1f12[4], t1f13[4];
225 calt1( Pic, Pi01, t1rho1 );
226 calt1( Pic, Pi02, t1rho2 );
228 calt1( Pi01, Eta, t1a01 );
229 calt1( Pi02, Eta, t1a02 );
231 calt1( P24, P13, t1d01 );
232 calt1( P34, P12, t1d02 );
234 calt1( P14, P23, t1d03 );
235 calt1( Pi01, Pi02, t1sigma );
237 calt2( P12, Pi02, t2a11 );
238 calt2( P13, Pi01, t2a12 );
243 double mass1sq, mass2sq;
244 double pro[2], pro0[2], pro1[2], pro2[2], pro3[2];
251 double temp_PDF, tmp1, tmp2;
253 for (
int i = 0; i < nstates; i++ )
258 mass1sq = mass1[i] * mass1[i];
259 mass2sq = mass2[i] * mass2[i];
268 cof[0] = amp[i] *
cos( phase[i] );
269 cof[1] = amp[i] *
sin( phase[i] );
271 if ( modetype[i] == 1 )
274 propagatorGS( mass1sq, mass1[i], width1[i], s12, spic, spi01, rRes2, pro0 );
281 propagatorRBW( mass2sq, mass2[i], width2[i], s123, s12, spi02, rRes2, g2[i],
288 Com_Multi( pro0, pro1, pro );
289 calt1( P123, Eta, t1D );
291 B[0] = barrier( 1, s12, spi01, spic, rRes2, mass1[i] );
292 B[2] = barrier( 1, sD, s123, seta, rD2, 1.9683 );
297 for (
int a = 0; a < 4; a++ )
299 for (
int j = 0; j < 4; j++ )
301 temp_PDF += t1D[a] * ( G[a][j] - P123[a] * P123[j] / s123 ) * t1rho1[j] * G[a][a] *
305 tmp1 =
B[0] *
B[2] * temp_PDF;
308 amp_tmp1[0] = tmp1 * pro[0];
309 amp_tmp1[1] = tmp1 * pro[1];
313 propagatorGS( mass1sq, mass1[i], width1[i], s13, spic, spi02, rRes2, pro0 );
320 propagatorRBW( mass2sq, mass2[i], width2[i], s123, s13, spi01, rRes2, g2[i], pro1 );
326 Com_Multi( pro0, pro1, pro );
327 calt1( P123, Eta, t1D );
328 B[0] = barrier( 1, s13, spi02, spic, rRes2, mass1[i] );
329 B[2] = barrier( 1, sD, s123, seta, rD2, 1.9683 );
333 for (
int a = 0; a < 4; a++ )
335 for (
int j = 0; j < 4; j++ )
337 temp_PDF += t1D[a] * ( G[a][j] - P123[a] * P123[j] / s123 ) * t1rho2[j] * G[a][a] *
341 tmp2 =
B[0] *
B[2] * temp_PDF;
343 amp_tmp2[0] = tmp2 * pro[0];
344 amp_tmp2[1] = tmp2 * pro[1];
347 if ( modetype[i] == 2 )
350 if ( g0[i] == 1 ) propagatora0980( mass1[i], s24, seta2, spion12, pro0 );
357 propagatorGS( mass2sq, mass2[i], width2[i], s13, spic, spi02, rRes2, pro1 );
363 Com_Multi( pro0, pro1, pro );
365 for (
int a = 0; a < 4; a++ )
367 temp_PDF += G[a][a] * t1d01[a] * t1rho2[a];
370 B[1] = barrier( 1, s13, spi02, spic, rRes2, mass2[i] );
371 B[2] = barrier( 1, sD, s24, s13, rD2, 1.9683 );
373 tmp1 =
B[1] *
B[2] * temp_PDF;
375 amp_tmp1[0] = tmp1 * pro[0];
376 amp_tmp1[1] = tmp1 * pro[1];
379 if ( g0[i] == 1 ) propagatora0980( mass1[i], s34, seta2, spion22, pro0 );
386 propagatorGS( mass2sq, mass2[i], width2[i], s12, spic, spi01, rRes2, pro1 );
392 Com_Multi( pro0, pro1, pro );
394 for (
int a = 0; a < 4; a++ ) { temp_PDF += G[a][a] * t1d02[a] * t1rho1[a]; }
396 B[1] = barrier( 1, s12, spi01, spic, rRes2, mass2[i] );
397 B[2] = barrier( 1, sD, s34, s12, rD2, 1.9683 );
399 tmp2 =
B[1] *
B[2] * temp_PDF;
400 amp_tmp2[0] = tmp2 * pro[0];
401 amp_tmp2[1] = tmp2 * pro[1];
404 if ( modetype[i] == 3 )
406 if ( g0[i] == 1 ) propagatora0980( mass1[i], s14, spion12, seta2, pro0 );
421 Com_Multi( pro0, pro1, pro );
423 amp_tmp1[0] = tmp1 * pro[0];
424 amp_tmp1[1] = tmp1 * pro[1];
426 amp_tmp2[0] = amp_tmp1[0];
427 amp_tmp2[1] = amp_tmp1[1];
430 amp_tmp[0] = amp_tmp1[0] + amp_tmp2[0];
431 amp_tmp[1] = amp_tmp1[1] + amp_tmp2[1];
432 Com_Multi( amp_tmp, cof, amp_PDF );
433 PDF[0] += amp_PDF[0];
434 PDF[1] += amp_PDF[1];
437 double value = PDF[0] * PDF[0] + PDF[1] * PDF[1];
441void EvtDsToEtapi2pi0::Com_Multi(
double a1[2],
double a2[2],
double res[2] ) {
442 res[0] = a1[0] * a2[0] - a1[1] * a2[1];
443 res[1] = a1[1] * a2[0] + a1[0] * a2[1];
445void EvtDsToEtapi2pi0::Com_Divide(
double a1[2],
double a2[2],
double res[2] ) {
446 double tmp = a2[0] * a2[0] + a2[1] * a2[1];
447 res[0] = ( a1[0] * a2[0] + a1[1] * a2[1] ) / tmp;
448 res[1] = ( a1[1] * a2[0] - a1[0] * a2[1] ) / tmp;
450double EvtDsToEtapi2pi0::SCADot(
double a1[4],
double a2[4] ) {
451 double _cal = a1[0] * a2[0] - a1[1] * a2[1] - a1[2] * a2[2] - a1[3] * a2[3];
455double EvtDsToEtapi2pi0::barrier(
int l,
double sa,
double sb,
double sc,
double r,
457 double q = ( sa + sb - sc ) * ( sa + sb - sc ) / ( 4 * sa ) - sb;
458 if (
q < 0 )
q = 1e-16;
463 double q0 = ( sa0 + sb - sc ) * ( sa0 + sb - sc ) / ( 4 * sa0 ) - sb;
464 if ( q0 < 0 ) q0 = 1e-16;
469 if ( l == 1 ) F = sqrt( ( 1.0 + z0 ) / ( 1.0 + z ) );
470 if ( l == 2 ) F = sqrt( ( 9.0 + 3.0 * z0 + z0 * z0 ) / ( 9.0 + 3.0 * z + z * z ) );
476void EvtDsToEtapi2pi0::calt1(
double daug1[4],
double daug2[4],
double t1[4] ) {
479 for (
int i = 0; i < 4; i++ )
481 pa[i] = daug1[i] + daug2[i];
482 qa[i] = daug1[i] - daug2[i];
484 p = SCADot( pa, pa );
485 pq = SCADot( pa, qa );
487 for (
int i = 0; i < 4; i++ ) { t1[i] = qa[i] - tmp * pa[i]; }
490void EvtDsToEtapi2pi0::calt2(
double daug1[4],
double daug2[4],
double t2[4][4] ) {
493 calt1( daug1, daug2, t1 );
494 r = SCADot( t1, t1 ) / 3.0;
495 for (
int i = 0; i < 4; i++ ) { pa[i] = daug1[i] + daug2[i]; }
496 p = SCADot( pa, pa );
497 for (
int i = 0; i < 4; i++ )
499 for (
int j = 0; j < 4; j++ )
500 { t2[i][j] = t1[i] * t1[j] - r * ( G[i][j] - pa[i] * pa[j] / p ); }
504void EvtDsToEtapi2pi0::propagator(
double mass2,
double mass,
double width,
double sx,
510 b[1] = -
mass * width;
511 Com_Divide( a, b, prop );
513double EvtDsToEtapi2pi0::wid(
double mass2,
double mass,
double sa,
double sb,
double sc,
516 double m = sqrt( sa );
517 double tmp = sb - sc;
518 double tmp1 = sa + tmp;
519 double q = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
520 double tmp2 = mass2 + tmp;
521 double q0 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
525 if ( l == 0 ) { widm = sqrt(
t ) *
mass / m; }
526 else if ( l == 1 ) { widm =
t * sqrt(
t ) *
mass / m * ( 1 + z0 ) / ( 1 + z ); }
528 { widm =
t *
t * sqrt(
t ) *
mass / m * ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ); }
531double EvtDsToEtapi2pi0::widl1(
double mass2,
double mass,
double sa,
double sb,
double sc,
534 double m = sqrt( sa );
535 double tmp = sb - sc;
536 double tmp1 = sa + tmp;
537 double q = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
538 double tmp2 = mass2 + tmp;
539 double q0 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
542 double F = ( 1 + z0 ) / ( 1 + z );
544 widm =
t * sqrt(
t ) *
mass / m * F;
547void EvtDsToEtapi2pi0::propagatorRBW(
double mass2,
double mass,
double width,
double sa,
548 double sb,
double sc,
double r2,
int l,
554 b[1] = -
mass * width * wid( mass2,
mass, sa, sb, sc, r2, l );
555 Com_Divide( a, b, prop );
558void EvtDsToEtapi2pi0::propagatorGS(
double mass2,
double mass,
double width,
double sa,
559 double sb,
double sc,
double r2,
double prop[2] ) {
561 double tmp = sb - sc;
562 double tmp1 = sa + tmp;
563 double q2 = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
565 double tmp2 = mass2 + tmp;
566 double q02 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
568 double q = sqrt( q2 );
569 double q0 = sqrt( q02 );
570 double m = sqrt( sa );
571 double q03 = q0 * q02;
572 double tmp3 = log(
mass + 2 * q0 ) + 1.2760418309;
574 double h = GS1 *
q / m * ( log( m + 2 *
q ) + 1.2760418309 );
575 double h0 = GS1 * q0 /
mass * tmp3;
576 double dh = h0 * ( 0.125 / q02 - 0.5 / mass2 ) + GS3 / mass2;
577 double d = GS2 / q02 * tmp3 + GS3 *
mass / q0 - GS4 *
mass / q03;
578 double f = mass2 / q03 * ( q2 * ( h - h0 ) + ( mass2 - sa ) * q02 * dh );
580 a[0] = 1.0 + d * width /
mass;
582 b[0] = mass2 - sa + width *
f;
583 b[1] = -
mass * width * widl1( mass2,
mass, sa, sb, sc, r2 );
584 Com_Divide( a, b, prop );
587void EvtDsToEtapi2pi0::rhoab(
double sa,
double sb,
double sc,
double res[2] ) {
588 double tmp = sa + sb - sc;
589 double q = 0.25 * tmp * tmp / sa - sb;
592 res[0] = 2.0 * sqrt(
q / sa );
598 res[1] = 2.0 * sqrt( -
q / sa );
602void EvtDsToEtapi2pi0::rho4Pi(
double sa,
double res[2] ) {
603 double temp = 1.0 - 0.3116765584 / sa;
606 res[0] = sqrt( temp ) / ( 1.0 +
exp( 9.8 - 3.5 * sa ) );
612 res[1] = sqrt( -temp ) / ( 1.0 +
exp( 9.8 - 3.5 * sa ) );
616void EvtDsToEtapi2pi0::Flatte_rhoab(
double sa,
double sb,
double sc,
double rho[2] ) {
617 double q = ( sa + sb - sc ) * ( sa + sb - sc ) / ( 4 * sa ) - sb;
620 rho[0] = 2 * sqrt(
q / sa );
626 rho[1] = 2 * sqrt( -
q / sa );
629void EvtDsToEtapi2pi0::propagatora0980(
double mass,
double sx,
double* sb,
double* sc,
631 double unit[2] = { 1.0 };
632 double ci[2] = { 0, 1 };
634 Flatte_rhoab( sx, sb[0], sc[0], rho1 );
636 Flatte_rhoab( sx, sb[1], sc[1], rho2 );
638 double gKK_a980 = 0.892 * 0.341, gPiEta_a980 = 0.341;
639 double tmp1[2] = { gKK_a980, 0 };
641 double tmp2[2] = { gPiEta_a980, 0 };
643 Com_Multi( tmp1, rho1, tmp11 );
644 Com_Multi( tmp2, rho2, tmp22 );
645 double tmp3[2] = { tmp11[0] + tmp22[0], tmp11[1] + tmp22[1] };
647 Com_Multi( tmp3, ci, tmp31 );
648 double tmp4[2] = {
mass *
mass - sx - tmp31[0], -1.0 * tmp31[1] };
649 Com_Divide(
unit, tmp4, prop );
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
EvtComplex exp(const EvtComplex &c)
*******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
double sin(const BesAngle a)
double cos(const BesAngle a)
****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 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)
void decay(EvtParticle *p)
void getName(std::string &name)
virtual ~EvtDsToEtapi2pi0()
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)