a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
BR_Kp0nunu.cpp
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#include "BR_Kp0nunu.h"
9#include "StandardModel.h"
10#include "std_make_vector.h"
11#include "HeffDS1.h"
12
14: ThObservable(SM_i), mySM(SM_i)
15{
16
18
19 setParametersForObservable(make_vector<std::string>() << "PhSp_KL" << "IB_Kl" << "IB_Kp" << "IB_K0p" << "EpsK" << "DeltaP_cu" << "Vus_fpK0Pip");
20}
21
23{
24 return( k_zero() * BRKp0nunu(NLO, NLO_QED11) );
25}
26
27double BR_Kp0nunu::BRKp0nunu(orders order, orders_qed order_qed)
28{
29 gslpp::vector<gslpp::complex>** c0_lamt_Xt = mySM.getFlavour().ComputeCoeffDS1pnunu();
30 gslpp::vector<gslpp::complex> ** c0_lamc_Xc = mySM.getFlavour().ComputeCoeffDS1pnunuC();
31 gslpp::complex eps(mySM.getOptionalParameter("EpsK")/sqrt(2.),mySM.getOptionalParameter("EpsK")/sqrt(2.));
32
33 if (mySM.getFlavour().getHDS1().getCoeffDS1pnunu().getOrder() < order){
34 std::stringstream out;
35 out << order;
36 throw std::runtime_error("BRKppnunu::computeThValue(): requires cofficient of "
37 "order" + out.str() + "not computed");
38 }
39
40 if (mySM.getFlavour().getHDS1().getCoeffDS1pnunu().getOrder_qed() < order_qed){
41 std::stringstream out2;
42 out2 << order_qed;
43 throw std::runtime_error("BRKppnunu::computeThValue(): requires cofficient of "
44 " qed order " + out2.str() + " not computed");
45 }
46 gslpp::complex c0_Xi;
47 double br = 0.;
48 switch(order_qed) {
49 case NLO_QED11:
50 c0_Xi =( (*(c0_lamt_Xt[LO]))(0) + (*(c0_lamt_Xt[NLO]))(0) + (*(c0_lamt_Xt[NLO_QED11]))(0) +
51 (*(c0_lamc_Xc[LO]))(0) + (*(c0_lamc_Xc[NLO]))(0) + (*(c0_lamc_Xc[NNLO]))(0) + (*(c0_lamc_Xc[LO_QED]))(0) + (*(c0_lamc_Xc[NLO_QED11]))(0) + LongDistance() );
52 br = ( 0.5*(c0_Xi - c0_Xi.conjugate()*(1-eps)/(1+eps)).abs2() / (1+((1-eps)/(1+eps)).abs2()) );
53 c0_Xi =( (*(c0_lamt_Xt[LO]))(1) + (*(c0_lamt_Xt[NLO]))(1) + (*(c0_lamt_Xt[NLO_QED11]))(1) );
54 br += ( 0.5*(c0_Xi - c0_Xi.conjugate()*(1-eps)/(1+eps)).abs2() / (1+((1-eps)/(1+eps)).abs2()) );
55 return br;
56 case LO_QED:{
57 switch(order) {
58 case NNLO:{
59 c0_Xi = (*(c0_lamt_Xt[LO]))(0) + (*(c0_lamt_Xt[NLO]))(0) +
60 (*(c0_lamc_Xc[LO]))(0) + (*(c0_lamc_Xc[NLO]))(0) + (*(c0_lamc_Xc[NNLO]))(0) + LongDistance() ;
61 br = ( 0.5*(c0_Xi - c0_Xi.conjugate()*(1-eps)/(1+eps)).abs2() / (1+((1-eps)/(1+eps)).abs2()) );
62 c0_Xi = (*(c0_lamt_Xt[LO]))(1) + (*(c0_lamt_Xt[NLO]))(1) ;
63 br += ( 0.5*(c0_Xi - c0_Xi.conjugate()*(1-eps)/(1+eps)).abs2() / (1+((1-eps)/(1+eps)).abs2()) );
64 return br;
65 }
66 case NLO:{
67 c0_Xi = (*(c0_lamt_Xt[LO]))(0) + (*(c0_lamt_Xt[NLO]))(0) +
68 (*(c0_lamc_Xc[LO]))(0) + (*(c0_lamc_Xc[NLO]))(0) + LongDistance() ;
69 br = ( 0.5*(c0_Xi - c0_Xi.conjugate()*(1-eps)/(1+eps)).abs2() / (1+((1-eps)/(1+eps)).abs2()) );
70 c0_Xi = (*(c0_lamt_Xt[LO]))(1) + (*(c0_lamt_Xt[NLO]))(1) ;
71 br += ( 0.5*(c0_Xi - c0_Xi.conjugate()*(1-eps)/(1+eps)).abs2() / (1+((1-eps)/(1+eps)).abs2()) );
72 return br;
73 }
74 case LO:{
75 c0_Xi = (*(c0_lamt_Xt[LO]))(0) +
76 (*(c0_lamc_Xc[LO]))(0) + LongDistance() ;
77 br = ( 0.5*(c0_Xi - c0_Xi.conjugate()*(1-eps)/(1+eps)).abs2() / (1+((1-eps)/(1+eps)).abs2()) );
78 c0_Xi = (*(c0_lamt_Xt[LO]))(1) ;
79 br += ( 0.5*(c0_Xi - c0_Xi.conjugate()*(1-eps)/(1+eps)).abs2() / (1+((1-eps)/(1+eps)).abs2()) );
80 return br;
81 }
82 default:
83 std::stringstream out;
84 out << order;
85 throw std::runtime_error("BRKp0nunu::BRKp0nunu(): order " + out.str() + "not implemented");
86 }
87 }
88 default:
89 std::stringstream out;
90 out << order_qed;
91 throw std::runtime_error("BRKp0nunu::BRKp0nunu(): order_qed " + out.str() + "not implemented");
92 }
93}
94
95
97{
99 mySM.getOptionalParameter("Vus_fpK0Pip") * mySM.getOptionalParameter("Vus_fpK0Pip") * mySM.getOptionalParameter("PhSp_KL") *
100 pow(mySM.getMesons(QCD::K_0).getMass(),5.) * mySM.getMesons(QCD::K_0).getLifetime() / HCUT / 512 / M_PI / M_PI / M_PI / mySM.getCKM().getLambda() / mySM.getCKM().getLambda());
101
102}
103
104gslpp::complex BR_Kp0nunu::LongDistance() // c0 * lambda_c * delta_Pc * lambda^4
105{
106 return 4. * mySM.getGF() / sqrt(2.) * mySM.alphaMz() / 2. / M_PI / mySM.sW2_ND() * mySM.getCKM().computelamc() * mySM.getOptionalParameter("DeltaP_cu") * pow(mySM.getCKM().getLambda(),4.) ;
107}
108
@ NNLO
Definition: OrderScheme.h:36
@ LO
Definition: OrderScheme.h:34
@ NLO
Definition: OrderScheme.h:35
@ NLO_QED11
Definition: OrderScheme.h:59
@ LO_QED
Definition: OrderScheme.h:58
double BRKp0nunu(orders order, orders_qed order_qed)
Definition: BR_Kp0nunu.cpp:27
const StandardModel & mySM
Definition: BR_Kp0nunu.h:116
gslpp::complex LongDistance()
Definition: BR_Kp0nunu.cpp:104
double k_zero()
Definition: BR_Kp0nunu.cpp:96
double computeThValue()
Definition: BR_Kp0nunu.cpp:22
BR_Kp0nunu(const StandardModel &SM_i)
Definition: BR_Kp0nunu.cpp:13
const gslpp::complex computelamc() const
The product of the CKM elements .
Definition: CKM.cpp:147
const double getLambda() const
A member for returning the value of the Wolfenstein parameter .
Definition: CKM.h:88
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1pnunuC() const
Definition: Flavour.cpp:141
HeffDS1 & getHDS1() const
The member that returns an object of the class HeffDS1.
Definition: Flavour.cpp:91
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1pnunu() const
Definition: Flavour.cpp:136
WilsonCoefficient getCoeffDS1pnunu() const
Definition: HeffDS1.h:58
double getLifetime() const
A get method for the lifetime of the meson.
Definition: Meson.h:351
const double & getMass() const
A get method to access the particle mass.
Definition: Particle.h:61
@ K_0
Definition: QCD.h:339
const double getOptionalParameter(std::string name) const
A method to get parameters that are specific to only one set of observables.
Definition: QCD.h:450
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
void initializeMeson(QCD::meson meson_i) const
A method to initialize a meson.
Definition: QCD.cpp:280
A model class for the Standard Model.
const CKM & getCKM() const
A get method to retrieve the member object of type CKM.
const Flavour & getFlavour() const
const double getGF() const
A get method to retrieve the Fermi constant .
const double sW2_ND() const
The square of the sine of the weak mixing angle in the MSbar-ND scheme (w/o decoupling $\alpha\ln(m_t...
virtual const double alphaMz() const
The electromagnetic coupling at the -mass scale, .
A class for a model prediction of an observable.
Definition: ThObservable.h:25
void setParametersForObservable(std::vector< std::string > parametersForObservable_i)
A set method to get the parameters for the specific observable.
Definition: ThObservable.h:109
orders_qed getOrder_qed() const
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