ATLAS Offline Software
EtaJESCalibStep.h
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // EtaJESCalibStep.h
8 // Header file for class EtaJESCalibStep
9 // Author: Max Swiatlowski <mswiatlo@cern.ch>
11 #ifndef JETCALIBTOOLS_ETAJESCALIBSTEP_H
12 #define JETCALIBTOOLS_ETAJESCALIBSTEP_H 1
13 
14 #include <string.h>
15 
16 #include <TString.h>
17 #include <TEnv.h>
18 
19 #include "AsgTools/AsgTool.h"
20 #include "AsgTools/AsgToolMacros.h"
21 #include "AsgTools/ToolHandle.h"
23 
25 
28 
30 
32  : public asg::AsgTool,
33  virtual public IJetCalibStep {
34 
36 
37  public:
38  EtaJESCalibStep(const std::string& name = "EtaJESCalibStep");
39 
40  virtual StatusCode initialize() override;
41  virtual StatusCode calibrate(xAOD::JetContainer&) const override;
42 
43 private:
44  // support functions to extract information from text files
45  double getLogPolN(const double *factors, double x) const;
46  double getLogPolNSlope(const double *factors, double x) const ;
47  int getEtaBin(double eta_det) const;
48  bool readMCJESFromText() ;
49  bool readMCJESFromHists() ;
50  void loadSplineHists(const std::string & fileName, const std::string &etajes_name) ;
51 
53  double getJES(const double X, const double Y=0, const double Emax=-1) const;
55  double getEtaCorr( double X, double Y=0) const;
57  double getEmaxJES(const double Y) const;
59  double getLowPtJES(double E_uncorr, double eta_det) const ;
60 
61  double getSplineCorr(const int etaBin, double E) const;
62  double getSplineSlope(const int ieta, const double minE) const;
63 
64  Gaudi::Property<std::string> m_jetInScale {this, "InScale", "JetPileupScaleMomentum", "Starting jet scale"};
65  Gaudi::Property<std::string> m_jetOutScale {this, "OutScale", "JetEtaJESScaleMomentum", "Ending jet scale"};
66 
68  Gaudi::Property< std::string > m_constantFileName { this, "CalibConstantFile", "/afs/cern.ch/work/s/stapiaar/JetDev4/athena/JetToolHelpers/data/file_JES.config", "text file containing constants" };
70  Gaudi::Property< std::string > m_jetAlgo { this, "JetAlgo", "AntiKt4EMPFlow", "jet collection" };
71  Gaudi::Property< float > m_minPt_JES = {this, "MinPtForETAJES",15, "min pT"};
72  Gaudi::Property< bool > m_freezeJESatHighE = {this, "FreezeJEScorrectionatHighE",false, " freeze at high e"};
73  Gaudi::Property< float > m_lowPtExtrap = {this, "LowPtJESExtrapolationMethod", 0, " low pt etrap"};
74  Gaudi::Property< float > m_lowPtMinR = {this, "LowPtJESExtrapolationMinimumResponse", 0.25, " low pt etrap min"};
75 
76  Gaudi::Property< float > m_minPt_EtaCorr = {this, "MinPtForEtaCorr" ,8. , ""};
77  Gaudi::Property< float > m_maxE_EtaCorr = {this, "MaxEForEtaCorr" ,2500. , ""};
78 
79  Gaudi::Property< std::string > m_histoFileName { this, "HistoFile", "none", "root file containing histos for spline calib" };
80  Gaudi::Property< bool > m_useSpline = {this, "UseSpline",false, " use spline"};
81 
83  Gaudi::Property<std::vector<double> > m_etaBins {this, "EtaBins", {} ,""};
84 
85  ToolHandle<JetHelper::IVarTool> m_vartoolE{this, "VarToolE", "VarTool", "InputVariable instance E (or pT?)" };
87  ToolHandle<JetHelper::IVarTool> m_vartoolEta{this, "VarToolEta", "VarTool", "InputVariable instance eta (or rapididty?)" };
88 
89  // protected:
90  unsigned int m_nPar{}; // number of parameters in config file
91  const static unsigned int s_nEtaBins = 90;
92  const static unsigned int s_nParMax = 9;
99 
100 
101  TAxis * m_etaBinAxis{};
102 
103  std::vector<std::unique_ptr<TH1> > m_etajesFactors;
104 
105 
106 };
107 
108 #endif
109 
EtaJESCalibStep::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: EtaJESCalibStep.cxx:23
EtaJESCalibStep::s_nEtaBins
static const unsigned int s_nEtaBins
Definition: EtaJESCalibStep.h:91
EtaJESCalibStep
Definition: EtaJESCalibStep.h:33
EtaJESCalibStep::m_JES_MinPt_Slopes
double m_JES_MinPt_Slopes[s_nEtaBins]
Definition: EtaJESCalibStep.h:96
EtaJESCalibStep::m_constantFileName
Gaudi::Property< std::string > m_constantFileName
name of the text file
Definition: EtaJESCalibStep.h:68
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
PropertyWrapper.h
EtaJESCalibStep::getSplineSlope
double getSplineSlope(const int ieta, const double minE) const
Definition: EtaJESCalibStep.cxx:338
EtaJESCalibStep::m_etaCorrFactors
double m_etaCorrFactors[s_nEtaBins][s_nParMax]
Definition: EtaJESCalibStep.h:94
EtaJESCalibStep::getEtaBin
int getEtaBin(double eta_det) const
Definition: EtaJESCalibStep.cxx:301
EtaJESCalibStep::loadSplineHists
void loadSplineHists(const std::string &fileName, const std::string &etajes_name)
Definition: EtaJESCalibStep.cxx:318
EtaJESCalibStep::m_etaBinAxis
TAxis * m_etaBinAxis
Definition: EtaJESCalibStep.h:101
EtaJESCalibStep::m_jetInScale
Gaudi::Property< std::string > m_jetInScale
Definition: EtaJESCalibStep.h:64
EtaJESCalibStep::m_nPar
unsigned int m_nPar
Definition: EtaJESCalibStep.h:90
EtaJESCalibStep::readMCJESFromHists
bool readMCJESFromHists()
Definition: EtaJESCalibStep.cxx:156
EtaJESCalibStep::m_minPt_EtaCorr
Gaudi::Property< float > m_minPt_EtaCorr
Definition: EtaJESCalibStep.h:76
EtaJESCalibStep::m_etajesFactors
std::vector< std::unique_ptr< TH1 > > m_etajesFactors
Definition: EtaJESCalibStep.h:103
IVarTool.h
EtaJESCalibStep::m_JES_MinPt_E
double m_JES_MinPt_E[s_nEtaBins]
Definition: EtaJESCalibStep.h:97
EtaJESCalibStep::m_jetOutScale
Gaudi::Property< std::string > m_jetOutScale
Definition: EtaJESCalibStep.h:65
x
#define x
IJetCalibStep.h
Monitored::X
@ X
Definition: HistogramFillerUtils.h:24
EtaJESCalibStep::m_etaBins
Gaudi::Property< std::vector< double > > m_etaBins
Eta bins if other than 0.1 steps from -4.5 to 4.5.
Definition: EtaJESCalibStep.h:83
EtaJESCalibStep::m_lowPtExtrap
Gaudi::Property< float > m_lowPtExtrap
Definition: EtaJESCalibStep.h:73
xAOD::etaBin
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap etaBin
Definition: L2StandAloneMuon_v1.cxx:149
EtaJESCalibStep::getLogPolNSlope
double getLogPolNSlope(const double *factors, double x) const
Definition: EtaJESCalibStep.cxx:309
EtaJESCalibStep::m_energyFreezeJES
double m_energyFreezeJES[s_nEtaBins]
Definition: EtaJESCalibStep.h:95
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
EtaJESCalibStep::getEtaCorr
double getEtaCorr(double X, double Y=0) const
return Eta correction
Definition: EtaJESCalibStep.cxx:269
EtaJESCalibStep::calibrate
virtual StatusCode calibrate(xAOD::JetContainer &) const override
Apply calibration to a jet container.
Definition: EtaJESCalibStep.cxx:46
EtaJESCalibStep::m_freezeJESatHighE
Gaudi::Property< bool > m_freezeJESatHighE
Definition: EtaJESCalibStep.h:72
DataVector
Derived DataVector<T>.
Definition: DataVector.h:795
IJetCalibTool.h
EtaJESCalibStep::EtaJESCalibStep
EtaJESCalibStep(const std::string &name="EtaJESCalibStep")
Definition: EtaJESCalibStep.cxx:19
Monitored::Y
@ Y
Definition: HistogramFillerUtils.h:24
EtaJESCalibStep::m_vartoolEta
ToolHandle< JetHelper::IVarTool > m_vartoolEta
interface for xAOD::jet variable to be defined by user, this must correspond to jet Eta in currect ve...
Definition: EtaJESCalibStep.h:87
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
EtaJESCalibStep::getLowPtJES
double getLowPtJES(double E_uncorr, double eta_det) const
deal with low pt jets
Definition: EtaJESCalibStep.cxx:249
EtaJESCalibStep::readMCJESFromText
bool readMCJESFromText()
Definition: EtaJESCalibStep.cxx:89
EtaJESCalibStep::m_lowPtMinR
Gaudi::Property< float > m_lowPtMinR
Definition: EtaJESCalibStep.h:74
EtaJESCalibStep::m_histoFileName
Gaudi::Property< std::string > m_histoFileName
Definition: EtaJESCalibStep.h:79
EventInfo.h
IJetCalibStep
Definition: IJetCalibStep.h:27
EtaJESCalibStep::m_minPt_JES
Gaudi::Property< float > m_minPt_JES
Definition: EtaJESCalibStep.h:71
EtaJESCalibStep::getEmaxJES
double getEmaxJES(const double Y) const
return Emax
Definition: EtaJESCalibStep.cxx:283
GlobalVariables.Emax
Emax
Definition: GlobalVariables.py:184
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
EtaJESCalibStep::m_useSpline
Gaudi::Property< bool > m_useSpline
Definition: EtaJESCalibStep.h:80
EtaJESCalibStep::m_JES_MinPt_R
double m_JES_MinPt_R[s_nEtaBins]
Definition: EtaJESCalibStep.h:98
EtaJESCalibStep::getLogPolN
double getLogPolN(const double *factors, double x) const
Definition: EtaJESCalibStep.cxx:291
AsgToolMacros.h
EtaJESCalibStep::s_nParMax
static const unsigned int s_nParMax
Definition: EtaJESCalibStep.h:92
jobOptions.fileName
fileName
Definition: jobOptions.SuperChic_ALP2.py:39
ToolHandle.h
AsgTool.h
EtaJESCalibStep::m_maxE_EtaCorr
Gaudi::Property< float > m_maxE_EtaCorr
Definition: EtaJESCalibStep.h:77
EtaJESCalibStep::m_JESFactors
double m_JESFactors[s_nEtaBins][s_nParMax]
Definition: EtaJESCalibStep.h:93
EtaJESCalibStep::getSplineCorr
double getSplineCorr(const int etaBin, double E) const
Definition: EtaJESCalibStep.cxx:351
EtaJESCalibStep::getJES
double getJES(const double X, const double Y=0, const double Emax=-1) const
return MCJES calibration factor
Definition: EtaJESCalibStep.cxx:216
EtaJESCalibStep::m_jetAlgo
Gaudi::Property< std::string > m_jetAlgo
jet collection to be calibrated
Definition: EtaJESCalibStep.h:70
EtaJESCalibStep::m_vartoolE
ToolHandle< JetHelper::IVarTool > m_vartoolE
Definition: EtaJESCalibStep.h:85