a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
Bsmumu.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 "Bsmumu.h"
9#include "StandardModel.h"
10#include "EvolBsmm.h"
11#include "HeffDB1.h"
13
14Bsmumu::Bsmumu(const StandardModel& SM_i, int obsFlag, QCD::lepton lep_i)
15: ThObservable(SM_i),
16 evolbsmm(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 Bsmumu(myFlavour, obsFlag) called from ThFactory::ThFactory() can only be 1 (BR) or 2 (BRbar) or 3 (Amumu) or 4 (Smumu)");
26};
27
29{
30 double FBs = SM.getMesons(QCD::B_S).getDecayconst();
31
32 double Mw = SM.Mw();
33 double GF = SM.getGF();
34 coupling = GF * GF * Mw * Mw /M_PI /M_PI ;
35 //convertFromSingletoDoubleGF = 2. * M_SQRT2 / GF * SM.getAle() / 4. * M_PI / Mw / Mw; /* Single GF for excluding EW corrections*/
36
38
39 double PRF = pow(coupling, 2.) / M_PI /8. / SM.getMesons(QCD::B_S).computeWidth() * pow(FBs, 2.) * pow(mlep, 2.) * mBs * beta;
40 double ys = SM.getMesons(QCD::B_S).getDgamma_gamma()/2.; // Using the experimental number here
41 timeInt = (1. + Amumu * ys) / (1. - ys * ys); // 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("Bsmumu::computeThValue(): Observable type not defined. Can be only any of (1,2,3,4)");
49 return (EXIT_FAILURE);
50}
51
52void Bsmumu::computeObs(orders order, orders_qed order_qed)
53{
54 double mu = SM.getMub();
55
58 mW = SM.Mw();
61 chiral = pow(mBs, 2.) / 2. / mlep * mb / (mb + ms);
62 beta = sqrt(1. - pow(2. * mlep / mBs, 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 Bsmumu::computeAmpSq(orders order, orders_qed order_qed, double mu)
81{
82 if (SM.getFlavour().getHDB1().getCoeffsmumu().getOrder() < order % 3){
83 std::stringstream out;
84 out << order;
85 throw std::runtime_error("Bsmumu::computeAmpSq(): required cofficient of "
86 "order " + out.str() + " not computed");
87 }
89
90 double alsmu = evolbsmm->alphatilde_s(mu);
91 double alemu = evolbsmm->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// double sw2 = (M_PI * SM.getAle() ) / ( sqrt(2.) * SM.getGF() * SM.Mw() * SM.Mw()) ;
95
96 C_10p = 0.;
97 C_S = 0.;
98 C_Sp = 0.;
99 C_P = 0.;
100 C_Pp = 0.;
101
102 if((order == FULLNLO) && (order_qed == FULLNLO_QED)){
103
104 switch(order_qed) {
105 case FULLNLO_QED:
106 {
107 C_10 = (*(allcoeff[LO]))(7) /alemu + (*(allcoeff[NLO]))(7) * alsmu/alemu
108 + (*(allcoeff[NNLO]))(7) * alsmu * alsmu/alemu + (*(allcoeff[LO_QED ]))(7) /alsmu
109 + (*(allcoeff[NLO_QED11]))(7) + (*(allcoeff[NLO_QED02]))(7) * alemu /alsmu /alsmu
110 + (*(allcoeff[NLO_QED21]))(7) * alsmu
111 + (*(allcoeff[NLO_QED12]))(7) * alemu /alsmu+ (*(allcoeff[NLO_QED22]))(7) * alemu;
112
113 gslpp::complex NPfactor = coupling;
114
115 if(SM.getModelName().compare("NPSMEFTd6U2") == 0 || SM.getModelName().compare("NPSMEFTd6U3") == 0)
116 {
117 C_10 = C_10 + (dynamic_cast<const NPSMEFTd6GeneralMatching&>(SM.getMatching()).getCdeVLR(1,2,leptonindex,leptonindex) -
118 dynamic_cast<const NPSMEFTd6GeneralMatching&>(SM.getMatching()).getCedVLL(leptonindex,leptonindex,0,2)) / NPfactor;
119 }
120
121 gslpp::complex CC_P = C_10 + NPfactor * ( /*C10_NP*/ - C_10p + mBs*mBs*mb / ( 2.*mlep*(mb+ms)*mW ) * (C_P - C_Pp) );
122
123
124 absP = CC_P.abs(); //contains only SM contributions (P, P', S, S' not added)
125 argP = CC_P.arg();
126
127 gslpp::complex CC_S = NPfactor * ( beta * mBs*mBs*mb / ( 2.*mlep*(mb+ms)*mW ) * (C_S - C_Sp) );
128
129 absS = CC_S.abs();
130 argS = CC_S.arg();
131
132 phiNP = 0.;
133
134 ampSq = absP * absP ;
135
136 }
137 break;
138 default:
139 std::stringstream out;
140 out << order;
141 throw std::runtime_error("Bsmumu::computeAmpSq(): order " + out.str() + " not implemented");;
142 }
143 }
144
145}
@ 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 timeInt
Definition: Bsmumu.h:67
gslpp::complex C_S
Definition: Bsmumu.h:74
double mW
Definition: Bsmumu.h:54
Bsmumu(const StandardModel &SM_i, int obsFlag, QCD::lepton lep_i=QCD::MU)
Definition: Bsmumu.cpp:14
void computeAmpSq(orders order, orders_qed order_qed, double mu)
Definition: Bsmumu.cpp:80
double Smumu
Definition: Bsmumu.h:65
double mlep
Definition: Bsmumu.h:55
double chiral
Definition: Bsmumu.h:58
double beta
Definition: Bsmumu.h:52
double absP
Definition: Bsmumu.h:59
double computeAmumu(orders order)
Definition: Bsmumu.cpp:68
double mb
Definition: Bsmumu.h:56
double computeThValue()
hep-ph/9512380v2
Definition: Bsmumu.cpp:28
int leptonindex
Definition: Bsmumu.h:71
double ms
Definition: Bsmumu.h:57
double absS
Definition: Bsmumu.h:61
double phiNP
Definition: Bsmumu.h:66
gslpp::complex C_Sp
Definition: Bsmumu.h:75
double coupling
Definition: Bsmumu.h:69
gslpp::complex C_10
Definition: Bsmumu.h:72
double computeSmumu(orders order)
Definition: Bsmumu.cpp:74
QCD::lepton lep
Definition: Bsmumu.h:51
gslpp::complex C_P
Definition: Bsmumu.h:76
gslpp::vector< gslpp::complex > ** allcoeff
Definition: Bsmumu.h:80
void computeObs(orders order, orders_qed order_qed)
Definition: Bsmumu.cpp:52
double mBs
Definition: Bsmumu.h:53
double argP
Definition: Bsmumu.h:60
double Amumu
Definition: Bsmumu.h:64
gslpp::complex C_Pp
Definition: Bsmumu.h:77
double ampSq
Definition: Bsmumu.h:63
gslpp::complex C_10p
Definition: Bsmumu.h:73
double argS
Definition: Bsmumu.h:62
int obs
Definition: Bsmumu.h:70
std::unique_ptr< EvolBsmm > evolbsmm
Definition: Bsmumu.h:79
HeffDB1 & getHDB1() const
The member that returns an object of the class HeffDB1.
Definition: Flavour.cpp:96
gslpp::vector< gslpp::complex > ** ComputeCoeffsmumu(double mu, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:159
WilsonCoefficient getCoeffsmumu() const
Definition: HeffDB1.h:176
const double & getDgamma_gamma() const
Definition: Meson.h:411
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_S
Definition: QCD.h:346
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
@ STRANGE
Definition: QCD.h:327
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