a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
ZFitterWrapper.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2012 HEPfit Collaboration
3 * All rights reserved.
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8/*
9 * Documents of ZFITTER:
10 * hep-ph/9412201
11 * hep-ph/9908433 for v6.21
12 * hep-ph/0507146 for v6.42
13 *
14 * Constants defined in the ZFITTER Fortran codes:
15 * - G_F^mu and alpha(0) are set in CONST1() in zfbib6_40.f and EWINIT()
16 * in zfbib6_40.f (and other places?).
17 * - All lepton and quark masses (u,d,s,c,b) are set in CONST1().
18 * - Since it is hard to access some of these constants from the current
19 * class, the constants G_F^mu and alpha(0), which are necessary for
20 * the computations of the oblique parameters, are also set here in
21 * GF() and alpha().
22 *
23 * Usage:
24 * 1. call a constructor
25 * ZFitter()
26 * 2. set flags (if necessary)
27 * setAllFlags() or setFlag()
28 * 3. set cuts (if necessary)
29 * 4. compute observables
30 *
31 * Important flags in ZFITTER:
32 * AMT4 = 6 : with complete two-loop corrections to Mw and fermionic
33 * two-loop corrections to sin^2(theta_eff^lept)
34 * ALEM = 2 : DAL5H is supplied by the user as input.
35 * FOT2 = 3 : controls Initial-state radiation
36 * FINR = 0 : controls Final-state radiation
37 * INTF = 0 : ISR/FSR interference is ignored.
38 * (INTF=1: with O(alpha), INTF=2: with the exponentiation)
39 * ISPP = 2 : with ISR pairs (ISPP=0: without the pairs)
40 * ICOL = -1: controls cuts
41 *
42 * Fitted parameters in ZFITTER:
43 * ZMASS: the pole mass of Z in GeV
44 * TMASS: the pole mass of the top quark in GeV [10-400]
45 * HMASS: the pole mass of the Higgs in GeV [10-1000]
46 * ALFAS: the strong coupling constant at Mz
47 * DAL5H: the 5-quark flavor hadronic vacuum polarization at Mz
48 * UMASS: the constituent mass of the up quark (fixed)
49 * DMASS: the constituent mass of the down quark (fixed)
50 * V_TB: the CKM matrix elements V_{tb} (fixed)
51 *
52 * INDF = Fermion index:
53 * INDF==0 neutrinos
54 * INDF==1 electron
55 * INDF==2 mu
56 * INDF==3 tau
57 * INDF==4 u
58 * INDF==5 d
59 * INDF==6 c
60 * INDF==7 s
61 * INDF==8 t
62 * INDF==9 b
63 * INDF==10 hadronic
64 * INDF==11 total
65 *
66 */
67
68#ifndef ZFITTERWRAPPER_H
69#define ZFITTERWRAPPER_H
70
71#include <iostream>
72#include <cstring>
73#include <gslpp.h>
74
75
76#include <StandardModel.h>
77
78using namespace gslpp;
79
80
86public:
87
92 ZFitterWrapper(const StandardModel& mySM);
93
94
96 // Flags
97
105 void setFlag(const std::string CHFLAG, const int IVALUE) const;
106
112 void setAllFlags(const int flags[46], const int flagPrint) const;
113
117 void FlagInfo() const;
118
119
121 // Cuts
122
134 void setCuts(const int INDF, const int ICUT, const double ACOL,
135 const double EMIN, const double S_PR, const double ANG0,
136 const double ANG1, const double SIPP) const;
137
149 void setAllCuts(const int ICUT[12], const double ACOL[12],
150 const double EMIN[12], const double S_PR[12],
151 const double ANG0[12], const double ANG1[12],
152 const double SPP[12], const int flagPrint) const;
153
159 void setSprimeCut(const int INDF, const double s) const;
160
164 void CutInfo() const;
165
166
168 // Effective couplings
169
175 complex rhoZ_f(const int INDF) const;
176
182 complex kappaZ_f(const int INDF) const;
183
189 complex gZ_f(const int INDF) const;
190
191
193 // LR-asymmetry parameter
194
199 double Af(const int INDF) const;
200
201
203 // Z-pole observables
204
208 double alphaMZ() const;
209
213 double Mw() const;
214
218 double Gamma_W() const;
219
223 double sw2() const;
224
229 double s2teff_f(const int INDF) const;
230
235 double Gamma_f(const int INDF) const;
236
240 double Gamma_inv() const;
241
245 double Gamma_had() const;
246
250 double Gamma_Z() const;
251
252
254
262 void calcXS_AFB(const int INDF, const double SQRS, double *XS, double *AFB) const;
263
271 void calcDXS(const int INDF, const double SQRS, const double CSA, double *DXS) const;
272
279 void calcTauPol(const double SQRS, double *TAUPOL, double *TAUAFB) const;
280
289 void calcALR(const int INDF, const double SQRS, const double POL,
290 double *XSPL, double *XSMI) const;
291
299 void calcAPV(double *C1U, double *C1D, double *C2U, double *C2D) const;
300
310 void calcXS(const int INDF, const double SQRS, const double GAMZ0,
311 const double GAMEE, const double GAMFF, double *XS) const;
312
326 void calcXS_AFB_2(const int INDF, const double SQRS, const double GAMZ0,
327 const int MODE, const double GVE, const double XE,
328 const double GVF, const double XF, double *XS, double *AFB) const;
329
343 void calcXS_AFB_3(const int INDF, const double SQRS, const double GAMZ0,
344 const int MODE, const double GV2, const double X2,
345 double *XS, double *AFB) const;
346
358 void calcXS_AFB_4(const int INDF, const double SQRS, const double GAMZ0,
359 const double PFOUR, const double PVAE2, const double PVAF2,
360 double *XS, double *AFB) const;
361
374 void calcTauPol_2(const double SQRS, const double GAMZ0, const int MODE,
375 const double GVE, const double XE, const double GVF,
376 const double XF, double *TAUPOL, double *TAUAFB) const;
377
378
380
384 void printConstants() const;
385
389 void printInputs() const;
390
394 void printIntermediateResults() const;
395
400 std::string convertINDF(const int INDF) const;
401
406 void test(const int IMISC) const;
407
408 const StandardModel& getModel() const {
409 return SM;
410 }
411
412
414
415private:
417
418 mutable bool IsFlagChanged;
419
420 // Caches
422
423 // Constants (set in the constructor)
424 double V_TB;
425 double UMASS; // the constituent mass of the up quark
426 double DMASS; // the constituent mass of the down quark
427
428
430
437 void init(const int IPRINT) const;
438
442 void calcCommonBlocks() const;
443
444
446 // get variables from Common blocks of ZFITTER
447
451 double getCommonALPHST() const;
452
456 double getCommonSIN2TW() const;
457
462 double getCommonS2TEFF(const int INDF) const;
463
468 double getCommonALLCH(const int INDF) const;
469
474 double getCommonALLMS(const int INDF) const;
475
480 double getCommonWIDTHS(const int INDF) const;
481
486 double getCommonPARTZ(const int INDF) const;
487
492 double getCommonPARTW(const int i) const;
493
494
496 // get variables from Common blocks of DIZET
497
502 double getCommonARROFZ(const int INDF) const;
503
508 double getCommonARKAFZ(const int INDF) const;
509
514 double getCommonARVEFZ(const int INDF) const;
515
520 double getCommonARSEFZ(const int INDF) const;
521
526 double getCommonAROTFZ(const int INDF) const;
527
532 double getCommonAIROFZ(const int INDF) const;
533
538 double getCommonAIKAFZ(const int INDF) const;
539
544 double getCommonAIVEFZ(const int INDF) const;
545
546
547};
548
549#endif /* ZFITTERWRAPPER_H */
550
A model class for the Standard Model.
ZFITTER C++ Interface Class.
double sw2() const
void setFlag(const std::string CHFLAG, const int IVALUE) const
modifies the default values of flags which control various options
double alphaMZ() const
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,...
double Mw() const
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_Z() const
double Gamma_f(const int INDF) const
const StandardModel & SM
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
double Gamma_W() const
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,...
double Gamma_had() const
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 Gamma_inv() const
const StandardModel & getModel() 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)
Test Observable.