Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
JESCalibStep.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 // EtaMassJESCalibStep.h
8 // Header file for class EtaMassJESCalibStep
9 // Author: Max Swiatlowski <mswiatlo@cern.ch>
11 #ifndef JETCALIBTOOLS_JESCALIBSTEP_H
12 #define JETCALIBTOOLS_JESCALIBSTEP_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  EtaMassJESCalibStep(const std::string& name = "EtaMassJESCalibStep");
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 
65  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" };
67  Gaudi::Property< std::string > m_jetAlgo { this, "JetAlgo", "AntiKt4EMPFlow", "jet collection" };
68  Gaudi::Property< float > m_minPt_JES = {this, "MinPtForETAJES",15, "min pT"};
69  Gaudi::Property< bool > m_freezeJESatHighE = {this, "FreezeJEScorrectionatHighE",false, " freeze at high e"};
70  Gaudi::Property< float > m_lowPtExtrap = {this, "LowPtJESExtrapolationMethod", 0, " low pt etrap"};
71  Gaudi::Property< float > m_lowPtMinR = {this, "LowPtJESExtrapolationMinimumResponse", 0.25, " low pt etrap min"};
72 
73  Gaudi::Property< float > m_minPt_EtaCorr = {this, "MinPtForEtaCorr" ,8. , ""};
74  Gaudi::Property< float > m_maxE_EtaCorr = {this, "MaxEForEtaCorr" ,2500. , ""};
75 
76  Gaudi::Property< std::string > m_histoFileName { this, "HistoFile", "none", "root file containing histos for spline calib" };
77  Gaudi::Property< bool > m_useSpline = {this, "UseSpline",false, " use spline"};
78 
79 
80  ToolHandle<JetHelper::IVarTool> m_vartoolE{this, "VarToolE", "VarTool", "InputVariable instance E (or pT?)" };
82  ToolHandle<JetHelper::IVarTool> m_vartoolEta{this, "VarToolEta", "VarTool", "InputVariable instance eta (or rapididty?)" };
83 
84  // protected:
85  unsigned int m_nPar{}; // number of parameters in config file
86  const static unsigned int s_nEtaBins = 90;
87  const static unsigned int s_nParMax = 9;
94 
95 
96  TAxis * m_etaBinAxis{};
97 
98  std::vector<std::unique_ptr<TH1> > m_etajesFactors;
99 
100 
101 };
102 
103 #endif
104 
EtaMassJESCalibStep::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: JESCalibStep.cxx:23
EtaMassJESCalibStep::m_etaBinAxis
TAxis * m_etaBinAxis
Definition: JESCalibStep.h:96
EtaMassJESCalibStep::getEtaBin
int getEtaBin(double eta_det) const
Definition: JESCalibStep.cxx:300
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
PropertyWrapper.h
EtaMassJESCalibStep::m_nPar
unsigned int m_nPar
Definition: JESCalibStep.h:85
EtaMassJESCalibStep::m_JES_MinPt_R
double m_JES_MinPt_R[s_nEtaBins]
Definition: JESCalibStep.h:93
EtaMassJESCalibStep::m_etaCorrFactors
double m_etaCorrFactors[s_nEtaBins][s_nParMax]
Definition: JESCalibStep.h:89
EtaMassJESCalibStep::EtaMassJESCalibStep
EtaMassJESCalibStep(const std::string &name="EtaMassJESCalibStep")
Definition: JESCalibStep.cxx:19
EtaMassJESCalibStep::m_energyFreezeJES
double m_energyFreezeJES[s_nEtaBins]
Definition: JESCalibStep.h:90
EtaMassJESCalibStep::getLowPtJES
double getLowPtJES(double E_uncorr, double eta_det) const
deal with low pt jets
Definition: JESCalibStep.cxx:248
EtaMassJESCalibStep::getEtaCorr
double getEtaCorr(double X, double Y=0) const
return Eta correction
Definition: JESCalibStep.cxx:268
IVarTool.h
EtaMassJESCalibStep::s_nEtaBins
static const unsigned int s_nEtaBins
Definition: JESCalibStep.h:86
x
#define x
EtaMassJESCalibStep::m_jetAlgo
Gaudi::Property< std::string > m_jetAlgo
jet collection to be calibrated
Definition: JESCalibStep.h:67
EtaMassJESCalibStep::m_lowPtExtrap
Gaudi::Property< float > m_lowPtExtrap
Definition: JESCalibStep.h:70
IJetCalibStep.h
Monitored::X
@ X
Definition: HistogramFillerUtils.h:24
EtaMassJESCalibStep::m_JESFactors
double m_JESFactors[s_nEtaBins][s_nParMax]
Definition: JESCalibStep.h:88
EtaMassJESCalibStep::loadSplineHists
void loadSplineHists(const std::string &fileName, const std::string &etajes_name)
Definition: JESCalibStep.cxx:317
EtaMassJESCalibStep::calibrate
virtual StatusCode calibrate(xAOD::JetContainer &) const override
Apply calibration to a jet container.
Definition: JESCalibStep.cxx:44
EtaMassJESCalibStep::getSplineCorr
double getSplineCorr(const int etaBin, double E) const
Definition: JESCalibStep.cxx:350
EtaMassJESCalibStep::m_JES_MinPt_E
double m_JES_MinPt_E[s_nEtaBins]
Definition: JESCalibStep.h:92
xAOD::etaBin
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap etaBin
Definition: L2StandAloneMuon_v1.cxx:148
EtaMassJESCalibStep::getJES
double getJES(const double X, const double Y=0, const double Emax=-1) const
return MCJES calibration factor
Definition: JESCalibStep.cxx:215
EtaMassJESCalibStep::getLogPolNSlope
double getLogPolNSlope(const double *factors, double x) const
Definition: JESCalibStep.cxx:308
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
EtaMassJESCalibStep::m_JES_MinPt_Slopes
double m_JES_MinPt_Slopes[s_nEtaBins]
Definition: JESCalibStep.h:91
EtaMassJESCalibStep::m_minPt_JES
Gaudi::Property< float > m_minPt_JES
Definition: JESCalibStep.h:68
EtaMassJESCalibStep::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: JESCalibStep.h:82
EtaMassJESCalibStep::m_maxE_EtaCorr
Gaudi::Property< float > m_maxE_EtaCorr
Definition: JESCalibStep.h:74
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
EtaMassJESCalibStep
Definition: JESCalibStep.h:33
EtaMassJESCalibStep::readMCJESFromHists
bool readMCJESFromHists()
Definition: JESCalibStep.cxx:155
IJetCalibTool.h
Monitored::Y
@ Y
Definition: HistogramFillerUtils.h:24
EtaMassJESCalibStep::m_vartoolE
ToolHandle< JetHelper::IVarTool > m_vartoolE
Definition: JESCalibStep.h:80
EtaMassJESCalibStep::getLogPolN
double getLogPolN(const double *factors, double x) const
Definition: JESCalibStep.cxx:290
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
EtaMassJESCalibStep::readMCJESFromText
bool readMCJESFromText()
Definition: JESCalibStep.cxx:87
EventInfo.h
IJetCalibStep
Definition: IJetCalibStep.h:27
EtaMassJESCalibStep::m_minPt_EtaCorr
Gaudi::Property< float > m_minPt_EtaCorr
Definition: JESCalibStep.h:73
EtaMassJESCalibStep::m_histoFileName
Gaudi::Property< std::string > m_histoFileName
Definition: JESCalibStep.h:76
EtaMassJESCalibStep::s_nParMax
static const unsigned int s_nParMax
Definition: JESCalibStep.h:87
EtaMassJESCalibStep::m_lowPtMinR
Gaudi::Property< float > m_lowPtMinR
Definition: JESCalibStep.h:71
GlobalVariables.Emax
Emax
Definition: GlobalVariables.py:185
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
EtaMassJESCalibStep::m_useSpline
Gaudi::Property< bool > m_useSpline
Definition: JESCalibStep.h:77
AsgToolMacros.h
EtaMassJESCalibStep::getEmaxJES
double getEmaxJES(const double Y) const
return Emax
Definition: JESCalibStep.cxx:282
jobOptions.fileName
fileName
Definition: jobOptions.SuperChic_ALP2.py:39
ToolHandle.h
AsgTool.h
EtaMassJESCalibStep::getSplineSlope
double getSplineSlope(const int ieta, const double minE) const
Definition: JESCalibStep.cxx:337
EtaMassJESCalibStep::m_constantFileName
Gaudi::Property< std::string > m_constantFileName
name of the text file
Definition: JESCalibStep.h:65
EtaMassJESCalibStep::m_etajesFactors
std::vector< std::unique_ptr< TH1 > > m_etajesFactors
Definition: JESCalibStep.h:98
EtaMassJESCalibStep::m_freezeJESatHighE
Gaudi::Property< bool > m_freezeJESatHighE
Definition: JESCalibStep.h:69