fast pQCD calculations for hadron-induced processes
fastNLOConstants.h
1 #ifndef __fnloconstants__
2 #define __fnloconstants__
3 
4 #include <string>
5 #include <vector>
6 #include <set>
7 
8 #ifndef FNLO_NAME
9 #define FNLO_NAME "fastNLO_toolkit"
10 #define FNLO_SUBPROJECT "toolkit"
11 #define FNLO_VERSION "2.3.1pre"
12 #define FNLO_SVNREV "2411"
13 #define FNLO_AUTHORS "D. Britzger, T. Kluge, K. Rabbertz, F. Stober, G. Sieber, M. Wobisch"
14 #define FNLO_WEBPAGE "http://projects.hepforge.org/fastnlo"
15 #define FNLO_AUTHORSv14 "T. Kluge, K. Rabbertz, M. Wobisch"
16 #define FNLO_QUOTEv14 "hep-ph/0609285"
17 #define FNLO_AUTHORSv2 "D. Britzger, T. Kluge, K. Rabbertz, F. Stober, M. Wobisch"
18 #define FNLO_QUOTEv2 "arXiv:1109.1310"
19 #define FNLO_YEARS "2005-2018"
20 #endif
21 
22 // Define variables fixed by precompiler for optional parts.
23 // Compilers like gcc usually drop unreachable statements
24 // anyway such that unnecessary if-else-endif calls or
25 // "unresolved symbol" errors are avoided.
26 #define FNLO_HOPPET ""
27 #define FNLO_QCDNUM ""
28 #define FNLO_ROOT "@ROOT@"
29 
30 // KR: Replace by precompiler defines
31 const double TWOPI = 6.28318530717958647692528;
32 const double TWOPISQR = 39.47841760435743447533796;
33 const double TOCL90 = 1.64485362695147271486385; // SQRT(2.D0)*InvERF(0.9D0)
34 //#define TWOPI (2.*M_PI)
35 //#define TWOPISQR (4.*M_PI*M_PI)
36 // PDG values 2012/2013
37 #define PDG_MU (0.0023)
38 #define PDG_MD (0.0048)
39 #define PDG_MS (0.095)
40 #define PDG_MC (1.275)
41 #define PDG_MB (4.18)
42 #define PDG_MT (173.07)
43 #define PDG_MZ (91.1876)
44 #define PDG_ASMZ (0.1184)
45 
46 namespace fastNLO {
47 
48  // ---- typedefs ---- //
49  typedef std::vector<double > v1d;
50  typedef std::vector<std::vector<double > > v2d;
51  typedef std::vector<std::vector<std::vector<double > > > v3d;
52  typedef std::vector<std::vector<std::vector<std::vector<double > > > > v4d;
53  typedef std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > v5d;
54  typedef std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > > v6d;
55  typedef std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > > > v7d;
56 
57  // ---- constants ---- //
58  static const std::set<int> CompatibleVersions{20000,21000,22000,23000,23500,23600,24000};
59  const int tabversion = 23600;
60  const int tablemagicno = 1234567890;
61  // separating character between entries in table
62  const char sep[] = "\n";
63  // const double TWOPI = 6.28318530717958647692528;
64 
65 
66  // ---- enumerators ---- //
67  enum EMuX {
68  kMuR = 0, // renormalization scale
69  kMuF = 1 // factorization scale
70  };
71 
72  enum EScaleFunctionalForm {
73  kScale1 = 0, // e.g. mu^2 = Q^2
74  kScale2 = 1, // e.g. mu^2 = pt^2
75  kQuadraticSum = 2, // e.g. mu^2 = ( Q^2 + pt^2 )
76  kQuadraticMean = 3, // e.g. mu^2 = ( Q^2 + pt^2 ) / 2
77  kQuadraticSumOver4 = 4, // e.g. mu^2 = ( Q^2 + pt^2 ) / 4
78  kLinearMean = 5, // e.g. mu^2 = (( Q + pt ) / 2 )^2
79  kLinearSum = 6, // e.g. mu^2 = (( Q + pt ))^2
80  kScaleMax = 7, // e.g. mu^2 = max( Q^2, pt^2)
81  kScaleMin = 8, // e.g. mu^2 = min( Q^2, pt^2)
82  kProd = 9, // e.g. mu^2 = (scale1 * scale2) ^2
83  kS2plusS1half = 10, // e.g. mu^2 = (scale1^1/2 + scale2^2)
84  kPow4Sum = 11, // e.g. mu^2 = sqrt((scale1^4 + scale2^4))
85  kWgtAvg = 12, // e.g. mu^2 = sqrt( (scale1^4 + scale2^4)/(scale1^2 + scale2^2)) [weighted average]
86  kS2plusS1fourth = 13, // e.g. mu^2 = (scale1^1/4 + scale2^2)
87  kExpProd2 = 14, // e.g. mu^2 = (scale1 * exp(0.3 * scale2)) ^2
88  kExtern = 15, // define an external function for your scale
89  kConst = 16, // e.g. mu^2 = c, while c is a constant and could be for instance the top-mass
90  };
91 
92  enum ESMCalculation {
93  kFixedOrder = 0, // Fixed order calculation (pQCD)
94  kThresholdCorrection = 1, // Threshold corrections
95  kElectroWeakCorrection = 2, // Electroweak corrections
96  kNonPerturbativeCorrection= 3, // Non-perturbative corrections|Hadronisation corrections
97  kContactInteraction = 10 // Contact interactions
98  };
99 
100  enum ESMOrder {
101  kLeading = 0, // LO, 1-loop, LO MC
102  kNextToLeading = 1, // NLO, 2-loop, NLO MC
103  kNextToNextToLeading = 2 // NNLO, 3-loop, NNLO MC
104  };
105 
106  enum EUnits {
107  kAbsoluteUnits = 0, // calculate the cross section in barn for each publicated bin
108  kPublicationUnits = 1 // calculate the cross section in units as given in the according publication
109  };
110 
111  enum EScaleUncertaintyStyle {
112  kScaleNone = 0, // no scale uncertainty, only central scale (mu_r,mu_f) = (1,1) evaluated
113  kSymmetricTwoPoint = 1, // symmetric (mu_r,mu_f) scale variations by factors (1/2,1/2), (2,2)
114  kAsymmetricSixPoint = 2 // asymmetric (mu_r,mu_f) scale variations by factors (1/2,1/2), (2,2) plus
115  // (1/2,1), (1,1/2), (1,2), (2,1)
116  };
117 
118  enum EPDFUncertaintyStyle {
119  kPDFNone = 0, // No PDF uncertainty, only averaged cross section result evaluated (Correct for NNPDF, wrong otherwise!)
120  kLHAPDF6 = 1, // LHAPDF6 uncertainties (recommended if LHAPDF6 is available)
121  kHessianSymmetric = 2, // symmetric Hessian PDF uncertainties (ABM)
122  kHessianAsymmetric = 3, // asymmetric Hessian PDF uncertainties
123  kHessianAsymmetricMax = 4, // asymmetric Hessian PDF uncertainties with pairwise max deviations per eigenvector (CTEQ,MRST|MSTW)
124  kHessianCTEQCL68 = 5, // like kHessianAsymmetricMax, but with uncertainties rescaled to CL68
125  kMCSampling = 6, // statistical sampling PDF uncertainties (and central value) (NNPDF)
126  kHeraPDF10 = 7 // HERAPDF 1.0 uncertainties
127  };
128 
129  enum EAsUncertaintyStyle {
130  kAsNone = 0, // no a_s uncertainty
131  kAsGRV = 1, // a_s(M_Z) uncertainty with GRV evolution
132  };
133 
134  enum EMerge {
135  kMerge,
136  kAdd,
137  kUnweighted,
138  kAttach,
139  kNumEvent, kNumEventBinProc,
140  kSumW2, kSumW2BinProc,
141  kSumSig2, kSumSig2BinProc,
142  kMedian, kMean,
143  kUndefined
144  };
145 
146 
147  // ---- some names for nice output ---- //
148  const std::string _ContrName[20] = {
149  "Fixed order calculation", "Threshold corrections", "Electroweak corrections", "Non-perturbative corrections",
150  "Undefined", "Undefined", "Undefined", "Undefined", "Undefined", "Undefined", "Undefined",
151  "Quark compositeness", "ADD-LED", "TeV 1-ED", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown"
152  };
153  const std::string _OrdName[4][4] = {
154  { "LO", "NLO", "NNLO" , "N3LO" },
155  { "1-loop", "2-loop", "3-loop" , "4-loop" },
156  { "Undef" , "Undef" , "Undef" , "Undef" },
157  { "LO MC" , "NLO MC", "NNLO MC", "N3LO MC" }
158  };
159  const std::string _fNSDep[6] = {"v2.0","v2.0","v2.0","v2.1","v2.2","v2.2"};
160 
161 
162 
163  // ---- Some shapes for nice output ---- //
164  //
165 #ifndef SWIG
166  const std::string _CSEP20("####################");
167  const std::string _DSEP20("====================");
168  const std::string _SSEP20("--------------------");
169  const std::string _CSEP20C(" ######################");
170  const std::string _DSEP20C(" #=====================");
171  const std::string _SSEP20C(" #---------------------");
172  const std::string _CSEP40 = _CSEP20 + _CSEP20;
173  const std::string _DSEP40 = _DSEP20 + _DSEP20;
174  const std::string _SSEP40 = _SSEP20 + _SSEP20;
175  const std::string _CSEP40C = _CSEP20C + _CSEP20;
176  const std::string _DSEP40C = _DSEP20C + _DSEP20;
177  const std::string _SSEP40C = _SSEP20C + _SSEP20;
178  const std::string _CSEPS = _CSEP40 + _CSEP40;
179  const std::string _DSEPS = _DSEP40 + _DSEP40;
180  const std::string _SSEPS = _SSEP40 + _SSEP40;
181  const std::string _CSEPSC = _CSEP40C + _CSEP40;
182  const std::string _DSEPSC = _DSEP40C + _DSEP40;
183  const std::string _SSEPSC = _SSEP40C + _SSEP40;
184  const std::string _CSEPL = _CSEPS + _CSEPS ;
185  const std::string _DSEPL = _DSEPS + _DSEPS ;
186  const std::string _SSEPL = _SSEPS + _SSEPS ;
187  const std::string _CSEPLC = _CSEPSC + _CSEPS ;
188  const std::string _DSEPLC = _DSEPSC + _DSEPS ;
189  const std::string _SSEPLC = _SSEPSC + _SSEPS ;
190 #endif
191 }
192 
193 #endif
Definition: fastNLOCoeffAddBase.h:8