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.
Evtbs2llGammaISRFSRAmp.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"
37 
40 
41 #include <cstdlib>
42 
43 // input: *parent - the pointer to the parent particle (B-meson, the
44 // object of the EvtParticle class);
45 // *formFactors - the pointer to instance of EvtbTosllGammaFF class object;
46 // *WilsCoeff - the pointer to the Standart Model Wilson Coefficients class;
47 // mu - the scale parameter, GeV;
48 // Nf - number of "effective" flavors (for b-quark Nf=5);
49 // sr - state radiation type:
50 // = 0 the ISR only,
51 // = 1 the FSR only,
52 // = 2 both ISR + FSR (== BSTOGLLMNT model);
53 // res_swch - resonant switching parameter:
54 // = 0 the resonant contribution switched OFF,
55 // = 1 the resonant contribution switched ON;
56 // ias - switching parameter for \alpha_s(M_Z) value:
57 // = 0 PDG 1sigma minimal alpha_s(M_Z),
58 // = 1 PDG average value alpha_s(M_Z),
59 // = 2 PDG 1sigma maximal alpha_s(M_Z).
60 // Egamma_min - photon energy cut, GeV;
61 // Wolfenstein parameterization for CKM matrix
62 // CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
63 
65  Evtbs2llGammaFF* formFactors,
66  EvtbTosllWilsCoeffNLO* WilsCoeff,
67  double mu, int Nf, int sr, int res_swch,
68  int ias, double Egamma_min, double CKM_A,
69  double CKM_lambda, double CKM_barrho,
70  double CKM_bareta, double mumumass_min )
71 {
72  // FILE *mytest;
73 
74  int iG = 0; // photon is the first daughter particle
75  int il1 = 1,
76  il2 = 2; // leptons are the second and thirds daughter particles
77 
78  EvtComplex unit1( 1.0, 0.0 ); // real unit
79  EvtComplex uniti( 0.0, 1.0 ); // imaginary unit
80 
81  double M1 = parent->mass(); // B - meson mass, GeV
82  double ml = parent->getDaug( il1 )->mass(); // leptonic mass, GeV
83  double mq = 0.0; // light quark mass from the dispersion QM, GeV
84  double mc = formFactors->getQuarkMass(
85  4 ); // m_c mass from the dispersion QM, GeV
86  double mb = formFactors->getQuarkMass(
87  5 ); // m_b mass from the dispersion QM, GeV
88  double Mw = 80.403; // GeV W-boson mass, GeV
89  double mt = 174.2; // GeV t-quark mass, GeV
90  double fb = 0.0; // leptonic decay constant of B-meson, Gev
91 
92  EvtComplex Vtb, Vtq, Vub, Vuq, Vcb,
93  Vcq; // V_{tb}, V_{tq}, V_{ub}, V_{uq}, V_{cb}, V_{cq}
94  EvtComplex CKM_factor; // V^*_{tq}*V_{tb}, where q={d,s}
95  EvtComplex lambda_qu; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}, where q={d,s}
96  EvtComplex lambda_qc; // V^*_{cq}*V_{cb}/V^*_{tq}*V_{tb}, where q={d,s}
97  double Relambda_qu, Imlambda_qu;
98 
99  // to find charges of ell^+ and ell^- in the B-meson daughters
100  int charge1 = EvtPDL::chg3( parent->getDaug( il1 )->getId() );
101  int charge2 = EvtPDL::chg3( parent->getDaug( il2 )->getId() );
102  if ( charge1 == 0 || charge2 == 0 ) {
103  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
104  << "\n\n The function EvtbsTollGammaAmp::CalcAmp(...)"
105  << "\n Error in the leptonic charge getting!"
106  << "\n charge1 =" << charge1
107  << "\n charge2 =" << charge2 << "\n charge gamma ="
108  << EvtPDL::chg3( parent->getDaug( iG )->getId() )
109  << "\n number of daughters =" << parent->getNDaug() << std::endl;
110  ::abort();
111  }
112 
113  EvtParticle* lepPlus = 0;
114  EvtParticle* lepMinus = 0;
115 
116  lepPlus = ( charge1 > charge2 )
117  ? parent->getDaug( il1 )
118  : parent->getDaug( il2 ); // positive charged
119  lepMinus = ( charge1 < charge2 )
120  ? parent->getDaug( il1 )
121  : parent->getDaug( il2 ); // negative charged
122 
123  EvtVector4R p = parent->getP4Restframe(); // B-meson momentum in the B-rest frame
124  EvtVector4R k =
125  parent->getDaug( iG )->getP4(); // 4-momentum of photon in the B-rest frame
126  EvtVector4R q = p - k; // transition 4-momentum q=p-k in the B-rest frame
127  EvtVector4R p_1; // 4-momentum of ell^+ in the B-rest frame
128  EvtVector4R p_2; // 4-momentum of ell^- in the B-rest frame
129 
130  // the preparation of the leptonic 4-momentums in the B-rest frame
131  if ( charge1 > charge2 ) {
132  p_1 = parent->getDaug( il1 )->getP4();
133  p_2 = parent->getDaug( il2 )->getP4();
134  } else {
135  p_1 = parent->getDaug( il2 )->getP4();
136  p_2 = parent->getDaug( il1 )->getP4();
137  }
138 
139  EvtVector4R p_minus_p_1 =
140  p - p_1; // transition momentum of the B-meson and antilepton p-p_1
141  EvtVector4R p_minus_p_2 =
142  p - p_2; // transition momentum of the B-meson and lepton p-p_2
143 
144  double q2 = q.mass2(); // Mandelstam variable s=q^2
145  double p2 = p.mass2(); // p^2=M1^2
146  double t = p_minus_p_1.mass2(); // Mandelstam variable t=(p-p_1)^2
147  double u = p_minus_p_2.mass2(); // Mandelstam variable u=(p-p_2)^2
148 
149  // scalar products
150  double pk = 0.5 * ( p2 - q2 ); // (p*k)
151  double p1k = 0.5 * ( pow( ml, 2.0 ) - u ); // (p1*k)
152  double p2k = 0.5 * ( pow( ml, 2.0 ) - t ); // (p2*k)
153 
154  double hatq2 = q2 / ( M1 * M1 ); // \hat s = q^2/M_1^2
155  double Egam = 0.5 * M1 *
156  ( 1 - hatq2 ); // photon energy in the B-meson rest frame
157 
158  EvtVector4R hatp = p / M1;
159  EvtVector4R hatk = k / M1;
160 
161  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
162  // << "\n\n The function EvtbsTollGammaISRFSRAmp::CalcAmp(...)"
163  // << "\n q = p-k =" << p-k << " q^2 = " << (p-k).mass2()
164  // << "\n q = p1+p2 =" << p_1+p_2 << " q^2 = " << (p_1+p_2).mass2()
165  // << "\n m_ell =" << parent->getDaug(il1)->mass()
166  // << "\n m_ell =" << parent->getDaug(il2)->mass()
167  // << "\n m_gamma =" << parent->getDaug(iG)->mass()
168  // << std::endl;
169 
170  EvtId idparent = parent->getId(); // B-meson Id
171 
172  if ( idparent == EvtPDL::getId( std::string( "B_s0" ) ) ||
173  idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) ) {
174  mq = formFactors->getQuarkMass( 3 ); // m_s mass from the dispersion QM
175  fb = 0.24; // leptonic decay constant
176  // V_{ts}
177  Vtq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) +
178  pow( CKM_lambda, 2.0 ) *
179  ( CKM_barrho * unit1 + CKM_bareta * uniti ) /
180  sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
181  Vtq = -CKM_A * pow( CKM_lambda, 2.0 ) * Vtq;
182  // V_{us}
183  Vuq = CKM_lambda * unit1;
184  // V_{cs}
185  Vcq = unit1 - 0.5 * pow( CKM_lambda, 2.0 ) -
186  0.125 * pow( CKM_lambda, 4.0 ) * ( 1.0 + 4.0 * pow( CKM_A, 2.0 ) );
187  }
188 
189  if ( idparent == EvtPDL::getId( std::string( "B0" ) ) ||
190  idparent == EvtPDL::getId( std::string( "anti-B0" ) ) ) {
191  mq = formFactors->getQuarkMass( 2 ); // m_d mass from the dispersion QM
192  fb = 0.20; // leptonic decay constant
193  // V_{td}
194  Vtq = unit1 - ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) *
195  ( CKM_barrho * unit1 + CKM_bareta * uniti ) /
196  sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
197  Vtq = CKM_A * pow( CKM_lambda, 3.0 ) * Vtq;
198  // V_{ud}
199  Vuq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) -
200  0.125 * pow( CKM_lambda, 4.0 ) );
201  // V_{cd}
202  Vcq = unit1 *
203  ( -CKM_lambda +
204  0.5 * pow( CKM_A, 2.0 ) * pow( CKM_lambda, 5.0 ) *
205  ( 1.0 - 2.0 * ( CKM_barrho * unit1 + CKM_bareta * uniti ) /
206  sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ) ) );
207  }
208 
209  if ( mq < 0.001 ) {
210  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
211  << "\n\n The function EvtbsTollGammaISRFSRAmp::CalcAmp(..// 4-momentum of ell^+.)"
212  << "\n Error in the model set!"
213  << " mq = " << mq << std::endl;
214  ::abort();
215  }
216 
217  Vtb = unit1 * ( 1.0 - 0.5 * pow( CKM_A * CKM_lambda * CKM_lambda,
218  2.0 ) ); // V_{tb}
219  Vub = CKM_A * pow( CKM_lambda, 3.0 ) *
220  ( CKM_barrho * unit1 - CKM_bareta * uniti ) /
221  sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); // V_{ub}
222  Vcb = unit1 * CKM_A * pow( CKM_lambda, 2.0 ); // V_{cb}
223 
224  CKM_factor = conj( Vtq ) * Vtb; // V^*_{tq}*V_{tb}
225 
226  lambda_qu = conj( Vuq ) * Vub /
227  CKM_factor; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}
228  Relambda_qu = real( lambda_qu );
229  Imlambda_qu = imag( lambda_qu );
230 
231  lambda_qc = conj( Vcq ) * Vcb /
232  CKM_factor; // V^*_{cq}*V_{cb}/V^*_{tq}*V_{tb}
233 
234  // The Wilson Coefficients preparation according to the paper
235  // A.J.Buras, M.Munz, Phys.Rev.D52, p.189 (1995)
236  double c1, c2;
237  EvtComplex a1, c7gam, c9eff_b2q, c9eff_barb2barq, c10a;
238 
239  // foton energy cut and removal of the J/psi amd psi' resonant area
240  if ( Egam < Egamma_min || ( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) ||
241  ( q2 <= mumumass_min * mumumass_min ) ) {
242  c1 = 0.0;
243  c2 = 0.0;
244  a1 = unit1 * 0.0;
245  c7gam = unit1 * 0.0;
246  c9eff_b2q = unit1 * 0.0;
247  c9eff_barb2barq = unit1 * 0.0;
248  c10a = unit1 * 0.0;
249  } else {
250  c1 = WilsCoeff->C1( mu, Mw, Nf, ias );
251  c2 = WilsCoeff->C2( mu, Mw, Nf, ias );
252  a1 = unit1 * ( c1 + c2 / 3.0 );
253  c7gam = WilsCoeff->GetC7Eff( mu, Mw, mt, Nf, ias );
254  c9eff_b2q = WilsCoeff->GetC9Eff( 0, res_swch, ias, Nf, q2, mb, mq, mc, mu,
255  mt, Mw, ml, Relambda_qu, Imlambda_qu );
256  c9eff_barb2barq = WilsCoeff->GetC9Eff( 1, res_swch, ias, Nf, q2, mb, mq,
257  mc, mu, mt, Mw, ml, Relambda_qu,
258  Imlambda_qu );
259  c10a = WilsCoeff->GetC10Eff( mt, Mw );
260  }
261 
262  EvtComplex Fv,
263  Fa; // The change of the sign is included in the amplitudes definition!
264  EvtComplex Ftv_b2q, Ftv_barb2barq;
265  EvtComplex Fta_b2q, Fta_barb2barq;
266 
267  // foton energy cut and removal of the J/psi amd psi' resonant area
268  if ( Egam < Egamma_min || ( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) ||
269  ( q2 <= mumumass_min * mumumass_min ) ) {
270  fb = 0.0;
271  Fa = unit1 * 0.0;
272  Fv = unit1 * 0.0;
273  Fta_b2q = unit1 * 0.0;
274  Fta_barb2barq = unit1 * 0.0;
275  Ftv_b2q = unit1 * 0.0;
276  Ftv_barb2barq = unit1 * 0.0;
277  } else {
278  if ( fb < 0.01 ) {
279  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
280  << "\n\n The function EvtbsTollGammaISRFSRAmp::CalcAmp(...)"
281  << "\n Leptonic decay constant fb is not uninitialized in this function!"
282  << " fb = " << fb << std::endl;
283  ::abort();
284  }
285 
286  // For \bar B^0_q -> l^+ l^- gamma
287  formFactors->getPhotonFF( 0, fb, parent->getId(), q2, M1, mb, mq, c7gam,
288  a1, lambda_qu, lambda_qc, Fv, Fa, Ftv_b2q,
289  Fta_b2q );
290 
291  // For B^0_q -> l^+ l^- gamma
292  formFactors->getPhotonFF( 1, fb, parent->getId(), q2, M1, mb, mq, c7gam,
293  a1, lambda_qu, lambda_qc, Fv, Fa,
294  Ftv_barb2barq, Fta_barb2barq );
295  }
296 
297  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
298  // << "\n ============================================================================"
299  // << "\n ============================================================================"
300  // << "\n\n The function Evtbs2llGammaISRFSRAmp::CalcAmp(...) passed."
301  // << "\n Particle masses:"
302  // << "\n B - meson mass M1 = " << M1
303  // << "\n photon minimum E = " << Egamma_min
304  // << "\n q2 = " << q2
305  // << "\n leptonic mass ml = " << ml
306  // << "\n light quark mass = " << mq
307  // << "\n c - quark mass mc = " << mc
308  // << "\n b - quark mass mb = " << mb
309  // << "\n t - quark mass mt = " << mt
310  // << "\n W - boson mass Mw = " << Mw
311  // << "\n ============================================================================"
312  // << "\n Input parameters:"
313  // << "\n scale parameter mu = " << mu
314  // << "\n number of flavors Nf = " << Nf
315  // << "\n state radiation switching = " << sr
316  // << "\n resonant switching = " << res_swch
317  // << "\n parameter for alpha_s(M_Z) = " << ias
318  // << "\n photon energy cut (GeV) = " << Egamma_min
319  // << "\n ============================================================================"
320  // << "\n Form-factors"
321  // << "\n Egam = " << Egam
322  // << "\n Egamma_min = " << Egamma_min
323  // << "\n Fv = " << Fv
324  // << "\n Fa = " << Fa
325  // << "\n Ftv_b2q = " << Ftv_b2q
326  // << "\n Fta_b2q = " << Fta_b2q
327  // << "\n Ftv_barb2barq = " << Ftv_barb2barq
328  // << "\n Fta_barb2barq = " << Fta_barb2barq
329  // << "\n ============================================================================"
330  // << "\n Wilson Coefficients:"
331  // << "\n Egam = " << Egam
332  // << "\n Egamma_min = " << Egamma_min
333  // << "\n Re(c7gam) = " << real(c7gam)
334  // << " Im(c7gam) = " << imag(c7gam)
335  // << "\n Re(c9eff_b2q) = " << real(c9eff_b2q)
336  // << " Im(c9eff_b2q) = " << imag(c9eff_b2q)
337  // << "\n Re(c9eff_barb2barq) = " << real(c9eff_barb2barq)
338  // << " Im(c9eff_barb2barq) = " << imag(c9eff_barb2barq)
339  // << "\n Re(c10a) = " << real(c10a)
340  // << " Im(c10a) = " << imag(c10a)
341  // << std::endl;
342 
343  // Hadronic matrix element coefficients
344  EvtComplex a_b2q, a_barb2barq, b_b2q, b_barb2barq, e_b2q, e_barb2barq,
345  f_b2q, f_barb2barq;
346  EvtComplex brammS, brammT;
347 
348  a_b2q = c9eff_b2q * Fv + 2.0 * c7gam * Ftv_b2q * mb * M1 / q2;
349  a_barb2barq = c9eff_barb2barq * Fv +
350  2.0 * c7gam * Ftv_barb2barq * mb * M1 / q2;
351 
352  b_b2q = ( c9eff_b2q * Fa + 2.0 * c7gam * Fta_b2q * mb * M1 / q2 ) * pk /
353  ( M1 * M1 );
354  b_barb2barq = ( c9eff_barb2barq * Fa +
355  2.0 * c7gam * Fta_barb2barq * mb * M1 / q2 ) *
356  pk / ( M1 * M1 );
357 
358  e_b2q = c10a * Fv;
359  e_barb2barq = e_b2q;
360 
361  f_b2q = c10a * Fa * pk / ( M1 * M1 );
362  f_barb2barq = f_b2q;
363 
364  brammS = 0.0; // in the Bq-meson rest frame!
365  brammT = 0.5 * c10a * ml * fb *
366  ( 1.0 / p2k + 1.0 / p1k ); // for Bramsstrahlung
367 
368  // The separation of the ISR and FSR contributions
369  if ( sr == 0 ) { // ISR only
370  brammS = 0.0;
371  brammT = 0.0;
372  }
373  if ( sr == 1 ) { // FSR only
374  a_b2q = 0.0;
375  a_barb2barq = 0.0;
376  b_b2q = 0.0;
377  b_barb2barq = 0.0;
378  e_b2q = 0.0;
379  e_barb2barq = 0.0;
380  f_b2q = 0.0;
381  f_barb2barq = 0.0;
382  }
383 
384  EvtTensor4C T1, T2; // hadronic matrix element tensor structures
385  EvtVector4C E1, E2;
386  EvtComplex E3;
387 
388  EvtVector4C epsG; // photon polarisation vector
389 
390  int i; // photon polarisations counter
391 
392  EvtVector4C lvc11, lvc12; // spin structures for
393  EvtVector4C lvc21, lvc22; // the leptonic vector current
394 
395  EvtVector4C lac11, lac12; // spin structures for
396  EvtVector4C lac21, lac22; // the leptonic axial current
397 
398  EvtComplex lsc11, lsc12; // spin structures for
399  EvtComplex lsc21, lsc22; // the leptonic scalar current
400 
401  EvtTensor4C ltc11, ltc12; // spin structures for
402  EvtTensor4C ltc21, ltc22; // the leptonic tensor current
403 
404  // B - and barB - mesons descriptors
405  static EvtIdSet bmesons( "anti-B0", "anti-B_s0" );
406  static EvtIdSet bbarmesons( "B0", "B_s0" );
407 
408  EvtId parentID = parent->getId();
409 
410  if ( bmesons.contains( parentID ) ) {
411  // The amplitude for the decay barB -> gamma ell^+ ell^- or
412  // b \bar q -> gamma ell^+ ell^-
413 
414  T1 = -a_b2q * unit1 * dual( EvtGenFunctions::directProd( hatp, hatk ) ) -
415  b_b2q * uniti * EvtTensor4C::g();
416 
417  T2 = -e_b2q * unit1 * dual( EvtGenFunctions::directProd( hatp, hatk ) ) -
418  f_b2q * uniti * EvtTensor4C::g();
419 
420  // spin combinations for vector lepton current
421  lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
422  lepMinus->spParent( 0 ) );
423  lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
424  lepMinus->spParent( 0 ) );
425  lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
426  lepMinus->spParent( 1 ) );
427  lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
428  lepMinus->spParent( 1 ) );
429 
430  lac11 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
431  lepMinus->spParent( 0 ) );
432  lac21 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
433  lepMinus->spParent( 0 ) );
434  lac12 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
435  lepMinus->spParent( 1 ) );
436  lac22 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
437  lepMinus->spParent( 1 ) );
438 
439  lsc11 = EvtLeptonSCurrent( lepPlus->spParent( 0 ),
440  lepMinus->spParent( 0 ) );
441  lsc21 = EvtLeptonSCurrent( lepPlus->spParent( 1 ),
442  lepMinus->spParent( 0 ) );
443  lsc12 = EvtLeptonSCurrent( lepPlus->spParent( 0 ),
444  lepMinus->spParent( 1 ) );
445  lsc22 = EvtLeptonSCurrent( lepPlus->spParent( 1 ),
446  lepMinus->spParent( 1 ) );
447 
448  // \epsilon^{\alpha\beta\mu\nu}*TCurrent_{\mu\nu}
449  ltc11 = dual( EvtLeptonTCurrent( lepPlus->spParent( 0 ),
450  lepMinus->spParent( 0 ) ) );
451  ltc21 = dual( EvtLeptonTCurrent( lepPlus->spParent( 1 ),
452  lepMinus->spParent( 0 ) ) );
453  ltc12 = dual( EvtLeptonTCurrent( lepPlus->spParent( 0 ),
454  lepMinus->spParent( 1 ) ) );
455  ltc22 = dual( EvtLeptonTCurrent( lepPlus->spParent( 1 ),
456  lepMinus->spParent( 1 ) ) );
457 
458  // summing up photon polarisations
459  for ( i = 0; i < 2; i++ ) {
460  // conjaction of epsG (photon polarization vector)
461  EvtVector4C epsG = parent->getDaug( 0 )->epsParentPhoton( i ).conj();
462 
463  // de-escalation T with epsG
464  E1 = T1.cont2( epsG );
465  E2 = T2.cont2( epsG );
466  E3 = ( epsG * hatp ) * brammS;
467 
468  // foton energy cut and removal of the J/psi amd psi' resonant area
469  if ( Egam < Egamma_min ||
470  ( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) ||
471  ( q2 <= mumumass_min * mumumass_min ) ) {
472  CKM_factor = 0.0 * unit1;
473  }
474 
475  // 1
476  amp.vertex( i, 0, 0,
477  CKM_factor *
478  ( lvc11 * E1 + lac11 * E2 + uniti * lsc11 * E3 +
479  uniti * ( ( ltc11.cont2( hatp ) ) * epsG ) *
480  brammT ) );
481  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
482  // << "\n 1" << CKM_factor*(lvc11*E1+lac11*E2+uniti*lsc11*E3+uniti*((ltc11.cont2(hatp))*epsG)*brammT)
483  // << std::endl;
484 
485  // 2
486  amp.vertex( i, 0, 1,
487  CKM_factor *
488  ( lvc12 * E1 + lac12 * E2 + uniti * lsc12 * E3 +
489  uniti * ( ( ltc12.cont2( hatp ) ) * epsG ) *
490  brammT ) );
491  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
492  // << "\n 2" << CKM_factor*(lvc12*E1+lac12*E2+uniti*lsc12*E3+uniti*((ltc12.cont2(hatp))*epsG)*brammT)
493  // << std::endl;
494 
495  // 3
496  amp.vertex( i, 1, 0,
497  CKM_factor *
498  ( lvc21 * E1 + lac21 * E2 + uniti * lsc21 * E3 +
499  uniti * ( ( ltc21.cont2( hatp ) ) * epsG ) *
500  brammT ) );
501  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
502  // << "\n 3" << CKM_factor*(lvc21*E1+lac21*E2+uniti*lsc21*E3+uniti*((ltc21.cont2(hatp))*epsG)*brammT)
503  // << std::endl;
504 
505  // 4
506  amp.vertex( i, 1, 1,
507  CKM_factor *
508  ( lvc22 * E1 + lac22 * E2 + uniti * lsc22 * E3 +
509  uniti * ( ( ltc22.cont2( hatp ) ) * epsG ) *
510  brammT ) );
511  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
512  // << "\n 4" << CKM_factor*(lvc22*E1+lac22*E2+uniti*lsc22*E3+uniti*((ltc22.cont2(hatp))*epsG)*brammT)
513  // << std::endl;
514  }
515 
516  } else {
517  if ( bbarmesons.contains( parentID ) ) {
518  // The amplitude for the decay B -> gamma ell^+ ell^- or
519  // q bar b -> gamma ell^+ ell^-
520 
521  T1 = -a_barb2barq * unit1 *
522  dual( EvtGenFunctions::directProd( hatp, hatk ) ) +
523  b_barb2barq * uniti * EvtTensor4C::g();
524 
525  T2 = -e_barb2barq * unit1 *
526  dual( EvtGenFunctions::directProd( hatp, hatk ) ) +
527  f_barb2barq * uniti * EvtTensor4C::g();
528 
529  lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
530  lepMinus->spParent( 1 ) );
531  lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
532  lepMinus->spParent( 1 ) );
533  lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
534  lepMinus->spParent( 0 ) );
535  lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
536  lepMinus->spParent( 0 ) );
537 
538  lac11 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
539  lepMinus->spParent( 1 ) );
540  lac21 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
541  lepMinus->spParent( 1 ) );
542  lac12 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
543  lepMinus->spParent( 0 ) );
544  lac22 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
545  lepMinus->spParent( 0 ) );
546 
547  lsc11 = EvtLeptonSCurrent( lepPlus->spParent( 1 ),
548  lepMinus->spParent( 1 ) );
549  lsc21 = EvtLeptonSCurrent( lepPlus->spParent( 0 ),
550  lepMinus->spParent( 1 ) );
551  lsc12 = EvtLeptonSCurrent( lepPlus->spParent( 1 ),
552  lepMinus->spParent( 0 ) );
553  lsc22 = EvtLeptonSCurrent( lepPlus->spParent( 0 ),
554  lepMinus->spParent( 0 ) );
555 
556  // \epsilon^{\alpha\beta\mu\nu}*TCurrent_{\mu\nu}
557  ltc11 = dual( EvtLeptonTCurrent( lepPlus->spParent( 1 ),
558  lepMinus->spParent( 1 ) ) );
559  ltc21 = dual( EvtLeptonTCurrent( lepPlus->spParent( 0 ),
560  lepMinus->spParent( 1 ) ) );
561  ltc12 = dual( EvtLeptonTCurrent( lepPlus->spParent( 1 ),
562  lepMinus->spParent( 0 ) ) );
563  ltc22 = dual( EvtLeptonTCurrent( lepPlus->spParent( 0 ),
564  lepMinus->spParent( 0 ) ) );
565 
566  // summing up photon polarisations
567  for ( i = 0; i < 2; i++ ) {
568  EvtVector4C barepsG = parent->getDaug( 0 )->epsParentPhoton( i );
569 
570  E1 = T1.cont2( barepsG );
571  E2 = T2.cont2( barepsG );
572  E3 = ( barepsG * hatp ) * brammS;
573 
574  // foton energy cut and removal of the J/psi amd psi' resonant area
575  if ( Egam < Egamma_min ||
576  ( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) ||
577  ( q2 <= mumumass_min * mumumass_min ) ) {
578  CKM_factor = 0.0 * unit1;
579  }
580 
581  amp.vertex(
582  i, 1, 1,
583  conj( CKM_factor ) *
584  ( lvc11 * E1 + lac11 * E2 + uniti * lsc11 * E3 + // -?
585  uniti * ( ( ltc11.cont2( hatp ) ) * epsG ) * brammT ) );
586  amp.vertex(
587  i, 1, 0,
588  conj( CKM_factor ) *
589  ( lvc12 * E1 + lac12 * E2 + uniti * lsc12 * E3 + // -?
590  uniti * ( ( ltc12.cont2( hatp ) ) * epsG ) * brammT ) );
591  amp.vertex(
592  i, 0, 1,
593  conj( CKM_factor ) *
594  ( lvc21 * E1 + lac21 * E2 + uniti * lsc21 * E3 + // -?
595  uniti * ( ( ltc21.cont2( hatp ) ) * epsG ) * brammT ) );
596  amp.vertex(
597  i, 0, 0,
598  conj( CKM_factor ) *
599  ( lvc22 * E1 + lac22 * E2 + uniti * lsc22 * E3 + // -?
600  uniti * ( ( ltc22.cont2( hatp ) ) * epsG ) * brammT ) );
601  }
602 
603  } else {
604  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
605  << "\n\n The function Evtbs2llGammaISRFSRAmp::CalcAmp(...)"
606  << "\n Wrong B-meson number" << std::endl;
607  ::abort();
608  }
609  }
610 }
611 
612 //
613 // The decays B -> Gamma ell^+ ell^- maximum probability calculation for the
614 // d^2\Gamma/dq^2 d\cos\theta distribution.
615 //
616 // \theta - the angle between the photon and ell^- directions in the
617 // B-meson rest frame.
618 //
619 // If ias=0 (nonresonant case), the maximum is achieved at q2
620 // B0s: q2 = 4*ml^2, Mphi^2, q_max^2;
621 // B0d: q2 = 4*ml^2, Mrho^2, Momega^2, q_max^2;
622 // If ias=1 (resonant case), the maximum in the same points, because the
623 // resonat area is remove
624 //
626  EvtId parnum, EvtId photnum, EvtId l1num, EvtId l2num,
627  Evtbs2llGammaFF* formFactors, EvtbTosllWilsCoeffNLO* WilsCoeff, double mu,
628  int Nf, int sr, int res_swch, int ias, double Egamma_min, double CKM_A,
629  double CKM_lambda, double CKM_barrho, double CKM_bareta, double mumumass_min )
630 {
631  double maxfoundprob = -100.0; // maximum of the probability
632 
633  double M1 = EvtPDL::getMeanMass( parnum ); // B - meson mass
634  double ml = EvtPDL::getMeanMass( l1num ); // leptonic mass
635 
636  double Mrho = EvtPDL::getMeanMass(
637  EvtPDL::getId( std::string( "rho0" ) ) ); // mass of the rho-meson, MeV
638  double Momega = EvtPDL::getMeanMass( EvtPDL::getId(
639  std::string( "omega" ) ) ); // mass of the omega-meson, MeV
640  double Mphi = EvtPDL::getMeanMass(
641  EvtPDL::getId( std::string( "phi" ) ) ); // mass of the phi-meson, MeV
642 
643  // EvtGenReport(EVTGEN_NOTICE,"EvtGen")
644  // << "\n M1 = " << M1
645  // << "\n ml = " << ml
646  // << "\n Mrho = " << Mrho
647  // << "\n Momega = " << Momega
648  // << "\n Mphi = " << Mphi
649  // << "\n Egamma_min = " << Egamma_min
650  // << std::endl;
651 
652  double list_of_max_q2_points[5];
653  list_of_max_q2_points[0] = pow( 2.0 * ml, 2.0 );
654  list_of_max_q2_points[1] = pow( Mrho, 2.0 );
655  list_of_max_q2_points[2] = pow( Momega, 2.0 );
656  list_of_max_q2_points[3] = pow( Mphi, 2.0 );
657  list_of_max_q2_points[4] =
658  pow( M1, 2.0 ) - 2.0 * M1 * Egamma_min; // q^2_max at photon energy cut
659 
660  // if(list_of_max_points[4]<0){
661  // EvtGenReport(EVTGEN_ERROR,"EvtGen")
662  // << "\n\n In the function EvtbsTollGammaAmp::CalcScalarMaxProb(...)"
663  // << "\n Bad photon energy cut: Egamma_min > M1 in the rest frame of B-meson!"
664  // << "\n q2_max = " << list_of_max_points[4]
665  // << "\n M1 = " << M1
666  // << "\n Egamma_min = " << Egamma_min
667  // << std::endl;
668  // ::abort();
669  // }
670 
671  if ( Egamma_min > Mrho ) {
672  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
673  << "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)"
674  << "\n Bad photon energy cut: Egamma_min > M_rho0 in the rest frame of B-meson."
675  << "\n Mrho = " << Mrho << "\n Egamma_min = " << Egamma_min
676  << std::endl;
677  ::abort();
678  }
679 
680  if ( Egamma_min <= 0 ) {
681  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
682  << "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)"
683  << "\n Bad photon energy cut: Egamma_min <= 0 in the rest frame of B-meson."
684  << "\n Egamma_min = " << Egamma_min << std::endl;
685  ::abort();
686  }
687 
688  if ( res_swch == 0 || res_swch == 1 ) {
689  int i_list;
690  for ( i_list = 0; i_list <= 4; i_list++ ) {
691  double s; // mandelstam variable "s";
692  double t_minus; // minimum and maximum of the mandelstam variable "t"
693  double t_plus; // as function of the mandelstam variable "s=q2";
694  double t_for_s;
695  int ijk; // counter for variable "t";
696  int max_ijk; // maximal value of this counter;
697 
698  s = list_of_max_q2_points[i_list];
699 
700  t_plus = pow( M1, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
701  t_plus = t_plus + sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
702  ( pow( M1, 2.0 ) - s );
703  t_plus *= 0.5;
704 
705  t_minus = pow( M1, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
706  t_minus = t_minus - sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
707  ( pow( M1, 2.0 ) - s );
708  t_minus *= 0.5;
709 
710  if ( fabs( t_plus - t_minus ) < 0.000001 )
711  t_minus = t_plus;
712 
713  max_ijk = 1000;
714  double dt = ( t_plus - t_minus ) / ( (double)max_ijk );
715  if ( fabs( dt ) < 0.00001 )
716  dt = 0.0;
717 
718  if ( dt < 0.0 ) {
719  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
720  << "\n\n In the function EvtbsTollGammaISRFSRAmp::CalcScalarMaxProb(...)"
721  << "\n dt = " << dt << " < 0."
722  << "\n s = " << s << "\n t_plus = " << t_plus
723  << "\n t_minus = " << t_minus << "\n M1 = " << M1
724  << "\n ml = " << ml << std::endl;
725  ::abort();
726  }
727 
728  for ( ijk = 0; ijk <= max_ijk; ijk++ ) {
729  t_for_s = t_minus + dt * ( (double)ijk );
730 
731  // B-meson rest frame particles and they kinematics inicialization
732  double Eg, El2;
733  Eg = ( pow( M1, 2.0 ) - s ) / ( 2.0 * M1 ); // photon energy
734  El2 = ( s + t_for_s - pow( ml, 2.0 ) ) /
735  ( 2.0 * M1 ); // ell^- energy
736 
737  double modl2;
738  modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
739 
740  double cosBellminus; // angle between the B-meson and ell^- directions
741  cosBellminus = ( pow( ml, 2.0 ) + 2.0 * Eg * El2 - t_for_s ) /
742  ( 2.0 * Eg * modl2 );
743 
744  if ( ( fabs( cosBellminus ) > 1.0 ) &&
745  ( fabs( cosBellminus ) <= 1.0001 ) ) {
746  EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
747  << "\n Debug in the function EvtbsTollGammaISRFSRAmp::CalcMaxProb(...):"
748  << "\n cos(theta) = " << cosBellminus << std::endl;
749  cosBellminus = cosBellminus / fabs( cosBellminus );
750  }
751  if ( fabs( cosBellminus ) > 1.0001 ) {
752  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
753  << "\n\n In the function EvtbsTollGammaISRFSRAmp::CalcMaxProb(...)"
754  << "\n |cos(theta)| = " << fabs( cosBellminus ) << " > 1"
755  << "\n s = " << s << "\n t_for_s = " << t_for_s
756  << "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
757  << "\n dt = " << dt << "\n Eg = " << Eg
758  << "\n El2 = " << El2 << "\n modl2 = " << modl2
759  << "\n ml = " << ml << std::endl;
760  ::abort();
761  }
762 
763  EvtVector4R p, k, p1, p2;
764  p.set( M1, 0.0, 0.0, 0.0 );
765  k.set( Eg, Eg, 0.0, 0.0 );
766  p2.set( El2, modl2 * cosBellminus,
767  -modl2 * sqrt( 1.0 - pow( cosBellminus, 2.0 ) ), 0.0 );
768  p1 = p - k - p2;
769 
770  // B-meson state preparation at the rest frame of B-meson
771  EvtScalarParticle* scalar_part;
772  EvtParticle* root_part;
773  scalar_part = new EvtScalarParticle;
774 
775  scalar_part->noLifeTime();
776  scalar_part->init( parnum, p );
777  root_part = (EvtParticle*)scalar_part;
778  root_part->setDiagonalSpinDensity();
779 
780  // Amplitude initialization
781  EvtId listdaug[3];
782  listdaug[0] = photnum;
783  listdaug[1] = l1num;
784  listdaug[2] = l2num;
785 
786  EvtAmp amp;
787  amp.init( parnum, 3, listdaug );
788 
789  // Daughters states preparation at the rest frame of B-meson
790  root_part->makeDaughters( 3, listdaug );
791 
792  EvtParticle *gamm, *lep1, *lep2;
793  gamm = root_part->getDaug( 0 );
794  lep1 = root_part->getDaug( 1 );
795  lep2 = root_part->getDaug( 2 );
796 
797  gamm->noLifeTime();
798  lep1->noLifeTime();
799  lep2->noLifeTime();
800 
801  gamm->init( photnum, k );
802  lep1->init( l1num, p1 );
803  lep2->init( l2num, p2 );
804 
805  EvtSpinDensity rho;
806  rho.setDiag( root_part->getSpinStates() );
807 
808  // The amplitude calculation at the
809  // "maximum amplitude" kinematical configuration
810  CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, sr,
811  res_swch, ias, Egamma_min, CKM_A, CKM_lambda,
812  CKM_barrho, CKM_bareta, mumumass_min );
813 
814  // Now find the probability at this q2 and cos theta lepton point
815  double nikmax = rho.normalizedProb( amp.getSpinDensity() );
816 
817  if ( nikmax > maxfoundprob ) {
818  double maxfoundprob_old;
819  maxfoundprob_old = maxfoundprob;
820  maxfoundprob = nikmax;
821  EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
822  << "\n maxfoundprob ( s =" << s << ", t = " << t_for_s
823  << " ) = " << maxfoundprob
824  << "\n maxfoundprob_old = " << maxfoundprob_old
825  << "\n ijk =" << ijk << std::endl;
826  }
827 
828  delete scalar_part;
829  // delete root_part;
830  delete gamm;
831  delete lep1;
832  delete lep2;
833 
834  } // for(ijk=0; ijk<=max_ijk; ijk++)
835  } // i_list - variable loop
836  } // if(res_swch==0||res_swch==1)
837  else {
838  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
839  << "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)"
840  << "\n Unexpected value of the variable res_swch !!!"
841  << "\n res_swch = " << res_swch << std::endl;
842  ::abort();
843  }
844 
845  if ( maxfoundprob < 0.0 ) {
846  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
847  << "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)"
848  << "\n maxfoundprob = " << maxfoundprob << " <0 or =0!"
849  << "\n mu =" << mu << " Nf =" << Nf << "\n sr =" << sr
850  << " res_swch =" << res_swch << " ias =" << ias
851  << "\n Egamma_min =" << Egamma_min << "\n CKM_A = " << CKM_A
852  << " CKM_lambda = " << CKM_lambda << "\n CKM_barrho = " << CKM_barrho
853  << " CKM_bareta = " << CKM_bareta << std::endl;
854  ::abort();
855  }
856 
857  if ( maxfoundprob == 0.0 ) {
858  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
859  << "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)"
860  << "\n maxfoundprob = " << maxfoundprob << " <0 or =0!"
861  << "\n mu =" << mu << " Nf =" << Nf << "\n sr =" << sr
862  << " res_swch =" << res_swch << " ias =" << ias
863  << "\n Egamma_min =" << Egamma_min << "\n CKM_A = " << CKM_A
864  << " CKM_lambda = " << CKM_lambda << "\n CKM_barrho = " << CKM_barrho
865  << " CKM_bareta = " << CKM_bareta << std::endl;
866  maxfoundprob = 0.00000001;
867  }
868 
869  maxfoundprob *= 1.01;
870 
871  EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
872  << "\n **********************************************************************"
873  << "\n The function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...) passed with arguments:"
874  << "\n mu =" << mu << " Nf =" << Nf << "\n sr =" << sr
875  << " res_swch =" << res_swch << " ias =" << ias
876  << "\n CKM_A = " << CKM_A << " CKM_lambda = " << CKM_lambda
877  << "\n Egamma_min =" << Egamma_min << "\n CKM_barrho = " << CKM_barrho
878  << " CKM_bareta = " << CKM_bareta
879  << "\n The distribution maximum maxfoundprob =" << maxfoundprob
880  << "\n **********************************************************************"
881  << std::endl;
882 
883  return maxfoundprob;
884 }
885 
886 // Triangular function
887 double Evtbs2llGammaISRFSRAmp::lambda( double a, double b, double c )
888 {
889  double l;
890 
891  l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b -
892  2.0 * a * c - 2.0 * b * c;
893 
894  return l;
895 }
EvtTensor3C directProd(const EvtVector3C &c1, const EvtVector3C &c2)
void setDiag(int n)
EvtTensor4C EvtLeptonTCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
static const EvtTensor4C & g()
Definition: EvtTensor4C.cpp:44
EvtComplex GetC7Eff(double mu, double Mw, double mt, int Nf, int ias)
double lambda(double a, double b, double c)
EvtTensor4C dual(const EvtTensor4C &t2)
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
virtual void getPhotonFF(int, double, EvtId, double, double, double, double, EvtComplex, EvtComplex, EvtComplex, EvtComplex, EvtComplex &, EvtComplex &, EvtComplex &, EvtComplex &)
EvtVector4C cont2(const EvtVector4C &v4) const
static double getMeanMass(EvtId i)
Definition: EvtPDL.cpp:314
int getSpinStates() const
virtual EvtVector4C epsParentPhoton(int i)
EvtId getId() const
void makeDaughters(unsigned int ndaug, EvtId *id)
const double a1
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)
size_t getNDaug() const
void vertex(const EvtComplex &amp)
Definition: EvtAmp.cpp:454
double CalcMaxProb(EvtId parnum, EvtId photnum, EvtId l1num, EvtId l2num, Evtbs2llGammaFF *formFactors, EvtbTosllWilsCoeffNLO *WilsCoeff, double mu, int Nf, int sr, int res_swch, int ias, double Egamma_min, double CKM_A, double CKM_lambda, double CKM_barrho, double CKM_bareta, double mumumass_min)
double C2(double mu, double Mw, int Nf, int ias)
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
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
double C1(double mu, double Mw, int Nf, int ias)
void setDiagonalSpinDensity()
EvtParticle * getDaug(int i)
Definition: EvtParticle.cpp:91
EvtVector4C EvtLeptonVCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
void noLifeTime()
Definition: EvtParticle.hh:382
EvtVector4C conj() const
Definition: EvtVector4C.hh:202
int contains(const EvtId id)
Definition: EvtIdSet.cpp:422
EvtComplex EvtLeptonSCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtVector4R getP4Restframe() const
void init(EvtId p, int ndaug, EvtId *daug)
Definition: EvtAmp.cpp:68
double real(const EvtComplex &c)
Definition: EvtComplex.hh:230
void CalcAmp(EvtParticle *parent, EvtAmp &amp, Evtbs2llGammaFF *formFactors, EvtbTosllWilsCoeffNLO *WilsCoeff, double mu, int Nf, int sr, int res_swch, int ias, double Egamma_min, double CKM_A, double CKM_lambda, double CKM_barrho, double CKM_bareta, double mumumass_min)
virtual double getQuarkMass(int)
double normalizedProb(const EvtSpinDensity &d)