Commit f1d1d1dd authored by Frank Siegert's avatar Frank Siegert
Browse files

Merge r19290, r19340, r19343 and r19761 from trunk: Consistency in...

Merge r19290, r19340, r19343 and r19761 from trunk: Consistency in EW_SCHEME's, no changes for the default.
parent c8764357
......@@ -46,7 +46,6 @@ Interaction_Model_SM_Phantom_U1(MODEL::Model_Base * _model,
costW = Kabbala(std::string("\\cos\\theta_W"),
sqrt(1.-ScalarConstant(std::string("sin2_thetaW"))));
vev = Kabbala(string("v_{Higgs_SM}"),ScalarConstant(std::string("vev")));
GF = Kabbala(string("GF"),ScalarConstant(string("GF")));
}else{
g2 = Kabbala(string("g_1/\\sin\\theta_W"),
g1.Value()/sqrt(ComplexConstant(std::string("csin2_thetaW"))));
......@@ -55,7 +54,6 @@ Interaction_Model_SM_Phantom_U1(MODEL::Model_Base * _model,
costW = Kabbala(std::string("\\cos\\theta_W"),
sqrt(1.-ComplexConstant(std::string("csin2_thetaW"))));
vev = Kabbala(string("v_{Higgs_SM}"),ComplexConstant(std::string("cvev")));
GF = Kabbala(string("GF"),ComplexConstant(string("cGF")));
}
PL = Kabbala(string("P_L"),1.);
PR = Kabbala(string("P_R"),1.);
......
......@@ -11,7 +11,7 @@ namespace MODEL {
Interaction_Model_EW * p_moew;
Interaction_Model_QCD * p_moqcd;
ATOOLS::Kabbala g1,g2,sintW,costW,PL,PR,M_I,root2,vev;
ATOOLS::Kabbala GF,tanb,ghpp,gHpp,ghgg,gHgg;
ATOOLS::Kabbala tanb,ghpp,gHpp,ghgg,gHgg;
public:
Interaction_Model_SM_Phantom_U1(MODEL::Model_Base *,std::string,std::string);
void c_FFV(std::vector<Single_Vertex>&,int &);
......
......@@ -189,9 +189,8 @@ void FeynRules_Spectrum::SetExternalParameters(const PDF::ISR_Handler_Map& isr)
p_model->GetScalarConstants()->insert(make_pair(string("aS"),as_cpl));
//QED coupling and EW parameters
p_model->GetScalarConstants()->insert(make_pair(string("alpha_QED(0)"),1./137.03599976));
double aQEDMZ = 1./p_model->ScalarConstant(string("aEWM1"));
aqed = new Running_AlphaQED(aQEDMZ,sqr(MZ));
aqed->SetDefault(aQEDMZ);
aqed = new Running_AlphaQED(1./137.03599976);
aqed->SetDefault(1./p_model->ScalarConstant(string("aEWM1")));
p_model->GetScalarFunctions()->insert(make_pair(string("alpha_QED"),aqed));
double sin2TW = 1.-sqr(Flavour(kf_Wplus).Mass()/Flavour(kf_Z).Mass());
p_model->GetScalarConstants()->insert(make_pair(std::string("sin2_thetaW"),sin2TW));
......
......@@ -132,7 +132,7 @@ void LesHouches_Interface::SetSMInput(const PDF::ISR_Handler_Map& isr) {
MW = sqrt((sqr(MZ)/2.)+sqrt(pow(MZ,4.)/4.-sqr(MZ)*(alphaQED*M_PI)/(sqrt(2.)*GF)));
sin2TW = 1.-sqr(MW/MZ);
aqed = new Running_AlphaQED(1./137.0359895,sqr(MZ));
aqed = new Running_AlphaQED(1./137.0359895);
aqed->SetDefault(alphaQED);
p_model->GetScalarFunctions()->insert(std::make_pair(std::string("alpha_QED"),aqed));
......
......@@ -19,23 +19,12 @@ namespace MODEL {
}
Running_AlphaQED::Running_AlphaQED(const double _alpha0,const double _MZ2,const double _split_scale) :
m_alpha0(_alpha0),m_MZ2(_MZ2),m_split_scale(_split_scale)
Running_AlphaQED::Running_AlphaQED(const double _alpha0) :
m_alpha0(_alpha0)
{
m_type = std::string("Running Coupling");
m_name = "Alpha_QED";
m_split_scale = sqr(m_split_scale);
m_alpha_MZ = Aqed(m_MZ2);
m_defval = Aqed(m_MZ2);
}
// possibly running coupling (if switched on)
double Running_AlphaQED::Aqed(double t){
return operator()(t);
if (t>m_split_scale) return m_defval;
return m_alpha0;
m_defval = _alpha0;
}
......
......@@ -7,19 +7,15 @@
namespace MODEL {
class Running_AlphaQED : public ATOOLS::Function_Base {
const static double m_A[4],m_B[4],m_C[4];
double m_alpha0,m_alpha_MZ,m_alpha_eff;
double m_MZ2,m_split_scale;
double m_alpha0;
double PiGamma(const ATOOLS::Flavour &, double);
public:
Running_AlphaQED(const double,const double,const double=0.);
Running_AlphaQED(const double);
double operator()(double);
double AqedThomson() { return m_alpha0; }
double AqedMZ() { return m_alpha_MZ; }
double AqedFixed() { return m_defval; }
double Aqed(double);
};
extern Running_AlphaQED * aqed;
......@@ -54,27 +50,6 @@ namespace MODEL {
\f$\alpha_{QED}\f$ in the Thomson limit,
\f[\alpha^{(0)}_{QED} = 1/137.03599976\,.\f]
*/
/*!
\var double Running_AlphaQED::m_alpha_MZ
\f$\alpha_{QED}\f$ at the Z-pole.
*/
/*!
\var double Running_AlphaQED::m_alpha_eff
\todo Not used at the moment.
*/
/*!
\var double Running_AlphaQED::m_MZ2
The square of the Z-mass to calculate \f$\alpha_{QED}\f$ at the Z-pole.
*/
/*!
\var double Running_AlphaQED::m_ecms2
The square of the c.m. energy as given by the beams.
\todo Not used at the moment.
*/
/*!
\var double Running_AlphaQED::m_split_scale
\todo Not used at the moment.
*/
/*!
\fn double Running_AlphaQED::PiGamma(const ATOOLS::Flavour &, double)
With the mass of the particle and the scale the vacuum polarization is given by
......@@ -88,8 +63,8 @@ namespace MODEL {
\end{array} \right.\f]
*/
/*!
\fn Running_AlphaQED::Running_AlphaQED(const double,const double,const double=0.);
Initialises \f$\alpha_{QED}\f$, mainly the scales and default values.
\fn Running_AlphaQED::Running_AlphaQED(const double);
Initialises \f$\alpha_{QED}\f$ with the value at scale t=0
*/
/*!
\fn double Running_AlphaQED::operator()(double);
......@@ -107,17 +82,9 @@ namespace MODEL {
\fn double Running_AlphaQED::AqedThomson()
Returns \f$\alpha_{QED}\f$ in the Thomson limit.
*/
/*!
\fn double Running_AlphaQED::AqedMZ()
Returns \f$\alpha_{QED}\f$ at the Z-pole.
*/
/*!
\fn double Running_AlphaQED::AqedFixed()
Returns the default value for \f$\alpha_{QED}\f$.
*/
/*!
\fn double Running_AlphaQED::Aqed(double);
Returns the operator, Running_AlphaQED::operator()(double).
*/
}
#endif
......@@ -386,8 +386,8 @@ void Standard_Model::FillSpectrum(const PDF::ISR_Handler_Map& isr)
}
void Standard_Model::FixEWParameters() {
double MW,MZ,MH,alphaQED,sin2thetaW,cos2thetaW,vev,lambdaH,GF=1.16639e-5;
Complex csin2thetaW, ccos2thetaW, cvev,clambdaH, calphaQED, cGF;
double MW,MZ,MH,GW,GZ,GH,alphaQED0,sin2thetaW,cos2thetaW,vev,lambdaH,GF;
Complex csin2thetaW, ccos2thetaW, cvev,clambdaH, I(0.0, 1.0);
std::string widthscheme = p_dataread->GetValue<std::string>("WIDTH_SCHEME","Fixed");
p_numbers->insert(std::make_pair(std::string("WidthScheme"), widthscheme=="CMS"));
int ewscheme = p_dataread->GetValue<int>("EW_SCHEME",0);
......@@ -396,95 +396,95 @@ void Standard_Model::FixEWParameters() {
switch (ewscheme) {
case 0:
// all SM parameters given explicitly
alphaQED = 1./p_dataread->GetValue<double>("1/ALPHAQED(0)",137.03599976);
MW = Flavour(kf_Wplus).Mass();
MZ = Flavour(kf_Z).Mass();
MH = Flavour(kf_h0).Mass();
GW = Flavour(kf_Wplus).Width();
GZ = Flavour(kf_Z).Width();
GH = Flavour(kf_h0).Width();
alphaQED0 = 1./p_dataread->GetValue<double>("1/ALPHAQED(0)",137.03599976);
aqed = new Running_AlphaQED(alphaQED0);
aqed->SetDefault(1./p_dataread->GetValue<double>("1/ALPHAQED(default)",
1./(*aqed)(sqr(MZ))));
sin2thetaW = p_dataread->GetValue<double>("SIN2THETAW",0.23);
cos2thetaW = 1.-sin2thetaW;
vev = p_dataread->GetValue<double>("VEV",246.);
lambdaH = p_dataread->GetValue<double>("LAMBDA",0.47591);
aqed = new Running_AlphaQED(alphaQED, 0.0);
aqed->SetDefault(1./p_dataread->GetValue<double>("1/ALPHAQED(default)",
1./(*aqed)(sqr(MZ))));
GF = sqrt(2.)*(*aqed)(sqr(Flavour(kf_mu).Mass(true)))*M_PI/
(2.*sin2thetaW*sqr(MW));
GF = p_dataread->GetValue<double>("GF",1.16639e-5);
if (widthscheme=="CMS") {
THROW(not_implemented, "CMS not implemented for EW_SCHEME=0");
}
break;
case 1:
// SM parameters given by alphaQED, M_W, M_Z, M_H
alphaQED = 1./p_dataread->GetValue<double>("1/ALPHAQED(0)",137.03599976);
// SM parameters given by alphaQED0, M_W, M_Z, M_H
MW = Flavour(kf_Wplus).Mass();
MZ = Flavour(kf_Z).Mass();
MH = Flavour(kf_h0).Mass();
GW = Flavour(kf_Wplus).Width();
GZ = Flavour(kf_Z).Width();
GH = Flavour(kf_h0).Width();
alphaQED0 = 1./p_dataread->GetValue<double>("1/ALPHAQED(0)",137.03599976);
aqed = new Running_AlphaQED(alphaQED0);
aqed->SetDefault(1./p_dataread->GetValue<double>("1/ALPHAQED(default)",
1./(*aqed)(sqr(MZ))));
cos2thetaW = sqr(MW/MZ);
sin2thetaW = 1.-cos2thetaW;
vev = 2.*MW*sqrt(sin2thetaW/(4.*M_PI*alphaQED));
vev = 2.*MW*sqrt(sin2thetaW/(4.*M_PI*aqed->AqedFixed()));
lambdaH = 2.*sqr(MH/vev);
aqed = new Running_AlphaQED(alphaQED, 0.0);
aqed->SetDefault(1./p_dataread->GetValue<double>("1/ALPHAQED(default)",
1./(*aqed)(sqr(MZ))));
GF = sqrt(2.)*(*aqed)(sqr(Flavour(kf_mu).Mass(true)))*M_PI/
(2.*sin2thetaW*sqr(MW));
GF = p_dataread->GetValue<double>("GF",1.16639e-5);
if (widthscheme=="CMS") {
ccos2thetaW = (MW*(MW-Complex(0.0,1.0)*Flavour(kf_Wplus).Width()))/
(MZ*(MZ-Complex(0.0,1.0)*Flavour(kf_Z).Width()));
Complex muW2(MW*(MW-I*GW)), muZ2(MZ*(MZ-I*GZ)), muH2(MH*(MH-I*GH));
ccos2thetaW = muW2/muZ2;
csin2thetaW = 1.-ccos2thetaW;
cvev = 2.*sqrt((MW*(MW-Complex(0.0,1.0)*Flavour(kf_Wplus).Width()))
*csin2thetaW/(4.*M_PI*alphaQED));
clambdaH = 2.*(MH*(MH-Complex(0.0,1.0)*Flavour(kf_h0).Width()))/(cvev*cvev);
cGF = sqrt(2.)*(*aqed)(sqr(Flavour(kf_mu).Mass(true)))*M_PI/
(2.*csin2thetaW*(sqr(MW)-Complex(0.,1.)*MW*Flavour(kf_Wplus).Width()));
cvev = 2.*sqrt(muW2*csin2thetaW/(4.*M_PI*aqed->AqedFixed()));
clambdaH = 2.*muH2/(cvev*cvev);
}
break;
case 2:
// SM parameters given by alphaQED, sinthetaW, v, M_H
alphaQED = 1./p_dataread->GetValue<double>("1/ALPHAQED(0)",137.03599976);
// SM parameters given by alphaQED0, sinthetaW, v, M_H
alphaQED0 = 1./p_dataread->GetValue<double>("1/ALPHAQED(0)",137.03599976);
vev = p_dataread->GetValue<double>("VEV",246.);
sin2thetaW = p_dataread->GetValue<double>("SIN2THETAW",0.23);
cos2thetaW = 1.-sin2thetaW;
MW = vev/2.*sqrt((4.*M_PI*alphaQED)/sin2thetaW);
MZ = vev/2.*sqrt((4.*M_PI*alphaQED)*(1/sin2thetaW+1/cos2thetaW));
MH = p_dataread->GetValue<double>("MH",120.);
MW = vev/2.*sqrt((4.*M_PI*aqed->AqedFixed())/sin2thetaW);
MZ = vev/2.*sqrt((4.*M_PI*aqed->AqedFixed())*(1/sin2thetaW+1/cos2thetaW));
MH = Flavour(kf_h0).Mass();
GW = Flavour(kf_Wplus).Width();
GZ = Flavour(kf_Z).Width();
GH = Flavour(kf_h0).Width();
lambdaH = 2.*sqr(MH/vev);
aqed = new Running_AlphaQED(alphaQED, 0.0);
aqed = new Running_AlphaQED(alphaQED0);
aqed->SetDefault(1./p_dataread->GetValue<double>("1/ALPHAQED(default)",
1./(*aqed)(sqr(MZ))));
GF = sqrt(2.)*(*aqed)(sqr(Flavour(kf_mu).Mass(true)))*M_PI/
(2.*sin2thetaW*sqr(MW));
GF = p_dataread->GetValue<double>("GF",1.16639e-5);
if (widthscheme=="CMS") {
THROW(not_implemented, "CMS not implemented for EW_SCHEME=2");
}
break;
case 3:
//gmu scheme
GF = p_dataread->GetValue<double>("GF",1.16639e-5);
MW = Flavour(kf_Wplus).Mass();
MZ = Flavour(kf_Z).Mass();
GF = p_dataread->GetValue<double>("GF",1.16639e-5);
MH = Flavour(kf_h0).Mass();
GW = Flavour(kf_Wplus).Width();
GZ = Flavour(kf_Z).Width();
GH = Flavour(kf_h0).Width();
sin2thetaW = 1.-sqr(MW/MZ);
cos2thetaW = 1.-sin2thetaW;
alphaQED = sqrt(2.)*GF*sqr(MW)*sin2thetaW/M_PI;
aqed = new Running_AlphaQED(alphaQED, 0.0);
aqed->SetDefault(1./p_dataread->GetValue<double>("1/ALPHAQED(default)",
1./(*aqed)(sqr(MZ))));
MH = Flavour(kf_h0).Mass();
vev = 1./(pow(2.,0.25)*sqrt(GF));
lambdaH = 2.*sqr(MH/vev);
alphaQED0 = 1./p_dataread->GetValue<double>("1/ALPHAQED(0)",137.03599976);
aqed = new Running_AlphaQED(alphaQED0);
aqed->SetDefault(sqrt(2.)*GF/M_PI*sqr(MW)*sin2thetaW);
if (widthscheme=="CMS") {
THROW(not_implemented, "CMS not implemented for EW_SCHEME=3");
/// TODO: need to implement complex alpha for Gmu scheme ???
/// Supposedly ok to use real alpha
/*
p_numbers->insert(std::make_pair(std::string("WidthScheme"), 2));
ccos2thetaW = (MW*MW-Complex(0.0,1.0)*Flavour(kf_Wplus).Width())/(MZ*MZ-Complex(0.0,1.0)*Flavour(kf_Z).Width());
Complex muW2(MW*(MW-I*GW)), muZ2(MZ*(MZ-I*GZ)), muH2(MH*(MH-I*GH));
ccos2thetaW = muW2/muZ2;
csin2thetaW = 1.-ccos2thetaW;
calphaQED = sqrt(2.)*GF*(sqr(MW)-Complex(0.0,1.0)*Flavour(kf_Wplus).Width())*csin2thetaW/M_PI;
aqed->SetDefault(Complex(sqrt(2.)*GF/M_PI*muW2*csin2thetaW).real());
cvev = 1./(pow(2.,0.25)*sqrt(GF));
clambdaH = 2.*(MH*MH-Complex(0.0,1.0)*Flavour(kf_h0).Width())/(cvev*cvev);
clambdaH = 2.*muH2/(cvev*cvev);
break;
*/
}
break;
default:
......@@ -492,8 +492,12 @@ void Standard_Model::FixEWParameters() {
break;
}
Flavour(kf_Wplus).SetMass(MW);
Flavour(kf_Z).SetMass(MZ);
Flavour(kf_h0).SetMass(MH);
p_functions->insert(std::make_pair(std::string("alpha_QED"),aqed));
p_constants->insert(std::make_pair(std::string("alpha_QED(0)"),alphaQED));
p_constants->insert(std::make_pair(std::string("alpha_QED(0)"),alphaQED0));
p_constants->insert(std::make_pair(std::string("sin2_thetaW"), sin2thetaW));
p_constants->insert(std::make_pair(std::string("cos2_thetaW"), cos2thetaW));
p_constants->insert(std::make_pair(std::string("vev"), vev));
......@@ -510,7 +514,6 @@ void Standard_Model::FixEWParameters() {
p_complexconstants->insert(std::make_pair(std::string("csin2_thetaW"), csin2thetaW));
p_complexconstants->insert(std::make_pair(std::string("cvev"), cvev));
p_complexconstants->insert(std::make_pair(std::string("clambdaH"), clambdaH));
p_complexconstants->insert(std::make_pair(std::string("cGF"), cGF));
}
}
......
......@@ -26,28 +26,32 @@ parameter, whose default is @option{0}. The following options are provided:
all EW parameters are explicitly given.
Here the W, Z and Higgs masses are taken as inputs, and
the parameters @code{1/ALPHAQED(0)}, @code{SIN2THETAW}, @code{VEV}
the parameters @code{1/ALPHAQED(default)}, @code{SIN2THETAW}, @code{VEV}
and @code{LAMBDA} have to be specified as well. While
@code{1/ALPHAQED(0)} corresponds to the fine structure constant
at zero momentum transfer, the parameters @code{SIN2THETAW},
@code{1/ALPHAQED(default)} corresponds to the fine structure constant,
(which by default is not running), the parameters @code{SIN2THETAW},
@code{VEV}, and @code{LAMBDA} thereby specify the weak mixing angle,
the Higgs field vacuum expectation value, and the Higgs quartic
coupling respectively.
coupling respectively.
@item Case @code{1}:
all EW parameters are calculated out of the W, Z and Higgs masses and
@code{1/ALPHAQED(0)}.
@code{1/ALPHAQED(default)} using tree-level relations.
@item Case @code{2}:
all EW parameters are calculated out of @code{1/ALPHAQED(0)},
@code{SIN2THETAW}, @code{VEV} and the Higgs mass.
all EW parameters are calculated out of @code{1/ALPHAQED(default)},
@code{SIN2THETAW}, @code{VEV} and the Higgs mass using tree-level relations.
@item Case @code{3}:
this choice corresponds to the G_mu-scheme. The EW parameters are
calculated out of the weak gauge boson masses M_W, M_Z, the Higgs
boson mass M_H and the Fermi constant @code{GF}.
boson mass M_H and the Fermi constant @code{GF} using tree-level relations.
@end itemize
The electro-weak coupling is by default not running. If its running has been
enabled (cf. @ref{COUPLINGS}), one can specify its value at zero momentum
transfer as input value by @code{1/ALPHAQED(0)}.
To account for quark mixing the CKM matrix elements have to be assigned.
For this purpose the Wolfenstein parametrization @mycite{Wolfenstein1983yz} is
employed. The order of expansion in the lambda parameter is defined
......@@ -67,11 +71,14 @@ and @option{0.227}, respectively.
The remaining parameter to fully specify the Standard Model
is the strong coupling constant at the Z-pole, given through
@code{ALPHAS(MZ)}. Its default value is @option{0.118}. For
the two fine structure constants there is the option to provide
fixed values that can be used in calculations of matrix elements
in case running of the couplings is disabled. The two keywords
are @code{1/ALPHAQED(default)} and @code{ALPHAS(default)}. When using
@code{ALPHAS(MZ)}. Its default value is @option{0.118}. If the setup
at hand involves hadron collisions and thus PDFs, the value of the
strong coupling constant is automatically set consistent with the PDF fit
and can not be changed by the user. For
this fine structure constant there is also the option to provide
a fixed value that can be used in calculations of matrix elements
in case running of the coupling is disabled (cf. @ref{COUPLINGS}). The keyword
is @code{ALPHAS(default)}. When using
a running strong coupling, the order of the perturbative expansion
used can be set through @code{ORDER_ALPHAS}, where the default @option{0}
corresponds to one-loop running and @code{1},@code{2},@code{3}
......
......@@ -29,7 +29,7 @@ namespace PHOTONS {
static inline void ResetAlphaQED()
{ s_alpha=MODEL::aqed->AqedThomson(); }
static inline void SetAlphaQED(const double& scale)
{ if (s_userunningparameters) s_alpha=MODEL::aqed->Aqed(scale); }
{ if (s_userunningparameters) s_alpha=(*MODEL::aqed)(scale); }
static int s_mode;
static bool s_useme;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment