30 std::stringstream out;
32 throw std::runtime_error(
"AmpDK1::computeThValue(): requires cofficient of order"
33 + out.str() +
"not computed");
43 gslpp::vector<gslpp::complex> allcoeffzLO = (*allcoeffz[
LO]) + (*allcoeffz[
LO_QED]);
44 gslpp::vector<gslpp::complex> allcoeffzNLO = (*allcoeffz[
NLO]) + (*allcoeffz[
NLO_QED11]);
45 gslpp::vector<gslpp::complex> allcoeffyLO = (*allcoeffv[
LO]) + (*allcoeffv[
LO_QED]);
46 gslpp::vector<gslpp::complex> allcoeffyNLO = (*allcoeffv[
NLO]) + (*allcoeffv[
NLO_QED11]);
47 for(
int i = 0; i<2; i++){
48 allcoeffzLO.assign(i,allcoeffyLO(i));
49 allcoeffzNLO.assign(i,allcoeffyNLO(i));
50 allcoeffyLO.assign(i,0.);
51 allcoeffyNLO.assign(i,0.);
53 for(
int i = 2; i<10; i++){
54 allcoeffyLO.assign(i,allcoeffyLO(i)-allcoeffzLO(i));
55 allcoeffyNLO.assign(i,allcoeffyNLO(i)-allcoeffzNLO(i));
65 gslpp::vector<gslpp::complex> ReW = ( (allcoeffzLO+allcoeffzNLO) + tau.real() * (allcoeffyLO+allcoeffyNLO) )
67 gslpp::vector<gslpp::complex> ImW = tau.imag() * (allcoeffyLO+allcoeffyNLO) *
getChiralMatrixpp0()
69 double CKMprod = (Vus.conjugate()*Vud).real();
70 gslpp::complex ImA0 = M_SQRT1_2 * GF * CKMprod * ( (ImW * meBKd1 ) - ImW(2) * meBKd1(2) ) +
71 ( ImW(2)/ReW(2) ) * (
getReA0() - M_SQRT1_2 * GF * CKMprod * ( ( ReW * meBKd1 ) - ReW(2) * meBKd1(2) ) );
74 return gslpp::complex(
getReA0() , ImA0.real() );
79 gslpp::vector<gslpp::complex> ReW = ( (allcoeffzLO+allcoeffzNLO) + tau.real() * (allcoeffyLO+allcoeffyNLO) )
81 gslpp::vector<gslpp::complex> ImW = tau.imag() * (allcoeffyLO+allcoeffyNLO) *
getChiralMatrixpp0()
83 double CKMprod = (Vus.conjugate()*Vud).real();
84 gslpp::complex ImA0 = M_SQRT1_2 * GF * CKMprod * ( (ImW * meBKd1 ) - ImW(2) * meBKd1(2) ) +
85 ( ImW(2)/ReW(2) ) * (
getReA0() - M_SQRT1_2 * GF * CKMprod * ( ( ReW * meBKd1 ) - ReW(2) * meBKd1(2) ) );
88 return gslpp::complex(
getReA0() , ImA0.real() );
92 return M_SQRT1_2 * GF * (Vus.conjugate() * Vud) * ( (allcoeffzLO + allcoeffzNLO) + tau * (allcoeffyLO + allcoeffyNLO) ) * meBKd1;
97 gslpp::vector<gslpp::complex> ReW = ( allcoeffzLO + tau.real() * allcoeffyLO )
102 gslpp::complex ImA0 = M_SQRT1_2 * GF * ( Vus.conjugate() * Vud ).real() * ( (ImW * meBKd1 ) - ImW(2) * meBKd1(2) ) +
103 ( ImW(2)/ReW(2) ) * (
getReA0() - M_SQRT1_2 * GF * ( Vus.conjugate() * Vud ).real() * ( ( ReW * meBKd1 ) - ReW(2) * meBKd1(2) ) );
106 return gslpp::complex(
getReA0() , ImA0.real() );
111 gslpp::vector<gslpp::complex> ReW = ( allcoeffzLO + tau.real() * allcoeffyLO )
115 double CKMprod = (Vus.conjugate()*Vud).real();
116 gslpp::complex ImA0 = M_SQRT1_2 * GF * CKMprod * ( (ImW * meBKd1 ) - ImW(2) * meBKd1(2) ) +
117 ( ImW(2)/ReW(2) ) * (
getReA0() - M_SQRT1_2 * GF * CKMprod * ( ( ReW * meBKd1 ) - ReW(2) * meBKd1(2) ) );
120 return gslpp::complex(
getReA0() , ImA0.real() );
124 return M_SQRT1_2 * GF * (Vus.conjugate() * Vud) * ( allcoeffzLO + tau * allcoeffyLO ) * meBKd1;
127 std::stringstream out;
129 throw std::runtime_error(
"AmpDK1::AmpDK(): order " + out.str() +
"not implemented");
136 std::stringstream out;
138 throw std::runtime_error(
"AmpDK1::computeThValue(): requires cofficient of "
139 "order" + out.str() +
"not computed");
156 gslpp::vector<gslpp::complex> allcoeffzLO = (*allcoeffz[
LO]) + (*allcoeffz[
LO_QED]);
157 gslpp::vector<gslpp::complex> allcoeffzNLO = (*allcoeffz[
NLO]) + (*allcoeffz[
NLO_QED11]);
158 gslpp::vector<gslpp::complex> allcoeffyLO = (*allcoeffv[
LO]) + (*allcoeffv[
LO_QED]);
159 gslpp::vector<gslpp::complex> allcoeffyNLO = (*allcoeffv[
NLO]) + (*allcoeffv[
NLO_QED11]);
160 for(
int i = 0; i<2; i++){
161 allcoeffzLO.assign(i,allcoeffyLO(i));
162 allcoeffzNLO.assign(i,allcoeffyNLO(i));
163 allcoeffyLO.assign(i,0.);
164 allcoeffyNLO.assign(i,0.);
166 for(
int i = 2; i<10; i++){
167 allcoeffyLO.assign(i,allcoeffyLO(i)-allcoeffzLO(i));
168 allcoeffyNLO.assign(i,allcoeffyNLO(i)-allcoeffzNLO(i));
180 if( meBKd3(1) == 0 && meBKd3(2) == 0 && meBKd3(3) == 0 && meBKd3(4) == 0 && meBKd3(8) == 0 && meBKd3(9) == 0 ){
187 return M_SQRT1_2 * GF * (Vud.conjugate() * Vus) * ((allcoeffzLO + allcoeffzNLO) + tau * (allcoeffyLO + allcoeffyNLO)) * meBKd3;
189 return M_SQRT1_2 * GF * (Vud.conjugate() * Vus) * (allcoeffzLO + tau * allcoeffyLO) * meBKd3;
191 std::stringstream out;
193 throw std::runtime_error(
"AmpDK1::AmpDK(): order " + out.str() +
"not implemented");;
207 double phasespacePpPm = 0.5 * sqrt(MK0*MK0 - 4.*MPp*MPp);
208 double phasespaceP0P0 = 0.5 * sqrt(MK0*MK0 - 4.*MP0*MP0);
210 double APpPm = sqrt(GammaKSPpPm * 8. * M_PI * MK0*MK0 / phasespacePpPm);
211 double AP0P0 = sqrt(GammaKSP0P0 * 16. * M_PI * MK0*MK0 / phasespaceP0P0);
213 double ReA0 = sqrt((APpPm * APpPm + 0.5 * AP0P0 * AP0P0)/2.);
226 double phasespacePpP0 = sqrt((MKp*MKp / 4.) - (MPp*MPp + MP0*MP0)/2. + (MP0*MP0 - MPp*MPp)*(MP0*MP0 - MPp*MPp)/(4.*MKp*MKp));
228 double ReA2 = sqrt((2./3.) * 8. * M_PI * GammaKp * MKp * MKp / phasespacePpP0);
242 std::stringstream out;
244 throw std::runtime_error(
"AmpDK1::computeThValue(): requires cofficient of order"
245 + out.str() +
"not computed");
255 gslpp::vector<gslpp::complex> allcoeffzLO = (*allcoeffz[
LO]) + (*allcoeffz[
LO_QED]);
256 gslpp::vector<gslpp::complex> allcoeffzNLO = (*allcoeffz[
NLO]) + (*allcoeffz[
NLO_QED11]);
257 gslpp::vector<gslpp::complex> allcoeffyLO = (*allcoeffv[
LO]) + (*allcoeffv[
LO_QED]);
258 gslpp::vector<gslpp::complex> allcoeffyNLO = (*allcoeffv[
NLO]) + (*allcoeffv[
NLO_QED11]);
259 for(
int i = 0; i<2; i++){
260 allcoeffzLO.assign(i,allcoeffyLO(i));
261 allcoeffzNLO.assign(i,allcoeffyNLO(i));
262 allcoeffyLO.assign(i,0.);
263 allcoeffyNLO.assign(i,0.);
265 for(
int i = 2; i<10; i++){
266 allcoeffyLO.assign(i,allcoeffyLO(i)-allcoeffzLO(i));
267 allcoeffyNLO.assign(i,allcoeffyNLO(i)-allcoeffzNLO(i));
279 return gslpp::complex(fullA0LAT.real() , fullA0LAT.imag());
290 return M_SQRT1_2 * GF * (Vus.conjugate() * Vud) * ( (allcoeffzLO + allcoeffzNLO) + tau * (allcoeffyLO + allcoeffyNLO) ) * meBKd1;
299 return gslpp::complex(fullA0LAT.real() , fullA0LAT.imag());
310 return M_SQRT1_2 * GF * (Vus.conjugate() * Vud) * ( allcoeffzLO + tau * allcoeffyLO ) * meBKd1;
313 std::stringstream out;
315 throw std::runtime_error(
"AmpDK1::AmpDK(): order " + out.str() +
"not implemented");
321 gslpp::matrix<double> chiral_to_10(10,10,0);
323 chiral_to_10(0,0) = 1./5.;
324 chiral_to_10(0,1) = 1.;
325 chiral_to_10(1,0) = 1./5.;
326 chiral_to_10(1,2) = 1.;
327 chiral_to_10(2,1) = 3.;
328 chiral_to_10(2,2) = 2.;
329 chiral_to_10(3,1) = 2.;
330 chiral_to_10(3,2) = 3.;
331 chiral_to_10(4,3) = 1.;
332 chiral_to_10(5,4) = 1.;
333 chiral_to_10(6,5) = 1.;
334 chiral_to_10(7,6) = 1.;
335 chiral_to_10(8,0) = 3./10.;
336 chiral_to_10(8,2) = -1.;
337 chiral_to_10(9,0) = 3./10.;
338 chiral_to_10(9,1) = -1.;
345 gslpp::matrix<double> chiral_to_10(10,10,0);
346 chiral_to_10(0,0) =1./3.;
347 chiral_to_10(1,0) = 1./3.;
348 chiral_to_10(6,5) = 1./2.;
349 chiral_to_10(7,6) = 1./2.;
350 chiral_to_10(8,0) = 1./2.;
351 chiral_to_10(9,0) = 1./2.;
358 gslpp::matrix<double> lat_SMOMqq(10,10,0);
385 gslpp::matrix<double> smom_ms_conversion(10,10,0);
388 smom_ms_conversion(0,0) = -12.*log(2.)/Nc+12.*log(2.)+9./Nc-9.;
389 smom_ms_conversion(1,1) = -12.*log(2.)/Nc+8.*Nc/5.+9./Nc-12./5.;
390 smom_ms_conversion(1,2) = 12.*log(2.)+12.*Nc/5.-53./5.;
391 smom_ms_conversion(2,1) = 12.*log(2.)-12.*Nc/5.+2./(3.*Nc)-263./45.;
392 smom_ms_conversion(2,2) = -12.*log(2.)/Nc-18.*Nc/5+85./(9.*Nc)+26./15.;
393 smom_ms_conversion(2,3) = 2./(9.*Nc);
394 smom_ms_conversion(2,4) = -2./9.;
395 smom_ms_conversion(3,3) = 3.*C0/(2.*Nc)-2.*log(2.)/Nc-2./Nc;
396 smom_ms_conversion(3,4) = -3.*C0/2.+2.*log(2.)+2.;
397 smom_ms_conversion(4,1) = 5./Nc-10./3.;
398 smom_ms_conversion(4,2) = 10./(3.*Nc)-5.;
399 smom_ms_conversion(4,3) = 2.*log(2.)+5./(3.*Nc)-2.;
400 smom_ms_conversion(4,4) = -3.*C0*Nc/2.+3.*C0/(2.*Nc)-2.*log(2.)/Nc+4.*Nc-2./Nc-5./3.;
401 smom_ms_conversion(5,5) = 3.*C0/(2.*Nc)-2.*log(2.)/Nc-2./Nc;
402 smom_ms_conversion(5,6) = -3.*C0/2.+2.*log(2.)+2.;
403 smom_ms_conversion(6,5) = 2.*log(2.)-2.;
404 smom_ms_conversion(6,6) = -3.*C0*Nc/2.+3.*C0/(2.*Nc)-2.*log(2.)/Nc+4.*Nc-2./Nc;
406 smom_ms_conversion *=
mySM.
Als(mu, order)/(4.*M_PI);
407 smom_ms_conversion += gslpp::matrix<double>::Id(10);
409 return smom_ms_conversion;
gslpp::matrix< double > getChiralMatrixpp0() const
const StandardModel & mySM
gslpp::matrix< double > getChiralMatrixpp2() const
gslpp::matrix< double > getRIMatrixpp0() const
gslpp::complex AmpDS1pp2(orders order)
gslpp::complex AmpDS1pp0pureLAT(orders order)
AmpDS1(const StandardModel &SM_i)
compute the amplitude for decay in 2 pion
gslpp::matrix< double > getRISMOMTransMatrix(double mu, orders order) const
gslpp::complex AmpDS1pp0(orders order)
const double & getMu() const
A get method for the scale of the bag parameters.
schemes getScheme() const
A get method for the scheme of the bag parameters.
const gslpp::vector< double > & getBpars() const
A get method for the vector of the bag parameters.
const gslpp::complex getV_ud() const
A member for returning the value of the CKM element .
const gslpp::complex getV_us() const
A member for returning the value of the CKM element .
const gslpp::complex getV_td() const
A member for returning the value of the CKM element .
const gslpp::complex getV_ts() const
A member for returning the value of the CKM element .
HeffDS1 & getHDS1() const
The member that returns an object of the class HeffDS1.
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1PPv(double mu, schemes scheme=NDR) const
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1PPz(double muc, schemes scheme=NDR) const
WilsonCoefficient getCoeffDS1PP() const
double computeWidth() const
A method to compute the width of the meson from its lifetime.
const double & getMass() const
A get method to access the particle mass.
const BParameter & getBKd1() const
const BParameter & getBKd3() const
const double getOptionalParameter(std::string name) const
A method to get parameters that are specific to only one set of observables.
const Meson & getMesons(const QCD::meson m) const
A get method to access a meson as an object of the type Meson.
void initializeBParameter(std::string name_i) const
A method to initialize B Parameter and the corresponding meson.
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 Als(const double mu, const orders order, const bool Nf_thr, const bool qed_flag) const
The running QCD coupling in the scheme including QED corrections.
orders
An enum type for orders in QCD.