a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
Flavour.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2012 HEPfit Collaboration
3 *
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8#ifndef FLAVOUR_H
9#define FLAVOUR_H
10
11class StandardModel;
12class HeffDF2;
14class HeffDB1;
15class HeffDC1;
16class HeffDS1;
17class MVll;
18class MPll;
19class MVgamma;
20class MVlnu;
21class MPlnu;
22class BClnu;
23class AmpDB2;
24#include "QCD.h"
25#include <boost/tuple/tuple.hpp>
26#include <memory>
27
37class Flavour {
38public:
39
44 Flavour(const StandardModel& SM_i);
45
51 HeffDF2& getHDF2() const;
52
53
60
66 HeffDS1& getHDS1() const;
67
68
74 HeffDC1& getHDC1() const;
75
81 HeffDB1& getHDB1() const;
82
90 gslpp::vector<gslpp::complex>** ComputeCoeffBd(double mu, schemes scheme = NDR, bool SM = false) const;
91
92 gslpp::vector<gslpp::complex>** ComputeCoeffDS1pnunu() const;
93 gslpp::vector<gslpp::complex>** ComputeCoeffDS1pnunuC() const;
94 gslpp::vector<gslpp::complex>** ComputeCoeffDS1mumu() const;
95
103 gslpp::vector<gslpp::complex>** ComputeCoeffBs(double mu, schemes scheme = NDR, bool SM = false) const;
104
105 gslpp::vector<gslpp::complex>** ComputeCoeffdd(double mu, schemes scheme = NDR) const;
106
107 gslpp::vector<gslpp::complex>** ComputeCoeffK(double mu, schemes scheme = NDR) const;
108
109 gslpp::vector<gslpp::complex>** ComputeCoeffmK(double mu, schemes scheme = NDR) const;
110
111 gslpp::vector<gslpp::complex>** ComputeCoeffDS1PPv(double mu, schemes scheme = NDR) const;
112 gslpp::vector<gslpp::complex>** ComputeCoeffDS1PPz(double muc, schemes scheme = NDR) const;
113
121 gslpp::vector<gslpp::complex>** ComputeCoeffsmumu(double mu, schemes scheme = NDR) const;
122
130 gslpp::vector<gslpp::complex>** ComputeCoeffdmumu(double mu, schemes scheme = NDR) const;
131
132
142 gslpp::vector<gslpp::complex>** ComputeCoeffdiujlknu(int i, int j, int k, double mu) const;
143
144 gslpp::vector<gslpp::complex>** ComputeCoeffsnunu(QCD::lepton lepton = QCD::NOLEPTON, bool noSM = false) const;
145
146 gslpp::vector<gslpp::complex>** ComputeCoeffdnunu() const;
147
155 gslpp::vector<gslpp::complex>** ComputeCoeffsgamma(double mu, bool noSM = false, schemes scheme = NDR) const;
156
164 gslpp::vector<gslpp::complex>** ComputeCoeffprimesgamma(double mu, schemes scheme = NDR) const;
165
173 gslpp::vector<gslpp::complex>** ComputeCoeffsgamma_Buras(double mu, bool noSM = false, schemes scheme = NDR) const;
174
182 gslpp::vector<gslpp::complex>** ComputeCoeffBMll(double mu, QCD::lepton lepton, bool noSM = false, schemes scheme = NDR) const;
183
191 gslpp::vector<gslpp::complex>** ComputeCoeffBMll_Buras(double mu, QCD::lepton lepton, bool noSM = false, schemes scheme = NDR) const;
192
200 gslpp::vector<gslpp::complex>** ComputeCoeffprimeBMll(double mu, QCD::lepton lepton, schemes scheme = NDR) const;
201
208 AmpDB2& getDB2(int BMeson_i, bool flag_fixmub = false, bool flag_RI = false) const;
209
218 MVll& getMVll(QCD::meson meson_i, QCD::meson vector_i, QCD::lepton lep_i) const;
219
228 MPll& getMPll(QCD::meson meson_i, QCD::meson pseudoscalar_i, QCD::lepton lep_i) const;
229
237 MVgamma& getMVgamma(QCD::meson meson_i, QCD::meson vector_i) const;
238
247 MVlnu& getMVlnu(QCD::meson meson_i, QCD::meson vector_i, QCD::lepton lep_i) const;
248
257 MPlnu& getMPlnu(QCD::meson meson_i, QCD::meson pseudoscalar_i, QCD::lepton lep_i) const;
258
267 BClnu& getBClnu(QCD::meson meson_i) const;
268
276 void setUpdateFlag(QCD::meson meson_i, QCD::meson meson_j, QCD::lepton lep_i, bool updated_i) const;
277
285 bool getUpdateFlag(QCD::meson meson_i, QCD::meson meson_j, QCD::lepton lep_i) const;
286
291 void setSMupdated() const;
292
293 bool setFlag(const std::string name, const bool value);
294
296 return (this->dispersion = dispersion);
297 }
298
300 return (this->zExpansion = zExpansion);
301 }
302
303 bool setFlagCLN(bool CLNflag) {
304 return (this->CLNflag = CLNflag);
305 }
306
307 bool setFlagBGL(bool BGLflag) {
308 return (this->BGLflag = BGLflag);
309 }
310
311 bool setFlagDM(bool DMflag) {
312 return (this->DMflag = DMflag);
313 }
314
316 return (this->FixedWCbtosflag = FixedWCbtosflag);
317 }
318
320 return (this->MPll_FNALMILC_flag = MPll_FNALMILC_flag);
321 }
322
324 return (this->MPll_GRvDV_flag = MPll_GRvDV_flag);
325 }
326
328 return (this->MPll_DM_flag = MPll_DM_flag);
329 }
330
332 return (this->MVll_DM_flag = MVll_DM_flag);
333 }
334
336 return (this->NeutrinoTree_flag = NeutrinoTree_flag);
337 }
338
340 return (this->BXsnunu_LFUNP_flag = BXsnunu_LFUNP_flag);
341 }
342
344 return dispersion;
345 }
346
347 bool getFlagUsezExpansion() const {
348 return zExpansion;
349 }
350
351 bool getFlagCLN() const {
352 return CLNflag;
353 }
354
355 bool getFlagBGL() const {
356 return BGLflag;
357 }
358
359 bool getFlagDM() const {
360 return DMflag;
361 }
362
363 bool getFlagFixedWCbtos() const {
364 return FixedWCbtosflag;
365 }
366
367 bool getFlagMPll_FNALMILC() const {
368 return MPll_FNALMILC_flag;
369 }
370
371 bool getFlagMPll_GRvDV() const {
372 return MPll_GRvDV_flag;
373 }
374
375 bool getFlagMPll_DM() const {
376 return MPll_DM_flag;
377 }
378
379 bool getFlagMVll_DM() const {
380 return MVll_DM_flag;
381 }
382
383 bool getFlagNeutrinoTree() const {
384 return NeutrinoTree_flag;
385 }
386
387 bool getFlagBXsnunu_LFUNP() const {
388 return BXsnunu_LFUNP_flag;
389 }
390
391private:
392 template<typename T, typename... Args> std::shared_ptr<T>& getPtr(std::shared_ptr<T>& x, Args... args) const;
393 template <typename T, typename... Args> T& getM(std::map<std::vector<int>, std::shared_ptr<T> >& map, Args ... args) const;
395 mutable std::shared_ptr<HeffDF2> HDF2;
396 mutable std::shared_ptr<HeffDF1_diujlknu> HDF1_diujlknu;
397 mutable std::shared_ptr<HeffDB1> HDB1;
398 mutable std::shared_ptr<HeffDS1> HDS1;
399 mutable std::map<std::vector<int>, std::shared_ptr<MVll> > MVllMap;
400 mutable std::map<std::vector<int>, std::shared_ptr<MVlnu> > MVlnuMap;
401 mutable std::map<std::vector<int>, std::shared_ptr<MVgamma> > MVgammaMap;
402 mutable std::map<std::vector<int>, std::shared_ptr<MPll> > MPllMap;
403 mutable std::map<std::vector<int>, std::shared_ptr<MPlnu> > MPlnuMap;
404 mutable std::map<std::vector<int>, std::shared_ptr<BClnu> > BClnuMap;
405 mutable std::map<std::vector<int>, std::shared_ptr<AmpDB2> > AmpDB2Map;
406 mutable std::map<std::vector<int>, bool> flagUpdateMap;
407
408 mutable bool dispersion;
409 mutable bool zExpansion;
410 mutable bool CLNflag;
411 mutable bool BGLflag;
412 mutable bool DMflag;
413 mutable bool FixedWCbtosflag;
414 mutable bool MPll_FNALMILC_flag;
415 mutable bool MPll_GRvDV_flag;
416 mutable bool MPll_DM_flag;
417 mutable bool MVll_DM_flag;
418 mutable bool NeutrinoTree_flag;
419 mutable bool BXsnunu_LFUNP_flag;
420};
421
422#endif /* FLAVOUR_H */
@ NDR
Definition: OrderScheme.h:21
Amplitude Class
Definition: AmpDB2.h:37
Definition: BClnu.h:12
The parent class in Flavour for calculating all the Wilson coefficients for various Flavor Violating ...
Definition: Flavour.h:37
bool getFlagMVll_DM() const
Definition: Flavour.h:379
bool setFlagMPll_FNALMILC(bool MPll_FNALMILC_flag)
Definition: Flavour.h:319
gslpp::vector< gslpp::complex > ** ComputeCoeffsgamma(double mu, bool noSM=false, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:180
std::map< std::vector< int >, bool > flagUpdateMap
Definition: Flavour.h:406
bool BGLflag
Definition: Flavour.h:411
bool CLNflag
Definition: Flavour.h:410
std::shared_ptr< HeffDB1 > HDB1
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:397
gslpp::vector< gslpp::complex > ** ComputeCoeffsgamma_Buras(double mu, bool noSM=false, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:185
bool getFlagUseDispersionRelation() const
Definition: Flavour.h:343
AmpDB2 & getDB2(int BMeson_i, bool flag_fixmub=false, bool flag_RI=false) const
Returns a reference to the meson dependent object for processes.
Definition: Flavour.cpp:229
bool getFlagMPll_DM() const
Definition: Flavour.h:375
std::map< std::vector< int >, std::shared_ptr< MVll > > MVllMap
Definition: Flavour.h:399
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1pnunuC() const
Definition: Flavour.cpp:142
gslpp::vector< gslpp::complex > ** ComputeCoeffBd(double mu, schemes scheme=NDR, bool SM=false) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:102
HeffDS1 & getHDS1() const
The member that returns an object of the class HeffDS1.
Definition: Flavour.cpp:92
HeffDF1_diujlknu & getHDF1_diujlknu() const
The member that returns an object of the class HeffDF1_diujlknu.
Definition: Flavour.cpp:87
std::map< std::vector< int >, std::shared_ptr< MPll > > MPllMap
Definition: Flavour.h:402
std::shared_ptr< HeffDF1_diujlknu > HDF1_diujlknu
An Object for the Hamiltonian built with operators in the JMS basis, ordered as CnueduVLLkkij,...
Definition: Flavour.h:396
gslpp::vector< gslpp::complex > ** ComputeCoeffsnunu(QCD::lepton lepton=QCD::NOLEPTON, bool noSM=false) const
Definition: Flavour.cpp:170
bool setFlagBXsnunu_LFUNP(bool BXsnunu_LFUNP_flag) const
Definition: Flavour.h:339
bool setFlagDM(bool DMflag)
Definition: Flavour.h:311
MVlnu & getMVlnu(QCD::meson meson_i, QCD::meson vector_i, QCD::lepton lep_i) const
Returns the initial and final state dependent object for .
Definition: Flavour.cpp:250
bool getFlagFixedWCbtos() const
Definition: Flavour.h:363
gslpp::vector< gslpp::complex > ** ComputeCoeffprimesgamma(double mu, schemes scheme=NDR) const
Computes the chirality flipped Wilson coefficient for the process .
Definition: Flavour.cpp:190
bool getFlagBGL() const
Definition: Flavour.h:355
HeffDF2 & getHDF2() const
The member that returns an object of the class HeffDF2.
Definition: Flavour.cpp:82
bool setFlagNeutrinoTree(bool NeutrinoTree_flag) const
Definition: Flavour.h:335
bool setFlagBGL(bool BGLflag)
Definition: Flavour.h:307
HeffDB1 & getHDB1() const
The member that returns an object of the class HeffDB1.
Definition: Flavour.cpp:97
bool NeutrinoTree_flag
Definition: Flavour.h:418
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1mumu() const
Definition: Flavour.cpp:147
bool getFlagCLN() const
Definition: Flavour.h:351
bool FixedWCbtosflag
Definition: Flavour.h:413
std::map< std::vector< int >, std::shared_ptr< MVlnu > > MVlnuMap
Definition: Flavour.h:400
HeffDC1 & getHDC1() const
The member that returns an object of the class HeffDC1.
gslpp::vector< gslpp::complex > ** ComputeCoeffBs(double mu, schemes scheme=NDR, bool SM=false) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:107
bool MVll_DM_flag
Definition: Flavour.h:417
std::map< std::vector< int >, std::shared_ptr< MVgamma > > MVgammaMap
Definition: Flavour.h:401
gslpp::vector< gslpp::complex > ** ComputeCoeffmK(double mu, schemes scheme=NDR) const
Definition: Flavour.cpp:122
bool BXsnunu_LFUNP_flag
Definition: Flavour.h:419
bool getFlagNeutrinoTree() const
Definition: Flavour.h:383
MPll & getMPll(QCD::meson meson_i, QCD::meson pseudoscalar_i, QCD::lepton lep_i) const
Returns the initial and final state dependent object for .
Definition: Flavour.cpp:283
bool MPll_FNALMILC_flag
Definition: Flavour.h:414
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 .
Definition: Flavour.cpp:315
BClnu & getBClnu(QCD::meson meson_i) const
Returns the initial and final state dependent object for .
Definition: Flavour.cpp:300
MVgamma & getMVgamma(QCD::meson meson_i, QCD::meson vector_i) const
Returns the initial and final state dependent object for .
Definition: Flavour.cpp:234
bool dispersion
Definition: Flavour.h:408
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1PPv(double mu, schemes scheme=NDR) const
Definition: Flavour.cpp:127
MVll & getMVll(QCD::meson meson_i, QCD::meson vector_i, QCD::lepton lep_i) const
Returns the initial and final state dependent object for .
Definition: Flavour.cpp:210
bool setFlagCLN(bool CLNflag)
Definition: Flavour.h:303
bool getFlagMPll_FNALMILC() const
Definition: Flavour.h:367
bool setFlagFixedWCbtos(bool FixedWCbtosflag)
Definition: Flavour.h:315
gslpp::vector< gslpp::complex > ** ComputeCoeffprimeBMll(double mu, QCD::lepton lepton, schemes scheme=NDR) const
Computes the chirality flipped Wilson coefficient for the process .
Definition: Flavour.cpp:205
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 .
Definition: Flavour.cpp:340
std::map< std::vector< int >, std::shared_ptr< AmpDB2 > > AmpDB2Map
Definition: Flavour.h:405
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1pnunu() const
Definition: Flavour.cpp:137
bool setFlagMPll_DM(bool MPll_DM_flag)
Definition: Flavour.h:327
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 .
Definition: Flavour.cpp:200
bool getFlagDM() const
Definition: Flavour.h:359
gslpp::vector< gslpp::complex > ** ComputeCoeffK(double mu, schemes scheme=NDR) const
Definition: Flavour.cpp:117
std::shared_ptr< HeffDF2 > HDF2
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:395
gslpp::vector< gslpp::complex > ** ComputeCoeffdmumu(double mu, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:165
bool setFlagMVll_DM(bool MVll_DM_flag)
Definition: Flavour.h:331
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...
Definition: Flavour.cpp:153
const StandardModel & mySM
Definition: Flavour.h:394
bool MPll_GRvDV_flag
Definition: Flavour.h:415
gslpp::vector< gslpp::complex > ** ComputeCoeffdnunu() const
Definition: Flavour.cpp:175
gslpp::vector< gslpp::complex > ** ComputeCoeffsmumu(double mu, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:160
bool zExpansion
Definition: Flavour.h:409
gslpp::vector< gslpp::complex > ** ComputeCoeffBMll(double mu, QCD::lepton lepton, bool noSM=false, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:195
std::shared_ptr< HeffDS1 > HDS1
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:398
std::map< std::vector< int >, std::shared_ptr< MPlnu > > MPlnuMap
Definition: Flavour.h:403
std::map< std::vector< int >, std::shared_ptr< BClnu > > BClnuMap
Definition: Flavour.h:404
void setSMupdated() const
a member used for the caching for .
Definition: Flavour.cpp:379
bool DMflag
Definition: Flavour.h:412
bool setFlagUseDispersionRelation(bool dispersion)
Definition: Flavour.h:295
bool setFlagUsezExpansion(bool zExpansion)
Definition: Flavour.h:299
T & getM(std::map< std::vector< int >, std::shared_ptr< T > > &map, Args ... args) const
Definition: Flavour.cpp:306
bool setFlagMPll_GRvDV(bool MPll_GRvDV_flag)
Definition: Flavour.h:323
gslpp::vector< gslpp::complex > ** ComputeCoeffdd(double mu, schemes scheme=NDR) const
Definition: Flavour.cpp:112
bool getFlagUsezExpansion() const
Definition: Flavour.h:347
Flavour(const StandardModel &SM_i)
The constructor.
Definition: Flavour.cpp:23
std::shared_ptr< T > & getPtr(std::shared_ptr< T > &x, Args... args) const
bool getFlagBXsnunu_LFUNP() const
Definition: Flavour.h:387
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1PPz(double muc, schemes scheme=NDR) const
Definition: Flavour.cpp:132
bool MPll_DM_flag
Definition: Flavour.h:416
bool setFlag(const std::string name, const bool value)
Definition: Flavour.cpp:38
MPlnu & getMPlnu(QCD::meson meson_i, QCD::meson pseudoscalar_i, QCD::lepton lep_i) const
Returns the initial and final state dependent object for .
Definition: Flavour.cpp:267
bool getFlagMPll_GRvDV() const
Definition: Flavour.h:371
Hamiltonian Class
Definition: HeffDC1.h:25
Hamiltonian Class for transitions (leptonic and semileptonic charged-current meson decays)
A class for the effective Hamiltonian.
Definition: HeffDF2.h:28
A class for the decay.
Definition: MPll.h:173
Definition: MPlnu.h:23
A class for the decay.
Definition: MVgamma.h:143
A class for the decay.
Definition: MVll.h:308
Definition: MVlnu.h:21
meson
An enum type for mesons.
Definition: QCD.h:336
lepton
An enum type for leptons.
Definition: QCD.h:310
@ NOLEPTON
Definition: QCD.h:317
A model class for the Standard Model.
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:20