ATLAS Offline Software
EtaJESCorrection.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef JETCALIBTOOLS_ETAJESCORRECTION_H
6 #define JETCALIBTOOLS_ETAJESCORRECTION_H 1
7 
8 /* Implementation of EtaJESCorrection class
9  * This class will apply the absolute EtaJES correction
10  *
11  * Author: Joe Taenzer (joseph.taenzer@cern.ch)
12  * Date: August 19 2013
13  */
14 
15 #include "TH1.h"
16 #include "TString.h"
17 #include <string>
18 #include <vector>
19 #include <memory>
20 class TEnv;
21 class TAxis;
22 
23 
25 
27  : virtual public ::JetCalibrationStep
28 {
29 
30  public:
32  EtaJESCorrection(const std::string& name, TEnv * config, TString jetAlgo, TString calibAreaTag, bool mass, bool dev);
33  virtual ~EtaJESCorrection();
34 
35  virtual StatusCode initialize() override;
36  virtual StatusCode calibrate(xAOD::Jet& jet, JetEventInfo&) const override;
37 
38  private:
39  double getJES(double E_uncorr, double eta_det) const;
40  double getLowPtJES(double E_uncorr, double eta_det) const;
41  double getEtaCorr(double E_corr, double eta_det) const;
42  double getMassCorr(double E_corr, double eta_det) const;
43  double getLogPolN(const double *factors, double x) const;
44  double getLogPolNSlope(const double *factors, double x) const;
45  double getSplineCorr(const int etaBin, double E) const;
46  double getSplineSlope(const int ieta, const double minE) const;
47  void loadSplineHists(const TString & fileName, const std::string &etajes_name = "etaJes");
48 
49  int getEtaBin(double eta_det) const;
50 
51  private:
52  TEnv * m_config{};
53  TString m_jetAlgo;
54  TString m_calibAreaTag;
55  bool m_mass{};
56  bool m_dev{};
58  bool m_isSpline{};
59 
60  TString m_jesDesc;
62  unsigned int m_lowPtExtrap{};
63  double m_lowPtMinR{};
68 
69  TAxis * m_etaBinAxis{};
70 
71  // 90 eta bins, and up to 9 parameter for the pol-fit
72  const static unsigned int s_nEtaBins=90;
73  const static unsigned int s_nParMin=7;
74  const static unsigned int s_nParMax=9;
75  unsigned int m_nPar{}; // number of parameters in config file
80  //double m_JES_MinPt_Rmin[s_nEtaBins];
86 
87  // When using p-splines, the calibrations are stored as a finely binned TH1 for simplicity.
88  // This avoids importing new packages into Athena.
89  std::vector<std::unique_ptr<TH1> > m_etajesFactors;
90 
91 
92 };
93 
94 #endif
EtaJESCorrection::~EtaJESCorrection
virtual ~EtaJESCorrection()
Definition: EtaJESCorrection.cxx:28
EtaJESCorrection::loadSplineHists
void loadSplineHists(const TString &fileName, const std::string &etajes_name="etaJes")
Loads the calib constants from histograms in TFile named fileName.
Definition: EtaJESCorrection.cxx:204
EtaJESCorrection::m_jetAlgo
TString m_jetAlgo
Definition: EtaJESCorrection.h:53
EtaJESCorrection::m_freezeJESatHighE
bool m_freezeJESatHighE
Definition: EtaJESCorrection.h:57
EtaJESCorrection::m_mass
bool m_mass
Definition: EtaJESCorrection.h:55
EtaJESCorrection::getLogPolN
double getLogPolN(const double *factors, double x) const
Definition: EtaJESCorrection.cxx:370
EtaJESCorrection::m_maxE_EtaCorr
double m_maxE_EtaCorr
Definition: EtaJESCorrection.h:61
EtaJESCorrection::m_minPt_EtaCorr
double m_minPt_EtaCorr
Definition: EtaJESCorrection.h:61
EtaJESCorrection::m_lowPtMinR
double m_lowPtMinR
Definition: EtaJESCorrection.h:63
EtaJESCorrection::getEtaCorr
double getEtaCorr(double E_corr, double eta_det) const
Definition: EtaJESCorrection.cxx:342
EtaJESCorrection::getLogPolNSlope
double getLogPolNSlope(const double *factors, double x) const
Definition: EtaJESCorrection.cxx:377
EtaJESCorrection::m_minPt_JES
double m_minPt_JES
Definition: EtaJESCorrection.h:61
x
#define x
dqt_zlumi_pandas.mass
mass
Definition: dqt_zlumi_pandas.py:170
EtaJESCorrection::m_etajesFactors
std::vector< std::unique_ptr< TH1 > > m_etajesFactors
Definition: EtaJESCorrection.h:89
config
Definition: PhysicsAnalysis/AnalysisCommon/AssociationUtils/python/config.py:1
EtaJESCorrection::calibrate
virtual StatusCode calibrate(xAOD::Jet &jet, JetEventInfo &) const override
Definition: EtaJESCorrection.cxx:224
JetEventInfo
Definition: JetEventInfo.h:8
xAOD::etaBin
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap etaBin
Definition: L2StandAloneMuon_v1.cxx:148
EtaJESCorrection::m_JES_MinPt_Param1
double m_JES_MinPt_Param1[s_nEtaBins]
Definition: EtaJESCorrection.h:81
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
EtaJESCorrection::EtaJESCorrection
EtaJESCorrection()
Definition: EtaJESCorrection.cxx:12
EtaJESCorrection::getSplineCorr
double getSplineCorr(const int etaBin, double E) const
Definition: EtaJESCorrection.cxx:335
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
EtaJESCorrection::m_dev
bool m_dev
Definition: EtaJESCorrection.h:56
EtaJESCorrection::m_JES_MinPt_Param2
double m_JES_MinPt_Param2[s_nEtaBins]
Definition: EtaJESCorrection.h:82
EtaJESCorrection::m_isSpline
bool m_isSpline
Definition: EtaJESCorrection.h:58
EtaJESCorrection::m_energyFreezeJES
double m_energyFreezeJES[s_nEtaBins]
Definition: EtaJESCorrection.h:85
EtaJESCorrection::getSplineSlope
double getSplineSlope(const int ieta, const double minE) const
Definition: EtaJESCorrection.cxx:322
EtaJESCorrection::s_nEtaBins
static const unsigned int s_nEtaBins
Definition: EtaJESCorrection.h:72
EtaJESCorrection
Definition: EtaJESCorrection.h:28
EtaJESCorrection::m_jesDesc
TString m_jesDesc
Definition: EtaJESCorrection.h:60
EtaJESCorrection::m_etaBinAxis
TAxis * m_etaBinAxis
Definition: EtaJESCorrection.h:69
EtaJESCorrection::s_nParMax
static const unsigned int s_nParMax
Definition: EtaJESCorrection.h:74
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
EtaJESCorrection::m_config
TEnv * m_config
Definition: EtaJESCorrection.h:52
EtaJESCorrection::m_JES_MinPt_E
double m_JES_MinPt_E[s_nEtaBins]
Definition: EtaJESCorrection.h:78
EtaJESCorrection::m_secondaryminPt_JES
double m_secondaryminPt_JES
Definition: EtaJESCorrection.h:67
EtaJESCorrection::m_etaCorrFactors
double m_etaCorrFactors[s_nEtaBins][s_nParMax]
Definition: EtaJESCorrection.h:83
EtaJESCorrection::m_JES_MinPt_Slopes
double m_JES_MinPt_Slopes[s_nEtaBins]
Definition: EtaJESCorrection.h:77
EtaJESCorrection::m_JMSFactors
double m_JMSFactors[s_nEtaBins][s_nParMax]
Definition: EtaJESCorrection.h:84
EtaJESCorrection::getLowPtJES
double getLowPtJES(double E_uncorr, double eta_det) const
Definition: EtaJESCorrection.cxx:298
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
EtaJESCorrection::getMassCorr
double getMassCorr(double E_corr, double eta_det) const
Definition: EtaJESCorrection.cxx:358
EtaJESCorrection::s_nParMin
static const unsigned int s_nParMin
Definition: EtaJESCorrection.h:73
EtaJESCorrection::m_nPar
unsigned int m_nPar
Definition: EtaJESCorrection.h:75
EtaJESCorrection::m_calibAreaTag
TString m_calibAreaTag
Definition: EtaJESCorrection.h:54
EtaJESCorrection::initialize
virtual StatusCode initialize() override
Definition: EtaJESCorrection.cxx:34
JetCalibrationStep.h
EtaJESCorrection::m_etaSecondaryminPt_JES
double m_etaSecondaryminPt_JES
Definition: EtaJESCorrection.h:66
EtaJESCorrection::m_applyMassCorrection
bool m_applyMassCorrection
Definition: EtaJESCorrection.h:64
EtaJESCorrection::m_useSecondaryminPt_JES
bool m_useSecondaryminPt_JES
Definition: EtaJESCorrection.h:65
EtaJESCorrection::getJES
double getJES(double E_uncorr, double eta_det) const
Definition: EtaJESCorrection.cxx:258
EtaJESCorrection::getEtaBin
int getEtaBin(double eta_det) const
Definition: EtaJESCorrection.cxx:385
EtaJESCorrection::m_JES_MinPt_R
double m_JES_MinPt_R[s_nEtaBins]
Definition: EtaJESCorrection.h:79
EtaJESCorrection::m_lowPtExtrap
unsigned int m_lowPtExtrap
Definition: EtaJESCorrection.h:62
JetCalibrationStep
Definition: JetCalibrationStep.h:20
EtaJESCorrection::m_JESFactors
double m_JESFactors[s_nEtaBins][s_nParMax]
Definition: EtaJESCorrection.h:76