ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
DerivationFramework::METRemappingAlg Class Reference

#include <METRemappingAlg.h>

Inheritance diagram for DerivationFramework::METRemappingAlg:
Collaboration diagram for DerivationFramework::METRemappingAlg:

Public Member Functions

 METRemappingAlg (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual ~METRemappingAlg ()=default
 
virtual StatusCode initialize () override
 
virtual StatusCode execute () override
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. 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 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 std::map< const xAOD::IParticle *, ElementLink< xAOD::IParticleContainer > > linkMap_t
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

template<typename handle_t >
StatusCode fillLinkMap (linkMap_t &map, handle_t &handle)
 
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

SG::ReadHandleKey< xAOD::JetContainerm_jetContKey {this, "JetCollectionKey", "AnalysisJets", "SG key for the analysis jets collection"}
 
SG::ReadHandleKey< xAOD::PhotonContainerm_photonContKey {this, "PhotonCollectionKey", "AnalysisPhotons", "SG key for the analysis photons collection"}
 
SG::ReadHandleKey< xAOD::ElectronContainerm_electronContKey {this, "ElectronCollectionKey", "AnalysisElectrons", "SG key for the analysis electrons collection"}
 
SG::ReadHandleKey< xAOD::MuonContainerm_muonContKey {this, "MuonCollectionKey", "AnalysisMuons", "SG key for the analysis muons collection"}
 
SG::ReadHandleKey< xAOD::TauJetContainerm_tauContKey {this, "TauCollectionKey", "AnalysisTauJets", "SG key for the analysis tau jets collection"}
 
SG::ReadHandleKey< xAOD::MissingETAssociationMapm_inputMapKey {this, "AssociationInputKey", "METAssoc_AntiKt4EMPFlow", "SG key for the input MissingETAssociationMap"}
 
SG::ReadHandleKey< xAOD::MissingETContainerm_inputCoreKey {this, "METCoreInputKey", "MET_Core_AntiKt4EMPFlow", "SG key for the input MET core container"}
 
SG::WriteHandleKey< xAOD::MissingETAssociationMapm_outputMapKey {this, "AssociationOutputKey", "METAssoc_AnalysisMET", "SG key for the output MissingETAssociationMap"}
 
SG::WriteHandleKey< xAOD::MissingETContainerm_outputCoreKey {this, "METCoreOutputKey", "MET_Core_AnalysisMET", "SG key for the output MET core container"}
 
const SG::AuxElement::ConstAccessor< ElementLink< xAOD::IParticleContainer > > m_accOriginalObject {"originalObjectLink"}
 
DataObjIDColl m_extendedExtraObjects
 
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 32 of file METRemappingAlg.h.

Member Typedef Documentation

◆ linkMap_t

Definition at line 41 of file METRemappingAlg.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ METRemappingAlg()

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

Definition at line 13 of file METRemappingAlg.cxx.

13  :
14  AthAlgorithm(name, pSvcLocator)
15  {
16 
17  }

◆ ~METRemappingAlg()

virtual DerivationFramework::METRemappingAlg::~METRemappingAlg ( )
virtualdefault

Member Function Documentation

◆ declareGaudiProperty() [1/4]

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

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< 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< 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< 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< 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< 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< 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< 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< 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< 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 DerivationFramework::METRemappingAlg::execute ( )
overridevirtual

Definition at line 37 of file METRemappingAlg.cxx.

38  {
39  ATH_MSG_VERBOSE("METRemappingAlg::execute()");
40 
41  const EventContext& ctx = Gaudi::Hive::currentContext();
42 
44  if( !jetContHandle.isValid() ) {
45  ATH_MSG_ERROR("Unable to retrieve input jet container " << m_jetContKey.key());
46  return StatusCode::FAILURE;
47  }
48 
49  // first iterate through the AnalysisJets container and populate a map
50  // that links original Jet objects to their calibrated counterparts
51  std::map<const xAOD::Jet*, ElementLink<xAOD::JetContainer> > jetLinkMap;
52  for( const xAOD::IParticle *j : *jetContHandle ) {
53  if( !m_accOriginalObject.isAvailable(*j) ) {
54  ATH_MSG_ERROR("originalObjectLink not available!");
55  return StatusCode::FAILURE;
56  }
57  const xAOD::IParticle *orig = *m_accOriginalObject(*j);
58  ElementLink<xAOD::JetContainer> link(*jetContHandle, j->index());
59  jetLinkMap.try_emplace(
60  static_cast<const xAOD::Jet*>(orig),
61  link
62  );
63  }
64 
65  // repeat for Photon/Electron/Muon/Tau containers
66  linkMap_t objectLinkMap;
68  ATH_CHECK( fillLinkMap(objectLinkMap, photonContHandle) );
69 
71  ATH_CHECK( fillLinkMap(objectLinkMap, electronContHandle) );
72 
74  ATH_CHECK( fillLinkMap(objectLinkMap, muonContHandle) );
75 
77  ATH_CHECK( fillLinkMap(objectLinkMap, tauContHandle) );
78 
79  // now retrieve and iterate through the METmap from PHYS and
80  // use its contents as a baseline to populate our own
82  if( !inputMapHandle.isValid() ) {
83  ATH_MSG_ERROR("Unable to retrieve input MissingETAssociationMap " << m_inputMapKey.key());
84  return StatusCode::FAILURE;
85  }
86 
88  ATH_CHECK( outputMapHandle.record(
89  std::make_unique<xAOD::MissingETAssociationMap>(),
90  std::make_unique<xAOD::MissingETAuxAssociationMap>()
91  ));
92  ATH_CHECK( outputMapHandle.isValid() );
93 
94  const ElementLink<xAOD::IParticleContainer> invalidLink;
95  for( const xAOD::MissingETAssociation *el : *inputMapHandle ) {
96  // copy constructor creates a deep copy
97  auto assoc = outputMapHandle->push_back(new xAOD::MissingETAssociation(*el));
98 
99  if( !assoc->isMisc() ) {
100  // check if the reference jet has a calibrated equivalent that should be linked to instead
101  std::map<const xAOD::Jet*, ElementLink<xAOD::JetContainer> >::const_iterator jet_it = jetLinkMap.find(assoc->refJet());
102  if( jet_it != jetLinkMap.end() ) {
103  // relink to calibrated jet
104  assoc->setJetLink(jet_it->second);
105 
106  // update objectLinks for this association
108  for( const ElementLink<xAOD::IParticleContainer> &link : assoc->objectLinks() ) {
109  if( !link.isValid() ) {
110  objectLinks.push_back(invalidLink);
111  continue;
112  }
113 
114  linkMap_t::const_iterator obj_it = objectLinkMap.find(*link);
115  if( obj_it != objectLinkMap.end() ) {
116  objectLinks.emplace_back(obj_it->second);
117  } else {
118  // objects that aren't found in the map were selected away,
119  // but we should leave an invalid link to maintain index order
120  objectLinks.push_back(invalidLink);
121  }
122  }
123  assoc->setObjectLinks(objectLinks);
124 
125  } else { // jet_it == jetLinkMap.end()
126  // jet was selected away - this case should not happen, just give an error for now
127  ATH_MSG_ERROR("Jet not found!");
128  return StatusCode::FAILURE;
129  }
130  } else { // assoc->isMisc() == true
131  // update links in the misc association
133  for( const ElementLink<xAOD::IParticleContainer> &link : assoc->objectLinks() ) {
134  if( !link.isValid() ) {
135  miscObjectLinks.push_back(invalidLink);
136  continue;
137  }
138 
139  linkMap_t::const_iterator obj_it = objectLinkMap.find(*link);
140  if( obj_it != objectLinkMap.end() ) {
141  miscObjectLinks.emplace_back(obj_it->second);
142  } else {
143  miscObjectLinks.push_back(invalidLink);
144  }
145  }
146  assoc->setObjectLinks(miscObjectLinks);
147  }
148  } //> end loop over METmap
149 
150  // copy over the MET core container
152  if( !inputCoreHandle.isValid() ) {
153  ATH_MSG_ERROR("Unable to retrieve input MET core container " << m_inputCoreKey.key());
154  return StatusCode::FAILURE;
155  }
156 
158  ATH_CHECK( outputCoreHandle.record(
159  std::make_unique<xAOD::MissingETContainer>(),
160  std::make_unique<xAOD::MissingETAuxContainer>()
161  ));
162  ATH_CHECK( outputCoreHandle.isValid() );
163 
164  for( const xAOD::MissingET *el : *inputCoreHandle ) {
165  outputCoreHandle->push_back(new xAOD::MissingET(*el));
166  }
167 
168  return StatusCode::SUCCESS;
169  }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< 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 & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 50 of file AthAlgorithm.cxx.

51 {
52  // If we didn't find any symlinks to add, just return the collection
53  // from the base class. Otherwise, return the extended collection.
54  if (!m_extendedExtraObjects.empty()) {
56  }
57  return Algorithm::extraOutputDeps();
58 }

◆ fillLinkMap()

template<typename handle_t >
StatusCode DerivationFramework::METRemappingAlg::fillLinkMap ( linkMap_t map,
handle_t &  handle 
)
private

Definition at line 172 of file METRemappingAlg.cxx.

173  {
174  if( !handle.isValid() ) {
175  ATH_MSG_ERROR("Unable to retrieve " << handle.key());
176  return StatusCode::FAILURE;
177  }
178 
179  for( const xAOD::IParticle *obj : *handle ) {
180  if( !m_accOriginalObject.isAvailable(*obj) ) {
181  ATH_MSG_ERROR("originalObjectLink not available!");
182  return StatusCode::FAILURE;
183  }
184  const xAOD::IParticle *orig = *m_accOriginalObject(*obj);
185  ElementLink<xAOD::IParticleContainer> link(*handle,obj->index());
186  map.try_emplace(orig, link);
187  }
188  return StatusCode::SUCCESS;
189  }

◆ initialize()

StatusCode DerivationFramework::METRemappingAlg::initialize ( )
overridevirtual

Definition at line 19 of file METRemappingAlg.cxx.

20  {
21  ATH_MSG_VERBOSE("METRemappingAlg::initialize()");
22 
23  ATH_CHECK( m_jetContKey.initialize() );
24  ATH_CHECK( m_photonContKey.initialize() );
26  ATH_CHECK( m_muonContKey.initialize() );
27  ATH_CHECK( m_tauContKey.initialize() );
28 
29  ATH_CHECK( m_inputMapKey.initialize() );
30  ATH_CHECK( m_inputCoreKey.initialize() );
31  ATH_CHECK( m_outputMapKey.initialize() );
32  ATH_CHECK( m_outputCoreKey.initialize() );
33 
34  return StatusCode::SUCCESS;
35  }

◆ inputHandles()

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

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

MsgStream& AthCommonMsg< 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< 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< 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< 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< 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  }

◆ sysInitialize()

StatusCode AthAlgorithm::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< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, PyAthena::Alg, and AthHistogramAlgorithm.

Definition at line 66 of file AthAlgorithm.cxx.

66  {
68 
69  if (sc.isFailure()) {
70  return sc;
71  }
72  ServiceHandle<ICondSvc> cs("CondSvc",name());
73  for (auto h : outputHandles()) {
74  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75  // do this inside the loop so we don't create the CondSvc until needed
76  if ( cs.retrieve().isFailure() ) {
77  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78  return StatusCode::SUCCESS;
79  }
80  if (cs->regHandle(this,*h).isFailure()) {
81  sc = StatusCode::FAILURE;
82  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83  << " with CondSvc");
84  }
85  }
86  }
87  return sc;
88 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< 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< 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_accOriginalObject

const SG::AuxElement::ConstAccessor< ElementLink<xAOD::IParticleContainer> > DerivationFramework::METRemappingAlg::m_accOriginalObject {"originalObjectLink"}
private

Definition at line 54 of file METRemappingAlg.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_electronContKey

SG::ReadHandleKey<xAOD::ElectronContainer> DerivationFramework::METRemappingAlg::m_electronContKey {this, "ElectronCollectionKey", "AnalysisElectrons", "SG key for the analysis electrons collection"}
private

Definition at line 46 of file METRemappingAlg.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_inputCoreKey

SG::ReadHandleKey<xAOD::MissingETContainer> DerivationFramework::METRemappingAlg::m_inputCoreKey {this, "METCoreInputKey", "MET_Core_AntiKt4EMPFlow", "SG key for the input MET core container"}
private

Definition at line 50 of file METRemappingAlg.h.

◆ m_inputMapKey

SG::ReadHandleKey<xAOD::MissingETAssociationMap> DerivationFramework::METRemappingAlg::m_inputMapKey {this, "AssociationInputKey", "METAssoc_AntiKt4EMPFlow", "SG key for the input MissingETAssociationMap"}
private

Definition at line 49 of file METRemappingAlg.h.

◆ m_jetContKey

SG::ReadHandleKey<xAOD::JetContainer> DerivationFramework::METRemappingAlg::m_jetContKey {this, "JetCollectionKey", "AnalysisJets", "SG key for the analysis jets collection"}
private

Definition at line 44 of file METRemappingAlg.h.

◆ m_muonContKey

SG::ReadHandleKey<xAOD::MuonContainer> DerivationFramework::METRemappingAlg::m_muonContKey {this, "MuonCollectionKey", "AnalysisMuons", "SG key for the analysis muons collection"}
private

Definition at line 47 of file METRemappingAlg.h.

◆ m_outputCoreKey

SG::WriteHandleKey<xAOD::MissingETContainer> DerivationFramework::METRemappingAlg::m_outputCoreKey {this, "METCoreOutputKey", "MET_Core_AnalysisMET", "SG key for the output MET core container"}
private

Definition at line 52 of file METRemappingAlg.h.

◆ m_outputMapKey

SG::WriteHandleKey<xAOD::MissingETAssociationMap> DerivationFramework::METRemappingAlg::m_outputMapKey {this, "AssociationOutputKey", "METAssoc_AnalysisMET", "SG key for the output MissingETAssociationMap"}
private

Definition at line 51 of file METRemappingAlg.h.

◆ m_photonContKey

SG::ReadHandleKey<xAOD::PhotonContainer> DerivationFramework::METRemappingAlg::m_photonContKey {this, "PhotonCollectionKey", "AnalysisPhotons", "SG key for the analysis photons collection"}
private

Definition at line 45 of file METRemappingAlg.h.

◆ m_tauContKey

SG::ReadHandleKey<xAOD::TauJetContainer> DerivationFramework::METRemappingAlg::m_tauContKey {this, "TauCollectionKey", "AnalysisTauJets", "SG key for the analysis tau jets collection"}
private

Definition at line 48 of file METRemappingAlg.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
DerivationFramework::METRemappingAlg::m_accOriginalObject
const SG::AuxElement::ConstAccessor< ElementLink< xAOD::IParticleContainer > > m_accOriginalObject
Definition: METRemappingAlg.h:54
xAOD::MissingETAssociation_v1
MET association descriptor contains object links and corresponding parameters.
Definition: MissingETAssociation_v1.h:29
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
DerivationFramework::METRemappingAlg::linkMap_t
std::map< const xAOD::IParticle *, ElementLink< xAOD::IParticleContainer > > linkMap_t
Definition: METRemappingAlg.h:41
DerivationFramework::METRemappingAlg::m_photonContKey
SG::ReadHandleKey< xAOD::PhotonContainer > m_photonContKey
Definition: METRemappingAlg.h:45
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
DerivationFramework::METRemappingAlg::fillLinkMap
StatusCode fillLinkMap(linkMap_t &map, handle_t &handle)
Definition: METRemappingAlg.cxx:172
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
DerivationFramework::METRemappingAlg::m_inputCoreKey
SG::ReadHandleKey< xAOD::MissingETContainer > m_inputCoreKey
Definition: METRemappingAlg.h:50
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
DerivationFramework::METRemappingAlg::m_muonContKey
SG::ReadHandleKey< xAOD::MuonContainer > m_muonContKey
Definition: METRemappingAlg.h:47
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthAlgorithm.cxx:66
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
MissingETBase::Types::objlink_vector_t
std::vector< objlink_t > objlink_vector_t
Vector of object links type.
Definition: MissingETCompositionBase.h:58
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
DerivationFramework::METRemappingAlg::m_inputMapKey
SG::ReadHandleKey< xAOD::MissingETAssociationMap > m_inputMapKey
Definition: METRemappingAlg.h:49
xAOD::MissingET_v1
Principal data object for Missing ET.
Definition: MissingET_v1.h:25
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
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
DerivationFramework::METRemappingAlg::m_jetContKey
SG::ReadHandleKey< xAOD::JetContainer > m_jetContKey
Definition: METRemappingAlg.h:44
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
DerivationFramework::METRemappingAlg::m_tauContKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_tauContKey
Definition: METRemappingAlg.h:48
DerivationFramework::METRemappingAlg::m_outputMapKey
SG::WriteHandleKey< xAOD::MissingETAssociationMap > m_outputMapKey
Definition: METRemappingAlg.h:51
SG::WriteHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
DerivationFramework::METRemappingAlg::m_electronContKey
SG::ReadHandleKey< xAOD::ElectronContainer > m_electronContKey
Definition: METRemappingAlg.h:46
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
DerivationFramework::METRemappingAlg::m_outputCoreKey
SG::WriteHandleKey< xAOD::MissingETContainer > m_outputCoreKey
Definition: METRemappingAlg.h:52
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
a
TList * a
Definition: liststreamerinfos.cxx:10
h
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
AthAlgorithm::AthAlgorithm
AthAlgorithm()
Default constructor:
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
python.PyAthena.obj
obj
Definition: PyAthena.py:132
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
fitman.k
k
Definition: fitman.py:528
ServiceHandle< ICondSvc >