fast pQCD calculations for hadron-induced processes
fastNLOCoeffAddFlex.h
1 #ifndef __fastNLOCoeffAddFlex__
2 #define __fastNLOCoeffAddFlex__
3 
4 #include "fastNLOCoeffAddBase.h"
5 #include "fastNLOConstants.h"
6 
7 
9 
10  friend class fastNLOTable;
11  friend class fastNLOReader;
12  friend class fastNLOCreate;
13 
14 public:
15  fastNLOCoeffAddFlex() = delete;
16  fastNLOCoeffAddFlex(int NObsBin, int iLOord);
17  explicit fastNLOCoeffAddFlex(const fastNLOCoeffBase& base , int iLOord);
18  virtual ~fastNLOCoeffAddFlex(){;}
19  virtual fastNLOCoeffAddFlex* Clone() const;
20  static bool CheckCoeffConstants(const fastNLOCoeffBase* c, bool quiet = false) ;
21  virtual void Read(std::istream& table);
22  void ReadRest(std::istream& table);
23  virtual void Write(std::ostream& table, int ITabVersionWrite);
24  virtual void Print(int iprint) const;
25  virtual void Add(const fastNLOCoeffAddBase& other, fastNLO::EMerge moption = fastNLO::kMerge);
26 
27  // Manipulate coefficient bins
28  virtual void Clear();
29  virtual void NormalizeCoefficients(double wgt=1);
30  virtual void NormalizeCoefficients(const std::vector<std::vector<double> >& wgtProcBin);
31  virtual void MultiplyCoefficientsByConstant(double fact);
32  virtual void MultiplyBin(unsigned int iObsIdx, double fact);
33  virtual void MultiplyBinProc(unsigned int iObsIdx, unsigned int iProc, double fact);
34  virtual void EraseBin(unsigned int iObsIdx);
35  virtual void CatBin(const fastNLOCoeffAddFlex& other, unsigned int iObsIdx);
36 
37  unsigned int GetNScaleNode1(int iObsBin) const { return ScaleNode1[iObsBin].size(); };
38  unsigned int GetNScaleNode2(int iObsBin) const { return ScaleNode2[iObsBin].size(); };
39  double GetScaleNode1(int iObsBin, int iNode) const { return ScaleNode1[iObsBin][iNode]; };
40  double GetScaleNode2(int iObsBin, int iNode) const { return ScaleNode2[iObsBin][iNode]; };
41  std::vector < double > GetScaleNodes1(int iObsBin) const { return ScaleNode1[iObsBin]; };
42  std::vector < double > GetScaleNodes2(int iObsBin) const { return ScaleNode2[iObsBin]; };
43  bool IsCompatible(const fastNLOCoeffAddFlex& other) const;
44  bool IsCatenable(const fastNLOCoeffAddFlex& other) const;
45  std::vector<fastNLO::v5d*> AccessSigmaTildes() {
46  return {&SigmaTildeMuIndep,&SigmaTildeMuRDep,&SigmaTildeMuFDep,&SigmaTildeMuRRDep,&SigmaTildeMuFFDep,&SigmaTildeMuRFDep};
47  };
48  std::vector<const fastNLO::v5d*> GetSigmaTildes() const {
49  return {&SigmaTildeMuIndep,&SigmaTildeMuRDep,&SigmaTildeMuFDep,&SigmaTildeMuRRDep,&SigmaTildeMuFFDep,&SigmaTildeMuRFDep};
50  };
51 
52 protected:
53 
54  void ReadCoeffAddFlex(std::istream& table);
55 
56  int fILOord; // obtained from Scenario
57  int fSTildeDISFormat = 1; // format of sigma-tilde coefficients (0: log(mu2/q2), 1: log(mu2))
58 
59  // SigmaTilde [NObsBins] ['n' x-nodes] [n s1-Nodes] [n s2-Nodes] [nsubproc]
60  fastNLO::v5d SigmaTildeMuIndep; // units are (p)barn * Nevt / BinSize
61  fastNLO::v5d SigmaTildeMuFDep;
62  fastNLO::v5d SigmaTildeMuRDep;
63  fastNLO::v5d SigmaTildeMuRRDep;
64  fastNLO::v5d SigmaTildeMuFFDep;
65  fastNLO::v5d SigmaTildeMuRFDep;
66  // SigmaRef [NObsBins] [nsubproc]
67  fastNLO::v2d SigmaRefMixed; // units are (p)barn * Nevt / BinSize
68  fastNLO::v2d SigmaRef_s1;
69  fastNLO::v2d SigmaRef_s2;
70  //int NscalenodeScale1;
71  //int NscalenodeScale2;
72  // ScaleNodeXY [ObsBin] [NscalenodeScaleX]
73  fastNLO::v2d ScaleNode1;
74  fastNLO::v2d ScaleNode2;
75 
76 public:
77  fastNLO::v3d AlphasTwoPi;
78  fastNLO::v5d PdfLcMuVar;
79  fastNLO::v5d PdfXfx;
80 
81 };
82 
83 #endif
void ReadCoeffAddFlex(std::istream &table)
Get access to sigma tilde.
Definition: fastNLOCoeffAddFlex.cc:65
bool IsCompatible(const fastNLOCoeffAddFlex &other) const
check for compatibilty for adding/merging of two tables
Definition: fastNLOCoeffAddFlex.cc:361
virtual void MultiplyBinProc(unsigned int iObsIdx, unsigned int iProc, double fact)
Multiply coefficients of one bin and subprocess a factor.
Definition: fastNLOCoeffAddFlex.cc:448
virtual void NormalizeCoefficients(double wgt=1)
Set number of events to given wgt and re-normalize coefficients accordingly.
Definition: fastNLOCoeffAddFlex.cc:401
Definition: fastNLOCoeffBase.h:15
bool IsCatenable(const fastNLOCoeffAddFlex &other) const
Check for compatibility of two contributions for merging/adding.
Definition: fastNLOCoeffAddFlex.cc:391
Definition: fastNLOCreate.h:22
std::vector< const fastNLO::v5d * > GetSigmaTildes() const
Get access to sigma tilde.
Definition: fastNLOCoeffAddFlex.h:48
virtual void MultiplyCoefficientsByConstant(double fact)
Multiply all coefficients of all bins by a constant factor.
Definition: fastNLOCoeffAddFlex.cc:432
virtual void CatBin(const fastNLOCoeffAddFlex &other, unsigned int iObsIdx)
Catenate observable to table.
Definition: fastNLOCoeffAddFlex.cc:527
Definition: fastNLOReader.h:17
virtual void Clear()
Clear all coefficients and event counters.
Definition: fastNLOCoeffAddFlex.cc:345
virtual void MultiplyBin(unsigned int iObsIdx, double fact)
Multiply coefficients of one bin a factor (iObsIdx starting with index 0)
Definition: fastNLOCoeffAddFlex.cc:440
Definition: fastNLOCoeffAddFlex.h:8
Definition: fastNLOCoeffAddBase.h:57
virtual void Read(std::istream &table)
_____________________________________________________________________________________________________...
Definition: fastNLOCoeffAddFlex.cc:49
Definition: fastNLOTable.h:20
virtual fastNLOCoeffAddFlex * Clone() const
returns &#39;new&#39; copy of this instance.
Definition: fastNLOCoeffAddFlex.cc:42
virtual void EraseBin(unsigned int iObsIdx)
Erase observable bin from table.
Definition: fastNLOCoeffAddFlex.cc:509