ATLAS Offline Software
Loading...
Searching...
No Matches
JMSCorrection.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 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>
20class 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
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
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
Scalar eta() const
pseudorapidity method
#define ATH_MSG_ERROR(x)
VecTH2 m_correlationMapMassCombination
bool m_useCorrelatedWeights
TString m_jetOutScale
float getRelTA(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const
void setMassEtaBins(const VecD &etabins)
unsigned int uint
float getMassCorr3D(double pT_uncorr, double mass_uncorr, double eta) const
float getRelTA3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const
float getRelCalo3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const
float getMassCorr(double pT_uncorr, double mass_uncorr, int etabin) const
VecTH2 m_caloResolutionMassCombination
float getRelCalo(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const
VecD m_massCombinationEtaBins
VecTH2 m_respFactorsTrackAssistedMass
std::unique_ptr< const TH3 > m_caloResolutionMassCombination3D
TString m_jetAlgo
float getTrackAssistedMassCorr(double pT_uncorr, double mass_uncorr, int etabin) const
BinningParam m_binParam
TString m_calibAreaTag
void setMassCombinationEtaBins(const VecD &etabins)
std::unique_ptr< const TH3 > m_respFactorTrackAssistedMass3D
std::unique_ptr< const TH3 > m_correlationMapMassCombination3D
float getTrackAssistedMassCorr3D(double pT_uncorr, double mass_uncorr, double eta) const
std::unique_ptr< const TH3 > m_respFactorMass3D
VecTH2 m_taResolutionMassCombination
std::vector< double > VecD
std::unique_ptr< const TH3 > m_taResolutionMassCombination3D
virtual StatusCode calibrate(xAOD::Jet &jet, JetEventInfo &) const override
std::vector< std::unique_ptr< const TH2 > > VecTH2
bool m_trackAssistedJetMassCorr
float getRho(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const
VecTH2 m_respFactorsMass
virtual StatusCode initialize() override
float getRho3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const
JetCalibrationStep(const char *name="JetCalibrationStep")
Jet_v1 Jet
Definition of the current "jet version".