Bdmumu.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 SusyFit Collaboration
3  * All rights reserved.
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #include "Bdmumu.h"
9 
10 Bdmumu::Bdmumu(const StandardModel& SM_i, int obsFlag)
11 : ThObservable(SM_i),
12  evolbdmm(8, NDR, NNLO, NLO_ewt4, SM)
13 {
14  if (obsFlag > 0 and obsFlag < 5) obs = obsFlag;
15  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)");
16 };
17 
19 {
21  double FBd = SM.getMesons(QCD::B_D).getDecayconst();
22 
23  double coupling = SM.getGF() * SM.getGF() * SM.Mw() * SM.Mw() /M_PI /M_PI ;
24 
25  double PRF = pow(coupling, 2.) / M_PI /8. / SM.getMesons(QCD::B_D).computeWidth() * pow(FBd, 2.) * pow(mmu, 2.) * mBd * beta;
26  yd = 0; // For now. To be explicitly calculated.
27  timeInt = (1. + Amumu * yd) / (1. - yd * yd); // Note modification in form due to algorithm
28 
29  if (obs == 1) return( PRF * ampSq);
30  if (obs == 2) return( PRF * ampSq * timeInt);
31  if (obs == 3) return( Amumu );
32  if (obs == 4) return( Smumu );
33 
34  throw std::runtime_error("Bdmumu::computeThValue(): Observable type not defined. Can be only any of (1,2,3,4)");
35  return (EXIT_FAILURE);
36 }
37 
38 void Bdmumu::computeObs(orders order, orders_ew order_ew)
39 {
40  double mu = SM.getMub();
41 
46  chiral = pow(mBd, 2.) / 2. / mmu * mb / (mb + md);
47  beta = sqrt(1. - pow(2. * mmu / mBd, 2.));
48  computeAmpSq(order, order_ew, mu);
49  Amumu = (absP * absP * cos(2. * argP - phiNP) - absS * absS * cos(2. * argS - phiNP)) / (absP * absP + absS * absS);
50  Smumu = (absP * absP * sin(2. * argP - phiNP) - absS * absS * sin(2. * argS - phiNP)) / (absP * absP + absS * absS);
51 }
52 
54 {
56  return(Amumu);
57 }
58 
60 {
62  return(Smumu);
63 }
64 
65 void Bdmumu::computeAmpSq(orders order, orders_ew order_ew, double mu)
66 {
67  if (SM.getMyFlavour()->getHDB1().getCoeffdmumu().getOrder() < order % 3){
68  std::stringstream out;
69  out << order;
70  throw std::runtime_error("Bdmumu::computeAmpSq(): required cofficient of "
71  "order " + out.str() + " not computed");
72  }
74 
75  double alsmu = evolbdmm.alphatilde_s(mu);
76  double alemu = evolbdmm.alphatilde_e(mu);
77 
78  if((order == FULLNLO) && (order_ew == FULLNLO_ew)){
79 
80  switch(order_ew) {
81  case FULLNLO_ew:
82  {
83  gslpp::complex CC = (*(allcoeff[LO]))(7) /alemu + (*(allcoeff[NLO]))(7) * alsmu/alemu
84  + (*(allcoeff[NNLO]))(7) * alsmu * alsmu/alemu + (*(allcoeff[LO_ew ]))(7) /alsmu
85  + (*(allcoeff[NLO_ew]))(7) + (*(allcoeff[NLO_ewt1]))(7) * alemu /alsmu /alsmu
86  + (*(allcoeff[NLO_ewt2]))(7) * alsmu
87  + (*(allcoeff[NLO_ewt3]))(7) * alemu /alsmu+ (*(allcoeff[NLO_ewt4]))(7) * alemu;
88  absP = CC.abs();
89  argP = CC.arg();
90 
91  phiNP = 0.;
92 
93  ampSq = absP * absP ;
94 
95  }
96  break;
97  default:
98  std::stringstream out;
99  out << order;
100  throw std::runtime_error("Bdmumu::computeAmpSq(): order " + out.str() + " not implemented");;
101  }
102  }
103 
104 
105 }
complex cos(const complex &z)
double alphatilde_e(double mu)
Definition: EvolBsmm.cpp:1120
double ampSq
Definition: Bdmumu.h:57
double computeThValue()
hep-ph/9512380v2
Definition: Bdmumu.cpp:18
const HeffDB1 & getHDB1() const
The member that returns an object of the class HeffDB1.
Definition: Flavour.h:68
void computeObs(orders order, orders_ew order_ew)
Definition: Bdmumu.cpp:38
Particle getLeptons(const StandardModel::lepton p) const
A get method to retrieve the member object of a lepton.
double getMub() const
A get method to access the threshold between five- and four-flavour theory in GeV.
Definition: QCD.h:905
double phiNP
Definition: Bdmumu.h:60
double beta
Definition: Bdmumu.h:47
double mBd
Definition: Bdmumu.h:48
orders
An enum type for orders in QCD.
Definition: OrderScheme.h:31
complex pow(const complex &z1, const complex &z2)
void computeAmpSq(orders order, orders_ew order_ew, double mu)
Definition: Bdmumu.cpp:65
double mmu
Definition: Bdmumu.h:49
double absS
Definition: Bdmumu.h:55
double Smumu
Definition: Bdmumu.h:59
A class for a model prediction of an observable.
Definition: ThObservable.h:22
Bdmumu(const StandardModel &SM_i, int obsFlag)
Definition: Bdmumu.cpp:10
const double & getDecayconst() const
A get method for the decay constant of the meson.
Definition: Meson.h:74
double timeInt
Definition: Bdmumu.h:61
A model class for the Standard Model.
double Amumu
Definition: Bdmumu.h:58
double absP
Definition: Bdmumu.h:53
Meson getMesons(const meson m) const
A get method to access a meson as an object of the type Meson.
Definition: QCD.h:859
double computeSmumu(orders order)
Definition: Bdmumu.cpp:59
virtual double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
orders_ew
An enum type for orders in electroweak.
Definition: OrderScheme.h:45
int obs
Definition: Bdmumu.h:63
double computeWidth() const
A method to compute the width of the meson from its lifetime.
Definition: Meson.cpp:25
double md
Definition: Bdmumu.h:51
double getGF() const
A get method to retrieve the Fermi constant .
Definition: OrderScheme.h:33
Definition: QCD.h:732
Flavour * getMyFlavour() const
double mb
Definition: Bdmumu.h:50
Particle getQuarks(const quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:869
EvolBsmm evolbdmm
Definition: Bdmumu.h:64
double chiral
Definition: Bdmumu.h:52
gslpp::vector< gslpp::complex > ** ComputeCoeffdmumu(double mu, schemes scheme=NDR)
Computes the Wilson coefficient for the process .
Definition: Flavour.h:124
double abs() const
const double & getMass() const
A get method to access the particle mass.
Definition: Particle.h:61
const StandardModel & SM
A reference to an object of StandardMode class.
Definition: ThObservable.h:99
double computeAmumu(orders order)
Definition: Bdmumu.cpp:53
Definition: QCD.h:719
double yd
Definition: Bdmumu.h:62
double argP
Definition: Bdmumu.h:54
orders getOrder() const
WilsonCoefficient getCoeffdmumu() const
Definition: HeffDB1.h:152
double arg() const
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
complex sin(const complex &z)
double alphatilde_s(double mu)
Definition: EvolBsmm.cpp:1160
double argS
Definition: Bdmumu.h:56
complex sqrt(const complex &z)