ATLAS Offline Software
GlobalSequentialCorrection.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_GLOBALSEQUENTIALCORRECTION_H
6 #define JETCALIBTOOLS_GLOBALSEQUENTIALCORRECTION_H 1
7 
8  /*
9  * Class definition of GlobalSequentialCorrection - see Root/GlobalSequentialCorrection.cxx for more details
10  * Joe Taenzer (joseph.taenzer@cern.ch), July 2014
11  */
12 
13 #include <TEnv.h>
14 #include <TAxis.h>
15 #include <TH2.h>
16 
19 
20 #include <memory>
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 std::vector<TString> StrV;
31  typedef unsigned int uint;
32 
34  GlobalSequentialCorrection(const std::string& name, TEnv * config, TString jetAlgo, const std::string& depth, TString calibAreaTag, bool useOriginVertex, bool dev); //Apply the full GS calibration by default
35 
36  virtual StatusCode initialize() override;
37  virtual StatusCode calibrate(xAOD::Jet& jet, JetEventInfo&) const override;
38 
39  private:
40  double getTrackWIDTHResponse(double pT, uint etabin, double trackWIDTH) const;
41  double getNTrkResponse(double pT, uint etabin, double nTrk) const;
42  double getTile0Response(double pT, uint etabin, double Tile0) const;
43  double getEM3Response(double pT, uint etabin, double EM3) const;
44  double getChargedFractionResponse(double pT, uint etabin, double ChargedFraction) const;
45  double getPunchThroughResponse(double E, double eta_det, int Nsegments) const;
46  double getCaloWIDTHResponse(double pT, uint etabin, double caloWIDTH) const;
47  double getN90ConstituentsResponse(double pT, uint etabin, double N90Constituents) const;
48  double getTileGap3Response(double pT, uint etabin, double TileGap3) const;
49 
50  double getGSCCorrection(xAOD::JetFourMom_t jetP4, double eta,
51  double trackWIDTH, double nTrk, double Tile0, double EM3, int Nsegments, double ChargedFraction, double caloWIDTH, double N90Constituents, double TileGap3) const;
52 
53  double getJetPropertyMax(TString jetPropName, unsigned int etabin) {
54  if ( jetPropName.Contains("EM3") && etabin < m_EM3MaxEtaBin ) return m_respFactorsEM3[etabin]->GetYaxis()->GetXmax();
55  else if ( jetPropName.Contains("Tile0") && etabin < m_Tile0MaxEtaBin ) return m_respFactorsTile0[etabin]->GetYaxis()->GetXmax();
56  else if ( jetPropName.Contains("nTrk") && etabin < m_nTrkMaxEtaBin ) return m_respFactorsnTrk[etabin]->GetYaxis()->GetXmax();
57  else if ( jetPropName.Contains("trackWIDTH") && etabin < m_trackWIDTHMaxEtaBin ) return m_respFactorstrackWIDTH[etabin]->GetYaxis()->GetXmax();
58  else if ( jetPropName.Contains("N90Constituents") && etabin < m_N90ConstituentsMaxEtaBin ) return m_respFactorsN90Constituents[etabin]->GetYaxis()->GetXmax();
59  else if ( jetPropName.Contains("caloWIDTH") && etabin < m_caloWIDTHMaxEtaBin ) return m_respFactorscaloWIDTH[etabin]->GetYaxis()->GetXmax();
60  else if ( jetPropName.Contains("TileGap3") && etabin < m_TileGap3MaxEtaBin ) return m_respFactorsTileGap3[etabin]->GetYaxis()->GetXmax();
61  else return 1;
62  }
63 
64  void setPunchThroughEtaBins(const VecD& etabins) {
65  if (etabins.size()==0) ATH_MSG_ERROR("Please check that the punch through eta binning is properly set in your config file");
66  m_punchThroughEtaBins=etabins;
67  }
68 
69  void setPunchThroughMinPt(double minPt) {
70  if (minPt < 0) ATH_MSG_ERROR("Error determining the punch through minimum pT");
71  m_punchThroughMinPt = minPt;
72  }
73 
74  private:
75 
76  double readPtJetPropertyHisto(double pT, double jetProperty,
77  const TH2& respFactors) const;
78 
79  private:
81 
82  //Private members set in the constructor
83  TEnv * m_config;
85  bool m_dev;
86 
87  //Private members set during initialization
89  double m_binSize;
94  bool m_PFlow{false};
95  bool m_caloBased{false};
97  bool m_nTrkwTrk_4PFlow{false};
98  double m_turnOffStartingpT{1200.}, m_turnOffEndpT{2000};
99  bool m_useOriginVertex{false};
100 
101 };
102 
103 #endif
GlobalSequentialCorrection::m_Tile0MaxEtaBin
uint m_Tile0MaxEtaBin
Definition: GlobalSequentialCorrection.h:90
CalculateHighPtTerm.pT
pT
Definition: ICHEP2016/CalculateHighPtTerm.py:57
GlobalSequentialCorrection::m_jetAlgo
TString m_jetAlgo
Definition: GlobalSequentialCorrection.h:84
GlobalSequentialCorrection::getNTrkResponse
double getNTrkResponse(double pT, uint etabin, double nTrk) const
Definition: GlobalSequentialCorrection.cxx:316
egammaParameters::depth
@ depth
pointing depth of the shower as calculated in egammaqgcld
Definition: egammaParamDefs.h:276
GlobalSequentialCorrection::m_dev
bool m_dev
Definition: GlobalSequentialCorrection.h:85
Ringer::EM3
@ EM3
Definition: CaloRingsDefs.h:49
GlobalSequentialCorrection::initialize
virtual StatusCode initialize() override
Definition: GlobalSequentialCorrection.cxx:53
GlobalSequentialCorrection::m_chargedFractionMaxEtaBin
uint m_chargedFractionMaxEtaBin
Definition: GlobalSequentialCorrection.h:90
GlobalSequentialCorrection::getCaloWIDTHResponse
double getCaloWIDTHResponse(double pT, uint etabin, double caloWIDTH) const
Definition: GlobalSequentialCorrection.cxx:374
GlobalSequentialCorrection::m_depth
uint m_depth
Definition: GlobalSequentialCorrection.h:90
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
GlobalSequentialCorrection::ApplytrackWIDTH
@ ApplytrackWIDTH
Definition: GlobalSequentialCorrection.h:80
GlobalSequentialCorrection::m_respFactorsPunchThrough
VecTH2 m_respFactorsPunchThrough
Definition: GlobalSequentialCorrection.h:88
GlobalSequentialCorrection::m_useOriginVertex
bool m_useOriginVertex
Definition: GlobalSequentialCorrection.h:99
GlobalSequentialCorrection::ApplyEM3
@ ApplyEM3
Definition: GlobalSequentialCorrection.h:80
GlobalSequentialCorrection::StrV
std::vector< TString > StrV
Definition: GlobalSequentialCorrection.h:30
GlobalSequentialCorrection::ApplynTrk
@ ApplynTrk
Definition: GlobalSequentialCorrection.h:80
GlobalSequentialCorrection::ApplyTile0
@ ApplyTile0
Definition: GlobalSequentialCorrection.h:80
GlobalSequentialCorrection::VecTH2
std::vector< std::unique_ptr< const TH2 > > VecTH2
Definition: GlobalSequentialCorrection.h:28
GlobalSequentialCorrection::m_EM3MaxEtaBin
uint m_EM3MaxEtaBin
Definition: GlobalSequentialCorrection.h:90
GlobalSequentialCorrection::ApplycaloWIDTH
@ ApplycaloWIDTH
Definition: GlobalSequentialCorrection.h:80
GlobalSequentialCorrection::m_respFactorsN90Constituents
VecTH2 m_respFactorsN90Constituents
Definition: GlobalSequentialCorrection.h:88
GlobalSequentialCorrection::m_GSCSeq
m_GSCSeq
Definition: GlobalSequentialCorrection.h:80
CaloCell_ID_FCS::TileGap3
@ TileGap3
Definition: FastCaloSim_CaloCell_ID.h:36
config
Definition: PhysicsAnalysis/AnalysisCommon/AssociationUtils/python/config.py:1
IJetCalibrationTool.h
GlobalSequentialCorrection::m_punchThroughEtaBins
VecD m_punchThroughEtaBins
Definition: GlobalSequentialCorrection.h:91
GlobalSequentialCorrection::GlobalSequentialCorrection
GlobalSequentialCorrection()
Definition: GlobalSequentialCorrection.cxx:34
GlobalSequentialCorrection::m_respFactorstrackWIDTH
VecTH2 m_respFactorstrackWIDTH
Definition: GlobalSequentialCorrection.h:88
GlobalSequentialCorrection::m_nTrkwTrk_4PFlow
bool m_nTrkwTrk_4PFlow
Definition: GlobalSequentialCorrection.h:97
GlobalSequentialCorrection::m_pTResponseRequirementOff
bool m_pTResponseRequirementOff
Definition: GlobalSequentialCorrection.h:96
JetEventInfo
Definition: JetEventInfo.h:8
GlobalSequentialCorrection::getJetPropertyMax
double getJetPropertyMax(TString jetPropName, unsigned int etabin)
Definition: GlobalSequentialCorrection.h:53
GlobalSequentialCorrection::ApplyN90Constituents
@ ApplyN90Constituents
Definition: GlobalSequentialCorrection.h:80
GlobalSequentialCorrection::getPunchThroughResponse
double getPunchThroughResponse(double E, double eta_det, int Nsegments) const
Definition: GlobalSequentialCorrection.cxx:355
GlobalSequentialCorrection::getTrackWIDTHResponse
double getTrackWIDTHResponse(double pT, uint etabin, double trackWIDTH) const
Definition: GlobalSequentialCorrection.cxx:297
GlobalSequentialCorrection::VecD
std::vector< double > VecD
Definition: GlobalSequentialCorrection.h:29
GlobalSequentialCorrection::m_TileGap3MaxEtaBin
uint m_TileGap3MaxEtaBin
Definition: GlobalSequentialCorrection.h:90
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
GlobalSequentialCorrection::m_respFactorscaloWIDTH
VecTH2 m_respFactorscaloWIDTH
Definition: GlobalSequentialCorrection.h:88
GlobalSequentialCorrection::m_caloWIDTHMaxEtaBin
uint m_caloWIDTHMaxEtaBin
Definition: GlobalSequentialCorrection.h:90
GlobalSequentialCorrection::m_respFactorsTileGap3
VecTH2 m_respFactorsTileGap3
Definition: GlobalSequentialCorrection.h:88
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
GlobalSequentialCorrection::m_turnOffStartingpT
double m_turnOffStartingpT
Definition: GlobalSequentialCorrection.h:98
GlobalSequentialCorrection::m_turnOffTrackCorrections
bool m_turnOffTrackCorrections
Definition: GlobalSequentialCorrection.h:93
GlobalSequentialCorrection::m_binSize
double m_binSize
Definition: GlobalSequentialCorrection.h:89
TH2
Definition: rootspy.cxx:373
GlobalSequentialCorrection::m_calibAreaTag
TString m_calibAreaTag
Definition: GlobalSequentialCorrection.h:84
GlobalSequentialCorrection::setPunchThroughEtaBins
void setPunchThroughEtaBins(const VecD &etabins)
Definition: GlobalSequentialCorrection.h:64
GlobalSequentialCorrection::calibrate
virtual StatusCode calibrate(xAOD::Jet &jet, JetEventInfo &) const override
Definition: GlobalSequentialCorrection.cxx:436
xAOD::JetFourMom_t
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
Definition: JetTypes.h:17
GlobalSequentialCorrection::m_respFactorsTile0
VecTH2 m_respFactorsTile0
Definition: GlobalSequentialCorrection.h:88
GlobalSequentialCorrection::m_turnOffEndpT
double m_turnOffEndpT
Definition: GlobalSequentialCorrection.h:98
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
GlobalSequentialCorrection::readPtJetPropertyHisto
double readPtJetPropertyHisto(double pT, double jetProperty, const TH2 &respFactors) const
Definition: GlobalSequentialCorrection.cxx:281
GlobalSequentialCorrection::m_caloBased
bool m_caloBased
Definition: GlobalSequentialCorrection.h:95
GlobalSequentialCorrection::getGSCCorrection
double getGSCCorrection(xAOD::JetFourMom_t jetP4, double eta, double trackWIDTH, double nTrk, double Tile0, double EM3, int Nsegments, double ChargedFraction, double caloWIDTH, double N90Constituents, double TileGap3) const
Definition: GlobalSequentialCorrection.cxx:395
GlobalSequentialCorrection::getN90ConstituentsResponse
double getN90ConstituentsResponse(double pT, uint etabin, double N90Constituents) const
Definition: GlobalSequentialCorrection.cxx:381
GlobalSequentialCorrection::getTile0Response
double getTile0Response(double pT, uint etabin, double Tile0) const
Definition: GlobalSequentialCorrection.cxx:334
GlobalSequentialCorrection::ApplyPunchThrough
@ ApplyPunchThrough
Definition: GlobalSequentialCorrection.h:80
GlobalSequentialCorrection::m_PFlow
bool m_PFlow
Definition: GlobalSequentialCorrection.h:94
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
GlobalSequentialCorrection::getTileGap3Response
double getTileGap3Response(double pT, uint etabin, double TileGap3) const
Definition: GlobalSequentialCorrection.cxx:388
GlobalSequentialCorrection::ApplyChargedFraction
@ ApplyChargedFraction
Definition: GlobalSequentialCorrection.h:80
GlobalSequentialCorrection::uint
unsigned int uint
Definition: GlobalSequentialCorrection.h:31
GlobalSequentialCorrection::setPunchThroughMinPt
void setPunchThroughMinPt(double minPt)
Definition: GlobalSequentialCorrection.h:69
GlobalSequentialCorrection::getChargedFractionResponse
double getChargedFractionResponse(double pT, uint etabin, double ChargedFraction) const
Definition: GlobalSequentialCorrection.cxx:348
GlobalSequentialCorrection::m_config
TEnv * m_config
Definition: GlobalSequentialCorrection.h:83
GlobalSequentialCorrection::getEM3Response
double getEM3Response(double pT, uint etabin, double EM3) const
Definition: GlobalSequentialCorrection.cxx:341
GlobalSequentialCorrection::m_N90ConstituentsMaxEtaBin
uint m_N90ConstituentsMaxEtaBin
Definition: GlobalSequentialCorrection.h:90
GlobalSequentialCorrection::m_respFactorsEM3
VecTH2 m_respFactorsEM3
Definition: GlobalSequentialCorrection.h:88
GlobalSequentialCorrection
Definition: GlobalSequentialCorrection.h:24
JetCalibrationStep.h
GlobalSequentialCorrection::ApplyTileGap3
@ ApplyTileGap3
Definition: GlobalSequentialCorrection.h:80
GlobalSequentialCorrection::m_trackWIDTHMaxEtaBin
uint m_trackWIDTHMaxEtaBin
Definition: GlobalSequentialCorrection.h:90
GlobalSequentialCorrection::m_respFactorsnTrk
VecTH2 m_respFactorsnTrk
Definition: GlobalSequentialCorrection.h:88
GlobalSequentialCorrection::m_nTrkMaxEtaBin
uint m_nTrkMaxEtaBin
Definition: GlobalSequentialCorrection.h:90
GlobalSequentialCorrection::m_punchThroughMinPt
double m_punchThroughMinPt
Definition: GlobalSequentialCorrection.h:92
GlobalSequentialCorrection::m_depthString
TString m_depthString
Definition: GlobalSequentialCorrection.h:84
GlobalSequentialCorrection::m_respFactorsChargedFraction
VecTH2 m_respFactorsChargedFraction
Definition: GlobalSequentialCorrection.h:88
JetCalibrationStep
Definition: JetCalibrationStep.h:20