MPll.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 HEPfit Collaboration
3  * All rights reserved.
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #include "Flavour.h"
9 #include "MPll.h"
10 #include "gslpp.h"
11 #include <gslpp_complex.h>
12 #include <gsl/gsl_math.h>
13 #include <boost/bind.hpp>
14 
15 
16 
17 
18 
20 : mySM(SM_i),
21  fplus_cache(2, 0.),
22  fT_cache(2, 0.),
23  k2_cache(2, 0.),
24  SL_cache(2, 0.),
25  N_cache(3, 0.),
26  Ycache(3, 0.),
27  H_V0cache(2, 0.),
28  H_Scache(2, 0.),
29  H_P_cache(4, 0.)
30 {
31  lep = lep_i;
32  meson = meson_i;
33  pseudoscalar = pseudoscalar_i;
34  I0_updated = 0;
35  I2_updated = 0;
36  I8_updated = 0;
37 
38  w_sigma0 = gsl_integration_workspace_alloc (50);
39  w_sigma2 = gsl_integration_workspace_alloc (50);
40 
41  w_delta0 = gsl_integration_workspace_alloc (50);
42  w_delta2 = gsl_integration_workspace_alloc (50);
43 }
44 
45 
47 {}
48 
50 {
51  GF = mySM.getGF();
52  ale=mySM.getAle();
56  Mb=mySM.getQuarks(QCD::BOTTOM).getMass(); // add the PS b mass
59  MW=mySM.Mw();
61  mu_b = mySM.getMub();
63 
64  switch(pseudoscalar){
65  case StandardModel::K_P :
69  r_1_fT = mySM.getr_1_fT();
70  r_2_fT = mySM.getr_2_fT();
72  r_2_f0 = mySM.getr_2_f0();
74  break;
75  default:
76  std::stringstream out;
77  out << pseudoscalar;
78  throw std::runtime_error("MPll: pseudoscalar " + out.str() + " not implemented");
79  }
80 
81  h_0 = mySM.geth_0_MP();
83 
84  b = 1.; //please check
85 
86  allcoeff = mySM.getMyFlavour()->ComputeCoeffBMll(mu_b); //check the mass scale, scheme fixed to NDR
87  allcoeffprime = mySM.getMyFlavour()->ComputeCoeffprimeBMll(mu_b); //check the mass scale, scheme fixed to NDR
88 
89  C_1 = (*(allcoeff[LO]))(0) + (*(allcoeff[NLO]))(0);
90  C_2 = ((*(allcoeff[LO]))(1) + (*(allcoeff[NLO]))(1));
91  C_3 = ((*(allcoeff[LO]))(2) + (*(allcoeff[NLO]))(2));
92  C_4 = (*(allcoeff[LO]))(3) + (*(allcoeff[NLO]))(3);
93  C_5 = ((*(allcoeff[LO]))(4) + (*(allcoeff[NLO]))(4));
94  C_6 = ((*(allcoeff[LO]))(5) + (*(allcoeff[NLO]))(5));
95  C_7 = (*(allcoeff[LO]))(6) + (*(allcoeff[NLO]))(6);
96  C_9 = (*(allcoeff[LO]))(8) + (*(allcoeff[NLO]))(8);
97  C_10 = (*(allcoeff[LO]))(9) + (*(allcoeff[NLO]))(9);
98  C_S = (*(allcoeff[LO]))(10) + (*(allcoeff[NLO]))(10);
99  C_P = (*(allcoeff[LO]))(11) + (*(allcoeff[NLO]))(11);
100 
101  C_7p = (*(allcoeffprime[LO]))(6) + (*(allcoeffprime[NLO]))(6);
102  C_9p = (*(allcoeffprime[LO]))(8) + (*(allcoeffprime[NLO]))(8);
103  C_10p = (*(allcoeffprime[LO]))(9) + (*(allcoeffprime[NLO]))(9);
104  C_Sp = (*(allcoeffprime[LO]))(10) + (*(allcoeffprime[NLO]))(10);
105  C_Pp = (*(allcoeffprime[LO]))(11) + (*(allcoeffprime[NLO]))(11);
106 
107  checkCache();
108 
109  std::map<std::pair<double, double>, unsigned int >::iterator it;
110 
111  if (I0_updated == 0) for (it = sigma0Cached.begin(); it != sigma0Cached.end(); ++it) it->second = 0;
112  if (I2_updated == 0) for (it = sigma2Cached.begin(); it != sigma2Cached.end(); ++it) it->second = 0;
113 
114  if (I0_updated == 0) for (it = delta0Cached.begin(); it != delta0Cached.end(); ++it) it->second = 0;
115  if (I2_updated == 0) for (it = delta2Cached.begin(); it != delta2Cached.end(); ++it) it->second = 0;
116 
117 }
118 
120 {
121 
122  if(r_1_fplus == fplus_cache(0) && r_2_fplus == fplus_cache(1)) {
123  fplus_updated = 1;
124  } else {
125  fplus_updated = 0;
126  fplus_cache(0) = r_1_fplus;
127  fplus_cache(1) = r_2_fplus;
128  }
129 
130  if(r_1_fT == fT_cache(0) && r_2_fT == fT_cache(1)) {
131  fT_updated = 1;
132  } else {
133  fT_updated = 0;
134  fT_cache(0) = r_1_fT;
135  fT_cache(1) = r_2_fT;
136  }
137 
138  if(r_2_f0 == f0_cache) {
139  f0_updated = 1;
140  } else {
141  f0_updated = 0;
142  f0_cache = r_2_f0;
143  }
144 
145  if (MM == k2_cache(0) && MP == k2_cache(1) ) {
146  k2_updated = 1;
147  } else {
148  k2_updated = 0;
149  k2_cache(0) = MM;
150  k2_cache(1) = MP;
151  }
152 
153  if (Mlep == beta_cache) {
154  beta_updated = 1;
155  } else {
156  beta_updated = 0;
157  beta_cache = Mlep;
158  }
159 
160  if (MP == lambda_cache) {
163  } else {
164  lambda_updated = 0;
165  F_updated = 0;
166  lambda_cache = MP;
167  }
168 
170 
172 
174 
176 
177  if (Mb == SL_cache(0) && Ms == SL_cache(1) ){
180  } else {
181  SL_updated = 0;
183  SL_cache(0) = Mb;
184  SL_cache(1) = Ms;
185  }
186 
187  if (GF == N_cache(0) && ale == N_cache(1) && MM == N_cache(2) && lambda_t == Nc_cache) {
188  N_updated = 1;
189  } else {
190  N_updated = 0;
191  N_cache(0) = GF;
192  N_cache(1) = ale;
193  N_cache(2) = MM;
194  Nc_cache = lambda_t;
195  }
196 
197  if (C_1 == C_1_cache) {
198  C_1_updated = 1;
199  } else {
200  C_1_updated = 0;
201  C_1_cache = C_1;
202  }
203 
204  if (C_2 == C_2_cache) {
205  C_2_updated = 1;
206  } else {
207  C_2_updated = 0;
208  C_2_cache = C_2;
209  }
210 
211  if (C_3 == C_3_cache) {
212  C_3_updated = 1;
213  } else {
214  C_3_updated = 0;
215  C_3_cache = C_3;
216  }
217 
218  if (C_4 == C_4_cache) {
219  C_4_updated = 1;
220  } else {
221  C_4_updated = 0;
222  C_4_cache = C_4;
223  }
224 
225  if (C_5 == C_5_cache) {
226  C_5_updated = 1;
227  } else {
228  C_5_updated = 0;
229  C_5_cache = C_5;
230  }
231 
232  if (C_6 == C_6_cache) {
233  C_6_updated = 1;
234  } else {
235  C_6_updated = 0;
236  C_6_cache = C_6;
237  }
238 
239  if (C_7 == C_7_cache) {
240  C_7_updated = 1;
241  } else {
242  C_7_updated = 0;
243  C_7_cache = C_7;
244  }
245 
246  if (C_9 == C_9_cache) {
247  C_9_updated = 1;
248  } else {
249  C_9_updated = 0;
250  C_9_cache = C_9;
251  }
252 
253  if (C_10 == C_10_cache) {
254  C_10_updated = 1;
255  } else {
256  C_10_updated = 0;
257  C_10_cache = C_10;
258  }
259 
260  if (C_S == C_S_cache) {
261  C_S_updated = 1;
262  } else {
263  C_S_updated = 0;
264  C_S_cache = C_S;
265  }
266 
267  if (C_P == C_P_cache) {
268  C_P_updated = 1;
269  } else {
270  C_P_updated = 0;
271  C_P_cache = C_P;
272  }
273 
274  if (C_7p == C_7p_cache) {
275  C_7p_updated = 1;
276  } else {
277  C_7p_updated = 0;
278  C_7p_cache = C_7p;
279  }
280 
281  if (C_9p == C_9p_cache) {
282  C_9p_updated = 1;
283  } else {
284  C_9p_updated = 0;
285  C_9p_cache = C_9p;
286  }
287 
288  if (C_10p == C_10p_cache) {
289  C_10p_updated = 1;
290  } else {
291  C_10p_updated = 0;
292  C_10p_cache = C_10p;
293  }
294 
295  if (C_Sp == C_Sp_cache) {
296  C_Sp_updated = 1;
297  } else {
298  C_Sp_updated = 0;
299  C_Sp_cache = C_Sp;
300  }
301 
302  if (C_Pp == C_Pp_cache) {
303  C_Pp_updated = 1;
304  } else {
305  C_Pp_updated = 0;
306  C_Pp_cache = C_Pp;
307  }
308 
309  if (Mb == Ycache(0) && Mc == Ycache(1) ) {
311  } else {
312  Yupdated = 0;
313  Ycache(0) = Mb;
314  Ycache(1) = Mc;
315  }
316 
317  if (MM == H_V0cache(0) && Mb == H_V0cache(1) && h_0 == H_V0Ccache[0] && h_0_1 == H_V0Ccache[1]) {
319  } else {
320  H_V0updated = 0;
321  H_V0cache(0) = MM;
322  H_V0cache(1) = Mb;
323  H_V0Ccache[0] = h_0;
324  H_V0Ccache[1] = h_0_1;
325  }
326 
328 
329  if (Mb == H_Scache(0) && MW == H_Scache(1)) {
331  } else {
332  H_Supdated = 0;
333  H_Scache(0) = Mb;
334  H_Scache(1) = MW;
335  }
336 
337  if (Mb == H_P_cache(0) && MW == H_P_cache(1) && Mlep == H_P_cache(2) && Ms == H_P_cache(3)) {
339  } else {
340  H_P_updated = 0;
341  H_P_cache(0) = Mb;
342  H_P_cache(1) = MW;
343  H_P_cache(2) = Mlep;
344  H_P_cache(3) = Ms;
345  }
346 
349  I8_updated = F_updated * beta_updated * H_Supdated * H_V0updated;
350 
351 }
352 
353 /*******************************************************************************
354  * Transverse Form Factors *
355  * ****************************************************************************/
356 double MPll::LCSR_fit1(double q2, double r_1, double r_2, double m_fit2)
357 {
358  return r_1/( 1. - q2/m_fit2 ) + r_2/pow( ( 1. - q2/m_fit2 ) , 2.) ;
359 
360 }
361 
362 double MPll::LCSR_fit2(double q2, double r_2, double m_fit2)
363 {
364  return r_2/( 1. - q2/m_fit2 ) ;
365 }
366 
367 double MPll::f_plus(double q2)
368 {
370 }
371 
372 double MPll::f_T(double q2)
373 {
374  return LCSR_fit1(q2, r_1_fT, r_2_fT, m_fit2_fT);
375 }
376 
377 double MPll::f_0(double q2)
378 {
379  return LCSR_fit2(q2, r_2_f0, m_fit2_f0);
380 }
381 
383 {
384  return gslpp::complex::i() * sqrt(lambda(q2)) / (2*MM*sqrt(q2)) * f_plus(q2);
385 }
386 
388 {
389  return -V_L(q2);
390 }
391 
393 {
394  return gslpp::complex::i() * sqrt(lambda(q2)*q2) / (2.*MM*MM*(MM+MP)) * f_T(q2);
395 }
396 
398 {
399  return -T_L(q2);
400 }
401 
402 double MPll::S_L(double q2)
403 {
404  return -( MM*MM - MP*MP )/(2*MM*(Mb + Ms)) * ( 1 + Ms/Mb )/( 1 - Ms/Mb ) * f_0(q2);
405 }
406 
407 double MPll::S_R(double q2)
408 {
409  return -S_L(q2);
410 }
411 
412 
413 
414 /*******************************************************************************
415  * Helicity amplitudes *
416  * ****************************************************************************/
418 {
419  return -(4.*GF*MM*ale*lambda_t)/(sqrt(2.)*4.*M_PI);
420 }
421 
422 gslpp::complex MPll::H(double q2, double m)
423 {
424  double x = 4.*m*m/q2;
425  gslpp::complex par;
426 
427  if (x>1.) par = sqrt(x - 1.) * atan( 1. / sqrt(x - 1.) );
428  else par = sqrt(1. - x) * ( log( ( 1. + sqrt(1. - x) ) / sqrt(x) ) - gslpp::complex::i()*M_PI/2.);
429 
430  if (x == 0.) return 8. / 27. * (1. + 3. * gslpp::complex::i() * M_PI);
431  else return - 4./9. * ( log( m*m / q2 ) - 2./3. - x ) - 4./9. * (-2. + x) * par;
432 }
433 
435 {
436  return 4./3. * C_3 + 64./9. * C_5 + 64./27. * C_6 - 1./2. * H(q2,0.) * ( C_3 + 4./3.*C_4 + 16. * C_5 + 64./3.*C_6 )
437  + H(q2, Mc) * ( 4./3.*C_1 + C_2 + 6.*C_3 + 60.*C_5 ) - 1./2. * H(q2, Mb) * ( 7.*C_3 + 4./3.*C_4 + 76.*C_5 + 64./3.*C_6 );
438 }
439 
440 gslpp::complex MPll::H_V(double q2, int bar)
441 {
442  gslpp::complex n;
443  switch(bar){
444  case 0:
445  n = N();
446  break;
447  case 1:
448  n = N().conjugate();
449  break;
450  default:
451  std::stringstream out;
452  out << bar;
453  throw std::runtime_error("H_V: index " + out.str() + " not allowed for an Angular Coefficient");
454  }
455 
456  return -gslpp::complex::i()*n*( ( C_9 + Y(q2) )*V_L(q2)
457  + C_9p*V_R(q2) + MM*MM/q2*( 2*Mb/MM*( C_7*T_L(q2) + C_7p*T_R(q2) ) - 16*M_PI*M_PI*(h_0 + h_0_1 * q2)) );
458 }
459 
460 gslpp::complex MPll::H_A(double q2, int bar)
461 {
462  gslpp::complex n;
463  switch(bar){
464  case 0:
465  n = N();
466  break;
467  case 1:
468  n = N().conjugate();
469  break;
470  default:
471  std::stringstream out;
472  out << bar;
473  throw std::runtime_error("H_A: index " + out.str() + " not allowed for an Angular Coefficient");
474  }
475 
476  return -gslpp::complex::i()*n*( C_10*V_L(q2) + C_10p*V_R(q2) );
477 }
478 
479 gslpp::complex MPll::H_S(double q2, int bar)
480 {
481  gslpp::complex n;
482  switch(bar){
483  case 0:
484  n = N();
485  break;
486  case 1:
487  n = N().conjugate();
488  break;
489  default:
490  std::stringstream out;
491  out << bar;
492  throw std::runtime_error("H_S: index " + out.str() + " not allowed for an Angular Coefficient");
493  }
494 
495  return gslpp::complex::i()*n*Mb/MW*( C_S*S_L(q2) + C_Sp*S_R(q2) );
496 }
497 
498 gslpp::complex MPll::H_P(double q2, int bar)
499 {
500  gslpp::complex n;
501  switch(bar){
502  case 0:
503  n = N();
504  break;
505  case 1:
506  n = N().conjugate();
507  break;
508  default:
509  std::stringstream out;
510  out << bar;
511  throw std::runtime_error("H_S: index " + out.str() + " not allowed for an Angular Coefficient");
512  }
513 
514  return gslpp::complex::i()*n*( Mb/MW*( C_P*S_L(q2) + C_Pp*S_R(q2) )
515  + 2.*Mlep*Mb/q2*( C_10*( S_L(q2) - Ms/Mb*S_R(q2) ) + C_10p*( S_R(q2) - Ms/Mb*S_L(q2) ) ) );
516 }
517 
518 
519 
520 /*******************************************************************************
521  * Angular coefficients *
522  * ****************************************************************************/
523 double MPll::k2(double q2)
524 {
525  return (pow(MM,4.) + q2*q2 + pow(MP,4.) -2.*MP*MP*q2 -2.*MM*MM*(q2 + MP*MP))/(4.*MM*MM);
526 }
527 
528 double MPll::beta(double q2)
529 {
530  return sqrt(1. - 4.*Mlep*Mlep/q2);
531 }
532 
533 double MPll::lambda(double q2)
534 {
535  return 4.*MM*MM*k2(q2);
536 }
537 
538 double MPll::F(double q2)
539 {
540  return sqrt(lambda(q2))*beta(q2)*q2/(96.*M_PI*M_PI*M_PI*MM*MM*MM);
541 }
542 
543 double MPll::I(int i, double q2, int bar)
544 {
545 
546  double Mlep2 = Mlep*Mlep;
547  double beta2 = beta(q2)*beta(q2);
548 
549 
550  switch (i){
551  case 0: // I1c
552  return F(q2)*( ( H_V(q2,bar).abs2() + H_A(q2,bar).abs2() )/2. + H_P(q2,bar).abs2() + 2.*Mlep2/q2*( H_V(q2,bar).abs2()
553  - H_A(q2,bar).abs2() ) + beta2*H_S(q2,bar).abs2() );
554  case 2: // I2c
555  return -F(q2)*beta2/2.*( H_V(q2,bar).abs2() + H_A(q2,bar).abs2() );
556  case 8: // I6c
557  return 2.*F(q2)*beta(q2)*Mlep/sqrt(q2)*( H_S(q2,bar).conjugate()*H_V(q2,bar) ).real();
558  default:
559  std::stringstream out;
560  out << i;
561  throw std::runtime_error("I: index " + out.str() + " not implemented");
562  }
563 }
564 
565 double MPll::Sigma(int i, double q2)
566 {
567  return (I(i, q2, 0) + I(i, q2, 1))/2.;
568 }
569 
570 double MPll::Delta(int i, double q2)
571 {
572  return (I(i, q2, 0) - I(i, q2, 1))/2.;
573 }
574 
575 double MPll::integrateSigma(int i, double q_min, double q_max)
576 {
577 
581  }
582 
583  std::pair<double, double > qbin = std::make_pair(q_min, q_max);
584 
585  switch(i){
586  case 0:
587  if (sigma0Cached[qbin] == 0) {
588  FS0 = convertToGslFunction( boost::bind( &MPll::getSigma0, &(*this), _1 ) );
589  gsl_integration_qags (&FS0, q_min, q_max, 1.e-5, 1.e-3, 50, w_sigma0, &avaSigma0, &errSigma0);
590  cacheSigma0[qbin] = avaSigma0;
591  sigma0Cached[qbin] = 1;
592  }
593  return cacheSigma0[qbin];
594  break;
595  case 2:
596  if (sigma2Cached[qbin] == 0) {
597  FS2 = convertToGslFunction( boost::bind( &MPll::getSigma2, &(*this), _1 ) );
598  gsl_integration_qags (&FS2, q_min, q_max, 1.e-5, 1.e-3, 50, w_sigma2, &avaSigma2, &errSigma2);
599  cacheSigma2[qbin] = avaSigma2;
600  sigma2Cached[qbin] = 1;
601  }
602  return cacheSigma2[qbin];
603  break;
604  default:
605  std::stringstream out;
606  out << i;
607  throw std::runtime_error("MVll::integrateSigma_e: index " + out.str() + " not implemented");
608  }
609 
610 }
611 
612 double MPll::integrateDelta(int i, double q_min, double q_max)
613 {
614 
618  }
619 
620  std::pair<double, double > qbin = std::make_pair(q_min, q_max);
621  switch(i){
622  case 0:
623  if (delta0Cached[qbin] == 0) {
624  FD0 = convertToGslFunction( boost::bind( &MPll::getDelta0, &(*this), _1 ) );
625  gsl_integration_qags (&FD0, q_min, q_max, 1.e-5, 1.e-3, 50, w_delta0, &avaDelta0, &errDelta0);
626  cacheDelta0[qbin] = avaDelta0;
627  delta0Cached[qbin] = 1;
628  }
629  return cacheDelta0[qbin];
630  break;
631  case 2:
632  if (delta2Cached[qbin] == 0) {
633  FD2 = convertToGslFunction( boost::bind( &MPll::getDelta2, &(*this), _1 ) );
634  gsl_integration_qags (&FD2, q_min, q_max, 1.e-5, 1.e-3, 50, w_delta2, &avaDelta2, &errDelta2);
635  cacheDelta2[qbin] = avaDelta2;
636  delta2Cached[qbin] = 1;
637  }
638  return cacheDelta2[qbin];
639  break;
640  default:
641  std::stringstream out;
642  out << i;
643  throw std::runtime_error("integrateDelta_e: index " + out.str() + " not implemented");
644  }
645 }
gslpp::vector< double > k2_cache
Definition: MPll.h:402
gslpp::complex C_1
Definition: MPll.h:98
unsigned int Yupdated
Definition: MPll.h:477
gslpp::complex H_V0Ccache[2]
Definition: MPll.h:482
void setUpdateFlag(StandardModel::meson meson_i, StandardModel::meson meson_j, StandardModel::lepton lep_i, bool updated_i)
sets the update flag for the initial and final state dependent object for .
Definition: Flavour.h:228
gslpp::complex geth_0_1_MP() const
Definition: QCD.h:1160
double LCSR_fit1(double q2, double r_1, double r_2, double m_fit2)
The second fit function from arXiv:hep-ph/0412079v1, .
Definition: MPll.cpp:356
double f0_cache
Definition: MPll.h:399
double getDelta2(double q2)
The CP asymmetry .
Definition: MPll.h:362
double abs2() const
double LCSR_fit2(double q2, double r_2, double m_fit2)
The third fit function from arXiv:hep-ph/0412079v1, .
Definition: MPll.cpp:362
gslpp::vector< gslpp::complex > ** ComputeCoeffBMll(double mu, schemes scheme=NDR)
Computes the Wilson coefficient for the process .
Definition: Flavour.h:176
unsigned int I2_updated
Definition: MPll.h:493
unsigned int C_3_updated
Definition: MPll.h:435
gsl_function FD0
Definition: MPll.h:517
gslpp::vector< double > H_V0cache
Definition: MPll.h:481
double integrateDelta(int i, double q_min, double q_max)
The integral of from to .
Definition: MPll.cpp:612
double F(double q2)
The factor used in the angular coefficients .
Definition: MPll.cpp:538
gslpp::complex C_4_cache
Definition: MPll.h:439
double Mb
Definition: MPll.h:72
double lambda(double q2)
The factor used in the angular coefficients .
Definition: MPll.cpp:533
gslpp::complex C_9p_cache
Definition: MPll.h:460
unsigned int C_Sp_updated
Definition: MPll.h:471
gslpp::vector< double > SL_cache
Definition: MPll.h:421
Definition: QCD.h:717
gslpp::complex C_6
Definition: MPll.h:103
gslpp::complex C_9p
Definition: MPll.h:111
double getMub() const
A get method to access the threshold between five- and four-flavour theory in GeV.
Definition: QCD.h:905
Particle getLeptons(const StandardModel::lepton p) const
A get method to retrieve the member object of a lepton.
gslpp::vector< double > H_Scache
Definition: MPll.h:487
unsigned int k2_updated
Definition: MPll.h:401
unsigned int TR_updated
Definition: MPll.h:418
virtual ~MPll()
Destructor.
Definition: MPll.cpp:46
void updateParameters()
The update parameter method for MPll.
Definition: MPll.cpp:49
gslpp::complex geth_0_MP() const
Definition: QCD.h:1152
unsigned int C_6_updated
Definition: MPll.h:444
gslpp::complex C_3
Definition: MPll.h:100
const StandardModel & mySM
Definition: MPll.h:387
gslpp::vector< double > fT_cache
Definition: MPll.h:396
double beta_cache
Definition: MPll.h:405
gslpp::complex V_L(double q2)
The helicity form factor .
Definition: MPll.cpp:382
double errDelta0
Definition: MPll.h:511
gslpp::vector< gslpp::complex > ** allcoeffprime
Definition: MPll.h:96
complex conjugate() const
unsigned int TL_updated
Definition: MPll.h:416
double avaDelta0
Definition: MPll.h:508
double Mlep
Definition: MPll.h:69
bool getUpdateFlag(StandardModel::meson meson_i, StandardModel::meson meson_j, StandardModel::lepton lep_i)
gets the update flag for the initial and final state dependent object for .
Definition: Flavour.h:245
unsigned int C_2_updated
Definition: MPll.h:432
complex pow(const complex &z1, const complex &z2)
double m_fit2_fplus
Definition: MPll.h:87
double f_T(double q2)
The form factor .
Definition: MPll.cpp:372
gslpp::complex C_5_cache
Definition: MPll.h:442
double getr_2_fT() const
Definition: QCD.h:1648
gslpp::complex C_10_cache
Definition: MPll.h:454
double getSigma0(double q2)
The CP average .
Definition: MPll.h:332
double MM
Definition: MPll.h:70
gslpp::complex C_5
Definition: MPll.h:102
gslpp::vector< double > N_cache
Definition: MPll.h:426
gsl_function convertToGslFunction(const F &f)
Definition: MVll.h:38
unsigned int fplus_updated
Definition: MPll.h:392
gslpp::complex C_10
Definition: MPll.h:106
StandardModel::meson pseudoscalar
Definition: MPll.h:390
meson
An enum type for mesons.
Definition: QCD.h:713
gsl_integration_workspace * w_sigma0
Definition: MPll.h:520
unsigned int I8_updated
Definition: MPll.h:494
double q2
Definition: MPll.h:82
unsigned int C_S_updated
Definition: MPll.h:465
unsigned int I0_updated
Definition: MPll.h:492
static const complex & i()
double r_1_fT
Definition: MPll.h:88
unsigned int H_V0updated
Definition: MPll.h:480
double S_R(double q2)
The helicity form factor .
Definition: MPll.cpp:407
double lambda_cache
Definition: MPll.h:408
unsigned int C_4_updated
Definition: MPll.h:438
std::map< std::pair< double, double >, unsigned int > sigma0Cached
Definition: MPll.h:496
double getr_1_fT() const
Definition: QCD.h:1640
double errDelta2
Definition: MPll.h:512
gsl_integration_workspace * w_delta0
Definition: MPll.h:523
std::map< std::pair< double, double >, double > cacheSigma2
Definition: MPll.h:527
gslpp::complex C_2
Definition: MPll.h:99
gslpp::complex C_P
Definition: MPll.h:108
gsl_function FS0
Definition: MPll.h:514
A model class for the Standard Model.
double I(int i, double q2, int bar)
The angular coefficient .
Definition: MPll.cpp:543
gslpp::complex H_P(double q2, int bar)
The helicity amplitude .
Definition: MPll.cpp:498
unsigned int C_10p_updated
Definition: MPll.h:462
unsigned int C_10_updated
Definition: MPll.h:453
unsigned int N_updated
Definition: MPll.h:425
double MP
Definition: MPll.h:71
gslpp::vector< double > fplus_cache
Definition: MPll.h:393
gslpp::complex Y(double q2)
The function involved into .
Definition: MPll.cpp:434
unsigned int VL_updated
Definition: MPll.h:412
unsigned int f0_updated
Definition: MPll.h:398
unsigned int lambda_updated
Definition: MPll.h:407
double b
Definition: MPll.h:79
Meson getMesons(const meson m) const
A get method to access a meson as an object of the type Meson.
Definition: QCD.h:859
gslpp::complex C_Sp
Definition: MPll.h:113
unsigned int C_P_updated
Definition: MPll.h:468
gslpp::complex C_4
Definition: MPll.h:101
virtual double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
unsigned int C_9p_updated
Definition: MPll.h:459
void checkCache()
The caching method for MPll.
Definition: MPll.cpp:119
unsigned int C_7p_updated
Definition: MPll.h:456
double f_plus(double q2)
The form factor .
Definition: MPll.cpp:367
gslpp::complex lambda_t
Definition: MPll.h:78
double errSigma0
Definition: MPll.h:505
unsigned int SL_updated
Definition: MPll.h:420
double width
Definition: MPll.h:76
StandardModel::meson meson
Definition: MPll.h:389
double computeWidth() const
A method to compute the width of the meson from its lifetime.
Definition: Meson.cpp:25
gslpp::complex C_9
Definition: MPll.h:105
gslpp::complex C_7p
Definition: MPll.h:110
unsigned int C_5_updated
Definition: MPll.h:441
double f_0(double q2)
The form factor .
Definition: MPll.cpp:377
std::map< std::pair< double, double >, unsigned int > delta0Cached
Definition: MPll.h:499
double getSigma2(double q2)
The CP average .
Definition: MPll.h:342
double getGF() const
A get method to retrieve the Fermi constant .
double getr_2_fplus() const
Definition: QCD.h:1624
gslpp::complex C_Pp_cache
Definition: MPll.h:475
gslpp::vector< double > Ycache
Definition: MPll.h:478
double beta(double q2)
The factor used in the angular coefficients .
Definition: MPll.cpp:528
gslpp::complex C_10p
Definition: MPll.h:112
gslpp::complex C_7
Definition: MPll.h:104
gslpp::complex N()
The helicity amplitudes normalization factor .
Definition: MPll.cpp:417
Definition: OrderScheme.h:33
gslpp::complex T_R(double q2)
The helicity form factor .
Definition: MPll.cpp:397
gsl_integration_workspace * w_delta2
Definition: MPll.h:524
gsl_function FD2
Definition: MPll.h:518
unsigned int F_updated
Definition: MPll.h:410
gslpp::complex C_10p_cache
Definition: MPll.h:463
gslpp::complex C_1_cache
Definition: MPll.h:430
gslpp::complex H_V(double q2, int bar)
The helicity amplitude .
Definition: MPll.cpp:440
double MW
Definition: MPll.h:77
MPll(const StandardModel &SM_i, StandardModel::meson meson_i, StandardModel::meson pseudoscalar_i, StandardModel::lepton lep_i)
Constructor.
Definition: MPll.cpp:19
gslpp::complex h_0_1
Definition: MPll.h:81
double errSigma2
Definition: MPll.h:506
gsl_integration_workspace * w_sigma2
Definition: MPll.h:521
gslpp::complex T_L(double q2)
The helicity form factor .
Definition: MPll.cpp:392
gslpp::complex h_0
Definition: MPll.h:80
gslpp::complex C_2_cache
Definition: MPll.h:433
gslpp::complex C_Pp
Definition: MPll.h:114
double getr_1_fplus() const
Definition: QCD.h:1616
Flavour * getMyFlavour() const
double r_2_fT
Definition: MPll.h:89
gslpp::complex C_6_cache
Definition: MPll.h:445
Particle getQuarks(const quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:869
gslpp::vector< gslpp::complex > ** ComputeCoeffprimeBMll(double mu, schemes scheme=NDR)
Computes the chirality flipped Wilson coefficient for the process .
Definition: Flavour.h:187
gslpp::complex computelamt_s() const
The product of the CKM elements .
gslpp::complex C_7p_cache
Definition: MPll.h:457
double getDelta0(double q2)
The CP asymmetry .
Definition: MPll.h:352
double getAle() const
A get method to retrieve the fine-structure constant .
StandardModel::lepton lep
Definition: MPll.h:388
gslpp::complex H_A(double q2, int bar)
The helicity amplitude .
Definition: MPll.cpp:460
gslpp::complex C_9_cache
Definition: MPll.h:451
unsigned int H_P_updated
Definition: MPll.h:489
const double & getMass() const
A get method to access the particle mass.
Definition: Particle.h:61
gslpp::vector< gslpp::complex > ** allcoeff
Definition: MPll.h:95
double ale
Definition: MPll.h:68
double integrateSigma(int i, double q_min, double q_max)
The integral of from to .
Definition: MPll.cpp:575
double k2(double q2)
The square of the 3-momentum of the recoiling meson in the M rest frame, .
Definition: MPll.cpp:523
gslpp::complex H(double q2, double m)
The function involved into .
Definition: MPll.cpp:422
double mu_b
Definition: MPll.h:73
std::map< std::pair< double, double >, unsigned int > sigma2Cached
Definition: MPll.h:497
double getm_fit2_f0() const
Definition: QCD.h:1672
double r_1_fplus
Definition: MPll.h:85
gslpp::vector< double > H_P_cache
Definition: MPll.h:490
std::map< std::pair< double, double >, unsigned int > delta2Cached
Definition: MPll.h:500
unsigned int C_1_updated
Definition: MPll.h:429
double m_fit2_fT
Definition: MPll.h:90
unsigned int beta_updated
Definition: MPll.h:404
gslpp::complex C_Sp_cache
Definition: MPll.h:472
unsigned int SR_updated
Definition: MPll.h:423
double avaSigma0
Definition: MPll.h:502
double Delta(int i, double q2)
The CP asymmetry .
Definition: MPll.cpp:570
gslpp::complex C_P_cache
Definition: MPll.h:469
gslpp::complex C_3_cache
Definition: MPll.h:436
double r_2_fplus
Definition: MPll.h:86
complex log(const complex &z)
double Sigma(int i, double q2)
The CP average .
Definition: MPll.cpp:565
unsigned int fT_updated
Definition: MPll.h:395
double S_L(double q2)
The helicity form factor .
Definition: MPll.cpp:402
double Mc
Definition: MPll.h:74
unsigned int C_7_updated
Definition: MPll.h:447
std::map< std::pair< double, double >, double > cacheDelta0
Definition: MPll.h:529
A class for the correction in .
unsigned int VR_updated
Definition: MPll.h:414
double avaDelta2
Definition: MPll.h:509
double getm_fit2_fT() const
Definition: QCD.h:1656
gslpp::complex C_S
Definition: MPll.h:107
std::map< std::pair< double, double >, double > cacheSigma0
Definition: MPll.h:526
gslpp::complex C_7_cache
Definition: MPll.h:448
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
unsigned int H_Supdated
Definition: MPll.h:486
unsigned int C_9_updated
Definition: MPll.h:450
gsl_function FS2
Definition: MPll.h:515
double Ms
Definition: MPll.h:75
double m_fit2_f0
Definition: MPll.h:92
double r_2_f0
Definition: MPll.h:91
std::map< std::pair< double, double >, double > cacheDelta2
Definition: MPll.h:530
double getr_2_f0() const
Definition: QCD.h:1664
gslpp::complex H_S(double q2, int bar)
The helicity amplitude .
Definition: MPll.cpp:479
gslpp::complex V_R(double q2)
The helicity form factor .
Definition: MPll.cpp:387
lepton
An enum type for leptons.
double GF
Definition: MPll.h:67
double getm_fit2_fplus() const
Definition: QCD.h:1632
unsigned int C_Pp_updated
Definition: MPll.h:474
gslpp::complex C_S_cache
Definition: MPll.h:466
unsigned int H_A0updated
Definition: MPll.h:484
gslpp::complex Nc_cache
Definition: MPll.h:427
complex sqrt(const complex &z)
double avaSigma2
Definition: MPll.h:503