fast pQCD calculations for hadron-induced processes
fastNLOGeneratorConstants.h
1 #ifndef __fnlogeneratorconstants__
2 #define __fnlogeneratorconstants__
3 
4 #include <iostream>
5 #include <string>
6 #include <vector>
7 
8 namespace fastNLO {
9 
18  std::string Name;
19  std::vector<std::string> References;
21  std::vector<std::string > GetCodeDescription() {
23  std::vector<std::string > CodeDescr(References.size()+1);
24  CodeDescr[0] = Name;
25  for ( unsigned int i = 0 ; i<References.size() ; i++ )
26  CodeDescr[i+1] = References[i];
27  return CodeDescr;
28  }
29  };
30 
31 
39  int NPDF;
43  int IPDFdef1;
44  int IPDFdef2;
45  int IPDFdef3LO;
48  int NPDFDim;
49  std::vector<std::vector<std::pair<int,int> > > PDFCoeffLO;
50  std::vector<std::vector<std::pair<int,int> > > PDFCoeffNLO;
51  std::vector<std::vector<std::pair<int,int> > > PDFCoeffNNLO;
52  std::vector<std::vector<int> > PDFLiCoInLO;
53  std::vector<std::vector<int> > PDFLiCoInNLO;
54  std::vector<std::vector<int> > PDFLiCoInNNLO;
55 
56  std::vector<std::pair<int,int> > AsymmetricProcesses;
57  std::string Name;
58  std::vector<std::string> References;
59  std::vector<std::string > GetProcessDescription() {
61  unsigned int iadd = 0;
62  if ( Name != "" ) iadd=1;
63  std::vector<std::string > ProcDescr(References.size()+iadd);
64  if ( iadd != 0 ) ProcDescr[0] = Name;
65  for ( unsigned int i = 0 ; i<References.size() ; i++ )
66  ProcDescr[i+iadd] = References[i];
67  return ProcDescr;
68  }
69  };
70 
71 
76 
77  std::string ScenarioName;
78  std::vector<std::string> ScenarioDescription;
80 
81 
83  std::vector<std::string> DimensionLabels;
84  std::vector<int> DimensionIsDifferential;
85 
87  double BinSizeFactor;
88  std::vector<double> BinSize;
89 
90  std::string ScaleDescriptionScale1;
91  std::string ScaleDescriptionScale2;
92 
93  std::vector<double> SingleDifferentialBinning;
94  std::vector<std::vector<double> > DoubleDifferentialBinning;
95  std::vector<std::vector<double> > TripleDifferentialBinning;
96 
98  int PDF1;
99  int PDF2;
100 
101  std::string OutputFilename;
105  std::vector<double> ScaleVariationFactors;
106 
108 
112 
128  std::string X_Kernel;
129  std::string X_DistanceMeasure;
130  int X_NNodes;
131  std::string X_NNodeCounting;
132 
133  std::string Mu1_Kernel;
134  std::string Mu1_DistanceMeasure;
136 
137  std::string Mu2_Kernel;
138  std::string Mu2_DistanceMeasure;
140 
142  SetDefaults();
143  }
144  void SetDefaults() {
145  PublicationUnits=12;
146  ScenarioName="Undefined";
147  ScenarioDescription.clear();
148  BinSizeFactor=1.;
149  CalculateBinSize=true;
150  DifferentialDimension=0;
151  DimensionIsDifferential.clear();
152  DimensionIsDifferential.push_back(2);
153  DimensionIsDifferential.push_back(2);
154  DimensionIsDifferential.push_back(2);
155  PDF1=2212;
156  PDF2=2212;
157 #ifdef HAVE_LIBZ
158  OutputCompression=true;
159 #else
160  OutputCompression=false;
161 #endif /* HAVE_LIBZ */
162  OutputPrecision=8;
163  FlexibleScaleTable=false;
164  ScaleVariationFactors.clear();
165  ScaleVariationFactors.push_back(0.5);
166  ScaleVariationFactors.push_back(1);
167  ScaleVariationFactors.push_back(2);
168  ReadBinningFromSteering=true;
169  ApplyPDFReweighting=true;
170  CheckScaleLimitsAgainstBins=true;
171  X_Kernel="Lagrange";
172  X_DistanceMeasure="sqrtlog10";
173  X_NNodes=15;
174  X_NNodeCounting = "NodesPerBin";
175 
176  Mu1_Kernel="Lagrange";
177  Mu1_DistanceMeasure="loglog025";
178  Mu1_NNodes=6;
179 
180  Mu2_Kernel="Lagrange"; //Scale2 not used for fixed-scale tables
181  Mu2_DistanceMeasure="loglog025";
182  Mu2_NNodes=6;
183  }
184 
185 
186  };
187 
198  bool CheckScaleLimitsAgainstBins;
199  std::string ScaleDescriptionScale1;
200  std::string ScaleDescriptionScale2;
201  int DifferentialDimension;
202  std::vector<std::string> DimensionLabels;
203  std::vector<int> DimensionIsDifferential;//
204  std::vector<std::vector<double> > Values;//
205  std::vector<std::string> headerValues;//
206  std::vector<std::vector<double> > Binning;
207  public:
208  WarmupConstants(const ScenarioConstants& scenario) {
209  Init();
210  ScaleDescriptionScale1 = scenario.ScaleDescriptionScale1;
211  ScaleDescriptionScale2 = scenario.ScaleDescriptionScale2;
212  CheckScaleLimitsAgainstBins = scenario.CheckScaleLimitsAgainstBins;
213  DifferentialDimension = scenario.DifferentialDimension;
214  DimensionLabels = scenario.DimensionLabels;
215  DimensionIsDifferential = scenario.DimensionIsDifferential;
216 
217  std::cout<<"Warning [WarmupConstants]. Binning has not be taken over from ScenarioConstants (not implemented.)"<<std::endl;
218  //exit(4);
219  // Binning = ;
220  // Values = ;
221  // headerValues = ;
222  }
223  void Init(){
224  OrderInAlphasOfWarmupRunWas=-1;
225  // ObsBin x_min x_max 173.3GeV_min 173.3GeV_max y_min y_max
226  headerValues.clear();
227  // headerValues.push_back("ObsBin");
228  // headerValues.push_back("x_min");
229  // headerValues.push_back("x_max");
230  };
231 
232  WarmupConstants() {
233  Init();
234  }
235 
236  };
237 
238 };
239 
240 #endif
int LeadingOrder
Order in alpha_s of leading order process.
Definition: fastNLOGeneratorConstants.h:38
int IPDFdef3LO
Flag 3 to define PDF LCs at LO (dep. on IPDFdef1, IPDFdef2; for 3, 1 e.g. 6 subprocesses, ignored for IPDFdef2==121)
Definition: fastNLOGeneratorConstants.h:45
int Mu1_NNodes
6
Definition: fastNLOGeneratorConstants.h:135
std::vector< int > DimensionIsDifferential
Specify for each dimension whether: 0: the cross section is NOT differential, i.e. there are two bin borders (but NO division (normalization) by bin width); 1 : the cross section is point-wise differential, i.e. only one point is given; 2 : the cross section is bin-wise differential, i.e. there are two bin borders and division by bin width.
Definition: fastNLOGeneratorConstants.h:84
std::vector< std::vector< double > > TripleDifferentialBinning
Observable binning.
Definition: fastNLOGeneratorConstants.h:95
std::vector< std::string > ScenarioDescription
Description of the scenario.
Definition: fastNLOGeneratorConstants.h:78
Definition: fastNLOGeneratorConstants.h:32
int NPDF
No. of PDFs involved.
Definition: fastNLOGeneratorConstants.h:39
std::string ScenarioName
Name of the scenario.
Definition: fastNLOGeneratorConstants.h:77
bool CheckScaleLimitsAgainstBins
For warmup-run! Set limits for scale nodes to bin borders, if possible.
Definition: fastNLOGeneratorConstants.h:111
int OrderInAlphasOfWarmupRunWas
Definition: fastNLOGeneratorConstants.h:197
std::vector< std::vector< std::pair< int, int > > > PDFCoeffNLO
PDF Linear combinations for NLO calculation (used only if IPDFdef2==0)
Definition: fastNLOGeneratorConstants.h:50
std::string Name
< More precise description for specific contribution (e.g. LO, pp -> 2 jets; also can add &#39;run-mode&#39; ...
Definition: fastNLOGeneratorConstants.h:57
bool CalculateBinSize
Calculate bin width from lower and upper bin boundaries.
Definition: fastNLOGeneratorConstants.h:86
int IPDFdef3NLO
Flag 3 to define PDF LCs at NLO (dep. on IPDFdef1, IPDFdef2; for 3, 1 e.g. 7 subprocesses, ignored for IPDFdef2==121)
Definition: fastNLOGeneratorConstants.h:46
void SetDefaults()
Definition: fastNLOGeneratorConstants.h:144
bool FlexibleScaleTable
Create table fully flexible in mu_f (larger size, and requires scale independent weights during creat...
Definition: fastNLOGeneratorConstants.h:104
std::vector< double > SingleDifferentialBinning
Observable binning Use either &#39;SingleDifferentialBinning&#39; or &#39;DoubleDifferentialBinning&#39; or &#39;TripleDi...
Definition: fastNLOGeneratorConstants.h:93
std::vector< std::vector< std::pair< int, int > > > PDFCoeffNNLO
PDF Linear combinations for NNLO calculation (used only if IPDFdef2==0)
Definition: fastNLOGeneratorConstants.h:51
bool IgnoreWarmupBinningCheck
Don&#39;t check warmup binning to avoid too many floating precision issues.
Definition: fastNLOGeneratorConstants.h:109
Definition: fastNLOGeneratorConstants.h:72
bool ApplyPDFReweighting
Apply reweighting of pdfs for an optimized interpolation, def.=true.
Definition: fastNLOGeneratorConstants.h:110
int NSubProcessesLO
No. of LO subprocesses.
Definition: fastNLOGeneratorConstants.h:40
std::vector< std::string > References
References for generator. Include additional information here (e.g. &#39;run-mode&#39; or process)...
Definition: fastNLOGeneratorConstants.h:19
int NPDFDim
Define internal storage mode for PDF LCs (dep. on NPDF; e.g. for 1: 0 for linear, for 2: 1 for half- ...
Definition: fastNLOGeneratorConstants.h:48
double BinSizeFactor
Possibility to provide additional normalization factor, e.g. of 2 for bins in |y|.
Definition: fastNLOGeneratorConstants.h:87
bool ReadBinningFromSteering
Specify if binning is read from fScenConst or from warmup.
Definition: fastNLOGeneratorConstants.h:107
std::string X_DistanceMeasure
"sqrtlog10"
Definition: fastNLOGeneratorConstants.h:129
int UnitsOfCoefficients
Definition: fastNLOGeneratorConstants.h:20
std::string Mu2_DistanceMeasure
"loglog025"
Definition: fastNLOGeneratorConstants.h:138
std::vector< std::string > GetCodeDescription()
Get &#39;CodeDescription&#39; usable for fastNLO table.
Definition: fastNLOGeneratorConstants.h:22
int Mu2_NNodes
6
Definition: fastNLOGeneratorConstants.h:139
int NSubProcessesNNLO
No. of NNLO subprocesses.
Definition: fastNLOGeneratorConstants.h:42
int IPDFdef2
Flag 2 to define PDF linear combinations (dep. on IPDFdef1; for 3 e.g. 1 for jet specific LCs...
Definition: fastNLOGeneratorConstants.h:44
Definition: fastNLOCoeffAddBase.h:8
int PDF1
PDF of 1st hadron (following PDG convention: proton 2212).
Definition: fastNLOGeneratorConstants.h:98
std::string ScaleDescriptionScale2
"pT_max_[GeV]" # Specify 2nd scale name and unit (ONLY for flexible-scale tables) ...
Definition: fastNLOGeneratorConstants.h:91
std::vector< std::string > GetProcessDescription()
Definition: fastNLOGeneratorConstants.h:59
std::vector< std::vector< int > > PDFLiCoInNLO
PDF Linear combinations for NLO calculation (used only if IPDFdef2==0) [definition as in steering]...
Definition: fastNLOGeneratorConstants.h:53
std::string ScaleDescriptionScale1
"<pT_1,2>_[GeV]" # This defines the scale to be used (Note: The 1st scale should always be in units o...
Definition: fastNLOGeneratorConstants.h:90
bool OutputCompression
If zlib available, gzip output table.
Definition: fastNLOGeneratorConstants.h:103
int NSubProcessesNLO
No. of NLO subprocesses.
Definition: fastNLOGeneratorConstants.h:41
std::vector< std::vector< int > > PDFLiCoInLO
PDF Linear combinations for LO calculation (used only if IPDFdef2==0) [definition as in steering] (us...
Definition: fastNLOGeneratorConstants.h:52
std::vector< std::string > References
< References for process (also other plain text lines can be included here)
Definition: fastNLOGeneratorConstants.h:58
int X_NNodes
15
Definition: fastNLOGeneratorConstants.h:130
int PDF2
PDF of 2nd hadron (following PDG convention: proton 2212).
Definition: fastNLOGeneratorConstants.h:99
std::string Mu1_Kernel
Lagrange.
Definition: fastNLOGeneratorConstants.h:133
std::vector< std::vector< double > > DoubleDifferentialBinning
Observable binning.
Definition: fastNLOGeneratorConstants.h:94
std::string OutputFilename
Filename of fastNLO output table.
Definition: fastNLOGeneratorConstants.h:101
std::string Name
Name and version of generator.
Definition: fastNLOGeneratorConstants.h:18
std::string Mu1_DistanceMeasure
"loglog025"
Definition: fastNLOGeneratorConstants.h:134
std::string Mu2_Kernel
Lagrange # Scale2 not used for fixed-scale tables.
Definition: fastNLOGeneratorConstants.h:137
std::vector< std::vector< int > > PDFLiCoInNNLO
PDF Linear combinations for NNLO calculation (used only if IPDFdef2==0) [definition as in steering]...
Definition: fastNLOGeneratorConstants.h:54
std::string X_NNodeCounting
"NodesMax","NodesPerBin","NodesPerMagnitude"
Definition: fastNLOGeneratorConstants.h:131
std::vector< std::pair< int, int > > AsymmetricProcesses
Specify processes that need to be exchanged in half-matrix notation, when xmin>xmax (only if NPDFDim=...
Definition: fastNLOGeneratorConstants.h:56
double CenterOfMassEnergy
Center-of-mass energy in GeV. LHC Next Run II: 13000.
Definition: fastNLOGeneratorConstants.h:97
std::vector< double > ScaleVariationFactors
Factorization scale variations (only needed for fixed-scale tables), List of scale factors must inclu...
Definition: fastNLOGeneratorConstants.h:105
int IPDFdef3NNLO
Flag 3 to define PDF LCs at NNLO (dep. on IPDFdef1, IPDFdef2; for 3, 1 e.g. 7 subprocesses, ignored for IPDFdef2==121)
Definition: fastNLOGeneratorConstants.h:47
std::string X_Kernel
Lagrange.
Definition: fastNLOGeneratorConstants.h:128
std::vector< std::string > DimensionLabels
Labels (symbol and unit) for the measurement dimensions (from outer to inner "loop"), e.g. "|y|" and "p_T [GeV]". This may also help to define the observables to be calculated in an automatized way!
Definition: fastNLOGeneratorConstants.h:83
Definition: fastNLOGeneratorConstants.h:10
int OutputPrecision
Number of decimal digits to store in output table (def.=8).
Definition: fastNLOGeneratorConstants.h:102
int DifferentialDimension
Dimensionality of binning (1: single-differential, 2: double-differential; also decides if SingleDiff...
Definition: fastNLOGeneratorConstants.h:82
std::vector< std::vector< std::pair< int, int > > > PDFCoeffLO
PDF Linear combinations for LO calculation (used only if IPDFdef2==0)
Definition: fastNLOGeneratorConstants.h:49
Definition: fastNLOGeneratorConstants.h:188
int PublicationUnits
Unit of data cross sections (negative power of 10, e.g. 12->pb, 15->fb)
Definition: fastNLOGeneratorConstants.h:79
int IPDFdef1
Flag 1 to define PDF linear combinations of partonic subprocesses (e.g. hh –> jets: 3) ...
Definition: fastNLOGeneratorConstants.h:43
std::vector< double > BinSize
If &#39;CalculateBinSize&#39; is &#39;false&#39; provide table with bin widths &#39;by hand&#39; for normalization. If the calculation should not be divided by bin width, then use &#39;DimensionIsDifferential&#39; equal &#39;0&#39;, and set &#39;CalculateBinSize&#39; &#39;true&#39; for each dimension.
Definition: fastNLOGeneratorConstants.h:88