Flavour.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 SusyFit Collaboration
3  * All rights reserved.
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #ifndef FLAVOUR_H
9 #define FLAVOUR_H
10 
11 #include "HeffDF2.h"
12 #include "HeffDB1.h"
13 #include "MVll.h"
14 #include "MPll.h"
15 #include <boost/tuple/tuple.hpp>
16 
17 class StandardModel;
18 
28 class Flavour {
29 public:
30 
35  Flavour(const StandardModel& SM_i) :
36  HDF2(SM_i),
37  HDB1(SM_i)
38  {
45 
46  update_BdKstarmu = true;
47  update_BdKstarel = true;
48  update_Bsphimu = true;
49  update_Bsphiel = true;
50  update_BpKmu = true;
51  update_BpKel = true;
52  };
53 
59  const HeffDF2& getHDF2() const {
60  return HDF2;
61  }
62 
68  const HeffDB1& getHDB1() const {
69  return HDB1;
70  }
71 
80  return HDF2.ComputeCoeffBd(mu, scheme);
81  }
82 
91  return HDF2.ComputeCoeffBs(mu, scheme);
92  }
93 
95  return HDF2.ComputeCoeffdd(mu, scheme);
96  }
97 
99  return HDF2.ComputeCoeffK(mu, scheme);
100  }
101 
103  return HDF2.ComputeCoeffmK(mu, scheme);
104  }
105 
114  return HDB1.ComputeCoeffsmumu(mu, scheme);
115  }
116 
125  return HDB1.ComputeCoeffdmumu(mu, scheme);
126  }
127 
136  return HDB1.ComputeCoeffbtaunu();
137  }
138 
140  return HDB1.ComputeCoeffsnunu();
141  }
142 
144  return HDB1.ComputeCoeffdnunu();
145  }
146 
155  return HDB1.ComputeCoeffsgamma(mu, scheme);
156  }
157 
166  return HDB1.ComputeCoeffprimesgamma(mu, scheme);
167  }
168 
177  return HDB1.ComputeCoeffBMll(mu, scheme);
178  }
179 
188  return HDB1.ComputeCoeffprimeBMll(mu, scheme);
189  }
190 
200  if (meson_i == StandardModel::B_D && vector_i == StandardModel::K_star && lep_i == StandardModel::MU) return myMVll_BdKstarmu;
201  if (meson_i == StandardModel::B_D && vector_i == StandardModel::K_star && lep_i == StandardModel::ELECTRON) return myMVll_BdKstarel;
202  if (meson_i == StandardModel::B_S && vector_i == StandardModel::PHI && lep_i == StandardModel::MU) return myMVll_Bsphimu;
203  if (meson_i == StandardModel::B_S && vector_i == StandardModel::PHI && lep_i == StandardModel::ELECTRON) return myMVll_Bsphiel;
204  else throw std::runtime_error("Flavour: Decay channel not implemented.");
205  }
206 
216  if (meson_i == StandardModel::B_P && pseudoscalar_i == StandardModel::K_P && lep_i == StandardModel::MU) return myMPll_BpKmu;
217  if (meson_i == StandardModel::B_P && pseudoscalar_i == StandardModel::K_P && lep_i == StandardModel::ELECTRON) return myMPll_BpKel;
218  else throw std::runtime_error("Flavour: Decay channel not implemented.");
219  }
220 
228  void setUpdateFlag(StandardModel::meson meson_i, StandardModel::meson meson_j, StandardModel::lepton lep_i, bool updated_i){
229  if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::MU) {update_BdKstarmu = updated_i; return;}
230  if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::ELECTRON) {update_BdKstarel = updated_i; return;}
231  if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::MU) {update_Bsphimu = updated_i; return;}
232  if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::ELECTRON) {update_Bsphiel = updated_i; return;}
233  if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_P && lep_i == StandardModel::MU) {update_BpKmu = updated_i; return;}
234  if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_P && lep_i == StandardModel::ELECTRON) {update_BpKel = updated_i; return;}
235  else throw std::runtime_error("Flavour: Wrong update flag requested.");
236  }
237 
246  if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::MU) return update_BdKstarmu;
247  if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::ELECTRON) return update_BdKstarel;
248  if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::MU) return update_Bsphimu;
249  if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::ELECTRON) return update_Bsphiel;
250  if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_P && lep_i == StandardModel::MU) return update_BpKmu;
251  if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_P && lep_i == StandardModel::ELECTRON) return update_BpKel;
252  else throw std::runtime_error("Flavour: Wrong update flags requested.");
253  }
254 
259  void setSMupdated(){
260  update_BdKstarmu = true;
261  update_BdKstarel = true;
262  update_Bsphimu = true;
263  update_Bsphiel = true;
264  update_BpKmu = true;
265  update_BpKel = true;
266  }
267 
268 private:
269 
284 };
285 
290 #endif /* FLAVOUR_H */
gslpp::vector< gslpp::complex > ** ComputeCoeffdmumu(double mu, schemes scheme=NDR)
Definition: HeffDB1.cpp:262
gslpp::vector< gslpp::complex > ** ComputeCoeffBMll(double mu, schemes scheme=NDR)
Definition: HeffDB1.cpp:589
bool update_BpKmu
A flag used for caching of .
Definition: Flavour.h:282
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::vector< gslpp::complex > ** ComputeCoeffBMll(double mu, schemes scheme=NDR)
Computes the Wilson coefficient for the process .
Definition: Flavour.h:176
bool update_BdKstarmu
A flag used for caching of .
Definition: Flavour.h:278
MPll * getMPll(StandardModel::meson meson_i, StandardModel::meson pseudoscalar_i, StandardModel::lepton lep_i)
Returns the initial and final state dependent object for .
Definition: Flavour.h:215
const HeffDB1 & getHDB1() const
The member that returns an object of the class HeffDB1.
Definition: Flavour.h:68
gslpp::vector< gslpp::complex > ** ComputeCoeffBs(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:63
Definition: QCD.h:717
bool update_BpKel
A flag used for caching of .
Definition: Flavour.h:283
gslpp::vector< gslpp::complex > ** ComputeCoeffdd(double mu, schemes scheme=NDR)
Definition: Flavour.h:94
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
gslpp::vector< gslpp::complex > ** ComputeCoeffsnunu()
Definition: Flavour.h:139
gslpp::vector< gslpp::complex > ** ComputeCoeffmK(double mu, schemes scheme=NDR)
for Delta M_K the SM contribution is set to zero
Definition: HeffDF2.cpp:165
bool update_Bsphiel
A flag used for caching of .
Definition: Flavour.h:281
A class for the effective Hamiltonian.
Definition: HeffDF2.h:26
gslpp::vector< gslpp::complex > ** ComputeCoeffprimesgamma(double mu, schemes scheme=NDR)
Computes the chirality flipped Wilson coefficient for the process .
Definition: Flavour.h:165
The parent class in Flavour for calculating all the Wilson coefficients for various Flavor Violating ...
Definition: Flavour.h:28
HeffDF2 HDF2
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:270
meson
An enum type for mesons.
Definition: QCD.h:713
void setSMupdated()
a member used for the caching for .
Definition: Flavour.h:259
A model class for the Standard Model.
gslpp::vector< gslpp::complex > ** ComputeCoeffbtaunu()
Computes the Wilson coefficient for the process .
Definition: Flavour.h:135
A class for the decay.
Definition: MVll.h:87
const HeffDF2 & getHDF2() const
The member that returns an object of the class HeffDF2.
Definition: Flavour.h:59
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:19
A class for the decay.
Definition: MPll.h:41
MPll * myMPll_BpKmu
An object for the process .
Definition: Flavour.h:276
MVll * myMVll_BdKstarel
An object for the process .
Definition: Flavour.h:273
gslpp::vector< gslpp::complex > ** ComputeCoeffsmumu(double mu, schemes scheme=NDR)
Definition: HeffDB1.cpp:71
MVll * myMVll_BdKstarmu
An object for the process .
Definition: Flavour.h:272
gslpp::vector< gslpp::complex > ** ComputeCoeffbtaunu()
Definition: HeffDB1.cpp:451
gslpp::vector< gslpp::complex > ** ComputeCoeffdd(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:89
Definition: QCD.h:720
Definition: QCD.h:721
gslpp::vector< gslpp::complex > ** ComputeCoeffBs(double mu, schemes scheme=NDR)
Computes the Wilson coefficient for the process .
Definition: Flavour.h:90
gslpp::vector< gslpp::complex > ** ComputeCoeffprimeBMll(double mu, schemes scheme=NDR)
Computes the chirality flipped Wilson coefficient for the process .
Definition: Flavour.h:187
gslpp::vector< gslpp::complex > ** ComputeCoeffsgamma(double mu, schemes scheme=NDR)
Computes the Wilson coefficient for the process .
Definition: Flavour.h:154
MVll * myMVll_Bsphiel
An object for the process .
Definition: Flavour.h:275
gslpp::vector< gslpp::complex > ** ComputeCoeffsmumu(double mu, schemes scheme=NDR)
Computes the Wilson coefficient for the process .
Definition: Flavour.h:113
Definition: QCD.h:722
gslpp::vector< gslpp::complex > ** ComputeCoeffdmumu(double mu, schemes scheme=NDR)
Computes the Wilson coefficient for the process .
Definition: Flavour.h:124
gslpp::vector< gslpp::complex > ** ComputeCoeffdnunu()
Definition: Flavour.h:143
MPll * myMPll_BpKel
An object for the process .
Definition: Flavour.h:277
gslpp::vector< gslpp::complex > ** ComputeCoeffBd(double mu, schemes scheme=NDR)
Computes the Wilson coefficient for the process .
Definition: Flavour.h:79
gslpp::vector< gslpp::complex > ** ComputeCoeffprimesgamma(double mu, schemes scheme=NDR)
Definition: HeffDB1.cpp:544
Definition: QCD.h:719
bool update_Bsphimu
A flag used for caching of .
Definition: Flavour.h:280
gslpp::vector< gslpp::complex > ** ComputeCoeffdnunu()
Definition: HeffDB1.cpp:482
bool update_BdKstarel
A flag used for caching of .
Definition: Flavour.h:279
gslpp::vector< gslpp::complex > ** ComputeCoeffsgamma(double mu, schemes scheme=NDR)
Definition: HeffDB1.cpp:499
gslpp::vector< gslpp::complex > ** ComputeCoeffBd(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:37
MVll * getMVll(StandardModel::meson meson_i, StandardModel::meson vector_i, StandardModel::lepton lep_i)
Returns the initial and final state dependent object for .
Definition: Flavour.h:199
gslpp::vector< gslpp::complex > ** ComputeCoeffK(double mu, schemes scheme=NDR)
Definition: Flavour.h:98
gslpp::vector< gslpp::complex > ** ComputeCoeffprimeBMll(double mu, schemes scheme=NDR)
Definition: HeffDB1.cpp:635
gslpp::vector< gslpp::complex > ** ComputeCoeffK(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:115
Flavour(const StandardModel &SM_i)
The constructor.
Definition: Flavour.h:35
gslpp::vector< gslpp::complex > ** ComputeCoeffsnunu()
Definition: HeffDB1.cpp:465
lepton
An enum type for leptons.
gslpp::vector< gslpp::complex > ** ComputeCoeffmK(double mu, schemes scheme=NDR)
Definition: Flavour.h:102
HeffDB1 HDB1
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:271
MVll * myMVll_Bsphimu
An object for the process .
Definition: Flavour.h:274