ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
top::EgammaObjectCollectionMaker Class Referencefinal

#include <EgammaObjectCollectionMaker.h>

Inheritance diagram for top::EgammaObjectCollectionMaker:
Collaboration diagram for top::EgammaObjectCollectionMaker:

Public Member Functions

 EgammaObjectCollectionMaker (const std::string &name)
 
virtual ~EgammaObjectCollectionMaker ()
 
 EgammaObjectCollectionMaker (const EgammaObjectCollectionMaker &rhs)=delete
 
 EgammaObjectCollectionMaker (EgammaObjectCollectionMaker &&rhs)=delete
 
EgammaObjectCollectionMakeroperator= (const EgammaObjectCollectionMaker &rhs)=delete
 
StatusCode initialize ()
 Dummy implementation of the initialisation function. More...
 
StatusCode executePhotons (bool)
 
StatusCode executeElectrons (bool)
 
StatusCode executeFwdElectrons (bool)
 
StatusCode printoutPhotons ()
 
StatusCode printoutElectrons ()
 
StatusCode printoutFwdElectrons ()
 
virtual const std::list< CP::SystematicSet > & specifiedSystematicsPhotons () const
 
virtual const std::list< CP::SystematicSet > & specifiedSystematicsElectrons () const
 
virtual const std::list< CP::SystematicSet > & specifiedSystematicsFwdElectrons () const
 
const std::list< CP::SystematicSet > & recommendedSystematicsPhotons () const
 
const std::list< CP::SystematicSet > & recommendedSystematicsElectrons () const
 
const std::list< CP::SystematicSet > & recommendedSystematicsFwdElectrons () const
 
virtual void print () const
 Print the state of the tool. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

virtual void specifiedSystematicsPhotons (const std::set< std::string > &specifiedSystematics)
 
virtual void specifiedSystematicsElectrons (const std::set< std::string > &specifiedSystematics)
 
virtual void specifiedSystematicsFwdElectrons (const std::set< std::string > &specifiedSystematics)
 
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

std::shared_ptr< top::TopConfigm_config
 
std::list< CP::SystematicSetm_specifiedSystematicsPhotons
 
std::list< CP::SystematicSetm_specifiedSystematicsElectrons
 
std::list< CP::SystematicSetm_specifiedSystematicsFwdElectrons
 
std::list< CP::SystematicSetm_recommendedSystematicsPhotons
 
std::list< CP::SystematicSetm_recommendedSystematicsElectrons
 
std::list< CP::SystematicSetm_recommendedSystematicsFwdElectrons
 
ToolHandle< CP::IEgammaCalibrationAndSmearingToolm_calibrationTool
 
ToolHandle< IElectronPhotonShowerShapeFudgeToolm_photonFudgeTool
 
std::unordered_map< std::string, ToolHandle< CP::IIsolationSelectionTool > > m_electronIsolationTools
 – Isolation –/// More...
 
std::unordered_map< std::string, ToolHandle< CP::IIsolationSelectionTool > > m_photonIsolationTools
 
ToolHandle< CP::IIsolationCorrectionToolm_isolationCorr
 
bool calibrateElectrons
 
bool calibrateFwdElectrons
 
bool calibratePhotons
 
bool m_recomputePhotonFudge
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 45 of file EgammaObjectCollectionMaker.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ EgammaObjectCollectionMaker() [1/3]

top::EgammaObjectCollectionMaker::EgammaObjectCollectionMaker ( const std::string &  name)
explicit

Definition at line 25 of file EgammaObjectCollectionMaker.cxx.

25  :
27  m_config(nullptr),
28 
35 
36  m_calibrationTool("EgammaCalibrationAndSmearingTool"),
37  m_photonFudgeTool("PhotonFudgeTool"),
38 
39  m_isolationCorr("IsolationCorrectionTool") {
40  declareProperty("config", m_config);
41  }

◆ ~EgammaObjectCollectionMaker()

virtual top::EgammaObjectCollectionMaker::~EgammaObjectCollectionMaker ( )
inlinevirtual

Definition at line 48 of file EgammaObjectCollectionMaker.h.

48 {}

◆ EgammaObjectCollectionMaker() [2/3]

top::EgammaObjectCollectionMaker::EgammaObjectCollectionMaker ( const EgammaObjectCollectionMaker rhs)
delete

◆ EgammaObjectCollectionMaker() [3/3]

top::EgammaObjectCollectionMaker::EgammaObjectCollectionMaker ( EgammaObjectCollectionMaker &&  rhs)
delete

Member Function Documentation

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ executeElectrons()

StatusCode top::EgammaObjectCollectionMaker::executeElectrons ( bool  executeNominal)

– Get base electrons from xAOD –///

– Loop over all systematics –///

– if executeNominal, skip other systematics (and vice-versa) –///

– Tell tool which systematic to use -///

– Shallow copy of the xAOD –///

– Loop over the xAOD Container –///

– Isolation selection –///

– set links to original objects- needed for MET calculation –///

Definition at line 193 of file EgammaObjectCollectionMaker.cxx.

193  {
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  }

◆ executeFwdElectrons()

StatusCode top::EgammaObjectCollectionMaker::executeFwdElectrons ( bool  executeNominal)

– Get base electrons from xAOD –///

– Loop over all systematics –///

– if executeNominal, skip other systematics (and vice-versa) –///

– Tell tool which systematic to use -///

– Shallow copy of the xAOD –///

– Loop over the xAOD Container –///

– set links to original objects- needed for MET calculation –///

Definition at line 271 of file EgammaObjectCollectionMaker.cxx.

271  {
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  }

◆ executePhotons()

StatusCode top::EgammaObjectCollectionMaker::executePhotons ( bool  executeNominal)

– Get base photons from xAOD –///

– Loop over all systematics –///

– if executeNominal, skip other systematics (and vice-versa) –///

– Tell tool which systematic to use –///

– Shallow copy of the xAOD –///

– Loop over the xAOD Container and apply corrections–///

– Apply correction to object –///

– Isolation selection –///

– set links to original objects- needed for MET calculation –///

– Save corrected xAOD Container to StoreGate / TStore –///

Definition at line 116 of file EgammaObjectCollectionMaker.cxx.

116  {
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  }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void *  ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119  {
120 
121 #ifdef XAOD_STANDALONE
122  // In case we use @c xAOD::TEvent, we have a direct function call
123  // for this.
124  return evtStore()->event()->getKey( ptr );
125 #else
126  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127  return ( proxy == nullptr ? 0 : proxy->sgkey() );
128 #endif // XAOD_STANDALONE
129  }

◆ getName()

const std::string & asg::AsgTool::getName ( const void *  ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106  {
107 
108 #ifdef XAOD_STANDALONE
109  // In case we use @c xAOD::TEvent, we have a direct function call
110  // for this.
111  return evtStore()->event()->getName( ptr );
112 #else
113  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114  static const std::string dummy = "";
115  return ( proxy == nullptr ? dummy : proxy->name() );
116 #endif // XAOD_STANDALONE
117  }

◆ getProperty()

template<class T >
const T* asg::AsgTool::getProperty ( const std::string &  name) const
inherited

Get one of the tool's properties.

◆ initialize()

StatusCode top::EgammaObjectCollectionMaker::initialize ( )
virtual

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Reimplemented from asg::AsgTool.

Definition at line 43 of file EgammaObjectCollectionMaker.cxx.

43  {
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  }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101  {
102 
103  return MSG::name( msg().level() );
104  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ operator=()

EgammaObjectCollectionMaker& top::EgammaObjectCollectionMaker::operator= ( const EgammaObjectCollectionMaker rhs)
delete

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ print()

void asg::AsgTool::print ( ) const
virtualinherited

◆ printoutElectrons()

StatusCode top::EgammaObjectCollectionMaker::printoutElectrons ( )

Definition at line 340 of file EgammaObjectCollectionMaker.cxx.

340  {
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  }

◆ printoutFwdElectrons()

StatusCode top::EgammaObjectCollectionMaker::printoutFwdElectrons ( )

Definition at line 358 of file EgammaObjectCollectionMaker.cxx.

358  {
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  }

◆ printoutPhotons()

StatusCode top::EgammaObjectCollectionMaker::printoutPhotons ( )

Definition at line 323 of file EgammaObjectCollectionMaker.cxx.

323  {
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  }

◆ recommendedSystematicsElectrons()

const std::list<CP::SystematicSet>& top::EgammaObjectCollectionMaker::recommendedSystematicsElectrons ( ) const
inline

Definition at line 80 of file EgammaObjectCollectionMaker.h.

◆ recommendedSystematicsFwdElectrons()

const std::list<CP::SystematicSet>& top::EgammaObjectCollectionMaker::recommendedSystematicsFwdElectrons ( ) const
inline

Definition at line 81 of file EgammaObjectCollectionMaker.h.

◆ recommendedSystematicsPhotons()

const std::list<CP::SystematicSet>& top::EgammaObjectCollectionMaker::recommendedSystematicsPhotons ( ) const
inline

Definition at line 77 of file EgammaObjectCollectionMaker.h.

77  {
79  }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ specifiedSystematicsElectrons() [1/2]

virtual const std::list<CP::SystematicSet>& top::EgammaObjectCollectionMaker::specifiedSystematicsElectrons ( ) const
inlinevirtual

Definition at line 69 of file EgammaObjectCollectionMaker.h.

69  {
71  }

◆ specifiedSystematicsElectrons() [2/2]

void top::EgammaObjectCollectionMaker::specifiedSystematicsElectrons ( const std::set< std::string > &  specifiedSystematics)
protectedvirtual

– Get the recommended systematics from the tool, in std::vector format –///

MC only –///

– Are we only doing Nominal? Did the user specify specific systematics to use? –///

Definition at line 411 of file EgammaObjectCollectionMaker.cxx.

411  {
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) {
433  TreeFilter filter(i);
434  if (!filter.filterTree(s.name())) {
436  }
437  }
438  }
439  }
440  }
441  }
446  }

◆ specifiedSystematicsFwdElectrons() [1/2]

virtual const std::list<CP::SystematicSet>& top::EgammaObjectCollectionMaker::specifiedSystematicsFwdElectrons ( ) const
inlinevirtual

Definition at line 72 of file EgammaObjectCollectionMaker.h.

72  {
74  }

◆ specifiedSystematicsFwdElectrons() [2/2]

void top::EgammaObjectCollectionMaker::specifiedSystematicsFwdElectrons ( const std::set< std::string > &  specifiedSystematics)
protectedvirtual

– Get the recommended systematics from the tool, in std::vector format –///

MC only –///

– Are we only doing Nominal? Did the user specify specific systematics to use? –///

Definition at line 448 of file EgammaObjectCollectionMaker.cxx.

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) {
471  TreeFilter filter(i);
472  if (!filter.filterTree(s.name())) {
474  }
475  }
476  }
477  }
478  }
479  }
484  }

◆ specifiedSystematicsPhotons() [1/2]

virtual const std::list<CP::SystematicSet>& top::EgammaObjectCollectionMaker::specifiedSystematicsPhotons ( ) const
inlinevirtual

Definition at line 66 of file EgammaObjectCollectionMaker.h.

66  {
68  }

◆ specifiedSystematicsPhotons() [2/2]

void top::EgammaObjectCollectionMaker::specifiedSystematicsPhotons ( const std::set< std::string > &  specifiedSystematics)
protectedvirtual

– Get the recommended systematics from the tool, in std::vector format –///

MC only –///

– Are we only doing Nominal? Did the user specify specific systematics to use? –///

Definition at line 374 of file EgammaObjectCollectionMaker.cxx.

374  {
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) {
396  TreeFilter filter(i);
397  if (!filter.filterTree(s.name())) {
398  m_specifiedSystematicsPhotons.push_back(s);
399  }
400  }
401  }
402  }
403  }
404  }
409  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ calibrateElectrons

bool top::EgammaObjectCollectionMaker::calibrateElectrons
private

Definition at line 108 of file EgammaObjectCollectionMaker.h.

◆ calibrateFwdElectrons

bool top::EgammaObjectCollectionMaker::calibrateFwdElectrons
private

Definition at line 109 of file EgammaObjectCollectionMaker.h.

◆ calibratePhotons

bool top::EgammaObjectCollectionMaker::calibratePhotons
private

Definition at line 110 of file EgammaObjectCollectionMaker.h.

◆ m_calibrationTool

ToolHandle<CP::IEgammaCalibrationAndSmearingTool> top::EgammaObjectCollectionMaker::m_calibrationTool
private

Definition at line 98 of file EgammaObjectCollectionMaker.h.

◆ m_config

std::shared_ptr<top::TopConfig> top::EgammaObjectCollectionMaker::m_config
private

Definition at line 88 of file EgammaObjectCollectionMaker.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_electronIsolationTools

std::unordered_map<std::string, ToolHandle<CP::IIsolationSelectionTool> > top::EgammaObjectCollectionMaker::m_electronIsolationTools
private

– Isolation –///

Definition at line 102 of file EgammaObjectCollectionMaker.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_isolationCorr

ToolHandle<CP::IIsolationCorrectionTool> top::EgammaObjectCollectionMaker::m_isolationCorr
private

Definition at line 105 of file EgammaObjectCollectionMaker.h.

◆ m_photonFudgeTool

ToolHandle<IElectronPhotonShowerShapeFudgeTool> top::EgammaObjectCollectionMaker::m_photonFudgeTool
private

Definition at line 99 of file EgammaObjectCollectionMaker.h.

◆ m_photonIsolationTools

std::unordered_map<std::string, ToolHandle<CP::IIsolationSelectionTool> > top::EgammaObjectCollectionMaker::m_photonIsolationTools
private

Definition at line 103 of file EgammaObjectCollectionMaker.h.

◆ m_recommendedSystematicsElectrons

std::list<CP::SystematicSet> top::EgammaObjectCollectionMaker::m_recommendedSystematicsElectrons
private

Definition at line 95 of file EgammaObjectCollectionMaker.h.

◆ m_recommendedSystematicsFwdElectrons

std::list<CP::SystematicSet> top::EgammaObjectCollectionMaker::m_recommendedSystematicsFwdElectrons
private

Definition at line 96 of file EgammaObjectCollectionMaker.h.

◆ m_recommendedSystematicsPhotons

std::list<CP::SystematicSet> top::EgammaObjectCollectionMaker::m_recommendedSystematicsPhotons
private

Definition at line 94 of file EgammaObjectCollectionMaker.h.

◆ m_recomputePhotonFudge

bool top::EgammaObjectCollectionMaker::m_recomputePhotonFudge
private

Definition at line 113 of file EgammaObjectCollectionMaker.h.

◆ m_specifiedSystematicsElectrons

std::list<CP::SystematicSet> top::EgammaObjectCollectionMaker::m_specifiedSystematicsElectrons
private

Definition at line 91 of file EgammaObjectCollectionMaker.h.

◆ m_specifiedSystematicsFwdElectrons

std::list<CP::SystematicSet> top::EgammaObjectCollectionMaker::m_specifiedSystematicsFwdElectrons
private

Definition at line 92 of file EgammaObjectCollectionMaker.h.

◆ m_specifiedSystematicsPhotons

std::list<CP::SystematicSet> top::EgammaObjectCollectionMaker::m_specifiedSystematicsPhotons
private

Definition at line 90 of file EgammaObjectCollectionMaker.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
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
xAOD::TrackingHelpers::d0significance
double d0significance(const xAOD::TrackParticle *tp, double d0_uncert_beam_spot_2)
Definition: TrackParticlexAODHelpers.cxx:42
xAOD::Iso::ptcone30
@ ptcone30
Definition: IsolationType.h:41
top::EgammaObjectCollectionMaker::m_recomputePhotonFudge
bool m_recomputePhotonFudge
Definition: EgammaObjectCollectionMaker.h:113
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
x
#define x
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
covarianceTool.filter
filter
Definition: covarianceTool.py:514
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
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:92
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
top::check
void check(bool thingToCheck, const std::string &usefulFailureMessage)
Print an error message and terminate if thingToCheck is false.
Definition: EventTools.cxx:15
python.xAODType.dummy
dummy
Definition: xAODType.py:4
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
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
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
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
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
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
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
top::EgammaObjectCollectionMaker::calibrateElectrons
bool calibrateElectrons
Definition: EgammaObjectCollectionMaker.h:108
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
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
top::EgammaObjectCollectionMaker::m_photonFudgeTool
ToolHandle< IElectronPhotonShowerShapeFudgeTool > m_photonFudgeTool
Definition: EgammaObjectCollectionMaker.h:99
xAOD::photon
@ photon
Definition: TrackingPrimitives.h:199
a
TList * a
Definition: liststreamerinfos.cxx:10
h
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
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
xAOD::EgammaParameters::electron
@ electron
Definition: EgammaEnums.h:18
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
SG::DataProxy
Definition: DataProxy.h:44
top::EgammaObjectCollectionMaker::specifiedSystematicsElectrons
virtual const std::list< CP::SystematicSet > & specifiedSystematicsElectrons() const
Definition: EgammaObjectCollectionMaker.h:69
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
top::EgammaObjectCollectionMaker::m_specifiedSystematicsElectrons
std::list< CP::SystematicSet > m_specifiedSystematicsElectrons
Definition: EgammaObjectCollectionMaker.h:91
fitman.k
k
Definition: fitman.py:528
top::EgammaObjectCollectionMaker::m_electronIsolationTools
std::unordered_map< std::string, ToolHandle< CP::IIsolationSelectionTool > > m_electronIsolationTools
– Isolation –///
Definition: EgammaObjectCollectionMaker.h:102