ATLAS Offline Software
JMSCorrection.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_JMSCORRECTION_H
6 #define JETCALIBTOOLS_JMSCORRECTION_H 1
7 
8  /*
9  * Class definition of JMSCorrection - see Root/JMSCorrection.cxx for more details
10  * Jonathan Bossio (jbossios@cern.ch) , July 2015
11  */
12 
13 #include <TH2.h>
14 #include <TH3.h>
15 
17 #include <vector>
18 #include <memory>
19 #include <string>
20 class TEnv;
21 
23  : virtual public ::JetCalibrationStep
24 {
25 
26  public:
27  //Some convenient typedefs
28  typedef std::vector<std::unique_ptr<const TH2>> VecTH2;
29  typedef std::vector<double> VecD;
30  typedef unsigned int uint;
31 
32  JMSCorrection();
33  JMSCorrection(const std::string& name, TEnv * config, TString jetAlgo, TString calibAreaTag, bool dev);
34 
35  virtual StatusCode initialize() override;
36  virtual StatusCode calibrate(xAOD::Jet& jet, JetEventInfo&) const override;
37 
38  private:
39  float getMassCorr3D(double pT_uncorr, double mass_uncorr, double eta) const;
40  float getMassCorr(double pT_uncorr, double mass_uncorr, int etabin) const;
41  float getTrackAssistedMassCorr3D(double pT_uncorr, double mass_uncorr, double eta) const;
42  float getTrackAssistedMassCorr(double pT_uncorr, double mass_uncorr, int etabin) const;
43  float getRelCalo3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const;
44  float getRelCalo(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const;
45  float getRelTA3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const;
46  float getRelTA(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const;
47  float getRho3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const;
48  float getRho(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const;
49 
50  void setMassEtaBins(const VecD& etabins) {
51  if (etabins.size()==0) ATH_MSG_ERROR("Please check that the mass eta binning is properly set in your config file");
52  m_massEtaBins=etabins;
53  }
54 
55  void setMassCombinationEtaBins(const VecD& etabins) {
56  if (etabins.size()==0) ATH_MSG_ERROR("Please check that the mass combination eta binning is properly set in your config file");
58  }
59 
60  private:
61 
62  //Private members set in the constructor
63  TEnv * m_config{};
65  bool m_dev{};
66 
67  double m_pTMinCorr{};
68 
70 
71  bool m_pTfixed{}; // false: pT will be corrected (large-R), if true: the energy will be corrected and pT will be fixed (small-R)
72 
73  bool m_combination{}; // Mass Combination of calo mass with track-assisted mass
75  bool m_onlyCombination{}; //mass combination using insitu calibrated inputs
76 
77  // Control the binning using a private class enum
80 
81  // Check if we are reading 2D or 3D histograms
82  // Defaults to false for backwards compatibility
83  bool m_use3Dhisto{};
84 
85 
86  //Private members set during initialization (if 2D histos)
91  VecTH2 m_caloResolutionMassCombination; // Calo Mass Resolution
92  VecTH2 m_taResolutionMassCombination; // Track-Assisted Mass Resolution
93  VecTH2 m_correlationMapMassCombination; // Correlation Map for mass combination (rho)
94 
95  //Private members set during initialization (if 3D histos)
96  std::unique_ptr<const TH3> m_respFactorMass3D;
97  std::unique_ptr<const TH3> m_respFactorTrackAssistedMass3D;
98  std::unique_ptr<const TH3> m_caloResolutionMassCombination3D;
99  std::unique_ptr<const TH3> m_taResolutionMassCombination3D;
100  std::unique_ptr<const TH3> m_correlationMapMassCombination3D;
101 };
102 
103 #endif
JMSCorrection::getRelCalo3D
float getRelCalo3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const
Definition: JMSCorrection.cxx:383
JMSCorrection::getRelTA
float getRelTA(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const
Definition: JMSCorrection.cxx:446
JMSCorrection::m_taResolutionMassCombination
VecTH2 m_taResolutionMassCombination
Definition: JMSCorrection.h:92
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
JMSCorrection::m_respFactorsTrackAssistedMass
VecTH2 m_respFactorsTrackAssistedMass
Definition: JMSCorrection.h:89
JMSCorrection::m_pTfixed
bool m_pTfixed
Definition: JMSCorrection.h:71
JMSCorrection::m_correlationMapMassCombination3D
std::unique_ptr< const TH3 > m_correlationMapMassCombination3D
Definition: JMSCorrection.h:100
JMSCorrection::calibrate
virtual StatusCode calibrate(xAOD::Jet &jet, JetEventInfo &) const override
Definition: JMSCorrection.cxx:505
JMSCorrection::m_taResolutionMassCombination3D
std::unique_ptr< const TH3 > m_taResolutionMassCombination3D
Definition: JMSCorrection.h:99
JMSCorrection::m_jetOutScale
TString m_jetOutScale
Definition: JMSCorrection.h:64
JMSCorrection::setMassCombinationEtaBins
void setMassCombinationEtaBins(const VecD &etabins)
Definition: JMSCorrection.h:55
JMSCorrection::BinningParam::et_LOGmOet_eta
@ et_LOGmOet_eta
JMSCorrection::m_trackAssistedJetMassCorr
bool m_trackAssistedJetMassCorr
Definition: JMSCorrection.h:69
JMSCorrection::getMassCorr3D
float getMassCorr3D(double pT_uncorr, double mass_uncorr, double eta) const
Definition: JMSCorrection.cxx:301
config
Definition: PhysicsAnalysis/AnalysisCommon/AssociationUtils/python/config.py:1
JetEventInfo
Definition: JetEventInfo.h:8
JMSCorrection::VecTH2
std::vector< std::unique_ptr< const TH2 > > VecTH2
Definition: JMSCorrection.h:28
JMSCorrection::VecD
std::vector< double > VecD
Definition: JMSCorrection.h:29
JMSCorrection::m_calibAreaTag
TString m_calibAreaTag
Definition: JMSCorrection.h:64
JMSCorrection::m_useCorrelatedWeights
bool m_useCorrelatedWeights
Definition: JMSCorrection.h:74
JMSCorrection::m_respFactorMass3D
std::unique_ptr< const TH3 > m_respFactorMass3D
Definition: JMSCorrection.h:96
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
JMSCorrection::BinningParam::e_LOGmOet_eta
@ e_LOGmOet_eta
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
JMSCorrection::m_onlyCombination
bool m_onlyCombination
Definition: JMSCorrection.h:75
JMSCorrection::getRho3D
float getRho3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const
Definition: JMSCorrection.cxx:464
JMSCorrection::getRho
float getRho(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const
Definition: JMSCorrection.cxx:486
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
JMSCorrection::m_combination
bool m_combination
Definition: JMSCorrection.h:73
JMSCorrection::m_massEtaBins
VecD m_massEtaBins
Definition: JMSCorrection.h:88
JMSCorrection::m_respFactorsMass
VecTH2 m_respFactorsMass
Definition: JMSCorrection.h:87
JMSCorrection::m_massCombinationEtaBins
VecD m_massCombinationEtaBins
Definition: JMSCorrection.h:90
JMSCorrection::getRelTA3D
float getRelTA3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const
Definition: JMSCorrection.cxx:424
JMSCorrection::initialize
virtual StatusCode initialize() override
Definition: JMSCorrection.cxx:36
JMSCorrection::BinningParam::e_LOGmOe_eta
@ e_LOGmOe_eta
JMSCorrection::JMSCorrection
JMSCorrection()
Definition: JMSCorrection.cxx:25
JMSCorrection::getMassCorr
float getMassCorr(double pT_uncorr, double mass_uncorr, int etabin) const
Definition: JMSCorrection.cxx:323
JMSCorrection::getRelCalo
float getRelCalo(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const
Definition: JMSCorrection.cxx:405
JMSCorrection
Definition: JMSCorrection.h:24
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
JMSCorrection::m_jetAlgo
TString m_jetAlgo
Definition: JMSCorrection.h:64
JMSCorrection::m_pTMinCorr
double m_pTMinCorr
Definition: JMSCorrection.h:67
JMSCorrection::getTrackAssistedMassCorr
float getTrackAssistedMassCorr(double pT_uncorr, double mass_uncorr, int etabin) const
Definition: JMSCorrection.cxx:364
JMSCorrection::BinningParam
BinningParam
Definition: JMSCorrection.h:78
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
JMSCorrection::setMassEtaBins
void setMassEtaBins(const VecD &etabins)
Definition: JMSCorrection.h:50
JMSCorrection::m_binParam
BinningParam m_binParam
Definition: JMSCorrection.h:79
JMSCorrection::m_correlationMapMassCombination
VecTH2 m_correlationMapMassCombination
Definition: JMSCorrection.h:93
JMSCorrection::m_config
TEnv * m_config
Definition: JMSCorrection.h:63
JMSCorrection::getTrackAssistedMassCorr3D
float getTrackAssistedMassCorr3D(double pT_uncorr, double mass_uncorr, double eta) const
Definition: JMSCorrection.cxx:342
JMSCorrection::BinningParam::pt_mass_eta
@ pt_mass_eta
JMSCorrection::BinningParam::e_LOGmOpt_eta
@ e_LOGmOpt_eta
JMSCorrection::m_respFactorTrackAssistedMass3D
std::unique_ptr< const TH3 > m_respFactorTrackAssistedMass3D
Definition: JMSCorrection.h:97
JetCalibrationStep.h
JMSCorrection::m_use3Dhisto
bool m_use3Dhisto
Definition: JMSCorrection.h:83
JMSCorrection::m_caloResolutionMassCombination
VecTH2 m_caloResolutionMassCombination
Definition: JMSCorrection.h:91
JMSCorrection::uint
unsigned int uint
Definition: JMSCorrection.h:30
JMSCorrection::m_caloResolutionMassCombination3D
std::unique_ptr< const TH3 > m_caloResolutionMassCombination3D
Definition: JMSCorrection.h:98
JMSCorrection::m_dev
bool m_dev
Definition: JMSCorrection.h:65
JetCalibrationStep
Definition: JetCalibrationStep.h:20