ATLAS Offline Software
Classes | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
IsolationBuilder Class Reference

#include <IsolationBuilder.h>

Inheritance diagram for IsolationBuilder:
Collaboration diagram for IsolationBuilder:

Classes

struct  CaloIsoHelpHandles
 
struct  CaloIsoHelpKey
 
struct  TrackIsoHelpHandles
 
struct  TrackIsoHelpKey
 

Public Member Functions

 IsolationBuilder (const std::string &name, ISvcLocator *pSvcLocator)
 Constructor with parameters: More...
 
virtual ~IsolationBuilder ()
 Destructor: More...
 
virtual StatusCode initialize () override final
 
virtual StatusCode execute (const EventContext &ctx) const override final
 
virtual StatusCode finalize () override final
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
virtual bool filterPassed (const EventContext &ctx) const
 
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 
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 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

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

 IsolationBuilder ()
 Default constructor: More...
 
StatusCode initializeIso (std::set< xAOD::Iso::IsolationFlavour > &runIsoType, std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey >> *caloIsoMap, std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey >> *trackIsoMap, const std::string &containerName, const std::vector< std::vector< int >> &isoInts, const std::vector< std::vector< int >> &corInts, const std::vector< std::vector< int >> &corIntsExtra, const std::string &customConfig)
 called by algorithm initialize per object (electron, photon, forward electron, muon) More...
 
StatusCode addCaloIsoCorrections (size_t flavor, xAOD::Iso::IsolationFlavour isoFlav, CaloIsoHelpKey &cisoH, const std::vector< std::vector< int >> &corInts, bool corrsAreExtra, const std::string &prefix, const std::string &customConfig)
 called by initializeIso More...
 
StatusCode addTrackIsoCorrections (size_t flavor, xAOD::Iso::IsolationFlavour isoFlav, TrackIsoHelpKey &tisoH, const std::vector< std::vector< int >> &corInts, bool corrsAreExtra, const std::string &prefix, const std::string &customConfig)
 called by initializeIso More...
 
StatusCode executeCaloIso (const std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey >> &caloIsoMap, const CaloCellContainer *cellColl) const
 
StatusCode executeTrackIso (const std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey >> &trackIsoMap) const
 
void declareIso (std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey >> &caloIso)
 
void declareIso (std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey >> &trackIso)
 
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...
 

Static Private Member Functions

static bool isCoreCor (xAOD::Iso::IsolationCaloCorrection corr)
 

Private Attributes

Gaudi::Property< std::string > m_ElectronContainerName
 Containers (Is it best to make them as strings? Used by multiple handles) More...
 
Gaudi::Property< std::string > m_FwdElectronContainerName
 
Gaudi::Property< std::string > m_PhotonContainerName
 
Gaudi::Property< std::string > m_MuonContainerName
 
ToolHandle< xAOD::ICaloCellIsolationToolm_cellIsolationTool
 Tool for cell isolation calculation. More...
 
SG::ReadHandleKey< CaloCellContainerm_cellsKey
 Cell container. More...
 
ToolHandle< xAOD::ICaloTopoClusterIsolationToolm_topoIsolationTool
 Tool for topo isolation calculation. More...
 
ToolHandle< xAOD::INeutralEFlowIsolationToolm_pflowIsolationTool
 Tool for neutral pflow isolation calculation. More...
 
ToolHandle< xAOD::ITrackIsolationToolm_trackIsolationTool
 Tool for neutral pflow isolation calculation. More...
 
Gaudi::Property< bool > m_isTrigger { this, "IsTrigger", false }
 is the alg run at trigger level More...
 
Gaudi::Property< bool > m_useBremAssoc
 
Gaudi::Property< bool > m_allTrackRemoval { this, "AllTrackRemoval", true }
 
Gaudi::Property< bool > m_storepileupCorrection { this, "storepileupCorrection", false }
 
Gaudi::Property< std::vector< std::vector< int > > > m_elisoInts
 Isolation types. More...
 
Gaudi::Property< std::vector< std::vector< int > > > m_elcorInts
 
Gaudi::Property< std::vector< std::vector< int > > > m_elcorIntsExtra
 
Gaudi::Property< std::vector< std::vector< int > > > m_phisoInts
 Isolation types (for the alg. More...
 
Gaudi::Property< std::vector< std::vector< int > > > m_phcorInts
 
Gaudi::Property< std::vector< std::vector< int > > > m_phcorIntsExtra
 
Gaudi::Property< std::vector< std::vector< int > > > m_muisoInts
 
Gaudi::Property< std::vector< std::vector< int > > > m_mucorInts
 
Gaudi::Property< std::vector< std::vector< int > > > m_mucorIntsExtra
 
Gaudi::Property< std::vector< std::vector< int > > > m_feisoInts
 
Gaudi::Property< std::vector< std::vector< int > > > m_fecorInts
 
Gaudi::Property< std::vector< std::vector< int > > > m_fecorIntsExtra
 
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > m_elCaloIso
 
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > m_phCaloIso
 
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > m_feCaloIso
 
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > m_muCaloIso
 
std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey > > m_elTrackIso
 
std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey > > m_phTrackIso
 
std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey > > m_muTrackIso
 
Gaudi::Property< std::string > m_customConfigEl
 
Gaudi::Property< std::string > m_customConfigPh
 
Gaudi::Property< std::string > m_customConfigFwd
 
Gaudi::Property< std::string > m_customConfigMu
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
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 47 of file IsolationBuilder.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ IsolationBuilder() [1/2]

IsolationBuilder::IsolationBuilder ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Constructor with parameters:

Definition at line 18 of file IsolationBuilder.cxx.

20  : ::AthReentrantAlgorithm(name, pSvcLocator)
21 {}

◆ ~IsolationBuilder()

IsolationBuilder::~IsolationBuilder ( )
virtualdefault

Destructor:

◆ IsolationBuilder() [2/2]

IsolationBuilder::IsolationBuilder ( )
private

Default constructor:

Member Function Documentation

◆ addCaloIsoCorrections()

StatusCode IsolationBuilder::addCaloIsoCorrections ( size_t  flavor,
xAOD::Iso::IsolationFlavour  isoFlav,
CaloIsoHelpKey cisoH,
const std::vector< std::vector< int >> &  corInts,
bool  corrsAreExtra,
const std::string &  prefix,
const std::string &  customConfig 
)
private

called by initializeIso

Definition at line 401 of file IsolationBuilder.cxx.

409 {
410 
411  if (!corrsAreExtra) {
412  std::string bitsetName =
413  prefix + xAOD::Iso::toString(isoFlav) + "CorrBitset";
414  if (!customConfig.empty()) {
415  bitsetName += "_" + customConfig;
416  }
417 
418  cisoH.corrBitsetDeco = bitsetName;
419  ATH_MSG_DEBUG("Initializing non extra corr : " << cisoH.corrBitsetDeco.key());
420  ATH_CHECK(cisoH.corrBitsetDeco.initialize());
421  }
422 
423  for (size_t corrType = 0; corrType < corInts[flavor].size(); corrType++) {
424  // iterate over the calo isolation corrections
425  const auto cor = static_cast<unsigned int>(corInts[flavor][corrType]);
426  if (!corrsAreExtra)
427  cisoH.CorrList.calobitset.set(cor);
429  static_cast<xAOD::Iso::IsolationCaloCorrection>(cor);
430 
431  if (isCoreCor(isoCor)) {
432  std::string isoCorName = prefix;
433  if (isoCor != xAOD::Iso::core57cells) {
434  isoCorName += xAOD::Iso::toString(isoFlav); // since this doesn't depend on the flavor, just have one
435  }
436 
437  // a core correction; only store core energy, not the core area
438  isoCorName += xAOD::Iso::toString(isoCor) +
440  if (!customConfig.empty()) {
441  isoCorName += "_" + customConfig;
442  }
443  cisoH.coreCorDeco.emplace(isoCor, isoCorName);
444  cisoH.coreCorDeco[isoCor].setOwner(this);
445  ATH_MSG_DEBUG("initializing " << cisoH.coreCorDeco[isoCor].key());
446  ATH_CHECK(cisoH.coreCorDeco[isoCor].initialize());
447  } else {
448  // noncore correction
450  continue;
451  cisoH.noncoreCorDeco.emplace(
453  auto& vec = cisoH.noncoreCorDeco[isoCor];
454  vec.setOwner(this);
455  for (auto type : cisoH.isoTypes) {
456  std::string corName = prefix + xAOD::Iso::toString(type) +
457  xAOD::Iso::toString(isoCor) + "Correction";
458  if (!customConfig.empty()) {
459  corName += "_" + customConfig;
460  }
461  vec.emplace_back(corName);
462  }
463  ATH_MSG_DEBUG("Initializing " << xAOD::Iso::toString(isoCor)
464  << " Corrections");
465  ATH_CHECK(vec.initialize());
466  }
467  }
468  return StatusCode::SUCCESS;
469 }

◆ addTrackIsoCorrections()

StatusCode IsolationBuilder::addTrackIsoCorrections ( size_t  flavor,
xAOD::Iso::IsolationFlavour  isoFlav,
TrackIsoHelpKey tisoH,
const std::vector< std::vector< int >> &  corInts,
bool  corrsAreExtra,
const std::string &  prefix,
const std::string &  customConfig 
)
private

called by initializeIso

Definition at line 472 of file IsolationBuilder.cxx.

480 {
481 
482  if (!corrsAreExtra) {
483  std::string bitsetName =
484  prefix + xAOD::Iso::toString(isoFlav) + "CorrBitset";
485  if (!customConfig.empty()) {
486  bitsetName += "_" + customConfig;
487  }
488 
489  tisoH.corrBitsetDeco = bitsetName;
490  ATH_MSG_DEBUG("Initializing " << tisoH.corrBitsetDeco.key());
491  ATH_CHECK(tisoH.corrBitsetDeco.initialize());
492  }
493 
494  for (size_t corrType = 0; corrType < corInts[flavor].size(); corrType++) {
495  const auto cor = static_cast<unsigned int>(corInts[flavor][corrType]);
496  if (!corrsAreExtra)
497  tisoH.CorrList.trackbitset.set(cor);
499  static_cast<xAOD::Iso::IsolationTrackCorrection>(cor);
500 
501  // all pt corrections are core type
502  std::string isoCorName = prefix + xAOD::Iso::toString(isoFlav) +
503  xAOD::Iso::toString(isoCor) + "Correction";
504 
505  if (!customConfig.empty()) {
506  isoCorName += "_" + customConfig;
507  }
508  tisoH.coreCorDeco.emplace(isoCor, isoCorName);
509  tisoH.coreCorDeco[isoCor].setOwner(this);
510  ATH_MSG_DEBUG("initializing " << tisoH.coreCorDeco[isoCor].key());
511  ATH_CHECK(tisoH.coreCorDeco[isoCor].initialize());
512  }
513  return StatusCode::SUCCESS;
514 }

◆ cardinality()

unsigned int AthReentrantAlgorithm::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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  }

◆ declareIso() [1/2]

void IsolationBuilder::declareIso ( std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey >> &  caloIso)
private

Definition at line 756 of file IsolationBuilder.cxx.

758 {
759  for (auto& iso : caloIso) {
760  iso.second.declare(this);
761  }
762 }

◆ declareIso() [2/2]

void IsolationBuilder::declareIso ( std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey >> &  trackIso)
private

Definition at line 765 of file IsolationBuilder.cxx.

768 {
769  for (auto& iso : trackIso) {
770  iso.second.declare(this);
771  }
772 }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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; }

◆ execute()

StatusCode IsolationBuilder::execute ( const EventContext &  ctx) const
finaloverridevirtual

Definition at line 132 of file IsolationBuilder.cxx.

133 {
134  ATH_MSG_DEBUG("Executing " << name() << "...");
135 
136  // For etcone, needs the cells
137 
138  const CaloCellContainer* cellColl = nullptr;
139  if (!m_cellIsolationTool.empty()) {
141  // check is only used for serial running; remove when MT scheduler used
142  if (!cellcoll.isValid()) {
143  ATH_MSG_FATAL("Failed to retrieve cell container: " << m_cellsKey.key());
144  return StatusCode::FAILURE;
145  }
146  cellColl = cellcoll.cptr();
147  }
148  // Compute isolations
149 
150  if (m_elCaloIso.size()) {
151  ATH_MSG_DEBUG("About to execute Electron calo iso");
153  }
154  if (m_phCaloIso.size()) {
155  ATH_MSG_DEBUG("About to execute Photon calo iso");
157  }
158  if (m_feCaloIso.size()) {
159  ATH_MSG_DEBUG("About to execute Forward Electron calo iso");
161  }
162  if (m_muCaloIso.size()) {
163  ATH_MSG_DEBUG("About to execute muon calo iso");
165  }
166 
167  if (m_elTrackIso.size()) {
168  ATH_MSG_DEBUG("About to execute Electron track iso");
170  }
171  if (m_phTrackIso.size()) {
172  ATH_MSG_DEBUG("About to execute Photon track iso");
174  }
175  if (m_muTrackIso.size()) {
176  ATH_MSG_DEBUG("About to execute Muon track iso");
178  }
179 
180  return StatusCode::SUCCESS;
181 }

◆ executeCaloIso()

StatusCode IsolationBuilder::executeCaloIso ( const std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey >> &  caloIsoMap,
const CaloCellContainer cellColl 
) const
private

Definition at line 517 of file IsolationBuilder.cxx.

521 {
522  for (const auto& pr : caloIsoMap) {
523 
524  const xAOD::Iso::IsolationFlavour flav = pr.first;
525  const auto& keys = pr.second;
526  CaloIsoHelpHandles handles(keys);
527 
528  ATH_MSG_DEBUG("Executing calo iso flavor: " << xAOD::Iso::toString(flav));
529 
530  if (handles.isoDeco.empty()) {
531  ATH_MSG_FATAL("Have a CaloIsoHelpHandles with no actual isolations; "
532  "something wrong happened");
533  return StatusCode::FAILURE;
534  }
535  auto& readHandle =
536  handles.isoDeco[0]; // can treat the writeDecorHandle as a read handle;
537 
538  if (readHandle.isAvailable()){ // This must be before readHandle.isValid() or else the isValid call
539  // will crash if the deocration already exists
540  ATH_MSG_DEBUG("read (actually a write) handle for " << keys.isoDeco[0].key() << " already exists. "
541  << "Will not recompute." );
542  return StatusCode::SUCCESS;
543  }
544 
545  if (!readHandle.isValid()) {
546  ATH_MSG_FATAL("Could not retrieve read handle for "
547  << keys.isoDeco[0].key());
548  return StatusCode::FAILURE;
549  }
550 
551  for (const auto *part : *readHandle) {
552  xAOD::CaloIsolation CaloIsoResult;
553  bool successfulCalc = false;
554  if (flav == xAOD::Iso::IsolationFlavour::etcone && cellColl) {
555  successfulCalc = m_cellIsolationTool->caloCellIsolation(
556  CaloIsoResult, *part, keys.isoTypes, keys.CorrList, cellColl);
557  } else if (flav == xAOD::Iso::IsolationFlavour::topoetcone) {
558  successfulCalc = m_topoIsolationTool->caloTopoClusterIsolation(
559  CaloIsoResult, *part, keys.isoTypes, keys.CorrList);
560  } else if (flav == xAOD::Iso::IsolationFlavour::neflowisol) {
561  successfulCalc = m_pflowIsolationTool->neutralEflowIsolation(
562  CaloIsoResult, *part, keys.isoTypes, keys.CorrList);
563  }
564 
565  if (successfulCalc) {
566  for (unsigned int i = 0; i < keys.isoTypes.size(); i++) {
567  float iso = CaloIsoResult.etcones[i];
568  ATH_MSG_DEBUG("custom Iso " << xAOD::Iso::toCString(keys.isoTypes[i])
569  << " = " << iso / 1e3);
570  (handles.isoDeco[i])(*part) = iso;
571  }
572  // corrections
573  (handles.corrBitsetDeco)(*part) = keys.CorrList.calobitset.to_ulong();
574 
575  // let's do the core corrections
576 
577  // iterate over the values we want to store
578  for (auto& coreCorDecoPr : handles.coreCorDeco) {
579  // find the matching result
580  auto corIter =
581  CaloIsoResult.coreCorrections.find(coreCorDecoPr.first);
582  if (corIter == CaloIsoResult.coreCorrections.end()) {
583  ATH_MSG_FATAL("Could not find core correction of required type: "
584  << xAOD::Iso::toCString(coreCorDecoPr.first));
585  ATH_MSG_FATAL("Check configuration");
586  return StatusCode::FAILURE;
587  }
588  // now that we have the match, let's find the energy
590  float>::const_iterator it =
591  corIter->second.find(xAOD::Iso::coreEnergy);
592  if (it == corIter->second.end()) {
593  ATH_MSG_FATAL("Could not find coreEnergy correction for: "
594  << xAOD::Iso::toCString(coreCorDecoPr.first));
595  ATH_MSG_FATAL("Check configuration");
596  return StatusCode::FAILURE;
597  }
598  ATH_MSG_DEBUG("About to write core correction: "
599  << xAOD::Iso::toCString(coreCorDecoPr.first));
600  (coreCorDecoPr.second)(*part) = it->second;
601  }
602 
603  // let's do the noncore corrections
604  for (auto& noncoreCorDecoPr : handles.noncoreCorDeco) {
605  // find the matching result
606  auto corIter =
607  CaloIsoResult.noncoreCorrections.find(noncoreCorDecoPr.first);
608  if (corIter == CaloIsoResult.noncoreCorrections.end()) {
609  ATH_MSG_FATAL("Could not find noncore correction of required type: "
610  << xAOD::Iso::toCString(noncoreCorDecoPr.first));
611  ATH_MSG_FATAL("Check configuration");
612  return StatusCode::FAILURE;
613  }
614 
615  ATH_MSG_DEBUG("About to write noncore correction: "
616  << xAOD::Iso::toCString(noncoreCorDecoPr.first));
617  auto& vecHandles = noncoreCorDecoPr.second;
618  for (size_t i = 0; i < vecHandles.size(); i++) {
619  (vecHandles[i])(*part) = corIter->second[i];
620  }
621  }
622  } else {
623  ATH_MSG_FATAL("Call to CaloIsolationTool failed for flavor "
624  << xAOD::Iso::toCString(flav));
625  return StatusCode::FAILURE;
626  }
627  }
628  }
629  return StatusCode::SUCCESS;
630 }

◆ executeTrackIso()

StatusCode IsolationBuilder::executeTrackIso ( const std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey >> &  trackIsoMap) const
private

Definition at line 633 of file IsolationBuilder.cxx.

636 {
637  for (const auto& pr : trackIsoMap) {
638  const xAOD::Iso::IsolationFlavour flav = pr.first;
639  const auto& keys = pr.second;
640  TrackIsoHelpHandles handles(keys);
641 
642  ATH_MSG_DEBUG("Executing track iso flavor: " << xAOD::Iso::toString(flav));
643 
644  if (handles.isoDeco.empty()) {
645  ATH_MSG_FATAL("Have a TrackIsoHelpHandles with no actual isolations; "
646  "something wrong happened");
647  return StatusCode::FAILURE;
648  }
649  auto& readHandle =
650  handles.isoDeco[0]; // can treat the writeDecorHandle as a read handle;
651 
652  if (readHandle.isAvailable()){ // This must be before readHandle.isValid() or else the isValid call
653  // will crash if the deocration already exists
654  ATH_MSG_DEBUG("Decoration for for " << keys.isoDeco[0].key() << " already exists. "
655  << "Will not recompute." );
656  return StatusCode::SUCCESS;
657  }
658 
659  if (!readHandle.isValid()) {
660  ATH_MSG_FATAL("Could not retrieve read handle for "
661  << keys.isoDeco[0].key());
662  return StatusCode::FAILURE;
663  }
664 
665  for (const auto *part : *readHandle) {
666  xAOD::TrackIsolation TrackIsoResult;
667  bool successfulCalc = false;
668  // check to see if we are dealing with an electron
669  const auto * eg = dynamic_cast<const xAOD::Egamma*>(part);
670  if (eg) {
671  ATH_MSG_DEBUG("Doing track isolation on an egamma particle");
672  std::unique_ptr<xAOD::Vertex> trigVtx = nullptr;
673  std::set<const xAOD::TrackParticle*> tracksToExclude;
675  tracksToExclude =
677  if (m_isTrigger) {
678  const xAOD::Electron* el = static_cast<const xAOD::Electron*>(part);
679  trigVtx = std::make_unique<xAOD::Vertex>();
680  trigVtx->makePrivateStore();
681  trigVtx->setZ(el->trackParticle()->z0() + el->trackParticle()->vz());
682  ATH_MSG_DEBUG("will use a vertex at z = " << trigVtx->z() << " to compute electron track isolation");
683  }
684  } else {
685  if (m_allTrackRemoval) { // New (from ??/??/16) : now this gives all
686  // tracks
687  tracksToExclude =
689  } else { // this is just to be able to have the 2015+2016 default case
690  // (only tracks from first vertex)
691  const auto * gam = dynamic_cast<const xAOD::Photon*>(eg);
692  if (gam && gam->nVertices() > 0) {
693  const xAOD::Vertex* phvtx = gam->vertex(0);
694  for (unsigned int itk = 0; itk < phvtx->nTrackParticles(); itk++)
695  tracksToExclude.insert(
698  phvtx->trackParticle(itk))
699  : phvtx->trackParticle(itk));
700  }
701  }
702  }
703  successfulCalc = m_trackIsolationTool->trackIsolation(TrackIsoResult,
704  *part,
705  keys.isoTypes,
706  keys.CorrList,
707  trigVtx.get(),
708  &tracksToExclude);
709  } else {
710  ATH_MSG_DEBUG("Not doing track isolation on an egamma particle");
711  successfulCalc = m_trackIsolationTool->trackIsolation(
712  TrackIsoResult, *part, keys.isoTypes, keys.CorrList);
713  }
714 
715  if (successfulCalc) {
716  for (unsigned int i = 0; i < keys.isoTypes.size(); i++) {
717  float iso = TrackIsoResult.ptcones[i];
718  float isoV = TrackIsoResult.ptvarcones_10GeVDivPt[i];
719  ATH_MSG_DEBUG("custom Iso " << xAOD::Iso::toCString(keys.isoTypes[i])
720  << " = " << iso / 1e3
721  << ", var cone = " << isoV / 1e3);
722  (handles.isoDeco[i])(*part) = iso;
723  (handles.isoDecoV[i])(*part) = isoV;
724  }
725 
726  // corrections
727  (handles.corrBitsetDeco)(*part) = keys.CorrList.trackbitset.to_ulong();
728  // let's do the core corrections
729  // iterate over the values we want to store
730  for (auto& coreCorDecoPr : handles.coreCorDeco) {
731  // find the matching result
732  auto corIter =
733  TrackIsoResult.coreCorrections.find(coreCorDecoPr.first);
734  if (corIter == TrackIsoResult.coreCorrections.end()) {
735  ATH_MSG_FATAL("Could not find core correction of required type: "
736  << xAOD::Iso::toCString(coreCorDecoPr.first));
737  ATH_MSG_FATAL("Check configuration");
738  return StatusCode::FAILURE;
739  }
740  ATH_MSG_DEBUG("About to write tracking core correction: "
741  << xAOD::Iso::toCString(coreCorDecoPr.first));
742  (coreCorDecoPr.second)(*part) = corIter->second;
743  }
744 
745  } else {
746  ATH_MSG_FATAL("Call to TrackIsolationTool failed for flavor "
747  << xAOD::Iso::toCString(flav));
748  return StatusCode::FAILURE;
749  }
750  }
751  }
752  return StatusCode::SUCCESS;
753 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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

◆ extraOutputDeps()

const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 79 of file AthReentrantAlgorithm.cxx.

80 {
81  // If we didn't find any symlinks to add, just return the collection
82  // from the base class. Otherwise, return the extended collection.
83  if (!m_extendedExtraObjects.empty()) {
85  }
86  return Algorithm::extraOutputDeps();
87 }

◆ filterPassed()

virtual bool AthReentrantAlgorithm::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 135 of file AthReentrantAlgorithm.h.

135  {
136  return execState( ctx ).filterPassed();
137  }

◆ finalize()

StatusCode IsolationBuilder::finalize ( )
finaloverridevirtual

Definition at line 124 of file IsolationBuilder.cxx.

125 {
126  ATH_MSG_INFO("Finalizing " << name() << "...");
127 
128  return StatusCode::SUCCESS;
129 }

◆ initialize()

StatusCode IsolationBuilder::initialize ( )
finaloverridevirtual

Definition at line 26 of file IsolationBuilder.cxx.

27 {
28  ATH_MSG_INFO("Initializing " << name() << "...");
29 
30  std::set<xAOD::Iso::IsolationFlavour> runIsoType;
31 
32  if (m_elisoInts.size()) {
33  ATH_MSG_DEBUG("Initializing central electrons");
34  ATH_CHECK(initializeIso(runIsoType,
35  &m_elCaloIso,
36  &m_elTrackIso,
44  }
45 
46  if (m_phisoInts.size()) {
47  ATH_MSG_DEBUG("Initializing central photons");
48  ATH_CHECK(initializeIso(runIsoType,
49  &m_phCaloIso,
50  &m_phTrackIso,
58  }
59 
60  if (m_feisoInts.size()) {
61  ATH_MSG_DEBUG("Initializing forward electrons");
62  ATH_CHECK(initializeIso(runIsoType,
63  &m_feCaloIso,
64  nullptr,
71  }
72 
73  if (m_muisoInts.size()) {
74  ATH_MSG_DEBUG("Initializing muons");
75  ATH_CHECK(initializeIso(runIsoType,
76  &m_muCaloIso,
77  &m_muTrackIso,
85  }
86 
87  // Retrieve the tools (there three Calo ones are the same in fact)
88  if (!m_cellIsolationTool.empty() &&
89  runIsoType.find(xAOD::Iso::etcone) != runIsoType.end()) {
90  ATH_CHECK(m_cellIsolationTool.retrieve());
91  } else {
92  m_cellIsolationTool.disable();
93  }
94 
95  if (!m_topoIsolationTool.empty() &&
96  runIsoType.find(xAOD::Iso::topoetcone) != runIsoType.end()) {
97  ATH_CHECK(m_topoIsolationTool.retrieve());
98  } else {
99  m_topoIsolationTool.disable();
100  }
101 
102  if (!m_pflowIsolationTool.empty() &&
103  runIsoType.find(xAOD::Iso::neflowisol) != runIsoType.end()) {
104  ATH_CHECK(m_pflowIsolationTool.retrieve());
105  } else {
106  m_pflowIsolationTool.disable();
107  }
108 
109  if (!m_trackIsolationTool.empty() &&
110  runIsoType.find(xAOD::Iso::IsolationFlavour::ptcone) !=
111  runIsoType.end()) {
112  ATH_CHECK(m_trackIsolationTool.retrieve());
113  } else {
114  m_trackIsolationTool.disable();
115  }
116 
117  // initialise data handles
119 
120  return StatusCode::SUCCESS;
121 }

◆ initializeIso()

StatusCode IsolationBuilder::initializeIso ( std::set< xAOD::Iso::IsolationFlavour > &  runIsoType,
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey >> *  caloIsoMap,
std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey >> *  trackIsoMap,
const std::string &  containerName,
const std::vector< std::vector< int >> &  isoInts,
const std::vector< std::vector< int >> &  corInts,
const std::vector< std::vector< int >> &  corIntsExtra,
const std::string &  customConfig 
)
private

called by algorithm initialize per object (electron, photon, forward electron, muon)

Definition at line 269 of file IsolationBuilder.cxx.

280 {
281 
282  std::string prefix = containerName + ".";
283 
284  for (size_t flavor = 0; flavor < isoInts.size(); flavor++) {
285  // iterate over the flavor (cell, topo, eflow, track
286  // Note: it is a configuration error if different types
287  // are included in one inner vector
288 
289  CaloIsoHelpKey cisoH(this);
290  TrackIsoHelpKey tisoH(this);
291 
292  // std::vector<SG::AuxElement::Decorator<float>*> Deco;
295 
296  for (size_t type = 0; type < isoInts[flavor].size(); type++) {
297  // iterate over the cone sizes for a given flavor.
298  // (also check that the cone sizes really are of the same flavor;
299  // otherwise an error)
300 
301  xAOD::Iso::IsolationType isoType =
302  static_cast<xAOD::Iso::IsolationType>(isoInts[flavor][type]);
303  isoFlav = xAOD::Iso::isolationFlavour(isoType);
304  ATH_MSG_DEBUG("Saw isoType " << xAOD::Iso::toString(isoType) << " and isoFlav " << xAOD::Iso::toString(isoFlav));
305  if (oldIsoFlav != xAOD::Iso::numIsolationFlavours &&
306  oldIsoFlav != isoFlav) {
307  ATH_MSG_FATAL("Configuration error: can only have one type of "
308  "isolation in inner vector");
309  return StatusCode::FAILURE;
310  }
311  oldIsoFlav = isoFlav;
312  std::string isoName = prefix + xAOD::Iso::toString(isoType);
313  if (!customConfig.empty()) {
314  isoName += "_" + customConfig;
315  }
316  if (isoFlav == xAOD::Iso::etcone || isoFlav == xAOD::Iso::topoetcone ||
317  isoFlav == xAOD::Iso::neflowisol) {
318  cisoH.isoTypes.push_back(isoType);
319  cisoH.isoDeco.emplace_back(isoName);
320  } else if (isoFlav == xAOD::Iso::ptcone) {
321  tisoH.isoTypes.push_back(isoType);
322  tisoH.isoDeco.emplace_back(isoName);
323  auto coneSize =
324  static_cast<int>(round(100 * xAOD::Iso::coneSize(isoType)));
325  std::string isoNameV = prefix + "ptvarcone" + std::to_string(coneSize);
326  if (!customConfig.empty()) {
327  isoNameV += "_" + customConfig;
328  }
329  tisoH.isoDecoV.emplace_back(isoNameV);
330  } else {
331  ATH_MSG_FATAL("Configuration error: Isolation flavor "
332  << isoFlav << " not supported.");
333  return StatusCode::FAILURE;
334  }
335  }
336 
337  // check that there were isolations configured
338  if (isoFlav == xAOD::Iso::numIsolationFlavours) {
339  ATH_MSG_WARNING("The configuration was malformed: an empty inner vector "
340  "was added; ignoring");
341  continue;
342  }
343 
345  // Now that the isolations to calculate are determined,
346  // initialize the isolation decorations
347  // and then determine the corrections to apply,
348  // and finally add it to the IsoMap.
350 
351  if (isoFlav == xAOD::Iso::etcone || isoFlav == xAOD::Iso::topoetcone ||
352  isoFlav == xAOD::Iso::neflowisol) {
353 
354  // let's initialize the decos
355  ATH_MSG_DEBUG("Initializing cisoH.isoDeco");
356  ATH_CHECK(cisoH.isoDeco.initialize());
357 
359  flavor, isoFlav, cisoH, corInts, false, prefix, customConfig));
361  flavor, isoFlav, cisoH, corIntsExtra, true, prefix, customConfig));
362 
363  if (caloIsoMap) {
364  caloIsoMap->push_back(std::make_pair(isoFlav, cisoH));
365  } else {
367  "caloIsoMap was nullptr but the configuration attempted to use it");
368  return StatusCode::FAILURE;
369  }
370  } else if (isoFlav == xAOD::Iso::ptcone) {
371 
372  // let's initialize the decos
373  ATH_MSG_DEBUG("Initializing tisoH.isoDeco");
374  ATH_CHECK(tisoH.isoDeco.initialize());
375  ATH_MSG_DEBUG("Initializing tisoH.isoDecoV");
376  ATH_CHECK(tisoH.isoDecoV.initialize());
377 
379  flavor, isoFlav, tisoH, corInts, false, prefix, customConfig));
381  flavor, isoFlav, tisoH, corIntsExtra, true, prefix, customConfig));
382 
383  if (trackIsoMap) {
384  trackIsoMap->push_back(std::make_pair(isoFlav, tisoH));
385  } else {
387  "trackIsoMap was nullptr but the configuration attempted to use it");
388  return StatusCode::FAILURE;
389  }
390  } else {
391  ATH_MSG_WARNING("Isolation flavour "
392  << xAOD::Iso::toCString(isoFlav)
393  << " does not exist ! Check your inputs");
394  }
395  runIsoType.insert(isoFlav);
396  }
397  return StatusCode::SUCCESS;
398 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ isClonable()

bool AthReentrantAlgorithm::isClonable ( ) const
overridevirtualinherited

◆ isCoreCor()

bool IsolationBuilder::isCoreCor ( xAOD::Iso::IsolationCaloCorrection  corr)
staticprivate

Definition at line 262 of file IsolationBuilder.cxx.

263 {
264  return (cor == xAOD::Iso::coreCone || cor == xAOD::Iso::coreConeSC ||
266 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ 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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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  }

◆ setFilterPassed()

virtual void AthReentrantAlgorithm::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 139 of file AthReentrantAlgorithm.h.

139  {
140  execState( ctx ).setFilterPassed( state );
141  }

◆ sysExecute()

StatusCode AthReentrantAlgorithm::sysExecute ( const EventContext &  ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 67 of file AthReentrantAlgorithm.cxx.

68 {
69  return Gaudi::Algorithm::sysExecute (ctx);
70 }

◆ sysInitialize()

StatusCode AthReentrantAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in InputMakerBase, and HypoBase.

Definition at line 96 of file AthReentrantAlgorithm.cxx.

96  {
98 
99  if (sc.isFailure()) {
100  return sc;
101  }
102 
103  ServiceHandle<ICondSvc> cs("CondSvc",name());
104  for (auto h : outputHandles()) {
105  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
106  // do this inside the loop so we don't create the CondSvc until needed
107  if ( cs.retrieve().isFailure() ) {
108  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
109  return StatusCode::SUCCESS;
110  }
111  if (cs->regHandle(this,*h).isFailure()) {
112  sc = StatusCode::FAILURE;
113  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
114  << " with CondSvc");
115  }
116  }
117  }
118  return sc;
119 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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

◆ m_allTrackRemoval

Gaudi::Property<bool> IsolationBuilder::m_allTrackRemoval { this, "AllTrackRemoval", true }
private

Definition at line 148 of file IsolationBuilder.h.

◆ m_cellIsolationTool

ToolHandle<xAOD::ICaloCellIsolationTool> IsolationBuilder::m_cellIsolationTool
private
Initial value:
{
this,
"CaloCellIsolationTool",
"",
"Handle of the calo cell IsolationTool"
}

Tool for cell isolation calculation.

Definition at line 100 of file IsolationBuilder.h.

◆ m_cellsKey

SG::ReadHandleKey<CaloCellContainer> IsolationBuilder::m_cellsKey
private
Initial value:
{
this,
"CellCollectionName",
"AllCalo",
"Name of container which contain calo cells"
}

Cell container.

Definition at line 108 of file IsolationBuilder.h.

◆ m_customConfigEl

Gaudi::Property<std::string> IsolationBuilder::m_customConfigEl
private
Initial value:
{
this,
"CustomConfigurationNameEl",
"",
"use a custom configuration for electron"
}

Definition at line 352 of file IsolationBuilder.h.

◆ m_customConfigFwd

Gaudi::Property<std::string> IsolationBuilder::m_customConfigFwd
private
Initial value:
{
this,
"CustomConfigurationNameFwd",
"",
"use a custom configuration for forward electron"
}

Definition at line 366 of file IsolationBuilder.h.

◆ m_customConfigMu

Gaudi::Property<std::string> IsolationBuilder::m_customConfigMu
private
Initial value:
{
this,
"CustomConfigurationNameMu",
"",
"use a custom configuration for muon"
}

Definition at line 373 of file IsolationBuilder.h.

◆ m_customConfigPh

Gaudi::Property<std::string> IsolationBuilder::m_customConfigPh
private
Initial value:
{
this,
"CustomConfigurationNamePh",
"",
"use a custom configuration for photon"
}

Definition at line 359 of file IsolationBuilder.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_elCaloIso

std::vector<std::pair<xAOD::Iso::IsolationFlavour, CaloIsoHelpKey> > IsolationBuilder::m_elCaloIso
private

Definition at line 280 of file IsolationBuilder.h.

◆ m_elcorInts

Gaudi::Property<std::vector<std::vector<int> > > IsolationBuilder::m_elcorInts
private
Initial value:
{
this,
"ElCorTypes",
{},
"The correction types to do for electron iso: vector of vector of enum "
"type Iso::IsolationCalo/TrackCorrection"
}

Definition at line 161 of file IsolationBuilder.h.

◆ m_elcorIntsExtra

Gaudi::Property<std::vector<std::vector<int> > > IsolationBuilder::m_elcorIntsExtra
private
Initial value:
{
this,
"ElCorTypesExtra",
{},
"The extra correction types to store but not apply for electrons"
}

Definition at line 169 of file IsolationBuilder.h.

◆ m_ElectronContainerName

Gaudi::Property<std::string> IsolationBuilder::m_ElectronContainerName
private
Initial value:
{
this,
"ElectronCollectionContainerName",
"Electrons"
}

Containers (Is it best to make them as strings? Used by multiple handles)

Definition at line 75 of file IsolationBuilder.h.

◆ m_elisoInts

Gaudi::Property<std::vector<std::vector<int> > > IsolationBuilder::m_elisoInts
private
Initial value:
{
this,
"ElIsoTypes",
{},
"The isolation types to do for electrons: vector of vector of enum type "
"Iso::IsolationType"
}

Isolation types.

Definition at line 153 of file IsolationBuilder.h.

◆ m_elTrackIso

std::vector<std::pair<xAOD::Iso::IsolationFlavour, TrackIsoHelpKey> > IsolationBuilder::m_elTrackIso
private

Definition at line 317 of file IsolationBuilder.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_feCaloIso

std::vector<std::pair<xAOD::Iso::IsolationFlavour, CaloIsoHelpKey> > IsolationBuilder::m_feCaloIso
private

Definition at line 284 of file IsolationBuilder.h.

◆ m_fecorInts

Gaudi::Property<std::vector<std::vector<int> > > IsolationBuilder::m_fecorInts
private
Initial value:
{
this,
"FeCorTypes",
{},
"The correction types to do for forward electron iso: vector of vector of "
"enum type Iso::IsolationCalo/TrackCorrection"
}

Definition at line 232 of file IsolationBuilder.h.

◆ m_fecorIntsExtra

Gaudi::Property<std::vector<std::vector<int> > > IsolationBuilder::m_fecorIntsExtra
private
Initial value:
{
this,
"FeCorTypesExtra",
{},
"The extra correction types to store but not apply for forward electrons"
}

Definition at line 240 of file IsolationBuilder.h.

◆ m_feisoInts

Gaudi::Property<std::vector<std::vector<int> > > IsolationBuilder::m_feisoInts
private
Initial value:
{
this,
"FeIsoTypes",
{},
"The isolation types to do for forward electron: vector of vector of enum "
"type Iso::IsolationType"
}

Definition at line 224 of file IsolationBuilder.h.

◆ m_FwdElectronContainerName

Gaudi::Property<std::string> IsolationBuilder::m_FwdElectronContainerName
private
Initial value:
{
this,
"FwdElectronCollectionContainerName",
"ForwardElectrons"
}

Definition at line 81 of file IsolationBuilder.h.

◆ m_isTrigger

Gaudi::Property<bool> IsolationBuilder::m_isTrigger { this, "IsTrigger", false }
private

is the alg run at trigger level

Definition at line 140 of file IsolationBuilder.h.

◆ m_muCaloIso

std::vector<std::pair<xAOD::Iso::IsolationFlavour, CaloIsoHelpKey> > IsolationBuilder::m_muCaloIso
private

Definition at line 286 of file IsolationBuilder.h.

◆ m_mucorInts

Gaudi::Property<std::vector<std::vector<int> > > IsolationBuilder::m_mucorInts
private
Initial value:
{
this,
"MuCorTypes",
{},
"The correction types to do for Muon iso: vector of vector of enum type "
"Iso::IsolationCalo/TrackCorrection"
}

Definition at line 209 of file IsolationBuilder.h.

◆ m_mucorIntsExtra

Gaudi::Property<std::vector<std::vector<int> > > IsolationBuilder::m_mucorIntsExtra
private
Initial value:
{
this,
"MuCorTypesExtra",
{},
"The extra correction types to store but not apply for muons"
}

Definition at line 217 of file IsolationBuilder.h.

◆ m_muisoInts

Gaudi::Property<std::vector<std::vector<int> > > IsolationBuilder::m_muisoInts
private
Initial value:
{
this,
"MuIsoTypes",
{},
"The isolation types to do for Muons : vector of vector of enum type "
"Iso::IsolationType"
}

Definition at line 201 of file IsolationBuilder.h.

◆ m_MuonContainerName

Gaudi::Property<std::string> IsolationBuilder::m_MuonContainerName
private
Initial value:
{
this,
"MuonCollectionContainerName",
"Muons"
}

Definition at line 93 of file IsolationBuilder.h.

◆ m_muTrackIso

std::vector<std::pair<xAOD::Iso::IsolationFlavour, TrackIsoHelpKey> > IsolationBuilder::m_muTrackIso
private

Definition at line 321 of file IsolationBuilder.h.

◆ m_pflowIsolationTool

ToolHandle<xAOD::INeutralEFlowIsolationTool> IsolationBuilder::m_pflowIsolationTool
private
Initial value:
{
this,
"PFlowIsolationTool",
"",
"Handle of the pflow IsolationTool"
}

Tool for neutral pflow isolation calculation.

Definition at line 124 of file IsolationBuilder.h.

◆ m_phCaloIso

std::vector<std::pair<xAOD::Iso::IsolationFlavour, CaloIsoHelpKey> > IsolationBuilder::m_phCaloIso
private

Definition at line 282 of file IsolationBuilder.h.

◆ m_phcorInts

Gaudi::Property<std::vector<std::vector<int> > > IsolationBuilder::m_phcorInts
private
Initial value:
{
this,
"PhCorTypes",
{},
"The correction types to do for photons iso: vector of vector of enum type "
"Iso::IsolationCalo/TrackCorrection"
}

Definition at line 186 of file IsolationBuilder.h.

◆ m_phcorIntsExtra

Gaudi::Property<std::vector<std::vector<int> > > IsolationBuilder::m_phcorIntsExtra
private
Initial value:
{
this,
"PhCorTypesExtra",
{},
"The extra correction types to store but not apply for photons"
}

Definition at line 194 of file IsolationBuilder.h.

◆ m_phisoInts

Gaudi::Property<std::vector<std::vector<int> > > IsolationBuilder::m_phisoInts
private
Initial value:
{
this,
"PhIsoTypes",
{},
"The isolation types to do for photons: vector of vector of enum type "
"Iso::IsolationType"
}

Isolation types (for the alg.

properties, only vector<vector<double>> available

Definition at line 178 of file IsolationBuilder.h.

◆ m_PhotonContainerName

Gaudi::Property<std::string> IsolationBuilder::m_PhotonContainerName
private
Initial value:
{
this,
"PhotonCollectionContainerName",
"Photons"
}

Definition at line 87 of file IsolationBuilder.h.

◆ m_phTrackIso

std::vector<std::pair<xAOD::Iso::IsolationFlavour, TrackIsoHelpKey> > IsolationBuilder::m_phTrackIso
private

Definition at line 319 of file IsolationBuilder.h.

◆ m_storepileupCorrection

Gaudi::Property<bool> IsolationBuilder::m_storepileupCorrection { this, "storepileupCorrection", false }
private

Definition at line 150 of file IsolationBuilder.h.

◆ m_topoIsolationTool

ToolHandle<xAOD::ICaloTopoClusterIsolationTool> IsolationBuilder::m_topoIsolationTool
private
Initial value:
{
this,
"CaloTopoIsolationTool",
"",
"Handle of the calo topo IsolationTool"
}

Tool for topo isolation calculation.

Definition at line 116 of file IsolationBuilder.h.

◆ m_trackIsolationTool

ToolHandle<xAOD::ITrackIsolationTool> IsolationBuilder::m_trackIsolationTool
private
Initial value:
{
this,
"TrackIsolationTool",
"",
"Handle of the track IsolationTool"
}

Tool for neutral pflow isolation calculation.

Definition at line 132 of file IsolationBuilder.h.

◆ m_useBremAssoc

Gaudi::Property<bool> IsolationBuilder::m_useBremAssoc
private
Initial value:
{ this,
"useBremAssoc",
true,
"use track to track assoc after brem" }

Definition at line 143 of file IsolationBuilder.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
IsolationBuilder::m_allTrackRemoval
Gaudi::Property< bool > m_allTrackRemoval
Definition: IsolationBuilder.h:148
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
IsolationBuilder::m_elisoInts
Gaudi::Property< std::vector< std::vector< int > > > m_elisoInts
Isolation types.
Definition: IsolationBuilder.h:153
xAOD::Iso::topoetcone
@ topoetcone
Topo-cluster ET-sum.
Definition: IsolationFlavour.h:25
IsolationBuilder::m_customConfigFwd
Gaudi::Property< std::string > m_customConfigFwd
Definition: IsolationBuilder.h:366
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
beamspotPlotBcids.k
k
Definition: beamspotPlotBcids.py:524
CheckAppliedSFs.corrType
string corrType
Definition: CheckAppliedSFs.py:233
IsolationBuilder::m_storepileupCorrection
Gaudi::Property< bool > m_storepileupCorrection
Definition: IsolationBuilder.h:150
xAOD::Vertex_v1::nTrackParticles
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
Definition: Vertex_v1.cxx:270
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
xAOD::Iso::coreConeSC
@ coreConeSC
core energy (super cluster).
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:38
IsolationBuilder::declareIso
void declareIso(std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey >> &caloIso)
Definition: IsolationBuilder.cxx:756
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
beamspotVtxAnalysis.cs
list cs
Definition: beamspotVtxAnalysis.py:391
xAOD::TrackIsolation::ptvarcones_10GeVDivPt
std::vector< float > ptvarcones_10GeVDivPt
Definition: IsolationCommon.h:37
IsolationBuilder::m_phCaloIso
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > m_phCaloIso
Definition: IsolationBuilder.h:282
IsolationBuilder::m_customConfigMu
Gaudi::Property< std::string > m_customConfigMu
Definition: IsolationBuilder.h:373
IsolationBuilder::m_elcorIntsExtra
Gaudi::Property< std::vector< std::vector< int > > > m_elcorIntsExtra
Definition: IsolationBuilder.h:169
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
xAOD::Iso::IsolationFlavour
IsolationFlavour
Enumeration for different ways of calculating isolation in xAOD files.
Definition: IsolationFlavour.h:17
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
xAOD::Iso::toString
std::string toString(const IsoType &iso)
Definition: IsolationHelpers.h:59
IsolationBuilder::m_mucorInts
Gaudi::Property< std::vector< std::vector< int > > > m_mucorInts
Definition: IsolationBuilder.h:209
MuonGM::round
float round(const float toRound, const unsigned int decimals)
Definition: Mdt.cxx:27
AthCommonDataStore::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 > renounce(T &h)
Definition: AthCommonDataStore.h:380
IsolationBuilder::m_ElectronContainerName
Gaudi::Property< std::string > m_ElectronContainerName
Containers (Is it best to make them as strings? Used by multiple handles)
Definition: IsolationBuilder.h:75
skel.it
it
Definition: skel.GENtoEVGEN.py:424
IsolationBuilder::m_phisoInts
Gaudi::Property< std::vector< std::vector< int > > > m_phisoInts
Isolation types (for the alg.
Definition: IsolationBuilder.h:178
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
IsolationBuilder::m_MuonContainerName
Gaudi::Property< std::string > m_MuonContainerName
Definition: IsolationBuilder.h:93
IsolationBuilder::m_FwdElectronContainerName
Gaudi::Property< std::string > m_FwdElectronContainerName
Definition: IsolationBuilder.h:81
xAOD::Iso::etcone
@ etcone
Calorimeter isolation.
Definition: IsolationFlavour.h:19
SG::HandleKeyArray
Definition: StoreGate/StoreGate/HandleKeyArray.h:38
xAOD::EgammaHelpers::getTrackParticles
std::set< const xAOD::TrackParticle * > getTrackParticles(const xAOD::Egamma *eg, bool useBremAssoc=true, bool allParticles=true)
Return a list of all or only the best TrackParticle associated to the object.
Definition: EgammaxAODHelpers.cxx:121
xAOD::Egamma_v1
Definition: Egamma_v1.h:56
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
xAOD::Iso::neflowisol
@ neflowisol
neutral eflow
Definition: IsolationFlavour.h:31
IsolationBuilder::m_isTrigger
Gaudi::Property< bool > m_isTrigger
is the alg run at trigger level
Definition: IsolationBuilder.h:140
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
xAOD::Iso::IsolationCorrectionParameter
IsolationCorrectionParameter
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:91
IsolationBuilder::m_elTrackIso
std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey > > m_elTrackIso
Definition: IsolationBuilder.h:317
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IsolationBuilder::m_fecorInts
Gaudi::Property< std::vector< std::vector< int > > > m_fecorInts
Definition: IsolationBuilder.h:232
IsolationBuilder::addCaloIsoCorrections
StatusCode addCaloIsoCorrections(size_t flavor, xAOD::Iso::IsolationFlavour isoFlav, CaloIsoHelpKey &cisoH, const std::vector< std::vector< int >> &corInts, bool corrsAreExtra, const std::string &prefix, const std::string &customConfig)
called by initializeIso
Definition: IsolationBuilder.cxx:401
IsolationBuilder::addTrackIsoCorrections
StatusCode addTrackIsoCorrections(size_t flavor, xAOD::Iso::IsolationFlavour isoFlav, TrackIsoHelpKey &tisoH, const std::vector< std::vector< int >> &corInts, bool corrsAreExtra, const std::string &prefix, const std::string &customConfig)
called by initializeIso
Definition: IsolationBuilder.cxx:472
IsolationBuilder::m_phcorIntsExtra
Gaudi::Property< std::vector< std::vector< int > > > m_phcorIntsExtra
Definition: IsolationBuilder.h:194
xAOD::Iso::core57cells
@ core57cells
core 5x7 cells
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:26
IsolationBuilder::m_customConfigPh
Gaudi::Property< std::string > m_customConfigPh
Definition: IsolationBuilder.h:359
xAOD::CaloIsolation
Definition: IsolationCommon.h:22
xAOD::Vertex_v1::setZ
void setZ(float value)
Sets the z position.
IsolationBuilder::m_cellsKey
SG::ReadHandleKey< CaloCellContainer > m_cellsKey
Cell container.
Definition: IsolationBuilder.h:108
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
IsolationBuilder::initializeIso
StatusCode initializeIso(std::set< xAOD::Iso::IsolationFlavour > &runIsoType, std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey >> *caloIsoMap, std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey >> *trackIsoMap, const std::string &containerName, const std::vector< std::vector< int >> &isoInts, const std::vector< std::vector< int >> &corInts, const std::vector< std::vector< int >> &corIntsExtra, const std::string &customConfig)
called by algorithm initialize per object (electron, photon, forward electron, muon)
Definition: IsolationBuilder.cxx:269
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
lumiFormat.i
int i
Definition: lumiFormat.py:92
xAOD::TauJetParameters::caloIso
@ caloIso
Get sum of transvers energy of clusters around jet seed within 0.2 < dR < 0.4
Definition: TauDefs.h:222
xAOD::TrackIsolation::coreCorrections
std::map< Iso::IsolationTrackCorrection, float > coreCorrections
Definition: IsolationCommon.h:39
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::CaloIsolation::coreCorrections
std::map< Iso::IsolationCaloCorrection, std::map< Iso::IsolationCorrectionParameter, float > > coreCorrections
Definition: IsolationCommon.h:26
xAOD::EgammaHelpers::isElectron
bool isElectron(const xAOD::Egamma *eg)
is the object an electron (not Fwd)
Definition: EgammaxAODHelpers.cxx:13
xAOD::Iso::IsolationType
IsolationType
Overall enumeration for isolation types in xAOD files.
Definition: IsolationType.h:26
IsolationBuilder::m_feisoInts
Gaudi::Property< std::vector< std::vector< int > > > m_feisoInts
Definition: IsolationBuilder.h:224
IsolationBuilder::m_phcorInts
Gaudi::Property< std::vector< std::vector< int > > > m_phcorInts
Definition: IsolationBuilder.h:186
IsolationBuilder::executeTrackIso
StatusCode executeTrackIso(const std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey >> &trackIsoMap) const
Definition: IsolationBuilder.cxx:633
TileDCSDataPlotter.pr
pr
Definition: TileDCSDataPlotter.py:922
IsolationBuilder::m_muTrackIso
std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey > > m_muTrackIso
Definition: IsolationBuilder.h:321
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
IsolationBuilder::m_pflowIsolationTool
ToolHandle< xAOD::INeutralEFlowIsolationTool > m_pflowIsolationTool
Tool for neutral pflow isolation calculation.
Definition: IsolationBuilder.h:124
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
xAOD::Iso::ptcone
@ ptcone
Track isolation.
Definition: IsolationFlavour.h:22
xAOD::Vertex_v1::trackParticle
const TrackParticle * trackParticle(size_t i) const
Get the pointer to a given track that was used in vertex reco.
Definition: Vertex_v1.cxx:249
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
xAOD::Vertex_v1::z
float z() const
Returns the z position.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
IsolationBuilder::m_useBremAssoc
Gaudi::Property< bool > m_useBremAssoc
Definition: IsolationBuilder.h:143
IsolationBuilder::m_muisoInts
Gaudi::Property< std::vector< std::vector< int > > > m_muisoInts
Definition: IsolationBuilder.h:201
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
IsolationBuilder::m_fecorIntsExtra
Gaudi::Property< std::vector< std::vector< int > > > m_fecorIntsExtra
Definition: IsolationBuilder.h:240
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
xAOD::Iso::isolationFlavour
IsolationFlavour isolationFlavour(IsolationType type)
convert Isolation Type into Isolation Flavour
Definition: IsolationHelpers.h:47
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
IsolationBuilder::executeCaloIso
StatusCode executeCaloIso(const std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey >> &caloIsoMap, const CaloCellContainer *cellColl) const
Definition: IsolationBuilder.cxx:517
xAOD::TrackIsolation
Definition: IsolationCommon.h:33
xAOD::Iso::coreMuon
@ coreMuon
core for muons
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:23
xAOD::Iso::IsolationTrackCorrection
IsolationTrackCorrection
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:61
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
IsolationBuilder::m_trackIsolationTool
ToolHandle< xAOD::ITrackIsolationTool > m_trackIsolationTool
Tool for neutral pflow isolation calculation.
Definition: IsolationBuilder.h:132
IsolationBuilder::m_cellIsolationTool
ToolHandle< xAOD::ICaloCellIsolationTool > m_cellIsolationTool
Tool for cell isolation calculation.
Definition: IsolationBuilder.h:100
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
xAOD::CaloIsolation::etcones
std::vector< float > etcones
Definition: IsolationCommon.h:30
xAOD::Iso::coreCone
@ coreCone
core energy (in dR<0.1).
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:29
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
IsolationBuilder::m_customConfigEl
Gaudi::Property< std::string > m_customConfigEl
Definition: IsolationBuilder.h:352
xAOD::Iso::numIsolationFlavours
@ numIsolationFlavours
Definition: IsolationFlavour.h:49
xAOD::EgammaHelpers::getOriginalTrackParticleFromGSF
const xAOD::TrackParticle * getOriginalTrackParticleFromGSF(const xAOD::TrackParticle *trkPar)
Helper function for getting the "Original" Track Particle (i.e before GSF) via the GSF Track Particle...
Definition: ElectronxAODHelpers.cxx:22
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:172
CaloCellContainer
Container class for CaloCell.
Definition: CaloCellContainer.h:55
xAOD::Electron_v1
Definition: Electron_v1.h:34
xAOD::TrackIsolation::ptcones
std::vector< float > ptcones
Definition: IsolationCommon.h:36
IsolationBuilder::m_PhotonContainerName
Gaudi::Property< std::string > m_PhotonContainerName
Definition: IsolationBuilder.h:87
xAOD::Iso::IsolationCaloCorrection
IsolationCaloCorrection
Enumeration for different ways of correcting isolation in xAOD files.
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:18
a
TList * a
Definition: liststreamerinfos.cxx:10
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
xAOD::Photon_v1
Definition: Photon_v1.h:37
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
IsolationBuilder::m_phTrackIso
std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey > > m_phTrackIso
Definition: IsolationBuilder.h:319
IsolationBuilder::m_feCaloIso
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > m_feCaloIso
Definition: IsolationBuilder.h:284
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
IsolationBuilder::isCoreCor
static bool isCoreCor(xAOD::Iso::IsolationCaloCorrection corr)
Definition: IsolationBuilder.cxx:262
xAOD::CaloIsolation::noncoreCorrections
std::map< Iso::IsolationCaloCorrection, std::vector< float > > noncoreCorrections
Definition: IsolationCommon.h:28
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
IsolationBuilder::m_mucorIntsExtra
Gaudi::Property< std::vector< std::vector< int > > > m_mucorIntsExtra
Definition: IsolationBuilder.h:217
xAOD::Iso::coneSize
float coneSize(IsolationConeSize type)
convert Isolation Size into cone size
Definition: IsolationHelpers.h:27
IsolationBuilder::m_topoIsolationTool
ToolHandle< xAOD::ICaloTopoClusterIsolationTool > m_topoIsolationTool
Tool for topo isolation calculation.
Definition: IsolationBuilder.h:116
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
IsolationBuilder::m_elCaloIso
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > m_elCaloIso
Definition: IsolationBuilder.h:280
IsolationBuilder::m_muCaloIso
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > m_muCaloIso
Definition: IsolationBuilder.h:286
IsolationBuilder::m_elcorInts
Gaudi::Property< std::vector< std::vector< int > > > m_elcorInts
Definition: IsolationBuilder.h:161
xAOD::Iso::pileupCorrection
@ pileupCorrection
fully corrected
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:35
ServiceHandle< ICondSvc >