BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtD0ToKSpi0pi0.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2// Environment:
3// This software is part of models developed at BES collaboration
4// based on the EvtGen framework. If you use all or part
5// of it, please give an appropriate acknowledgement.
6//
7// Copyright Information: See EvtGen/BesCopyright
8// Copyright (A) 2006 Ping Rong-Gang @IHEP
9//
10// Module: EvtD0ToKSpi0pi0.cc
11//
12// Description: D0 -> KS pi0 pi0
13//
14// Modification history:
15//
16// Liaoyuan Dong Feb 19 22:49:36 2023 Module created
17// Aug 22 21:58:51 2023 Use pipi S-wave K-matrix
18//
19//------------------------------------------------------------------------
20#include "EvtD0ToKSpi0pi0.hh"
30#include "TMath.h"
31#include <fstream>
32#include <math.h>
33#include <stdlib.h>
34#include <string>
35#include <vector>
36using std::endl;
37
39
40void EvtD0ToKSpi0pi0::getName( std::string& model_name ) { model_name = "D0ToKSpi0pi0"; }
41
43
45 // check that there are 0 arguments
46 checkNArg( 0 );
47 checkNDaug( 3 );
52
53 pi180inv = 1.0 / EvtConst::radToDegrees;
54 phi[0] = 0.0;
55 phi[1] = -1.1735907962948264327;
56 phi[2] = -0.98738790124871123055;
57 phi[3] = 2.4055643732573601667;
58 phi[4] = 1.9872186812020204982;
59 phi[5] = 0.25034666009967576628;
60 phi[6] = -2.4035171276352995662;
61
62 rho[0] = 1.0;
63 rho[1] = 1.407574144549414541;
64 rho[2] = 1.3964570662861071071;
65 rho[3] = 2.5234814225240658203;
66 rho[4] = 2.0222401273514734044;
67 rho[5] = 0.69741141764274061643;
68 rho[6] = 0.84723998937758082661;
69
70 modetype[0] = 12;
71 modetype[1] = 12;
72 modetype[2] = 12;
73 modetype[3] = 12;
74 modetype[4] = 12;
75 modetype[5] = 23;
76 modetype[6] = 23;
77
78 // std::cout << "Initializing EvtD0ToKSpi0pi0" << std::endl;
79 // for (int i=0; i<7; i++) {
80 // cout << i << " rho= " << rho[i] << " phi= " << phi[i] << endl;
81 // }
82
83 width[0] = 0.047300000000000001765;
84 width[1] = 0.23200000000000001177;
85 width[2] = 0.10899999999999999967;
86 width[3] = 0.0084899999999999992834;
87 width[4] = 0.32200000000000000844;
88 width[5] = 0.020000000000000000416;
89 width[6] = 0.18670000000000000484;
90
91 mass[0] = 0.89554999999999995719;
92 mass[1] = 1.4139999999999999236;
93 mass[2] = 1.4323999999999998956;
94 mass[3] = 1.3999999999999999112;
95 mass[4] = 1.7179999999999999716;
96 mass[5] = 0.9000000000000000222;
97 mass[6] = 1.2755000000000000782;
98
99 mD0 = 1.86483;
100 mK0 = 0.497611;
101 mKa = 0.49368;
102 mPi = 0.13957;
103 meta = 0.54775;
104 mK02 = 0.237616707;
105 mPi2 = 0.01947978;
106 mass_EtaP = 0.95778;
107 mass_Kaon = 0.49368;
108
109 math_pi = 3.1415926;
110 mass_Pion = 0.13957;
111 mass_Pion2 = 0.0194797849;
112 mass_2Pion = 0.27914;
113 math_2pi = 6.2831852;
114 rD2 = 25.0; // 5*5
115 rRes2 = 9.0; // 3*3
116 g1 = 0.5468;
117 g2 = 0.23;
118 GS1 = 0.636619783;
119 GS2 = 0.01860182466;
120 GS3 = 0.1591549458;
121 GS4 = 0.00620060822;
122
123 int GG[4][4] = { { 1, 0, 0, 0 }, { 0, -1, 0, 0 }, { 0, 0, -1, 0 }, { 0, 0, 0, -1 } };
124 for ( int i = 0; i < 4; i++ )
125 {
126 for ( int j = 0; j < 4; j++ ) { G[i][j] = GG[i][j]; }
127 }
128}
129
131 setProbMax( 944.0 ); // MAXprob = 943.6824670811
132}
133
135 /*
136 double maxprob = 0.0;
137 for(int ir=0;ir<=60000000;ir++){
138 p->initializePhaseSpace(getNDaug(),getDaugs());
139 EvtVector4R D1 = p->getDaug(0)->getP4();
140 EvtVector4R D2 = p->getDaug(1)->getP4();
141 EvtVector4R D3 = p->getDaug(2)->getP4();
142
143 double P1[4], P2[4], P3[4];
144 P1[0] = D1.get(0); P1[1] = D1.get(1); P1[2] = D1.get(2); P1[3] = D1.get(3);
145 P2[0] = D2.get(0); P2[1] = D2.get(1); P2[2] = D2.get(2); P2[3] = D2.get(3);
146 P3[0] = D3.get(0); P3[1] = D3.get(1); P3[2] = D3.get(2); P3[3] = D3.get(3);
147
148 double value;
149 int nstates=7;
150 int g0[7]={1,1,1,4,1,6,2};
151 int spin[7]={1,1,2,0,1,0,2};
152 double r0[7]={3.0,3.0,3.0,3.0,3.0,3.0,3.0};
153 double r1[7]={5.0,5.0,5.0,5.0,5.0,5.0,5.0};
154
155 calEva(P1, P2, P3, mass, width, rho, phi, g0, spin, modetype, nstates, value,r0,r1);
156
157 if (value<0) continue;
158 if(value>maxprob) {
159 maxprob=value;
160 cout << "ir= " << ir << endl;
161 cout << "MAX====> " << maxprob << endl;
162 }
163 }
164 printf("MAXprob = %.10f\n",maxprob);
165 */
167 EvtVector4R D1 = p->getDaug( 0 )->getP4();
168 EvtVector4R D2 = p->getDaug( 1 )->getP4();
169 EvtVector4R D3 = p->getDaug( 2 )->getP4();
170
171 double P1[4], P2[4], P3[4];
172 P1[0] = D1.get( 0 );
173 P1[1] = D1.get( 1 );
174 P1[2] = D1.get( 2 );
175 P1[3] = D1.get( 3 );
176 P2[0] = D2.get( 0 );
177 P2[1] = D2.get( 1 );
178 P2[2] = D2.get( 2 );
179 P2[3] = D2.get( 3 );
180 P3[0] = D3.get( 0 );
181 P3[1] = D3.get( 1 );
182 P3[2] = D3.get( 2 );
183 P3[3] = D3.get( 3 );
184
185 double value;
186 int nstates = 7;
187 int g0[7] = { 1, 1, 1, 4, 1, 6, 2 };
188 int spin[7] = { 1, 1, 2, 0, 1, 0, 2 };
189 double r0[7] = { 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0 };
190 double r1[7] = { 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 };
191
192 calEva( P1, P2, P3, mass, width, rho, phi, g0, spin, modetype, nstates, value, r0, r1 );
193 setProb( value );
194 return;
195}
196
197void EvtD0ToKSpi0pi0::Com_Multi( double a1[2], double a2[2], double res[2] ) {
198 res[0] = a1[0] * a2[0] - a1[1] * a2[1];
199 res[1] = a1[1] * a2[0] + a1[0] * a2[1];
200}
201void EvtD0ToKSpi0pi0::Com_Divide( double a1[2], double a2[2], double res[2] ) {
202 double tmp = a2[0] * a2[0] + a2[1] * a2[1];
203 res[0] = ( a1[0] * a2[0] + a1[1] * a2[1] ) / tmp;
204 res[1] = ( a1[1] * a2[0] - a1[0] * a2[1] ) / tmp;
205}
206double EvtD0ToKSpi0pi0::CalRho4pi( double_t s ) {
207 if ( s >= 1. ) { return sqrt( ( s - 16. * mass_Pion * mass_Pion ) / s ); }
208 else
209 {
210 double_t s0 = 1.2274 + 0.00370909 / ( s * s ) - ( 0.111203 ) / (s)-6.39017 * s +
211 16.8358 * s * s - 21.8845 * s * s * s + 11.3153 * s * s * s * s;
212 double_t gam = s0 * sqrt( 1.0 - ( 16.0 * mass_Pion * mass_Pion ) );
213
214 return gam;
215 }
216}
217
218//------------base---------------------------------
219double EvtD0ToKSpi0pi0::SCADot( double a1[4], double a2[4] ) {
220 double _cal = a1[0] * a2[0] - a1[1] * a2[1] - a1[2] * a2[2] - a1[3] * a2[3];
221 return _cal;
222}
223double EvtD0ToKSpi0pi0::barrier( int l, double sa, double sb, double sc, double r,
224 double mass ) {
225 double q = fabs( ( sa + sb - sc ) * ( sa + sb - sc ) / ( 4 * sa ) - sb );
226 double z;
227 z = q * r * r;
228 double sa0;
229 sa0 = mass * mass;
230 double q0 = fabs( ( sa0 + sb - sc ) * ( sa0 + sb - sc ) / ( 4 * sa0 ) - sb );
231 double z0 = q0 * r * r;
232 double F = 0.0;
233 if ( l == 0 ) F = 1;
234 if ( l == 1 ) F = sqrt( ( 1 + z0 ) / ( 1 + z ) );
235 if ( l == 2 ) F = sqrt( ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ) );
236 return F;
237}
238//------------------spin-------------------------------------------
239void EvtD0ToKSpi0pi0::calt1( double daug1[4], double daug2[4], double t1[4] ) {
240 double p, pq, tmp;
241 double pa[4], qa[4];
242 for ( int i = 0; i < 4; i++ )
243 {
244 pa[i] = daug1[i] + daug2[i];
245 qa[i] = daug1[i] - daug2[i];
246 }
247 p = SCADot( pa, pa );
248 pq = SCADot( pa, qa );
249 tmp = pq / p;
250 for ( int i = 0; i < 4; i++ ) { t1[i] = qa[i] - tmp * pa[i]; }
251}
252void EvtD0ToKSpi0pi0::calt2( double daug1[4], double daug2[4], double t2[4][4] ) {
253 double p, r;
254 double pa[4], t1[4];
255 calt1( daug1, daug2, t1 );
256 r = SCADot( t1, t1 ) / 3.0;
257 for ( int i = 0; i < 4; i++ ) { pa[i] = daug1[i] + daug2[i]; }
258 p = SCADot( pa, pa );
259 for ( int i = 0; i < 4; i++ )
260 {
261 for ( int j = 0; j < 4; j++ )
262 { t2[i][j] = t1[i] * t1[j] - r * ( G[i][j] - pa[i] * pa[j] / p ); }
263 }
264}
265//-------------------prop--------------------------------------------
266void EvtD0ToKSpi0pi0::propagator( double mass2, double mass, double width, double sx,
267 double prop[2] ) {
268 double a[2], b[2];
269 a[0] = 1;
270 a[1] = 0;
271 b[0] = mass2 - sx;
272 b[1] = -mass * width;
273 Com_Divide( a, b, prop );
274}
275double EvtD0ToKSpi0pi0::wid( double mass2, double mass, double sa, double sb, double sc,
276 double r2, int l ) {
277 double widm = 0.;
278 double m = sqrt( sa );
279 double tmp = sb - sc;
280 double tmp1 = sa + tmp;
281 double q = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
282 double tmp2 = mass2 + tmp;
283 double q0 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
284 double z = q * r2;
285 double z0 = q0 * r2;
286 double t = q / q0;
287 if ( l == 0 ) { widm = sqrt( t ) * mass / m; }
288 else if ( l == 1 ) { widm = t * sqrt( t ) * mass / m * ( 1 + z0 ) / ( 1 + z ); }
289 else if ( l == 2 )
290 { widm = t * t * sqrt( t ) * mass / m * ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ); }
291 return widm;
292}
293double EvtD0ToKSpi0pi0::widl1( double mass2, double mass, double sa, double sb, double sc,
294 double r2 ) {
295 double widm = 0.;
296 double m = sqrt( sa );
297 double tmp = sb - sc;
298 double tmp1 = sa + tmp;
299 double q = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
300 double tmp2 = mass2 + tmp;
301 double q0 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
302 double z = q * r2;
303 double z0 = q0 * r2;
304 double F = ( 1 + z0 ) / ( 1 + z );
305 double t = q / q0;
306 widm = t * sqrt( t ) * mass / m * F;
307 return widm;
308}
309void EvtD0ToKSpi0pi0::propagatorRBW( double mass, double width, double sa, double sb,
310 double sc, double r2, int l, double prop[2] ) {
311 double a[2], b[2];
312 double mass2 = mass * mass;
313 a[0] = 1;
314 a[1] = 0;
315 b[0] = mass2 - sa;
316 b[1] = -mass * width * wid( mass2, mass, sa, sb, sc, r2, l );
317 Com_Divide( a, b, prop );
318}
319
320void EvtD0ToKSpi0pi0::propagatorFlatte( double mass, double width, double sa,
321 double prop[2] ) {
322 double q2_Pi, q2_Ka;
323 double rhoPi[2], rhoKa[2];
324
325 q2_Pi = 0.25 * sa - mPi * mPi;
326 q2_Ka = 0.25 * sa - mKa * mKa;
327
328 if ( q2_Pi > 0 )
329 {
330 rhoPi[0] = 2.0 * sqrt( q2_Pi / sa );
331 rhoPi[1] = 0.0;
332 }
333 if ( q2_Pi <= 0 )
334 {
335 rhoPi[0] = 0.0;
336 rhoPi[1] = 2.0 * sqrt( -q2_Pi / sa );
337 }
338
339 if ( q2_Ka > 0 )
340 {
341 rhoKa[0] = 2.0 * sqrt( q2_Ka / sa );
342 rhoKa[1] = 0.0;
343 }
344 if ( q2_Ka <= 0 )
345 {
346 rhoKa[0] = 0.0;
347 rhoKa[1] = 2.0 * sqrt( -q2_Ka / sa );
348 }
349
350 double a[2], b[2];
351 a[0] = 1;
352 a[1] = 0;
353 b[0] = mass * mass - sa + 0.165 * rhoPi[1] + 0.69465 * rhoKa[1];
354 b[1] = -( 0.165 * rhoPi[0] + 0.69465 * rhoKa[0] );
355 Com_Divide( a, b, prop );
356}
357
358void EvtD0ToKSpi0pi0::rhoab( double sa, double sb, double sc, double res[2] ) {
359 double tmp = sa + sb - sc;
360 double q = 0.25 * tmp * tmp / sa - sb;
361 if ( q >= 0 )
362 {
363 res[0] = 2.0 * sqrt( q / sa );
364 res[1] = 0.0;
365 }
366 else
367 {
368 res[0] = 0.0;
369 res[1] = 2.0 * sqrt( -q / sa );
370 }
371}
372void EvtD0ToKSpi0pi0::rho4Pi( double sa, double res[2] ) {
373 double temp = 1.0 - 0.3116765584 / sa; // 0.3116765584=0.13957*0.13957*16
374 if ( temp >= 0 )
375 {
376 res[0] = sqrt( temp ) / ( 1.0 + exp( 9.8 - 3.5 * sa ) );
377 res[1] = 0.0;
378 }
379 else
380 {
381 res[0] = 0.0;
382 res[1] = sqrt( -temp ) / ( 1.0 + exp( 9.8 - 3.5 * sa ) );
383 }
384}
385
386void EvtD0ToKSpi0pi0::propagatorsigma500( double sa, double sb, double sc, double prop[2] ) {
387 double f = 0.5843 + 1.6663 * sa;
388 const double M = 0.9264; // M(f0500)
389 const double mass2 = 0.85821696; // M*M
390 const double mpi2d2 = 0.00973989245; // mass_Pion2/2 = 0.0194797849/2
391 double g1 = f * ( sa - mpi2d2 ) / ( mass2 - mpi2d2 ) * exp( ( mass2 - sa ) / 1.082 );
392 double rho1s[2], rho1M[2], rho2s[2], rho2M[2], rho1[2], rho2[2];
393 rhoab( sa, sb, sc, rho1s );
394 rhoab( mass2, sb, sc, rho1M );
395 rho4Pi( sa, rho2s );
396 rho4Pi( mass2, rho2M );
397 Com_Divide( rho1s, rho1M, rho1 );
398 Com_Divide( rho2s, rho2M, rho2 );
399 double a[2], b[2];
400 a[0] = 1.0;
401 a[1] = 0.0;
402 b[0] = mass2 - sa + M * ( g1 * rho1[1] + 0.0024 * rho2[1] );
403 b[1] = -M * ( g1 * rho1[0] + 0.0024 * rho2[0] );
404 Com_Divide( a, b, prop );
405}
406void EvtD0ToKSpi0pi0::Flatte_rhoab( double sa, double sb, double rho[2] ) {
407 double q = 1.0 - ( 4 * sb / sa );
408
409 if ( q > 0 )
410 {
411 rho[0] = sqrt( q );
412 rho[1] = 0;
413 }
414 else if ( q < 0 )
415 {
416 rho[0] = 0;
417 rho[1] = sqrt( -q );
418 }
419}
420
421void EvtD0ToKSpi0pi0::propagator980( double mass, double sx, double* sb, double prop[2] ) {
422 double gpipi1 = 2.0 / 3.0 * 0.165;
423 double gpipi2 = 1.0 / 3.0 * 0.165;
424 double gKK1 = 0.5 * 0.69465;
425 double gKK2 = 0.5 * 0.69465;
426
427 double unit[2] = { 1.0 };
428 double ci[2] = { 0, 1 };
429 double rho1[2];
430 Flatte_rhoab( sx, sb[0], rho1 );
431 double rho2[2];
432 Flatte_rhoab( sx, sb[1], rho2 );
433 double rho3[2];
434 Flatte_rhoab( sx, sb[2], rho3 );
435 double rho4[2];
436 Flatte_rhoab( sx, sb[3], rho4 );
437
438 double tmp1[2] = { gpipi1, 0 };
439 double tmp11[2];
440 double tmp2[2] = { gpipi2, 0 };
441 double tmp22[2];
442 double tmp3[2] = { gKK1, 0 };
443 double tmp33[2];
444 double tmp4[2] = { gKK2, 0 };
445 double tmp44[2];
446
447 Com_Multi( tmp1, rho1, tmp11 );
448 Com_Multi( tmp2, rho2, tmp22 );
449 Com_Multi( tmp3, rho3, tmp33 );
450 Com_Multi( tmp4, rho4, tmp44 );
451
452 double tmp5[2] = { tmp11[0] + tmp22[0] + tmp33[0] + tmp44[0],
453 tmp11[1] + tmp22[1] + tmp33[1] + tmp44[1] };
454 double tmp51[2];
455 Com_Multi( tmp5, ci, tmp51 );
456 double tmp6[2] = { mass * mass - sx - tmp51[0], -1.0 * tmp51[1] };
457
458 Com_Divide( unit, tmp6, prop );
459}
460
461void EvtD0ToKSpi0pi0::KPiSLASS( double sa, double sb, double sc, double prop[2] ) {
462 const double m1430 = 1.441;
463 const double sa0 = 2.076481; // m1430*m1430;
464 const double w1430 = 0.193;
465 const double Lass1 = 0.25 / sa0;
466 double tmp = sb - sc;
467 double tmp1 = sa0 + tmp;
468 double q0 = fabs( Lass1 * tmp1 * tmp1 - sb );
469 double tmp2 = sa + tmp;
470 double qs = 0.25 * tmp2 * tmp2 / sa - sb;
471 double q = sqrt( qs );
472 double width = w1430 * q * m1430 / sqrt( sa * q0 );
473 double temp_R = atan( m1430 * width / ( sa0 - sa ) );
474 if ( temp_R < 0 ) temp_R += math_pi;
475 double deltaR = -109.7 * math_pi / 180.0 + temp_R;
476 double temp_F =
477 atan( 0.226 * q / ( 2.0 - 3.8194 * qs ) ); // 2.0*0.113 = 0.226; -33.8*0.113 = -3.8194
478 if ( temp_F < 0 ) temp_F += math_pi;
479 double deltaF = 0.1 * math_pi / 180.0 + temp_F;
480 double deltaS = deltaR + 2.0 * deltaF;
481 double t1 = 0.96 * sin( deltaF );
482 double t2 = sin( deltaR );
483 double CF[2], CS[2];
484 CF[0] = cos( deltaF );
485 CF[1] = sin( deltaF );
486 CS[0] = cos( deltaS );
487 CS[1] = sin( deltaS );
488 prop[0] = t1 * CF[0] + t2 * CS[0];
489 prop[1] = t1 * CF[1] + t2 * CS[1];
490}
491//------------GS---used by rho----------------------------
492void EvtD0ToKSpi0pi0::propagatorGS( double mass2, double mass, double width, double sa,
493 double sb, double sc, double r2, double prop[2] ) {
494 double a[2], b[2];
495 double tmp = sb - sc;
496 double tmp1 = sa + tmp;
497 double q2 = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
498
499 double tmp2 = mass2 + tmp;
500 double q02 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
501
502 double q = sqrt( q2 );
503 double q0 = sqrt( q02 );
504 double m = sqrt( sa );
505 double q03 = q0 * q02;
506 double tmp3 = log( mass + 2 * q0 ) + 1.2926305904; // log(mpi0+mpip) = -1.2926305904;
507
508 double h = GS1 * q / m * ( log( m + 2 * q ) + 1.2926305904 );
509 double h0 = GS1 * q0 / mass * tmp3;
510 double dh = h0 * ( 0.125 / q02 - 0.5 / mass2 ) + GS3 / mass2;
511 double d = GS2 / q02 * tmp3 + GS3 * mass / q0 - GS4 * mass / q03;
512 double f = mass2 / q03 * ( q2 * ( h - h0 ) + ( mass2 - sa ) * q02 * dh );
513
514 a[0] = 1.0 + d * width / mass;
515 a[1] = 0.0;
516 b[0] = mass2 - sa + width * f;
517 b[1] = -mass * width * widl1( mass2, mass, sa, sb, sc, r2 );
518 Com_Divide( a, b, prop );
519}
520
521double EvtD0ToKSpi0pi0::DDalitz( double P1[4], double P2[4], double P3[4], int Ang,
522 double mass ) {
523 double pR[4], pD[4];
524 double temp_PDF, v_re;
525 temp_PDF = 0.0;
526 v_re = 0.0;
527 double B[2], s1, s2, s3, sR, sD;
528 for ( int i = 0; i < 4; i++ )
529 {
530 pR[i] = P1[i] + P2[i];
531 pD[i] = pR[i] + P3[i];
532 }
533 s1 = SCADot( P1, P1 );
534 s2 = SCADot( P2, P2 );
535 s3 = SCADot( P3, P3 );
536 sR = SCADot( pR, pR );
537 sD = SCADot( pD, pD );
538 int G[4][4];
539 for ( int i = 0; i != 4; i++ )
540 {
541 for ( int j = 0; j != 4; j++ )
542 {
543 if ( i == j )
544 {
545 if ( i == 0 ) G[i][j] = 1;
546 else G[i][j] = -1;
547 }
548 else G[i][j] = 0;
549 }
550 }
551 if ( Ang == 0 )
552 {
553 B[0] = 1;
554 B[1] = 1;
555 temp_PDF = 1;
556 }
557 if ( Ang == 1 )
558 {
559 B[0] = barrier( 1, sR, s1, s2, 3.0, mass );
560 B[1] = barrier( 1, sD, sR, s3, 5.0, mD0 );
561 double t1[4], T1[4];
562 calt1( P1, P2, t1 );
563 calt1( pR, P3, T1 );
564 temp_PDF = 0;
565 for ( int i = 0; i < 4; i++ ) { temp_PDF += t1[i] * T1[i] * G[i][i]; }
566 }
567 if ( Ang == 2 )
568 {
569 B[0] = barrier( 2, sR, s1, s2, 3.0, mass );
570 B[1] = barrier( 2, sD, sR, s3, 5.0, mD0 );
571 double t2[4][4], T2[4][4];
572 calt2( P1, P2, t2 );
573 calt2( pR, P3, T2 );
574 temp_PDF = 0;
575 for ( int i = 0; i < 4; i++ )
576 {
577 for ( int j = 0; j < 4; j++ ) { temp_PDF += t2[i][j] * T2[j][i] * G[i][i] * G[j][j]; }
578 }
579 }
580 v_re = temp_PDF * B[0] * B[1];
581 return v_re;
582}
583
584void EvtD0ToKSpi0pi0::rhoMTX( int i, int j, double s, double Rho[2] ) {
585
586 double rhoijx;
587 double rhoijy;
588 double mpi = 0.13957;
589 if ( i == j && i == 0 )
590 {
591 double m2 = 0.13957 * 0.13957;
592 if ( ( 1 - ( 4 * m2 ) / s ) > 0 )
593 {
594 rhoijx = sqrt( 1.0f - ( 4 * m2 ) / s );
595 rhoijy = 0;
596 }
597 else
598 {
599 rhoijy = sqrt( ( 4 * m2 ) / s - 1.0f );
600 rhoijx = 0;
601 }
602 }
603 if ( i == j && i == 1 )
604 {
605 double m2 = 0.49368 * 0.49368;
606 if ( ( 1 - ( 4 * m2 ) / s ) > 0 )
607 {
608 rhoijx = sqrt( 1.0f - ( 4 * m2 ) / s );
609 rhoijy = 0;
610 }
611 else
612 {
613 rhoijy = sqrt( ( 4 * m2 ) / s - 1.0f );
614 rhoijx = 0;
615 }
616 }
617 if ( i == j && i == 2 )
618 {
619 rhoijx = CalRho4pi( s );
620 rhoijy = 0;
621 }
622 if ( i == j && i == 3 )
623 {
624 double m2 = 0.547862 * 0.547862;
625 if ( ( 1 - ( 4 * m2 ) / s ) > 0 )
626 {
627 rhoijx = sqrt( 1.0f - ( 4 * m2 ) / s );
628 rhoijy = 0;
629 }
630 else
631 {
632 rhoijy = sqrt( ( 4 * m2 ) / s - 1.0f );
633 rhoijx = 0;
634 }
635 }
636 if ( i == j && i == 4 )
637 {
638 double m_1 = 0.547862;
639 double m_2 = 0.95778;
640 double mp2 = ( m_1 + m_2 ) * ( m_1 + m_2 );
641 double mm2 = ( m_1 - m_2 ) * ( m_1 - m_2 );
642 if ( ( 1 - mp2 / s ) > 0 )
643 {
644 rhoijx = sqrt( 1.0f - mp2 / s );
645 rhoijy = 0;
646 }
647 else
648 {
649 rhoijy = sqrt( mp2 / s - 1.0f );
650 rhoijx = 0;
651 }
652 }
653
654 if ( i != j )
655 {
656 rhoijx = 0;
657 rhoijy = 0;
658 }
659 Rho[0] = rhoijx;
660 Rho[1] = rhoijy;
661}
662
663/* Kij = (sum_a gigj/(ma^2-s) + fij(1-s0)/(s-s0))((s-0.5sampi2)(1-sa0)/(s-sa0)) */
664void EvtD0ToKSpi0pi0::KMTX( int i, int j, double s, double KM[2] ) {
665
666 double Kijx;
667 double Kijy;
668 double mpi = 0.13957;
669 double m[5] = { 0.65100, 1.20360, 1.55817, 1.21000, 1.82206 };
670
671 double g1[5] = { 0.22889, -0.55377, 0.00000, -0.39899, -0.34639 };
672 double g2[5] = { 0.94128, 0.55095, 0.00000, 0.39065, 0.31503 };
673 double g3[5] = { 0.36856, 0.23888, 0.55639, 0.18340, 0.18681 };
674 double g4[5] = { 0.33650, 0.40907, 0.85679, 0.19906, -0.00984 };
675 double g5[5] = { 0.18171, -0.17558, -0.79658, -0.00355, 0.22358 };
676
677 double f1[5] = { 0.23399, 0.15044, -0.20545, 0.32825, 0.35412 };
678
679 double upimag[5] = { 0, 0, 0, 0, 0 };
680
681 for ( int k = 0; k < 5; k++ ) { upimag[k] = 0; }
682 double ss0 = -3.92637;
683 double sA = 1.0; // v1
684 double sA0 = -0.15;
685
686 if ( i == 0 || j == 0 )
687 {
688 Kijx = ( g1[i] * g1[j] / ( m[0] * m[0] - s ) + g2[i] * g2[j] / ( m[1] * m[1] - s ) +
689 g3[i] * g3[j] / ( m[2] * m[2] - s ) + g4[i] * g4[j] / ( m[3] * m[3] - s ) +
690 g5[i] * g5[j] / ( m[4] * m[4] - s ) + f1[j] * ( 1 - ss0 ) / ( s - ss0 ) ) *
691 ( 1 - sA0 ) / ( s - sA0 ) * ( s - sA * mpi * mpi * 0.5 );
692 Kijy =
693 ( g1[i] * g1[j] * upimag[0] + g2[i] * g2[j] * upimag[1] + g3[i] * g3[j] * upimag[2] +
694 g4[i] * g4[j] * upimag[3] + g5[i] * g5[j] * upimag[4] ) *
695 ( 1 - sA0 ) / ( s - sA0 ) * ( s - sA * mpi * mpi * 0.5 );
696 }
697
698 else
699 {
700 Kijx = ( g1[i] * g1[j] / ( m[0] * m[0] - s ) + g2[i] * g2[j] / ( m[1] * m[1] - s ) +
701 g3[i] * g3[j] / ( m[2] * m[2] - s ) + g4[i] * g4[j] / ( m[3] * m[3] - s ) +
702 g5[i] * g5[j] / ( m[4] * m[4] - s ) ) *
703 ( 1 - sA0 ) / ( s - sA0 ) * ( s - sA * mpi * mpi * 0.5 );
704 Kijy =
705 ( g1[i] * g1[j] * upimag[0] + g2[i] * g2[j] * upimag[1] + g3[i] * g3[j] * upimag[2] +
706 g4[i] * g4[j] * upimag[3] + g5[i] * g5[j] * upimag[4] ) *
707 ( 1 - sA0 ) / ( s - sA0 ) * ( s - sA * mpi * mpi * 0.5 );
708 }
709
710 KM[0] = Kijx;
711 KM[1] = Kijy;
712}
713
714void EvtD0ToKSpi0pi0::IMTX( int i, int j, double IMTX[2] ) {
715
716 double Iijx;
717 double Iijy;
718 if ( i == j )
719 {
720 Iijx = 1;
721 Iijy = 0;
722 }
723 else
724 {
725 Iijx = 0;
726 Iijy = 0;
727 }
728 IMTX[0] = Iijx;
729 IMTX[1] = Iijy;
730}
731
732/* F = I - i*K*rho */
733void EvtD0ToKSpi0pi0::FMTX( double Kijx, double Kijy, double rhojjx, double rhojjy, int i,
734 int j, double FM[2] ) {
735
736 double Fijx;
737 double Fijy;
738
739 double tmpx = Kijx * rhojjx - Kijy * rhojjy;
740 double tmpy = Kijy * rhojjx + Kijx * rhojjy;
741
742 double imtx[2];
743 IMTX( i, j, imtx );
744 Fijx = imtx[0] + tmpy;
745 Fijy = -tmpx;
746
747 FM[0] = Fijx;
748 FM[1] = Fijy;
749}
750
751void EvtD0ToKSpi0pi0::PVTR( int ID, double s, double PV[2] ) {
752
753 double VPix;
754 double VPiy;
755 double m[5] = { 0.65100, 1.20360, 1.55817, 1.21000, 1.82206 };
756
757 double g[5][5] = { { 0.22889, -0.55377, 0.00000, -0.39899, -0.34639 },
758 { 0.94128, 0.55095, 0.00000, 0.39065, 0.31503 },
759 { 0.36856, 0.23888, 0.55639, 0.18340, 0.18681 },
760 { 0.33650, 0.40907, 0.85679, 0.19906, -0.00984 },
761 { 0.18171, -0.17558, -0.79658, -0.00355, 0.22358 } };
762
763 double betax[5], betay[5], fprodx[5], fprody[5];
764
765 betax[0] = 8.5 * cos( 68.5 * 3.1415926 / 180.0 );
766 betay[0] = 8.5 * sin( 68.5 * 3.1415926 / 180.0 );
767 betax[1] = 12.2 * cos( 24.0 * 3.1415926 / 180.0 );
768 betay[1] = 12.2 * sin( 24.0 * 3.1415926 / 180.0 );
769 betax[2] = 29.2 * cos( -0.1 * 3.1415926 / 180.0 );
770 betay[2] = 29.2 * sin( -0.1 * 3.1415926 / 180.0 );
771 betax[3] = 10.8 * cos( -51.9 * 3.1415926 / 180.0 );
772 betay[3] = 10.8 * sin( -51.9 * 3.1415926 / 180.0 );
773 betax[4] = 0.0;
774 betay[4] = 0.0;
775
776 fprodx[0] = 8.0 * cos( -126.0 * 3.1415926 / 180.0 );
777 fprody[0] = 8.0 * sin( -126.0 * 3.1415926 / 180.0 );
778 fprodx[1] = 26.3 * cos( -152.3 * 3.1415926 / 180.0 );
779 fprody[1] = 26.3 * sin( -152.3 * 3.1415926 / 180.0 );
780 fprodx[2] = 33.0 * cos( -93.2 * 3.1415926 / 180.0 );
781 fprody[2] = 33.0 * sin( -93.2 * 3.1415926 / 180.0 );
782 fprodx[3] = 26.2 * cos( -121.4 * 3.1415926 / 180.0 );
783 fprody[3] = 26.2 * sin( -121.4 * 3.1415926 / 180.0 );
784 fprodx[4] = 0.0;
785 fprody[4] = 0.0;
786
787 double V0x = 0.0, V0y = 0.0, V1x = 0.0, V1y = 0.0;
788 double s0_prod = -0.07;
789
790 for ( int k = 0; k < 5; k++ )
791 {
792 V0x += betax[k] * g[k][ID] / ( m[k] * m[k] - s );
793 V0y += betay[k] * g[k][ID] / ( m[k] * m[k] - s );
794 }
795 V1x += ( 1. - s0_prod ) / ( s - s0_prod ) * fprodx[ID];
796 V1y += ( 1. - s0_prod ) / ( s - s0_prod ) * fprody[ID];
797
798 VPix = V0x + V1x;
799 VPiy = V0y + V1y;
800
801 PV[0] = VPix;
802 PV[1] = VPiy;
803}
804
805/* inverse for Matrix (I - i*rho*K) using LUP */
806void EvtD0ToKSpi0pi0::FINVMTX( double s, double* FINVx, double* FINVy ) {
807
808 int P[5] = { 0, 1, 2, 3, 4 };
809
810 double Fx[5][5];
811 double Fy[5][5];
812
813 double Ux[5][5];
814 double Uy[5][5];
815 double Lx[5][5];
816 double Ly[5][5];
817
818 double UIx[5][5];
819 double UIy[5][5];
820 double LIx[5][5];
821 double LIy[5][5];
822
823 double rho[2];
824 double KM[2];
825 for ( int k = 0; k < 5; k++ )
826 {
827 rhoMTX( k, k, s, rho );
828 double rhokkx = rho[0];
829 double rhokky = rho[1];
830 Ux[k][k] = rhokkx;
831 Uy[k][k] = rhokky;
832 for ( int l = k; l < 5; l++ )
833 {
834 KMTX( k, l, s, KM );
835 double Kklx = KM[0];
836 double Kkly = KM[1];
837 Lx[k][l] = Kklx;
838 Ly[k][l] = Kkly;
839 Lx[l][k] = Lx[k][l];
840 Ly[l][k] = Ly[k][l];
841 }
842 }
843
844 double AA[2];
845 for ( int k = 0; k < 5; k++ )
846 {
847 for ( int l = 0; l < 5; l++ )
848 {
849 FMTX( Lx[k][l], Ly[k][l], Ux[l][l], Uy[l][l], k, l, AA );
850 double Fklx = AA[0];
851 double Fkly = AA[1];
852 Fx[k][l] = Fklx;
853 Fy[k][l] = Fkly;
854 }
855 }
856
857 for ( int k = 0; k < 5; k++ )
858 {
859 double tmprM = ( Fx[k][k] * Fx[k][k] + Fy[k][k] * Fy[k][k] );
860 int tmpID = 0;
861 for ( int l = k; l < 5; l++ )
862 {
863 double tmprF = ( Fx[l][k] * Fx[l][k] + Fy[l][k] * Fy[l][k] );
864 if ( tmprM <= tmprF )
865 {
866 tmprM = tmprF;
867 tmpID = l;
868 }
869 }
870
871 int tmpP = P[k];
872 P[k] = P[tmpID];
873 P[tmpID] = tmpP;
874
875 for ( int l = 0; l < 5; l++ )
876 {
877
878 double tmpFx = Fx[k][l];
879 double tmpFy = Fy[k][l];
880
881 Fx[k][l] = Fx[tmpID][l];
882 Fy[k][l] = Fy[tmpID][l];
883
884 Fx[tmpID][l] = tmpFx;
885 Fy[tmpID][l] = tmpFy;
886 }
887 for ( int l = k + 1; l < 5; l++ )
888 {
889 double rFkk = Fx[k][k] * Fx[k][k] + Fy[k][k] * Fy[k][k];
890 double Fxlk = Fx[l][k];
891 double Fylk = Fy[l][k];
892 double Fxkk = Fx[k][k];
893 double Fykk = Fy[k][k];
894 Fx[l][k] = ( Fxlk * Fxkk + Fylk * Fykk ) / rFkk;
895 Fy[l][k] = ( Fylk * Fxkk - Fxlk * Fykk ) / rFkk;
896 for ( int m = k + 1; m < 5; m++ )
897 {
898 Fx[l][m] = Fx[l][m] - ( Fx[l][k] * Fx[k][m] - Fy[l][k] * Fy[k][m] );
899 Fy[l][m] = Fy[l][m] - ( Fx[l][k] * Fy[k][m] + Fy[l][k] * Fx[k][m] );
900 }
901 }
902 }
903
904 for ( int k = 0; k < 5; k++ )
905 {
906 for ( int l = 0; l < 5; l++ )
907 {
908 if ( k == l )
909 {
910 Lx[k][k] = 1;
911 Ly[k][k] = 0;
912 Ux[k][k] = Fx[k][k];
913 Uy[k][k] = Fy[k][k];
914 }
915 if ( k > l )
916 {
917 Lx[k][l] = Fx[k][l];
918 Ly[k][l] = Fy[k][l];
919 Ux[k][l] = 0;
920 Uy[k][l] = 0;
921 }
922 if ( k < l )
923 {
924 Ux[k][l] = Fx[k][l];
925 Uy[k][l] = Fy[k][l];
926 Lx[k][l] = 0;
927 Ly[k][l] = 0;
928 }
929 }
930 }
931
932 for ( int k = 0; k < 5; k++ )
933 {
934
935 LIx[k][k] = 1;
936 LIy[k][k] = 0;
937
938 double rUkk = Ux[k][k] * Ux[k][k] + Uy[k][k] * Uy[k][k];
939 UIx[k][k] = Ux[k][k] / rUkk;
940 UIy[k][k] = -1.0f * Uy[k][k] / rUkk;
941
942 for ( int l = ( k + 1 ); l < 5; l++ )
943 {
944 LIx[k][l] = 0;
945 LIy[k][l] = 0;
946 UIx[l][k] = 0;
947 UIy[l][k] = 0;
948 }
949 for ( int l = ( k - 1 ); l >= 0; l-- )
950 { // U-1
951 double sx = 0;
952 double c_sx = 0;
953 double sy = 0;
954 double c_sy = 0;
955 for ( int m = l + 1; m <= k; m++ )
956 {
957 sx = sx - c_sx;
958 double sx_tmp = sx + Ux[l][m] * UIx[m][k] - Uy[l][m] * UIy[m][k];
959 c_sx = ( sx_tmp - sx ) - ( Ux[l][m] * UIx[m][k] - Uy[l][m] * UIy[m][k] );
960 sx = sx_tmp;
961
962 sy = sy - c_sy;
963 double sy_tmp = sy + Ux[l][m] * UIy[m][k] + Uy[l][m] * UIx[m][k];
964 c_sy = ( sy_tmp - sy ) - ( Ux[l][m] * UIy[m][k] + Uy[l][m] * UIx[m][k] );
965 sy = sy_tmp;
966 }
967 UIx[l][k] = -1.0f * ( UIx[l][l] * sx - UIy[l][l] * sy );
968 UIy[l][k] = -1.0f * ( UIy[l][l] * sx + UIx[l][l] * sy );
969 }
970
971 for ( int l = k + 1; l < 5; l++ )
972 { // L-1
973 double sx = 0;
974 double c_sx = 0;
975 double sy = 0;
976 double c_sy = 0;
977 for ( int m = k; m < l; m++ )
978 {
979 sx = sx - c_sx;
980 double sx_tmp = sx + Lx[l][m] * LIx[m][k] - Ly[l][m] * LIy[m][k];
981 c_sx = ( sx_tmp - sx ) - ( Lx[l][m] * LIx[m][k] - Ly[l][m] * LIy[m][k] );
982 sx = sx_tmp;
983
984 sy = sy - c_sy;
985 double sy_tmp = sy + Lx[l][m] * LIy[m][k] + Ly[l][m] * LIx[m][k];
986 c_sy = ( sy_tmp - sy ) - ( Lx[l][m] * LIy[m][k] + Ly[l][m] * LIx[m][k] );
987 sy = sy_tmp;
988 }
989 LIx[l][k] = -1.0f * sx;
990 LIy[l][k] = -1.0f * sy;
991 }
992 }
993 for ( int m = 0; m < 5; m++ )
994 {
995 double resX = 0;
996 double c_resX = 0;
997 double resY = 0;
998 double c_resY = 0;
999 for ( int k = 0; k < 5; k++ )
1000 {
1001 for ( int l = 0; l < 5; l++ )
1002 {
1003 double Plm = 0;
1004 if ( P[l] == m ) Plm = 1;
1005
1006 resX = resX - c_resX;
1007 double resX_tmp = resX + ( UIx[0][k] * LIx[k][l] - UIy[0][k] * LIy[k][l] ) * Plm;
1008 c_resX =
1009 ( resX_tmp - resX ) - ( ( UIx[0][k] * LIx[k][l] - UIy[0][k] * LIy[k][l] ) * Plm );
1010 resX = resX_tmp;
1011
1012 resY = resY - c_resY;
1013 double resY_tmp = resY + ( UIx[0][k] * LIy[k][l] + UIy[0][k] * LIx[k][l] ) * Plm;
1014 c_resY =
1015 ( resY_tmp - resY ) - ( ( UIx[0][k] * LIy[k][l] + UIy[0][k] * LIx[k][l] ) * Plm );
1016 resY = resY_tmp;
1017 }
1018 }
1019 FINVx[m] = resX;
1020 FINVy[m] = resY;
1021 }
1022}
1023
1024void EvtD0ToKSpi0pi0::Fvector( double sa, double s0, double Fv[2] ) {
1025
1026 double outputx = 0;
1027 double outputy = 0;
1028
1029 double FINVx[5] = { 0, 0, 0, 0, 0 };
1030 double FINVy[5] = { 0, 0, 0, 0, 0 };
1031
1032 FINVMTX( sa, FINVx, FINVy );
1033
1034 double resx = 0;
1035 double c_resx = 0;
1036 double resy = 0;
1037 double c_resy = 0;
1038 double pv[2];
1039 for ( int j = 0; j < 5; j++ )
1040 {
1041 PVTR( j, sa, pv );
1042 double Plx = pv[0];
1043 double Ply = pv[1];
1044 resx = resx - c_resx;
1045 double resx_tmp = resx + ( FINVx[j] * Plx - FINVy[j] * Ply );
1046 c_resx = ( resx_tmp - resx ) - ( FINVx[j] * Plx - FINVy[j] * Ply );
1047 resx = resx_tmp;
1048
1049 resy = resy - c_resy;
1050 double resy_tmp = resy + ( FINVx[j] * Ply + FINVy[j] * Plx );
1051 c_resy = ( resy_tmp - resy ) - ( FINVx[j] * Ply + FINVy[j] * Plx );
1052 resy = resy_tmp;
1053 }
1054 outputx = resx;
1055 outputy = resy;
1056 Fv[0] = outputx;
1057 Fv[1] = outputy;
1058}
1059void EvtD0ToKSpi0pi0::calEva( double* Ks0, double* Pi01, double* Pi02, double* mass1,
1060 double* width1, double* amp, double* phase, int* g0, int* spin,
1061 int* modetype, int nstates, double& Result, double* r0,
1062 double* r1 ) {
1063
1064 double P12[4], P23[4], P13[4];
1065 double cof[2], amp_PDF[2], PDF[2];
1066 double Amp_KPiS[2];
1067 double Fv[2];
1068 double s1, s2, s3;
1069 double Realpipis, Imagpipis;
1070
1071 double s12, s13, s23;
1072 for ( int i = 0; i < 4; i++ )
1073 {
1074 P12[i] = Ks0[i] + Pi01[i];
1075 P13[i] = Ks0[i] + Pi02[i];
1076 P23[i] = Pi01[i] + Pi02[i];
1077 }
1078 s1 = SCADot( Ks0, Ks0 );
1079 s2 = SCADot( Pi01, Pi01 );
1080 s3 = SCADot( Pi02, Pi02 );
1081
1082 s12 = SCADot( P12, P12 );
1083 s13 = SCADot( P13, P13 );
1084 s23 = SCADot( P23, P23 );
1085 double pro[2], temp_PDF, pro1[2], temp_PDF1, pro2[2], temp_PDF2, amp_tmp[2];
1086 double mass1sq;
1087 amp_PDF[0] = 0;
1088 amp_PDF[1] = 0;
1089 PDF[0] = 0;
1090 PDF[1] = 0;
1091 amp_tmp[0] = 0;
1092 amp_tmp[1] = 0;
1093 for ( int i = 0; i < nstates; i++ )
1094 {
1095 amp_tmp[0] = 0;
1096 amp_tmp[1] = 0;
1097 mass1sq = mass1[i] * mass1[i];
1098 cof[0] = amp[i] * cos( phase[i] );
1099 cof[1] = amp[i] * sin( phase[i] );
1100 temp_PDF = 0;
1101
1102 if ( modetype[i] == 12 )
1103 {
1104 temp_PDF1 = DDalitz( Ks0, Pi01, Pi02, spin[i], mass1[i] );
1105 if ( g0[i] == 1 )
1106 propagatorRBW( mass1[i], width1[i], s12, s1, s2, rRes2, spin[i], pro1 );
1107 if ( g0[i] == 4 ) KPiSLASS( s12, s1, s2, pro1 );
1108 if ( g0[i] == 0 )
1109 {
1110 pro1[0] = 1;
1111 pro1[1] = 0;
1112 }
1113
1114 temp_PDF2 = DDalitz( Ks0, Pi02, Pi01, spin[i], mass1[i] );
1115 if ( g0[i] == 1 )
1116 propagatorRBW( mass1[i], width1[i], s13, s1, s3, rRes2, spin[i], pro2 );
1117 if ( g0[i] == 4 ) KPiSLASS( s13, s1, s3, pro2 );
1118 if ( g0[i] == 0 )
1119 {
1120 pro2[0] = 1;
1121 pro2[1] = 0;
1122 }
1123 amp_tmp[0] = temp_PDF1 * pro1[0] + temp_PDF2 * pro2[0];
1124 amp_tmp[1] = temp_PDF1 * pro1[1] + temp_PDF2 * pro2[1];
1125 }
1126
1127 if ( modetype[i] == 23 )
1128 {
1129 temp_PDF = DDalitz( Pi01, Pi02, Ks0, spin[i], mass1[i] );
1130 if ( g0[i] == 6 )
1131 {
1132 Fvector( s23, -0.07, Fv );
1133 Realpipis = Fv[0];
1134 Imagpipis = Fv[1];
1135 amp_tmp[0] = temp_PDF * Realpipis;
1136 amp_tmp[1] = temp_PDF * Imagpipis;
1137 }
1138 if ( g0[i] == 4 ) propagatorFlatte( mass1[i], width1[i], s23, pro ); // Only for f0(980)
1139 if ( g0[i] == 2 ) propagatorRBW( mass1[i], width1[i], s23, s2, s3, rRes2, spin[i], pro );
1140 if ( g0[i] == 0 )
1141 {
1142 pro[0] = 1;
1143 pro[1] = 0;
1144 }
1145 if ( g0[i] == 500 ) propagatorsigma500( s23, s2, s3, pro );
1146 if ( g0[i] != 6 ) amp_tmp[0] = temp_PDF * pro[0];
1147 if ( g0[i] != 6 ) amp_tmp[1] = temp_PDF * pro[1];
1148 }
1149
1150 if ( modetype[i] == 132 )
1151 {
1152 KPiSLASS( s13, s1, s3, Amp_KPiS );
1153 amp_tmp[0] = Amp_KPiS[0];
1154 amp_tmp[1] = Amp_KPiS[1];
1155 }
1156
1157 Com_Multi( amp_tmp, cof, amp_PDF );
1158 PDF[0] += amp_PDF[0];
1159 PDF[1] += amp_PDF[1];
1160 }
1161 double value = PDF[0] * PDF[0] + PDF[1] * PDF[1];
1162 if ( value <= 0 ) value = 1e-20;
1163 Result = value;
1164}
double P(RecMdcKalTrack *trk)
double mass
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
TFile * f1
EvtComplex exp(const EvtComplex &c)
double mpi
*******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
XmlRpcServer s
****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
TCrossPart * CS
Definition Mcgpj.cxx:51
***************************************************************************************Pseudo Class RRes *****************************************************************************************Parameters and physical constants **Maarten sept ************************************************************************DOUBLE PRECISION xsmu **************************************************************************PARTICLE DATA ** Rho(770) and Omega(782) are taken from CMD-2 F_pi fit *(hep-ex/9904027)
static const double radToDegrees
Definition EvtConst.hh:29
void getName(std::string &name)
void decay(EvtParticle *p)
EvtDecayBase * clone()
virtual ~EvtD0ToKSpi0pi0()
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)
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
double double * m2
Definition qcdloop1.h:83
int t()
Definition t.c:1