ATLAS Offline Software
EgammaObjectCollectionMaker.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3  */
4 
5 // $Id: EgammaObjectCollectionMaker.cxx 811374 2017-10-24 13:04:52Z iconnell $
9 #include "TopEvent/EventTools.h"
10 
17 #include "xAODCore/ShallowCopy.h"
21 
22 #include <list>
23 
24 namespace top {
26  asg::AsgTool(name),
27  m_config(nullptr),
28 
29  m_specifiedSystematicsPhotons(),
30  m_specifiedSystematicsElectrons(),
31  m_specifiedSystematicsFwdElectrons(),
32  m_recommendedSystematicsPhotons(),
33  m_recommendedSystematicsElectrons(),
34  m_recommendedSystematicsFwdElectrons(),
35 
36  m_calibrationTool("EgammaCalibrationAndSmearingTool"),
37  m_photonFudgeTool("PhotonFudgeTool"),
38 
39  m_isolationCorr("IsolationCorrectionTool") {
40  declareProperty("config", m_config);
41  }
42 
44  ATH_MSG_INFO(" top::EgammaObjectCollectionMaker initialize");
45 
46  top::check(m_calibrationTool.retrieve(), "Failed to retrieve egamma calibration tool");
47 
48  // These flags were for early R21 when we were asked not to calibrate egamma objects
49  calibrateElectrons = true;
50  calibrateFwdElectrons = true;
51  calibratePhotons = true;
52 
53  if (m_config->usePhotons()) {
54  for (const std::string& WP : m_config->photonIsolationWPs()) {
55  m_photonIsolationTools[WP] = ToolHandle<CP::IIsolationSelectionTool>("IsolationTool_PhotonWP_" + WP);
56  top::check(m_photonIsolationTools[WP].retrieve(), "Failed to retrieve photon isolation tool for WP " + WP);
57  }
58  top::check(m_photonFudgeTool.retrieve(), "Failed to retrieve photon shower shape fudge tool");
59  }
60 
61  if (m_config->useElectrons()) {
62  for (const std::string& WP : m_config->electronIsolationWPs()) {
63  m_electronIsolationTools[WP] = ToolHandle<CP::IIsolationSelectionTool>("IsolationTool_ElectronWP_" + WP);
64  top::check(m_electronIsolationTools[WP].retrieve(), "Failed to retrieve electron isolation tool for WP " + WP);
65  }
66  }
67 
68  top::check(m_isolationCorr.retrieve(), "Failed to retrieve Isolation Correction Tool");
69 
70  std::set<std::string> systPhoton;
71  std::set<std::string> systElectron;
72  std::set<std::string> systFwdElectron;
73 
74  const std:: string& syststr = m_config->systematics();
75  std::set<std::string> syst;
76 
77  if (!m_config->isSystNominal(syststr) && !m_config->isSystAll(syststr)) {
78  bool ok = m_config->getSystematicsList(syststr, syst);
79  if (!ok) {
80  ATH_MSG_ERROR(" top::EgammaObjectCollectionMaker could not determine systematic list");
81  return StatusCode::FAILURE;
82  }
83  //here the idea is that if the user specifies AllXXX, we leave syst as an empty string, so that all recommended CP
84  // systematics are then used
85  if (!m_config->contains(syst, "AllElectrons")) {
86  systElectron = syst;
87  }
88  if (!m_config->contains(syst, "AllPhotons")) {
89  systPhoton = syst;
90  }
91  if (!m_config->contains(syst, "AllFwdElectrons")) {
92  systFwdElectron = syst;
93  }
94  }
95 
96  specifiedSystematicsPhotons(systPhoton);
97  specifiedSystematicsElectrons(systElectron);
98  specifiedSystematicsFwdElectrons(systFwdElectron);
99 
100  if (m_config->usePhotons()) {
101  m_config->systematicsPhotons(specifiedSystematicsPhotons());
102  }
103  if (m_config->useElectrons()) {
104  m_config->systematicsElectrons(specifiedSystematicsElectrons());
105  }
106  if (m_config->useFwdElectrons()) {
107  m_config->systematicsFwdElectrons(specifiedSystematicsFwdElectrons());
108  }
109 
110  // bool to decide whether to use certain Egamma tools
111  m_recomputePhotonFudge = m_config->recomputeCPvars();
112 
113  return StatusCode::SUCCESS;
114  }
115 
118  const xAOD::PhotonContainer* xaod(nullptr);
119 
120  top::check(evtStore()->retrieve(xaod, m_config->sgKeyPhotons()), "Failed to retrieve Photons");
121 
123  for (auto systematic : m_specifiedSystematicsPhotons) {
125  if (executeNominal && !m_config->isSystNominal(m_config->systematicName(systematic.hash()))) continue;
126  if (!executeNominal && m_config->isSystNominal(m_config->systematicName(systematic.hash()))) continue;
127 
129  top::check(m_calibrationTool->applySystematicVariation(systematic), "Failed to applySystematicVariation");
130 
132  std::pair< xAOD::PhotonContainer*, xAOD::ShallowAuxContainer* > shallow_xaod_copy = xAOD::shallowCopyContainer(
133  *xaod);
134 
136  for (auto photon : *(shallow_xaod_copy.first)) {
138  // Needs a calo cluster so carry on if no cluster
139  if (!photon->caloCluster()) continue;
140 
141  if (calibratePhotons) {
142  top::check(m_calibrationTool->applyCorrection(*photon),
143  "Failed to applyCorrection");
144  // TODO -- revert back once the isolation corrections are fully settled in R22
145  // top::check(m_isolationCorr->applyCorrection(*photon),
146  // "Failed to apply photon isolation leakage correction");
147 
148  if (m_config->isMC() && !m_config->isAFII() && m_recomputePhotonFudge && m_config->getDerivationStream() != "PHYS") {
149  if (m_photonFudgeTool->applyCorrection(*photon) == 0) { // 0: error, 1: OutOfRange (not possible), 2: OK
150  // ElectronPhotonShowerShapeFudgeTool::applyCorrection can return an error for 3 reasons
151  // 1) shower shapes not all found, 2) bad cluster, 3) shower shapes not all set.
152  // 1 & 3 are most likely due to the smart slimming (no PhotonsDetailedCPContent), whereas 2 is an actual
153  // issue.
154  // Check for case 2 now:
155  if (photon->caloCluster() == nullptr) {
156  ATH_MSG_ERROR("Photon " << photon << " had no calo cluster - this is bad!");
157  return StatusCode::FAILURE;
158  } else {
159  // We're now in case 1 or 3
161  " Didn't find the necessary photon shower shapes variables for the ElectronPhotonShowerShapeFudgeTool! (but don't worry, you're still getting correctly ID'd photons)");
162  // Keep going, but don't try to use the tool anymore
163  m_recomputePhotonFudge = false;
164  }
165  }
166  }
167  }
169  for (const auto& photonIsoWP : m_photonIsolationTools) {
170  const char passIsol = (photonIsoWP.second->accept(*photon)) ? 1 : 0;
171  photon->auxdecor<char>("AnalysisTop_Isol_" + photonIsoWP.first) = passIsol;
172  }
173  } // end photon loop
174 
176  bool setLinks = xAOD::setOriginalObjectLink(*xaod, *shallow_xaod_copy.first);
177  if (!setLinks) ATH_MSG_ERROR(" Cannot set original object links for photons, MET recalculation may struggle");
178 
180  std::string outputSGKey = m_config->sgKeyPhotons(systematic.hash());
181  std::string outputSGKeyAux = outputSGKey + "Aux.";
182 
183  StatusCode save = evtStore()->tds()->record(shallow_xaod_copy.first, outputSGKey);
184  StatusCode saveAux = evtStore()->tds()->record(shallow_xaod_copy.second, outputSGKeyAux);
185 
186  if (!save || !saveAux) {
187  return StatusCode::FAILURE;
188  }
189  } // Loop over all systematics
190  return StatusCode::SUCCESS;
191  }
192 
194  const xAOD::EventInfo* eventInfo(nullptr);
195 
196  top::check(evtStore()->retrieve(eventInfo, m_config->sgKeyEventInfo()), "Failed to retrieve EventInfo");
197  float beam_pos_sigma_x = eventInfo->beamPosSigmaX();
198  float beam_pos_sigma_y = eventInfo->beamPosSigmaY();
199  float beam_pos_sigma_xy = eventInfo->beamPosSigmaXY();
200 
202  const xAOD::ElectronContainer* xaod(nullptr);
203  top::check(evtStore()->retrieve(xaod, m_config->sgKeyElectrons()), "Failed to retrieve Electrons");
204 
206  for (auto systematic : m_specifiedSystematicsElectrons) {
208  if (executeNominal && !m_config->isSystNominal(m_config->systematicName(systematic.hash()))) continue;
209  if (!executeNominal && m_config->isSystNominal(m_config->systematicName(systematic.hash()))) continue;
210 
212  top::check(m_calibrationTool->applySystematicVariation(systematic), "Failed to applySystematicVariation");
213 
215  std::pair< xAOD::ElectronContainer*, xAOD::ShallowAuxContainer* > shallow_xaod_copy = xAOD::shallowCopyContainer(
216  *xaod);
217 
219  for (auto electron : *(shallow_xaod_copy.first)) {
220  // Apply correction to object
221  // should not affect derivations if there is no CC or track thinning
222  if (electron->caloCluster() != nullptr && electron->trackParticle() != nullptr) { // derivations might remove CC
223  // and tracks for low pt
224  // electrons
225  if (calibrateElectrons) {
226  top::check(m_calibrationTool->applyCorrection(*electron), "Failed to applyCorrection");
227  // TODO -- revert back once the isolation corrections are fully settled in R22
228  // top::check(m_isolationCorr->applyCorrection(*electron), "Failed to apply leakage correction");
229  }
230 
231  double d0sig = xAOD::TrackingHelpers::d0significance(electron->trackParticle(),
232  beam_pos_sigma_x,
233  beam_pos_sigma_y,
234  beam_pos_sigma_xy);
235  electron->auxdecor<float>("d0sig") = d0sig;
236 
237  if (eventInfo->isAvailable<float>("AnalysisTop_PRIVTX_z_position")) {
238  float vtx_z = eventInfo->auxdata<float>("AnalysisTop_PRIVTX_z_position");
239  float delta_z0 = electron->trackParticle()->z0() + electron->trackParticle()->vz() - vtx_z;
240  electron->auxdecor<float>("delta_z0") = delta_z0;
241  electron->auxdecor<float>("delta_z0_sintheta") = delta_z0 * std::sin(electron->trackParticle()->theta());
242  }
243  }
244 
246  for (const auto& electronIsoWP : m_electronIsolationTools) {
247  const char passIsol = (electronIsoWP.second->accept(*electron)) ? 1 : 0;
248  electron->auxdecor<char>("AnalysisTop_Isol_" + electronIsoWP.first) = passIsol;
249  }
250  } // end electron loop
251 
253  bool setLinks = xAOD::setOriginalObjectLink(*xaod, *shallow_xaod_copy.first);
254  if (!setLinks) ATH_MSG_ERROR(" Cannot set original object links for electrons, MET recalculation may struggle");
255 
256  // Save corrected xAOD Container to StoreGate / TStore
257  std::string outputSGKey = m_config->sgKeyElectronsStandAlone(systematic.hash());
258  std::string outputSGKeyAux = outputSGKey + "Aux.";
259 
260  StatusCode save = evtStore()->tds()->record(shallow_xaod_copy.first, outputSGKey);
261  StatusCode saveAux = evtStore()->tds()->record(shallow_xaod_copy.second, outputSGKeyAux);
262 
263  if (!save || !saveAux) {
264  return StatusCode::FAILURE;
265  }
266  } // Loop over all systematics
267 
268  return StatusCode::SUCCESS;
269  }
270 
272  const xAOD::EventInfo* eventInfo(nullptr);
273 
274  top::check(evtStore()->retrieve(eventInfo, m_config->sgKeyEventInfo()), "Failed to retrieve EventInfo");
275 
277  const xAOD::ElectronContainer* xaod(nullptr);
278  top::check(evtStore()->retrieve(xaod, m_config->sgKeyFwdElectrons()), "Failed to retrieve Fwd Electrons");
279 
281  for (auto systematic : m_specifiedSystematicsFwdElectrons) {
283  if (executeNominal && !m_config->isSystNominal(m_config->systematicName(systematic.hash()))) continue;
284  if (!executeNominal && m_config->isSystNominal(m_config->systematicName(systematic.hash()))) continue;
285 
287  top::check(m_calibrationTool->applySystematicVariation(systematic), "Failed to applySystematicVariation");
288 
290  std::pair< xAOD::ElectronContainer*, xAOD::ShallowAuxContainer* > shallow_xaod_copy = xAOD::shallowCopyContainer(
291  *xaod);
292 
294  for (auto electron : *(shallow_xaod_copy.first)) {
295  // Apply correction to object
296  // should not affect derivations if there is no CC or track thinning
297  if (electron->caloCluster() != nullptr) { // derivations might remove CC for low pt electrons
298  if (calibrateFwdElectrons) {
299  top::check(m_calibrationTool->applyCorrection(*electron), "Failed to applyCorrection to fwd electrons");
300  }
301  }
302  }//end of loop on electrons
303 
305  bool setLinks = xAOD::setOriginalObjectLink(*xaod, *shallow_xaod_copy.first);
306  if (!setLinks) ATH_MSG_ERROR(" Cannot set original object links for fwd electrons");
307 
308  // Save corrected xAOD Container to StoreGate / TStore
309  std::string outputSGKey = m_config->sgKeyFwdElectronsStandAlone(systematic.hash());
310  std::string outputSGKeyAux = outputSGKey + "Aux.";
311 
312  StatusCode save = evtStore()->tds()->record(shallow_xaod_copy.first, outputSGKey);
313  StatusCode saveAux = evtStore()->tds()->record(shallow_xaod_copy.second, outputSGKeyAux);
314 
315  if (!save || !saveAux) {
316  return StatusCode::FAILURE;
317  }
318  } // Loop over all systematics
319 
320  return StatusCode::SUCCESS;
321  }
322 
324  // Loop over all systematics
325  for (auto s : m_specifiedSystematicsPhotons) {
326  const xAOD::PhotonContainer* xaod(nullptr);
327  top::check(evtStore()->retrieve(xaod, m_config->sgKeyPhotons(s.hash())), "Failed to retrieve Photons");
328 
329  ATH_MSG_INFO(" Photons with sgKey = " << m_config->sgKeyPhotons(s.hash()));
330  for (auto x : *xaod) {
331  float ptcone30(0.);
332  x->isolationValue(ptcone30, xAOD::Iso::ptcone30);
333  ATH_MSG_INFO(" ph pT , eta , ptcone30 = " << x->pt() << " , " << x->eta() << " , " << ptcone30);
334  }
335  }
336 
337  return StatusCode::SUCCESS;
338  }
339 
341  // Loop over all systematics
342  for (auto s : m_specifiedSystematicsElectrons) {
343  const xAOD::ElectronContainer* xaod(nullptr);
344  top::check(evtStore()->retrieve(xaod, m_config->sgKeyElectronsStandAlone(
345  s.hash())), "Failed to retrieve Electrons");
346 
347  ATH_MSG_INFO(" Electrons with sgKey = " << m_config->sgKeyElectronsStandAlone(s.hash()));
348  for (auto x : *xaod) {
349  float ptcone30(0.);
350  x->isolationValue(ptcone30, xAOD::Iso::ptcone30);
351  ATH_MSG_INFO(" El pT , eta , ptcone30 = " << x->pt() << " , " << x->eta() << " , " << ptcone30);
352  }
353  }
354 
355  return StatusCode::SUCCESS;
356  }
357 
359  // Loop over all systematics
361  const xAOD::ElectronContainer* xaod(nullptr);
362  top::check(evtStore()->retrieve(xaod, m_config->sgKeyFwdElectronsStandAlone(
363  s.hash())), "Failed to retrieve Fwd Electrons");
364 
365  ATH_MSG_INFO(" Fwd Electrons with sgKey = " << m_config->sgKeyFwdElectronsStandAlone(s.hash()));
366  for (auto x : *xaod) {
367  ATH_MSG_INFO(" El pT , eta = " << x->pt() << " , " << x->eta());
368  }
369  }
370 
371  return StatusCode::SUCCESS;
372  }
373 
374  void EgammaObjectCollectionMaker::specifiedSystematicsPhotons(const std::set<std::string>& specifiedSystematics) {
376  const std::vector<CP::SystematicSet> systList = CP::make_systematics_vector(
377  m_calibrationTool->recommendedSystematics());
378 
379  for (auto s : systList) {
380 
381  if(!m_config->getTreeFilter()->filterTree(s.name())) continue; // Applying tree filter
383  if (s.name() == "") {
384  m_specifiedSystematicsPhotons.push_back(s);
385  }
386 
388  if (m_config->isMC()) {
390  if (!m_config->isSystNominal(m_config->systematics())) {
391  if (specifiedSystematics.size() == 0) {
392  m_specifiedSystematicsPhotons.push_back(s);
393  }
394  if (specifiedSystematics.size() > 0) {
395  for (auto i : specifiedSystematics) {
397  if (!filter.filterTree(s.name())) {
398  m_specifiedSystematicsPhotons.push_back(s);
399  }
400  }
401  }
402  }
403  }
404  }
409  }
410 
411  void EgammaObjectCollectionMaker::specifiedSystematicsElectrons(const std::set<std::string>& specifiedSystematics) {
413  const std::vector<CP::SystematicSet> systList = CP::make_systematics_vector(
414  m_calibrationTool->recommendedSystematics());
415 
416  for (auto s : systList) {
417 
418  if(!m_config->getTreeFilter()->filterTree(s.name())) continue; // Applying tree filter
420  if (s.name() == "") {
422  }
423 
425  if (m_config->isMC()) {
427  if (!m_config->isSystNominal(m_config->systematics())) {
428  if (specifiedSystematics.size() == 0) {
430  }
431  if (specifiedSystematics.size() > 0) {
432  for (auto i : specifiedSystematics) {
434  if (!filter.filterTree(s.name())) {
436  }
437  }
438  }
439  }
440  }
441  }
446  }
447 
448  void EgammaObjectCollectionMaker::specifiedSystematicsFwdElectrons(const std::set<std::string>& specifiedSystematics)
449  {
451  const std::vector<CP::SystematicSet> systList = CP::make_systematics_vector(
452  m_calibrationTool->recommendedSystematics());
453 
454  for (auto s : systList) {
455 
456  if(!m_config->getTreeFilter()->filterTree(s.name())) continue; // Applying tree filter
458  if (s.name() == "") {
460  }
461 
463  if (m_config->isMC()) {
465  if (!m_config->isSystNominal(m_config->systematics())) {
466  if (specifiedSystematics.size() == 0) {
468  }
469  if (specifiedSystematics.size() > 0) {
470  for (auto i : specifiedSystematics) {
472  if (!filter.filterTree(s.name())) {
474  }
475  }
476  }
477  }
478  }
479  }
484  }
485 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ShallowCopy.h
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
top::EgammaObjectCollectionMaker::executeElectrons
StatusCode executeElectrons(bool)
Definition: EgammaObjectCollectionMaker.cxx:193
top
TopConfig A simple configuration that is NOT a singleton.
Definition: AnalysisTrackingHelper.cxx:58
TrackParticlexAODHelpers.h
EgammaObjectCollectionMaker.h
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CP::make_systematics_vector
std::vector< CP::SystematicSet > make_systematics_vector(const SystematicSet &systematics)
utility functions for working with systematics
Definition: SystematicsUtil.cxx:25
top::EgammaObjectCollectionMaker::m_specifiedSystematicsPhotons
std::list< CP::SystematicSet > m_specifiedSystematicsPhotons
Definition: EgammaObjectCollectionMaker.h:90
top::EgammaObjectCollectionMaker::m_photonIsolationTools
std::unordered_map< std::string, ToolHandle< CP::IIsolationSelectionTool > > m_photonIsolationTools
Definition: EgammaObjectCollectionMaker.h:103
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
IsoCloseByCorrectionTest.WP
WP
Definition: IsoCloseByCorrectionTest.py:56
TreeFilter.h
xAOD::TrackingHelpers::d0significance
double d0significance(const xAOD::TrackParticle *tp, double d0_uncert_beam_spot_2)
Definition: TrackParticlexAODHelpers.cxx:42
asg
Definition: DataHandleTestTool.h:28
xAOD::Iso::ptcone30
@ ptcone30
Definition: IsolationType.h:41
top::EgammaObjectCollectionMaker::m_recomputePhotonFudge
bool m_recomputePhotonFudge
Definition: EgammaObjectCollectionMaker.h:113
xAOD::EventInfo_v1::beamPosSigmaX
float beamPosSigmaX() const
The width of the beam spot in the X direction.
x
#define x
EventTools.h
A few functions for doing operations on particles / events. Currently holds code for dR,...
top::EgammaObjectCollectionMaker::printoutElectrons
StatusCode printoutElectrons()
Definition: EgammaObjectCollectionMaker.cxx:340
covarianceTool.filter
filter
Definition: covarianceTool.py:514
top::TreeFilter
Definition: TreeFilter.h:13
top::EgammaObjectCollectionMaker::m_recommendedSystematicsFwdElectrons
std::list< CP::SystematicSet > m_recommendedSystematicsFwdElectrons
Definition: EgammaObjectCollectionMaker.h:96
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
top::EgammaObjectCollectionMaker::calibratePhotons
bool calibratePhotons
Definition: EgammaObjectCollectionMaker.h:110
checkTP.save
def save(self, fileName="./columbo.out")
Definition: checkTP.py:178
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
top::EgammaObjectCollectionMaker::printoutFwdElectrons
StatusCode printoutFwdElectrons()
Definition: EgammaObjectCollectionMaker.cxx:358
ElectronContainer.h
lumiFormat.i
int i
Definition: lumiFormat.py:92
ElectronAuxContainer.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
top::EgammaObjectCollectionMaker::initialize
StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: EgammaObjectCollectionMaker.cxx:43
top::check
void check(bool thingToCheck, const std::string &usefulFailureMessage)
Print an error message and terminate if thingToCheck is false.
Definition: EventTools.cxx:15
top::EgammaObjectCollectionMaker::EgammaObjectCollectionMaker
EgammaObjectCollectionMaker(const std::string &name)
Definition: EgammaObjectCollectionMaker.cxx:25
top::EgammaObjectCollectionMaker::m_isolationCorr
ToolHandle< CP::IIsolationCorrectionTool > m_isolationCorr
Definition: EgammaObjectCollectionMaker.h:105
top::EgammaObjectCollectionMaker::m_recommendedSystematicsElectrons
std::list< CP::SystematicSet > m_recommendedSystematicsElectrons
Definition: EgammaObjectCollectionMaker.h:95
top::EgammaObjectCollectionMaker::m_specifiedSystematicsFwdElectrons
std::list< CP::SystematicSet > m_specifiedSystematicsFwdElectrons
Definition: EgammaObjectCollectionMaker.h:92
top::EgammaObjectCollectionMaker::specifiedSystematicsPhotons
virtual const std::list< CP::SystematicSet > & specifiedSystematicsPhotons() const
Definition: EgammaObjectCollectionMaker.h:66
top::EgammaObjectCollectionMaker::m_recommendedSystematicsPhotons
std::list< CP::SystematicSet > m_recommendedSystematicsPhotons
Definition: EgammaObjectCollectionMaker.h:94
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
top::EgammaObjectCollectionMaker::specifiedSystematicsFwdElectrons
virtual const std::list< CP::SystematicSet > & specifiedSystematicsFwdElectrons() const
Definition: EgammaObjectCollectionMaker.h:72
top::EgammaObjectCollectionMaker::executePhotons
StatusCode executePhotons(bool)
Definition: EgammaObjectCollectionMaker.cxx:116
SG::AuxElement::auxdata
Accessor< T, ALLOC >::reference_type auxdata(const std::string &name)
Fetch an aux data variable, as a non-const reference.
xAOD::EventInfo_v1::beamPosSigmaY
float beamPosSigmaY() const
The width of the beam spot in the Y direction.
top::EgammaObjectCollectionMaker::m_calibrationTool
ToolHandle< CP::IEgammaCalibrationAndSmearingTool > m_calibrationTool
Definition: EgammaObjectCollectionMaker.h:98
top::EgammaObjectCollectionMaker::m_config
std::shared_ptr< top::TopConfig > m_config
Definition: EgammaObjectCollectionMaker.h:88
top::EgammaObjectCollectionMaker::calibrateFwdElectrons
bool calibrateFwdElectrons
Definition: EgammaObjectCollectionMaker.h:109
SG::AuxElement::isAvailable
bool isAvailable(const std::string &name, const std::string &clsname="") const
Check if an aux variable is available for reading.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
top::EgammaObjectCollectionMaker::calibrateElectrons
bool calibrateElectrons
Definition: EgammaObjectCollectionMaker.h:108
TopConfig.h
xAOD::shallowCopyContainer
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, [[maybe_unused]] const EventContext &ctx)
Function making a shallow copy of a constant container.
Definition: ShallowCopy.h:110
EventInfo.h
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
top::EgammaObjectCollectionMaker::executeFwdElectrons
StatusCode executeFwdElectrons(bool)
Definition: EgammaObjectCollectionMaker.cxx:271
top::EgammaObjectCollectionMaker::m_photonFudgeTool
ToolHandle< IElectronPhotonShowerShapeFudgeTool > m_photonFudgeTool
Definition: EgammaObjectCollectionMaker.h:99
xAOD::EventInfo_v1::beamPosSigmaXY
float beamPosSigmaXY() const
The beam spot shape's X-Y correlation.
PhotonAuxContainer.h
xAOD::photon
@ photon
Definition: TrackingPrimitives.h:199
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::setOriginalObjectLink
bool setOriginalObjectLink(const IParticle &original, IParticle &copy)
This function should be used by CP tools when they make a deep copy of an object in their correctedCo...
Definition: IParticleHelpers.cxx:30
xAOD::EgammaParameters::electron
@ electron
Definition: EgammaEnums.h:18
top::EgammaObjectCollectionMaker::printoutPhotons
StatusCode printoutPhotons()
Definition: EgammaObjectCollectionMaker.cxx:323
IParticleHelpers.h
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
top::EgammaObjectCollectionMaker::specifiedSystematicsElectrons
virtual const std::list< CP::SystematicSet > & specifiedSystematicsElectrons() const
Definition: EgammaObjectCollectionMaker.h:69
PhotonContainer.h
AuxElement.h
Base class for elements of a container that can have aux data.
top::EgammaObjectCollectionMaker::m_specifiedSystematicsElectrons
std::list< CP::SystematicSet > m_specifiedSystematicsElectrons
Definition: EgammaObjectCollectionMaker.h:91
top::EgammaObjectCollectionMaker::m_electronIsolationTools
std::unordered_map< std::string, ToolHandle< CP::IIsolationSelectionTool > > m_electronIsolationTools
– Isolation –///
Definition: EgammaObjectCollectionMaker.h:102
SystematicsUtil.h