evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
EvtDToKpienu.cpp
Go to the documentation of this file.
1 
2 /***********************************************************************
3 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4 * *
5 * This file is part of EvtGen. *
6 * *
7 * EvtGen is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * EvtGen is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19 ***********************************************************************/
20 
22 
23 #include "EvtGenBase/EvtComplex.hh"
25 #include "EvtGenBase/EvtGenKine.hh"
26 #include "EvtGenBase/EvtPDL.hh"
28 #include "EvtGenBase/EvtPatches.hh"
29 #include "EvtGenBase/EvtReport.hh"
30 
31 std::string EvtDToKpienu::getName()
32 {
33  return "DToKpienu";
34 }
35 
37 {
38  return new EvtDToKpienu;
39 }
40 
42 {
43  checkNArg( 0 );
44  checkNDaug( 4 );
48 
49  EvtGenReport( EVTGEN_INFO, "EvtGen" )
50  << "EvtDToKpienu ==> Initialization !" << std::endl;
51  nAmps = 2;
52 
53  rS = -11.57; // S-wave
54  rS1 = 0.08;
55  a_delta = 1.94;
56  b_delta = -0.81;
57  m0_1430_S = 1.425;
58  width0_1430_S = 0.270;
59  type[0] = 0;
60 
61  mV = 1.81;
62  mA = 2.61;
63  V_0 = 1.411;
64  A1_0 = 1;
65  A2_0 = 0.788;
66 
67  m0 = 0.8946; // P-wave K*
68  width0 = 0.04642;
69  rBW = 3.07;
70  rho = 1;
71  phi = 0;
72  type[1] = 1;
73 
74  m0_1410 = 1.414; // P-wave K*(1410)
75  width0_1410 = 0.232;
76  rho_1410 = 0.1;
77  phi_1410 = 0.;
78  type[2] = 2;
79 
80  TV_0 = 1; // D-wave K*2(1430)
81  T1_0 = 1;
82  T2_0 = 1;
83  m0_1430 = 1.4324;
84  width0_1430 = 0.109;
85  rho_1430 = 15;
86  phi_1430 = 0;
87  type[3] = 3;
88 
89  mD = 1.86962;
90  mPi = 0.13957;
91  mK = 0.49368;
92  Pi = atan2( 0.0, -1.0 );
93  root2 = sqrt( 2. );
94  root2d3 = sqrt( 2. / 3 );
95  root1d2 = sqrt( 0.5 );
96  root3d2 = sqrt( 1.5 );
97 }
98 
100 {
101  /*
102  * This piece of code could in principle be used to calculate maximum
103  * probablity on fly. But as it uses high number of points and model
104  * deals with single final state, we keep hardcoded number for now rather
105  * than adapting code to work here.
106 
107  double maxprob = 0.0;
108  for(int ir=0;ir<=60000000;ir++){
109  p->initializePhaseSpace(getNDaug(),getDaugs());
110  EvtVector4R _K = p->getDaug(0)->getP4();
111  EvtVector4R _pi = p->getDaug(1)->getP4();
112  EvtVector4R _e = p->getDaug(2)->getP4();
113  EvtVector4R _nu = p->getDaug(3)->getP4();
114  int pid = EvtPDL::getStdHep(p->getDaug(0)->getId());
115  int charm;
116  if(pid == -321) charm = 1;
117  else charm = -1;
118  double m2, q2, cosV, cosL, chi;
119  KinVGen(_K, _pi, _e, _nu, charm, m2, q2, cosV, cosL, chi);
120  double _prob = calPDF(m2, q2, cosV, cosL, chi);
121  if(_prob>maxprob) {
122  maxprob=_prob;
123  EvtGenReport(EVTGEN_INFO,"EvtGen") << "Max PDF = " << ir << " charm= " << charm << " prob= "
124  << _prob << std::endl;
125  }
126  }
127  EvtGenReport(EVTGEN_INFO,"EvtGen") << "Max!!!!!!!!!!! " << maxprob<< std::endl;
128  */
129  setProbMax( 22750.0 );
130 }
131 
133 {
135  EvtVector4R K = p->getDaug( 0 )->getP4();
136  EvtVector4R pi = p->getDaug( 1 )->getP4();
137  EvtVector4R e = p->getDaug( 2 )->getP4();
138  EvtVector4R nu = p->getDaug( 3 )->getP4();
139 
140  int pid = EvtPDL::getStdHep( p->getDaug( 0 )->getId() );
141  int charm;
142  if ( pid == -321 ) {
143  charm = 1;
144  } else {
145  charm = -1;
146  }
147  double m2, q2, cosV, cosL, chi;
148  KinVGen( K, pi, e, nu, charm, m2, q2, cosV, cosL, chi );
149  double prob = calPDF( m2, q2, cosV, cosL, chi );
150  setProb( prob );
151  return;
152 }
153 
154 void EvtDToKpienu::KinVGen( const EvtVector4R& vp4_K, const EvtVector4R& vp4_Pi,
155  const EvtVector4R& vp4_Lep, const EvtVector4R& vp4_Nu,
156  const int charm, double& m2, double& q2,
157  double& cosV, double& cosL, double& chi ) const
158 {
159  EvtVector4R vp4_KPi = vp4_K + vp4_Pi;
160  EvtVector4R vp4_W = vp4_Lep + vp4_Nu;
161 
162  m2 = vp4_KPi.mass2();
163  q2 = vp4_W.mass2();
164 
165  EvtVector4R boost;
166  boost.set( vp4_KPi.get( 0 ), -vp4_KPi.get( 1 ), -vp4_KPi.get( 2 ),
167  -vp4_KPi.get( 3 ) );
168  EvtVector4R vp4_Kp = boostTo( vp4_K, boost );
169  cosV = vp4_Kp.dot( vp4_KPi ) / ( vp4_Kp.d3mag() * vp4_KPi.d3mag() );
170 
171  boost.set( vp4_W.get( 0 ), -vp4_W.get( 1 ), -vp4_W.get( 2 ), -vp4_W.get( 3 ) );
172  EvtVector4R vp4_Lepp = boostTo( vp4_Lep, boost );
173  cosL = vp4_Lepp.dot( vp4_W ) / ( vp4_Lepp.d3mag() * vp4_W.d3mag() );
174 
175  EvtVector4R V = vp4_KPi / vp4_KPi.d3mag();
176  EvtVector4R C = vp4_Kp.cross( V );
177  C /= C.d3mag();
178  EvtVector4R D = vp4_Lepp.cross( V );
179  D /= D.d3mag();
180  double sinx = C.cross( V ).dot( D );
181  double cosx = C.dot( D );
182  chi = sinx > 0 ? acos( cosx ) : -acos( cosx );
183  if ( charm == -1 )
184  chi = -chi;
185 }
186 
187 double EvtDToKpienu::calPDF( const double m2, const double q2, const double cosV,
188  const double cosL, const double chi ) const
189 {
190  double m = sqrt( m2 );
191  double q = sqrt( q2 );
192 
193  // begin to calculate form factor
194  EvtComplex F10( 0.0, 0.0 );
195  EvtComplex F11( 0.0, 0.0 );
196  EvtComplex F21( 0.0, 0.0 );
197  EvtComplex F31( 0.0, 0.0 );
198  EvtComplex F12( 0.0, 0.0 );
199  EvtComplex F22( 0.0, 0.0 );
200  EvtComplex F32( 0.0, 0.0 );
201 
202  EvtComplex f10( 0.0, 0.0 );
203  EvtComplex f11( 0.0, 0.0 );
204  EvtComplex f21( 0.0, 0.0 );
205  EvtComplex f31( 0.0, 0.0 );
206  EvtComplex f12( 0.0, 0.0 );
207  EvtComplex f22( 0.0, 0.0 );
208  EvtComplex f32( 0.0, 0.0 );
209  EvtComplex coef( 0.0, 0.0 );
210  double amplitude_temp, delta_temp;
211 
212  for ( int index = 0; index < nAmps; index++ ) {
213  switch ( type[index] ) {
214  case 0: // calculate form factor of S wave
215  {
216  NRS( m, q, rS, rS1, a_delta, b_delta, mA, m0_1430_S,
217  width0_1430_S, amplitude_temp, delta_temp, f10 );
218  F10 = F10 + f10;
219  break;
220  }
221  case 1: // calculate form factor of P wave (K*)
222  {
223  ResonanceP( m, q, mV, mA, V_0, A1_0, A2_0, m0, width0, rBW,
224  amplitude_temp, delta_temp, f11, f21, f31 );
225  coef = getCoef( rho, phi );
226  F11 = F11 + coef * f11;
227  F21 = F21 + coef * f21;
228  F31 = F31 + coef * f31;
229  break;
230  }
231  case 2: // calculate form factor of P wave (K*(1410))
232  {
234  rBW, amplitude_temp, delta_temp, f11, f21, f31 );
235  coef = getCoef( rho_1410, phi_1410 );
236  F11 = F11 + coef * f11;
237  F21 = F21 + coef * f21;
238  F31 = F31 + coef * f31;
239  break;
240  }
241  case 3: // calculate form factor of D wave
242  {
244  rBW, amplitude_temp, delta_temp, f12, f22, f32 );
245  coef = getCoef( rho_1430, phi_1430 );
246  F12 = F12 + coef * f12;
247  F22 = F22 + coef * f22;
248  F32 = F32 + coef * f32;
249  break;
250  }
251  default: {
252  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
253  << "No such form factor type!!!" << std::endl;
254  break;
255  }
256  }
257  }
258 
259  // begin to calculate pdf value
260  double I, I1, I2, I3, I4, I5, I6, I7, I8, I9;
261 
262  double cosV2 = cosV * cosV;
263  double sinV = sqrt( 1.0 - cosV2 );
264  double sinV2 = sinV * sinV;
265 
266  EvtComplex F1 = F10 + F11 * cosV + F12 * ( 1.5 * cosV2 - 0.5 );
267  EvtComplex F2 = F21 * root1d2 + F22 * cosV * root3d2;
268  EvtComplex F3 = F31 * root1d2 + F32 * cosV * root3d2;
269 
270  I1 = 0.25 * ( abs2( F1 ) + 1.5 * sinV2 * ( abs2( F2 ) + abs2( F3 ) ) );
271  I2 = -0.25 * ( abs2( F1 ) - 0.5 * sinV2 * ( abs2( F2 ) + abs2( F3 ) ) );
272  I3 = -0.25 * ( abs2( F2 ) - abs2( F3 ) ) * sinV2;
273  I4 = real( conj( F1 ) * F2 ) * sinV * 0.5;
274  I5 = real( conj( F1 ) * F3 ) * sinV;
275  I6 = real( conj( F2 ) * F3 ) * sinV2;
276  I7 = imag( conj( F2 ) * F1 ) * sinV;
277  I8 = imag( conj( F3 ) * F1 ) * sinV * 0.5;
278  I9 = imag( conj( F3 ) * F2 ) * sinV2 * ( -0.5 );
279 
280  double coschi = cos( chi );
281  double sinchi = sin( chi );
282  double sin2chi = 2.0 * sinchi * coschi;
283  double cos2chi = 1.0 - 2.0 * sinchi * sinchi;
284 
285  double sinL = sqrt( 1. - cosL * cosL );
286  double sinL2 = sinL * sinL;
287  double sin2L = 2.0 * sinL * cosL;
288  double cos2L = 1.0 - 2.0 * sinL2;
289 
290  I = I1 + I2 * cos2L + I3 * sinL2 * cos2chi + I4 * sin2L * coschi +
291  I5 * sinL * coschi + I6 * cosL + I7 * sinL * sinchi +
292  I8 * sin2L * sinchi + I9 * sinL2 * sin2chi;
293  return I;
294 }
295 
296 void EvtDToKpienu::ResonanceP( const double m, const double q, const double mV,
297  const double mA, const double V_0,
298  const double A1_0, const double A2_0,
299  const double m0, const double width0,
300  const double rBW, double& amplitude,
301  double& delta, EvtComplex& F11, EvtComplex& F21,
302  EvtComplex& F31 ) const
303 {
304  double pKPi = getPStar( mD, m, q );
305  double mD2 = mD * mD;
306  double m2 = m * m;
307  double m02 = m0 * m0;
308  double q2 = q * q;
309  double mV2 = mV * mV;
310  double mA2 = mA * mA;
311  double summDm = mD + m;
312  double V = V_0 / ( 1.0 - q2 / ( mV2 ) );
313  double A1 = A1_0 / ( 1.0 - q2 / ( mA2 ) );
314  double A2 = A2_0 / ( 1.0 - q2 / ( mA2 ) );
315  double A = summDm * A1;
316  double B = 2.0 * mD * pKPi / summDm * V;
317 
318  // construct the helicity form factor
319  double H0 = 0.5 / ( m * q ) *
320  ( ( mD2 - m2 - q2 ) * summDm * A1 -
321  4.0 * ( mD2 * pKPi * pKPi ) / summDm * A2 );
322  double Hp = A - B;
323  double Hm = A + B;
324 
325  // calculate alpha
326  double B_Kstar = 2. / 3.; // B_Kstar = Br(Kstar(892)->k pi)
327  double pStar0 = getPStar( m0, mPi, mK );
328  double alpha = sqrt( 3. * Pi * B_Kstar / ( pStar0 * width0 ) );
329 
330  // construct amplitudes of (non)resonance
331  double F = getF1( m, m0, mPi, mK, rBW );
332  double width = getWidth1( m, m0, mPi, mK, width0, rBW );
333 
334  EvtComplex C( m0 * width0 * F, 0.0 );
335  double AA = m02 - m2;
336  double BB = -m0 * width;
337  EvtComplex amp = C / EvtComplex( AA, BB );
338  amplitude = abs( amp );
339  delta = atan2( imag( amp ), real( amp ) );
340 
341  double alpham2 = alpha * 2.0;
342  F11 = amp * alpham2 * q * H0 * root2;
343  F21 = amp * alpham2 * q * ( Hp + Hm );
344  F31 = amp * alpham2 * q * ( Hp - Hm );
345 }
346 
347 void EvtDToKpienu::NRS( const double m, const double q, const double rS,
348  const double rS1, const double a_delta,
349  const double b_delta, const double mA, const double m0,
350  const double width0, double& amplitude, double& delta,
351  EvtComplex& F10 ) const
352 {
353  static const double tmp = ( mK + mPi ) * ( mK + mPi );
354 
355  double m2 = m * m;
356  double q2 = q * q;
357  double mA2 = mA * mA;
358  double pKPi = getPStar( mD, m, q );
359  double m_K0_1430 = m0;
360  double width_K0_1430 = width0;
361  double m2_K0_1430 = m_K0_1430 * m_K0_1430;
362  double width = getWidth0( m, m_K0_1430, mPi, mK, width_K0_1430 );
363 
364  // calculate modul of the amplitude
365  double x, Pm;
366  if ( m < m_K0_1430 ) {
367  x = sqrt( m2 / tmp - 1.0 );
368  Pm = 1.0 + rS1 * x;
369  } else {
370  x = sqrt( m2_K0_1430 / tmp - 1.0 );
371  Pm = 1.0 + rS1 * x;
372  Pm *= m_K0_1430 * width_K0_1430 /
373  sqrt( ( m2_K0_1430 - m2 ) * ( m2_K0_1430 - m2 ) +
374  m2_K0_1430 * width * width );
375  }
376 
377  // calculate phase of the amplitude
378  double pStar = getPStar( m, mPi, mK );
379  double delta_bg = atan( 2. * a_delta * pStar /
380  ( 2. + a_delta * b_delta * pStar * pStar ) );
381  delta_bg = ( delta_bg > 0 ) ? delta_bg : ( delta_bg + Pi );
382 
383  double delta_K0_1430 = atan( m_K0_1430 * width / ( m2_K0_1430 - m2 ) );
384  delta_K0_1430 = ( delta_K0_1430 > 0 ) ? delta_K0_1430
385  : ( delta_K0_1430 + Pi );
386  delta = delta_bg + delta_K0_1430;
387 
388  EvtComplex ci( cos( delta ), sin( delta ) );
389  EvtComplex amp = ci * rS * Pm;
390  amplitude = rS * Pm;
391 
392  F10 = amp * pKPi * mD / ( 1. - q2 / mA2 );
393 }
394 
395 void EvtDToKpienu::ResonanceD( const double m, const double q, const double mV,
396  const double mA, const double TV_0,
397  const double T1_0, const double T2_0,
398  const double m0, const double width0,
399  const double rBW, double& amplitude,
400  double& delta, EvtComplex& F12, EvtComplex& F22,
401  EvtComplex& F32 ) const
402 {
403  double pKPi = getPStar( mD, m, q );
404  double mD2 = mD * mD;
405  double m2 = m * m;
406  double m02 = m0 * m0;
407  double q2 = q * q;
408  double mV2 = mV * mV;
409  double mA2 = mA * mA;
410  double summDm = mD + m;
411  double TV = TV_0 / ( 1.0 - q2 / ( mV2 ) );
412  double T1 = T1_0 / ( 1.0 - q2 / ( mA2 ) );
413  double T2 = T2_0 / ( 1.0 - q2 / ( mA2 ) );
414 
415  // construct amplitudes of (non)resonance
416  double F = getF2( m, m0, mPi, mK, rBW );
417  double width = getWidth2( m, m0, mPi, mK, width0, rBW );
418  EvtComplex C( m0 * width0 * F, 0.0 );
419  double AA = m02 - m2;
420  double BB = -m0 * width;
421 
422  EvtComplex amp = C / EvtComplex( AA, BB );
423  amplitude = abs( amp );
424  delta = atan2( imag( amp ), real( amp ) );
425 
426  F12 = amp * mD * pKPi / 3. *
427  ( ( mD2 - m2 - q2 ) * summDm * T1 - mD2 * pKPi * pKPi / summDm * T2 );
428  F22 = amp * root2d3 * mD * m * q * pKPi * summDm * T1;
429  F32 = amp * root2d3 * 2. * mD2 * m * q * pKPi * pKPi / summDm * TV;
430 }
431 
432 double EvtDToKpienu::getPStar( const double m, const double m1,
433  const double m2 ) const
434 {
435  double s = m * m;
436  double s1 = m1 * m1;
437  double s2 = m2 * m2;
438  double x = s + s1 - s2;
439  double t = 0.25 * x * x / s - s1;
440  double p;
441  if ( t > 0.0 ) {
442  p = sqrt( t );
443  } else {
444  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
445  << " Hello, pstar is less than 0.0" << std::endl;
446  p = 0.04;
447  }
448  return p;
449 }
450 
451 double EvtDToKpienu::getF1( const double m, const double m0, const double m_c1,
452  const double m_c2, const double rBW ) const
453 {
454  double pStar = getPStar( m, m_c1, m_c2 );
455  double pStar0 = getPStar( m0, m_c1, m_c2 );
456  double rBW2 = rBW * rBW;
457  double pStar2 = pStar * pStar;
458  double pStar02 = pStar0 * pStar0;
459  double B = 1. / sqrt( 1. + rBW2 * pStar2 );
460  double B0 = 1. / sqrt( 1. + rBW2 * pStar02 );
461  double F = pStar / pStar0 * B / B0;
462  return F;
463 }
464 
465 double EvtDToKpienu::getF2( const double m, const double m0, const double m_c1,
466  const double m_c2, const double rBW ) const
467 {
468  double pStar = getPStar( m, m_c1, m_c2 );
469  double pStar0 = getPStar( m0, m_c1, m_c2 );
470  double rBW2 = rBW * rBW;
471  double pStar2 = pStar * pStar;
472  double pStar02 = pStar0 * pStar0;
473  double B = 1. / sqrt( ( rBW2 * pStar2 - 3. ) * ( rBW2 * pStar2 - 3. ) +
474  9. * rBW2 * pStar2 );
475  double B0 = 1. / sqrt( ( rBW2 * pStar02 - 3. ) * ( rBW2 * pStar02 - 3. ) +
476  9. * rBW2 * pStar02 );
477  double F = pStar2 / pStar02 * B / B0;
478  return F;
479 }
480 
481 double EvtDToKpienu::getWidth0( const double m, const double m0,
482  const double m_c1, const double m_c2,
483  const double width0 ) const
484 {
485  double pStar = getPStar( m, m_c1, m_c2 );
486  double pStar0 = getPStar( m0, m_c1, m_c2 );
487  double width = width0 * pStar / pStar0 * m0 / m;
488  return width;
489 }
490 
491 double EvtDToKpienu::getWidth1( const double m, const double m0,
492  const double m_c1, const double m_c2,
493  const double width0, const double rBW ) const
494 {
495  double pStar = getPStar( m, m_c1, m_c2 );
496  double pStar0 = getPStar( m0, m_c1, m_c2 );
497  double F = getF1( m, m0, m_c1, m_c2, rBW );
498  double width = width0 * pStar / pStar0 * m0 / m * F * F;
499  return width;
500 }
501 
502 double EvtDToKpienu::getWidth2( const double m, const double m0,
503  const double m_c1, const double m_c2,
504  const double width0, const double rBW ) const
505 {
506  double pStar = getPStar( m, m_c1, m_c2 );
507  double pStar0 = getPStar( m0, m_c1, m_c2 );
508  double F = getF2( m, m0, m_c1, m_c2, rBW );
509  double width = width0 * pStar / pStar0 * m0 / m * F * F;
510  return width;
511 }
512 
513 EvtComplex EvtDToKpienu::getCoef( const double rho, const double phi ) const
514 {
515  EvtComplex coef( rho * cos( phi ), rho * sin( phi ) );
516  return coef;
517 }
void setProb(double prob)
Definition: EvtDecayProb.hh:32
void NRS(const double m, const double q, const double rS, const double rS1, const double a_delta, const double b_delta, const double mA, const double m0, const double width0, double &amplitude, double &delta, EvtComplex &F10) const
double getWidth2(const double m, const double m0, const double m_c1, const double m_c2, const double width0, const double rBW) const
double calPDF(const double m2, const double q2, const double cosV, const double cosL, const double chi) const
double width0_1410
Definition: EvtDToKpienu.hh:98
std::array< int, 5 > type
Definition: EvtDToKpienu.hh:78
double a_delta
Definition: EvtDToKpienu.hh:82
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
Definition: EvtReport.cpp:33
EvtVector4R cross(const EvtVector4R &v2)
Evt3Rank3C conj(const Evt3Rank3C &t2)
Definition: Evt3Rank3C.cpp:172
double rho_1410
Definition: EvtDToKpienu.hh:99
double width0_1430_S
Definition: EvtDToKpienu.hh:85
EvtDecayBase * clone() override
double abs2(const EvtComplex &c)
Definition: EvtComplex.hh:209
EvtId getId() const
void ResonanceD(const double m, const double q, const double mV, const double mA, const double TV_0, const double T1_0, const double T2_0, const double m0, const double width0, const double rBW, double &amplitude, double &delta, EvtComplex &F12, EvtComplex &F22, EvtComplex &F32) const
void decay(EvtParticle *p) override
void set(int i, double d)
Definition: EvtVector4R.hh:167
EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger &rs, const EvtVector4R p4)
double getF1(const double m, const double m0, const double m_c1, const double m_c2, const double rBW) const
void init() override
EvtId * getDaugs()
Definition: EvtDecayBase.hh:66
double getWidth0(const double m, const double m0, const double m_c1, const double m_c2, const double width0) const
void setProbMax(double prbmx)
const float pi
Definition: EvtBBScalar.cpp:33
double mass2() const
Definition: EvtVector4R.hh:100
double b_delta
Definition: EvtDToKpienu.hh:83
double get(int i) const
Definition: EvtVector4R.hh:162
double initializePhaseSpace(unsigned int numdaughter, EvtId *daughters, bool forceResetMasses=false, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
double getF2(const double m, const double m0, const double m_c1, const double m_c2, const double rBW) const
void checkNDaug(int d1, int d2=-1)
void checkSpinParent(EvtSpinType::spintype sp)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
double abs(const EvtComplex &c)
Definition: EvtComplex.hh:201
void initProbMax() override
const EvtVector4R & getP4() const
double imag(const EvtComplex &c)
Definition: EvtComplex.hh:235
double getWidth1(const double m, const double m0, const double m_c1, const double m_c2, const double width0, const double rBW) const
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
double d3mag() const
int getNDaug() const
Definition: EvtDecayBase.hh:65
void ResonanceP(const double m, const double q, const double mV, const double mA, const double V_0, const double A1_0, const double A2_0, const double m0, const double width0, const double rBW, double &amplitude, double &delta, EvtComplex &F11, EvtComplex &F21, EvtComplex &F31) const
double m0_1410
Definition: EvtDToKpienu.hh:97
EvtComplex getCoef(const double rho, const double phi) const
EvtParticle * getDaug(int i)
Definition: EvtParticle.cpp:91
double getPStar(const double m, const double m1, const double m2) const
std::string getName() override
double width0_1430
const EvtComplex I
Definition: EvtBsMuMuKK.cpp:38
void KinVGen(const EvtVector4R &vp4_K, const EvtVector4R &vp4_Pi, const EvtVector4R &vp4_Lep, const EvtVector4R &vp4_Nu, const int charm, double &m2, double &q2, double &cosV, double &cosL, double &chi) const
double real(const EvtComplex &c)
Definition: EvtComplex.hh:230
static int getStdHep(EvtId id)
Definition: EvtPDL.cpp:362
double m0_1430_S
Definition: EvtDToKpienu.hh:84
double dot(const EvtVector4R &v2) const