40 if (name.compare(
"UseDispersionRelation") == 0) {
43 }
else if (name.compare(
"UsezExpansion") == 0) {
46 }
else if (name.compare(
"CLNflag") == 0) {
49 }
else if (name.compare(
"BGLflag") == 0) {
52 }
else if (name.compare(
"DMflag") == 0) {
55 }
else if (name.compare(
"FixedWCbtos") == 0) {
58 }
else if (name.compare(
"MPll_FNALMILC_flag") == 0) {
61 }
else if (name.compare(
"MPll_GRvDV_flag") == 0) {
64 }
else if (name.compare(
"MPll_DM_flag") == 0) {
67 }
else if (name.compare(
"MVll_DM_flag") == 0) {
70 }
else if (name.compare(
"NeutrinoTree_flag") == 0) {
73 }
else if (name.compare(
"BXsnunu_LFUNP_flag") == 0) {
83 return *getPtr<HeffDF2>(
HDF2);
93 return *getPtr<HeffDS1>(
HDS1);
98 return *getPtr<HeffDB1>(
HDB1);
103 return getPtr<HeffDF2>(
HDF2)->ComputeCoeffBd(mu, scheme,
SM);
108 return getPtr<HeffDF2>(
HDF2)->ComputeCoeffBs(mu, scheme,
SM);
113 return getPtr<HeffDF2>(
HDF2)->ComputeCoeffdd(mu, scheme);
118 return getPtr<HeffDF2>(
HDF2)->ComputeCoeffK(mu, scheme);
123 return getPtr<HeffDF2>(
HDF2)->ComputeCoeffmK(mu, scheme);
128 return getPtr<HeffDS1>(
HDS1)->ComputeCoeffDS1PPv(mu, scheme);
133 return getPtr<HeffDS1>(
HDS1)->ComputeCoeffDS1PPz(muc, scheme);
138 return getPtr<HeffDS1>(
HDS1)->ComputeCoeffDS1pnunu();
143 return getPtr<HeffDS1>(
HDS1)->ComputeCoeffDS1pnunuC();
148 return getPtr<HeffDS1>(
HDS1)->ComputeCoeffDS1mumu();
154 return getPtr<HeffDF1_diujlknu>(
HDF1_diujlknu)->ComputeCoeffdiujleptonknu(i, j, k, mu);
161 return getPtr<HeffDB1>(
HDB1)->ComputeCoeffsmumu(mu, scheme);
166 return getPtr<HeffDB1>(
HDB1)->ComputeCoeffdmumu(mu, scheme);
171 return getPtr<HeffDB1>(
HDB1)->ComputeCoeffsnunu(lepton, noSM);
176 return getPtr<HeffDB1>(
HDB1)->ComputeCoeffdnunu();
181 return getPtr<HeffDB1>(
HDB1)->ComputeCoeffsgamma(mu, noSM, scheme);
186 return getPtr<HeffDB1>(
HDB1)->ComputeCoeffsgamma_Buras(mu, noSM, scheme);
191 return getPtr<HeffDB1>(
HDB1)->ComputeCoeffprimesgamma(mu, scheme);
196 return getPtr<HeffDB1>(
HDB1)->ComputeCoeffBMll(mu, lepton, noSM, scheme);
201 return getPtr<HeffDB1>(
HDB1)->ComputeCoeffBMll_Buras(mu, lepton, noSM, scheme);
206 return getPtr<HeffDB1>(
HDB1)->ComputeCoeffprimeBMll(mu, lepton, scheme);
225 return getM<MVll>(
MVllMap, meson_i, vector_i, lep_i);
230 return getM<AmpDB2>(
AmpDB2Map, Bmeson_i, flag_fixmub, flag_RI);
246 return getM<MVgamma>(
MVgammaMap, meson_i, vector_i);
262 return getM<MVlnu>(
MVlnuMap, meson_i, vector_i, lep_i);
279 return getM<MPlnu>(
MPlnuMap, meson_i, vector_i, lep_i);
296 return getM<MPll>(
MPllMap, meson_i, vector_i, lep_i);
299template <
typename T,
typename... Args>
300T&
Flavour::getM(std::map<std::vector<int>,std::shared_ptr<T> >& map, Args ... args)
const
302 std::vector<int> key({args...});
303 if(map.find(key)==map.end()) {
304 map.insert(std::make_pair(key,std::make_shared<T>(
mySM,args...)));
331 flagUpdateMap[std::vector<int>({meson_i, meson_j, lep_i})] = updated_i;
357 std::vector<int> key({meson_i, meson_j, lep_i});
365template<
typename T,
typename... Args> std::shared_ptr<T>&
Flavour::getPtr(std::shared_ptr<T>& x, Args ... args)
const
367 if (x.get() ==
nullptr){
368 x = std::make_shared<T>(
mySM, args...);
bool setFlagMPll_FNALMILC(bool MPll_FNALMILC_flag)
gslpp::vector< gslpp::complex > ** ComputeCoeffsgamma(double mu, bool noSM=false, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
std::map< std::vector< int >, bool > flagUpdateMap
std::shared_ptr< HeffDB1 > HDB1
An Object for the Hamiltonian of the processes.
gslpp::vector< gslpp::complex > ** ComputeCoeffsgamma_Buras(double mu, bool noSM=false, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
AmpDB2 & getDB2(int BMeson_i, bool flag_fixmub=false, bool flag_RI=false) const
Returns a reference to the meson dependent object for processes.
std::map< std::vector< int >, std::shared_ptr< MVll > > MVllMap
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1pnunuC() const
gslpp::vector< gslpp::complex > ** ComputeCoeffBd(double mu, schemes scheme=NDR, bool SM=false) const
Computes the Wilson coefficient for the process .
HeffDS1 & getHDS1() const
The member that returns an object of the class HeffDS1.
HeffDF1_diujlknu & getHDF1_diujlknu() const
The member that returns an object of the class HeffDF1_diujlknu.
std::map< std::vector< int >, std::shared_ptr< MPll > > MPllMap
std::shared_ptr< HeffDF1_diujlknu > HDF1_diujlknu
An Object for the Hamiltonian built with operators in the JMS basis, ordered as CnueduVLLkkij,...
gslpp::vector< gslpp::complex > ** ComputeCoeffsnunu(QCD::lepton lepton=QCD::NOLEPTON, bool noSM=false) const
bool setFlagBXsnunu_LFUNP(bool BXsnunu_LFUNP_flag) const
bool setFlagDM(bool DMflag)
MVlnu & getMVlnu(QCD::meson meson_i, QCD::meson vector_i, QCD::lepton lep_i) const
Returns the initial and final state dependent object for .
gslpp::vector< gslpp::complex > ** ComputeCoeffprimesgamma(double mu, schemes scheme=NDR) const
Computes the chirality flipped Wilson coefficient for the process .
HeffDF2 & getHDF2() const
The member that returns an object of the class HeffDF2.
bool setFlagNeutrinoTree(bool NeutrinoTree_flag) const
bool setFlagBGL(bool BGLflag)
HeffDB1 & getHDB1() const
The member that returns an object of the class HeffDB1.
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1mumu() const
std::map< std::vector< int >, std::shared_ptr< MVlnu > > MVlnuMap
gslpp::vector< gslpp::complex > ** ComputeCoeffBs(double mu, schemes scheme=NDR, bool SM=false) const
Computes the Wilson coefficient for the process .
std::map< std::vector< int >, std::shared_ptr< MVgamma > > MVgammaMap
gslpp::vector< gslpp::complex > ** ComputeCoeffmK(double mu, schemes scheme=NDR) const
MPll & getMPll(QCD::meson meson_i, QCD::meson pseudoscalar_i, QCD::lepton lep_i) const
Returns the initial and final state dependent object for .
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 .
MVgamma & getMVgamma(QCD::meson meson_i, QCD::meson vector_i) const
Returns the initial and final state dependent object for .
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1PPv(double mu, schemes scheme=NDR) const
MVll & getMVll(QCD::meson meson_i, QCD::meson vector_i, QCD::lepton lep_i) const
Returns the initial and final state dependent object for .
bool setFlagCLN(bool CLNflag)
bool setFlagFixedWCbtos(bool FixedWCbtosflag)
gslpp::vector< gslpp::complex > ** ComputeCoeffprimeBMll(double mu, QCD::lepton lepton, schemes scheme=NDR) const
Computes the chirality flipped Wilson coefficient for the process .
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 .
std::map< std::vector< int >, std::shared_ptr< AmpDB2 > > AmpDB2Map
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1pnunu() const
bool setFlagMPll_DM(bool MPll_DM_flag)
gslpp::vector< gslpp::complex > ** ComputeCoeffBMll_Buras(double mu, QCD::lepton lepton, bool noSM=false, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
gslpp::vector< gslpp::complex > ** ComputeCoeffK(double mu, schemes scheme=NDR) const
std::shared_ptr< HeffDF2 > HDF2
An Object for the Hamiltonian of the processes.
gslpp::vector< gslpp::complex > ** ComputeCoeffdmumu(double mu, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
bool setFlagMVll_DM(bool MVll_DM_flag)
gslpp::vector< gslpp::complex > ** ComputeCoeffdiujlknu(int i, int j, int k, double mu) const
Computes the Wilson coefficient for the Hamiltonian transitions in the JMS basis ordered as CnueduVL...
const StandardModel & mySM
gslpp::vector< gslpp::complex > ** ComputeCoeffdnunu() const
gslpp::vector< gslpp::complex > ** ComputeCoeffsmumu(double mu, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
gslpp::vector< gslpp::complex > ** ComputeCoeffBMll(double mu, QCD::lepton lepton, bool noSM=false, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
std::shared_ptr< HeffDS1 > HDS1
An Object for the Hamiltonian of the processes.
std::map< std::vector< int >, std::shared_ptr< MPlnu > > MPlnuMap
void setSMupdated() const
a member used for the caching for .
bool setFlagUseDispersionRelation(bool dispersion)
bool setFlagUsezExpansion(bool zExpansion)
T & getM(std::map< std::vector< int >, std::shared_ptr< T > > &map, Args ... args) const
bool setFlagMPll_GRvDV(bool MPll_GRvDV_flag)
gslpp::vector< gslpp::complex > ** ComputeCoeffdd(double mu, schemes scheme=NDR) const
Flavour(const StandardModel &SM_i)
The constructor.
std::shared_ptr< T > & getPtr(std::shared_ptr< T > &x, Args... args) const
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1PPz(double muc, schemes scheme=NDR) const
bool setFlag(const std::string name, const bool value)
MPlnu & getMPlnu(QCD::meson meson_i, QCD::meson pseudoscalar_i, QCD::lepton lep_i) const
Returns the initial and final state dependent object for .
Hamiltonian Class for transitions (leptonic and semileptonic charged-current meson decays)
A class for the effective Hamiltonian.
meson
An enum type for mesons.
lepton
An enum type for leptons.
A model class for the Standard Model.
schemes
An enum type for regularization schemes.