MPll.h
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 #ifndef MPLL_H
9 #define MPLL_H
10 
11 #include <math.h>
12 #include <StandardModel.h>
13 #include <ThObservable.h>
14 #include <gsl/gsl_integration.h>
15 #include <assert.h>
16 
17 
18 #define CUTOFF 10 //cutoff between LCSR and lattice values for Form Factors, in GeV^2
19 
41 class MPll{
42 public:
50  MPll(const StandardModel& SM_i, StandardModel::meson meson_i, StandardModel::meson pseudoscalar_i, StandardModel::lepton lep_i);
51 
55  virtual ~MPll();
56 
60  void updateParameters();
61 
65  void checkCache();
66 
67  double GF;
68  double ale;
69  double Mlep;
70  double MM;
71  double MP;
72  double Mb;
73  double mu_b;
74  double Mc;
75  double Ms;
76  double width;
77  double MW;
79  double b;
82  double q2;
84  /*LCSR fit parameters*/
85  double r_1_fplus;
86  double r_2_fplus;
87  double m_fit2_fplus;
88  double r_1_fT;
89  double r_2_fT;
90  double m_fit2_fT;
91  double r_2_f0;
92  double m_fit2_f0;
124  double LCSR_fit1(double q2, double r_1, double r_2, double m_fit2);
125 
126 
134  double LCSR_fit2(double q2, double r_2, double m_fit2);
135 
136 
142  double f_plus(double q2);
143 
144 
150  double f_T(double q2);
151 
152 
158  double f_0(double q2);
159 
165  gslpp::complex V_L(double q2);
166 
167 
173  gslpp::complex V_R(double q2);
174 
175 
181  gslpp::complex T_L(double q2);
182 
183 
189  gslpp::complex T_R(double q2);
190 
191 
197  double S_L(double q2);
198 
199 
205  double S_R(double q2);
206 
207 
212  gslpp::complex N();
213 
214 
221  gslpp::complex H(double q2, double m);
222 
223 
229  gslpp::complex Y(double q2);
230 
231 
238  gslpp::complex H_V(double q2, int bar);
239 
240 
247  gslpp::complex H_A(double q2, int bar);
248 
249 
256  gslpp::complex H_S(double q2, int bar);
257 
258 
265  gslpp::complex H_P(double q2, int bar);
266 
267 
273  double k2 (double q2);
274 
275 
281  double beta (double q2);
282 
283 
289  double lambda(double q2);
290 
291 
297  double F(double q2);
298 
299 
307  double I(int i, double q2, int bar);
308 
309 
316  double Sigma(int i, double q2);
317 
318 
325  double Delta(int i, double q2);
326 
332  double getSigma0(double q2)
333  {
334  return Sigma(0, q2);
335  };
336 
342  double getSigma2(double q2)
343  {
344  return Sigma(2, q2);
345  };
346 
352  double getDelta0(double q2)
353  {
354  return Delta(0, q2);
355  };
356 
362  double getDelta2(double q2)
363  {
364  return Delta(2, q2);
365  };
366 
374  double integrateSigma(int i, double q_min, double q_max);
375 
383  double integrateDelta(int i, double q_min, double q_max);
384 
385 
386 private:
392  unsigned int fplus_updated;
395  unsigned int fT_updated;
398  unsigned int f0_updated;
399  double f0_cache;
401  unsigned int k2_updated;
404  unsigned int beta_updated;
405  double beta_cache;
407  unsigned int lambda_updated;
408  double lambda_cache;
410  unsigned int F_updated;
412  unsigned int VL_updated;
414  unsigned int VR_updated;
416  unsigned int TL_updated;
418  unsigned int TR_updated;
420  unsigned int SL_updated;
423  unsigned int SR_updated;
425  unsigned int N_updated;
429  unsigned int C_1_updated;
432  unsigned int C_2_updated;
435  unsigned int C_3_updated;
438  unsigned int C_4_updated;
441  unsigned int C_5_updated;
444  unsigned int C_6_updated;
447  unsigned int C_7_updated;
450  unsigned int C_9_updated;
453  unsigned int C_10_updated;
456  unsigned int C_7p_updated;
459  unsigned int C_9p_updated;
462  unsigned int C_10p_updated;
465  unsigned int C_S_updated;
468  unsigned int C_P_updated;
471  unsigned int C_Sp_updated;
474  unsigned int C_Pp_updated;
477  unsigned int Yupdated;
480  unsigned int H_V0updated;
484  unsigned int H_A0updated;
486  unsigned int H_Supdated;
489  unsigned int H_P_updated;
492  unsigned int I0_updated;
493  unsigned int I2_updated;
494  unsigned int I8_updated;
496  std::map<std::pair<double, double>, unsigned int > sigma0Cached;
497  std::map<std::pair<double, double>, unsigned int > sigma2Cached;
499  std::map<std::pair<double, double>, unsigned int > delta0Cached;
500  std::map<std::pair<double, double>, unsigned int > delta2Cached;
502  double avaSigma0;
503  double avaSigma2;
505  double errSigma0;
506  double errSigma2;
508  double avaDelta0;
509  double avaDelta2;
511  double errDelta0;
512  double errDelta2;
514  gsl_function FS0;
515  gsl_function FS2;
517  gsl_function FD0;
518  gsl_function FD2;
520  gsl_integration_workspace * w_sigma0;
521  gsl_integration_workspace * w_sigma2;
523  gsl_integration_workspace * w_delta0;
524  gsl_integration_workspace * w_delta2;
526  std::map<std::pair<double, double>, double > cacheSigma0;
527  std::map<std::pair<double, double>, double > cacheSigma2;
529  std::map<std::pair<double, double>, double > cacheDelta0;
530  std::map<std::pair<double, double>, double > cacheDelta2;
532 };
533 
534 #endif /* MPLL_H */
535 
536 
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
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 LCSR_fit2(double q2, double r_2, double m_fit2)
The third fit function from arXiv:hep-ph/0412079v1, .
Definition: MPll.cpp:362
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
gslpp::complex C_6
Definition: MPll.h:103
gslpp::complex C_9p
Definition: MPll.h:111
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
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
unsigned int TL_updated
Definition: MPll.h:416
double avaDelta0
Definition: MPll.h:508
double Mlep
Definition: MPll.h:69
unsigned int C_2_updated
Definition: MPll.h:432
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
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
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
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 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
A class for the decay.
Definition: MPll.h:41
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
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
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
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
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
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 r_2_fT
Definition: MPll.h:89
gslpp::complex C_6_cache
Definition: MPll.h:445
gslpp::complex C_7p_cache
Definition: MPll.h:457
double getDelta0(double q2)
The CP asymmetry .
Definition: MPll.h:352
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
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 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
A class for constructing and defining operations on real vectors.
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
unsigned int VR_updated
Definition: MPll.h:414
double avaDelta2
Definition: MPll.h:509
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
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
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
double avaSigma2
Definition: MPll.h:503