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 32 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...
 
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::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 19 of file Flavour.cpp.

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

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 53 of file Flavour.cpp.

54 {
55  return getPtr<HeffDF2>(HDF2)->ComputeCoeffBd(mu, scheme);
56 }

◆ 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 113 of file Flavour.cpp.

114 {
115  return getPtr<HeffDB1>(HDB1)->ComputeCoeffBMll(mu, lepton, noSM, scheme);
116 }

◆ 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 58 of file Flavour.cpp.

59 {
60  return getPtr<HeffDF2>(HDF2)->ComputeCoeffBs(mu, scheme, SM);
61 }

◆ 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 88 of file Flavour.cpp.

89 {
90  return getPtr<HeffDB1>(HDB1)->ComputeCoeffbtaunu(meson_i);
91 }

◆ ComputeCoeffdd()

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

Definition at line 63 of file Flavour.cpp.

64 {
65  return getPtr<HeffDF2>(HDF2)->ComputeCoeffdd(mu, scheme);
66 }

◆ 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 83 of file Flavour.cpp.

84 {
85  return getPtr<HeffDB1>(HDB1)->ComputeCoeffdmumu(mu, scheme);
86 }

◆ ComputeCoeffdnunu()

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

Definition at line 98 of file Flavour.cpp.

99 {
100  return getPtr<HeffDB1>(HDB1)->ComputeCoeffdnunu();
101 }

◆ ComputeCoeffDS1mumu()

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

◆ ComputeCoeffDS1pnunu()

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

◆ ComputeCoeffDS1PP()

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

◆ ComputeCoeffK()

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

Definition at line 68 of file Flavour.cpp.

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

◆ ComputeCoeffmK()

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

Definition at line 73 of file Flavour.cpp.

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

◆ 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 118 of file Flavour.cpp.

119 {
120  return getPtr<HeffDB1>(HDB1)->ComputeCoeffprimeBMll(mu, lepton, scheme);
121 }

◆ 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 108 of file Flavour.cpp.

109 {
110  return getPtr<HeffDB1>(HDB1)->ComputeCoeffprimesgamma(mu, scheme);
111 }

◆ 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 103 of file Flavour.cpp.

104 {
105  return getPtr<HeffDB1>(HDB1)->ComputeCoeffsgamma(mu, noSM, scheme);
106 }

◆ 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 78 of file Flavour.cpp.

79 {
80  return getPtr<HeffDB1>(HDB1)->ComputeCoeffsmumu(mu, scheme);
81 }

◆ ComputeCoeffsnunu()

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

Definition at line 93 of file Flavour.cpp.

94 {
95  return getPtr<HeffDB1>(HDB1)->ComputeCoeffsnunu();
96 }

◆ getFlagCLN()

bool Flavour::getFlagCLN ( ) const
inline

Definition at line 247 of file Flavour.h.

248  {
249  return CLNflag;
250  }

◆ getFlagFixedWCbtos()

bool Flavour::getFlagFixedWCbtos ( ) const
inline

Definition at line 252 of file Flavour.h.

253  {
254  return FixedWCbtosflag;
255  }

◆ getFlagUseDispersionRelation()

bool Flavour::getFlagUseDispersionRelation ( ) const
inline

Definition at line 242 of file Flavour.h.

243  {
244  return dispersion;
245  }

◆ 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 48 of file Flavour.cpp.

49 {
50  return *getPtr<HeffDB1>(HDB1);
51 }

◆ 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 43 of file Flavour.cpp.

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

◆ 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 209 of file Flavour.cpp.

210 {
211  std::vector<int> key({args...});
212  if(map.find(key)==map.end()) {
213  map.insert(std::make_pair(key,std::shared_ptr<T>(new T(mySM,args...))));
214  }
215  return *map.at(key);
216 }

◆ 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 191 of file Flavour.cpp.

192 {
193 // std::reference_wrapper<std::shared_ptr<MPll> > x(MPll_BpKmu);
194 // if (meson_i == QCD::B_P && pseudoscalar_i == QCD::K_P && lep_i == QCD::MU) x = std::ref(MPll_BpKmu);
195 // else if (meson_i == QCD::B_P && pseudoscalar_i == QCD::K_P && lep_i == QCD::ELECTRON) x = std::ref(MPll_BpKel);
196 // else if (meson_i == QCD::B_D && pseudoscalar_i == QCD::K_0 && lep_i == QCD::MU) x = std::ref(MPll_B0Kmu);
197 // else if (meson_i == QCD::B_D && pseudoscalar_i == QCD::K_0 && lep_i == QCD::ELECTRON) x = std::ref(MPll_B0Kel);
198 // else throw std::runtime_error("Flavour: Decay channel not implemented.");
199 // return *getPtr<MPll>(x.get(), meson_i, pseudoscalar_i, lep_i);
200 // std::vector<int> key({meson_i, vector_i, lep_i});
201 // if(MPllMap.find(key)==MPllMap.end()) {
202 // MPllMap.insert(std::make_pair(key,std::shared_ptr<MPll>(new MPll(mySM,meson_i, vector_i, lep_i))));
203 // }
204 // return *MPllMap.at(key);
205  return getM<MPll>(MPllMap, meson_i, vector_i, lep_i);
206 }

◆ 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 175 of file Flavour.cpp.

176 {
177 // std::reference_wrapper<std::shared_ptr<MPlnu> > x(MPlnu_BdbarDtaunu);
178 // if (meson_i == StandardModel::B_D && vector_i == StandardModel::D_P && lep_i == StandardModel::TAU) x = std::ref(MPlnu_BdbarDtaunu);
179 // else if (meson_i == StandardModel::B_D && vector_i == StandardModel::D_P && lep_i == StandardModel::MU) x = std::ref(MPlnu_BdbarDmunu);
180 // else if (meson_i == StandardModel::B_D && vector_i == StandardModel::D_P && lep_i == StandardModel::ELECTRON) x = std::ref(MPlnu_BdbarDelnu);
181 // else throw std::runtime_error("Flavour: Decay channel not implemented.");
182 // return *getPtr<MPlnu>(x.get(), meson_i, vector_i, lep_i);
183 // std::vector<int> key({meson_i, vector_i, lep_i});
184 // if(MPlnuMap.find(key)==MPlnuMap.end()) {
185 // MPlnuMap.insert(std::make_pair(key,std::shared_ptr<MPlnu>(new MPlnu(mySM,meson_i, vector_i, lep_i))));
186 // }
187 // return *MPlnuMap.at(key);
188  return getM<MPlnu>(MPlnuMap, meson_i, vector_i, lep_i);
189 }

◆ 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 142 of file Flavour.cpp.

143 {
144 // std::reference_wrapper<std::shared_ptr<MVgamma> > x(MVgamma_BdKstgamma);
145 // if (meson_i == StandardModel::B_D && vector_i == StandardModel::K_star) x = std::ref(MVgamma_BdKstgamma);
146 // else if (meson_i == StandardModel::B_P && vector_i == StandardModel::K_star_P) x = std::ref(MVgamma_BpKstgamma);
147 // else if (meson_i == StandardModel::B_S && vector_i == StandardModel::PHI) x = std::ref(MVgamma_Bsphigamma);
148 // else throw std::runtime_error("Flavour: Decay channel not implemented.");
149 // return *getPtr<MVgamma>(x.get(), meson_i, vector_i);
150 // std::vector<int> key({meson_i, vector_i});
151 // if(MVgammaMap.find(key)==MVgammaMap.end()) {
152 // MVgammaMap.insert(std::make_pair(key,std::shared_ptr<MVgamma>(new MVgamma(mySM,meson_i, vector_i))));
153 // }
154 // return *MVgammaMap.at(key);
155  return getM<MVgamma>(MVgammaMap, meson_i, vector_i);
156 }

◆ 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 123 of file Flavour.cpp.

124 {
125 // std::reference_wrapper<std::shared_ptr<MVll> > x(MVll_BdKstarmu);
126 // if (meson_i == StandardModel::B_D && vector_i == StandardModel::K_star && lep_i == StandardModel::MU) x = std::ref(MVll_BdKstarmu);
127 // else if (meson_i == StandardModel::B_D && vector_i == StandardModel::K_star && lep_i == StandardModel::ELECTRON) x = std::ref(MVll_BdKstarel);
128 // else if (meson_i == StandardModel::B_P && vector_i == StandardModel::K_star_P && lep_i == StandardModel::MU) x = std::ref(MVll_BpKstarmu);
129 // else if (meson_i == StandardModel::B_P && vector_i == StandardModel::K_star_P && lep_i == StandardModel::ELECTRON) x = std::ref(MVll_BpKstarel);
130 // else if (meson_i == StandardModel::B_S && vector_i == StandardModel::PHI && lep_i == StandardModel::MU) x = std::ref(MVll_Bsphimu);
131 // else if (meson_i == StandardModel::B_S && vector_i == StandardModel::PHI && lep_i == StandardModel::ELECTRON) x = std::ref(MVll_Bsphiel);
132 // else throw std::runtime_error("Flavour: Decay channel not implemented.");
133 // return *getPtr<MVll>(x.get(), meson_i, vector_i, lep_i);
134 // std::vector<int> key({meson_i, vector_i, lep_i});
135 // if(MVllMap.find(key)==MVllMap.end()) {
136 // MVllMap.insert(std::make_pair(key,std::shared_ptr<MVll>(new MVll(mySM,meson_i, vector_i, lep_i))));
137 // }
138 // return *MVllMap.at(key);
139  return getM<MVll>(MVllMap, meson_i, vector_i, lep_i);
140 }

◆ 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 158 of file Flavour.cpp.

159 {
160 // std::reference_wrapper<std::shared_ptr<MVlnu> > x(MVlnu_BdbarDstartaunu);
161 // if (meson_i == StandardModel::B_D && vector_i == StandardModel::D_star_P && lep_i == StandardModel::TAU) x = std::ref(MVlnu_BdbarDstartaunu);
162 // else if (meson_i == StandardModel::B_D && vector_i == StandardModel::D_star_P && lep_i == StandardModel::MU) x = std::ref(MVlnu_BdbarDstarmunu);
163 // else if (meson_i == StandardModel::B_D && vector_i == StandardModel::D_star_P && lep_i == StandardModel::ELECTRON) x = std::ref(MVlnu_BdbarDstarelnu);
164 // else throw std::runtime_error("Flavour: Decay channel not implemented.");
165 // return *getPtr<MVlnu>(x.get(), meson_i, vector_i, lep_i);
166 // std::vector<int> key({meson_i, vector_i, lep_i});
167 // if(MVlnuMap.find(key)==MVlnuMap.end()) {
168 // MVlnuMap.insert(std::make_pair(key,std::shared_ptr<MVlnu>(new MVlnu(mySM,meson_i, vector_i, lep_i))));
169 // }
170 // return *MVlnuMap.at(key);
171  return getM<MVlnu>(MVlnuMap, meson_i, vector_i, lep_i);
172 
173 }

◆ 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 274 of file Flavour.cpp.

275 {
276  if (x.get() == nullptr)
277  x.reset(new T(mySM, args...));
278  return x;
279 }

◆ 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 243 of file Flavour.cpp.

244 {
245 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::MU) return update_BdKstarmu;
246 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::ELECTRON) return update_BdKstarel;
247 // if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_star_P && lep_i == StandardModel::MU) return update_BpKstarmu;
248 // if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_star_P && lep_i == StandardModel::ELECTRON) return update_BpKstarel;
249 // if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::MU) return update_Bsphimu;
250 // if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::ELECTRON) return update_Bsphiel;
251 // if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_P && lep_i == StandardModel::MU) return update_BpKmu;
252 // if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_P && lep_i == StandardModel::ELECTRON) return update_BpKel;
253 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_0 && lep_i == StandardModel::MU) return update_B0Kmu;
254 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_0 && lep_i == StandardModel::ELECTRON) return update_B0Kel;
255 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::NOLEPTON) return update_BdKstgamma;
256 // if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_star_P && lep_i == StandardModel::NOLEPTON) return update_BpKstgamma;
257 // if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::NOLEPTON) return update_Bsphigamma;
258 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_star_P && lep_i == StandardModel::TAU) return update_BdDstartaunu;
259 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_star_P && lep_i == StandardModel::MU) return update_BdDstarmunu;
260 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_star_P && lep_i == StandardModel::ELECTRON) return update_BdDstarelnu;
261 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_P && lep_i == StandardModel::TAU) return update_BdDtaunu;
262 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_P && lep_i == StandardModel::MU) return update_BdDmunu;
263 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_P && lep_i == StandardModel::ELECTRON) return update_BdDelnu;
264 // else throw std::runtime_error("Flavour: Wrong update flags requested.");
265 //
266  std::vector<int> key({meson_i, meson_j, lep_i});
267  if(flagUpdateMap.find(key)==flagUpdateMap.end()) {
268  // Default value
269  flagUpdateMap[key]=true;
270  }
271  return flagUpdateMap.at(key);
272 }

◆ setFlag()

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

Definition at line 26 of file Flavour.cpp.

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

◆ setFlagCLN()

bool Flavour::setFlagCLN ( bool  CLNflag)
inline

Definition at line 232 of file Flavour.h.

233  {
234  return (this->CLNflag = CLNflag);
235  }

◆ setFlagFixedWCbtos()

bool Flavour::setFlagFixedWCbtos ( bool  FixedWCbtosflag)
inline

Definition at line 237 of file Flavour.h.

238  {
239  return (this->FixedWCbtosflag = FixedWCbtosflag);
240  }

◆ setFlagUseDispersionRelation()

bool Flavour::setFlagUseDispersionRelation ( bool  dispersion)
inline

Definition at line 227 of file Flavour.h.

228  {
229  return (this->dispersion = dispersion);
230  }

◆ setSMupdated()

void Flavour::setSMupdated ( ) const

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

Definition at line 281 of file Flavour.cpp.

282 {
283  for(auto &x : flagUpdateMap) x.second = true;
284 }

◆ 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 218 of file Flavour.cpp.

219 {
220 // if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::MU) update_BdKstarmu = updated_i;
221 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::ELECTRON) update_BdKstarel = updated_i;
222 // else if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_star_P && lep_i == StandardModel::MU) update_BpKstarmu = updated_i;
223 // else if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_star_P && lep_i == StandardModel::ELECTRON) update_BpKstarel = updated_i;
224 // else if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::MU) update_Bsphimu = updated_i;
225 // else if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::ELECTRON) update_Bsphiel = updated_i;
226 // else if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_P && lep_i == StandardModel::MU) update_BpKmu = updated_i;
227 // else if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_P && lep_i == StandardModel::ELECTRON) update_BpKel = updated_i;
228 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_0 && lep_i == StandardModel::MU) update_B0Kmu = updated_i;
229 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_0 && lep_i == StandardModel::ELECTRON) update_B0Kel = updated_i;
230 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::K_star && lep_i == StandardModel::NOLEPTON) update_BdKstgamma = updated_i;
231 // else if (meson_i == StandardModel::B_P && meson_j == StandardModel::K_star_P && lep_i == StandardModel::NOLEPTON) update_BpKstgamma = updated_i;
232 // else if (meson_i == StandardModel::B_S && meson_j == StandardModel::PHI && lep_i == StandardModel::NOLEPTON) update_Bsphigamma = updated_i;
233 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_star_P && lep_i == StandardModel::TAU) update_BdDstartaunu = updated_i;
234 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_star_P && lep_i == StandardModel::MU) update_BdDstarmunu = updated_i;
235 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_star_P && lep_i == StandardModel::ELECTRON) update_BdDstarelnu = updated_i;
236 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_P && lep_i == StandardModel::TAU) update_BdDtaunu = updated_i;
237 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_P && lep_i == StandardModel::MU) update_BdDmunu = updated_i;
238 // else if (meson_i == StandardModel::B_D && meson_j == StandardModel::D_P && lep_i == StandardModel::ELECTRON) update_BdDelnu = updated_i;
239 // else throw std::runtime_error("Flavour: Wrong update flag requested.");
240  flagUpdateMap[std::vector<int>({meson_i, meson_j, lep_i})] = updated_i;
241 }

Member Data Documentation

◆ CLNflag

bool Flavour::CLNflag
mutableprivate

Definition at line 271 of file Flavour.h.

◆ dispersion

bool Flavour::dispersion
mutableprivate

Definition at line 270 of file Flavour.h.

◆ FixedWCbtosflag

bool Flavour::FixedWCbtosflag
mutableprivate

Definition at line 272 of file Flavour.h.

◆ flagUpdateMap

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

Definition at line 268 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 262 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 261 of file Flavour.h.

◆ MPllMap

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

Definition at line 266 of file Flavour.h.

◆ MPlnuMap

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

Definition at line 267 of file Flavour.h.

◆ MVgammaMap

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

Definition at line 265 of file Flavour.h.

◆ MVllMap

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

Definition at line 263 of file Flavour.h.

◆ MVlnuMap

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

Definition at line 264 of file Flavour.h.

◆ mySM

const StandardModel& Flavour::mySM
private

Definition at line 260 of file Flavour.h.


The documentation for this class was generated from the following files:
Flavour::setFlagCLN
bool setFlagCLN(bool CLNflag)
Definition: Flavour.h:232
Flavour::MPllMap
std::map< std::vector< int >, std::shared_ptr< MPll > > MPllMap
Definition: Flavour.h:266
Flavour::FixedWCbtosflag
bool FixedWCbtosflag
Definition: Flavour.h:272
Flavour::CLNflag
bool CLNflag
Definition: Flavour.h:271
Flavour::dispersion
bool dispersion
Definition: Flavour.h:270
Flavour::MVlnuMap
std::map< std::vector< int >, std::shared_ptr< MVlnu > > MVlnuMap
Definition: Flavour.h:264
Flavour::MPlnuMap
std::map< std::vector< int >, std::shared_ptr< MPlnu > > MPlnuMap
Definition: Flavour.h:267
Flavour::HDF2
std::shared_ptr< HeffDF2 > HDF2
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:261
Flavour::setFlagUseDispersionRelation
bool setFlagUseDispersionRelation(bool dispersion)
Definition: Flavour.h:227
Flavour::flagUpdateMap
std::map< std::vector< int >, bool > flagUpdateMap
Definition: Flavour.h:268
Flavour::MVllMap
std::map< std::vector< int >, std::shared_ptr< MVll > > MVllMap
Definition: Flavour.h:263
Flavour::mySM
const StandardModel & mySM
Definition: Flavour.h:260
Flavour::setFlagFixedWCbtos
bool setFlagFixedWCbtos(bool FixedWCbtosflag)
Definition: Flavour.h:237
Flavour::MVgammaMap
std::map< std::vector< int >, std::shared_ptr< MVgamma > > MVgammaMap
Definition: Flavour.h:265
Flavour::HDB1
std::shared_ptr< HeffDB1 > HDB1
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:262