a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
Bdmumu.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2012 SusyFit Collaboration
3 *
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8#include "Bdmumu.h"
9#include "StandardModel.h"
10#include "EvolBsmm.h"
11#include "HeffDB1.h"
13
14Bdmumu::Bdmumu(const StandardModel& SM_i, int obsFlag, QCD::lepton lep_i)
15: ThObservable(SM_i),
16 evolbdmm(new EvolBsmm(8, NDR, NNLO, NLO_QED22, SM))
17{
18 lep = lep_i;
19 if(lep == QCD::MU) leptonindex = 1;
20 else if(lep == QCD::ELECTRON) leptonindex = 0;
21 else if(lep == QCD::TAU) leptonindex = 2;
22 else throw std::runtime_error("Bsmumu::Bsmumu(): lepton type not defined. Can be only MU or ELECTRON");
23 if (obsFlag > 0 and obsFlag < 5) obs = obsFlag;
24 else throw std::runtime_error("obsFlag in Bdmumu(myFlavour, obsFlag) called from ThFactory::ThFactory() can only be 1 (BR) or 2 (BRbar) or 3 (Amumu) or 4 (Smumu)");
26};
27
29{
31
32 double Mw = SM.Mw();
33 double GF = SM.getGF();
34 coupling = GF * GF * Mw * Mw /M_PI /M_PI ;
35
37
38
39 double PRF = pow(coupling, 2.) / M_PI /8. / SM.getMesons(QCD::B_D).computeWidth() * pow(FBd, 2.) * pow(mlep, 2.) * mBd * beta;
40 yd = 0.; // Use the experimental number here
41 timeInt = (1. + Amumu * yd) / (1. - yd * yd); // Note modification in form due to algorithm
42
43 if (obs == 1) return( PRF * ampSq);
44 if (obs == 2) return( PRF * ampSq * timeInt);
45 if (obs == 3) return( Amumu );
46 if (obs == 4) return( Smumu );
47
48 throw std::runtime_error("Bdmumu::computeThValue(): Observable type not defined. Can be only any of (1,2,3,4)");
49 return (EXIT_FAILURE);
50}
51
52void Bdmumu::computeObs(orders order, orders_qed order_qed)
53{
54 double mu = SM.getMub();
55
58 mW = SM.Mw();
61 chiral = pow(mBd, 2.) / 2. / mlep * mb / (mb + md);
62 beta = sqrt(1. - pow(2. * mlep / mBd, 2.));
63 computeAmpSq(order, order_qed, mu);
64 Amumu = (absP * absP * cos(2. * argP - phiNP) - absS * absS * cos(2. * argS - phiNP)) / (absP * absP + absS * absS);
65 Smumu = (absP * absP * sin(2. * argP - phiNP) - absS * absS * sin(2. * argS - phiNP)) / (absP * absP + absS * absS);
66}
67
69{
71 return(Amumu);
72}
73
75{
77 return(Smumu);
78}
79
80void Bdmumu::computeAmpSq(orders order, orders_qed order_qed, double mu)
81{
82 if (SM.getFlavour().getHDB1().getCoeffdmumu().getOrder() < order % 3){
83 std::stringstream out;
84 out << order;
85 throw std::runtime_error("Bdmumu::computeAmpSq(): required cofficient of "
86 "order " + out.str() + " not computed");
87 }
89
90 double alsmu = evolbdmm->alphatilde_s(mu);
91 double alemu = evolbdmm->alphatilde_e(mu);
92// double alemu = SM.ale_OS(mu)/4./M_PI; // to be checked
93 gslpp::matrix<gslpp::complex> Vckm = SM.getVCKM();
94
95 if((order == FULLNLO) && (order_qed == FULLNLO_QED)){
96
97 switch(order_qed) {
98 case FULLNLO_QED:
99 {
100 C_10 = (*(allcoeff[LO]))(7) /alemu + (*(allcoeff[NLO]))(7) * alsmu/alemu
101 + (*(allcoeff[NNLO]))(7) * alsmu * alsmu/alemu + (*(allcoeff[LO_QED ]))(7) /alsmu
102 + (*(allcoeff[NLO_QED11]))(7) + (*(allcoeff[NLO_QED02]))(7) * alemu /alsmu /alsmu
103 + (*(allcoeff[NLO_QED21]))(7) * alsmu
104 + (*(allcoeff[NLO_QED12]))(7) * alemu /alsmu+ (*(allcoeff[NLO_QED22]))(7) * alemu;
105
106 gslpp::complex NPfactor = coupling;
107
108 if(SM.getModelName().compare("NPSMEFTd6U2") == 0 || SM.getModelName().compare("NPSMEFTd6U3") == 0)
109 {
110 C_10 = C_10 + (dynamic_cast<const NPSMEFTd6GeneralMatching&>(SM.getMatching()).getCdeVLR(0,2,leptonindex,leptonindex) -
111 dynamic_cast<const NPSMEFTd6GeneralMatching&>(SM.getMatching()).getCedVLL(leptonindex,leptonindex,0,2)) / NPfactor;
112 }
113
114
115
116 absP = C_10.abs();
117 argP = C_10.arg();
118
119 phiNP = 0.;
120
121 ampSq = absP * absP ;
122
123 }
124 break;
125 default:
126 std::stringstream out;
127 out << order;
128 throw std::runtime_error("Bdmumu::computeAmpSq(): order " + out.str() + " not implemented");;
129 }
130 }
131
132
133}
@ NNLO
Definition: OrderScheme.h:36
@ LO
Definition: OrderScheme.h:34
@ NLO
Definition: OrderScheme.h:35
@ FULLNLO
Definition: OrderScheme.h:38
@ NDR
Definition: OrderScheme.h:21
@ NLO_QED11
Definition: OrderScheme.h:59
@ FULLNLO_QED
Definition: OrderScheme.h:64
@ NLO_QED02
Definition: OrderScheme.h:61
@ NLO_QED12
Definition: OrderScheme.h:62
@ LO_QED
Definition: OrderScheme.h:58
@ NLO_QED22
Definition: OrderScheme.h:63
@ NLO_QED21
Definition: OrderScheme.h:60
double mW
Definition: Bdmumu.h:54
Bdmumu(const StandardModel &SM_i, int obsFlag, QCD::lepton lep_i=QCD::MU)
Definition: Bdmumu.cpp:14
QCD::lepton lep
Definition: Bdmumu.h:51
double Amumu
Definition: Bdmumu.h:64
void computeObs(orders order, orders_qed order_qed)
Definition: Bdmumu.cpp:52
double md
Definition: Bdmumu.h:57
double argS
Definition: Bdmumu.h:62
double absS
Definition: Bdmumu.h:61
int obs
Definition: Bdmumu.h:70
void computeAmpSq(orders order, orders_qed order_qed, double mu)
Definition: Bdmumu.cpp:80
gslpp::complex C_10
Definition: Bdmumu.h:72
double coupling
Definition: Bdmumu.h:69
double Smumu
Definition: Bdmumu.h:65
double phiNP
Definition: Bdmumu.h:66
double computeSmumu(orders order)
Definition: Bdmumu.cpp:74
double mb
Definition: Bdmumu.h:56
double mBd
Definition: Bdmumu.h:53
double beta
Definition: Bdmumu.h:52
double computeThValue()
hep-ph/9512380v2
Definition: Bdmumu.cpp:28
double computeAmumu(orders order)
Definition: Bdmumu.cpp:68
double yd
Definition: Bdmumu.h:68
double timeInt
Definition: Bdmumu.h:67
double argP
Definition: Bdmumu.h:60
gslpp::vector< gslpp::complex > ** allcoeff
Definition: Bdmumu.h:80
std::unique_ptr< EvolBsmm > evolbdmm
Definition: Bdmumu.h:79
double mlep
Definition: Bdmumu.h:55
int leptonindex
Definition: Bdmumu.h:71
double chiral
Definition: Bdmumu.h:58
double absP
Definition: Bdmumu.h:59
double ampSq
Definition: Bdmumu.h:63
A class for , the decay constant.
Definition: FBd.h:22
HeffDB1 & getHDB1() const
The member that returns an object of the class HeffDB1.
Definition: Flavour.cpp:96
gslpp::vector< gslpp::complex > ** ComputeCoeffdmumu(double mu, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:164
WilsonCoefficient getCoeffdmumu() const
Definition: HeffDB1.h:180
double computeWidth() const
A method to compute the width of the meson from its lifetime.
Definition: Meson.cpp:521
const double & getDecayconst() const
A get method for the decay constant of the meson.
Definition: Meson.h:360
std::string getModelName() const
A method to fetch the name of the model.
Definition: Model.h:59
An observable class for the -boson mass.
Definition: Mw.h:22
A class for the matching in the NPSMEFTd6_General model at the scale .
const double & getMass() const
A get method to access the particle mass.
Definition: Particle.h:61
@ B_D
Definition: QCD.h:344
const Meson & getMesons(const QCD::meson m) const
A get method to access a meson as an object of the type Meson.
Definition: QCD.h:526
@ BOTTOM
Definition: QCD.h:329
@ DOWN
Definition: QCD.h:325
lepton
An enum type for leptons.
Definition: QCD.h:310
@ MU
Definition: QCD.h:314
@ ELECTRON
Definition: QCD.h:312
@ TAU
Definition: QCD.h:316
const Particle & getQuarks(const QCD::quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:536
void initializeMeson(QCD::meson meson_i) const
A method to initialize a meson.
Definition: QCD.cpp:280
const double getMub() const
A get method to access the threshold between five- and four-flavour theory in GeV.
Definition: QCD.h:582
A model class for the Standard Model.
const Particle & getLeptons(const QCD::lepton p) const
A get method to retrieve the member object of a lepton.
const gslpp::matrix< gslpp::complex > getVCKM() const
A get method to retrieve the CKM matrix.
virtual const double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
const Flavour & getFlavour() const
virtual StandardModelMatching & getMatching() const
A get method to access the member reference of type StandardModelMatching.
const double getGF() const
A get method to retrieve the Fermi constant .
A class for a model prediction of an observable.
Definition: ThObservable.h:25
const StandardModel & SM
A reference to an object of StandardMode class.
Definition: ThObservable.h:121
orders getOrder() const
orders
An enum type for orders in QCD.
Definition: OrderScheme.h:33
orders_qed
An enum type for orders in electroweak.
Definition: OrderScheme.h:56