a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
Flavour Class Reference

The parent class in Flavour for calculating all the Wilson coefficients for various Flavor Violating processes. More...

#include <Flavour.h>

Detailed Description

The parent class in Flavour for calculating all the Wilson coefficients for various Flavor Violating processes.

Author
HEPfit Collaboration

The Flavour class aggregates the Wilson coefficients for each of the processes generated by the model by calling the Hamiltonians.

Definition at line 33 of file Flavour.h.

Public Member Functions

gslpp::vector< gslpp::complex > ** ComputeCoeffBd (double mu, schemes scheme=NDR) const
 Computes the Wilson coefficient for the process \( B_d \to \mu \mu \). More...
 
gslpp::vector< gslpp::complex > ** ComputeCoeffBMll (double mu, QCD::lepton lepton, bool noSM=false, schemes scheme=NDR) const
 Computes the Wilson coefficient for the process \( B \to V/P \ell^+ \ell^- \). More...
 
gslpp::vector< gslpp::complex > ** ComputeCoeffBs (double mu, schemes scheme=NDR, bool SM=false) const
 Computes the Wilson coefficient for the process \( B_s \to \mu \mu \). More...
 
gslpp::vector< gslpp::complex > ** ComputeCoeffbtaunu (QCD::meson meson_i) const
 Computes the Wilson coefficient for the process \( B_d \to \tau \nu \). More...
 
gslpp::vector< gslpp::complex > ** ComputeCoeffdd (double mu, schemes scheme=NDR) const
 
gslpp::vector< gslpp::complex > ** ComputeCoeffdmumu (double mu, schemes scheme=NDR) const
 Computes the Wilson coefficient for the process \( B_d \to \mu \mu \). More...
 
gslpp::vector< gslpp::complex > ** ComputeCoeffdnunu () const
 
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1mumu () const
 
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1pnunu () const
 
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1PP (double mu, schemes scheme=NDR) const
 
gslpp::vector< gslpp::complex > ** ComputeCoeffK (double mu, schemes scheme=NDR) const
 
gslpp::vector< gslpp::complex > ** ComputeCoeffmK (double mu, schemes scheme=NDR) const
 
gslpp::vector< gslpp::complex > ** ComputeCoeffprimeBMll (double mu, QCD::lepton lepton, schemes scheme=NDR) const
 Computes the chirality flipped Wilson coefficient for the process \( B \to V/P \ell^+ \ell^- \). More...
 
gslpp::vector< gslpp::complex > ** ComputeCoeffprimesgamma (double mu, schemes scheme=NDR) const
 Computes the chirality flipped Wilson coefficient for the process \( b \to s \gamma \). More...
 
gslpp::vector< gslpp::complex > ** ComputeCoeffsgamma (double mu, bool noSM=false, schemes scheme=NDR) const
 Computes the Wilson coefficient for the process \( b \to s \gamma \). More...
 
gslpp::vector< gslpp::complex > ** ComputeCoeffsmumu (double mu, schemes scheme=NDR) const
 Computes the Wilson coefficient for the process \( B_s \to \mu \mu \). More...
 
gslpp::vector< gslpp::complex > ** ComputeCoeffsnunu () const
 
 Flavour (const StandardModel &SM_i)
 The constructor. More...
 
bool getFlagCLN () const
 
bool getFlagFixedWCbtos () const
 
bool getFlagUseDispersionRelation () const
 
HeffDB1getHDB1 () const
 The member that returns an object of the class HeffDB1. More...
 
HeffDF2getHDF2 () const
 The member that returns an object of the class HeffDF2. More...
 
HeffDS1getHDS1 () const
 The member that returns an object of the class HeffDS1. More...
 
MPllgetMPll (QCD::meson meson_i, QCD::meson pseudoscalar_i, QCD::lepton lep_i) const
 Returns the initial and final state dependent object for \( B \to P \ell^+ \ell^- \). More...
 
MPlnugetMPlnu (QCD::meson meson_i, QCD::meson pseudoscalar_i, QCD::lepton lep_i) const
 Returns the initial and final state dependent object for \( B \to P \ell \nu \). More...
 
MVgammagetMVgamma (QCD::meson meson_i, QCD::meson vector_i) const
 Returns the initial and final state dependent object for \( B \to V \gamma \). More...
 
MVllgetMVll (QCD::meson meson_i, QCD::meson vector_i, QCD::lepton lep_i) const
 Returns the initial and final state dependent object for \( B \to V \ell^+ \ell^- \). More...
 
MVlnugetMVlnu (QCD::meson meson_i, QCD::meson vector_i, QCD::lepton lep_i) const
 Returns the initial and final state dependent object for \( B \to V \ell \nu \). More...
 
bool getUpdateFlag (QCD::meson meson_i, QCD::meson meson_j, QCD::lepton lep_i) const
 gets the update flag for the initial and final state dependent object for \( B \to V \ell^+ \ell^- \). More...
 
bool setFlag (const std::string name, const bool value)
 
bool setFlagCLN (bool CLNflag)
 
bool setFlagFixedWCbtos (bool FixedWCbtosflag)
 
bool setFlagUseDispersionRelation (bool dispersion)
 
void setSMupdated () const
 a member used for the caching for \( B \to V \ell^+ \ell^- \). More...
 
void setUpdateFlag (QCD::meson meson_i, QCD::meson meson_j, QCD::lepton lep_i, bool updated_i) const
 sets the update flag for the initial and final state dependent object for \( B \to V \ell^+ \ell^- \). More...
 

Private Member Functions

template<typename T , typename... Args>
T & getM (std::map< std::vector< int >, std::shared_ptr< T > > &map, Args ... args) const
 
template<typename T , typename... Args>
std::shared_ptr< T > & getPtr (std::shared_ptr< T > &x, Args ... args) const
 
template<typename T , typename... Args>
std::shared_ptr< T > & getPtr (std::shared_ptr< T > &x, Args... args) const
 

Private Attributes

bool CLNflag
 
bool dispersion
 
bool FixedWCbtosflag
 
std::map< std::vector< int >, bool > flagUpdateMap
 
std::shared_ptr< HeffDB1HDB1
 An Object for the Hamiltonian of the \( \Delta B = 1 \) processes. More...
 
std::shared_ptr< HeffDF2HDF2
 An Object for the Hamiltonian of the \( \Delta F = 2 \) processes. More...
 
std::shared_ptr< HeffDS1HDS1
 An Object for the Hamiltonian of the \( \Delta S = 1 \) processes. More...
 
std::map< std::vector< int >, std::shared_ptr< MPll > > MPllMap
 
std::map< std::vector< int >, std::shared_ptr< MPlnu > > MPlnuMap
 
std::map< std::vector< int >, std::shared_ptr< MVgamma > > MVgammaMap
 
std::map< std::vector< int >, std::shared_ptr< MVll > > MVllMap
 
std::map< std::vector< int >, std::shared_ptr< MVlnu > > MVlnuMap
 
const StandardModelmySM
 

Constructor & Destructor Documentation

◆ Flavour()

Flavour::Flavour ( const StandardModel SM_i)

The constructor.

Parameters
[in]SM_ia reference to an object of the class StandardModel

Definition at line 20 of file Flavour.cpp.

21 : mySM(SM_i)
22 {
23  dispersion = false;
24  CLNflag = false;
25 };

Member Function Documentation

◆ ComputeCoeffBd()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffBd ( double  mu,
schemes  scheme = NDR 
) const

Computes the Wilson coefficient for the process \( B_d \to \mu \mu \).

Parameters
[in]muthe lower matching scale for the process
[in]schemethe scheme in which the Wilson Coefficients need to be calculated
Returns
returns the Wilson coefficients for the process \( B_d \to \mu \mu \)

Definition at line 59 of file Flavour.cpp.

60 {
61  return getPtr<HeffDF2>(HDF2)->ComputeCoeffBd(mu, scheme);
62 }

◆ ComputeCoeffBMll()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffBMll ( double  mu,
QCD::lepton  lepton,
bool  noSM = false,
schemes  scheme = NDR 
) const

Computes the Wilson coefficient for the process \( B \to V/P \ell^+ \ell^- \).

Parameters
[in]muthe lower matching scale for the process
[in]schemethe scheme in which the Wilson Coefficients need to be calculated
Returns
returns the Wilson coefficients for the process \( B \to V/P \ell^+ \ell^- \)

Definition at line 134 of file Flavour.cpp.

135 {
136  return getPtr<HeffDB1>(HDB1)->ComputeCoeffBMll(mu, lepton, noSM, scheme);
137 }

◆ ComputeCoeffBs()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffBs ( double  mu,
schemes  scheme = NDR,
bool  SM = false 
) const

Computes the Wilson coefficient for the process \( B_s \to \mu \mu \).

Parameters
[in]muthe lower matching scale for the process
[in]schemethe scheme in which the Wilson Coefficients need to be calculated
Returns
returns the Wilson coefficients for the process \( B_s \to \mu \mu \)

Definition at line 64 of file Flavour.cpp.

65 {
66  return getPtr<HeffDF2>(HDF2)->ComputeCoeffBs(mu, scheme, SM);
67 }

◆ ComputeCoeffbtaunu()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffbtaunu ( QCD::meson  meson_i) const

Computes the Wilson coefficient for the process \( B_d \to \tau \nu \).

Parameters
[in]muthe lower matching scale for the process
[in]schemethe scheme in which the Wilson Coefficients need to be calculated
Returns
returns the Wilson coefficients for the process \( B_d \to \tau \nu \)

Definition at line 109 of file Flavour.cpp.

110 {
111  return getPtr<HeffDB1>(HDB1)->ComputeCoeffbtaunu(meson_i);
112 }

◆ ComputeCoeffdd()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffdd ( double  mu,
schemes  scheme = NDR 
) const

Definition at line 69 of file Flavour.cpp.

70 {
71  return getPtr<HeffDF2>(HDF2)->ComputeCoeffdd(mu, scheme);
72 }

◆ ComputeCoeffdmumu()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffdmumu ( double  mu,
schemes  scheme = NDR 
) const

Computes the Wilson coefficient for the process \( B_d \to \mu \mu \).

Parameters
[in]muthe lower matching scale for the process
[in]schemethe scheme in which the Wilson Coefficients need to be calculated
Returns
returns the Wilson coefficients for the process \( B_d \to \mu \mu \)

Definition at line 104 of file Flavour.cpp.

105 {
106  return getPtr<HeffDB1>(HDB1)->ComputeCoeffdmumu(mu, scheme);
107 }

◆ ComputeCoeffdnunu()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffdnunu ( ) const

Definition at line 119 of file Flavour.cpp.

120 {
121  return getPtr<HeffDB1>(HDB1)->ComputeCoeffdnunu();
122 }

◆ ComputeCoeffDS1mumu()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffDS1mumu ( ) const

Definition at line 94 of file Flavour.cpp.

95 {
96  return getPtr<HeffDS1>(HDS1)->ComputeCoeffDS1mumu();
97 }

◆ ComputeCoeffDS1pnunu()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffDS1pnunu ( ) const

Definition at line 89 of file Flavour.cpp.

90 {
91  return getPtr<HeffDS1>(HDS1)->ComputeCoeffDS1pnunu();
92 }

◆ ComputeCoeffDS1PP()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffDS1PP ( double  mu,
schemes  scheme = NDR 
) const

Definition at line 84 of file Flavour.cpp.

85 {
86  return getPtr<HeffDS1>(HDS1)->ComputeCoeffDS1PP(mu, scheme);
87 }

◆ ComputeCoeffK()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffK ( double  mu,
schemes  scheme = NDR 
) const

Definition at line 74 of file Flavour.cpp.

75 {
76  return getPtr<HeffDF2>(HDF2)->ComputeCoeffK(mu, scheme);
77 }

◆ ComputeCoeffmK()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffmK ( double  mu,
schemes  scheme = NDR 
) const

Definition at line 79 of file Flavour.cpp.

80 {
81  return getPtr<HeffDF2>(HDF2)->ComputeCoeffmK(mu, scheme);
82 }

◆ ComputeCoeffprimeBMll()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffprimeBMll ( double  mu,
QCD::lepton  lepton,
schemes  scheme = NDR 
) const

Computes the chirality flipped Wilson coefficient for the process \( B \to V/P \ell^+ \ell^- \).

Parameters
[in]muthe lower matching scale for the process
[in]schemethe scheme in which the Wilson Coefficients need to be calculated
Returns
returns the chirality flipped Wilson coefficients for the process \( B \to V/P \ell^+ \ell^- \)

Definition at line 139 of file Flavour.cpp.

140 {
141  return getPtr<HeffDB1>(HDB1)->ComputeCoeffprimeBMll(mu, lepton, scheme);
142 }

◆ ComputeCoeffprimesgamma()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffprimesgamma ( double  mu,
schemes  scheme = NDR 
) const

Computes the chirality flipped Wilson coefficient for the process \( b \to s \gamma \).

Parameters
[in]muthe lower matching scale for the process
[in]schemethe scheme in which the Wilson Coefficients need to be calculated
Returns
returns the chirality flipped Wilson coefficients for the process \( b \to s \gamma \)

Definition at line 129 of file Flavour.cpp.

130 {
131  return getPtr<HeffDB1>(HDB1)->ComputeCoeffprimesgamma(mu, scheme);
132 }

◆ ComputeCoeffsgamma()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffsgamma ( double  mu,
bool  noSM = false,
schemes  scheme = NDR 
) const

Computes the Wilson coefficient for the process \( b \to s \gamma \).

Parameters
[in]muthe lower matching scale for the process
[in]schemethe scheme in which the Wilson Coefficients need to be calculated
Returns
returns the Wilson coefficients for the process \( b \to s \gamma \)

Definition at line 124 of file Flavour.cpp.

125 {
126  return getPtr<HeffDB1>(HDB1)->ComputeCoeffsgamma(mu, noSM, scheme);
127 }

◆ ComputeCoeffsmumu()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffsmumu ( double  mu,
schemes  scheme = NDR 
) const

Computes the Wilson coefficient for the process \( B_s \to \mu \mu \).

Parameters
[in]muthe lower matching scale for the process
[in]schemethe scheme in which the Wilson Coefficients need to be calculated
Returns
returns the Wilson coefficients for the process \( B_s \to \mu \mu \)

Definition at line 99 of file Flavour.cpp.

100 {
101  return getPtr<HeffDB1>(HDB1)->ComputeCoeffsmumu(mu, scheme);
102 }

◆ ComputeCoeffsnunu()

gslpp::vector< gslpp::complex > ** Flavour::ComputeCoeffsnunu ( ) const

Definition at line 114 of file Flavour.cpp.

115 {
116  return getPtr<HeffDB1>(HDB1)->ComputeCoeffsnunu();
117 }

◆ getFlagCLN()

bool Flavour::getFlagCLN ( ) const
inline

Definition at line 255 of file Flavour.h.

256  {
257  return CLNflag;
258  }

◆ getFlagFixedWCbtos()

bool Flavour::getFlagFixedWCbtos ( ) const
inline

Definition at line 260 of file Flavour.h.

261  {
262  return FixedWCbtosflag;
263  }

◆ getFlagUseDispersionRelation()

bool Flavour::getFlagUseDispersionRelation ( ) const
inline

Definition at line 250 of file Flavour.h.

251  {
252  return dispersion;
253  }

◆ getHDB1()

HeffDB1 & Flavour::getHDB1 ( ) const

The member that returns an object of the class HeffDB1.

Returns
returns the Hamiltonian for the \( \Delta B = 1 \) processes.

Definition at line 54 of file Flavour.cpp.

55 {
56  return *getPtr<HeffDB1>(HDB1);
57 }

◆ getHDF2()

HeffDF2 & Flavour::getHDF2 ( ) const

The member that returns an object of the class HeffDF2.

Returns
returns the Hamiltonian for the \( \Delta F = 2 \) processes

Definition at line 44 of file Flavour.cpp.

45 {
46  return *getPtr<HeffDF2>(HDF2);
47 }

◆ getHDS1()

HeffDS1 & Flavour::getHDS1 ( ) const

The member that returns an object of the class HeffDS1.

Returns
returns the Hamiltonian for the \( \Delta S = 1 \) processes.

Definition at line 49 of file Flavour.cpp.

50 {
51  return *getPtr<HeffDS1>(HDS1);
52 }

◆ getM()

template<typename T , typename... Args>
T & Flavour::getM ( std::map< std::vector< int >, std::shared_ptr< T > > &  map,
Args ...  args 
) const
private

Definition at line 230 of file Flavour.cpp.

231 {
232  std::vector<int> key({args...});
233  if(map.find(key)==map.end()) {
234  map.insert(std::make_pair(key,std::shared_ptr<T>(new T(mySM,args...))));
235  }
236  return *map.at(key);
237 }

◆ getMPll()

MPll & Flavour::getMPll ( QCD::meson  meson_i,
QCD::meson  pseudoscalar_i,
QCD::lepton  lep_i 
) const

Returns the initial and final state dependent object for \( B \to P \ell^+ \ell^- \).

Parameters
[in]meson_ispecifies the meson in the initial state
[in]pseudoscalar_ispecifies the vector in the final state
[in]lepton_ispecifies the lepton in the final state
Returns
returns a pointer to the initial and final state dependent object for the process \( B \to P \ell^+ \ell^- \)

Definition at line 212 of file Flavour.cpp.

213 {
214 // std::reference_wrapper<std::shared_ptr<MPll> > x(MPll_BpKmu);
215 // if (meson_i == QCD::B_P && pseudoscalar_i == QCD::K_P && lep_i == QCD::MU) x = std::ref(MPll_BpKmu);
216 // else if (meson_i == QCD::B_P && pseudoscalar_i == QCD::K_P && lep_i == QCD::ELECTRON) x = std::ref(MPll_BpKel);
217 // else if (meson_i == QCD::B_D && pseudoscalar_i == QCD::K_0 && lep_i == QCD::MU) x = std::ref(MPll_B0Kmu);
218 // else if (meson_i == QCD::B_D && pseudoscalar_i == QCD::K_0 && lep_i == QCD::ELECTRON) x = std::ref(MPll_B0Kel);
219 // else throw std::runtime_error("Flavour: Decay channel not implemented.");
220 // return *getPtr<MPll>(x.get(), meson_i, pseudoscalar_i, lep_i);
221 // std::vector<int> key({meson_i, vector_i, lep_i});
222 // if(MPllMap.find(key)==MPllMap.end()) {
223 // MPllMap.insert(std::make_pair(key,std::shared_ptr<MPll>(new MPll(mySM,meson_i, vector_i, lep_i))));
224 // }
225 // return *MPllMap.at(key);
226  return getM<MPll>(MPllMap, meson_i, vector_i, lep_i);
227 }

◆ getMPlnu()

MPlnu & Flavour::getMPlnu ( QCD::meson  meson_i,
QCD::meson  pseudoscalar_i,
QCD::lepton  lep_i 
) const

Returns the initial and final state dependent object for \( B \to P \ell \nu \).

Parameters
[in]meson_ispecifies the meson in the initial state
[in]pseudoscalar_ispecifies the vector in the final state
[in]lepton_ispecifies the lepton in the final state
Returns
returns a pointer to the initial and final state dependent object for the process \( B \to V \ell \nu \)

Definition at line 196 of file Flavour.cpp.

197 {
198 // std::reference_wrapper<std::shared_ptr<MPlnu> > x(MPlnu_BdbarDtaunu);
199 // if (meson_i == StandardModel::B_D && vector_i == StandardModel::D_P && lep_i == StandardModel::TAU) x = std::ref(MPlnu_BdbarDtaunu);
200 // else if (meson_i == StandardModel::B_D && vector_i == StandardModel::D_P && lep_i == StandardModel::MU) x = std::ref(MPlnu_BdbarDmunu);
201 // else if (meson_i == StandardModel::B_D && vector_i == StandardModel::D_P && lep_i == StandardModel::ELECTRON) x = std::ref(MPlnu_BdbarDelnu);
202 // else throw std::runtime_error("Flavour: Decay channel not implemented.");
203 // return *getPtr<MPlnu>(x.get(), meson_i, vector_i, lep_i);
204 // std::vector<int> key({meson_i, vector_i, lep_i});
205 // if(MPlnuMap.find(key)==MPlnuMap.end()) {
206 // MPlnuMap.insert(std::make_pair(key,std::shared_ptr<MPlnu>(new MPlnu(mySM,meson_i, vector_i, lep_i))));
207 // }
208 // return *MPlnuMap.at(key);
209  return getM<MPlnu>(MPlnuMap, meson_i, vector_i, lep_i);
210 }

◆ getMVgamma()

MVgamma & Flavour::getMVgamma ( QCD::meson  meson_i,
QCD::meson  vector_i 
) const

Returns the initial and final state dependent object for \( B \to V \gamma \).

Parameters
[in]meson_ispecifies the meson in the initial state
[in]vector_ispecifies the vector in the final state
Returns
returns a pointer to the initial and final state dependent object for the process \( B \to V \gamma \)

Definition at line 163 of file Flavour.cpp.

164 {
165 // std::reference_wrapper<std::shared_ptr<MVgamma> > x(MVgamma_BdKstgamma);
166 // if (meson_i == StandardModel::B_D && vector_i == StandardModel::K_star) x = std::ref(MVgamma_BdKstgamma);
167 // else if (meson_i == StandardModel::B_P && vector_i == StandardModel::K_star_P) x = std::ref(MVgamma_BpKstgamma);
168 // else if (meson_i == StandardModel::B_S && vector_i == StandardModel::PHI) x = std::ref(MVgamma_Bsphigamma);
169 // else throw std::runtime_error("Flavour: Decay channel not implemented.");
170 // return *getPtr<MVgamma>(x.get(), meson_i, vector_i);
171 // std::vector<int> key({meson_i, vector_i});
172 // if(MVgammaMap.find(key)==MVgammaMap.end()) {
173 // MVgammaMap.insert(std::make_pair(key,std::shared_ptr<MVgamma>(new MVgamma(mySM,meson_i, vector_i))));
174 // }
175 // return *MVgammaMap.at(key);
176  return getM<MVgamma>(MVgammaMap, meson_i, vector_i);
177 }

◆ getMVll()

MVll & Flavour::getMVll ( QCD::meson  meson_i,
QCD::meson  vector_i,
QCD::lepton  lep_i 
) const

Returns the initial and final state dependent object for \( B \to V \ell^+ \ell^- \).

Parameters
[in]meson_ispecifies the meson in the initial state
[in]vector_ispecifies the vector in the final state
[in]lepton_ispecifies the lepton in the final state
Returns
returns a pointer to the initial and final state dependent object for the process \( B \to V \ell^+ \ell^- \)

Definition at line 144 of file Flavour.cpp.

145 {
146 // std::reference_wrapper<std::shared_ptr<MVll> > x(MVll_BdKstarmu);
147 // if (meson_i == StandardModel::B_D && vector_i == StandardModel::K_star && lep_i == StandardModel::MU) x = std::ref(MVll_BdKstarmu);
148 // else if (meson_i == StandardModel::B_D && vector_i == StandardModel::K_star && lep_i == StandardModel::ELECTRON) x = std::ref(MVll_BdKstarel);
149 // else if (meson_i == StandardModel::B_P && vector_i == StandardModel::K_star_P && lep_i == StandardModel::MU) x = std::ref(MVll_BpKstarmu);
150 // else if (meson_i == StandardModel::B_P && vector_i == StandardModel::K_star_P && lep_i == StandardModel::ELECTRON) x = std::ref(MVll_BpKstarel);
151 // else if (meson_i == StandardModel::B_S && vector_i == StandardModel::PHI && lep_i == StandardModel::MU) x = std::ref(MVll_Bsphimu);
152 // else if (meson_i == StandardModel::B_S && vector_i == StandardModel::PHI && lep_i == StandardModel::ELECTRON) x = std::ref(MVll_Bsphiel);
153 // else throw std::runtime_error("Flavour: Decay channel not implemented.");
154 // return *getPtr<MVll>(x.get(), meson_i, vector_i, lep_i);
155 // std::vector<int> key({meson_i, vector_i, lep_i});
156 // if(MVllMap.find(key)==MVllMap.end()) {
157 // MVllMap.insert(std::make_pair(key,std::shared_ptr<MVll>(new MVll(mySM,meson_i, vector_i, lep_i))));
158 // }
159 // return *MVllMap.at(key);
160  return getM<MVll>(MVllMap, meson_i, vector_i, lep_i);
161 }

◆ getMVlnu()

MVlnu & Flavour::getMVlnu ( QCD::meson  meson_i,
QCD::meson  vector_i,
QCD::lepton  lep_i 
) const

Returns the initial and final state dependent object for \( B \to V \ell \nu \).

Parameters
[in]meson_ispecifies the meson in the initial state
[in]vector_ispecifies the vector in the final state
[in]lepton_ispecifies the lepton in the final state
Returns
returns a pointer to the initial and final state dependent object for the process \( B \to V \ell^+ \ell^- \)

Definition at line 179 of file Flavour.cpp.

180 {
181 // std::reference_wrapper<std::shared_ptr<MVlnu> > x(MVlnu_BdbarDstartaunu);
182 // if (meson_i == StandardModel::B_D && vector_i == StandardModel::D_star_P && lep_i == StandardModel::TAU) x = std::ref(MVlnu_BdbarDstartaunu);
183 // else if (meson_i == StandardModel::B_D && vector_i == StandardModel::D_star_P && lep_i == StandardModel::MU) x = std::ref(MVlnu_BdbarDstarmunu);
184 // else if (meson_i == StandardModel::B_D && vector_i == StandardModel::D_star_P && lep_i == StandardModel::ELECTRON) x = std::ref(MVlnu_BdbarDstarelnu);
185 // else throw std::runtime_error("Flavour: Decay channel not implemented.");
186 // return *getPtr<MVlnu>(x.get(), meson_i, vector_i, lep_i);
187 // std::vector<int> key({meson_i, vector_i, lep_i});
188 // if(MVlnuMap.find(key)==MVlnuMap.end()) {
189 // MVlnuMap.insert(std::make_pair(key,std::shared_ptr<MVlnu>(new MVlnu(mySM,meson_i, vector_i, lep_i))));
190 // }
191 // return *MVlnuMap.at(key);
192  return getM<MVlnu>(MVlnuMap, meson_i, vector_i, lep_i);
193 
194 }

◆ getPtr() [1/2]

template<typename T , typename... Args>
std::shared_ptr<T>& Flavour::getPtr ( std::shared_ptr< T > &  x,
Args ...  args 
) const
private

Definition at line 295 of file Flavour.cpp.

296 {
297  if (x.get() == nullptr)
298  x.reset(new T(mySM, args...));
299  return x;
300 }

◆ getPtr() [2/2]

template<typename T , typename... Args>
std::shared_ptr<T>& Flavour::getPtr ( std::shared_ptr< T > &  x,
Args...  args 
) const
private

◆ getUpdateFlag()

bool Flavour::getUpdateFlag ( QCD::meson  meson_i,
QCD::meson  meson_j,
QCD::lepton  lep_i 
) const

gets the update flag for the initial and final state dependent object for \( B \to V \ell^+ \ell^- \).

Parameters
[in]meson_ispecifies the meson in the initial state
[in]vector_ispecifies the vector in the final state
[in]lepton_ispecifies the lepton in the final state

Definition at line 264 of file Flavour.cpp.

265 {
266 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::MU) return update_BdKstarmu;
267 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::ELECTRON) return update_BdKstarel;
268 // if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_star_P && lep_i == StandardModel::MU) return update_BpKstarmu;
269 // if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_star_P && lep_i == StandardModel::ELECTRON) return update_BpKstarel;
270 // if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::MU) return update_Bsphimu;
271 // if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::ELECTRON) return update_Bsphiel;
272 // if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_P && lep_i == StandardModel::MU) return update_BpKmu;
273 // if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_P && lep_i == StandardModel::ELECTRON) return update_BpKel;
274 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_0 && lep_i == StandardModel::MU) return update_B0Kmu;
275 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_0 && lep_i == StandardModel::ELECTRON) return update_B0Kel;
276 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::NOLEPTON) return update_BdKstgamma;
277 // if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_star_P && lep_i == StandardModel::NOLEPTON) return update_BpKstgamma;
278 // if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::NOLEPTON) return update_Bsphigamma;
279 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_star_P && lep_i == StandardModel::TAU) return update_BdDstartaunu;
280 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_star_P && lep_i == StandardModel::MU) return update_BdDstarmunu;
281 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_star_P && lep_i == StandardModel::ELECTRON) return update_BdDstarelnu;
282 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_P && lep_i == StandardModel::TAU) return update_BdDtaunu;
283 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_P && lep_i == StandardModel::MU) return update_BdDmunu;
284 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_P && lep_i == StandardModel::ELECTRON) return update_BdDelnu;
285 // else throw std::runtime_error("Flavour: Wrong update flags requested.");
286 //
287  std::vector<int> key({meson_i, meson_j, lep_i});
288  if(flagUpdateMap.find(key)==flagUpdateMap.end()) {
289  // Default value
290  flagUpdateMap[key]=true;
291  }
292  return flagUpdateMap.at(key);
293 }

◆ setFlag()

bool Flavour::setFlag ( const std::string  name,
const bool  value 
)

Definition at line 27 of file Flavour.cpp.

28 {
29 
30  if (name.compare("UseDispersionRelation") == 0) {
32  return true;
33  } else if (name.compare("CLNflag") == 0) {
34  setFlagCLN(value);
35  return true;
36  } else if (name.compare("FixedWCbtos") == 0) {
37  setFlagFixedWCbtos(value);
38  return true;
39  } else
40  return false;
41 }

◆ setFlagCLN()

bool Flavour::setFlagCLN ( bool  CLNflag)
inline

Definition at line 240 of file Flavour.h.

241  {
242  return (this->CLNflag = CLNflag);
243  }

◆ setFlagFixedWCbtos()

bool Flavour::setFlagFixedWCbtos ( bool  FixedWCbtosflag)
inline

Definition at line 245 of file Flavour.h.

246  {
247  return (this->FixedWCbtosflag = FixedWCbtosflag);
248  }

◆ setFlagUseDispersionRelation()

bool Flavour::setFlagUseDispersionRelation ( bool  dispersion)
inline

Definition at line 235 of file Flavour.h.

236  {
237  return (this->dispersion = dispersion);
238  }

◆ setSMupdated()

void Flavour::setSMupdated ( ) const

a member used for the caching for \( B \to V \ell^+ \ell^- \).

Definition at line 302 of file Flavour.cpp.

303 {
304  for(auto &x : flagUpdateMap) x.second = true;
305 }

◆ setUpdateFlag()

void Flavour::setUpdateFlag ( QCD::meson  meson_i,
QCD::meson  meson_j,
QCD::lepton  lep_i,
bool  updated_i 
) const

sets the update flag for the initial and final state dependent object for \( B \to V \ell^+ \ell^- \).

Parameters
[in]meson_ispecifies the meson in the initial state
[in]vector_ispecifies the vector in the final state
[in]lepton_ispecifies the lepton in the final state

Definition at line 239 of file Flavour.cpp.

240 {
241 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::MU) update_BdKstarmu = updated_i;
242 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::ELECTRON) update_BdKstarel = updated_i;
243 // else if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_star_P && lep_i == StandardModel::MU) update_BpKstarmu = updated_i;
244 // else if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_star_P && lep_i == StandardModel::ELECTRON) update_BpKstarel = updated_i;
245 // else if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::MU) update_Bsphimu = updated_i;
246 // else if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::ELECTRON) update_Bsphiel = updated_i;
247 // else if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_P && lep_i == StandardModel::MU) update_BpKmu = updated_i;
248 // else if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_P && lep_i == StandardModel::ELECTRON) update_BpKel = updated_i;
249 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_0 && lep_i == StandardModel::MU) update_B0Kmu = updated_i;
250 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_0 && lep_i == StandardModel::ELECTRON) update_B0Kel = updated_i;
251 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::NOLEPTON) update_BdKstgamma = updated_i;
252 // else if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_star_P && lep_i == StandardModel::NOLEPTON) update_BpKstgamma = updated_i;
253 // else if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::NOLEPTON) update_Bsphigamma = updated_i;
254 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_star_P && lep_i == StandardModel::TAU) update_BdDstartaunu = updated_i;
255 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_star_P && lep_i == StandardModel::MU) update_BdDstarmunu = updated_i;
256 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_star_P && lep_i == StandardModel::ELECTRON) update_BdDstarelnu = updated_i;
257 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_P && lep_i == StandardModel::TAU) update_BdDtaunu = updated_i;
258 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_P && lep_i == StandardModel::MU) update_BdDmunu = updated_i;
259 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_P && lep_i == StandardModel::ELECTRON) update_BdDelnu = updated_i;
260 // else throw std::runtime_error("Flavour: Wrong update flag requested.");
261  flagUpdateMap[std::vector<int>({meson_i, meson_j, lep_i})] = updated_i;
262 }

Member Data Documentation

◆ CLNflag

bool Flavour::CLNflag
mutableprivate

Definition at line 280 of file Flavour.h.

◆ dispersion

bool Flavour::dispersion
mutableprivate

Definition at line 279 of file Flavour.h.

◆ FixedWCbtosflag

bool Flavour::FixedWCbtosflag
mutableprivate

Definition at line 281 of file Flavour.h.

◆ flagUpdateMap

std::map<std::vector<int>, bool> Flavour::flagUpdateMap
mutableprivate

Definition at line 277 of file Flavour.h.

◆ HDB1

std::shared_ptr<HeffDB1> Flavour::HDB1
mutableprivate

An Object for the Hamiltonian of the \( \Delta B = 1 \) processes.

Definition at line 270 of file Flavour.h.

◆ HDF2

std::shared_ptr<HeffDF2> Flavour::HDF2
mutableprivate

An Object for the Hamiltonian of the \( \Delta F = 2 \) processes.

Definition at line 269 of file Flavour.h.

◆ HDS1

std::shared_ptr<HeffDS1> Flavour::HDS1
mutableprivate

An Object for the Hamiltonian of the \( \Delta S = 1 \) processes.

Definition at line 271 of file Flavour.h.

◆ MPllMap

std::map<std::vector<int>, std::shared_ptr<MPll> > Flavour::MPllMap
mutableprivate

Definition at line 275 of file Flavour.h.

◆ MPlnuMap

std::map<std::vector<int>, std::shared_ptr<MPlnu> > Flavour::MPlnuMap
mutableprivate

Definition at line 276 of file Flavour.h.

◆ MVgammaMap

std::map<std::vector<int>, std::shared_ptr<MVgamma> > Flavour::MVgammaMap
mutableprivate

Definition at line 274 of file Flavour.h.

◆ MVllMap

std::map<std::vector<int>, std::shared_ptr<MVll> > Flavour::MVllMap
mutableprivate

Definition at line 272 of file Flavour.h.

◆ MVlnuMap

std::map<std::vector<int>, std::shared_ptr<MVlnu> > Flavour::MVlnuMap
mutableprivate

Definition at line 273 of file Flavour.h.

◆ mySM

const StandardModel& Flavour::mySM
private

Definition at line 268 of file Flavour.h.


The documentation for this class was generated from the following files:
Flavour::setFlagCLN
bool setFlagCLN(bool CLNflag)
Definition: Flavour.h:240
Flavour::MPllMap
std::map< std::vector< int >, std::shared_ptr< MPll > > MPllMap
Definition: Flavour.h:275
Flavour::HDS1
std::shared_ptr< HeffDS1 > HDS1
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:271
Flavour::FixedWCbtosflag
bool FixedWCbtosflag
Definition: Flavour.h:281
Flavour::CLNflag
bool CLNflag
Definition: Flavour.h:280
Flavour::dispersion
bool dispersion
Definition: Flavour.h:279
Flavour::MVlnuMap
std::map< std::vector< int >, std::shared_ptr< MVlnu > > MVlnuMap
Definition: Flavour.h:273
Flavour::MPlnuMap
std::map< std::vector< int >, std::shared_ptr< MPlnu > > MPlnuMap
Definition: Flavour.h:276
Flavour::HDF2
std::shared_ptr< HeffDF2 > HDF2
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:269
Flavour::setFlagUseDispersionRelation
bool setFlagUseDispersionRelation(bool dispersion)
Definition: Flavour.h:235
Flavour::flagUpdateMap
std::map< std::vector< int >, bool > flagUpdateMap
Definition: Flavour.h:277
Flavour::MVllMap
std::map< std::vector< int >, std::shared_ptr< MVll > > MVllMap
Definition: Flavour.h:272
Flavour::mySM
const StandardModel & mySM
Definition: Flavour.h:268
Flavour::setFlagFixedWCbtos
bool setFlagFixedWCbtos(bool FixedWCbtosflag)
Definition: Flavour.h:245
Flavour::MVgammaMap
std::map< std::vector< int >, std::shared_ptr< MVgamma > > MVgammaMap
Definition: Flavour.h:274
Flavour::HDB1
std::shared_ptr< HeffDB1 > HDB1
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:270