a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
THDMMatching Class Reference

A class for the Wilson coefficients in the THDM. More...

#include <THDMMatching.h>

+ Inheritance diagram for THDMMatching:

Detailed Description

A class for the Wilson coefficients in the THDM.

Author
HEPfit Collaboration

At the moment, this includes only the \(B_s\) mass difference and the decay \(B\to \tau \nu\).

Definition at line 24 of file THDMMatching.h.

Public Member Functions

virtual std::vector< WilsonCoefficient > & CMbsg ()
 operator basis: current current; qcd penguins; magnetic and chromomagnetic penguins; semileptonic More...
 
virtual std::vector< WilsonCoefficient > & CMdbs2 ()
 
virtual std::vector< WilsonCoefficient > & CMdiujleptonknu (int i, int j, int k)
 
virtual std::vector< WilsonCoefficient > & CMgminus2mu ()
 Wilson coefficient for \( (g-2)_{\mu} \). More...
 
virtual std::vector< WilsonCoefficient > & CMprimebsg ()
 operator basis: current current; qcd penguins; magnetic and chromomagnetic penguins; semileptonic More...
 
virtual double gminus2muLO ()
 Calculates amplitudes for \( (g-2)_{\mu} \) at one loop from [Broggio:2014mna]. More...
 
virtual double gminus2muNLO ()
 Calculates amplitudes for \( (g-2)_{\mu} \) at approximate two-loop from [Broggio:2014mna]. More...
 
double setWCbsg (int i, double tan, double mt, double mhp, double mu, orders order)
 
 THDMMatching (const THDM &THDM_i)
 
- Public Member Functions inherited from StandardModelMatching
virtual std::vector< WilsonCoefficient > & CMdbd2 ()
 \( \Delta B = 2 \), \( B_{d} \) More...
 
virtual std::vector< WilsonCoefficient > & CMdd2 ()
 \( \Delta C = 2 \), More...
 
 StandardModelMatching (const StandardModel &SM_i)
 
void updateSMParameters ()
 Updates to new Standard Model parameter sets. More...
 
virtual ~StandardModelMatching ()
 
- Public Member Functions inherited from ModelMatching
virtual std::vector< WilsonCoefficient > & CMBMll (QCD::lepton lepton)=0
 
virtual std::vector< WilsonCoefficient > & CMbnlep (int a)=0
 
virtual std::vector< WilsonCoefficient > & CMbnlepCC (const int a)=0
 
virtual std::vector< WilsonCoefficient > & CMBXsnn (QCD::lepton lepton)=0
 
virtual std::vector< WilsonCoefficient > & CMd1 ()=0
 
virtual std::vector< WilsonCoefficient > & CMd1Buras ()=0
 
virtual std::vector< WilsonCoefficientNew > & CMDF1 (std::string blocks, unsigned int nops)=0
 
virtual std::vector< WilsonCoefficient > & CMprimeBMll (QCD::lepton lepton)=0
 
virtual ~ModelMatching ()
 

Private Attributes

double CWbsgArrayLO [8]
 
double CWbsgArrayNLO [8]
 
double CWbsgArrayNNLO [8]
 
WilsonCoefficient mcbsg
 
WilsonCoefficient mcbtaunu
 
WilsonCoefficient mcdbs2
 
WilsonCoefficient mcgminus2mu
 
WilsonCoefficient mcprimebsg
 
double mhpbsg
 
double mtbsg
 
double mubsg
 
gslpp::matrix< gslpp::complex > myCKM
 
const THDMmyTHDM
 
double tanbsg
 

Constructor & Destructor Documentation

◆ THDMMatching()

THDMMatching::THDMMatching ( const THDM THDM_i)

Definition at line 15 of file THDMMatching.cpp.

15 :
16
18 myTHDM(THDM_i),
19 myCKM(3, 3, 0.),
20 mcdbs2(5, NDR, NLO),
21 mcbtaunu(5, NDR, LO),
22 mcbsg(8, NDR, NNLO),
23 mcprimebsg(8, NDR, NNLO),
25{}
@ NNLO
Definition: OrderScheme.h:36
@ LO
Definition: OrderScheme.h:34
@ NLO
Definition: OrderScheme.h:35
@ NDR
Definition: OrderScheme.h:21
StandardModelMatching(const StandardModel &SM_i)
gslpp::matrix< gslpp::complex > myCKM
Definition: THDMMatching.h:88
WilsonCoefficient mcbsg
Definition: THDMMatching.h:89
const THDM & myTHDM
Definition: THDMMatching.h:87
WilsonCoefficient mcprimebsg
Definition: THDMMatching.h:89
WilsonCoefficient mcdbs2
Definition: THDMMatching.h:89
WilsonCoefficient mcbtaunu
Definition: THDMMatching.h:89
WilsonCoefficient mcgminus2mu
Definition: THDMMatching.h:89

Member Function Documentation

◆ CMbsg()

std::vector< WilsonCoefficient > & THDMMatching::CMbsg ( )
virtual

operator basis: current current; qcd penguins; magnetic and chromomagnetic penguins; semileptonic

Returns
THDM Wilson coefficients, Misiak basis, for \( B \rightarrow X_{s} \gamma, l^{+} l^{-} \)

Implements ModelMatching.

Definition at line 97 of file THDMMatching.cpp.

98{
99 double Muw = myTHDM.getMuw();
100
101 double Mut = myTHDM.getMut();
102 double mt = myTHDM.Mrun(Mut, myTHDM.getQuarks(QCD::TOP).getMass_scale(),
104 double mHp=myTHDM.getmHp();
105
106 double tanb = myTHDM.gettanb();
107
108 gslpp::complex co = 1.; // (- 4. * GF / sqrt(2)) * SM.computelamt_s(); THIS SHOULD ALREADY BE IMPLEMENTED IN THE OBSERVABLE
109
111 mcbsg.setMu(Muw);
112
113 switch (mcbsg.getOrder()) {
114 case NNLO:
115 for (int j=0; j<8; j++){
116 mcbsg.setCoeff(j, co * myTHDM.Alstilde5(Muw) * myTHDM.Alstilde5(Muw) * setWCbsg(j, tanb, mt, mHp, Muw, NNLO), NNLO);
117 }
118 case NLO:
119 for (int j=0; j<8; j++){
120 mcbsg.setCoeff(j, co * myTHDM.Alstilde5(Muw) * setWCbsg(j, tanb, mt, mHp, Muw, NLO), NLO);
121 }
122 case LO:
123 for (int j=0; j<8; j++){
124 mcbsg.setCoeff(j, co * setWCbsg(j, tanb, mt, mHp, Muw, LO), LO);
125 }
126 break;
127 default:
128 std::stringstream out;
129 out << mcbsg.getOrder();
130 throw std::runtime_error("THDMMatching::CMbsg(): order " + out.str() + "not implemented");
131 }
132
133 vmcbsg.push_back(mcbsg);
134 return(vmcbsg);
135}
@ FULLNNLO
Definition: OrderScheme.h:39
virtual std::vector< WilsonCoefficient > & CMbsg()=0
double getMass_scale() const
A get method to access the scale at which the particle mass is defined.
Definition: Particle.h:133
const double & getMass() const
A get method to access the particle mass.
Definition: Particle.h:61
const double Mrun(const double mu, const double m, const quark q, const orders order=FULLNNLO) const
Computes a running quark mass from .
Definition: QCD.cpp:1353
@ TOP
Definition: QCD.h:328
const double getMut() const
A get method to access the threshold between six- and five-flavour theory in GeV.
Definition: QCD.h:573
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
const double getMuw() const
A get method to retrieve the matching scale around the weak scale.
const double Alstilde5(const double mu) const
The value of at any scale with the number of flavours and full EW corrections.
double getmHp() const
A method get the charged Higgs mass.
Definition: THDM.h:471
double gettanb() const
A method get .
Definition: THDM.h:283
double setWCbsg(int i, double tan, double mt, double mhp, double mu, orders order)
void setCoeff(const gslpp::vector< gslpp::complex > &z, orders order_i)
virtual void setMu(double mu)
orders getOrder() const

◆ CMdbs2()

std::vector< WilsonCoefficient > & THDMMatching::CMdbs2 ( )
virtual
Returns
THDM Wilson coefficients for \( B_s \to \bar{B_s}\) according to [Geng:1988bq], [Deschamps:2009rh]

Reimplemented from StandardModelMatching.

Definition at line 27 of file THDMMatching.cpp.

27 {
28
29 double Mut = myTHDM.getMut();
30 double xt = x_t(Mut);
31 double GF=myTHDM.getGF();
32 double MW=myTHDM.Mw();
33 gslpp::complex co = GF / 4. / M_PI * MW * myTHDM.getCKM().computelamt_s();
34 double tanb = myTHDM.gettanb();
35 double mHp2=myTHDM.getmHp2();
36 double xHW=mHp2/(MW*MW);
37 double xtH=xt/xHW;
38 double SWH=xtH*((2.0*xHW-8.0)*log(xtH)/((1.0-xHW)*(1.0-xtH)*(1.0-xtH))+6.0*xHW*log(xt)/((1.0-xHW)*(1.0-xt)*(1.0-xt))-(8.0-2.0*xt)/((1.0-xt)*(1.0-xtH)))/(tanb*tanb);
39 double SHH=xtH*((1.0+xtH)/((1.0-xtH)*(1.0-xtH))+2.0*xtH*log(xtH)/((1.0-xtH)*(1.0-xtH)*(1.0-xtH)))/(tanb*tanb*tanb*tanb);
40
42 mcdbs2.setMu(Mut);
43
44 switch (mcdbs2.getOrder()) {
45 case NNLO:
46 case NLO:
47 case LO:
48 mcdbs2.setCoeff(0, co * co * xt * (SWH+SHH), LO);
49 break;
50 default:
51 std::stringstream out;
52 out << mcdbs2.getOrder();
53 throw std::runtime_error("THDMMatching::CMdbs2(): order " + out.str() + "not implemented");
54 }
55
56 vmcds.push_back(mcdbs2);
57 return(vmcds);
58}
const gslpp::complex computelamt_s() const
The product of the CKM elements .
Definition: CKM.cpp:174
const CKM & getCKM() const
A get method to retrieve the member object of type CKM.
virtual const double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
const double getGF() const
A get method to retrieve the Fermi constant .
virtual std::vector< WilsonCoefficient > & CMdbs2()
,
double getmHp2() const
A method get the squared charged Higgs mass.
Definition: THDM.h:457

◆ CMdiujleptonknu()

std::vector< WilsonCoefficient > & THDMMatching::CMdiujleptonknu ( int  i,
int  j,
int  k 
)
virtual
Returns
THDM Wilson coefficient for \( B \to \tau \nu \) from [Hou:1992sy]

Definition at line 60 of file THDMMatching.cpp.

60 {
61
62 double Muw = myTHDM.getMuw();
63 double GF = myTHDM.getGF();
65 double mB;
66 double tanb = myTHDM.gettanb();
67 double mHp2=myTHDM.getmHp2();
68
69 vmculeptonnu = StandardModelMatching::CMdiujleptonknu(i,j,k);
70 mcbtaunu.setMu(Muw);
71
72 switch (mcbtaunu.getOrder()) {
73 case NNLO:
74 case NLO:
75 case LO:
76 if (i == 2 && j == 0 && k == 2) {
78 mcbtaunu.setCoeff(0, -4.*GF * myCKM(0,2) / sqrt(2.) * mB*mB*tanb*tanb/mHp2, LO);
79 }
80 else if (i == 2 && j == 1 && k == 2) {
82 mcbtaunu.setCoeff(0, -4.*GF * myCKM(1,2) / sqrt(2.) * mB*mB*tanb*tanb/mHp2, LO);
83 }
84 else std::runtime_error("THDMMatching::CMbtaunu(): flavour indices not implemented");
85 break;
86 default:
87 std::stringstream out;
88 out << mcbtaunu.getOrder();
89 throw std::runtime_error("THDMMatching::CMbtaunu(): order " + out.str() + "not implemented");
90 }
91
92 vmculeptonnu.push_back(mcbtaunu);
93 return(vmculeptonnu);
94
95}
@ B_C
Definition: QCD.h:347
@ B_P
Definition: QCD.h:345
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
const gslpp::matrix< gslpp::complex > getVCKM() const
A get method to retrieve the CKM matrix.

◆ CMgminus2mu()

std::vector< WilsonCoefficient > & THDMMatching::CMgminus2mu ( )
virtual

Wilson coefficient for \( (g-2)_{\mu} \).

Returns
\( (g-2)_{\mu} \) at NLO

Definition at line 640 of file THDMMatching.cpp.

640 {
641
642 vmcgminus2mu = StandardModelMatching::CMgminus2mu();
643
644 double gminus2muLOvalue=gminus2muLO();
645 double gminus2muNLOvalue=gminus2muNLO();
646
647 switch (mcgminus2mu.getOrder()) {
648 case LO:
649 mcgminus2mu.setCoeff(0, gminus2muLOvalue, LO); //g-2_muR
650 mcgminus2mu.setCoeff(1, 0., LO); //g-2_muL
651 break;
652 case NLO:
653 mcgminus2mu.setCoeff(0, gminus2muLOvalue+gminus2muNLOvalue, NLO); //g-2_muR
654 mcgminus2mu.setCoeff(1, 0., NLO); //g-2_muL
655 break;
656 case NNLO:
657 default:
658 std::stringstream out;
659 out << mcgminus2mu.getOrder();
660 throw std::runtime_error("THDMMatching::CMgminus2mu(): order " + out.str() + " not implemented.\nOnly leading order (LO) or next-to-leading order (NLO) are allowed.");
661 }
662
663 vmcgminus2mu.push_back(mcgminus2mu);
664 return(vmcgminus2mu);
665
666}
virtual double gminus2muLO()
Calculates amplitudes for at one loop from .
virtual double gminus2muNLO()
Calculates amplitudes for at approximate two-loop from .

◆ CMprimebsg()

std::vector< WilsonCoefficient > & THDMMatching::CMprimebsg ( )
virtual

operator basis: current current; qcd penguins; magnetic and chromomagnetic penguins; semileptonic

Returns
Wilson coefficients, Misiak basis, for \( B \rightarrow X_{s} \gamma, l^{+} l^{-} \)

Implements ModelMatching.

Definition at line 138 of file THDMMatching.cpp.

139{
140 double Muw = myTHDM.getMuw();
141
142 vmcprimebsg = StandardModelMatching::CMprimebsg();
143 mcprimebsg.setMu(Muw);
144
145 switch (mcprimebsg.getOrder()) {
146 case NNLO:
147 for (int j=0; j<8; j++){
148 mcprimebsg.setCoeff(j, 0., NNLO);//* CHECK ORDER *//
149 }
150 case NLO:
151 for (int j=0; j<8; j++){
152 mcprimebsg.setCoeff(j, 0., NLO);//* CHECK ORDER *//
153 }
154 case LO:
155 for (int j=0; j<8; j++){
156 mcprimebsg.setCoeff(j, 0., LO);
157 }
158 break;
159 default:
160 std::stringstream out;
161 out << mcprimebsg.getOrder();
162 throw std::runtime_error("THDMMatching::CMprimebsg(): order " + out.str() + "not implemented");
163 }
164
165 vmcprimebsg.push_back(mcprimebsg);
166 return(vmcprimebsg);
167}
virtual std::vector< WilsonCoefficient > & CMprimebsg()=0

◆ gminus2muLO()

double THDMMatching::gminus2muLO ( )
virtual

Calculates amplitudes for \( (g-2)_{\mu} \) at one loop from [Broggio:2014mna].

Calculates the muon g-2 at LO

Returns
\( (g-2)_{\mu} \) at LO

Definition at line 419 of file THDMMatching.cpp.

419 {
420
421 double gminus2muLO;
422
423 double pi=M_PI;
424 double GF=myTHDM.getGF();
426 std::string modelflag=myTHDM.getModelTypeflag();
427 double mHl2=myTHDM.getmHl2();
428 double mHh2=myTHDM.getmHh2();
429 double mA2=myTHDM.getmA2();
430 double mHp2=myTHDM.getmHp2();
431 double tanb=myTHDM.gettanb();
432 double sinb=tanb/sqrt(1.0+tanb*tanb);
433 double cosb=1.0/sqrt(1.0+tanb*tanb);
434 double bma=myTHDM.getbma();
435 double sina=sinb*cos(bma)-cosb*sin(bma);
436 double cosa=cosb*cos(bma)+sinb*sin(bma);
437
438 double ymu_h, ymu_H, ymu_A;
439 double rmu_hSM, rmu_h, rmu_H, rmu_A, rmu_Hp;
440 double part_hSM, part_h, part_H, part_A, part_Hp;
441
442 if( modelflag == "type1" ) {
443 ymu_h=cosa/sinb;
444 ymu_H=sina/sinb;
445 ymu_A=-1.0/tanb;
446 }
447 else if( modelflag == "type2" ) {
448 ymu_h=-sina/cosb;
449 ymu_H=cosa/cosb;
450 ymu_A=tanb;
451 }
452 else if( modelflag == "typeX" ) {
453 ymu_h=-sina/cosb;
454 ymu_H=cosa/cosb;
455 ymu_A=tanb;
456 }
457 else if( modelflag == "typeY" ) {
458 ymu_h=cosa/sinb;
459 ymu_H=sina/sinb;
460 ymu_A=-1.0/tanb;
461 }
462 else {
463 throw std::runtime_error("modelflag can be only any of \"type1\", \"type2\", \"typeX\" or \"typeY\"");
464 }
465
466 if( mHl2<1.0 || mHh2<1.0 || mA2<1.0 || mHp2<1.0)
467 {
468 throw std::runtime_error("The implemented approximation for g-2_\\mu only works for Higgs masses above 1 GeV.");
469 }
470 rmu_hSM=mMU*mMU/15647.5081;
471 rmu_h=mMU*mMU/mHl2;
472 rmu_H=mMU*mMU/mHh2;
473 rmu_A=mMU*mMU/mA2;
474 rmu_Hp=mMU*mMU/mHp2;
475
476 //https://arxiv.org/pdf/1409.3199.pdf
477
478 part_hSM=rmu_hSM*(-7.0/6.0-log(rmu_hSM));
479 part_h=ymu_h*ymu_h*rmu_h*(-7.0/6.0-log(rmu_h));
480 part_H=ymu_H*ymu_H*rmu_H*(-7.0/6.0-log(rmu_H));
481 part_A=ymu_A*ymu_A*rmu_A*(11.0/6.0+log(rmu_A));
482 part_Hp=-ymu_A*ymu_A*rmu_Hp*1.0/6.0;
483
484 gminus2muLO=GF*mMU*mMU/(4.0*pi*pi*sqrt(2.0)) * (-part_hSM+part_h+part_H+part_A+part_Hp);
485
486 return(gminus2muLO);
487}
@ MU
Definition: QCD.h:314
const Particle & getLeptons(const QCD::lepton p) const
A get method to retrieve the member object of a lepton.
std::string getModelTypeflag() const
A method get the THDM model type.
Definition: THDM.h:242
double getbma() const
A method get .
Definition: THDM.h:307
double getmHh2() const
A method get the squared mass of the "non-125 GeV" neutral scalar Higgs.
Definition: THDM.h:365
double getmHl2() const
A method get the squared mass of the lighter neutral scalar Higgs.
Definition: THDM.h:339
double getmA2() const
A method get the squared mass of the pseudoscalar Higgs A.
Definition: THDM.h:423

◆ gminus2muNLO()

double THDMMatching::gminus2muNLO ( )
virtual

Calculates amplitudes for \( (g-2)_{\mu} \) at approximate two-loop from [Broggio:2014mna].

Calculates the NLO contribution to the muon g-2

Returns
\( (g-2)_{\mu} \) at LO

Definition at line 546 of file THDMMatching.cpp.

546 {
547
548 double gminus2muNLO;
549
550 double pi=M_PI;
551 double GF=myTHDM.getGF();
552 double aem=myTHDM.getAle();
555 double mt=myTHDM.getQuarks(QCD::TOP).getMass();
556 double mb=myTHDM.getQuarks(QCD::BOTTOM).getMass();
557 std::string modelflag=myTHDM.getModelTypeflag();
558 double mHl2=myTHDM.getmHl2();
559 double mHh2=myTHDM.getmHh2();
560 double mA2=myTHDM.getmA2();
561 double mHp2=myTHDM.getmHp2();
562 double tanb=myTHDM.gettanb();
563 double sinb=tanb/sqrt(1.0+tanb*tanb);
564 double cosb=1.0/sqrt(1.0+tanb*tanb);
565 double bma=myTHDM.getbma();
566 double sina=sinb*cos(bma)-cosb*sin(bma);
567 double cosa=cosb*cos(bma)+sinb*sin(bma);
568
569 double ymu_h, ymu_H, ymu_A, yb_h, yb_H, yb_A, yt_h, yt_H, yt_A;
570 double rtau_hSM, rtau_h, rtau_H, rtau_A, rt_hSM, rt_h, rt_H, rt_A, rb_hSM, rb_h, rb_H, rb_A;
571 double part_hSM, part_h, part_H, part_A;
572
573 yt_h=cosa/sinb;
574 yt_H=sina/sinb;
575 yt_A=1.0/tanb;
576
577 if( modelflag == "type1" ) {
578 ymu_h=cosa/sinb;
579 ymu_H=sina/sinb;
580 ymu_A=-1.0/tanb;
581 yb_h=ymu_h;
582 yb_H=ymu_H;
583 yb_A=ymu_A;
584 }
585 else if( modelflag == "type2" ) {
586 ymu_h=-sina/cosb;
587 ymu_H=cosa/cosb;
588 ymu_A=tanb;
589 yb_h=ymu_h;
590 yb_H=ymu_H;
591 yb_A=ymu_A;
592 }
593 else if( modelflag == "typeX" ) {
594 ymu_h=-sina/cosb;
595 ymu_H=cosa/cosb;
596 ymu_A=tanb;
597 yb_h=yt_h;
598 yb_H=yt_H;
599 yb_A=-yt_A;
600 }
601 else if( modelflag == "typeY" ) {
602 ymu_h=cosa/sinb;
603 ymu_H=sina/sinb;
604 ymu_A=-1.0/tanb;
605 yb_h=-sina/cosb;
606 yb_H=cosa/cosb;
607 yb_A=tanb;
608 }
609 else {
610 throw std::runtime_error("modelflag can be only any of \"type1\", \"type2\", \"typeX\" or \"typeY\"");
611 }
612
613 if( mHl2<mMU*mMU || mHh2<mMU*mMU || mA2<mMU*mMU || mHp2<mMU*mMU)
614 {
615 throw std::runtime_error("The implemented two-loop approximation for g-2_\\mu only works for Higgs masses above m_mu^2.");
616 }
617 rtau_hSM=mTAU*mTAU/15647.5081;
618 rtau_h=mTAU*mTAU/mHl2;
619 rtau_H=mTAU*mTAU/mHh2;
620 rtau_A=mTAU*mTAU/mA2;
621 rt_hSM=mt*mt/15647.5081;
622 rt_h=mt*mt/mHl2;
623 rt_H=mt*mt/mHh2;
624 rt_A=mt*mt/mA2;
625 rb_hSM=mb*mb/15647.5081;
626 rb_h=mb*mb/mHl2;
627 rb_H=mb*mb/mHh2;
628 rb_A=mb*mb/mA2;
629
630 part_hSM=rtau_hSM*gscalar(rtau_hSM)+(4.0/3.0)*rt_hSM*gscalar(rt_hSM)+(1.0/3.0)*rb_hSM*gscalar(rb_hSM);
631 part_h=ymu_h*(ymu_h*rtau_h*gscalar(rtau_h)+(4.0/3.0)*yt_h*rt_h*gscalar(rt_h)+(1.0/3.0)*yb_h*rb_h*gscalar(rb_h));
632 part_H=ymu_H*(ymu_H*rtau_H*gscalar(rtau_H)+(4.0/3.0)*yt_H*rt_H*gscalar(rt_H)+(1.0/3.0)*yb_H*rb_H*gscalar(rb_H));
633 part_A=ymu_A*(ymu_A*rtau_A*gpseudoscalar(rtau_A)+(4.0/3.0)*yt_A*rt_A*gpseudoscalar(rt_A)+(1.0/3.0)*yb_A*rb_A*gpseudoscalar(rb_A));
634
635 gminus2muNLO=GF*mMU*mMU/(4.0*pi*pi*pi*sqrt(2.0)) * aem * (-part_hSM+part_h+part_H+part_A);
636
637 return(gminus2muNLO);
638}
double gscalar(double r)
double gpseudoscalar(double r)
@ BOTTOM
Definition: QCD.h:329
@ TAU
Definition: QCD.h:316
const double getAle() const
A get method to retrieve the fine-structure constant .

◆ setWCbsg()

double THDMMatching::setWCbsg ( int  i,
double  tan,
double  mt,
double  mhp,
double  mu,
orders  order 
)
Parameters
iint, flag for the caching
tan\( \tan(\beta) \)
mttop mass
mhpcharged Higgs mass
mumatching scale
order
Returns
return the value of the wilson coefficients for \( B \rightarrow X_{s} \gamma, l^{+} l^{-} \)

Definition at line 175 of file THDMMatching.cpp.

176{
177 if ( tanbsg == tan && mtbsg == mt && mhpbsg == mhp && mubsg == mu){
178 switch (order){
179 case NNLO:
180 return ( CWbsgArrayNNLO[i] );
181 case NLO:
182 return ( CWbsgArrayNLO[i] );
183 break;
184 case LO:
185 return ( CWbsgArrayLO[i] );
186 break;
187 default:
188 std::stringstream out;
189 out << order;
190 throw std::runtime_error("order" + out.str() + "not implemeted");
191 }
192 }
193
194 tanbsg = tan; mtbsg = mt; mhpbsg = mhp; mubsg = mu;
195
196 double x = mt*mt/mhp/mhp;
197
198 double x2 = x*x;
199 double x3 = x2*x;
200 double x4 = x3*x;
201 double x5 = x4*x;
202 double xm = 1. - x;
203 double xm2 = xm*xm;
204 double xm3 = xm2*xm;
205 double xm4 = xm3*xm;
206 double xm6 = xm4*xm2;
207 double xm8 = xm4*xm4;
208 double xo = 1. - 1./x;
209 double xo2 = xo*xo;
210 double xo4 = xo*xo2*xo;
211 double xo6 = xo4*xo2;
212 double xo8 = xo4*xo4;
213 double Lx = log(x);
214 double Lx2 = Lx*Lx;
215 double Lx3 = Lx2*Lx;
216 double tan2 = tan*tan;
217 double Li2 = gsl_sf_dilog(1.-1./x);
218
219 double lstmu = 2. * log(mu/mt);
220
221 double n70ct = - ( (7. - 5.*x - 8.*x2)/(36.*xm3) + (2.*x - 3.*x2)*Lx/(6.*xm4) ) * x/2.;
222 double n70fr = ( (3.*x - 5.*x2)/(6.*xm2) + (2.*x - 3.*x2)*Lx/(3.*xm3) ) / 2.;
223
224 double n80ct = - ( (2. + 5.*x - x2)/(12.*xm3) + (x*Lx)/(2.*xm4) ) * x/2.;
225 double n80fr = ( (3.*x - x2)/(2.*xm2) + (x*Lx)/xm3 ) / 2.;
226
227 double n41ct = (-16.*x + 29.*x2 - 7.*x3)/(36.*xm3) + (-2.*x + 3.*x2)*Lx/(6.*xm4);
228
229
230 double n71ct = (797.*x - 5436.*x2 + 7569.*x3 - 1202.*x4)/(486.*xm4) +
231 (36.*x2 - 74.*x3 + 16.*x4)*Li2/(9.*xm4) +
232 ((7.*x - 463.*x2 + 807.*x3 - 63.*x4)*Lx)/(81.*xm3*xm2);
233 double cd71ct = (-31.*x - 18.*x2 + 135.*x3 - 14.*x4)/(27.*xm4) + (-28.*x2 + 46.*x3 + 6.*x4)*Lx/(9.*xm3*xm2);
234 double n71fr = (28.*x - 52.*x2 + 8.*x3)/(3.*xm3) + (-48.*x + 112.*x2 - 32.*x3)*Li2/(9.*xm3) +
235 (66.*x - 128.*x2 + 14.*x3)*Lx/(9.*xm4);
236 double cd71fr = (42.*x - 94.*x2 + 16.*x3)/(9.*xm3) + (32.*x - 56.*x2 - 12.*x3)*Lx/(9.*xm4);
237
238 double n81ct = (1130.*x - 18153.*x2 + 7650.*x3 - 4451.*x4)/(1296.*xm4) +
239 (30.*x2 - 17.*x3 + 13.*x4)*Li2/(6.*xm4) +
240 (-2.*x - 2155.*x2 + 321.*x3 - 468.*x4)*Lx/(216.*xm3*xm2);
241 double cd81ct = (-38.*x - 261.*x2 + 18.*x3 - 7.*x4)/(36.*xm4) + (-31.*x2 - 17.*x3)*Lx/(6.*xm3*xm2);
242 double n81fr = (143.*x - 44.*x2 + 29.*x3)/(8.*xm3) + (-36.*x + 25.*x2 - 17.*x3)*Li2/(6.*xm3) +
243 (165.*x - 7.*x2 + 34.*x3)*Lx/(12.*xm4);
244 double cd81fr = (81.*x - 16.*x2 + 7.*x3)/(6.*xm3) + (19.*x + 17.*x2)*Lx/(3.*xm4);
245
246 double n32ct = (10.*x4 + 30.*x2 - 20.*x)/(27.*xm4) * Li2 +
247 (30.*x3 - 66.*x2 - 56.*x)/(81.*xm4) * Lx + (6.*x3 - 187.*x2 + 213.*x)/(-81.*xm3);
248 double cd32ct = (-30.*x2 + 20.*x)/(27.*xm4)*Lx + (-35.*x3 + 145.*x2 - 80.*x)/(-81.*xm3);
249
250 double n42ct = (515.*x4 - 906.*x3 + 99.*x2 + 182.*x)/(54.*xm4) * Li2 +
251 (1030.*x4 - 2763.*x3 - 15.*x2 + 980.*x)/(-108.*xm3*xm2)*Lx +
252 (-29467.*x4 + 68142.*x3 - 6717.*x2 - 18134.*x)/(1944.*xm4);
253 double cd42ct = (-375.*x3 - 95.*x2 + 182.*x)/(-54.*xm3*xm2)*Lx +
254 (133.*x4 - 108.*x3 + 4023.*x2 - 2320.*x)/(324.*xm4);
255
256 double cd72ct = -(x * (67930.*x4 - 470095.*x3 + 1358478.*x2 - 700243.*x + 54970.))/(-2187.*xm3*xm2) +
257 (x * (10422.*x4 - 84390.*x3 + 322801.*x2 - 146588.*x + 1435.))/(729.*xm6)*Lx +
258 (2.*x2 * (260.*x3 - 1515.*x2 + 3757.*x - 1446.))/(-27. * xm3*xm2) * Li2;
259 double ce72ct = (x * (-518.*x4 + 3665.*x3 - 17397.*x2 + 3767.*x + 1843.))/(-162.*xm3*xm2) +
260 (x2 * (-63.*x3 + 532.*x2 + 2089.*x - 1118.))/(27.*xm6)*Lx;
261 double cd72fr = -(x * (3790.*x3 - 22511.*x2 + 53614.*x - 21069.))/(81.*xm4) -
262 (2.*x * (-1266.*x3 + 7642.*x2 - 21467.*x + 8179.))/(-81.*xm3*xm2)*Lx +
263 (8.*x * (139.*x3 - 612.*x2 + 1103.*x - 342.))/(27.*xm4) * Li2;
264 double ce72fr = -(x * (284.*x3 - 1435.*x2 + 4304.*x - 1425.))/(27.*xm4) -
265 (2.*x * (63.*x3 - 397.*x2 - 970.*x + 440.))/(-27.*xm3*xm2)*Lx;
266
267 double cd82ct = -(x * (522347.*x4 - 2423255.*x3 + 2706021.*x2 - 5930609.*x + 148856))/(-11664.*xm3*xm2) +
268 (x * (51948.*x4 - 233781.*x3 + 48634.*x2 - 698693.*x + 2452.))/(1944.*xm6)*Lx +
269 (x2 * (481.*x3 - 1950.*x2 + 1523.*x - 2550.))/(-18.*xm3*xm2) * Li2;
270 double ce82ct = (x * (-259.*x4 + 1117.*x3 + 2925.*x2 + 28411.*x + 2366.))/(-216.*xm3*xm2) -
271 (x2 * (139.*x2 + 2938.*x + 2683.))/(36.*xm6)*Lx;
272 double cd82fr = -(x * (1463.*x3 - 5794.*x2 + 5543.*x - 15036.))/(27.*xm4) -
273 (x * (-1887.*x3 + 7115.*x2 + 2519.*x + 19901.))/(-54.*xm3*xm2)*Lx -
274 (x * (-629.*x3 + 2178.*x2 - 1729.*x + 2196.))/(18.*xm4) * Li2;
275 double ce82fr = -(x * (259.*x3 - 947.*x2 - 251.*x - 5973.))/(36.*xm4)-
276 (x * (139.*x2 + 2134.*x + 1183.))/(-18.*xm3*xm2)*Lx;
277
278 double n72ct = 0.;
279 if (mhp < 50.)
280 n72ct = -274.2/x5 - 72.13*Lx/x5 + 24.41/x4 - 168.3*Lx/x4 + 79.15/x3 -
281 103.8*Lx/x3 + 47.09/x2 - 38.12*Lx/x2 + 15.35/x - 8.753*Lx/x + 3.970;
282 else if (mhp < mt)
283 n72ct = 1.283 + 0.7158 * xo + 0.4119 * xo2 + 0.2629 * xo*xo2 + 0.1825 * xo4 +
284 0.1347 * xo*xo4 + 0.1040 * xo6 + 0.0831 * xo*xo6 + 0.06804 * xo8 +
285 0.05688 * xo*xo8 + 0.04833 * xo2*xo8 + 0.04163 * xo*xo2*xo8 + 0.03625 * xo4*xo8 +
286 0.03188 * xo*xo4*xo8 + 0.02827 * xo6*xo8 + 0.02525 * xo*xo6*xo8 + 0.02269 * xo8*xo8;
287 else if (mhp < 520.)
288 n72ct = 1.283 - 0.7158 * xm - 0.3039 * xm2 - 0.1549 * xm3 - 0.08625 * xm4 -
289 0.05020 * xm3*xm2 - 0.02970 * xm6 - 0.01740 * xm3*xm4 - 0.009752 * xm8 -
290 0.004877 * xm3*xm6 - 0.001721 * xm2*xm8 + 0.0003378 * xm3*xm8 + 0.001679 * xm4*xm8 +
291 0.002542 * xm*xm4*xm8 + 0.003083 * xm6*xm8 + 0.003404 * xm*xm6*xm8 + 0.003574 * xm8*xm8;
292 else n72ct = -823.0*x5 + 42.30*x5*Lx3 - 412.4*x5*Lx2 - 3362*x5*Lx -
293 1492*x4 - 23.26*x4*Lx3 - 541.4*x4*Lx2 - 2540*x4*Lx -
294 1158*x3 - 34.50*x3*Lx3 - 348.2*x3*Lx2 - 1292*x3*Lx -
295 480.9*x2 - 20.73*x2*Lx3 - 112.4*x2*Lx2 - 396.1*x2*Lx -
296 8.278*x + 0.9225*x*Lx2 + 4.317*x*Lx;
297
298 double n72fr = 0.;
299 if (mhp < 50.)
300 n72fr = -( 194.3/x5 + 101.1*Lx/x5 - 24.97/x4 + 168.4*Lx/x4 - 78.90/x3 +
301 106.2*Lx/x3 - 49.32/x2 + 38.43*Lx/x2 - 12.91/x + 9.757*Lx/x + 8.088 );
302 else if (mhp < mt)
303 n72fr = -( 12.82 - 1.663 * xo - 0.8852 * xo2 - 0.4827 * xo*xo2 - 0.2976 * xo4 -
304 0.2021 * xo*xo4 - 0.1470 * xo6 - 0.1125 * xo*xo6 - 0.08931 * xo8 -
305 0.07291 * xo*xo8 - 0.06083 * xo2*xo8 - 0.05164 * xo*xo2*xo8 - 0.04446 * xo4*xo8 -
306 0.03873 * xo*xo4*xo8 - 0.03407 * xo6*xo8 - 0.03023 * xo*xo6*xo8 - 0.02702 * xo8*xo8 );
307 else if (mhp < 400.)
308 n72fr = -( 12.82 + 1.663 * xm + 0.7780 * xm2 + 0.3755 * xm3 + 0.1581 * xm4 +
309 0.03021 * xm3*xm2 - 0.04868 * xm6 - 0.09864 * xm3*xm4 - 0.1306 * xm8 -
310 0.1510 * xm3*xm6 - 0.1637 * xm2*xm8 - 0.1712 * xm3*xm8 - 0.1751 * xm4*xm8 -
311 0.1766 * xm*xm4*xm8 - 0.1763 * xm6*xm8 - 0.1748 * xm*xm6*xm8 - 0.1724 * xm8*xm8 );
312 else n72fr = -( 2828 * x5 - 66.63 * x5*Lx3 + 469.4 * x5*Lx2 + 1986 * x5*Lx +
313 1480 * x4 + 36.08 * x4*Lx3 + 323.2 * x4*Lx2 + 169.9 * x4*Lx +
314 166.7 * x3 + 19.73 * x3*Lx3 - 46.61 * x3*Lx2 - 826.2 * x3*Lx -
315 524.1 * x2 - 8.889 * x2*Lx3 - 195.7 * x2*Lx2 - 870.3 * x2*Lx -
316 572.2 * x - 20.94 * x*Lx3 - 123.5 * x*Lx2 - 453.5 * x*Lx );
317
318 double n82ct = 0.;
319 if (mhp < 50.)
320 n82ct = 826.2/x5 - 300.7*Lx/x5 + 96.35/x4 + 91.89*Lx/x4 - 66.39/x3 +
321 78.58*Lx/x3 - 39.76/x2 + 20.02*Lx/x2 - 5.214/x + 2.278;
322 else if (mhp < mt)
323 n82ct = 1.188 + 0.4078 * xo + 0.2002 * xo2 + 0.1190 * xo*xo2 + 0.07861 * xo4 +
324 0.05531 * xo*xo4 + 0.04061 * xo6 + 0.03075 * xo*xo6 + 0.02386 * xo8 +
325 0.01888 * xo*xo8 + 0.01520 * xo2*xo8 + 0.01241 * xo*xo2*xo8 + 0.01026 * xo4*xo8 +
326 0.008575 * xo*xo4*xo8 + 0.007238 * xo6*xo8 + 0.006164 * xo*xo6*xo8 + 0.005290 * xo8*xo8;
327 else if (mhp < 600.)
328 n82ct = 1.188 - 0.4078 * xm - 0.2076 * xm2 - 0.1265 * xm3 - 0.08570 * xm4 -
329 0.06204 * xm3*xm2 - 0.04689 * xm6 - 0.03652 * xm3*xm4 - 0.02907 * xm8 -
330 0.02354 * xm3*xm6 - 0.01933 * xm2*xm8 - 0.01605 * xm3*xm8 - 0.01345 * xm4*xm8 -
331 0.01137 * xm*xm4*xm8 - 0.009678 * xm6*xm8 - 0.008293 * xm*xm6*xm8 - 0.007148 * xm8*xm8;
332 else n82ct = -19606 * x5 - 226.7 * x5*Lx3 - 5251 * x5*Lx2 - 26090 * x5*Lx -
333 9016 * x4 - 143.4 * x4*Lx3 - 2244 * x4*Lx2 - 10102 * x4*Lx -
334 3357 * x3 - 66.32 * x3*Lx3 - 779.6 * x3*Lx2 - 3077 * x3*Lx -
335 805.5 * x2 - 22.98 * x2*Lx3 - 169.1 * x2*Lx2 - 602.7 * x2*Lx +
336 0.7437 * x + 0.6908 * x*Lx2 + 3.238 * x*Lx;
337
338 double n82fr = 0.;
339 if (mhp < 50.)
340 n82fr = -( -1003/x5 + 476.9*Lx/x5 - 205.7/x4 - 71.62*Lx/x4 + 62.26/x3 -
341 110.7*Lx/x3 + 63.74/x2 - 35.42*Lx/x2 + 10.89/x - 3.174 );
342 else if (mhp < mt)
343 n82fr = -( -0.6110 - 1.095 * xo - 0.4463 * xo2 - 0.2568 * xo*xo2 - 0.1698 * xo4 -
344 0.1197 * xo*xo4 - 0.08761 * xo6 - 0.06595 * xo*xo6 - 0.05079 * xo8 -
345 0.03987 * xo*xo8 - 0.03182 * xo2*xo8 - 0.02577 * xo*xo2*xo8 - 0.02114 * xo4*xo8 -
346 0.01754 * xo*xo4*xo8 - 0.01471 * xo6*xo8 - 0.01244 * xo*xo6*xo8 - 0.01062 * xo8*xo8 );
347 else if (mhp < 520.)
348 n82fr = -( -0.6110 + 1.095 * xm + 0.6492 * xm2 + 0.4596 * xm3 + 0.3569 * xm4 +
349 0.2910 * xm3*xm2 + 0.2438 * xm6 + 0.2075 * xm3*xm4 + 0.1785 * xm8 +
350 0.1546 * xm3*xm6 + 0.1347 * xm2*xm8 + 0.1177 * xm3*xm8 + 0.1032 * xm4*xm8 +
351 0.09073 * xm*xm4*xm8 + 0.07987 * xm6*xm8 + 0.07040 * xm*xm6*xm8 + 0.06210 * xm8*xm8 );
352 else n82fr = -( -15961 * x5 + 1003 * x5*Lx3 - 2627 * x5*Lx2 - 29962 * x5*Lx -
353 11683 * x4 + 54.66 * x4*Lx3 - 2777 * x4*Lx2 - 17770 * x4*Lx -
354 6481 * x3 - 40.68 * x3*Lx3 - 1439 * x3*Lx2 - 7906 * x3*Lx -
355 2943 * x2 - 31.83 * x2*Lx3 - 612.6 * x2*Lx2 - 2770 * x2*Lx -
356 929.8 * x - 19.80 * x*Lx3 - 174.7 * x*Lx2 - 658.4 * x*Lx );
357
358
359 switch (order){
360 case NNLO:
361 CWbsgArrayNNLO[2] = ( n32ct + cd32ct * lstmu ) / tan2;
362 CWbsgArrayNNLO[3] = ( n42ct + cd42ct * lstmu ) / tan2;
363 CWbsgArrayNNLO[4] = 2./15. * n41ct / tan2 - CWbsgArrayNNLO[2] / 10.;
364 CWbsgArrayNNLO[5] = 1./4. * n41ct / tan2 - CWbsgArrayNNLO[2] * 3./16.;
365 CWbsgArrayNNLO[6] = ( n72ct + cd72ct * lstmu + ce72ct * lstmu * lstmu)/tan2 +
366 n72fr + cd72fr * lstmu + ce72fr * lstmu * lstmu
367 - 1./3.*CWbsgArrayNNLO[2] - 4./9.*CWbsgArrayNNLO[3] - 20./3.*CWbsgArrayNNLO[4] - 80./9.*CWbsgArrayNNLO[5];
368 CWbsgArrayNNLO[7] = ( n82ct + cd82ct * lstmu + ce82ct * lstmu * lstmu)/tan2 +
369 n82fr + cd82fr * lstmu + ce82fr * lstmu * lstmu
370 + CWbsgArrayNNLO[2] - 1./6.*CWbsgArrayNNLO[3] - 20.*CWbsgArrayNNLO[4] - 10./3.*CWbsgArrayNNLO[5];
371 case NLO:
372 CWbsgArrayNLO[3] = n41ct / tan2;
373 CWbsgArrayNLO[6] = ( n71ct + cd71ct * lstmu ) / tan2 + n71fr + cd71fr * lstmu - 4./9.*CWbsgArrayNLO[3];
374 CWbsgArrayNLO[7] = ( n81ct + cd81ct * lstmu ) / tan2 + n81fr + cd81fr * lstmu - 1./6.*CWbsgArrayNLO[3];
375 case LO:
376 CWbsgArrayLO[6] = n70ct /tan2 + n70fr ;
377 CWbsgArrayLO[7] = n80ct /tan2 + n80fr ;
378 break;
379 default:
380 std::stringstream out;
381 out << order;
382 throw std::runtime_error("order" + out.str() + "not implemeted");
383 }
384
385 /*std::cout << "CWbsgArrayLO[6] = " << CWbsgArrayLO[6] << std::endl;
386 std::cout << "CWbsgArrayLO[7] = " << CWbsgArrayLO[7] << std::endl << std::endl;
387 std::cout << "CWbsgArrayNLO[3] = " << CWbsgArrayNLO[3] << std::endl;
388 std::cout << "CWbsgArrayNLO[6] = " << CWbsgArrayNLO[6] << std::endl;
389 std::cout << "CWbsgArrayNLO[7] = " << CWbsgArrayNLO[7] << std::endl << std::endl;
390 std::cout << "CWbsgArrayNNLO[2] = " << CWbsgArrayNNLO[2] << std::endl;
391 std::cout << "CWbsgArrayNNLO[3] = " << CWbsgArrayNNLO[3] << std::endl;
392 std::cout << "CWbsgArrayNNLO[4] = " << CWbsgArrayNNLO[4] << std::endl;
393 std::cout << "CWbsgArrayNNLO[5] = " << CWbsgArrayNNLO[5] << std::endl;
394 std::cout << "CWbsgArrayNNLO[6] = " << CWbsgArrayNNLO[6] << std::endl;
395 std::cout << "CWbsgArrayNNLO[7] = " << CWbsgArrayNNLO[7] << std::endl << std::endl;*/
396
397
398 switch (order){
399 case NNLO:
400 return ( CWbsgArrayNNLO[i] );
401 case NLO:
402 return ( CWbsgArrayNLO[i] );
403 break;
404 case LO:
405 return ( CWbsgArrayLO[i] );
406 break;
407 default:
408 std::stringstream out;
409 out << order;
410 throw std::runtime_error("order" + out.str() + "not implemeted");
411 }
412}
double tanbsg
Definition: THDMMatching.h:92
double mubsg
Definition: THDMMatching.h:92
double mhpbsg
Definition: THDMMatching.h:92
double mtbsg
Definition: THDMMatching.h:92
double CWbsgArrayLO[8]
Definition: THDMMatching.h:91
double CWbsgArrayNNLO[8]
Definition: THDMMatching.h:91
double CWbsgArrayNLO[8]
Definition: THDMMatching.h:91
cd Li2(cd x)
Definition: hpl.h:1011

Member Data Documentation

◆ CWbsgArrayLO

double THDMMatching::CWbsgArrayLO[8]
private

Definition at line 91 of file THDMMatching.h.

◆ CWbsgArrayNLO

double THDMMatching::CWbsgArrayNLO[8]
private

Definition at line 91 of file THDMMatching.h.

◆ CWbsgArrayNNLO

double THDMMatching::CWbsgArrayNNLO[8]
private

Definition at line 91 of file THDMMatching.h.

◆ mcbsg

WilsonCoefficient THDMMatching::mcbsg
private

Definition at line 89 of file THDMMatching.h.

◆ mcbtaunu

WilsonCoefficient THDMMatching::mcbtaunu
private

Definition at line 89 of file THDMMatching.h.

◆ mcdbs2

WilsonCoefficient THDMMatching::mcdbs2
private

Definition at line 89 of file THDMMatching.h.

◆ mcgminus2mu

WilsonCoefficient THDMMatching::mcgminus2mu
private

Definition at line 89 of file THDMMatching.h.

◆ mcprimebsg

WilsonCoefficient THDMMatching::mcprimebsg
private

Definition at line 89 of file THDMMatching.h.

◆ mhpbsg

double THDMMatching::mhpbsg
private

Definition at line 92 of file THDMMatching.h.

◆ mtbsg

double THDMMatching::mtbsg
private

Definition at line 92 of file THDMMatching.h.

◆ mubsg

double THDMMatching::mubsg
private

Definition at line 92 of file THDMMatching.h.

◆ myCKM

gslpp::matrix<gslpp::complex> THDMMatching::myCKM
private

Definition at line 88 of file THDMMatching.h.

◆ myTHDM

const THDM& THDMMatching::myTHDM
private

Definition at line 87 of file THDMMatching.h.

◆ tanbsg

double THDMMatching::tanbsg
private

Definition at line 92 of file THDMMatching.h.


The documentation for this class was generated from the following files: