34 int AFBC = 1, SCAL = 0, SCRE = 0, AMT4 = 6, BORN = 0,
35 BOXD = 1, CONV = 1, FINR = 0, FOT2 = 3, GAMS = 1,
36 DIAG = 1, INTF = 0, BARB = 2, PART = 0, POWR = 1,
37 PRNT = 0, ALEM = 2, QCDC = 3, VPOL = 1, WEAK = 1,
38 FTJR = 1, EXPR = 0, EXPF = 0, HIGS = 0, AFMT = 3,
39 CZAK = 1, PREC = 10,HIG2 = 0, ALE2 = 3, GFER = 2,
40 ISPP = 2, FSRS = 1, MISC = 0, MISD = 1, IPFC = 5,
41 IPSC = 0, IPTO = 3, FBHO = 0, FSPP = 0, FUNA = 0,
42 ASCR = 1, SFSR = 1, ENUE = 1, TUPV = 1, DMWW = 0,
45 int flags[46] = {AFBC, SCAL, SCRE, AMT4, BORN, BOXD, CONV, FINR, FOT2, GAMS,
46 DIAG, INTF, BARB, PART, POWR, PRNT, ALEM, QCDC, VPOL, WEAK,
47 FTJR, EXPR, EXPF, HIGS, AFMT, CZAK, PREC, HIG2, ALE2, GFER,
48 ISPP, FSRS, MISC, MISD, IPFC, IPSC, IPTO, FBHO, FSPP, FUNA,
49 ASCR, SFSR, ENUE, TUPV, DMWW, DSWW};
58 zuflag_(CHFLAG.c_str(), &IVALUE, CHFLAG.size());
65 std::string flagNames[46]
66 = {
"AFBC",
"SCAL",
"SCRE",
"AMT4",
"BORN",
67 "BOXD",
"CONV",
"FINR",
"FOT2",
"GAMS",
68 "DIAG",
"INTF",
"BARB",
"PART",
"POWR",
69 "PRNT",
"ALEM",
"QCDC",
"VPOL",
"WEAK",
70 "FTJR",
"EXPR",
"EXPF",
"HIGS",
"AFMT",
71 "CZAK",
"PREC",
"HIG2",
"ALE2",
"GFER",
72 "ISPP",
"FSRS",
"MISC",
"MISD",
"IPFC",
73 "IPSC",
"IPTO",
"FBHO",
"FSPP",
"FUNA",
74 "ASCR",
"SFSR",
"ENUE",
"TUPV",
"DMWW",
79 for (i=0; i<46; i++) {
80 setFlag(flagNames[i].c_str(), flags[i]);
85 for (i=0; i<46; i++) {
86 std::cout <<
" " << flagNames[i].c_str() <<
": " << flags[i];
87 if ((i+1)%5==0) std::cout << std::endl;
89 std::cout << std::endl << std::endl;
103 const double EMIN,
const double S_PR,
const double ANG0,
104 const double ANG1,
const double SIPP)
const
106 zucuts_(&INDF, &ICUT, &ACOL, &EMIN, &S_PR, &ANG0, &ANG1, &SIPP);
110 const double EMIN[12],
const double S_PR[12],
111 const double ANG0[12],
const double ANG1[12],
112 const double SPP[12],
const int flagPrint)
const
116 for (indexFermion=0; indexFermion<12; indexFermion++) {
117 setCuts(indexFermion, ICUT[indexFermion], ACOL[indexFermion],
118 EMIN[indexFermion], S_PR[indexFermion], ANG0[indexFermion],
119 ANG1[indexFermion], SPP[indexFermion]);
124 std::cout <<
" Channel ICUT ACOL EMIN S_PR ANG0 ANG1 SPP"
126 for (indexFermion=0; indexFermion<12; indexFermion++) {
127 std::cout << std::setw(9) <<
convertINDF(indexFermion)
128 << std::setw(4) << ICUT[indexFermion]
129 << std::setw(7) << ACOL[indexFermion]
130 << std::setw(7) << EMIN[indexFermion]
131 << std::setw(9) << S_PR[indexFermion]
132 << std::setw(5) << ANG0[indexFermion]
133 << std::setw(5) << ANG1[indexFermion]
134 << std::setw(9) << SPP[indexFermion] << std::endl;
143 double ACOL, EMIN, S_PR, ANG0, ANG1, SPP;
152 setCuts(INDF, ICUT, ACOL, EMIN, S_PR, ANG0, ANG1, SPP);
166 if (INDF<0 || INDF>11)
167 throw std::runtime_error(
"Error in ZFitterWrapper::rhoZ_f");
174 if (INDF<0 || INDF>11)
175 throw std::runtime_error(
"Error in ZFitterWrapper::kappaZ_f");
182 if (INDF<0 || INDF>11)
183 throw std::runtime_error(
"Error in ZFitterWrapper::gZ_f");
193 if (INDF<0 || INDF>9)
194 throw std::runtime_error(
"Error in ZFitterWrapper::Af");
196 double Re_gVf_over_gAf = 1.0 - 4.0*fabs(Qf)*
kappaZ_f(INDF).real()*
sw2();
197 return ( 2.0*Re_gVf_over_gAf/(1.0 + Re_gVf_over_gAf*Re_gVf_over_gAf) );
260 double *XS,
double *AFB)
const
269 const double CSA,
double *DXS)
const
286 double *XSPL,
double *XSMI)
const {
302 const double GAMEE,
const double GAMFF,
double *XS)
const
310 const int MODE,
const double GVE,
const double XE,
311 const double GVF,
const double XF,
312 double *XS,
double *AFB)
const
316 zuxsa_(&INDF, &SQRS, &
MzCache, &GAMZ0, &MODE, &GVE, &XE, &GVF, &XF, XS, AFB);
320 const int MODE,
const double GV2,
const double X2,
321 double *XS,
double *AFB)
const
325 zuxsa2_(&INDF, &SQRS, &
MzCache, &GAMZ0, &MODE, &GV2, &X2, XS, AFB);
329 const double PFOUR,
const double PVAE2,
330 const double PVAF2,
double *XS,
double *AFB)
const
334 zuxafb_(&INDF, &SQRS, &
MzCache, &GAMZ0, &PFOUR, &PVAE2, &PVAF2, XS, AFB);
338 const double GVE,
const double XE,
const double GVF,
339 const double XF,
double *TAUPOL,
double *TAUAFB)
const
343 zutau_(&SQRS, &
MzCache, &GAMZ0, &MODE, &GVE, &XE, &GVF, &XF, TAUPOL, TAUAFB);
351 std::cout <<
"------------ Constants ------------" << std::endl;
352 std::cout <<
" Channel charges masses" << std::endl;
354 for (indexFermion=0; indexFermion<10; indexFermion++) {
355 std::cout << std::setw(9) <<
convertINDF(indexFermion)
359 std::cout << std::endl;
364 std::cout <<
"----- Input parameters -----" << std::endl;
365 std::cout <<
" ZMASS = " <<
SM.
getMz() << std::endl;
366 std::cout <<
" TMASS = " <<
SM.
getMtpole() << std::endl;
367 std::cout <<
" HMASS = " <<
SM.
getMHl() << std::endl;
368 std::cout <<
" ALFAS = " <<
SM.
getAlsMz() << std::endl;
369 std::cout <<
" DAL5H = " <<
SM.
getDAle5Mz() << std::endl;
370 std::cout <<
" V_TB = " <<
V_TB << std::endl;
371 std::cout <<
" UMASS = " <<
UMASS << std::endl;
372 std::cout <<
" DMASS = " <<
DMASS << std::endl;
373 std::cout << std::endl;
378 std::cout <<
"----- Intermediate Results -----" << std::endl;
382 std::cout <<
"Mw = " <<
Mw() <<
" sin^2(theta_W) = "
385 std::cout <<
"Z decays:" << std::endl;
386 std::cout <<
" Channel Gamma (rho_Z^f)' Re[rho_Z^f] Im[rho_Z^f] "
387 <<
"Re[g_Z^f] Im[g_Z^f] Re[k_Z^f] Im[k_Z^f] "
388 <<
"sin^2(th_eff^f)[ARSEFZ] sin^2(th_eff^f)[S2TEFF]"
391 for (indexFermion=0; indexFermion<10; indexFermion++) {
392 std::cout << std::setw(9) <<
convertINDF(indexFermion)
406 for (indexFermion=10; indexFermion<12; indexFermion++) {
407 std::cout << std::setw(9) <<
convertINDF(indexFermion)
411 std::cout << std::endl;
413 std::cout <<
"W decays:" << std::endl;
414 std::cout <<
" Gamma(W->leptons) = " <<
getCommonPARTW(0) << std::endl;
415 std::cout <<
" Gamma(W->quarks) = " <<
getCommonPARTW(1) << std::endl;
416 std::cout <<
" Gamma(W->total) = " <<
getCommonPARTW(2) << std::endl;
417 std::cout << std::endl;
420 std::cout <<
" Channel sin^2(th_eff^f)[ARSEFZ] sin^2(th_eff^f)[S2TEFF] "
421 <<
"Re[k_Z^f]*sin^2(theta_W) " << std::endl;
422 for (indexFermion = 0; indexFermion < 10; indexFermion++) {
423 std::cout << std::setw(9) <<
convertINDF(indexFermion)
430 std::cout << std::endl;
437 if (INDF==0) channel=
"nu,nubar";
438 if (INDF==1) channel=
"e+,e-";
439 if (INDF==2) channel=
"mu+,mu-";
440 if (INDF==3) channel=
"tau+,tau-";
441 if (INDF==4) channel=
"u,ubar";
442 if (INDF==5) channel=
"d,dbar";
443 if (INDF==6) channel=
"c,cbar";
444 if (INDF==7) channel=
"s,sbar";
445 if (INDF==8) channel=
"t,tbar";
446 if (INDF==9) channel=
"b,bbar";
447 if (INDF==10) channel=
"hadron";
448 if (INDF==11) channel=
"total";
511 std::cout <<
"S2TEFF[INDF < 12]" << std::endl;
521 std::cout <<
"ALLCH[INDF < 12]" << std::endl;
531 std::cout <<
"ALLMS[INDF < 12]" << std::endl;
539 return zupars_.WIDTHS[INDF]*0.001;
541 std::cout <<
"WIDTHS[INDF < 12]" << std::endl;
549 return partzw_.PARTZ[INDF]*0.001;
551 std::cout <<
"PARTZ[INDF < 12]" << std::endl;
561 std::cout <<
"PARTW[i < 3]" << std::endl;
574 std::cout <<
"ARROFZ[INDF < 11]" << std::endl;
584 std::cout <<
"ARKAFZ[INDF < 11]" << std::endl;
594 std::cout <<
"ARVEFZ[INDF < 11]" << std::endl;
604 std::cout <<
"ARSEFZ[INDF < 11]" << std::endl;
614 std::cout <<
"AROTFZ[INDF < 11]" << std::endl;
624 std::cout <<
"AIROFZ[INDF < 11]" << std::endl;
634 std::cout <<
"AIKAFZ[INDF < 11]" << std::endl;
644 std::cout <<
"AIVEFZ[INDF < 12]" << std::endl;
void zvtpsm_(const double *SQRS, const double *ZMASS, const double *TMASS, const double *HMASS, const double *DAL5H, const double *V_TB, const double *ALFAS, double *TAUPOL, double *TAUAFB)
void zuxsa_(const int *INDF, const double *SQRS, const double *ZMASS, const double *GAMZ0, const int *MODE, const double *GVE, const double *XE, const double *GVF, const double *XF, double *XS, double *AFB)
void zutau_(const double *SQRS, const double *ZMASS, const double *GAMZ0, const int *MODE, const double *GVE, const double *XE, const double *GVF, const double *XF, double *TAUPOL, double *TAUAFB)
void zuxsec_(const int *INDF, const double *SQRS, const double *ZMASS, const double *GAMZ0, const double *GAMEE, const double *GAMFF, double *XS)
void zuxsa2_(const int *INDF, const double *SQRS, const double *ZMASS, const double *GAMZ0, const int *MODE, const double *GV2, const double *X2, double *XS, double *AFB)
void zftest_(const int *IMISC)
void zvweak_(const double *ZMASS, const double *TMASS, const double *HMASS, const double *DAL5H, const double *V_TB, const double *ALFAS)
void zuinit_(const int *IPRINT)
void zvthsm_(const int *INDF, const double *SQRS, const double *ZMASS, const double *TMASS, const double *HMASS, const double *DAL5H, const double *V_TB, const double *ALFAS, double *XS, double *AFB)
void zvlrsm_(const int *INDF, const double *SQRS, const double *ZMASS, const double *TMASS, const double *HMASS, const double *DAL5H, const double *V_TB, const double *ALFAS, const double *POL, double *XSPL, double *XSMI)
void zvatsm_(const int *INDF, const double *SQRS, const double *ZMASS, const double *TMASS, const double *HMASS, const double *DAL5H, const double *V_TB, const double *ALFAS, const double *CSA, double *DXS)
void zuxafb_(const int *INDF, const double *SQRS, const double *ZMASS, const double *GAMZ0, const double *PFOUR, const double *PVAE2, const double *PVAF2, double *XS, double *AFB)
void zu_apv_(const double *ZMASS, const double *TMASS, const double *HMASS, const double *SIN2TW, const double *UMASS, const double *DMASS, double *C1U, double *C1D, double *C2U, double *C2D)
void zuflag_(const char *CHFLAG, const int *IVALUE, long int CHFLAG_SIZE)
void zuinfo_(const int *MODE)
void zucuts_(const int *INDF, const int *ICUT, const double *ACOL, const double *EMIN, const double *S_PR, const double *ANG0, const double *ANG1, const double *SIPP)
const double getMtpole() const
A get method to access the pole mass of the top quark.
A model class for the Standard Model.
const double getMz() const
A get method to access the mass of the boson .
const double getAlsMz() const
A get method to access the value of .
virtual const double getMHl() const
A get method to retrieve the Higgs mass .
const double getDAle5Mz() const
A get method to retrieve the five-flavour hadronic contribution to the electromagnetic coupling,...
void setFlag(const std::string CHFLAG, const int IVALUE) const
modifies the default values of flags which control various options
std::string convertINDF(const int INDF) const
void CutInfo() const
prints cut info with a ZFITTER subroutine
double getCommonARVEFZ(const int INDF) const
void printIntermediateResults() const
prints intermediate results
void printConstants() const
prints constants defined in ZFITTER
void calcXS_AFB_3(const int INDF, const double SQRS, const double GAMZ0, const int MODE, const double GV2, const double X2, double *XS, double *AFB) const
calculates a cross section and a forward-backward asymmetry as functions of s, Mz,...
void FlagInfo() const
prints flag info with a ZFITTER subroutine
void calcALR(const int INDF, const double SQRS, const double POL, double *XSPL, double *XSMI) const
calculates a left-right polarization asymmetry
void init(const int IPRINT) const
initializes flag and cut variables with their default values. called by the constructors
double getCommonS2TEFF(const int INDF) const
void calcCommonBlocks() const
calculates a number of important EW parameters which are stored in common blocks for later use
double getCommonAROTFZ(const int INDF) const
double getCommonSIN2TW() const
complex kappaZ_f(const int INDF) const
effective coupling kappa_Z^f
void calcXS_AFB_2(const int INDF, const double SQRS, const double GAMZ0, const int MODE, const double GVE, const double XE, const double GVF, const double XF, double *XS, double *AFB) const
calculates a cross section and a forward-backward asymmetry as functions of s, Mz,...
void printInputs() const
prints input parameters
void setSprimeCut(const int INDF, const double s) const
sets the s' cut
double getCommonPARTW(const int i) const
void calcXS_AFB(const int INDF, const double SQRS, double *XS, double *AFB) const
calculates a cross section and a forward-backward asymmetry
double Af(const int INDF) const
void calcAPV(double *C1U, double *C1D, double *C2U, double *C2D) const
calculates C_1u, C_1d, C_2u and C_2d with an exp. input from atomic parity violation measurements in ...
double getCommonARSEFZ(const int INDF) const
double s2teff_f(const int INDF) const
void calcTauPol(const double SQRS, double *TAUPOL, double *TAUAFB) const
calculates the tau polarization and tau polarization asymmetry
double getCommonARKAFZ(const int INDF) const
double getCommonPARTZ(const int INDF) const
double getCommonAIKAFZ(const int INDF) const
double Gamma_f(const int INDF) const
ZFitterWrapper(const StandardModel &mySM)
ZFitterWrapper constructor.
double getCommonALLMS(const int INDF) const
void calcDXS(const int INDF, const double SQRS, const double CSA, double *DXS) const
calculates a differential cross section w.r.t cos(theta)
double getCommonARROFZ(const int INDF) const
void setCuts(const int INDF, const int ICUT, const double ACOL, const double EMIN, const double S_PR, const double ANG0, const double ANG1, const double SIPP) const
void calcXS(const int INDF, const double SQRS, const double GAMZ0, const double GAMEE, const double GAMFF, double *XS) const
calculates a cross section as a function of s, Mz, Gamma_Z, Gamma_e, Gamma_f
void calcTauPol_2(const double SQRS, const double GAMZ0, const int MODE, const double GVE, const double XE, const double GVF, const double XF, double *TAUPOL, double *TAUAFB) const
calculates the tau polarization and tau polarization asymmetry as functions of s, Mz,...
void calcXS_AFB_4(const int INDF, const double SQRS, const double GAMZ0, const double PFOUR, const double PVAE2, const double PVAF2, double *XS, double *AFB) const
calculates a cross section and a forward-backward asymmetry as functions of s, Mz,...
void setAllCuts(const int ICUT[12], const double ACOL[12], const double EMIN[12], const double S_PR[12], const double ANG0[12], const double ANG1[12], const double SPP[12], const int flagPrint) const
sets cuts
complex rhoZ_f(const int INDF) const
effective coupling rho_Z^f
double getCommonAIROFZ(const int INDF) const
double getCommonAIVEFZ(const int INDF) const
double getCommonALPHST() const
double getCommonALLCH(const int INDF) const
complex gZ_f(const int INDF) const
effective coupling g_Z^f
void test(const int IMISC) const
Test program calculates cross sections and asymmetries as functions of .
double getCommonWIDTHS(const int INDF) const
void setAllFlags(const int flags[46], const int flagPrint) const
sets flags (see Appendix B.2 in hep-ph/0507146)