1 #ifndef __fastNLOCoefficients__ 2 #define __fastNLOCoefficients__ 11 #include "fastNLOConstants.h" 22 int Read(std::istream *table);
23 int Write(std::ostream *table,
int option = 0);
26 void StripWhitespace(std::string& s)
const;
31 void ResizeTable( std::vector<double >* v,
int dim0 );
32 void ResizeTable( std::vector<std::vector<double > >* v,
int dim0 ,
int dim1 );
33 void ResizeTable( std::vector<std::vector<double > >* v,
int dim0 ,
int* dim1GetNxmaxFromDimI );
34 void ResizeTable( std::vector<std::vector<std::vector<double > > >* v,
int dim0 ,
int* dim1GetNxmaxFromDimI,
int dim2 );
35 void ResizeTable( std::vector<std::vector<std::vector<double > > >* v,
int dim0 ,
int dim1,
int dim2 );
36 void ResizeTable( std::vector<std::vector<std::vector<std::vector<double > > > >* v,
int dim0 ,
int dim1,
int dim2,
int dim3 );
37 void ResizeTable( std::vector<std::vector<std::vector<std::vector<double > > > >* v,
int dim0 ,
int dim1,
int* dim2GetNxmaxFromDimI,
int dim3 );
38 void ResizeTable( std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > >* v,
int dim0 ,
int dim1,
int dim2,
int dim3,
int dim4 );
39 void ResizeTable( std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > >* v,
int dim0 ,
int dim1,
int dim2,
int* dim3GetNxmaxFromDimI,
int dim4 );
40 void ResizeTable( std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > >* v,
int dim0 ,
int* dim1GetNxmaxFromDimI,
int dim2,
int dim3,
int dim4 );
41 void ResizeTable( std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > >* v,
int dim0 ,
int dim1,
int dim2,
int dim3,
int dim4,
int dim5 );
42 void ResizeTable( std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > > >* v,
int dim0 ,
int dim1,
int dim2,
int dim3,
int dim4,
int dim5,
int dim6 );
43 void ResizeTable( std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > > >* v,
int dim0 ,
int dim1,
int dim2,
int dim3,
int dim4,
int* dim5GetNxmaxFromDimI ,
int dim6 );
46 template<
typename T>
int ReadTable( std::vector<T>* v, std::istream *table );
47 int ReadTable( std::vector<double>* v, std::istream *table );
49 template<
typename T>
int ReadFlexibleVector(std::vector<T>* v, std::istream* table,
bool nProcLast=
false);
50 int ReadFlexibleVector( std::vector<double >* v, std::istream *table ,
bool nProcLast =
false );
52 int WriteTable( std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > > >* v, std::ostream *table ,
bool DivByNevt=
false ,
int Nevt=1 );
53 int WriteTable( std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > >* v, std::ostream *table ,
bool DivByNevt=
false,
int Nevt=1 );
54 int WriteTable( std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > >* v, std::ostream *table ,
bool DivByNevt=
false,
int Nevt=1 );
55 int WriteTable( std::vector<std::vector<std::vector<std::vector<double > > > >* v, std::ostream *table ,
bool DivByNevt=
false,
int Nevt=1 );
56 int WriteTable( std::vector<std::vector<std::vector<double > > >* v, std::ostream *table ,
bool DivByNevt=
false,
int Nevt=1 );
57 int WriteTable( std::vector<std::vector<double > >* v, std::ostream *table ,
bool DivByNevt=
false,
int Nevt=1 );
58 int WriteTable( std::vector<double >* v, std::ostream *table ,
bool DivByNevt=
false,
int Nevt=1 );
60 int WriteFlexibleTable( std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > > >* v, std::ostream *table ,
bool DivByNevt=
false ,
int Nevt=1 ,
bool nProcLast =
false );
61 int WriteFlexibleTable( std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > >* v, std::ostream *table ,
bool DivByNevt=
false,
int Nevt=1 ,
bool nProcLast =
false );
62 int WriteFlexibleTable( std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > >* v, std::ostream *table ,
bool DivByNevt=
false,
int Nevt=1 ,
bool nProcLast =
false );
63 int WriteFlexibleTable( std::vector<std::vector<std::vector<std::vector<double > > > >* v, std::ostream *table ,
bool DivByNevt=
false,
int Nevt=1 ,
bool nProcLast =
false );
64 int WriteFlexibleTable( std::vector<std::vector<std::vector<double > > >* v, std::ostream *table ,
bool DivByNevt=
false,
int Nevt=1 ,
bool nProcLast =
false );
65 int WriteFlexibleTable( std::vector<std::vector<double > >* v, std::ostream *table ,
bool DivByNevt=
false,
int Nevt=1 ,
bool nProcLast =
false );
66 int WriteFlexibleTable( std::vector<double >* v, std::ostream *table ,
bool DivByNevt=
false,
int Nevt=1 ,
bool nProcLast =
false );
68 void AddTableToAnotherTable( std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > > >* vSum, std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > > >* vAdd,
double w1 = 0,
double w2 = 0 );
69 void AddTableToAnotherTable( std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > >* vSum, std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > > >* vAdd,
double w1 = 1,
double w2 = 1 );
70 void AddTableToAnotherTable( std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > >* vSum, std::vector<std::vector<std::vector<std::vector<std::vector<double > > > > >* vAdd,
double w1 = 1,
double w2 = 1 );
71 void AddTableToAnotherTable( std::vector<std::vector<std::vector<std::vector<double > > > >* vSum, std::vector<std::vector<std::vector<std::vector<double > > > >* vAdd,
double w1 = 1,
double w2 = 1 );
72 void AddTableToAnotherTable( std::vector<std::vector<std::vector<double > > >* vSum, std::vector<std::vector<std::vector<double > > >* vAdd,
double w1 = 1,
double w2 = 1 );
73 void AddTableToAnotherTable( std::vector<std::vector<double > >* vSum, std::vector<std::vector<double > >* vAdd,
double w1 = 1,
double w2 = 1 );
74 void AddTableToAnotherTable( std::vector<double >* vSum, std::vector<double >* vAdd,
double w1 = 1,
double w2 = 1 );
78 int GetIRef()
const {
return IRef;}
79 int GetIDataFlag()
const {
return IDataFlag;}
80 int GetIAddMultFlag()
const {
return IAddMultFlag;}
81 int GetIContrFlag1()
const {
return IContrFlag1;}
82 int GetIContrFlag2()
const {
return IContrFlag2;}
83 int GetNScaleDep()
const {
return NScaleDep;}
84 int GetNpow()
const {
return Npow;}
85 long long int GetNevt()
const {
return Nevt;}
87 int GetXIndex(
int Obsbin,
int x1bin,
int x2bin =0)
const ;
89 void SetNlojetDefaults();
90 void SetIXsectUnits(
int n){IXsectUnits = n;}
91 void SetIDataFlag(
int n){IDataFlag = n;}
92 void SetIAddMultFlag(
int n){IAddMultFlag = n;}
93 void SetIContrFlag1(
int n){IContrFlag1 = n;}
94 void SetIContrFlag2(
int n){IContrFlag2 = n;}
95 void SetNScaleDep(
int n){NScaleDep = n;}
96 void SetNlojetDescr(){
97 CodeDescript.push_back(
"NLOJet++_4.1.3");
98 CodeDescript.push_back(
"Z. Nagy, Phys. Rev. Lett. 88, 122003 (2002),");
99 CodeDescript.push_back(
"Z. Nagy, Phys. Rev. D68, 094002 (2003).");
103 bool IsLO()
const {
return IContrFlag1==1 && IContrFlag2==1;}
104 bool IsNLO()
const {
return IContrFlag1==1 && IContrFlag2==2;}
105 bool IsReference()
const {
return IRef>0;};
106 int GetTotalScalevars()
const ;
107 int GetTotalScalenodes()
const ;
109 static const int DividebyNevt = 1;
112 int GetScaledimfromvar(
int scalevar)
const;
128 std::vector < std::string > CtrbDescript;
130 std::vector < std::string > CodeDescript;
132 std::vector < std::string > UncDescr;
134 std::vector < std::string > CorDescr;
135 std::vector < double > Xcenter;
136 std::vector < double > Value;
137 std::vector < std::vector < double > > UncorLo;
138 std::vector < std::vector < double > > UncorHi;
139 std::vector < std::vector < double > > CorrLo;
140 std::vector < std::vector < double > > CorrHi;
142 std::vector < std::vector < double > > matrixelement;
143 std::vector < double > fact;
146 unsigned long long int Nevt;
149 std::vector < int > NPDFPDG;
152 std::vector < int > NFFPDG;
160 std::vector < double > Hxlim1;
161 std::vector < std::vector < double > > XNode1;
163 std::vector < double > Hxlim2;
164 std::vector < std::vector < double > > XNode2;
165 std::vector < int > Nztot;
166 std::vector < double > Hzlim;
167 std::vector < std::vector < double > > ZNode;
170 std::vector < int > Iscale;
172 std::vector < std::vector < std::string > > ScaleDescript;
176 std::vector < int > Nscalevar;
177 std::vector < int > Nscalenode;
178 std::vector < std::vector < double > > ScaleFac;
179 std::vector < std::vector < std::vector < std::vector < double > > > > ScaleNode;
181 std::vector < std::vector < std::vector < std::vector < std::vector < double > > > > > SigmaTilde;
186 std::vector < std::vector < std::vector < std::vector < std::vector < double > > > > > SigmaTildeMuIndep;
187 std::vector < std::vector < std::vector < std::vector < std::vector < double > > > > > SigmaTildeMuFDep;
188 std::vector < std::vector < std::vector < std::vector < std::vector < double > > > > > SigmaTildeMuRDep;
190 std::vector < std::vector < double > > SigmaRefMixed;
191 std::vector < std::vector < double > > SigmaRef_s1;
192 std::vector < std::vector < double > > SigmaRef_s2;
193 int NscalenodeScale1;
194 int NscalenodeScale2;
196 std::vector < std::vector < double > > ScaleNode1;
197 std::vector < std::vector < double > > ScaleNode2;
205 int fastNLOCoefficients::ReadFlexibleVector(std::vector<T>* v, std::istream* table,
bool nProcLast){
208 *table >> size; nn++;
210 for(
unsigned int i0=0;i0<v->size();i0++){
211 nn += ReadFlexibleVector(&(v->at(i0)),table,nProcLast);
225 template<
typename T>
int fastNLOCoefficients::ReadTable( std::vector<T>* v, std::istream *table ){
227 for(
unsigned int i0=0;i0<v->size();i0++){
int GetNxmax(const std::vector< double > *xGrid1, const std::vector< double > *xGrid2)
get maximum x-index
Definition: fastNLOCreate.cc:2676
Definition: fastNLOCreate.h:22
Definition: fastNLOCoefficients.h:14
virtual void ReadTable()
Definition: fastNLOTable.cc:74
int Read(std::istream *table)
Definition: fastNLOCoefficients.cc:20
void WriteTable()
Write fastNLO table to disk.
Definition: fastNLOCreate.cc:2911
int Write(std::ostream *table, int option=0)
Definition: fastNLOCoefficients.cc:369
Definition: fastNLOTable.h:20
int GetXIndex(const int &Obsbin, const int &x1bin, const int &x2bin) const
get x-index in case of two hadrons.
Definition: fastNLOCreate.cc:2655