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 
30 struct Funcs;
31 }
32 
33 
70 class egammaMVACalibTool : public asg::AsgTool, virtual public IegammaMVACalibTool{
72 public:
73  egammaMVACalibTool(const std::string& type);
74  virtual ~egammaMVACalibTool() override;
75 
76  virtual StatusCode initialize() override;
77 
83 
88 
90  float getEnergy(const xAOD::CaloCluster& clus,
91  const xAOD::Egamma* eg,
93  const override final;
94 
95 private:
98  "What type of particle do we use"};
99 
100  Gaudi::Property<int> m_shiftType {this,
101  "ShiftType", MEAN10TOTRUE,
102  "Shift corrections to apply to value"};
103 
104  Gaudi::Property<int> m_calibrationType {this,
105  "CalibrationType", correctEaccordion,
106  "What type of calibration to apply"};
107 
108  Gaudi::Property<bool> m_clusterEif0 {this,
109  "useClusterIf0", true,
110  "Use cluster energy if MVA response is 0"};
111 
113  Gaudi::Property<std::string> m_folder {this,
114  "folder", "",
115  "string with folder for weight files"};
116 
117  Gaudi::Property<bool> m_useLayerCorrected {this,
118  "use_layer_corrected", false,
119  "whether to use layer corrections"};
120 
122  std::unique_ptr<TH2Poly> m_hPoly;
123 
125  std::vector<MVAUtils::BDT> m_BDTs;
126 
128  // (Need to hide this type to avoid a cling bug:
129  // https://github.com/root-project/root/issues/18833)
130  std::unique_ptr<egammaMVACalibTool_detail::Funcs> m_funcs;
131 
133  std::vector<TFormula> m_shifts;
134 
137  const std::string& fileName);
138 
140  static const TString& getString(TObject* obj) ;
141 
142 };
143 
144 #endif
egammaMVACalibTool::m_calibrationType
Gaudi::Property< int > m_calibrationType
Definition: egammaMVACalibTool.h:104
egammaMVACalibTool_detail
Definition: egammaMVACalibTool.h:29
BDT.h
egammaMVACalibTool::~egammaMVACalibTool
virtual ~egammaMVACalibTool() override
Definition: egammaMVACalibTool.cxx:46
egammaMVACalibTool::m_particleType
Gaudi::Property< int > m_particleType
Definition: egammaMVACalibTool.h:96
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:308
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
PropertyWrapper.h
egammaMVACalibTool::MEAN10TOTRUE
@ MEAN10TOTRUE
Definition: egammaMVACalibTool.h:87
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:117
egammaMVACalibTool_detail::Funcs
Definition: egammaMVACalibTool.cxx:32
egammaMVACalibTool::m_folder
Gaudi::Property< std::string > m_folder
string with folder for weight files
Definition: egammaMVACalibTool.h:113
egammaMVACalibTool::ShiftType
ShiftType
shift to be applied after the BDT.
Definition: egammaMVACalibTool.h:87
xAOD::Egamma_v1
Definition: Egamma_v1.h:56
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
Property
Support class for PropertyMgr.
Definition: Property.h:23
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:70
IegammaMVACalibTool
A tool used by the egammaMVASvc to help manage the MVAs.
Definition: IegammaMVACalibTool.h:19
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:130
egammaMVACalibTool::NOSHIFT
@ NOSHIFT
Definition: egammaMVACalibTool.h:87
xAOD::EgammaParameters::NumberOfEgammaTypes
@ NumberOfEgammaTypes
Definition: EgammaEnums.h:22
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:233
egammaMVACalibTool::m_useLayerCorrected
Gaudi::Property< bool > m_useLayerCorrected
Definition: egammaMVACalibTool.h:117
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
egammaMVACalibTool::correctEaccordion
@ correctEaccordion
Definition: egammaMVACalibTool.h:82
egammaMVACalibTool::m_clusterEif0
Gaudi::Property< bool > m_clusterEif0
Definition: egammaMVACalibTool.h:108
columnar::final
CM final
Definition: ColumnAccessor.h:106
egammaMVACalibTool::m_shifts
std::vector< TFormula > m_shifts
shifts formulas
Definition: egammaMVACalibTool.h:133
egammaMVACalibTool::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: egammaMVACalibTool.cxx:51
egammaMVAFunctions.h
egammaMVACalibTool::CalibrationType
CalibrationType
how the output of the BDT is used correctEaccordion: energy = raw energy * BDT fullCalibration: energ...
Definition: egammaMVACalibTool.h:82
EgammaEnums.h
egammaMVACalib::GlobalEventInfo
A structure holding some global event information.
Definition: GlobalEventInfo.h:9
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
Gaudi
=============================================================================
Definition: CaloGPUClusterAndCellDataMonitorOptions.h:273
private
#define private
Definition: xAODTruthCnvAlg.h:20
egammaMVACalibTool::m_shiftType
Gaudi::Property< int > m_shiftType
Definition: egammaMVACalibTool.h:100
egammaMVACalibTool::fullCalibration
@ fullCalibration
Definition: egammaMVACalibTool.h:82
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:122
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:125
egammaMVACalibTool::getEnergy
float getEnergy(const xAOD::CaloCluster &clus, const xAOD::Egamma *eg, const egammaMVACalib::GlobalEventInfo &gei=egammaMVACalib::GlobalEventInfo()) const override final
returns the calibrated energy
Definition: egammaMVACalibTool.cxx:242
egammaMVACalibTool::egammaMVACalibTool
egammaMVACalibTool(const std::string &type)
Definition: egammaMVACalibTool.cxx:38