81 width[0] = 6.7400e-02;
82 width[1] = 2.6500e-01;
83 width[2] = 1.8500e-01;
84 width[3] = 1.7400e-01;
85 width[4] = 1.7400e-01;
102 mass_Pi0 = 0.1349766;
113 int GG[4][4] = { { 1, 0, 0, 0 }, { 0, -1, 0, 0 }, { 0, 0, -1, 0 }, { 0, 0, 0, -1 } };
114 for (
int i = 0; i < 4; i++ )
116 for (
int j = 0; j < 4; j++ ) { G[i][j] = GG[i][j]; }
168 double P1[4], P2[4], P3[4];
188 int g0[5] = { 3, 1, 1, 0, 0 };
189 int spin[5] = { 0, 0, 2, 2, 2 };
192 calEva( P1, P2, P3, mass, width, rho, phi, g0, spin, modetype, nstates, value );
198void EvtDsTopipi0pi0::Com_Multi(
double a1[2],
double a2[2],
double res[2] ) {
199 res[0] = a1[0] * a2[0] - a1[1] * a2[1];
200 res[1] = a1[1] * a2[0] + a1[0] * a2[1];
202void EvtDsTopipi0pi0::Com_Divide(
double a1[2],
double a2[2],
double res[2] ) {
203 double tmp = a2[0] * a2[0] + a2[1] * a2[1];
204 res[0] = ( a1[0] * a2[0] + a1[1] * a2[1] ) / tmp;
205 res[1] = ( a1[1] * a2[0] - a1[0] * a2[1] ) / tmp;
208double EvtDsTopipi0pi0::SCADot(
double a1[4],
double a2[4] ) {
209 double _cal = a1[0] * a2[0] - a1[1] * a2[1] - a1[2] * a2[2] - a1[3] * a2[3];
212double EvtDsTopipi0pi0::barrier(
int l,
double sa,
double sb,
double sc,
double r,
214 double q = ( sa + sb - sc ) * ( sa + sb - sc ) / ( 4 * sa ) - sb;
215 if (
q < 0 )
q = 1e-16;
220 double q0 = ( sa0 + sb - sc ) * ( sa0 + sb - sc ) / ( 4 * sa0 ) - sb;
221 if ( q0 < 0 ) q0 = 1e-16;
222 double z0 = q0 * r * r;
225 if ( l == 1 ) F = sqrt( ( 1 + z0 ) / ( 1 + z ) );
226 if ( l == 2 ) F = sqrt( ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ) );
230void EvtDsTopipi0pi0::calt1(
double daug1[4],
double daug2[4],
double t1[4] ) {
233 for (
int i = 0; i < 4; i++ )
235 pa[i] = daug1[i] + daug2[i];
236 qa[i] = daug1[i] - daug2[i];
238 p = SCADot( pa, pa );
239 pq = SCADot( pa, qa );
241 for (
int i = 0; i < 4; i++ ) { t1[i] = qa[i] - tmp * pa[i]; }
243void EvtDsTopipi0pi0::calt2(
double daug1[4],
double daug2[4],
double t2[4][4] ) {
246 calt1( daug1, daug2, t1 );
247 r = SCADot( t1, t1 ) / 3.0;
248 for (
int i = 0; i < 4; i++ ) { pa[i] = daug1[i] + daug2[i]; }
249 p = SCADot( pa, pa );
250 for (
int i = 0; i < 4; i++ )
252 for (
int j = 0; j < 4; j++ )
253 { t2[i][j] = t1[i] * t1[j] - r * ( G[i][j] - pa[i] * pa[j] / p ); }
258double EvtDsTopipi0pi0::wid(
double mass2,
double mass,
double sa,
double sb,
double sc,
261 double m = sqrt( sa );
262 double tmp = sb - sc;
263 double tmp1 = sa + tmp;
264 double q = 0.25 * tmp1 * tmp1 / sa - sb;
265 if (
q < 0 )
q = 1e-16;
266 double tmp2 = mass2 + tmp;
267 double q0 = 0.25 * tmp2 * tmp2 / mass2 - sb;
268 if ( q0 < 0 ) q0 = 1e-16;
272 if ( l == 0 ) { widm = sqrt(
t ) * mass / m; }
273 else if ( l == 1 ) { widm =
t * sqrt(
t ) * mass / m * ( 1 + z0 ) / ( 1 + z ); }
275 { widm =
t *
t * sqrt(
t ) * mass / m * ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ); }
278double EvtDsTopipi0pi0::widl1(
double mass2,
double mass,
double sa,
double sb,
double sc,
281 double m = sqrt( sa );
282 double tmp = sb - sc;
283 double tmp1 = sa + tmp;
284 double q = 0.25 * tmp1 * tmp1 / sa - sb;
285 if (
q < 0 )
q = 1e-16;
286 double tmp2 = mass2 + tmp;
287 double q0 = 0.25 * tmp2 * tmp2 / mass2 - sb;
288 if ( q0 < 0 ) q0 = 1e-16;
291 double F = ( 1 + z0 ) / ( 1 + z );
293 widm =
t * sqrt(
t ) * mass / m * F;
296void EvtDsTopipi0pi0::propagatorRBW(
double mass2,
double mass,
double width,
double sa,
297 double sb,
double sc,
double r2,
int l,
double prop[2] ) {
302 b[1] = -mass * width * wid( mass2, mass, sa, sb, sc, r2, l );
303 Com_Divide( a, b, prop );
306void EvtDsTopipi0pi0::propagatorGS(
double mass2,
double mass,
double width,
double sa,
307 double sb,
double sc,
double r2,
double prop[2] ) {
309 double tmp = sb - sc;
310 double tmp1 = sa + tmp;
311 double q2 = 0.25 * tmp1 * tmp1 / sa - sb;
312 if ( q2 < 0 ) q2 = 1e-16;
314 double tmp2 = mass2 + tmp;
315 double q02 = 0.25 * tmp2 * tmp2 / mass2 - sb;
316 if ( q02 < 0 ) q02 = 1e-16;
318 double q = sqrt( q2 );
319 double q0 = sqrt( q02 );
320 double m = sqrt( sa );
321 double q03 = q0 * q02;
322 double tmp3 = log( mass + 2 * q0 ) + 1.2926305904;
324 double h = GS1 *
q / m * ( log( m + 2 *
q ) + 1.2926305904 );
325 double h0 = GS1 * q0 / mass * tmp3;
326 double dh = h0 * ( 0.125 / q02 - 0.5 / mass2 ) + GS3 / mass2;
327 double d = GS2 / q02 * tmp3 + GS3 * mass / q0 - GS4 * mass / q03;
328 double f = mass2 / q03 * ( q2 * ( h - h0 ) + ( mass2 - sa ) * q02 * dh );
330 a[0] = 1.0 + d * width / mass;
332 b[0] = mass2 - sa + width *
f;
333 b[1] = -mass * width * widl1( mass2, mass, sa, sb, sc, r2 );
334 Com_Divide( a, b, prop );
337void EvtDsTopipi0pi0::PiPiSWASS(
double sa,
double sb,
double sc,
double prop[2] ) {
342void EvtDsTopipi0pi0::Flatte_rhoab(
double sa,
double sb,
double rho[2] ) {
343 double q = 1.0 - ( 4 * sb / sa );
357void EvtDsTopipi0pi0::propagator980(
double mass,
double sx,
double* sb,
double prop[2] ) {
359 double gpipi1 = 2.0 / 3.0 * 0.165;
360 double gpipi2 = 1.0 / 3.0 * 0.165;
361 double gKK1 = 0.5 * 0.69465;
362 double gKK2 = 0.5 * 0.69465;
364 double unit[2] = { 1.0 };
365 double ci[2] = { 0, 1 };
367 Flatte_rhoab( sx, sb[0], rho1 );
369 Flatte_rhoab( sx, sb[1], rho2 );
371 Flatte_rhoab( sx, sb[2], rho3 );
373 Flatte_rhoab( sx, sb[3], rho4 );
375 double tmp1[2] = { gpipi1, 0 };
377 double tmp2[2] = { gpipi2, 0 };
379 double tmp3[2] = { gKK1, 0 };
381 double tmp4[2] = { gKK2, 0 };
384 Com_Multi( tmp1, rho1, tmp11 );
385 Com_Multi( tmp2, rho2, tmp22 );
386 Com_Multi( tmp3, rho3, tmp33 );
387 Com_Multi( tmp4, rho4, tmp44 );
389 double tmp5[2] = { tmp11[0] + tmp22[0] + tmp33[0] + tmp44[0],
390 tmp11[1] + tmp22[1] + tmp33[1] + tmp44[1] };
392 Com_Multi( tmp5, ci, tmp51 );
394 double tmp6[2] = { mass * mass - sx - tmp51[0], -1.0 * tmp51[1] };
395 Com_Divide(
unit, tmp6, prop );
398double EvtDsTopipi0pi0::DDalitz(
double P1[4],
double P2[4],
double P3[4],
int Ang,
401 double temp_PDF, v_re;
404 double B[2], s1, s2, s3, sR, sD;
405 for (
int i = 0; i < 4; i++ )
407 pR[i] = P1[i] + P2[i];
408 pD[i] = pR[i] + P3[i];
410 s1 = SCADot( P1, P1 );
411 s2 = SCADot( P2, P2 );
412 s3 = SCADot( P3, P3 );
413 sR = SCADot( pR, pR );
414 sD = SCADot( pD, pD );
433 B[0] = barrier( 1, sR, s1, s2, 3.0, mass );
434 B[1] = barrier( 1, sD, sR, s3, 5.0, 1.9683 );
439 for (
int i = 0; i < 4; i++ ) { temp_PDF += t1[i] * T1[i] * G[i][i]; }
443 B[0] = barrier( 2, sR, s1, s2, 3.0, mass );
444 B[1] = barrier( 2, sD, sR, s3, 5.0, 1.9683 );
445 double t2[4][4], T2[4][4];
449 for (
int i = 0; i < 4; i++ )
451 for (
int j = 0; j < 4; j++ ) { temp_PDF += t2[i][j] * T2[j][i] * G[i][i] * G[j][j]; }
454 v_re = temp_PDF *
B[0] *
B[1];
458void EvtDsTopipi0pi0::calEva(
double* Pic,
double* Pi01,
double* Pi02,
double* mass1,
459 double* width1,
double* amp,
double* phase,
int* g0,
int* spin,
460 int* modetype,
int nstates,
double& Result ) {
461 double P12[4], P23[4], P13[4];
462 double cof[2], amp_PDF[2], PDF[2];
463 double scpi, spi01, spi02;
464 double s12, s13, s23;
465 for (
int i = 0; i < 4; i++ )
467 P23[i] = Pi01[i] + Pi02[i];
468 P12[i] = Pic[i] + Pi01[i];
469 P13[i] = Pic[i] + Pi02[i];
471 scpi = SCADot( Pic, Pic );
472 spi01 = SCADot( Pi01, Pi01 );
473 spi02 = SCADot( Pi02, Pi02 );
474 s12 = SCADot( P12, P12 );
475 s13 = SCADot( P13, P13 );
476 s23 = SCADot( P23, P23 );
477 double spi012[4] = { mass_Pion * mass_Pion, spi02, mass_Kaon * mass_Kaon, mk0 * mk0 };
479 double pro[2], temp_PDF, amp_tmp[2], temp_PDF1, temp_PDF2, pro1[2], pro2[2];
487 for (
int i = 0; i < nstates; i++ )
491 mass1sq = mass1[i] * mass1[i];
492 cof[0] = amp[i] *
cos( phase[i] );
493 cof[1] = amp[i] *
sin( phase[i] );
496 if ( modetype[i] == 23 )
498 temp_PDF = DDalitz( Pi01, Pi02, Pic, spin[i], mass1[i] );
500 propagatorRBW( mass1sq, mass1[i], width1[i], s23, spi01, spi02, rRes, spin[i], pro );
501 if ( g0[i] == 12 ) PiPiSWASS( s23, spi01, spi02, pro );
502 if ( g0[i] == 3 ) propagator980( mass1[i], s23, spi012, pro );
510 amp_tmp[0] = temp_PDF * pro[0];
511 amp_tmp[1] = temp_PDF * pro[1];
513 if ( modetype[i] == 12 )
515 temp_PDF1 = DDalitz( Pic, Pi01, Pi02, spin[i], mass1[i] );
517 propagatorRBW( mass1sq, mass1[i], width1[i], s12, scpi, spi01, rRes, spin[i], pro1 );
518 if ( g0[i] == 12 ) PiPiSWASS( s12, scpi, spi01, pro1 );
525 temp_PDF2 = DDalitz( Pic, Pi02, Pi01, spin[i], mass1[i] );
527 propagatorRBW( mass1sq, mass1[i], width1[i], s13, scpi, spi02, rRes, spin[i], pro2 );
528 if ( g0[i] == 12 ) PiPiSWASS( s13, scpi, spi02, pro2 );
534 amp_tmp[0] = temp_PDF1 * pro1[0] + temp_PDF2 * pro2[0];
535 amp_tmp[1] = temp_PDF1 * pro1[1] + temp_PDF2 * pro2[1];
537 Com_Multi( amp_tmp, cof, amp_PDF );
538 PDF[0] += amp_PDF[0];
539 PDF[1] += amp_PDF[1];
542 double value = PDF[0] * PDF[0] + PDF[1] * PDF[1];
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
*******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)
virtual ~EvtDsTopipi0pi0()
void decay(EvtParticle *p)
void getName(std::string &name)
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)