3 #ifndef __fastNLOTable__ 4 #define __fastNLOTable__ 11 #include "fastNLOCoeffBase.h" 12 #include "fastNLOCoeffAddFix.h" 13 #include "fastNLOCoeffAddFlex.h" 14 #include "fastNLOCoeffData.h" 15 #include "fastNLOCoeffMult.h" 16 #include "fastNLOConstants.h" 32 bool IsCompatibleScenario(
const fastNLOTable& other)
const;
34 bool IsCatenableScenario(
const fastNLOTable& other)
const;
43 std::string GetFilename()
const {
return ffilename;}
44 void SetFilename(std::string name){ffilename=name;}
46 int GetItabversion()
const {
return Itabversion;}
47 void SetItabversion(
int version){Itabversion = version;}
49 std::string GetScenName()
const {
return ScenName;}
50 void SetScenName(std::string name){ScenName = name;}
53 int GetNcontrib()
const;
56 int GetOutputPrecision()
const {
return fPrecision;}
57 void SetOutputPrecision(
int precision) {fPrecision = precision;}
81 std::vector < std::pair < double, double > >
GetObsBinsBounds(
unsigned int iDim)
const;
96 std::vector < std::pair < double, double > >
GetDim1BinBounds(
unsigned int iDim0Bin)
const;
98 std::vector < std::pair < double, double > >
GetDim2BinBounds(
unsigned int iDim0Bin,
unsigned int iDim1Bin)
const;
100 std::vector < std::pair < double, double > >
GetObsBinDimBounds(
unsigned int iObs)
const;
102 std::pair < double, double >
GetObsBinDimBounds(
unsigned int iObs,
unsigned int iDim)
const;
114 unsigned int GetNDim2Bins(
unsigned int iDim0Bin,
unsigned int iDim1Bin)
const;
120 int GetODim2Bin(
double var0,
double var1,
double var2)
const;
148 bool IsNorm()
const {
return INormFlag == 0 ? false :
true;}
158 void SetScDescr(std::vector <std::string> ScDescr);
162 void SetIpublunits(
int unit){Ipublunits = unit;}
166 void SetEcms(
double E) {Ecms = E;}
170 void SetLoOrder(
int LOOrd);
174 void SetNObsBin(
int NObs);
177 std::vector < std::vector <std::pair<double,double> > >
GetBins()
const {
return Bin;};
178 void SetBins(std::vector < std::vector <std::pair<double,double> > >);
182 void SetBinSize(std::vector < double >);
186 void EraseBinFromTable(
unsigned int iObsIdx);
187 template<
typename T>
void EraseBin(std::vector<T>& v,
unsigned int idx);
191 void MultiplyBinInTable(
unsigned int iObsIdx,
double fact);
192 void MultiplyBinSize(
unsigned int iObsIdx,
double fact);
193 template<
typename T>
void MultiplyBin(std::vector<T>& v,
unsigned int idx,
double fact);
195 void CatBinToTable(
const fastNLOTable& other,
unsigned int iObsIdx,
unsigned int table_count);
196 void CatBin(
const fastNLOTable& other,
unsigned int iObsIdx,
unsigned int table_count);
203 void SetDimLabel(std::string label,
unsigned int iDim,
bool IsDiff =
true);
204 void SetNumDiffBin(
int iDiff) {NDim=iDiff; DimLabel.resize(NDim); IDiffBin.resize(NDim);}
215 void PrintContributionSummary(
int iprint)
const;
218 void PrintScenario(
int iprint)
const;
219 virtual void Print(
int iprint)
const;
225 void MergeTables(
const std::vector<fastNLOTable*>& tables, fastNLO::EMerge option=fastNLO::kMerge,
double cutRMS=0 );
245 bool cmp(
const double x1,
const double x2)
const;
246 bool cmp(
const std::vector<double>& x1,
const std::vector<double >& x2)
const;
247 bool cmp(
const std::vector<std::vector<double> >& x1,
const std::vector<std::vector<double > >& x2)
const;
248 bool cmp(
const std::vector<std::vector<std::pair<double,double> > >& x1,
const std::vector<std::vector<std::pair<double,double> > >& x2)
const;
262 std::string ffilename;
265 std::string ScenName;
268 static bool fWelcomeOnce;
272 void WriteScenario(std::ostream& table);
273 void ReadScenario(std::istream& table);
277 std::vector < fastNLOCoeffBase* > fCoeff;
283 std::vector <std::string> ScDescript;
286 unsigned int NObsBin;
289 std::vector <std::string> DimLabel;
290 std::vector <int> IDiffBin;
292 std::vector < std::vector <std::pair<double,double> > > Bin;
293 std::vector <double> BinSize;
297 std::string DenomTable;
298 std::vector <int> IDivLoPointer;
299 std::vector <int> IDivUpPointer;
bool IsCatenableHeader(const fastNLOTable &other) const
Compare header with header of another table.
Definition: fastNLOTable.cc:2392
void DeleteAllCoeffTable()
Handle coefficient tables.
Definition: fastNLOTable.cc:65
unsigned int GetIDim2Bin(unsigned int iObs) const
Return bin no. in 3rd dim. for obs. bin iObs.
Definition: fastNLOTable.cc:1416
void AddTable(const fastNLOTable &rhs, fastNLO::EMerge option=fastNLO::kMerge)
'merge'
Definition: fastNLOTable.cc:844
int GetINormFlag() const
Definition: fastNLOTable.h:146
void MergeTables(const std::vector< fastNLOTable *> &tables, fastNLO::EMerge option=fastNLO::kMerge, double cutRMS=0)
'merge' (also supports 'median' and 'mean')
Definition: fastNLOTable.cc:558
unsigned int GetNumDiffBin() const
Get dimensionality of calculation: single-, double-, or triple-differential.
Definition: fastNLOTable.h:64
int ReadHeader(std::istream &table)
read header of table (BlockA1)
Definition: fastNLOTable.cc:93
void PrintTableInfo(const int iprint=0) const
Print basic info about fastNLO table and its contributions.
Definition: fastNLOTable.cc:1916
int GetIDiffBin(int bin) const
Get if dimension is 'truly differential' or bin-integrated (divided by bin width or not) ...
Definition: fastNLOTable.h:130
bool IsCompatibleHeader(const fastNLOTable &other) const
Compare header with header of another table.
Definition: fastNLOTable.cc:2367
double GetBinSize(int bin) const
Get BinSize for bin = BinSizeDim1 < * BinSizeDim2 >
Definition: fastNLOTable.h:132
std::vector< std::pair< double, double > > GetObsBinDimBounds(unsigned int iObs) const
Return std::vector of pairs with lower and upper bin bounds for all dimensions for a given obs...
Definition: fastNLOTable.cc:1312
std::string GetDimLabel(int iDim) const
Get dimension label for dimension iDim.
Definition: fastNLOTable.h:136
int GetLoOrder() const
get/set power of alpha_s for LO process
Definition: fastNLOTable.h:169
unsigned int GetNDim1Bins(unsigned int iDim0Bin) const
Return no. of bins in 2nd dimension for given bin in 1st dim.
Definition: fastNLOTable.cc:1477
std::istream * OpenFileRead()
open std::ifstream for reading table
Definition: fastNLOTable.cc:2304
std::vector< std::pair< double, double > > GetDim1BinBounds(unsigned int iDim0Bin) const
Return std::vector of pairs with unique bin bounds of 2nd dim. for 'iDim0Bin' of 1st dim...
Definition: fastNLOTable.cc:1271
unsigned int GetNDim0Bins() const
Return no. of bins in 1st dimension.
Definition: fastNLOTable.cc:1467
void ReadCoeffTables(std::istream &table, int nCoeff)
Definition: fastNLOTable.cc:129
void MergeTable(const fastNLOTable &rhs, fastNLO::EMerge option=fastNLO::kMerge)
'merge'
Definition: fastNLOTable.cc:820
int GetIpublunits() const
get/set cross section units of published results (pb = 12, fb = 15, ...)
Definition: fastNLOTable.h:161
std::string GetDenomTable() const
Get filename of normalization table for INormFlag<0.
Definition: fastNLOTable.h:150
int GetObsBinNumber(const std::vector< double > &vobs) const
Return observable bin no. for std::vector of values obs0=var0,obs1=var1,...; -1 if outside range...
std::vector< double > GetObsBinsLoBounds(unsigned int iDim) const
Return std::vector of lower bin bounds in dim. iDim for all obs. bins.
Definition: fastNLOTable.cc:1177
std::vector< std::vector< std::pair< double, double > > > GetBins() const
get/set Bin vector
Definition: fastNLOTable.h:177
Definition: fastNLOCoeffBase.h:15
Definition: fastNLOCoeffData.h:8
double GetObsBinUpBound(unsigned int iObs, unsigned int iDim) const
Return upper bin bound for obs. bin iObs in dim. iDim.
Definition: fastNLOTable.cc:1162
void PrintHeader(int iprint) const
Print header variables (BlockA1) to screen.
Definition: fastNLOTable.cc:2420
std::ostream * OpenFileWrite(bool compress=false)
open std::ofstream for writing tables to ffilename
Definition: fastNLOTable.cc:2336
virtual void ReadTable()
Definition: fastNLOTable.cc:74
std::vector< double > GetObsBinsUpBounds(unsigned int iDim) const
Return std::vector of upper bin bounds in dim. iDim for all obs. bins.
Definition: fastNLOTable.cc:1193
void PrintWelcomeMessage()
Say hello to fastNLO user.
Definition: fastNLOTable.cc:2440
unsigned int GetNDim2Bins(unsigned int iDim0Bin, unsigned int iDim1Bin) const
Return no. of bins in 3rd dimension for given bins in 1st and 2nd dim.
Definition: fastNLOTable.cc:1499
fastNLOCoeffAddBase * GetReferenceTable(fastNLO::ESMOrder eOrder) const
Returns pointer to reference table if available, else returns NULL pointer.
Definition: fastNLOTable.cc:1122
bool IsNorm() const
Get normalization logical (def=false)
Definition: fastNLOTable.h:148
unsigned int GetIDim1Bin(unsigned int iObs) const
Return bin no. in 2nd dim. for obs. bin iObs.
Definition: fastNLOTable.cc:1374
std::vector< std::pair< double, double > > GetDim0BinBounds() const
Getters for multidimensional binning, here called DimBins.
Definition: fastNLOTable.cc:1261
int GetODim2Bin(double var0, double var1, double var2) const
Return bin no. in 3rd dim. for obs0=var0,obs1=var1,obs2=var2; -1 if outside range.
Definition: fastNLOTable.cc:1562
int GetODim0Bin(double var0) const
Return bin no. in 1st dim. for obs0=var0; -1 if outside range.
Definition: fastNLOTable.cc:1523
std::vector< std::pair< double, double > > GetDim2BinBounds(unsigned int iDim0Bin, unsigned int iDim1Bin) const
Return std::vector of pairs with unique bin bounds of 3rd dim. for 'iDim0Bin' and 'iDim1Bin' of 1st t...
Definition: fastNLOTable.cc:1291
virtual void WriteTable()
Definition: fastNLOTable.cc:178
void CloseFileWrite(std::ostream &table)
Definition: fastNLOTable.cc:2357
double GetObsBinsLoBoundsMin(unsigned int iDim) const
Return minimum value of all lower bin bounds for dim. iDim.
Definition: fastNLOTable.cc:1209
double GetObsBinLoBound(unsigned int iObs, unsigned int iDim) const
Getters for linear array of observable bins "ObsBin" running from 0->(NObsBin-1)
Definition: fastNLOTable.cc:1147
unsigned int GetIDim0Bin(unsigned int iObs) const
Return bin no. in 1st dim. for obs. bin iObs.
Definition: fastNLOTable.cc:1344
std::vector< std::string > GetDimLabels() const
Get vector of dimensions labels.
Definition: fastNLOTable.h:134
void PrintFastNLOTableConstants(const int iprint=0) const
Print (technical) constants of fastNLO table (use iprint) for level of details.
Definition: fastNLOTable.cc:1909
double GetEcms() const
get/set center-of-mass energy in units of GeV
Definition: fastNLOTable.h:165
double GetObsBinsUpBoundsMax(unsigned int iDim) const
Return maximum value of all upper bin bounds for dim. iDim.
Definition: fastNLOTable.cc:1227
std::vector< std::string > GetScDescr() const
get/set scenario description
Definition: fastNLOTable.cc:1679
Definition: fastNLOCoeffAddBase.h:57
std::vector< std::pair< double, double > > GetObsBinsBounds(unsigned int iDim) const
Return std::vector of pairs with lower and upper bin bounds in dim. iDim for all obs. bins.
Definition: fastNLOTable.cc:1245
void CloseFileRead(std::istream &table)
Definition: fastNLOTable.cc:2328
Definition: fastNLOTable.h:20
fastNLOCoeffData * GetDataTable() const
Returns pointer to data table if available, else returns NULL pointer.
Definition: fastNLOTable.cc:1110
unsigned int GetNObsBin() const
get/set no. of observable bins
Definition: fastNLOTable.h:173
int GetODim1Bin(double var0, double var1) const
Return bin no. in 2nd dim. for obs0=var0,obs1=var1; -1 if outside range.
Definition: fastNLOTable.cc:1542
void SetDimLabel(std::string label, unsigned int iDim, bool IsDiff=true)
Definition: fastNLOTable.cc:1036
std::string GetXSDescr() const
Get cross section from analysis description.
Definition: fastNLOTable.cc:1669
std::vector< double > GetBinSize() const
get/set BinSize vector
Definition: fastNLOTable.h:181
void WriteHeader(std::ostream &table)
write (or cout) hader using std::ostream
Definition: fastNLOTable.cc:217
std::string GetRivetId() const
Definition: fastNLOTable.cc:1654