BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtDsToEtapi2pi0.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2// Environment:
3// This software is part of the EvtGen package developed jointly
4// for the BaBar and CLEO collaborations. If you use all or part
5// of it, please give an appropriate acknowledgement.
6//
7// Copyright Information: See EvtGen/COPYRIGHT
8// Copyright (C) 1998 Caltech, UCSB
9//
10// Module: EvtDsToEtapi2pi0.cc
11//
12// Description: Routine to handle three-body decays of Ds+/Ds-
13//
14// Modification history:
15// Liaoyuan Dong Sun Jun 02 2024 Module created
16//------------------------------------------------------------------------
17#include "EvtDsToEtapi2pi0.hh"
28#include <fstream>
29#include <stdlib.h>
30#include <string>
31using std::endl;
32
34
35void EvtDsToEtapi2pi0::getName( std::string& model_name ) { model_name = "DsToEtapi2pi0"; }
36
38
40
41 // check that there are 0 arguments
42 checkNArg( 0 );
43 checkNDaug( 4 );
44
50
51 int mode = 0;
52 phi[0] = 0.0000e+00;
53 phi[1] = 2.2539e+00;
54 phi[2] = -4.1144e+00;
55 rho[0] = 1.0000e+00;
56 rho[1] = 3.0726e-01;
57 rho[2] = 8.8537e-01;
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;
70
71 modetype[0] = 1;
72 modetype[1] = 2;
73 modetype[2] = 3;
74
75 // cout << "DsToEtapi2pi0 :" << endl;
76 // for (int i=0; i<3; i++) {
77 // cout << i << " rho= " << rho[i] << " phi= " << phi[i] << " m1= " << mass1[i] << " m2= "
78 // << mass2[i] << " w1= "
79 // << width1[i] << " w2= " << width2[i] << endl;
80 // }
81
82 rRes = 3.0;
83 rRes2 = 9.0;
84 rD = 5.0;
85 rD2 = 25.0;
86 mass_Ks = 0.497611;
87 mass_Kaon = 0.493677;
88 mass_Pion = 0.13957;
89 mass_Pi0 = 0.1349768;
90 meta = 0.547862;
91 GS1 = 0.636619783;
92 GS2 = 0.01860182466;
93 GS3 = 0.1591549458; // 1/(2*math_2pi)
94 GS4 = 0.00620060822;
95
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++ )
98 {
99 for ( int j = 0; j < 4; j++ ) { G[a][j] = GG[a][j]; }
100 }
101}
102
104
106 /*
107 double maxprob = 0.0;
108 for(int ir=0;ir<=60000000;ir++){
109 p->initializePhaseSpace(getNDaug(),getDaugs());
110 EvtVector4R pic = p->getDaug(0)->getP4();
111 EvtVector4R pi01 = p->getDaug(1)->getP4();
112 EvtVector4R pi02 = p->getDaug(2)->getP4();
113 EvtVector4R eta = p->getDaug(3)->getP4();
114
115 double Pic[4],Pi01[4],Pi02[4],Eta[4];
116 Pic[0]=pic.get(0); Pic[1]=pic.get(1); Pic[2]=pic.get(2); Pic[3]=pic.get(3);
117 Pi01[0]=pi01.get(0); Pi01[1]=pi01.get(1); Pi01[2]=pi01.get(2); Pi01[3]=pi01.get(3);
118 Pi02[0]=pi02.get(0); Pi02[1]=pi02.get(1); Pi02[2]=pi02.get(2); Pi02[3]=pi02.get(3);
119 Eta[0] = eta.get(0); Eta[1] = eta.get(1); Eta[2] = eta.get(2); Eta[3] = eta.get(3);
120
121 double prob;
122 int g0[3]={1,1,1};
123 int g1[3]={1,1,1};
124 int g2[3]={0,1,0};
125 int nstates=3;
126
127 calEvaMy(Pic, Pi01, Pi02, Eta, mass1, mass2, width1, width2, rho, phi, g0, g1, g2,
128 modetype, nstates, prob);
129
130 if(prob>maxprob) {
131 maxprob=prob;
132 printf("nrun = %d,maxprob = %.10f,prob = %.10f\n\n",ir,maxprob,prob);
133 }
134 }
135 */
136
138 EvtVector4R pic = p->getDaug( 0 )->getP4();
139 EvtVector4R pi01 = p->getDaug( 1 )->getP4();
140 EvtVector4R pi02 = p->getDaug( 2 )->getP4();
141 EvtVector4R eta = p->getDaug( 3 )->getP4();
142
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 );
160
161 double prob;
162 int g0[3] = { 1, 1, 1 };
163 int g1[3] = { 1, 1, 1 };
164 int g2[3] = { 0, 1, 0 };
165 int nstates = 3;
166
167 calEvaMy( Pic, Pi01, Pi02, Eta, mass1, mass2, width1, width2, rho, phi, g0, g1, g2, modetype,
168 nstates, prob );
169 setProb( prob );
170
171 return;
172}
173
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 ) {
178
179 double P12[4], P13[4], P14[4], P23[4], P24[4], P34[4], P123[4], P124[4], P134[4], P234[4],
180 PD[4];
181 for ( int i = 0; i != 4; i++ )
182 {
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];
194 }
195
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;
199
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 );
215
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 };
220
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];
224
225 calt1( Pic, Pi01, t1rho1 );
226 calt1( Pic, Pi02, t1rho2 );
227
228 calt1( Pi01, Eta, t1a01 );
229 calt1( Pi02, Eta, t1a02 );
230
231 calt1( P24, P13, t1d01 );
232 calt1( P34, P12, t1d02 );
233
234 calt1( P14, P23, t1d03 );
235 calt1( Pi01, Pi02, t1sigma );
236
237 calt2( P12, Pi02, t2a11 );
238 calt2( P13, Pi01, t2a12 );
239 //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
240
241 PDF[0] = 0.0;
242 PDF[1] = 0.0;
243 double mass1sq, mass2sq;
244 double pro[2], pro0[2], pro1[2], pro2[2], pro3[2];
245 double B[3];
246 amp_PDF[0] = 0;
247 amp_PDF[1] = 0;
248 PDF[0] = 0;
249 PDF[1] = 0;
250
251 double temp_PDF, tmp1, tmp2;
252
253 for ( int i = 0; i < nstates; i++ )
254 {
255
256 amp_tmp[0] = 0;
257 amp_tmp[1] = 0;
258 mass1sq = mass1[i] * mass1[i];
259 mass2sq = mass2[i] * mass2[i];
260 amp_tmp1[0] = 0;
261 amp_tmp1[1] = 0;
262 amp_tmp2[0] = 0;
263 amp_tmp2[1] = 0;
264 temp_PDF = 0;
265 tmp1 = 0;
266 tmp2 = 0;
267
268 cof[0] = amp[i] * cos( phase[i] );
269 cof[1] = amp[i] * sin( phase[i] );
270
271 if ( modetype[i] == 1 )
272 {
273 if ( g0[i] == 1 )
274 propagatorGS( mass1sq, mass1[i], width1[i], s12, spic, spi01, rRes2, pro0 ); // rho
275 if ( g0[i] == 0 )
276 {
277 pro0[0] = 1;
278 pro0[1] = 0;
279 }
280 if ( g1[i] == 1 )
281 propagatorRBW( mass2sq, mass2[i], width2[i], s123, s12, spi02, rRes2, g2[i],
282 pro1 ); // a1
283 if ( g1[i] == 0 )
284 {
285 pro1[0] = 1;
286 pro1[1] = 0;
287 }
288 Com_Multi( pro0, pro1, pro ); // Pn
289 calt1( P123, Eta, t1D ); // L1(D)
290
291 B[0] = barrier( 1, s12, spi01, spic, rRes2, mass1[i] ); // Fn(rho)
292 B[2] = barrier( 1, sD, s123, seta, rD2, 1.9683 ); // Fn(D)
293
294 if ( g2[i] == 0 ) // a1--rhopi
295 {
296
297 for ( int a = 0; a < 4; a++ )
298 {
299 for ( int j = 0; j < 4; j++ )
300 {
301 temp_PDF += t1D[a] * ( G[a][j] - P123[a] * P123[j] / s123 ) * t1rho1[j] * G[a][a] *
302 G[j][j];
303 }
304 }
305 tmp1 = B[0] * B[2] * temp_PDF; //
306 }
307
308 amp_tmp1[0] = tmp1 * pro[0];
309 amp_tmp1[1] = tmp1 * pro[1];
310
311 temp_PDF = 0;
312 if ( g0[i] == 1 )
313 propagatorGS( mass1sq, mass1[i], width1[i], s13, spic, spi02, rRes2, pro0 );
314 if ( g0[i] == 0 )
315 {
316 pro0[0] = 1;
317 pro0[1] = 0;
318 }
319 if ( g1[i] == 1 )
320 propagatorRBW( mass2sq, mass2[i], width2[i], s123, s13, spi01, rRes2, g2[i], pro1 );
321 if ( g1[i] == 0 )
322 {
323 pro1[0] = 1;
324 pro1[1] = 0;
325 }
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 );
330
331 if ( g2[i] == 0 ) // a1--rhopi
332 {
333 for ( int a = 0; a < 4; a++ )
334 {
335 for ( int j = 0; j < 4; j++ )
336 {
337 temp_PDF += t1D[a] * ( G[a][j] - P123[a] * P123[j] / s123 ) * t1rho2[j] * G[a][a] *
338 G[j][j];
339 }
340 }
341 tmp2 = B[0] * B[2] * temp_PDF;
342 }
343 amp_tmp2[0] = tmp2 * pro[0];
344 amp_tmp2[1] = tmp2 * pro[1];
345 }
346
347 if ( modetype[i] == 2 )
348 {
349
350 if ( g0[i] == 1 ) propagatora0980( mass1[i], s24, seta2, spion12, pro0 );
351 if ( g0[i] == 0 )
352 {
353 pro0[0] = 1;
354 pro0[1] = 0;
355 }
356 if ( g1[i] == 1 )
357 propagatorGS( mass2sq, mass2[i], width2[i], s13, spic, spi02, rRes2, pro1 );
358 if ( g1[i] == 0 )
359 {
360 pro1[0] = 1;
361 pro1[1] = 0;
362 }
363 Com_Multi( pro0, pro1, pro ); // Pn
364
365 for ( int a = 0; a < 4; a++ )
366 {
367 temp_PDF += G[a][a] * t1d01[a] * t1rho2[a]; // Sn=L1(D)*L1(V:rho)
368 }
369
370 B[1] = barrier( 1, s13, spi02, spic, rRes2, mass2[i] ); // Fn1(rho)
371 B[2] = barrier( 1, sD, s24, s13, rD2, 1.9683 ); // Fn1(D)...Fn0(a0)==1
372
373 tmp1 = B[1] * B[2] * temp_PDF; // Fn*Sn
374
375 amp_tmp1[0] = tmp1 * pro[0]; // An
376 amp_tmp1[1] = tmp1 * pro[1];
377
378 temp_PDF = 0;
379 if ( g0[i] == 1 ) propagatora0980( mass1[i], s34, seta2, spion22, pro0 );
380 if ( g0[i] == 0 )
381 {
382 pro0[0] = 1;
383 pro0[1] = 0;
384 }
385 if ( g1[i] == 1 )
386 propagatorGS( mass2sq, mass2[i], width2[i], s12, spic, spi01, rRes2, pro1 );
387 if ( g1[i] == 0 )
388 {
389 pro1[0] = 1;
390 pro1[1] = 0;
391 }
392 Com_Multi( pro0, pro1, pro );
393
394 for ( int a = 0; a < 4; a++ ) { temp_PDF += G[a][a] * t1d02[a] * t1rho1[a]; }
395
396 B[1] = barrier( 1, s12, spi01, spic, rRes2, mass2[i] ); // Fn1(rho)
397 B[2] = barrier( 1, sD, s34, s12, rD2, 1.9683 );
398
399 tmp2 = B[1] * B[2] * temp_PDF;
400 amp_tmp2[0] = tmp2 * pro[0];
401 amp_tmp2[1] = tmp2 * pro[1];
402 }
403
404 if ( modetype[i] == 3 )
405 {
406 if ( g0[i] == 1 ) propagatora0980( mass1[i], s14, spion12, seta2, pro0 );
407 if ( g0[i] == 0 )
408 {
409 pro0[0] = 1;
410 pro0[1] = 0;
411 pro2[0] = 1;
412 pro2[1] = 0;
413 }
414 if ( g1[i] == 1 )
415 {
416 pro1[0] = 1;
417 pro1[1] = 0;
418 pro3[0] = 1;
419 pro3[1] = 0;
420 }
421 Com_Multi( pro0, pro1, pro );
422 tmp1 = 1;
423 amp_tmp1[0] = tmp1 * pro[0];
424 amp_tmp1[1] = tmp1 * pro[1];
425
426 amp_tmp2[0] = amp_tmp1[0];
427 amp_tmp2[1] = amp_tmp1[1];
428 }
429
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];
435 }
436
437 double value = PDF[0] * PDF[0] + PDF[1] * PDF[1];
438 Result = value;
439}
440
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];
444}
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;
449}
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];
452 return _cal;
453}
454
455double EvtDsToEtapi2pi0::barrier( int l, double sa, double sb, double sc, double r,
456 double mass ) {
457 double q = ( sa + sb - sc ) * ( sa + sb - sc ) / ( 4 * sa ) - sb;
458 if ( q < 0 ) q = 1e-16;
459 double z;
460 z = q * r;
461 double sa0;
462 sa0 = mass * mass;
463 double q0 = ( sa0 + sb - sc ) * ( sa0 + sb - sc ) / ( 4 * sa0 ) - sb;
464 if ( q0 < 0 ) q0 = 1e-16;
465 // if(q0 < 0) q0 = -1.0*q0;
466 double z0 = q0 * r;
467 double F = 0.0;
468 if ( l == 0 ) F = 1;
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 ) );
471 // if(l == 1) F = sqrt((2.0*z)/(1+z));
472 // if(l == 2) F = sqrt((13.0*z*z)/(9+3*z+z*z));
473 return F;
474}
475
476void EvtDsToEtapi2pi0::calt1( double daug1[4], double daug2[4], double t1[4] ) {
477 double p, pq, tmp;
478 double pa[4], qa[4];
479 for ( int i = 0; i < 4; i++ )
480 {
481 pa[i] = daug1[i] + daug2[i];
482 qa[i] = daug1[i] - daug2[i];
483 }
484 p = SCADot( pa, pa );
485 pq = SCADot( pa, qa );
486 tmp = pq / p;
487 for ( int i = 0; i < 4; i++ ) { t1[i] = qa[i] - tmp * pa[i]; }
488}
489
490void EvtDsToEtapi2pi0::calt2( double daug1[4], double daug2[4], double t2[4][4] ) {
491 double p, r;
492 double pa[4], t1[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++ )
498 {
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 ); }
501 }
502}
503
504void EvtDsToEtapi2pi0::propagator( double mass2, double mass, double width, double sx,
505 double prop[2] ) {
506 double a[2], b[2];
507 a[0] = 1;
508 a[1] = 0;
509 b[0] = mass2 - sx;
510 b[1] = -mass * width;
511 Com_Divide( a, b, prop );
512}
513double EvtDsToEtapi2pi0::wid( double mass2, double mass, double sa, double sb, double sc,
514 double r2, int l ) {
515 double widm = 0.;
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 );
522 double z = q * r2;
523 double z0 = q0 * r2;
524 double t = q / q0;
525 if ( l == 0 ) { widm = sqrt( t ) * mass / m; }
526 else if ( l == 1 ) { widm = t * sqrt( t ) * mass / m * ( 1 + z0 ) / ( 1 + z ); }
527 else if ( l == 2 )
528 { widm = t * t * sqrt( t ) * mass / m * ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ); }
529 return widm;
530}
531double EvtDsToEtapi2pi0::widl1( double mass2, double mass, double sa, double sb, double sc,
532 double r2 ) {
533 double widm = 0.;
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 );
540 double z = q * r2;
541 double z0 = q0 * r2;
542 double F = ( 1 + z0 ) / ( 1 + z );
543 double t = q / q0;
544 widm = t * sqrt( t ) * mass / m * F;
545 return widm;
546}
547void EvtDsToEtapi2pi0::propagatorRBW( double mass2, double mass, double width, double sa,
548 double sb, double sc, double r2, int l,
549 double prop[2] ) {
550 double a[2], b[2];
551 a[0] = 1;
552 a[1] = 0;
553 b[0] = mass2 - sa;
554 b[1] = -mass * width * wid( mass2, mass, sa, sb, sc, r2, l );
555 Com_Divide( a, b, prop );
556}
557
558void EvtDsToEtapi2pi0::propagatorGS( double mass2, double mass, double width, double sa,
559 double sb, double sc, double r2, double prop[2] ) {
560 double a[2], b[2];
561 double tmp = sb - sc;
562 double tmp1 = sa + tmp;
563 double q2 = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
564
565 double tmp2 = mass2 + tmp;
566 double q02 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
567
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; // log(mass_2Pion) = 1.2760418309;
573
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 );
579
580 a[0] = 1.0 + d * width / mass;
581 a[1] = 0.0;
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 );
585}
586
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;
590 if ( q >= 0 )
591 {
592 res[0] = 2.0 * sqrt( q / sa );
593 res[1] = 0.0;
594 }
595 else
596 {
597 res[0] = 0.0;
598 res[1] = 2.0 * sqrt( -q / sa );
599 }
600}
601
602void EvtDsToEtapi2pi0::rho4Pi( double sa, double res[2] ) {
603 double temp = 1.0 - 0.3116765584 / sa; // 0.3116765584=0.13957*0.13957*16
604 if ( temp >= 0 )
605 {
606 res[0] = sqrt( temp ) / ( 1.0 + exp( 9.8 - 3.5 * sa ) );
607 res[1] = 0.0;
608 }
609 else
610 {
611 res[0] = 0.0;
612 res[1] = sqrt( -temp ) / ( 1.0 + exp( 9.8 - 3.5 * sa ) );
613 }
614}
615
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;
618 if ( q > 0 )
619 {
620 rho[0] = 2 * sqrt( q / sa );
621 rho[1] = 0;
622 }
623 else if ( q < 0 )
624 {
625 rho[0] = 0;
626 rho[1] = 2 * sqrt( -q / sa );
627 }
628}
629void EvtDsToEtapi2pi0::propagatora0980( double mass, double sx, double* sb, double* sc,
630 double prop[2] ) {
631 double unit[2] = { 1.0 };
632 double ci[2] = { 0, 1 };
633 double rho1[2];
634 Flatte_rhoab( sx, sb[0], sc[0], rho1 );
635 double rho2[2];
636 Flatte_rhoab( sx, sb[1], sc[1], rho2 );
637
638 double gKK_a980 = 0.892 * 0.341, gPiEta_a980 = 0.341;
639 double tmp1[2] = { gKK_a980, 0 };
640 double tmp11[2];
641 double tmp2[2] = { gPiEta_a980, 0 };
642 double tmp22[2];
643 Com_Multi( tmp1, rho1, tmp11 );
644 Com_Multi( tmp2, rho2, tmp22 );
645 double tmp3[2] = { tmp11[0] + tmp22[0], tmp11[1] + tmp22[1] };
646 double tmp31[2];
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 );
650}
double mass
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
TF1 * g1
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
Definition FoamA.h:90
****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
Definition KKsem.h:33
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
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()
EvtDecayBase * clone()
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
double get(int i) const
int t()
Definition t.c:1