ATLAS Offline Software
IsolationCorrectionTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 #include "xAODEgamma/Egamma.h"
7 #include "xAODEgamma/Electron.h"
8 #include "xAODEgamma/Photon.h"
13 
14 #ifndef ROOTCORE
17 #endif //ROOTCORE
18 
19 #include "TFile.h"
20 
21 namespace CP {
22 
23  IsolationCorrectionTool::IsolationCorrectionTool( const std::string &name )
24  : asg::AsgMetadataTool(name), m_systDDonoff("PH_Iso_DDonoff") {
25  declareProperty("CorrFile", m_corr_file = "IsolationCorrections/v5/isolation_ptcorrections_rel20_2.root") ;
26  declareProperty("CorrFile_ddshift", m_corr_ddshift_file = "IsolationCorrections/v3/isolation_ddcorrection_shift.root");
27  declareProperty("CorrFile_ddsmearing", m_corr_ddsmearing_file = "IsolationCorrections/v1/isolation_ddcorrection_smearing.root", "a run I smearing for MC calo iso");
28  declareProperty("ToolVer", m_tool_ver_str = "REL21");
29  declareProperty("DataDrivenVer", m_ddVersion = "2017");
30  declareProperty("AFII_corr", m_AFII_corr = false);
31  declareProperty("IsMC", m_is_mc = true);
32  declareProperty("Correct_etcone", m_correct_etcone = false);
33  declareProperty("Trouble_categories", m_trouble_categories = true);
34  declareProperty("LogLogFitForLeakage", m_useLogLogFit = false);
35  declareProperty("ForcePartType", m_forcePartType = false);
36  declareProperty("Apply_ddshifts", m_apply_ddDefault = false);
37  declareProperty("Apply_SC_leakcorr", m_apply_SC_leak_corr = false);
38  declareProperty("Apply_etaEDParPU_correction", m_apply_etaEDParPU_corr = false);
39  declareProperty("Apply_etaEDPar_mc_correction", m_apply_etaEDParPU_mc_corr = false);
40  declareProperty("CorrFile_etaEDParPU_correction", m_corr_etaEDParPU_file = "IsolationCorrections/v6/zetas.root");
41  declareProperty("CorrFile_etaEDPar_mc_correction", m_corr_etaEDPar_mc_corr_file = "IsolationCorrections/v6/zetas_correction.root");
42 
43  m_isol_corr = new IsolationCorrection(name);
44  }
45 
47  ATH_MSG_INFO( "in initialize of " << name() << "..." );
48 
49  //ReadHandles
50  ATH_CHECK(m_eventInfoKey.initialize());
51  ATH_CHECK(m_centralEventShapeKey.initialize(m_apply_etaEDParPU_corr));
52  ATH_CHECK(m_forwardEventShapeKey.initialize(m_apply_etaEDParPU_corr));
53 
54  //
55  m_isol_corr->msg().setLevel(this->msg().level());
56  //
57  // Resolve the paths to the input files
58  std::vector < std::string > corrFileNameList;
59  corrFileNameList.push_back(m_corr_file);
60  corrFileNameList.push_back(m_corr_ddshift_file);
61  corrFileNameList.push_back(m_corr_ddsmearing_file);
62 
63  for ( unsigned int i=0; i<corrFileNameList.size(); ++i ){
64 
65  //First try the PathResolver
66  std::string filename = PathResolverFindCalibFile( corrFileNameList.at(i) );
67  if (filename.empty()){
68  ATH_MSG_ERROR ( "Could NOT resolve file name " << corrFileNameList.at(i) );
69  return StatusCode::FAILURE ;
70  } else{
71  ATH_MSG_INFO(" Path found = "<<filename);
72  }
73  corrFileNameList.at(i) = filename;
74  }
75  //
76 
78 
79  if (m_tool_ver_str == "REL22") tool_ver = CP::IsolationCorrection::REL22;
80  else if (m_tool_ver_str == "REL21") tool_ver = CP::IsolationCorrection::REL21;
81  else if (m_tool_ver_str == "REL20_2") tool_ver = CP::IsolationCorrection::REL20_2;
82  else if (m_tool_ver_str == "REL17_2") tool_ver = CP::IsolationCorrection::REL17_2;
83  else {
84  ATH_MSG_WARNING("Tool version not recognized: "<<m_tool_ver_str<<"\nAllowed versions: REL22, REL21, REL20_2, REL17_2");
85  return StatusCode::FAILURE;
86  }
87 
88  if(TString(corrFileNameList[0]).Contains("isolation_ptcorrections_rel17_2.root") && m_tool_ver_str != "REL17_2"){
89  ATH_MSG_WARNING("The specified correction file is not for "<<m_tool_ver_str<<" please use proper correction file");
90  return StatusCode::FAILURE;
91  }
92 
93  if (TString(corrFileNameList[0]).Contains("isolation_ptcorrections_rel20_2.root") && !( m_tool_ver_str == "REL20_2" || m_tool_ver_str == "REL21" ) ){
94  ATH_MSG_WARNING("The specified correction file is not for "<<m_tool_ver_str<<" please use proper correction file");
95  return StatusCode::FAILURE;
96  }
97  if (TString(corrFileNameList[0]).Contains("isolation_ptcorrections_rel22_") && m_tool_ver_str != "REL22" ){
98  ATH_MSG_WARNING("The specified correction file is not for "<<m_tool_ver_str<<" please use proper correction file");
99  return StatusCode::FAILURE;
100  }
101 
102  m_isol_corr->SetCorrectionFile(m_corr_file, m_corr_ddshift_file, m_corr_ddsmearing_file);
103  m_isol_corr->SetToolVer(tool_ver);
104  m_isol_corr->SetTroubleCategories(m_trouble_categories);
105  m_isol_corr->FitType(m_useLogLogFit);
106  m_isol_corr->ForcePartType(m_forcePartType);
107 
108  // Note that systematics in Rel 21 are NOT done with the DD-Corr ON/OFF method!
109  if (m_apply_ddDefault) {
110  if (m_ddVersion == "2015" || m_ddVersion == "2015_2016" || m_ddVersion == "2017") {
111  //if not REL21, register ourselves with the systematic registry!
112  if (m_tool_ver_str!="REL21") {
114  if( registry.registerSystematics( *this ) != StatusCode::SUCCESS ) return StatusCode::FAILURE;
115  }
116  m_apply_dd = true;
117  } else {
118  ATH_MSG_WARNING("Unknown data driven correction");
119  m_apply_dd = false;
120  }
121  } else{
122  m_apply_dd = false;
123  }
124 
125  // Don't use DD Corrections for AFII if not rel21 (I do not know what was done in rel20.7 !)
126  if (m_tool_ver_str != "REL21" && m_AFII_corr) m_apply_dd = false;
127 
128  m_isol_corr->SetAFII(m_AFII_corr);
129  m_isol_corr->SetDataMC(m_is_mc);
130 
131  if(m_apply_etaEDParPU_corr){
132  std::string filename = PathResolverFindCalibFile( m_corr_etaEDParPU_file );
133  if (filename.empty()){
134  ATH_MSG_ERROR ( "Could NOT resolve file name " << m_corr_etaEDParPU_file );
135  return StatusCode::FAILURE ;
136  }
137  ATH_MSG_INFO(" Path found = "<<filename);
138  std::unique_ptr<TFile> f(TFile::Open(filename.c_str(), "READ"));
139 
140  m_map_isotype_zetaPU[xAOD::Iso::topoetcone20] = std::unique_ptr<TGraph>((TGraph*)f->Get("topoetcone20"));
141  m_map_isotype_zetaPU[xAOD::Iso::topoetcone30] = std::unique_ptr<TGraph>((TGraph*)f->Get("topoetcone30"));
142  m_map_isotype_zetaPU[xAOD::Iso::topoetcone40] = std::unique_ptr<TGraph>((TGraph*)f->Get("topoetcone40"));
143  f->Close();
144 
145  if(m_apply_etaEDParPU_mc_corr){
146  std::string filename = PathResolverFindCalibFile( m_corr_etaEDPar_mc_corr_file );
147  if (filename.empty()){
148  ATH_MSG_ERROR ( "Could NOT resolve file name " << m_corr_etaEDPar_mc_corr_file );
149  return StatusCode::FAILURE ;
150  }
151  ATH_MSG_INFO(" Path found = "<<filename);
152  std::unique_ptr<TFile> f_corr(TFile::Open(filename.c_str(), "READ"));
153 
154  m_map_isotype_zeta_mc_corr[xAOD::Iso::topoetcone20] = std::unique_ptr<TGraph>((TGraph*)f_corr->Get("topoetcone20"));
155  m_map_isotype_zeta_mc_corr[xAOD::Iso::topoetcone30] = std::unique_ptr<TGraph>((TGraph*)f_corr->Get("topoetcone30"));
156  m_map_isotype_zeta_mc_corr[xAOD::Iso::topoetcone40] = std::unique_ptr<TGraph>((TGraph*)f_corr->Get("topoetcone40"));
157  f_corr->Close();
158  }
159  }
160 
161  return m_isol_corr->initialize();
162  }
163 
164 
165  // this will correct a corrected topoetcone : replace a (old) leakage by another (new) one
166  // This is not for photon, as it does not consider DD
167  CP::CorrectionCode IsolationCorrectionTool::CorrectLeakage(xAOD::Egamma & eg) {
168 
169  static const std::vector<xAOD::Iso::IsolationType> topoisolation_types = {xAOD::Iso::topoetcone20,
171 
172  for (auto type : topoisolation_types) {
173  float oldleak = 0.;
174  if (eg.isolationCaloCorrection(oldleak, type, xAOD::Iso::ptCorrection)) {
175  ATH_MSG_DEBUG("leakage correction not stored for isolation type " << xAOD::Iso::toCString(type) << ". Nothing done.");
176  continue;
177  }
178  float newleak = this->GetPtCorrection(eg,type);
179  float iso = 0;
180  if (!eg.isolationValue(iso,type)) {
181  ATH_MSG_WARNING("Isolation variable " << xAOD::Iso::toCString(type) << " not stored. Nothing done.");
182  continue;
183  }
184  iso += (oldleak-newleak);
185  bool setIso = eg.setIsolationValue(iso,type);
186  setIso = (setIso && eg.setIsolationCaloCorrection(newleak,type,xAOD::Iso::ptCorrection));
187  if (!setIso) {
188  ATH_MSG_WARNING("Can't correct leakage for " << xAOD::Iso::toCString(type));
190  }
191  }
192 
193  if (m_correct_etcone){
194  // this is supposed to correct an uncorrected etcone
195  static const std::vector<xAOD::Iso::IsolationType> isolation_types = {xAOD::Iso::etcone20,
198 
199  ATH_MSG_VERBOSE( "Correcting etconeXX isolation..." );
200  for(auto type : topoisolation_types){
201  float Etcone_value_corr = m_isol_corr->GetPtCorrectedIsolation(eg,type);
202  eg.setIsolationValue(Etcone_value_corr,type);
203  }
204  }
205 
206  return CP::CorrectionCode::Ok;
207  }
208 
209  CP::CorrectionCode IsolationCorrectionTool::applyCorrection(xAOD::Egamma &eg) {
210 
211  static const SG::AuxElement::Accessor<float> decDDcor20("topoetcone20_DDcorr");
212  static const SG::AuxElement::Accessor<float> decDDcor40("topoetcone40_DDcorr");
213 
214  float SCsub = 0;
215  if(m_apply_SC_leak_corr){
216  float topoetconecoreConeEnergyCorrection = 0;
217  if(!eg.isolationCaloCorrection(topoetconecoreConeEnergyCorrection, xAOD::Iso::topoetcone, xAOD::Iso::coreCone, xAOD::Iso::coreEnergy)){
218  ATH_MSG_WARNING("Could not find SC based core");
219  }
220  float core57cells = 0.;
222  ATH_MSG_WARNING("Could not find core57cells to apply SC based core correction");
223  }
224  ATH_MSG_VERBOSE("Old core correction value: " << core57cells);
225  ATH_MSG_VERBOSE("SC based core correction value: " << topoetconecoreConeEnergyCorrection);
226  SCsub = - topoetconecoreConeEnergyCorrection + core57cells;
227  }
228 
229  float centralDensity = 0.;
230  float forwardDensity = 0.;
231  if(m_apply_etaEDParPU_corr){
232  SG::ReadHandle<xAOD::EventShape> shapeCentral (m_centralEventShapeKey);
233  SG::ReadHandle<xAOD::EventShape> shapeForward (m_forwardEventShapeKey);
234  const xAOD::EventShape* evtShapeCentral = shapeCentral.ptr();
235  const xAOD::EventShape* evtShapeForward = shapeForward.ptr();
236  centralDensity = evtShapeCentral->getDensity(xAOD::EventShape::Density);
237  forwardDensity = evtShapeForward->getDensity(xAOD::EventShape::Density);
238  }
239 
240  static const std::vector<xAOD::Iso::IsolationType> topoisolation_types = {xAOD::Iso::topoetcone20,
243  for (auto type : topoisolation_types) {
244  float oldleak = 0.;
245  if (!eg.isolationCaloCorrection(oldleak, type, xAOD::Iso::ptCorrection)) {
246  ATH_MSG_DEBUG("leakage correction not stored for isolation type " << xAOD::Iso::toCString(type) << ". Nothing done");
247  continue;
248  }
249  float oldiso = 0;
250  bool gotIso = eg.isolationValue(oldiso,type);
251  if (!gotIso) continue;
252 
253  // Use the Random Run Number from the Event Info to check which year's DD-Corrections to use
254  // If the RandomRunNo can't be obtained, then default to what is set by either the default choice or by the AuxData check
255  unsigned int theRunNumber = 0 ;
256  SG::ReadHandle<xAOD::EventInfo> evtInfo (m_eventInfoKey);
257  const xAOD::EventInfo* eventInfo = evtInfo.ptr();
258  if (eventInfo) {
259  static const SG::AuxElement::Accessor<unsigned int> randomrunnumber("RandomRunNumber");
260  if (randomrunnumber.isAvailable(*eventInfo)){
261  theRunNumber = randomrunnumber(*(eventInfo)) ;
262  }
263  } else{
264  ATH_MSG_WARNING("Could not retrieve EventInfo object");
265  }
266  if (theRunNumber >= 320000)
267  m_ddVersion = "2017" ; // RunNo found, and is in 2017 range
268  else if (theRunNumber > 0)
269  m_ddVersion = "2015_2016" ; // RunNo found, but less than 2017 range
270  // otherwise, stick with default (m_ddVersion is already assigned)
271 
272  // Don't use DD Corrections for AFII if not rel21 ? (I do not know what was done for rel20.7 !!!)
273  if (m_tool_ver_str != "REL21" && m_AFII_corr) m_apply_dd = false;
274 
275  float iso = oldiso;
276  float newleak = 0.;
277  if(m_apply_SC_leak_corr){
278  ATH_MSG_VERBOSE("Iso before SC correction: " << iso);
279  iso += (SCsub + oldleak);
280  ATH_MSG_VERBOSE("Iso after SC correction: " << iso);
281  }
282  else {
283  newleak = this->GetPtCorrection(eg,type);
284  iso += (oldleak - newleak);
285  }
286  float ddcorr = 0;
287 
288  // this correction is derived purly from data, but can also be applied to mc
289  if(m_apply_etaEDParPU_corr){
290  float abseta = fabs(eg.caloCluster()->etaBE(2));
291  float densityOldCorrection = 0.;
292  if(abseta <= 1.5){
293  densityOldCorrection = centralDensity;
294  }
295  else{
296  densityOldCorrection = forwardDensity;
297  }
298  float dR = xAOD::Iso::coneSize(type);
299  static const float a_core = 5*7*0.025*TMath::Pi()/128;
300  float area = TMath::Pi()*dR*dR-a_core;
301  float oldpu_corr = densityOldCorrection*area;
302  float newpu_corr = m_map_isotype_zetaPU[type]->Eval(abseta)*centralDensity*area;
303  float pu_mc_corr = 0.;
304  if(m_apply_etaEDParPU_mc_corr && m_is_mc){
305  pu_mc_corr += m_map_isotype_zeta_mc_corr[type]->Eval(abseta)*centralDensity*area;
306  }
307  iso = iso + oldpu_corr - newpu_corr + pu_mc_corr;
308  ATH_MSG_VERBOSE("Applying parametrized pileup correction to " << eg.type() << " with |eta|="<< abseta);
309  ATH_MSG_VERBOSE("Old parametrized pileup correction for "<<xAOD::Iso::toCString(type)<< ": "<<oldpu_corr);
310  ATH_MSG_VERBOSE("New parametrized pileup correction for "<<xAOD::Iso::toCString(type)<< ": "<<newpu_corr);
311  ATH_MSG_VERBOSE("Parametrized mc correction for "<<xAOD::Iso::toCString(type)<< ": "<<pu_mc_corr);
312  ATH_MSG_VERBOSE("Isolation after new correction for "<<xAOD::Iso::toCString(type)<< ": "<<iso);
313  ATH_MSG_VERBOSE("Isolation after old correction for "<<xAOD::Iso::toCString(type)<< ": "<<iso+newpu_corr-oldpu_corr-pu_mc_corr);
314  eg.setIsolationCaloCorrection(newpu_corr, type, xAOD::Iso::pileupCorrection);
315  }
316 
317  if (m_is_mc && m_apply_dd && type != xAOD::Iso::topoetcone30 && eg.type() == xAOD::Type::Photon) {
318  ddcorr = this->GetDDCorrection(eg,type);
320  decDDcor20(eg) = ddcorr;
321  else if (type == xAOD::Iso::topoetcone40)
322  decDDcor40(eg) = ddcorr;
323  iso += ddcorr;
324  }
325  bool setIso = eg.setIsolationValue(iso,type);
326  setIso = (setIso && eg.setIsolationCaloCorrection(newleak-ddcorr,type,xAOD::Iso::ptCorrection));
327  ATH_MSG_VERBOSE("oldeak = " << oldleak << " ddcor = " << ddcorr << " leak param = " << newleak
328  << " stored correction " << eg.isolationCaloCorrection(type,xAOD::Iso::ptCorrection));
329 
330  if (!setIso) {
331  ATH_MSG_WARNING("Can't correct leakage for " << xAOD::Iso::toCString(type));
333  }
334  }
335  return CP::CorrectionCode::Ok;
336  }
337 
338  float IsolationCorrectionTool::GetPtCorrectedIsolation(const xAOD::Egamma& input, xAOD::Iso::IsolationType isol){
339  return m_isol_corr->GetPtCorrectedIsolation(input, isol);
340  }
341 
342  float IsolationCorrectionTool::GetPtCorrection(const xAOD::Egamma& input, xAOD::Iso::IsolationType isol) const {
343  return m_isol_corr->GetPtCorrection(input, isol);
344  }
345 
346  float IsolationCorrectionTool::GetDDCorrection(const xAOD::Egamma& input, xAOD::Iso::IsolationType isol){
347  return m_isol_corr->GetDDCorrection(input, isol, m_ddVersion);
348  }
349 
350  CP::CorrectionCode IsolationCorrectionTool::correctedCopy( const xAOD::Egamma& input, xAOD::Egamma*& output) {
351  // A sanity check:
352  if( output ) ATH_MSG_WARNING( "Non-null pointer received. There's a possible memory leak!" );
353 
354  if ( input.type() == xAOD::Type::Electron ) {
355  output = new xAOD::Electron();
356  output->makePrivateStore( static_cast<const xAOD::Electron&>(input) );
357  return applyCorrection( *output );
358  }
359  else if ( input.type() == xAOD::Type::Photon ) {
360  output = new xAOD::Photon();
361  output->makePrivateStore( static_cast<const xAOD::Photon&>(input) );
362  return applyCorrection( *output );
363  }
364  else {
365  ATH_MSG_WARNING("Didn't get an electron or photon");
367  }
368 
369  }
370 
371  //Systematics
372  bool IsolationCorrectionTool::isAffectedBySystematic( const CP::SystematicVariation& systematic ) const {
373  CP::SystematicSet sys = affectingSystematics();
374  return sys.find( systematic ) != sys.end();
375  }
376 
377  CP::SystematicSet IsolationCorrectionTool::affectingSystematics() const {
379  return result;
380  }
381 
382  CP::SystematicSet IsolationCorrectionTool::recommendedSystematics() const {
383  return affectingSystematics();
384  }
385 
386  StatusCode IsolationCorrectionTool::applySystematicVariation( const CP::SystematicSet& ) {
387  return StatusCode::SUCCESS;
388  }
389 
390  IsolationCorrectionTool::~IsolationCorrectionTool() {
391  delete m_isol_corr;
392  }
393 
394 }
xAOD::EventShape_v1::getDensity
bool getDensity(EventDensityID id, double &v) const
Get a density variable from the object.
Definition: EventShape_v1.cxx:135
python.Dso.registry
registry
Definition: Control/AthenaServices/python/Dso.py:159
xAOD::Iso::topoetcone
@ topoetcone
Topo-cluster ET-sum.
Definition: IsolationFlavour.h:25
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
xAOD::name
name
Definition: TriggerMenuJson_v1.cxx:29
CP::IsolationCorrection::REL20_2
@ REL20_2
Definition: PhysicsAnalysis/ElectronPhotonID/IsolationCorrections/IsolationCorrections/IsolationCorrection.h:33
xAOD::Iso::topoetcone20
@ topoetcone20
Topo-cluster ET-sum.
Definition: IsolationType.h:48
xAOD::Electron
Electron_v1 Electron
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Electron.h:17
get_generator_info.result
result
Definition: get_generator_info.py:21
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::Iso::coreEnergy
@ coreEnergy
energy stored for this correction
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:93
ParticleTest.eg
eg
Definition: ParticleTest.py:29
xAOD::Iso::ptCorrection
@ ptCorrection
egamma ptcorrection
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:32
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:66
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
initialize
void initialize()
Definition: run_EoverP.cxx:894
asg
Definition: DataHandleTestTool.h:28
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
IsolationCorrectionTool.h
xAOD::Iso::etcone40
@ etcone40
Definition: IsolationType.h:34
xAOD::Iso::topoetcone30
@ topoetcone30
Definition: IsolationType.h:49
xAOD::Egamma_v1
Definition: Egamma_v1.h:56
xAOD::Iso::etcone30
@ etcone30
Definition: IsolationType.h:33
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
CP::SystematicVariation
Definition: SystematicVariation.h:47
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:48
mapkey::sys
@ sys
Definition: TElectronEfficiencyCorrectionTool.cxx:42
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
xAOD::EventShape_v1::Density
@ Density
Definition: EventShape_v1.h:47
Egamma.h
xAOD::Iso::core57cells
@ core57cells
core 5x7 cells
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:26
CP::CorrectionCode::Error
@ Error
Some error happened during the object correction.
Definition: CorrectionCode.h:36
CP::IsolationCorrection::Version
Version
Definition: PhysicsAnalysis/ElectronPhotonID/IsolationCorrections/IsolationCorrections/IsolationCorrection.h:33
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:92
SystematicRegistry.h
xAOD::Iso::etcone20
@ etcone20
Calorimeter isolation.
Definition: IsolationType.h:32
Photon.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::Iso::IsolationType
IsolationType
Overall enumeration for isolation types in xAOD files.
Definition: IsolationType.h:26
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
CP::IsolationCorrection::REL22
@ REL22
Definition: PhysicsAnalysis/ElectronPhotonID/IsolationCorrections/IsolationCorrections/IsolationCorrection.h:33
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthAnalysisAlgorithm.h
CP::IsolationCorrection::REL21
@ REL21
Definition: PhysicsAnalysis/ElectronPhotonID/IsolationCorrections/IsolationCorrections/IsolationCorrection.h:33
xAOD::EventShape_v1
Data class for event shapes.
Definition: EventShape_v1.h:28
merge.output
output
Definition: merge.py:17
PathResolver.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
xAOD::Iso::coreCone
@ coreCone
core energy (in dR<0.1).
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:29
xAOD::Electron_v1
Definition: Electron_v1.h:34
EventInfo.h
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
xAOD::Photon
Photon_v1 Photon
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Photon.h:17
PathResolverFindCalibFile
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.cxx:431
SG::ReadHandle::ptr
const_pointer_type ptr()
Dereference the pointer.
AthAnalysisHelper.h
CP::CorrectionCode::Ok
@ Ok
The correction was done successfully.
Definition: CorrectionCode.h:38
xAOD::Photon_v1
Definition: Photon_v1.h:37
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CP::SystematicRegistry
This module implements the central registry for handling systematic uncertainties with CP tools.
Definition: SystematicRegistry.h:25
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
IsolationHelpers.h
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:24
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
SG::ConstAccessor< T, AuxAllocator_t< T > >::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
CP::IsolationCorrection::REL17_2
@ REL17_2
Definition: PhysicsAnalysis/ElectronPhotonID/IsolationCorrections/IsolationCorrections/IsolationCorrection.h:33
Electron.h
xAOD::Iso::topoetcone40
@ topoetcone40
Definition: IsolationType.h:50
area
double area(double R)
Definition: ConvertStaveServices.cxx:42
xAOD::Iso::coneSize
float coneSize(IsolationConeSize type)
convert Isolation Size into cone size
Definition: IsolationHelpers.h:27
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
xAOD::Iso::pileupCorrection
@ pileupCorrection
fully corrected
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:35
CP::SystematicRegistry::getInstance
static SystematicRegistry & getInstance()
Get the singleton instance of the registry for the curren thread.
Definition: SystematicRegistry.cxx:25