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 AmpDB2;
23#include "QCD.h"
24#include <boost/tuple/tuple.hpp>
25#include <memory>
26
36class Flavour {
37public:
38
43 Flavour(const StandardModel& SM_i);
44
50 HeffDF2& getHDF2() const;
51
52
59
65 HeffDS1& getHDS1() const;
66
67
73 HeffDC1& getHDC1() const;
74
80 HeffDB1& getHDB1() const;
81
89 gslpp::vector<gslpp::complex>** ComputeCoeffBd(double mu, schemes scheme = NDR, bool SM = false) const;
90
91 gslpp::vector<gslpp::complex>** ComputeCoeffDS1pnunu() const;
92 gslpp::vector<gslpp::complex>** ComputeCoeffDS1pnunuC() const;
93 gslpp::vector<gslpp::complex>** ComputeCoeffDS1mumu() const;
94
102 gslpp::vector<gslpp::complex>** ComputeCoeffBs(double mu, schemes scheme = NDR, bool SM = false) const;
103
104 gslpp::vector<gslpp::complex>** ComputeCoeffdd(double mu, schemes scheme = NDR) const;
105
106 gslpp::vector<gslpp::complex>** ComputeCoeffK(double mu, schemes scheme = NDR) const;
107
108 gslpp::vector<gslpp::complex>** ComputeCoeffmK(double mu, schemes scheme = NDR) const;
109
110 gslpp::vector<gslpp::complex>** ComputeCoeffDS1PPv(double mu, schemes scheme = NDR) const;
111 gslpp::vector<gslpp::complex>** ComputeCoeffDS1PPz(double muc, schemes scheme = NDR) const;
112
120 gslpp::vector<gslpp::complex>** ComputeCoeffsmumu(double mu, schemes scheme = NDR) const;
121
129 gslpp::vector<gslpp::complex>** ComputeCoeffdmumu(double mu, schemes scheme = NDR) const;
130
131
141 gslpp::vector<gslpp::complex>** ComputeCoeffdiujlknu(int i, int j, int k, double mu) const;
142
143 gslpp::vector<gslpp::complex>** ComputeCoeffsnunu(QCD::lepton lepton = QCD::NOLEPTON, bool noSM = false) const;
144
145 gslpp::vector<gslpp::complex>** ComputeCoeffdnunu() const;
146
154 gslpp::vector<gslpp::complex>** ComputeCoeffsgamma(double mu, bool noSM = false, schemes scheme = NDR) const;
155
163 gslpp::vector<gslpp::complex>** ComputeCoeffprimesgamma(double mu, schemes scheme = NDR) const;
164
172 gslpp::vector<gslpp::complex>** ComputeCoeffsgamma_Buras(double mu, bool noSM = false, schemes scheme = NDR) const;
173
181 gslpp::vector<gslpp::complex>** ComputeCoeffBMll(double mu, QCD::lepton lepton, bool noSM = false, schemes scheme = NDR) const;
182
190 gslpp::vector<gslpp::complex>** ComputeCoeffBMll_Buras(double mu, QCD::lepton lepton, bool noSM = false, schemes scheme = NDR) const;
191
199 gslpp::vector<gslpp::complex>** ComputeCoeffprimeBMll(double mu, QCD::lepton lepton, schemes scheme = NDR) const;
200
207 AmpDB2& getDB2(int BMeson_i, bool flag_fixmub = false, bool flag_RI = false) const;
208
217 MVll& getMVll(QCD::meson meson_i, QCD::meson vector_i, QCD::lepton lep_i) const;
218
227 MPll& getMPll(QCD::meson meson_i, QCD::meson pseudoscalar_i, QCD::lepton lep_i) const;
228
236 MVgamma& getMVgamma(QCD::meson meson_i, QCD::meson vector_i) const;
237
246 MVlnu& getMVlnu(QCD::meson meson_i, QCD::meson vector_i, QCD::lepton lep_i) const;
247
256 MPlnu& getMPlnu(QCD::meson meson_i, QCD::meson pseudoscalar_i, QCD::lepton lep_i) const;
257
265 void setUpdateFlag(QCD::meson meson_i, QCD::meson meson_j, QCD::lepton lep_i, bool updated_i) const;
266
274 bool getUpdateFlag(QCD::meson meson_i, QCD::meson meson_j, QCD::lepton lep_i) const;
275
280 void setSMupdated() const;
281
282 bool setFlag(const std::string name, const bool value);
283
285 return (this->dispersion = dispersion);
286 }
287
289 return (this->zExpansion = zExpansion);
290 }
291
292 bool setFlagCLN(bool CLNflag) {
293 return (this->CLNflag = CLNflag);
294 }
295
296 bool setFlagBGL(bool BGLflag) {
297 return (this->BGLflag = BGLflag);
298 }
299
300 bool setFlagDM(bool DMflag) {
301 return (this->DMflag = DMflag);
302 }
303
305 return (this->FixedWCbtosflag = FixedWCbtosflag);
306 }
307
309 return (this->MPll_FNALMILC_flag = MPll_FNALMILC_flag);
310 }
311
313 return (this->MPll_GRvDV_flag = MPll_GRvDV_flag);
314 }
315
317 return (this->MPll_DM_flag = MPll_DM_flag);
318 }
319
321 return (this->MVll_DM_flag = MVll_DM_flag);
322 }
323
325 return (this->NeutrinoTree_flag = NeutrinoTree_flag);
326 }
327
329 return (this->BXsnunu_LFUNP_flag = BXsnunu_LFUNP_flag);
330 }
331
333 return dispersion;
334 }
335
336 bool getFlagUsezExpansion() const {
337 return zExpansion;
338 }
339
340 bool getFlagCLN() const {
341 return CLNflag;
342 }
343
344 bool getFlagBGL() const {
345 return BGLflag;
346 }
347
348 bool getFlagDM() const {
349 return DMflag;
350 }
351
352 bool getFlagFixedWCbtos() const {
353 return FixedWCbtosflag;
354 }
355
356 bool getFlagMPll_FNALMILC() const {
357 return MPll_FNALMILC_flag;
358 }
359
360 bool getFlagMPll_GRvDV() const {
361 return MPll_GRvDV_flag;
362 }
363
364 bool getFlagMPll_DM() const {
365 return MPll_DM_flag;
366 }
367
368 bool getFlagMVll_DM() const {
369 return MVll_DM_flag;
370 }
371
372 bool getFlagNeutrinoTree() const {
373 return NeutrinoTree_flag;
374 }
375
376 bool getFlagBXsnunu_LFUNP() const {
377 return BXsnunu_LFUNP_flag;
378 }
379
380private:
381 template<typename T, typename... Args> std::shared_ptr<T>& getPtr(std::shared_ptr<T>& x, Args... args) const;
382 template <typename T, typename... Args> T& getM(std::map<std::vector<int>, std::shared_ptr<T> >& map, Args ... args) const;
384 mutable std::shared_ptr<HeffDF2> HDF2;
385 mutable std::shared_ptr<HeffDF1_diujlknu> HDF1_diujlknu;
386 mutable std::shared_ptr<HeffDB1> HDB1;
387 mutable std::shared_ptr<HeffDS1> HDS1;
388 mutable std::map<std::vector<int>, std::shared_ptr<MVll> > MVllMap;
389 mutable std::map<std::vector<int>, std::shared_ptr<MVlnu> > MVlnuMap;
390 mutable std::map<std::vector<int>, std::shared_ptr<MVgamma> > MVgammaMap;
391 mutable std::map<std::vector<int>, std::shared_ptr<MPll> > MPllMap;
392 mutable std::map<std::vector<int>, std::shared_ptr<MPlnu> > MPlnuMap;
393 mutable std::map<std::vector<int>, std::shared_ptr<AmpDB2> > AmpDB2Map;
394 mutable std::map<std::vector<int>, bool> flagUpdateMap;
395
396 mutable bool dispersion;
397 mutable bool zExpansion;
398 mutable bool CLNflag;
399 mutable bool BGLflag;
400 mutable bool DMflag;
401 mutable bool FixedWCbtosflag;
402 mutable bool MPll_FNALMILC_flag;
403 mutable bool MPll_GRvDV_flag;
404 mutable bool MPll_DM_flag;
405 mutable bool MVll_DM_flag;
406 mutable bool NeutrinoTree_flag;
407 mutable bool BXsnunu_LFUNP_flag;
408};
409
410#endif /* FLAVOUR_H */
@ NDR
Definition: OrderScheme.h:21
Amplitude Class
Definition: AmpDB2.h:37
The parent class in Flavour for calculating all the Wilson coefficients for various Flavor Violating ...
Definition: Flavour.h:36
bool getFlagMVll_DM() const
Definition: Flavour.h:368
bool setFlagMPll_FNALMILC(bool MPll_FNALMILC_flag)
Definition: Flavour.h:308
gslpp::vector< gslpp::complex > ** ComputeCoeffsgamma(double mu, bool noSM=false, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:179
std::map< std::vector< int >, bool > flagUpdateMap
Definition: Flavour.h:394
bool BGLflag
Definition: Flavour.h:399
bool CLNflag
Definition: Flavour.h:398
std::shared_ptr< HeffDB1 > HDB1
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:386
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:184
bool getFlagUseDispersionRelation() const
Definition: Flavour.h:332
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:228
bool getFlagMPll_DM() const
Definition: Flavour.h:364
std::map< std::vector< int >, std::shared_ptr< MVll > > MVllMap
Definition: Flavour.h:388
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1pnunuC() const
Definition: Flavour.cpp:141
gslpp::vector< gslpp::complex > ** ComputeCoeffBd(double mu, schemes scheme=NDR, bool SM=false) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:101
HeffDS1 & getHDS1() const
The member that returns an object of the class HeffDS1.
Definition: Flavour.cpp:91
HeffDF1_diujlknu & getHDF1_diujlknu() const
The member that returns an object of the class HeffDF1_diujlknu.
Definition: Flavour.cpp:86
std::map< std::vector< int >, std::shared_ptr< MPll > > MPllMap
Definition: Flavour.h:391
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:385
gslpp::vector< gslpp::complex > ** ComputeCoeffsnunu(QCD::lepton lepton=QCD::NOLEPTON, bool noSM=false) const
Definition: Flavour.cpp:169
bool setFlagBXsnunu_LFUNP(bool BXsnunu_LFUNP_flag) const
Definition: Flavour.h:328
bool setFlagDM(bool DMflag)
Definition: Flavour.h:300
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:249
bool getFlagFixedWCbtos() const
Definition: Flavour.h:352
gslpp::vector< gslpp::complex > ** ComputeCoeffprimesgamma(double mu, schemes scheme=NDR) const
Computes the chirality flipped Wilson coefficient for the process .
Definition: Flavour.cpp:189
bool getFlagBGL() const
Definition: Flavour.h:344
HeffDF2 & getHDF2() const
The member that returns an object of the class HeffDF2.
Definition: Flavour.cpp:81
bool setFlagNeutrinoTree(bool NeutrinoTree_flag) const
Definition: Flavour.h:324
bool setFlagBGL(bool BGLflag)
Definition: Flavour.h:296
HeffDB1 & getHDB1() const
The member that returns an object of the class HeffDB1.
Definition: Flavour.cpp:96
bool NeutrinoTree_flag
Definition: Flavour.h:406
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1mumu() const
Definition: Flavour.cpp:146
bool getFlagCLN() const
Definition: Flavour.h:340
bool FixedWCbtosflag
Definition: Flavour.h:401
std::map< std::vector< int >, std::shared_ptr< MVlnu > > MVlnuMap
Definition: Flavour.h:389
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:106
bool MVll_DM_flag
Definition: Flavour.h:405
std::map< std::vector< int >, std::shared_ptr< MVgamma > > MVgammaMap
Definition: Flavour.h:390
gslpp::vector< gslpp::complex > ** ComputeCoeffmK(double mu, schemes scheme=NDR) const
Definition: Flavour.cpp:121
bool BXsnunu_LFUNP_flag
Definition: Flavour.h:407
bool getFlagNeutrinoTree() const
Definition: Flavour.h:372
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:282
bool MPll_FNALMILC_flag
Definition: Flavour.h:402
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:309
MVgamma & getMVgamma(QCD::meson meson_i, QCD::meson vector_i) const
Returns the initial and final state dependent object for .
Definition: Flavour.cpp:233
bool dispersion
Definition: Flavour.h:396
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1PPv(double mu, schemes scheme=NDR) const
Definition: Flavour.cpp:126
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:209
bool setFlagCLN(bool CLNflag)
Definition: Flavour.h:292
bool getFlagMPll_FNALMILC() const
Definition: Flavour.h:356
bool setFlagFixedWCbtos(bool FixedWCbtosflag)
Definition: Flavour.h:304
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:204
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:334
std::map< std::vector< int >, std::shared_ptr< AmpDB2 > > AmpDB2Map
Definition: Flavour.h:393
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1pnunu() const
Definition: Flavour.cpp:136
bool setFlagMPll_DM(bool MPll_DM_flag)
Definition: Flavour.h:316
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:199
bool getFlagDM() const
Definition: Flavour.h:348
gslpp::vector< gslpp::complex > ** ComputeCoeffK(double mu, schemes scheme=NDR) const
Definition: Flavour.cpp:116
std::shared_ptr< HeffDF2 > HDF2
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:384
gslpp::vector< gslpp::complex > ** ComputeCoeffdmumu(double mu, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:164
bool setFlagMVll_DM(bool MVll_DM_flag)
Definition: Flavour.h:320
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:152
const StandardModel & mySM
Definition: Flavour.h:383
bool MPll_GRvDV_flag
Definition: Flavour.h:403
gslpp::vector< gslpp::complex > ** ComputeCoeffdnunu() const
Definition: Flavour.cpp:174
gslpp::vector< gslpp::complex > ** ComputeCoeffsmumu(double mu, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:159
bool zExpansion
Definition: Flavour.h:397
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:194
std::shared_ptr< HeffDS1 > HDS1
An Object for the Hamiltonian of the processes.
Definition: Flavour.h:387
std::map< std::vector< int >, std::shared_ptr< MPlnu > > MPlnuMap
Definition: Flavour.h:392
void setSMupdated() const
a member used for the caching for .
Definition: Flavour.cpp:373
bool DMflag
Definition: Flavour.h:400
bool setFlagUseDispersionRelation(bool dispersion)
Definition: Flavour.h:284
bool setFlagUsezExpansion(bool zExpansion)
Definition: Flavour.h:288
T & getM(std::map< std::vector< int >, std::shared_ptr< T > > &map, Args ... args) const
Definition: Flavour.cpp:300
bool setFlagMPll_GRvDV(bool MPll_GRvDV_flag)
Definition: Flavour.h:312
gslpp::vector< gslpp::complex > ** ComputeCoeffdd(double mu, schemes scheme=NDR) const
Definition: Flavour.cpp:111
bool getFlagUsezExpansion() const
Definition: Flavour.h:336
Flavour(const StandardModel &SM_i)
The constructor.
Definition: Flavour.cpp:22
std::shared_ptr< T > & getPtr(std::shared_ptr< T > &x, Args... args) const
bool getFlagBXsnunu_LFUNP() const
Definition: Flavour.h:376
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1PPz(double muc, schemes scheme=NDR) const
Definition: Flavour.cpp:131
bool MPll_DM_flag
Definition: Flavour.h:404
bool setFlag(const std::string name, const bool value)
Definition: Flavour.cpp:37
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:266
bool getFlagMPll_GRvDV() const
Definition: Flavour.h:360
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