ATLAS Offline Software
AsgElectronEfficiencyCorrectionTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3  */
4 
5 #ifndef __ASGELECTRONEFFICIENCYCORRECTIONTOOL__
6 #define __ASGELECTRONEFFICIENCYCORRECTIONTOOL__
7 
16 // Fwd Declarations
17 class TH2F;
19 #include "xAODEgamma/ElectronFwd.h"
20 // Interface
22 // STL includes
23 #include <map>
24 #include <string>
25 #include <unordered_map>
26 #include <vector>
27 // PAT includes
29 #include "PATCore/PATCoreEnums.h"
32 
40 
43  , public asg::AsgMetadataTool
44  , public columnar::ColumnarTool<>
45 {
48 
49 public:
51  AsgElectronEfficiencyCorrectionTool(const std::string& myname);
53  virtual ~AsgElectronEfficiencyCorrectionTool() override final;
55  virtual StatusCode initialize() override final;
56 
57  /*
58  * Metadata tool methods
59  */
60  virtual StatusCode beginInputFile() override final;
61  virtual StatusCode beginEvent() override final;
62 
63  /*
64  * ISystematic tool methods
65  */
67  virtual CP::SystematicSet affectingSystematics() const override final;
69  virtual CP::SystematicSet recommendedSystematics() const override final;
71  virtual bool isAffectedBySystematic(
72  const CP::SystematicVariation& systematic) const override final;
75  const CP::SystematicSet& systConfig) override final;
76 
77  /*
78  * IAsgElectronEfficiencyCorrectionTool methods
79  */
81  const xAOD::Electron& inputObject,
82  double& efficiencyScaleFactor) const override final;
84  columnar::ElectronId inputObject,
85  double& efficiencyScaleFactor,
87  //
89  const double et, /*in MeV*/
90  const double cluster_eta, /*cluster*/
91  const unsigned int runNumber,
92  double& efficiencyScaleFactor) const override final;
93  //
95  const xAOD::Electron& inputObject) const override final;
96  //
97  virtual int getNumberOfToys() const override final
98  {
99  return m_number_of_toys;
100  };
102  virtual void printCorrelationModels() const override final
103  {
104  ATH_MSG_INFO(
105  " Available Correlation Models for the ElectronEfficiencyCorrectionTool");
106  ATH_MSG_INFO("FULL");
107  ATH_MSG_INFO("SIMPLIFIED");
108  ATH_MSG_INFO("MCTOYS");
109  ATH_MSG_INFO("SYST");
110  ATH_MSG_INFO("COMBMCTOYS");
111  ATH_MSG_INFO("TOTAL");
112  };
113 
116  {
117  return *m_appliedSystematics;
118  }
119 
120  virtual int systUncorrVariationIndex(
121  const xAOD::Electron& inputObject) const override final;
123  columnar::ElectronId inputObject) const;
124 
125 private:
127 
128  int currentSimplifiedUncorrSystRegion(const double cluster_eta,
129  const double et) const;
130  int currentUncorrSystRegion(const double cluster_eta, const double et) const;
131 
134 
135  // Gets the correction filename from map
136  virtual StatusCode getFile(const std::string& recokey,
137  const std::string& idkey,
138  const std::string& isokey,
139  const std::string& trigkey);
140  // Get the simulation type from metadata
143 
144  // struct for toys
145  struct SystConf
146  {
147  float m_total;
148  unsigned m_toy_index;
149  float m_toy_scale;
150  };
151 
153  bool m_metadata_retrieved = false;
154 
156  std::unique_ptr<Root::TElectronEfficiencyCorrectionTool> m_rootTool = nullptr;
157 
159  std::unordered_map<CP::SystematicSet, CP::SystematicSet> m_systFilter;
160 
163 
166 
167  // Correlation Model
170 
171  // Map-key properties
172  std::string m_mapFile;
173 
174  // Four SF key Properties
175  std::string m_recoKey;
176  std::string m_idKey;
177  std::string m_isoKey;
178  std::string m_trigKey;
179 
181  std::vector<std::string> m_corrFileNameList;
182 
184  std::string m_resultPrefix;
185 
187  std::string m_resultName;
188 
189  // The prefix for the systematic name
190  std::string m_sysSubstring;
191 
194 
195  // use RandomRun Number
198 
199  // The data type
201 
204 
205  // Number of toys:
207 
208  // seed for toys:
210 
211  // scale for toy uncertainty:
212  double m_scale_toys;
213 
214  // number of systematic uncertainties
217  std::vector<std::pair<float, std::vector<float>>> m_pteta_bins;
218 
219  // custom binning for SIMPLIFIED model
220  std::vector<float> m_uncorrSimplfEtaBinsUser;
221  std::vector<float> m_uncorrSimplfEtBinsUser;
222 
223  // simplified uncorrelation regions
226 
227  // Caching of variations we know after initialize
228  std::string m_toysBasename;
229  std::vector<CP::SystematicVariation> m_corrVarUp;
230  std::vector<CP::SystematicVariation> m_corrVarDown;
231  std::vector<CP::SystematicVariation> m_uncorrVarUp;
232  std::vector<CP::SystematicVariation> m_uncorrVarDown;
233 
234 public:
235 
237  {
239 
242 
249 
255  };
256  std::unique_ptr<Accessors> m_accessors;
257 
259  void callEvents (columnar::EventContextRange events) const override;
260 
261 }; // End: class definition
262 
263 #endif
AsgElectronEfficiencyCorrectionTool::getFile
virtual StatusCode getFile(const std::string &recokey, const std::string &idkey, const std::string &isokey, const std::string &trigkey)
Gets the correction filename from map.
Definition: AsgElectronEfficiencyCorrectionTool.cxx:845
AsgElectronEfficiencyCorrectionTool::m_correlation_model
int m_correlation_model
Definition: AsgElectronEfficiencyCorrectionTool.h:169
AsgElectronEfficiencyCorrectionTool::applySystematicVariation
virtual StatusCode applySystematicVariation(const CP::SystematicSet &systConfig) override final
Configure this tool for the given systematics.
Definition: AsgElectronEfficiencyCorrectionTool.cxx:598
AsgElectronEfficiencyCorrectionTool::Accessors::accAuthor
columnar::ElectronAccessor< uint16_t > accAuthor
Definition: AsgElectronEfficiencyCorrectionTool.h:246
AsgElectronEfficiencyCorrectionTool
Definition: AsgElectronEfficiencyCorrectionTool.h:45
et
Extra patterns decribing particle interation process.
AsgElectronEfficiencyCorrectionTool::Accessors::clusterEtaAcc
columnar::ClusterAccessor< float > clusterEtaAcc
Definition: AsgElectronEfficiencyCorrectionTool.h:253
LinkColumn.h
AsgElectronEfficiencyCorrectionTool::m_corrFileNameList
std::vector< std::string > m_corrFileNameList
The list of file names.
Definition: AsgElectronEfficiencyCorrectionTool.h:181
AsgElectronEfficiencyCorrectionTool::recommendedSystematics
virtual CP::SystematicSet recommendedSystematics() const override final
returns: the list of all systematics this tool recommends to use
Definition: AsgElectronEfficiencyCorrectionTool.cxx:592
get_generator_info.result
result
Definition: get_generator_info.py:21
AsgElectronEfficiencyCorrectionTool::m_idKey
std::string m_idKey
Definition: AsgElectronEfficiencyCorrectionTool.h:176
AsgElectronEfficiencyCorrectionTool::m_appliedSystematics
CP::SystematicSet * m_appliedSystematics
Currently applied systematics.
Definition: AsgElectronEfficiencyCorrectionTool.h:165
AsgElectronEfficiencyCorrectionTool::m_rootTool
std::unique_ptr< Root::TElectronEfficiencyCorrectionTool > m_rootTool
Pointer to the underlying ROOT based tool.
Definition: AsgElectronEfficiencyCorrectionTool.h:156
AsgElectronEfficiencyCorrectionTool::m_mapFile
std::string m_mapFile
Definition: AsgElectronEfficiencyCorrectionTool.h:172
AsgElectronEfficiencyCorrectionTool::InitSystematics
StatusCode InitSystematics()
initialize the systematics
Definition: AsgElectronEfficiencyCorrectionTool.cxx:646
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AsgElectronEfficiencyCorrectionTool::m_uncorrSimplfEtaBinsUser
std::vector< float > m_uncorrSimplfEtaBinsUser
Definition: AsgElectronEfficiencyCorrectionTool.h:220
IAsgElectronEfficiencyCorrectionTool.h
AsgElectronEfficiencyCorrectionTool::SystConf::m_toy_scale
float m_toy_scale
Definition: AsgElectronEfficiencyCorrectionTool.h:149
AsgElectronEfficiencyCorrectionTool::m_useRandomRunNumber
bool m_useRandomRunNumber
Definition: AsgElectronEfficiencyCorrectionTool.h:196
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
AsgElectronEfficiencyCorrectionTool::currentUncorrSystRegion
int currentUncorrSystRegion(const double cluster_eta, const double et) const
Definition: AsgElectronEfficiencyCorrectionTool.cxx:755
AsgElectronEfficiencyCorrectionTool::SystConf
Definition: AsgElectronEfficiencyCorrectionTool.h:146
AsgElectronEfficiencyCorrectionTool::initialize
virtual StatusCode initialize() override final
Gaudi Service Interface method implementations.
Definition: AsgElectronEfficiencyCorrectionTool.cxx:150
AsgElectronEfficiencyCorrectionTool::registerSystematics
StatusCode registerSystematics()
Definition: AsgElectronEfficiencyCorrectionTool.cxx:579
AsgElectronEfficiencyCorrectionTool::Accessors::m_clusterHandle
columnar::ClusterAccessor< columnar::ObjectColumn > m_clusterHandle
Definition: AsgElectronEfficiencyCorrectionTool.h:250
AsgElectronEfficiencyCorrectionTool::m_resultName
std::string m_resultName
The string for the result.
Definition: AsgElectronEfficiencyCorrectionTool.h:187
AsgElectronEfficiencyCorrectionTool::m_correlation_model_name
std::string m_correlation_model_name
Definition: AsgElectronEfficiencyCorrectionTool.h:168
EgammaDef.h
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
CP::SystematicVariation
Definition: SystematicVariation.h:47
columnar::ObjectRange
a class representing a continuous sequence of objects (a.k.a. a container)
Definition: ContainerId.h:175
python.TrigEgammaMonitorHelper.TH2F
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:45
python.DataFormatRates.events
events
Definition: DataFormatRates.py:105
AsgElectronEfficiencyCorrectionTool::m_accessors
std::unique_ptr< Accessors > m_accessors
Definition: AsgElectronEfficiencyCorrectionTool.h:256
AsgElectronEfficiencyCorrectionTool::m_defaultRandomRunNumber
int m_defaultRandomRunNumber
Definition: AsgElectronEfficiencyCorrectionTool.h:197
AsgElectronEfficiencyCorrectionTool::beginInputFile
virtual StatusCode beginInputFile() override final
Function called when a new input file is opened.
Definition: AsgElectronEfficiencyCorrectionTool.cxx:898
AsgElectronEfficiencyCorrectionTool::m_dataType
PATCore::ParticleDataType::DataType m_dataType
Definition: AsgElectronEfficiencyCorrectionTool.h:200
PATCore::ParticleDataType::DataType
DataType
Definition: PATCoreEnums.h:22
AsgElectronEfficiencyCorrectionTool::m_isoKey
std::string m_isoKey
Definition: AsgElectronEfficiencyCorrectionTool.h:177
AsgElectronEfficiencyCorrectionTool::callSingleEvent
void callSingleEvent(columnar::ElectronRange electrons, columnar::EventInfoId event) const
Definition: AsgElectronEfficiencyCorrectionTool.cxx:1004
AsgElectronEfficiencyCorrectionTool::SystConf::m_toy_index
unsigned m_toy_index
Definition: AsgElectronEfficiencyCorrectionTool.h:148
AsgElectronEfficiencyCorrectionTool::m_uncorrSimplfEtBinsUser
std::vector< float > m_uncorrSimplfEtBinsUser
Definition: AsgElectronEfficiencyCorrectionTool.h:221
columnar::ClusterHelpers::EtaBEAccessor
Definition: ClusterHelpers.h:60
AsgElectronEfficiencyCorrectionTool::Accessors::m_sfDec
columnar::ElectronDecorator< float > m_sfDec
Definition: AsgElectronEfficiencyCorrectionTool.h:247
AsgElectronEfficiencyCorrectionTool::m_toysBasename
std::string m_toysBasename
Definition: AsgElectronEfficiencyCorrectionTool.h:228
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
AsgElectronEfficiencyCorrectionTool::getNumberOfToys
virtual int getNumberOfToys() const override final
Definition: AsgElectronEfficiencyCorrectionTool.h:97
AsgElectronEfficiencyCorrectionTool::Accessors::caloClusterAcc
columnar::ElectronAccessor< std::vector< columnar::OptClusterId > > caloClusterAcc
Definition: AsgElectronEfficiencyCorrectionTool.h:251
SystematicRegistry.h
EventInfoDef.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ColumnAccessor.h
AsgElectronEfficiencyCorrectionTool::m_uncorrVarDown
std::vector< CP::SystematicVariation > m_uncorrVarDown
Definition: AsgElectronEfficiencyCorrectionTool.h:232
PATCoreEnums.h
AsgElectronEfficiencyCorrectionTool::m_nCorrSyst
int m_nCorrSyst
Definition: AsgElectronEfficiencyCorrectionTool.h:215
AsgElectronEfficiencyCorrectionTool::m_recoKey
std::string m_recoKey
Definition: AsgElectronEfficiencyCorrectionTool.h:175
AsgElectronEfficiencyCorrectionTool::appliedSystematics
virtual const CP::SystematicSet & appliedSystematics() const override final
returns: the currently applied systematics
Definition: AsgElectronEfficiencyCorrectionTool.h:115
AsgElectronEfficiencyCorrectionTool::m_number_of_toys
int m_number_of_toys
Definition: AsgElectronEfficiencyCorrectionTool.h:206
AsgElectronEfficiencyCorrectionTool::m_resultPrefix
std::string m_resultPrefix
The prefix string for the result.
Definition: AsgElectronEfficiencyCorrectionTool.h:184
ElectronFwd.h
AsgElectronEfficiencyCorrectionTool::systUncorrVariationIndex
virtual int systUncorrVariationIndex(const xAOD::Electron &inputObject) const override final
Definition: AsgElectronEfficiencyCorrectionTool.cxx:808
ObjectColumn.h
AsgElectronEfficiencyCorrectionTool::m_seed_toys
int m_seed_toys
Definition: AsgElectronEfficiencyCorrectionTool.h:209
AsgElectronEfficiencyCorrectionTool::Accessors::m_pt
columnar::ElectronAccessor< float > m_pt
Definition: AsgElectronEfficiencyCorrectionTool.h:245
ClusterHelpers.h
VectorColumn.h
AsgElectronEfficiencyCorrectionTool::applyEfficiencyScaleFactor
virtual CP::CorrectionCode applyEfficiencyScaleFactor(const xAOD::Electron &inputObject) const override final
Definition: AsgElectronEfficiencyCorrectionTool.cxx:539
AsgElectronEfficiencyCorrectionTool::m_nUncorrSyst
int m_nUncorrSyst
Definition: AsgElectronEfficiencyCorrectionTool.h:216
columnar::final
CM final
Definition: ColumnAccessor.h:106
AsgElectronEfficiencyCorrectionTool::Accessors::Accessors
Accessors(AsgElectronEfficiencyCorrectionTool &tool)
Definition: AsgElectronEfficiencyCorrectionTool.h:238
AsgElectronEfficiencyCorrectionTool::m_scale_toys
double m_scale_toys
Definition: AsgElectronEfficiencyCorrectionTool.h:212
AsgElectronEfficiencyCorrectionTool::m_dataTypeOverwrite
int m_dataTypeOverwrite
Force the data type to a given value.
Definition: AsgElectronEfficiencyCorrectionTool.h:203
AsgElectronEfficiencyCorrectionTool::m_corrVarDown
std::vector< CP::SystematicVariation > m_corrVarDown
Definition: AsgElectronEfficiencyCorrectionTool.h:230
columnar::ObjectId
a class representing a single object (electron, muons, etc.)
Definition: ContainerId.h:176
AsgElectronEfficiencyCorrectionTool::~AsgElectronEfficiencyCorrectionTool
virtual ASG_TOOL_CLASS(AsgElectronEfficiencyCorrectionTool, IAsgElectronEfficiencyCorrectionTool) public ~AsgElectronEfficiencyCorrectionTool() override final
Standard destructor.
Definition: AsgElectronEfficiencyCorrectionTool.cxx:142
AsgElectronEfficiencyCorrectionTool::printCorrelationModels
virtual void printCorrelationModels() const override final
print available/implemented correlation models
Definition: AsgElectronEfficiencyCorrectionTool.h:102
AsgElectronEfficiencyCorrectionTool::getEfficiencyScaleFactor
virtual CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::Electron &inputObject, double &efficiencyScaleFactor) const override final
Definition: AsgElectronEfficiencyCorrectionTool.cxx:334
AsgElectronEfficiencyCorrectionTool::m_systFilter
std::unordered_map< CP::SystematicSet, CP::SystematicSet > m_systFilter
Systematics filter map.
Definition: AsgElectronEfficiencyCorrectionTool.h:159
AsgElectronEfficiencyCorrectionTool::m_eventInfoCollectionName
std::string m_eventInfoCollectionName
The Event info collection name.
Definition: AsgElectronEfficiencyCorrectionTool.h:193
AsgElectronEfficiencyCorrectionTool::get_simType_from_metadata
StatusCode get_simType_from_metadata(PATCore::ParticleDataType::DataType &result) const
Definition: AsgElectronEfficiencyCorrectionTool.cxx:946
AsgElectronEfficiencyCorrectionTool::m_trigKey
std::string m_trigKey
Definition: AsgElectronEfficiencyCorrectionTool.h:178
AsgElectronEfficiencyCorrectionTool::affectingSystematics
virtual CP::SystematicSet affectingSystematics() const override final
returns: the list of all systematics this tool can be affected by
Definition: AsgElectronEfficiencyCorrectionTool.cxx:572
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:452
AsgElectronEfficiencyCorrectionTool::Accessors
Definition: AsgElectronEfficiencyCorrectionTool.h:237
AsgElectronEfficiencyCorrectionTool::Accessors::m_electrons
columnar::ElectronAccessor< columnar::ObjectColumn > m_electrons
Definition: AsgElectronEfficiencyCorrectionTool.h:243
xAOD::Electron_v1
Definition: Electron_v1.h:34
AsgElectronEfficiencyCorrectionTool::isAffectedBySystematic
virtual bool isAffectedBySystematic(const CP::SystematicVariation &systematic) const override final
returns: whether this tool is affected by the given systematis
Definition: AsgElectronEfficiencyCorrectionTool.cxx:556
AsgElectronEfficiencyCorrectionTool::m_uncorrVarUp
std::vector< CP::SystematicVariation > m_uncorrVarUp
Definition: AsgElectronEfficiencyCorrectionTool.h:231
AsgElectronEfficiencyCorrectionTool::callEvents
void callEvents(columnar::EventContextRange events) const override
Definition: AsgElectronEfficiencyCorrectionTool.cxx:1026
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
AsgElectronEfficiencyCorrectionTool::Accessors::m_validDec
columnar::ElectronDecorator< char > m_validDec
Definition: AsgElectronEfficiencyCorrectionTool.h:248
AsgElectronEfficiencyCorrectionTool::beginEvent
virtual StatusCode beginEvent() override final
Function called when a new events is loaded.
Definition: AsgElectronEfficiencyCorrectionTool.cxx:933
AsgElectronEfficiencyCorrectionTool::Accessors::clusterEAcc
columnar::ClusterAccessor< float > clusterEAcc
Definition: AsgElectronEfficiencyCorrectionTool.h:252
AsgElectronEfficiencyCorrectionTool::Accessors::m_eta
columnar::ElectronAccessor< float > m_eta
Definition: AsgElectronEfficiencyCorrectionTool.h:244
columnar
Definition: ClusterDef.h:16
asg::AsgMetadataTool
Base class for dual-use tools that provide file metadata access.
Definition: AsgMetadataTool.h:48
AsgElectronEfficiencyCorrectionTool::m_nSimpleUncorrSyst
int m_nSimpleUncorrSyst
Definition: AsgElectronEfficiencyCorrectionTool.h:225
AsgElectronEfficiencyCorrectionTool::m_affectedSys
CP::SystematicSet m_affectedSys
Affected systematic, should be done only once.
Definition: AsgElectronEfficiencyCorrectionTool.h:162
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
AsgElectronEfficiencyCorrectionTool::m_corrVarUp
std::vector< CP::SystematicVariation > m_corrVarUp
Definition: AsgElectronEfficiencyCorrectionTool.h:229
columnar::ColumnarTool
the base class for all columnar components
Definition: ColumnAccessorDataArray.h:17
AsgElectronEfficiencyCorrectionTool::m_UncorrRegions
TH2F * m_UncorrRegions
Definition: AsgElectronEfficiencyCorrectionTool.h:224
AsgMetadataTool.h
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
AsgElectronEfficiencyCorrectionTool::Accessors::m_eventInfo
columnar::EventInfoAccessor< columnar::ObjectColumn > m_eventInfo
Definition: AsgElectronEfficiencyCorrectionTool.h:240
AsgElectronEfficiencyCorrectionTool::m_pteta_bins
std::vector< std::pair< float, std::vector< float > > > m_pteta_bins
Definition: AsgElectronEfficiencyCorrectionTool.h:217
CorrectionCode.h
AsgElectronEfficiencyCorrectionTool::m_sysSubstring
std::string m_sysSubstring
Definition: AsgElectronEfficiencyCorrectionTool.h:190
AsgElectronEfficiencyCorrectionTool::SystConf::m_total
float m_total
Definition: AsgElectronEfficiencyCorrectionTool.h:147
AsgElectronEfficiencyCorrectionTool::m_metadata_retrieved
bool m_metadata_retrieved
To check if the metadata can be retrieved.
Definition: AsgElectronEfficiencyCorrectionTool.h:153
AsgElectronEfficiencyCorrectionTool::Accessors::clusterEtaBEAcc
columnar::ClusterHelpers::EtaBEAccessor clusterEtaBEAcc
Definition: AsgElectronEfficiencyCorrectionTool.h:254
TElectronEfficiencyCorrectionTool.h
IAsgElectronEfficiencyCorrectionTool
Definition: IAsgElectronEfficiencyCorrectionTool.h:18
columnar::AccessorTemplate
the raw column accessor template class
Definition: ColumnAccessor.h:81
AsgElectronEfficiencyCorrectionTool::Accessors::randomrunnumber
columnar::EventInfoAccessor< uint32_t > randomrunnumber
Definition: AsgElectronEfficiencyCorrectionTool.h:241
python.ParticleTypeUtil.info
def info
Definition: ParticleTypeUtil.py:87
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
AsgElectronEfficiencyCorrectionTool::currentSimplifiedUncorrSystRegion
int currentSimplifiedUncorrSystRegion(const double cluster_eta, const double et) const
Definition: AsgElectronEfficiencyCorrectionTool.cxx:716