ATLAS Offline Software
egammaMVACalibTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef EGAMMAMVACALIB_EGAMMAMVACALIBTOOL_H
6 #define EGAMMAMVACALIB_EGAMMAMVACALIBTOOL_H
7 
8 // Package includes
10 #include "xAODEgamma/EgammaEnums.h"
11 #include "MVAUtils/BDT.h"
13 
14 // Framework includes
15 #include "AsgTools/AsgTool.h"
17 
18 //Root includes
19 #include "TH2Poly.h"
20 #include "TObject.h"
21 #include "TString.h"
22 #include "TFormula.h"
23 
24 // STL includes
25 #include <string>
26 #include <memory>
27 #include <functional>
28 
29 
31 struct Funcs;
32 }
33 
34 
71 class egammaMVACalibTool : public asg::AsgTool, virtual public IegammaMVACalibTool{
73 public:
74  egammaMVACalibTool(const std::string& type);
75  virtual ~egammaMVACalibTool() override;
76 
77  virtual StatusCode initialize() override;
78 
84 
89 
91  float getEnergy(const xAOD::CaloCluster& clus,
92  const xAOD::Egamma* eg) const override final;
93 
94 private:
95  Gaudi::Property<int> m_particleType {this,
97  "What type of particle do we use"};
98 
99  Gaudi::Property<int> m_shiftType {this,
100  "ShiftType", MEAN10TOTRUE,
101  "Shift corrections to apply to value"};
102 
103  Gaudi::Property<int> m_calibrationType {this,
104  "CalibrationType", correctEaccordion,
105  "What type of calibration to apply"};
106 
107  Gaudi::Property<bool> m_clusterEif0 {this,
108  "useClusterIf0", true,
109  "Use cluster energy if MVA response is 0"};
110 
112  Gaudi::Property<std::string> m_folder {this,
113  "folder", "",
114  "string with folder for weight files"};
115 
116  Gaudi::Property<bool> m_useLayerCorrected {this,
117  "use_layer_corrected", false,
118  "whether to use layer corrections"};
119 
121  std::unique_ptr<TH2Poly> m_hPoly;
122 
124  std::vector<MVAUtils::BDT> m_BDTs;
125 
127  // (Need to hide this type to avoid a cling bug:
128  // https://github.com/root-project/root/issues/18833)
129  std::unique_ptr<egammaMVACalibTool_detail::Funcs> m_funcs;
130 
132  std::vector<TFormula> m_shifts;
133 
136  const std::string& fileName);
137 
139  static const TString& getString(TObject* obj) ;
140 
141 };
142 
143 #endif
egammaMVACalibTool::m_calibrationType
Gaudi::Property< int > m_calibrationType
Definition: egammaMVACalibTool.h:103
egammaMVACalibTool_detail
Definition: egammaMVACalibTool.h:30
BDT.h
egammaMVACalibTool::~egammaMVACalibTool
virtual ~egammaMVACalibTool() override
Definition: egammaMVACalibTool.cxx:45
egammaMVACalibTool::m_particleType
Gaudi::Property< int > m_particleType
Definition: egammaMVACalibTool.h:95
IegammaMVACalibTool.h
egammaMVAFunctions::funcMap_t
std::unordered_map< std::string, std::function< float(const xAOD::Egamma *, const xAOD::CaloCluster *)> > funcMap_t
Define the map type since it's long.
Definition: egammaMVAFunctions.h:243
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
PropertyWrapper.h
egammaMVACalibTool::MEAN10TOTRUE
@ MEAN10TOTRUE
Definition: egammaMVACalibTool.h:88
ParticleTest.eg
eg
Definition: ParticleTest.py:29
egammaMVACalibTool::setupBDT
StatusCode setupBDT(const egammaMVAFunctions::funcMap_t &funcLibrary, const std::string &fileName)
a function called by initialize to setup the BDT, funcs, and shifts.
Definition: egammaMVACalibTool.cxx:107
egammaMVACalibTool_detail::Funcs
Definition: egammaMVACalibTool.cxx:31
egammaMVACalibTool::m_folder
Gaudi::Property< std::string > m_folder
string with folder for weight files
Definition: egammaMVACalibTool.h:112
egammaMVACalibTool::ShiftType
ShiftType
shift to be applied after the BDT.
Definition: egammaMVACalibTool.h:88
xAOD::Egamma_v1
Definition: Egamma_v1.h:56
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
egammaMVACalibTool
A tool used by the egammaMVASvc to help calibrate energy for one particle type.
Definition: egammaMVACalibTool.h:71
IegammaMVACalibTool
A tool used by the egammaMVASvc to help manage the MVAs.
Definition: IegammaMVACalibTool.h:17
egammaMVACalibTool::m_funcs
std::unique_ptr< egammaMVACalibTool_detail::Funcs > m_funcs
where the pointers to the funcs to calculate the vars per BDT
Definition: egammaMVACalibTool.h:129
egammaMVACalibTool::NOSHIFT
@ NOSHIFT
Definition: egammaMVACalibTool.h:88
xAOD::EgammaParameters::NumberOfEgammaTypes
@ NumberOfEgammaTypes
Definition: EgammaEnums.h:21
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:62
egammaMVACalibTool::getString
static const TString & getString(TObject *obj)
a utility to get a TString out of an TObjString pointer
Definition: egammaMVACalibTool.cxx:221
egammaMVACalibTool::m_useLayerCorrected
Gaudi::Property< bool > m_useLayerCorrected
Definition: egammaMVACalibTool.h:116
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
egammaMVACalibTool::correctEaccordion
@ correctEaccordion
Definition: egammaMVACalibTool.h:83
egammaMVACalibTool::m_clusterEif0
Gaudi::Property< bool > m_clusterEif0
Definition: egammaMVACalibTool.h:107
egammaMVACalibTool::m_shifts
std::vector< TFormula > m_shifts
shifts formulas
Definition: egammaMVACalibTool.h:132
egammaMVACalibTool::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: egammaMVACalibTool.cxx:50
egammaMVACalibTool::getEnergy
float getEnergy(const xAOD::CaloCluster &clus, const xAOD::Egamma *eg) const override final
returns the calibrated energy
Definition: egammaMVACalibTool.cxx:230
egammaMVAFunctions.h
egammaMVACalibTool::CalibrationType
CalibrationType
how the output of the BDT is used correctEaccordion: energy = raw energy * BDT fullCalibration: energ...
Definition: egammaMVACalibTool.h:83
EgammaEnums.h
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
egammaMVACalibTool::m_shiftType
Gaudi::Property< int > m_shiftType
Definition: egammaMVACalibTool.h:99
egammaMVACalibTool::fullCalibration
@ fullCalibration
Definition: egammaMVACalibTool.h:83
jobOptions.fileName
fileName
Definition: jobOptions.SuperChic_ALP2.py:39
egammaMVACalibTool::m_hPoly
std::unique_ptr< TH2Poly > m_hPoly
A TH2Poly used to extract bin numbers. Note there is an offset of 1.
Definition: egammaMVACalibTool.h:121
AsgTool.h
python.PyAthena.obj
obj
Definition: PyAthena.py:132
egammaMVACalibTool::m_BDTs
std::vector< MVAUtils::BDT > m_BDTs
Where the BDTs are stored.
Definition: egammaMVACalibTool.h:124
egammaMVACalibTool::egammaMVACalibTool
egammaMVACalibTool(const std::string &type)
Definition: egammaMVACalibTool.cxx:37