a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
BR_Kppnunu.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2012 HEPfit Collaboration
3 *ee doc/COPYING.
4 */
5
6#include "BR_Kppnunu.h"
7#include "StandardModel.h"
8#include "std_make_vector.h"
10#include "HeffDS1.h"
11
13: ThObservable(SM_i), mySM(SM_i)
14{
16
17 setParametersForObservable(make_vector<std::string>() << "DeltaP_cu" << "IB_Kp" << "Vus_fpK0Pip" << "PhSp_KP" << "Delta_EM");
18
19}
20
22{
23 //std::cout <<" k+" << k_plus() * pow( 4. * mySM.getGF() / sqrt(2.) * mySM.alphaMz() / 2. / M_PI / mySM.sW2_ND(),2.) * pow(mySM.getCKM().getLambda() ,10. ) << std::endl;
24 return( k_plus() * (1. + mySM.getOptionalParameter("Delta_EM")) * BRKppnunu(NLO, NLO_QED11) );
25}
26
27double BR_Kppnunu::BRKppnunu(orders order, orders_qed order_qed)
28{
29 if (mySM.getFlavour().getHDS1().getCoeffDS1pnunu().getOrder() < order){
30 std::stringstream out;
31 out << order;
32 throw std::runtime_error("BRKppnunu::computeThValue(): requires cofficient of "
33 "order" + out.str() + "not computed");
34 }
35
36 if (mySM.getFlavour().getHDS1().getCoeffDS1pnunu().getOrder_qed()< order_qed){
37 std::stringstream out2;
38 out2 << order_qed;
39 throw std::runtime_error("BRKppnunu::computeThValue(): requires cofficient of "
40 " qed order " + out2.str() + " not computed");
41 }
42
43
44 gslpp::vector<gslpp::complex> ** c0_lamt_Xt = mySM.getFlavour().ComputeCoeffDS1pnunu() ;
45 gslpp::vector<gslpp::complex> ** c0_lamc_Xc = mySM.getFlavour().ComputeCoeffDS1pnunuC();
46
47 switch(order_qed) {
48 case NLO_QED11:
49 //std::cout << "Pc: " << ( (*(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)).real() / (4. * mySM.getGF() / sqrt(2.) * mySM.alphaMz() / 2. / M_PI / mySM.sW2_ND()) / pow(mySM.getCKM().getLambda(),4.) / mySM.getCKM().computelamc().real() << std::endl;
50 //std::cout << "deltaPC: " << LongDistance().real() / (4. * mySM.getGF() / sqrt(2.) * mySM.alphaMz() / 2. / M_PI / mySM.sW2_ND()) / pow(mySM.getCKM().getLambda(),4.) / mySM.getCKM().computelamc().real() << std::endl;
51 //std::cout << "Xt: " << ( ((*(c0_lamt_Xt[LO]))).imag() + ((*(c0_lamt_Xt[NLO]))).imag() + ((*(c0_lamt_Xt[NLO_QED11]))).imag() ) / (4. * mySM.getGF() / sqrt(2.) * mySM.alphaMz() / 2. / M_PI / mySM.sW2_ND()) / mySM.getCKM().computelamt().imag() << std::endl;
52 return (( (*(c0_lamt_Xt[LO]))(0) + (*(c0_lamt_Xt[NLO]))(0) + (*(c0_lamt_Xt[NLO_QED11]))(0) + (*(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() ).abs2()
53 + ( (*(c0_lamt_Xt[LO]))(1) + (*(c0_lamt_Xt[NLO]))(1) + (*(c0_lamt_Xt[NLO_QED11]))(1)).abs2() );
54 break;
55 case LO_QED:
56 return(( (*(c0_lamt_Xt[LO]))(0) + (*(c0_lamt_Xt[NLO]))(0) + (*(c0_lamc_Xc[LO]))(0) + (*(c0_lamc_Xc[NLO]))(0) + (*(c0_lamc_Xc[NNLO]))(0) + (*(c0_lamc_Xc[LO_QED]))(0) + LongDistance() ).abs2()
57 + ( (*(c0_lamt_Xt[LO]))(1) + (*(c0_lamt_Xt[NLO]))(1) ).abs2()) ;
58 break;
59 case NO_QED:
60 switch(order) {
61 case NNLO:
62 return (( (*(c0_lamt_Xt[LO]))(0) + (*(c0_lamt_Xt[NLO]))(0) + (*(c0_lamc_Xc[LO]))(0) + (*(c0_lamc_Xc[NLO]))(0) + (*(c0_lamc_Xc[NNLO]))(0) + LongDistance() ).abs2()
63 + ( (*(c0_lamt_Xt[LO]))(1) + (*(c0_lamt_Xt[NLO]))(1) ).abs2());
64 break;
65 case NLO:
66 return (( (*(c0_lamt_Xt[LO]))(0) + (*(c0_lamt_Xt[NLO]))(0) + (*(c0_lamc_Xc[LO]))(0) + (*(c0_lamc_Xc[NLO]))(0) + (*(c0_lamc_Xc[LO_QED]))(0) + LongDistance() ).abs2()
67 + ( (*(c0_lamt_Xt[LO]))(1) + (*(c0_lamt_Xt[NLO]))(1) ).abs2() );
68 break;
69 case LO:
70 return (( (*(c0_lamt_Xt[LO]))(0) + (*(c0_lamc_Xc[LO]))(0) + LongDistance() ).abs2()
71 + ( (*(c0_lamt_Xt[LO]))(1) ).abs2() );
72 break;
73 default:
74 std::stringstream out;
75 out << order;
76 throw std::runtime_error("BRKppnunu::BRKppnunu(): order " + out.str() + "not implemented");
77 }
78 default:
79 std::stringstream out;
80 out << order_qed;
81 throw std::runtime_error("BRKppnunu::BRKppnunu(): order_qed " + out.str() + "not implemented");
82 }
83}
84
85
87
88 return (mySM.getOptionalParameter("IB_Kp") * mySM.getOptionalParameter("IB_Kp") * mySM.getOptionalParameter("Vus_fpK0Pip") * mySM.getOptionalParameter("Vus_fpK0Pip") * mySM.getOptionalParameter("PhSp_KP") *
89 pow(mySM.getMesons(QCD::K_P).getMass(),5.) * mySM.getMesons(QCD::K_P).getLifetime() / HCUT / 512 / M_PI / M_PI / M_PI / mySM.getCKM().getLambda() / mySM.getCKM().getLambda());
90
91}
92
93gslpp::complex BR_Kppnunu::LongDistance() // c0 * lambda_c * delta_Pc * lambda^4
94{
95 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.) ;
96}
@ 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
@ NO_QED
Definition: OrderScheme.h:57
const StandardModel & mySM
Definition: BR_Kppnunu.h:108
double BRKppnunu(orders order, orders_qed order_qed)
Definition: BR_Kppnunu.cpp:27
double k_plus()
Definition: BR_Kppnunu.cpp:86
BR_Kppnunu(const StandardModel &SM_i)
Definition: BR_Kppnunu.cpp:12
gslpp::complex LongDistance()
Definition: BR_Kppnunu.cpp:93
double computeThValue()
Definition: BR_Kppnunu.cpp:21
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_P
Definition: QCD.h:340
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