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.
EvtbTosllScalarAmpNew.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/EvtAmp.hh"
24 #include "EvtGenBase/EvtComplex.hh"
26 #include "EvtGenBase/EvtGenKine.hh"
27 #include "EvtGenBase/EvtId.hh"
28 #include "EvtGenBase/EvtIdSet.hh"
29 #include "EvtGenBase/EvtPDL.hh"
31 #include "EvtGenBase/EvtPatches.hh"
32 #include "EvtGenBase/EvtReport.hh"
36 
40 
41 #include <cstdlib>
42 
43 //
44 // The main functiom for the amplitude calculation
45 //
46 // input: *parent - the pointer to the parent particle (B-meson, the
47 // object of the EvtParticle class);
48 // *formFactors - the pointer to instance of EvtbTosllFFNew class object;
49 // *WilsCoeff - the pointer to
50 // mu - the scale parameter, GeV;
51 // Nf - number of "effective" flavors (for b-quark Nf=5);
52 // res_swch - resonant switching parameter:
53 // = 0 the resonant contribution switched OFF,
54 // = 1 the resonant contribution switched ON;
55 // ias - switching parameter for \alpha_s(M_Z) value:
56 // = 0 PDG 1sigma minimal alpha_s(M_Z),
57 // = 1 PDG average value alpha_s(M_Z),
58 // = 2 PDG 1sigma maximal alpha_s(M_Z).
59 // Wolfenstein parameterization for CKM matrix
60 // CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
61 //
62 // return: amp - amplitude for the decay B -> P ell^+ ell^-
63 //
64 // Note: in our calculations we assume, that pseudoscalar meson is the first
65 // daughter particle (iP=0) and leptons are the second and thirds
66 // daughter particles (il1=1 and il2=2).
67 //
69  EvtbTosllFFNew* formFactors,
70  EvtbTosllWilsCoeffNLO* WilsCoeff,
71  double mu, int Nf, int res_swch, int ias,
72  double CKM_A, double CKM_lambda,
73  double CKM_barrho, double CKM_bareta )
74 {
75  // FILE *mytest;
76 
77  EvtComplex unit1( 1.0, 0.0 ); // real unit
78  EvtComplex uniti( 0.0, 1.0 ); // imaginary unit
79 
80  int iP = 0; // pseudoscalar meson is the first daughter particle
81  int il1 = 1,
82  il2 = 2; // leptons are the second and thirds daughter particles
83 
84  // transition momentum of the leptonic pair q=k1+k2 or q=p1-p2
85  EvtVector4R q = parent->getDaug( il1 )->getP4() +
86  parent->getDaug( il2 )->getP4();
87 
88  // Mandelstam variable t=q^2
89  double q2 = q.mass2();
90 
91  double M1 = parent->mass(); // B - meson mass
92  double M2 = parent->getDaug( iP )->mass(); // pseudoscalar meson mass
93  double ml = parent->getDaug( il1 )->mass(); // leptonic mass
94  double ms = 0.0; // light quark mass from the dispersion QM
95  double mc = formFactors->getQuarkMass( 4 ); // m_c mass from the dispersion QM
96  double mb = formFactors->getQuarkMass( 5 ); // m_b mass from the dispersion QM
97  // double Mw = EvtPDL::getNominalMass("W+"); // W-boson mass
98  // double mt = EvtPDL::getNominalMass("t"); // t-quark mass
99  double Mw = 80.403; // GeV W-boson mass
100  double mt = 174.2; // GeV t-quark mass
101 
102  EvtComplex Vtb, Vtq, Vub, Vuq; // V_{tb}, V_{tq}, V_{ub} and V_{uq}
103  EvtComplex CKM_factor; // V^*_{tq}*V_{tb}, where q={d,s}
104  EvtComplex lambda_qu; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}, where q={d,s}
105  double Relambda_qu, Imlambda_qu;
106 
107  EvtId idparent = parent->getId(); // B-meson Id
108  EvtId iddaught = parent->getDaug( iP )->getId(); // The pseudoscalar meson Id
109 
110  // set of the light quark mass value
111  if ( ( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
112  iddaught == EvtPDL::getId( std::string( "K+" ) ) ) ||
113  ( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
114  iddaught == EvtPDL::getId( std::string( "K-" ) ) ) ||
115  ( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
116  iddaught == EvtPDL::getId( std::string( "K0" ) ) ) ||
117  ( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
118  iddaught == EvtPDL::getId( std::string( "anti-K0" ) ) ) ||
119  ( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
120  iddaught == EvtPDL::getId( std::string( "eta" ) ) ) ||
121  ( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
122  iddaught == EvtPDL::getId( std::string( "eta" ) ) ) ||
123  ( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
124  iddaught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
125  ( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
126  iddaught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
127  ( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
128  iddaught == EvtPDL::getId( std::string( "f_0" ) ) ) ||
129  ( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
130  iddaught == EvtPDL::getId( std::string( "f_0" ) ) ) ) {
131  ms = formFactors->getQuarkMass( 3 ); // m_s mass from the dispersion QM
132  // V_{ts}
133  Vtq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) +
134  pow( CKM_lambda, 2.0 ) *
135  ( CKM_barrho * unit1 + CKM_bareta * uniti ) /
136  sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
137  Vtq = -CKM_A * pow( CKM_lambda, 2.0 ) * Vtq;
138  // V_{us}
139  Vuq = CKM_lambda * unit1;
140 
141  // EvtGenReport(EVTGEN_ERROR,"EvtGen")
142  // << "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
143  // << "\n ms = " << ms
144  // << "\n idparent = " << idparent << ", " << EvtPDL::getId(std::string("B_s0"))
145  // << "\n iddaught = " << iddaught << ", " << EvtPDL::getId(std::string("f_0"))
146  // << std::endl;
147  }
148 
149  if ( ( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
150  iddaught == EvtPDL::getId( std::string( "pi+" ) ) ) ||
151  ( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
152  iddaught == EvtPDL::getId( std::string( "pi-" ) ) ) ||
153  ( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
154  iddaught == EvtPDL::getId( std::string( "pi0" ) ) ) ||
155  ( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
156  iddaught == EvtPDL::getId( std::string( "pi0" ) ) ) ||
157  ( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
158  iddaught == EvtPDL::getId( std::string( "eta" ) ) ) ||
159  ( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
160  iddaught == EvtPDL::getId( std::string( "eta" ) ) ) ||
161  ( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
162  iddaught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
163  ( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
164  iddaught == EvtPDL::getId( std::string( "eta'" ) ) ) ) {
165  ms = formFactors->getQuarkMass( 2 ); // m_d mass from the dispersion QM
166  // V_{td}
167  Vtq = unit1 - ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) *
168  ( CKM_barrho * unit1 + CKM_bareta * uniti ) /
169  sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
170  Vtq = CKM_A * pow( CKM_lambda, 3.0 ) * Vtq;
171  // V_{ud}
172  Vuq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) -
173  0.125 * pow( CKM_lambda, 4.0 ) );
174  }
175 
176  if ( ms < 0.001 ) {
177  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
178  << "\n\n The function EvtbTosllScalarAmpNew::CalcAmp(...)"
179  << "\n Error in the model set!"
180  << " ms = " << ms << std::endl;
181  ::abort();
182  }
183 
184  Vtb = unit1 * ( 1.0 - 0.5 * pow( CKM_A * CKM_lambda * CKM_lambda,
185  2.0 ) ); // V_{tb}
186  Vub = CKM_A * pow( CKM_lambda, 3.0 ) *
187  ( CKM_barrho * unit1 - CKM_bareta * uniti ) /
188  sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); // V_{ub}
189 
190  CKM_factor = conj( Vtq ) * Vtb; // V^*_{tq}*V_{tb}
191 
192  lambda_qu = conj( Vuq ) * Vub /
193  CKM_factor; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}
194  Relambda_qu = real( lambda_qu );
195  Imlambda_qu = imag( lambda_qu );
196 
197  double fp, f0, ft; // B -> P transition form-factors
198 
199  // To get the B -> P transition form-factors
200  formFactors->getScalarFF( parent->getId(), parent->getDaug( iP )->getId(),
201  q2, fp, f0, ft );
202 
203  // The Wilson Coefficients preparation according to the paper
204  // A.J.Buras, M.Munz, Phys.Rev.D52, p.189 (1995)
205  EvtComplex c7gam = WilsCoeff->GetC7Eff( mu, Mw, mt, Nf, ias );
206  EvtComplex c9eff_b2q = WilsCoeff->GetC9Eff( 0, res_swch, ias, Nf, q2, mb,
207  ms, mc, mu, mt, Mw, ml,
208  Relambda_qu, Imlambda_qu );
209  EvtComplex c9eff_barb2barq = WilsCoeff->GetC9Eff( 1, res_swch, ias, Nf, q2,
210  mb, ms, mc, mu, mt, Mw, ml,
211  Relambda_qu, Imlambda_qu );
212  EvtComplex c10a = WilsCoeff->GetC10Eff( mt, Mw );
213 
214  // EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n\n The function EvtbTosllScalarAmpNew::CalcAmp(...) passed."
215  // << "\n Particle masses:"
216  // << "\n B - meson mass M1 = " << M1
217  // << "\n P - meson mass M2 = " << M2
218  // << "\n leptonic mass ml = " << ml
219  // << "\n light quark mass = " << ms
220  // << "\n c - quark mass mc = " << mc
221  // << "\n b - quark mass mb = " << mb
222  // << "\n t - quark mass mt = " << mt
223  // << "\n W - boson mass Mw = " << Mw
224  // << "\n ============================================================================"
225  // << "\n Input parameters:"
226  // << "\n scale parameter mu = " << mu
227  // << "\n number of flavors Nf = " << Nf
228  // << "\n resonant switching = " << res_swch
229  // << "\n parameter for alpha_s(M_Z) = " << ias
230  // << "\n ============================================================================"
231  // << "\n Vector form-factors at q^2 = " << q2
232  // << " for B -> P transition:"
233  // << "\n fp = " << fp
234  // << "\n f0 = " << f0
235  // << "\n ft = " << ft
236  // << "\n ============================================================================"
237  // << "\n Wilson Coefficients:"
238  // << "\n Re(c7gam) = " << real(c7gam) << " Im(c7gam) = " << imag(c7gam)
239  // << "\n Re(c9eff_b2q) = " << real(c9eff_b2q)
240  // << " Im(c9eff_b2q) = " << imag(c9eff_b2q)
241  // << "\n Re(c9eff_barb2barq) = " << real(c9eff_barb2barq)
242  // << " Im(c9eff_barb2barq) = " << imag(c9eff_barb2barq)
243  // << "\n Re(c10a) = " << real(c10a) << " Im(c10a) = " << imag(c10a)
244  // << std::endl;
245 
246  // mytest = fopen("scalaroutput.txt","a");
247  // if(mytest != NULL){
248  // fprintf(mytest,"%lf\n",q2);
249  // fclose(mytest);
250  // }
251  // else{
252  // EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n Error in writing to file.\n"
253  // << std::endl;
254  // return;
255  // }
256 
257  // 4- momentum of the B-meson in the the B-meson rest frame
258  EvtVector4R p1 = parent->getP4Restframe();
259  EvtVector4R hatp1 = p1 / M1;
260  // 4-momentum of the pseudoscalar meson in the B-meson rest frame
261  EvtVector4R p2 = parent->getDaug( 0 )->getP4();
262  EvtVector4R hatp2 = p2 / M1;
263 
264  // 4-vector \hat q = q/M1
265  EvtVector4R hatq = q / M1;
266  // 4-vector \hat P= (p1 + p2)/M1
267  EvtVector4R hatP = hatp1 + hatp2;
268 
269  double hats = q2 / pow( M1, 2 );
270  double hatM2 = M2 / M1;
271  double hatmb = mb / M1;
272  double hatms = ms / M1;
273 
274  // Hadronic matrix element with m_s.NE.0
275  EvtComplex a_b2q, a_barb2barq, b_b2q, b_barb2barq, c, d;
276 
277  a_b2q = c9eff_b2q * fp -
278  2.0 * c7gam * ( hatmb + hatms ) * ft / ( 1.0 + hatM2 );
279  a_barb2barq = c9eff_barb2barq * fp -
280  2.0 * c7gam * ( hatmb + hatms ) * ft / ( 1.0 + hatM2 );
281 
282  b_b2q = ( c9eff_b2q * ( f0 - fp ) +
283  2.0 * c7gam * ( hatmb + hatms ) * ft / ( 1.0 + hatM2 ) ) *
284  ( 1 - pow( hatM2, 2.0 ) ) / hats;
285  b_barb2barq = ( c9eff_barb2barq * ( f0 - fp ) +
286  2.0 * c7gam * ( hatmb + hatms ) * ft / ( 1.0 + hatM2 ) ) *
287  ( 1 - pow( hatM2, 2.0 ) ) / hats;
288 
289  c = c10a * fp;
290 
291  d = c10a * ( 1.0 - pow( hatM2, 2 ) ) * ( f0 - fp ) / hats;
292 
293  // to find ell^+ and ell^- in the B-meson daughters
294  int charge1 = EvtPDL::chg3( parent->getDaug( 1 )->getId() );
295  int charge2 = EvtPDL::chg3( parent->getDaug( 2 )->getId() );
296 
297  EvtParticle* lepPlus = 0;
298  EvtParticle* lepMinus = 0;
299 
300  lepPlus = ( charge1 > charge2 ) ? parent->getDaug( 1 ) : parent->getDaug( 2 );
301  lepMinus = ( charge1 < charge2 ) ? parent->getDaug( 1 )
302  : parent->getDaug( 2 );
303 
304  EvtVector4C T1, T2; // hadronic matrix element vector structures
305 
306  EvtVector4C lvc11, lvc12; // spin structures for
307  EvtVector4C lvc21, lvc22; // the leptonic vector current
308 
309  EvtVector4C lac11, lac12; // spin structures for
310  EvtVector4C lac21, lac22; // the leptonic axial current
311 
312  // B - and barB - mesons descriptors
313  EvtIdSet bmesons( "B-", "anti-B0", "anti-B_s0", "B_c-" );
314  EvtIdSet bbarmesons( "B+", "B0", "B_s0", "B_c+" );
315 
316  EvtId parentID = parent->getId();
317 
318  if ( bmesons.contains( parentID ) ) {
319  // The amplitude for the decay barB -> barP ell^+ ell^-
320  // (b -> q ell^+ ell^- transition)
321 
322  T1 = a_b2q * hatP + b_b2q * hatq;
323 
324  T2 = c * hatP + d * hatq;
325 
326  lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
327  lepMinus->spParent( 0 ) );
328  lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
329  lepMinus->spParent( 0 ) );
330  lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
331  lepMinus->spParent( 1 ) );
332  lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
333  lepMinus->spParent( 1 ) );
334 
335  lac11 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
336  lepMinus->spParent( 0 ) );
337  lac21 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
338  lepMinus->spParent( 0 ) );
339  lac12 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
340  lepMinus->spParent( 1 ) );
341  lac22 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
342  lepMinus->spParent( 1 ) );
343 
344  amp.vertex( 0, 0, CKM_factor * ( lvc11 * T1 + lac11 * T2 ) );
345  amp.vertex( 0, 1, CKM_factor * ( lvc12 * T1 + lac12 * T2 ) );
346  amp.vertex( 1, 0, CKM_factor * ( lvc21 * T1 + lac21 * T2 ) );
347  amp.vertex( 1, 1, CKM_factor * ( lvc22 * T1 + lac22 * T2 ) );
348 
349  } else {
350  if ( bbarmesons.contains( parentID ) ) {
351  // The amplitude for the decay B -> K* ell^+ ell^-
352  // (barb -> barq ell^+ ell^- transition)
353 
354  T1 = a_barb2barq * hatP + b_barb2barq * hatq;
355  T2 = c * hatP + d * hatq;
356 
357  lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
358  lepMinus->spParent( 1 ) );
359  lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
360  lepMinus->spParent( 1 ) );
361  lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
362  lepMinus->spParent( 0 ) );
363  lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
364  lepMinus->spParent( 0 ) );
365 
366  lac11 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
367  lepMinus->spParent( 1 ) );
368  lac21 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
369  lepMinus->spParent( 1 ) );
370  lac12 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
371  lepMinus->spParent( 0 ) );
372  lac22 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
373  lepMinus->spParent( 0 ) );
374 
375  amp.vertex( 0, 0, conj( CKM_factor ) * ( lvc11 * T1 + lac11 * T2 ) );
376  amp.vertex( 0, 1, conj( CKM_factor ) * ( lvc12 * T1 + lac12 * T2 ) );
377  amp.vertex( 1, 0, conj( CKM_factor ) * ( lvc21 * T1 + lac21 * T2 ) );
378  amp.vertex( 1, 1, conj( CKM_factor ) * ( lvc22 * T1 + lac22 * T2 ) );
379  }
380 
381  else {
382  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
383  << "\n\n The function EvtbTosllScalarAmpNew::CalcAmp(...)"
384  << "\n Wrong B-meson number" << std::endl;
385  ::abort();
386  }
387  }
388 }
389 
390 //
391 // The decays B -> P ell^+ ell^- maximum probability calculation for the
392 // d^2\Gamma/dq^2 d\cos\theta distribution.
393 //
394 // \theta - the angle between the final P-meson and ell^- directions in the
395 // B-meson rest frame.
396 //
397 // If ias=0 (nonresonant case), the maximum is achieved at (s,t) plane!
398 // If ias=1 (resonant case), the maximum is achieved at q2=M^2_{J/\psi}.
399 //
401  EvtId parnum, EvtId mesnum, EvtId l1num, EvtId l2num,
402  EvtbTosllFFNew* formFactors, EvtbTosllWilsCoeffNLO* WilsCoeff, double mu,
403  int Nf, int res_swch, int ias, double CKM_A, double CKM_lambda,
404  double CKM_barrho, double CKM_bareta )
405 {
406  double maxfoundprob = -100.0; // maximum of the probability
407 
408  double M1 = EvtPDL::getMeanMass( parnum ); // B - meson mass
409  double M2 = EvtPDL::getMeanMass( mesnum ); // P - meson mass
410  double ml = EvtPDL::getMeanMass( l1num ); // leptonic mass
411 
412  if ( res_swch == 0 ) {
413  double s, t_for_s; // Mandelstam variables
414  double s_min, s_max; // s-variable boundaries
415  double t_plus, t_minus; // t-variable boundaries for current s-variable
416  double ds, dt;
417  int j, k;
418  int max_j, max_k;
419 
420  s_min = 4.0 * pow( ml, 2.0 ); // minimum value of s-variable
421  s_max = pow( ( M1 - M2 ), 2.0 ); // maximum value of s-variable
422 
423  max_j = 1000;
424  ds = ( s_max - s_min ) / ( (double)max_j );
425  if ( ds < 0.0 ) {
426  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
427  << "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
428  << "\n ds = " << ds << " < 0."
429  << "\n s_min = " << s_min << "\n s_max = " << s_max
430  << "\n M1 = " << M1 << "\n M2 = " << M2
431  << "\n ml = " << ml << std::endl;
432  ::abort();
433  }
434 
435  // The maximum probability calculation
436  // from s_min to s_max
437  for ( j = max_j / 3; j < max_j; j++ ) {
438  s = s_min + ds * ( (double)j );
439 
440  t_plus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
441  t_plus = t_plus +
442  sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
443  sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
444  t_plus *= 0.5;
445 
446  t_minus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
447  t_minus = t_minus -
448  sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
449  sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
450  t_minus *= 0.5;
451 
452  max_k = 1000;
453  dt = ( t_plus - t_minus ) / ( (double)max_k );
454  if ( fabs( dt ) < 0.00001 )
455  dt = 0.0;
456 
457  if ( dt <= ( -0.00001 ) ) {
458  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
459  << "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
460  << "\n dt = " << dt << " < 0."
461  << "\n s = " << s << "\n s_min = " << s_min
462  << "\n s_max = " << s_max << "\n ds = " << ds
463  << "\n j = " << j << "\n t_plus = " << t_plus
464  << "\n t_minus = " << t_minus << "\n M1 = " << M1
465  << "\n M2 = " << M2 << "\n ml = " << ml
466  << std::endl;
467  ::abort();
468  }
469 
470  // from t_minus to t_plus
471  for ( k = 0; k < max_k; k++ ) {
472  t_for_s = t_minus + dt * ( (double)k );
473 
474  if ( ( t_for_s > t_plus ) && ( t_for_s <= ( 1.0001 * t_plus ) ) ) {
475  t_for_s = t_plus;
476  }
477  if ( t_for_s > ( 1.0001 * t_plus ) ) {
478  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
479  << "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
480  << "\n t_for_s = " << t_for_s
481  << " > t_plus = " << t_plus << " ! "
482  << "\n t_minus = " << t_minus << "\n dt = " << dt
483  << "\n k = " << k << "\n s = " << s
484  << "\n M1 = " << M1 << "\n M2 = " << M2
485  << "\n ml = " << ml << std::endl;
486  ::abort();
487  }
488 
489  // B-meson rest frame particles and they kinematics inicialization
490  double EV, El1, El2;
491  EV = ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - s ) /
492  ( 2.0 * M1 ); // P-meson energy
493  if ( EV < M2 ) {
494  EV = 1.0000001 * M2;
495  }
496  El1 = ( pow( M1, 2.0 ) + pow( ml, 2.0 ) - t_for_s ) /
497  ( 2.0 * M1 ); // ell^+ energy
498  if ( El1 < ml ) {
499  El1 = 1.0000001 * ml;
500  }
501  El2 = ( s + t_for_s - pow( M2, 2.0 ) - pow( ml, 2.0 ) ) /
502  ( 2.0 * M1 ); // ell^- energy
503  if ( El2 < ml ) {
504  El2 = 1.0000001 * ml;
505  }
506 
507  double modV, modl2;
508  modV = sqrt( pow( EV, 2.0 ) - pow( M2, 2.0 ) );
509  modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
510 
511  double cosVellminus; // angle between the P-meson and ell^- directions
512  cosVellminus = ( pow( M2, 2.0 ) + pow( ml, 2.0 ) +
513  2.0 * EV * El2 - t_for_s ) /
514  ( 2.0 * modV * modl2 );
515  if ( ( fabs( cosVellminus ) > 1.0 ) &&
516  ( fabs( cosVellminus ) <= 1.0001 ) ) {
517  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
518  // << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
519  // << "\n cos(theta) = " << cosVellminus
520  // << std::endl;
521  cosVellminus = cosVellminus / fabs( cosVellminus );
522  }
523  if ( ( modV <= 0.000001 ) || ( modl2 <= 0.000001 ) ) {
524  cosVellminus = cosVellminus / fabs( cosVellminus );
525  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
526  // << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
527  // << "\n modV = " << modV
528  // << "\n modl2 = " << modl2
529  // << "\n cos(theta) = " << cosVellminus
530  // << "\n s = " << s
531  // << "\n t_for_s = " << t_for_s
532  // << "\n s_min = " << s_min
533  // << "\n s_max = " << s_max
534  // << "\n t_plus = " << t_plus
535  // << "\n t_minus = " << t_minus
536  // << "\n dt = " << dt
537  // << "\n EV = " << EV
538  // << "\n El2 = " << El2
539  // << "\n M2 = " << M2
540  // << "\n ml = " << ml
541  // << std::endl;
542  }
543  if ( fabs( cosVellminus ) > 1.0001 ) {
544  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
545  << "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
546  << "\n |cos(theta)| = " << fabs( cosVellminus ) << " > 1"
547  << "\n s = " << s << "\n t_for_s = " << t_for_s
548  << "\n s_min = " << s_min << "\n s_max = " << s_max
549  << "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
550  << "\n dt = " << dt << "\n EV = " << EV
551  << "\n El2 = " << El2 << "\n modV = " << modV
552  << "\n modl2 = " << modl2 << "\n M2 = " << M2
553  << "\n ml = " << ml << std::endl;
554  ::abort();
555  }
556 
557  double sin2Vellminus = 1.0 - pow( cosVellminus, 2.0 );
558  if ( ( sin2Vellminus < 0.0 ) && ( sin2Vellminus >= -0.0001 ) ) {
559  sin2Vellminus = 0.0;
560  }
561  if ( sin2Vellminus <= -0.0001 ) {
562  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
563  << "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
564  << "\n cos^2(theta) = " << sin2Vellminus << " < -0.001"
565  << "\n s = " << s << "\n t_for_s = " << t_for_s
566  << "\n s_min = " << s_min << "\n s_max = " << s_max
567  << "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
568  << "\n dt = " << dt << "\n EV = " << EV
569  << "\n El2 = " << El2 << "\n modV = " << modV
570  << "\n modl2 = " << modl2 << "\n M2 = " << M2
571  << "\n ml = " << ml << std::endl;
572  ::abort();
573  }
574 
575  EvtVector4R p1, p2, k1, k2;
576  p1.set( M1, 0.0, 0.0, 0.0 );
577  p2.set( EV, modV, 0.0, 0.0 );
578  k2.set( El2, modl2 * cosVellminus,
579  -modl2 * sqrt( sin2Vellminus ), 0.0 );
580  k1 = p1 - p2 - k2;
581 
582  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
583  // << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
584  // << "\n mu =" << mu << " Nf =" << Nf
585  // << " res_swch =" << res_swch
586  // << " ias =" << ias
587  // << "\n M1 = " << M1
588  // << "\n M2 = " << M2
589  // << "\n ml = " << ml
590  // << "\n s = " << s
591  // << "\n t_for_s = " << t_for_s
592  // << "\n EV = " << EV
593  // << "\n El1 = " << El1
594  // << "\n El2 = " << El2
595  // << "\n modV = " << modV
596  // << "\n modl1 = " << modl1
597  // << "\n modl2 = " << modl2
598  // << "\n cos(theta) = " << cosVellminus
599  // << "\n p1 =" << p1
600  // << "\n p2 =" << p2
601  // << "\n k1 =" << k1
602  // << "\n k2 =" << k2
603  // << std::endl;
604 
605  // B-meson state preparation at the rest frame of B-meson
606  EvtScalarParticle* scalar_part;
607  EvtParticle* root_part;
608  scalar_part = new EvtScalarParticle;
609 
610  scalar_part->noLifeTime();
611  scalar_part->init( parnum, p1 );
612  root_part = (EvtParticle*)scalar_part;
613  root_part->setDiagonalSpinDensity();
614 
615  // Amplitude initialization
616  EvtId listdaug[3];
617  listdaug[0] = mesnum;
618  listdaug[1] = l1num;
619  listdaug[2] = l2num;
620 
621  EvtAmp amp;
622  amp.init( parnum, 3, listdaug );
623 
624  // Daughters states preparation at the rest frame of B-meson
625  root_part->makeDaughters( 3, listdaug );
626 
627  EvtParticle *vect, *lep1, *lep2;
628  vect = root_part->getDaug( 0 );
629  lep1 = root_part->getDaug( 1 );
630  lep2 = root_part->getDaug( 2 );
631 
632  vect->noLifeTime();
633  lep1->noLifeTime();
634  lep2->noLifeTime();
635 
636  // EvtGenReport(EVTGEN_ERROR,"EvtGen")
637  // << "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
638  // << "\n M1 = " << M1
639  // << "\n M2 = " << M2
640  // << "\n s = " << s
641  // << "\n t_for_s = " << t_for_s
642  // << "\n p1 = " << p1
643  // << "\n p2 = " << p2
644  // << "\n k1 = " << k1
645  // << "\n k2 = " << k2
646  // << "\n mesnum = " << mesnum
647  // << "\n l1num = " << l1num
648  // << "\n l2num = " << l2num
649  // << std::endl;
650 
651  vect->init( mesnum, p2 );
652  lep1->init( l1num, k1 );
653  lep2->init( l2num, k2 );
654 
655  // EvtGenReport(EVTGEN_ERROR,"EvtGen")
656  // << "\n vect = " << vect
657  // << "\n lep1 = " << lep1
658  // << "\n lep2 = " << lep2
659  // << std::endl;
660 
661  EvtSpinDensity rho;
662  rho.setDiag( root_part->getSpinStates() );
663 
664  // The amplitude calculation at the
665  // "maximum amplitude" kinematical configuration
666  CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, res_swch,
667  ias, CKM_A, CKM_lambda, CKM_barrho, CKM_bareta );
668 
669  // Now find the probability at this q2 and cos theta lepton point
670  double nikmax = rho.normalizedProb( amp.getSpinDensity() );
671 
672  if ( nikmax > maxfoundprob ) {
673  maxfoundprob = nikmax;
674  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
675  // << "\n maxfoundprob ( s =" << s << ", t = " << t_for_s << " ) = "
676  // << maxfoundprob
677  // << "\n k =" << k
678  // << std::endl;
679  }
680 
681  delete scalar_part;
682  // delete root_part;
683  delete vect;
684  delete lep1;
685  delete lep2;
686 
687  } // for(k=0; k<=max_k; k++)
688  } // for(j=0; j<max_j; j++)
689 
690  } // if(res_swch==0)
691 
692  //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
693  //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
694 
695  if ( res_swch == 1 ) {
696  double s, t_for_s; // Mandelstam variables
697  double t_plus, t_minus; // t-variable boundaries for current s-variable
698  double dt;
699  int k;
700 
701  s = pow( 3.09688, 2.0 ); // s = (M_{J/\psi})^2
702 
703  t_plus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
704  t_plus = t_plus + sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
705  sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
706  t_plus *= 0.5;
707 
708  t_minus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
709  t_minus = t_minus -
710  sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
711  sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
712  t_minus *= 0.5;
713 
714  dt = ( t_plus - t_minus ) / 1000.0;
715 
716  // The maximum probability calculation
717  for ( k = 0; k < 1000; k++ ) {
718  t_for_s = t_minus + dt * ( (double)k );
719 
720  if ( ( t_for_s > t_plus ) && ( t_for_s <= ( 1.0001 * t_plus ) ) ) {
721  t_for_s = t_plus;
722  }
723  if ( t_for_s > ( 1.0001 * t_plus ) ) {
724  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
725  << "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
726  << "\n t_for_s = " << t_for_s << " > t_plus = " << t_plus
727  << " ! "
728  << "\n t_minus = " << t_minus << "\n dt = " << dt
729  << "\n k = " << k << "\n s = " << s
730  << "\n M1 = " << M1 << "\n M2 = " << M2
731  << "\n ml = " << ml << std::endl;
732  ::abort();
733  }
734 
735  // B-meson rest frame particles and they kinematics inicialization
736  double EV, El2;
737  EV = ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - s ) /
738  ( 2.0 * M1 ); // V-meson energy
739  El2 = ( s + t_for_s - pow( M2, 2.0 ) - pow( ml, 2.0 ) ) /
740  ( 2.0 * M1 ); // ell^- energy
741 
742  double modV, modl2;
743  modV = sqrt( pow( EV, 2.0 ) - pow( M2, 2.0 ) );
744  modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
745 
746  double cosVellminus; // angle between the vector meson and ell^- directions
747  cosVellminus = ( pow( M2, 2.0 ) + pow( ml, 2.0 ) + 2.0 * EV * El2 -
748  t_for_s ) /
749  ( 2.0 * modV * modl2 );
750  if ( ( fabs( cosVellminus ) > 1.0 ) &&
751  ( fabs( cosVellminus ) <= 1.0001 ) ) {
752  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
753  // << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
754  // << "\n cos(theta) = " << cosVellminus
755  // << std::endl;
756  cosVellminus = cosVellminus / fabs( cosVellminus );
757  }
758  if ( ( modV <= 0.000001 ) || ( modl2 <= 0.000001 ) ) {
759  cosVellminus = cosVellminus / fabs( cosVellminus );
760  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
761  // << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
762  // << "\n modV = " << modV
763  // << "\n modl2 = " << modl2
764  // << "\n cos(theta) = " << cosVellminus
765  // << "\n s = " << s
766  // << "\n t_for_s = " << t_for_s
767  // << "\n t_plus = " << t_plus
768  // << "\n t_minus = " << t_minus
769  // << "\n dt = " << dt
770  // << "\n EV = " << EV
771  // << "\n El2 = " << El2
772  // << "\n M2 = " << M2
773  // << "\n ml = " << ml
774  // << std::endl;
775  }
776  if ( fabs( cosVellminus ) > 1.0001 ) {
777  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
778  << "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
779  << "\n |cos(theta)| = " << fabs( cosVellminus ) << " > 1"
780  << "\n s = " << s << "\n t_for_s = " << t_for_s
781  << "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
782  << "\n dt = " << dt << "\n EV = " << EV
783  << "\n El2 = " << El2 << "\n modV = " << modV
784  << "\n modl2 = " << modl2 << "\n M2 = " << M2
785  << "\n ml = " << ml << std::endl;
786  ::abort();
787  }
788 
789  double sin2Vellminus = 1.0 - pow( cosVellminus, 2.0 );
790  if ( ( sin2Vellminus < 0.0 ) && ( sin2Vellminus >= -0.0001 ) ) {
791  sin2Vellminus = 0.0;
792  }
793  if ( sin2Vellminus <= -0.0001 ) {
794  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
795  << "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
796  << "\n cos^2(theta) = " << sin2Vellminus << " < -0.001"
797  << "\n s = " << s << "\n t_for_s = " << t_for_s
798  << "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
799  << "\n dt = " << dt << "\n EV = " << EV
800  << "\n El2 = " << El2 << "\n modV = " << modV
801  << "\n modl2 = " << modl2 << "\n M2 = " << M2
802  << "\n ml = " << ml << std::endl;
803  ::abort();
804  }
805 
806  EvtVector4R p1, p2, k1, k2;
807  p1.set( M1, 0.0, 0.0, 0.0 );
808  p2.set( EV, modV, 0.0, 0.0 );
809  k2.set( El2, modl2 * cosVellminus, -modl2 * sqrt( sin2Vellminus ),
810  0.0 );
811  k1 = p1 - p2 - k2;
812 
813  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
814  // << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
815  // << "\n mu =" << mu << " Nf =" << Nf
816  // << " res_swch =" << res_swch
817  // << " ias =" << ias
818  // << "\n M1 = " << M1
819  // << "\n M2 = " << M2
820  // << "\n ml = " << ml
821  // << "\n s = " << s
822  // << "\n t_for_s = " << t_for_s
823  // << "\n EV = " << EV
824  // << "\n El1 = " << El1
825  // << "\n El2 = " << El2
826  // << "\n modV = " << modV
827  // << "\n modl1 = " << modl1
828  // << "\n modl2 = " << modl2
829  // << "\n cos(theta) = " << cosVellminus
830  // << "\n p1 =" << p1
831  // << "\n p2 =" << p2
832  // << "\n k1 =" << k1
833  // << "\n k2 =" << k2
834  // << std::endl;
835 
836  // B-meson state preparation at the rest frame of B-meson
837  EvtScalarParticle* scalar_part;
838  EvtParticle* root_part;
839  scalar_part = new EvtScalarParticle;
840 
841  scalar_part->noLifeTime();
842  scalar_part->init( parnum, p1 );
843  root_part = (EvtParticle*)scalar_part;
844  root_part->setDiagonalSpinDensity();
845 
846  // Amplitude initialization
847  EvtId listdaug[3];
848  listdaug[0] = mesnum;
849  listdaug[1] = l1num;
850  listdaug[2] = l2num;
851 
852  EvtAmp amp;
853  amp.init( parnum, 3, listdaug );
854 
855  // Daughters states preparation at the rest frame of B-meson
856  root_part->makeDaughters( 3, listdaug );
857 
858  EvtParticle *vect, *lep1, *lep2;
859  vect = root_part->getDaug( 0 );
860  lep1 = root_part->getDaug( 1 );
861  lep2 = root_part->getDaug( 2 );
862 
863  vect->noLifeTime();
864  lep1->noLifeTime();
865  lep2->noLifeTime();
866 
867  vect->init( mesnum, p2 );
868  lep1->init( l1num, k1 );
869  lep2->init( l2num, k2 );
870 
871  EvtSpinDensity rho;
872  rho.setDiag( root_part->getSpinStates() );
873 
874  // The amplitude calculation at the
875  // "maximum amplitude" kinematical configuration
876  CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, res_swch,
877  ias, CKM_A, CKM_lambda, CKM_barrho, CKM_bareta );
878 
879  // Now find the probability at this q2 and cos theta lepton point
880  double nikmax = rho.normalizedProb( amp.getSpinDensity() );
881 
882  if ( nikmax > maxfoundprob ) {
883  maxfoundprob = nikmax;
884  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
885  // << "\n maxfoundprob ( s =" << s << ", t = " << t_for_s << " ) = "
886  // << maxfoundprob
887  // << "\n k =" << k
888  // << std::endl;
889  }
890 
891  delete scalar_part;
892  // delete root_part;
893  delete vect;
894  delete lep1;
895  delete lep2;
896 
897  } // for(k=0; k<=1000; k++)
898 
899  } // if(res_swch==1)
900 
901  if ( maxfoundprob <= 0.0 ) {
902  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
903  << "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
904  << "\n maxfoundprob = " << maxfoundprob << " <0 or =0!"
905  << "\n res_swch = " << res_swch << std::endl;
906  ::abort();
907  }
908 
909  EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
910  << "\n maxfoundprob (...) = " << maxfoundprob << std::endl;
911 
912  maxfoundprob *= 1.01;
913 
914  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
915  // << "\n ***************************************************************************"
916  // << "\n The function EvtbTosllScalarAmpNew::CalcMaxProb(...) passed with arguments:"
917  // << "\n mu =" << mu << " Nf =" << Nf
918  // << " res_swch =" << res_swch
919  // << " ias =" << ias
920  // << " \n s_at_max = " << s_at_max
921  // << " t_at_max = " << t_at_max
922  // << "\n The distribution maximum maxfoundprob =" << maxfoundprob
923  // << "\n ***************************************************************************"
924  // << std::endl;
925 
926  return maxfoundprob;
927 }
928 
929 // Triangular function
930 double EvtbTosllScalarAmpNew::lambda( double a, double b, double c )
931 {
932  double l;
933 
934  l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b -
935  2.0 * a * c - 2.0 * b * c;
936 
937  return l;
938 }
void setDiag(int n)
EvtComplex GetC7Eff(double mu, double Mw, double mt, int Nf, int ias)
virtual void getScalarFF(EvtId, EvtId, double, double &, double &, double &)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
Definition: EvtReport.cpp:33
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
Evt3Rank3C conj(const Evt3Rank3C &t2)
Definition: Evt3Rank3C.cpp:172
void CalcAmp(EvtParticle *parent, EvtAmp &amp, EvtbTosllFFNew *formFactors, EvtbTosllWilsCoeffNLO *WilsCoeff, double mu, int Nf, int res_swch, int ias, double CKM_A, double CKM_lambda, double CKM_barrho, double CKM_bareta) override
static double getMeanMass(EvtId i)
Definition: EvtPDL.cpp:314
int getSpinStates() const
EvtId getId() const
void makeDaughters(unsigned int ndaug, EvtId *id)
void set(int i, double d)
Definition: EvtVector4R.hh:167
EvtSpinDensity getSpinDensity()
Definition: EvtAmp.cpp:142
static int chg3(EvtId i)
Definition: EvtPDL.cpp:372
virtual EvtDiracSpinor spParent(int) const
Definition: EvtId.hh:27
EvtVector4C EvtLeptonACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
void vertex(const EvtComplex &amp)
Definition: EvtAmp.cpp:454
virtual double getQuarkMass(int)
double mass2() const
Definition: EvtVector4R.hh:100
EvtComplex GetC9Eff(int decay_id, int res_swch, int ias, int Nf, double q2, double m2, double md, double mc, double mu, double mt, double Mw, double ml, double Relambda_qu, double Imlambda_qu)
Definition: EvtAmp.hh:30
double lambda(double a, double b, double c) override
EvtComplex GetC10Eff(double mt, double Mw)
static EvtId getId(const std::string &name)
Definition: EvtPDL.cpp:287
const EvtVector4R & getP4() const
double imag(const EvtComplex &c)
Definition: EvtComplex.hh:235
void init(EvtId part_n, double e, double px, double py, double pz)
double mass() const
void setDiagonalSpinDensity()
EvtParticle * getDaug(int i)
Definition: EvtParticle.cpp:91
EvtVector4C EvtLeptonVCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
void noLifeTime()
Definition: EvtParticle.hh:382
int contains(const EvtId id)
Definition: EvtIdSet.cpp:422
EvtVector4R getP4Restframe() const
void init(EvtId p, int ndaug, EvtId *daug)
Definition: EvtAmp.cpp:68
double real(const EvtComplex &c)
Definition: EvtComplex.hh:230
double normalizedProb(const EvtSpinDensity &d)
double CalcMaxProb(EvtId parnum, EvtId mesnum, EvtId l1num, EvtId l2num, EvtbTosllFFNew *formFactors, EvtbTosllWilsCoeffNLO *WilsCoeff, double mu, int Nf, int res_swch, int ias, double CKM_A, double CKM_lambda, double CKM_barrho, double CKM_bareta) override