ATLAS Offline Software
HLTEDMCreator.cxx
Go to the documentation of this file.
1 
2 /*
3  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4 */
5 
6 
7 //#include "GaudiKernel/IToolSvc.h"
8 #include "AthViews/ViewHelper.h"
9 #include "HLTEDMCreator.h"
12 
20 
22 
25 
38 
40 
42 
44 
46 
52 
64 
66 
67 HLTEDMCreator::HLTEDMCreator( const std::string& type,
68  const std::string& name,
69  const IInterface* parent )
70  : base_class( type, name, parent ) {}
71 
72 template<typename T>
74  ATH_CHECK( handles.out.initialize() );
75  if(m_renounceOutputs) { renounceArray( handles.out ); }
76  ATH_CHECK( handles.in.initialize() );
77  renounceArray( handles.in );
78  ATH_CHECK( handles.views.initialize() );
79  renounceArray( handles.views );
80 
81  // the case w/o reading from views, both views handles and collection in views should be empty
82  if ( handles.views.empty() ) {
83  ATH_CHECK( handles.in.empty() );
84  } else {
85  // the case with views, for every output we expect an input View and an input collection inside that View
86  ATH_CHECK( handles.out.size() == handles.in.size() );
87  ATH_CHECK( handles.in.size() == handles.views.size() );
88  }
89  return StatusCode::SUCCESS;
90 }
91 
92 template<typename T>
93 StatusCode HLTEDMCreator::initAuxKey( const std::vector<SG::VarHandleKey*>& keys ) {
94  // Register Aux keys for all handles to avoid hash collisions (ATR-26386).
95  for (const SG::VarHandleKey* k : keys) {
96  SG::WriteHandleKey<T> auxkey(k->key()+"Aux.");
97  ATH_CHECK( auxkey.initialize() );
98  }
99  return StatusCode::SUCCESS;
100 }
101 
102 
104 {
105  if ( m_fixLinks.size() > 0 ) {
106  // Confirm that m_fixLinks is a sub-set of m_TrigCompositeContainer
107  for (const std::string& entry : m_fixLinks) {
108  const bool found = std::any_of(m_TrigCompositeContainer.begin(),
109  m_TrigCompositeContainer.end(), [&](const auto& writeHandleKey) { return writeHandleKey.key() == entry; } );
110  if (!found) {
111  ATH_MSG_ERROR("FixLinks contains the entry " << entry << ", however this is not one of this EDMCreator tool's managed TrigCompositeContainers.");
112  ATH_MSG_ERROR("Configure FixLinks to be a sub-set of TrigCompositeContainer");
113  return StatusCode::FAILURE;
114  }
115  }
116  // Set up the write decorate handles to hold the remapped data
117  for ( const auto& writeHandleKey: m_TrigCompositeContainer ) {
118  const bool doFixLinks = std::any_of(m_fixLinks.begin(), m_fixLinks.end(), [&](const std::string& s) { return s == writeHandleKey.key(); } );
119  if (doFixLinks) {
120  // This writeHandleKey is being included in the element link remapping
121  m_remapLinkColKeys.emplace_back( writeHandleKey.key()+".remap_linkColKeys" );
122  m_remapLinkColIndices.emplace_back( writeHandleKey.key()+".remap_linkColIndices" );
123  }
124  }
125  ATH_CHECK( m_remapLinkColKeys.initialize() ) ;
126  renounceArray( m_remapLinkColKeys ); // This is not strictly necessary however, since we have many of these collection and no consumer for it we can spare scheduler headache renouncing them
127  ATH_CHECK( m_remapLinkColIndices.initialize() );
128  renounceArray( m_remapLinkColIndices );
129  }
130 
131  // this section has to appear after the above initialisation of DecorHandles, else the renounce of TrigComposite does not work as expected
132 
133 #define INIT(__TYPE) \
134  ATH_CHECK( initHandles( HandlesGroup<__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ) ) );
135 
136 #define INIT_XAOD(__TYPE, __STORE_TYPE) \
137  ATH_CHECK( initHandles( HandlesGroup<xAOD::__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ) ) ); \
138  ATH_CHECK( initAuxKey<xAOD::__STORE_TYPE>( m_##__TYPE.keys() ) );
139 
142 
152 
165  INIT_XAOD( CaloClusterContainer, CaloClusterTrigAuxContainer ); // NOTE: Difference in interface and aux
174 
175  // Phase-I L1 RoIs EDM
187 
188 #undef INIT
189 #undef INIT_XAOD
190 
191 #define INIT_SHALLOW(__TYPE) \
192  ATH_CHECK( m_##__TYPE##ShallowCopy.initialize() ); \
193  renounceArray( m_##__TYPE##ShallowCopy ); \
194  for ( auto k: m_##__TYPE##ShallowCopy ) \
195  m_##__TYPE##ShallowCopyOut.push_back(k.key()); \
196  ATH_CHECK( m_##__TYPE##ShallowCopyOut.initialize() ); \
197  if(m_renounceOutputs) { renounceArray( m_##__TYPE##ShallowCopyOut ); }
198 
201 
202 #undef INIT_SHALLOW
203 
204  return StatusCode::SUCCESS;
205 }
206 
207 template<class T>
209  std::unique_ptr<T> data;
210  bool doRecord{true};
211  void create( bool create, bool record ) {
212  doRecord = record;
213  if ( create )
214  data = std::make_unique<T>();
215  }
216 
218  if ( doRecord )
219  return h.record( std::move( data ) );
220  return StatusCode::SUCCESS;
221  }
222 };
223 
224 template<class T, class STORE>
226  std::unique_ptr<T> data;
227  std::unique_ptr<STORE> store;
228  bool doRecord{true};
229 
230  void create( bool create, bool record ) {
231  doRecord = record;
232  if ( create ) {
233  data = std::make_unique<T>();
234  store = std::make_unique<STORE>();
235  data->setStore( store.get() );
236  }
237  }
238 
240  if ( doRecord )
241  return h.record( std::move( data ), std::move( store ) );
242  return StatusCode::SUCCESS;
243  }
244 };
245 
246 template<typename T>
248  EventContext const&, T & ) const {
249  // if we are called it means views merging is requested but Type T does not support it (i.e. missing copy c'tor)
250  return StatusCode::FAILURE;
251 
252 }
253 
254 template<typename T>
256  EventContext const& context, T & output ) const {
257 
258  using type_in_container = typename T::base_value_type;
259  StoreGateSvc* sg = evtStore().operator->(); // why the get() method is returing a null ptr is a puzzle, we have to use this ugly call to operator instead of it
260  ATH_CHECK( sg != nullptr );
261  ViewHelper::ViewMerger merger( sg, msg() );
262  ATH_CHECK( merger.mergeViewCollection<type_in_container>( views, inViewKey, context, output ) );
263 
264  return StatusCode::SUCCESS;
265 }
266 
267 
268 StatusCode HLTEDMCreator::fixLinks( EventContext const& context ) const {
269  if ( m_fixLinks.value().empty() ) {
270  ATH_MSG_DEBUG("fixLinks: No collections defined for this tool");
271  return StatusCode::SUCCESS;
272  }
273 
274  ATH_MSG_DEBUG("fixLinks called for " << m_fixLinks.size() << " of " << m_TrigCompositeContainer.size() << " collections");
275 
276  // Do the remapping
277  int writeHandleArrayIndex = -1;
278 
279  // Create a HandleKey that we can re-use during the loop (slightly better performance)
281  ATH_CHECK( readHandleKey.initialize() );
282 
283  for ( const auto& writeHandleKey: m_TrigCompositeContainer ) {
284  // Check if we are re-mapping this handle
285  const bool doFixLinks = std::any_of(m_fixLinks.begin(), m_fixLinks.end(), [&](const std::string& s) { return s == writeHandleKey.key(); } );
286  if ( not doFixLinks ) {
287  ATH_MSG_DEBUG("Not requested to fix TrigComposite ElementLinks for " << writeHandleKey.key());
288  continue;
289  }
290 
291  // Only increment this index for the sub-set of the TrigComposite collections that we are fixing. Mirror the initialize() logic.
292  ++writeHandleArrayIndex;
293 
294  ATH_MSG_DEBUG("Fixing links: confirm collection is there: " << writeHandleKey.key() << ", write handle array index: " << writeHandleArrayIndex);
295  // Update key name
296  readHandleKey = writeHandleKey.key();
297  auto readHandle = SG::makeHandle(readHandleKey, context);
298  if ( not readHandle.isValid() ) { // object missing, this is now an error as we should have literally just created it
299  ATH_MSG_ERROR("Collection is not present. " << readHandleKey.key() << " should have been created by createIfMissing.");
300  return StatusCode::FAILURE;
301  }
302 
303  ATH_MSG_DEBUG("Collection exists with size " << readHandle->size() << " Decision objects" );
304  ATH_MSG_DEBUG("Adding decorations: " << m_remapLinkColKeys.at( writeHandleArrayIndex ).key() << " and " << m_remapLinkColIndices.at( writeHandleArrayIndex ).key() );
305 
307  keyDecor(m_remapLinkColKeys.at( writeHandleArrayIndex ), context );
309  indexDecor( m_remapLinkColIndices.at( writeHandleArrayIndex ), context );
310 
311  // Examine each input TC
312  int decisionObjectIndex = -1;
313  for ( auto inputDecision : *( readHandle.cptr() ) ) {
314  ++decisionObjectIndex;
315 
316  // Retrieve the link information for remapping
317  std::vector< SG::sgkey_t > remappedKeys = inputDecision->linkColKeys(); // Vec copy
318  std::vector< xAOD::TrigComposite::index_type > remappedIndexes = inputDecision->linkColIndices(); // Vec copy
319 
320  // Search the linked collections for remapping
321  size_t const collectionTotal = inputDecision->linkColNames().size();
322  ATH_MSG_DEBUG(" Decision object #" << decisionObjectIndex << " has " << collectionTotal << " links");
323  for ( size_t elementLinkIndex = 0; elementLinkIndex < collectionTotal; ++elementLinkIndex ) {
324 
325  // Load ElementLink identifiers (except for CLID)
326  std::string const collectionName = inputDecision->linkColNames().at(elementLinkIndex);
327  SG::sgkey_t const collectionKey = remappedKeys.at(elementLinkIndex); //Note: This is the existing before-remap key
328  std::string const keyString = *( evtStore()->keyToString( collectionKey ) );
329  xAOD::TrigComposite::index_type const collectionIndex = remappedIndexes.at(elementLinkIndex); //Note: This is the existing before-remap index
330 
331  // Check for remapping in a merge
332  SG::sgkey_t newKey = 0;
333  size_t newIndex = 0;
334  bool isRemapped = evtStore()->tryELRemap( collectionKey, collectionIndex, newKey, newIndex);
335  if ( isRemapped ) {
336 
337  ATH_MSG_DEBUG( " Remap link [" << collectionName <<"] from " << keyString << " to " << *( evtStore()->keyToString( newKey ) ) << ", from index " << collectionIndex << " to index " << newIndex );
338  remappedKeys[ elementLinkIndex ] = newKey;
339  remappedIndexes[ elementLinkIndex ] = newIndex;
340 
341  } else {
342 
343  ATH_MSG_DEBUG( " StoreGate did not remap link [" << collectionName << "] from " << keyString << " index " << collectionIndex );
344 
345  }
346 
347  }
348 
349  // Save the remaps
350  keyDecor( *inputDecision ) = remappedKeys;
351  indexDecor( *inputDecision ) = remappedIndexes;
352 
353  }
354  }
355 
356  return StatusCode::SUCCESS;
357 }
358 
359 
360 template<typename T, typename STORE, typename G, typename M>
361 StatusCode HLTEDMCreator::createIfMissing( const EventContext& context, const ConstHandlesGroup<T>& handles, G& generator, M merger ) const {
362 
363  // Declare a ReadHandleKey that we can re-use during the loop for reading.
364  SG::ReadHandleKey<T> rhk("temp");
365 
366  // Same for the Aux store. If there is none (void) this would not compile
367  // so we just define a dummy RHK, which will never be used, of type T again.
368  using AuxType = std::conditional_t<std::is_void_v<STORE>, T, STORE>;
369  SG::ReadHandleKey<AuxType> rhkAux("temp");
370 
371  ATH_CHECK( rhk.initialize() && rhkAux.initialize() );
372 
373  for (size_t i = 0; i < handles.out.size(); ++i) {
374  const SG::WriteHandleKey<T>& whk = handles.out.at(i);
375  rhk = whk.key(); // set the RHK to the same key as the WHK
376 
377  if ( handles.views.empty() ) { // no merging will be needed
378  // Note: This is correct. We are testing if we can read, and if we cannot then we write.
379  // What we write will either be a dummy (empty) container, or be populated from N in-View collections.
380  auto readHandle = SG::makeHandle( rhk, context );
381  if ( readHandle.isValid() ) {
382  ATH_MSG_VERBOSE( rhk.key() << " is already present" );
383  generator.create(false, false);
384 
385  // For xAOD types we need to ensure there is an Aux store. This can happen if the
386  // Aux store gets truncated for collections marked with "allowTruncation".
387  // The TriggerEDMDeserialiserAlg will already have created a DataLink to the Aux store
388  // for the interface container. Now we just need to create an empty Aux store.
389  if constexpr (!std::is_void_v<STORE>) {
390  rhkAux = rhk.key() + "Aux.";
391  auto readAuxHandle = SG::makeHandle(rhkAux, context);
392  if ( !readAuxHandle.isValid() ) {
393  // This is rare so we just create a WH as needed:
394  SG::WriteHandle<STORE> writeAuxHandle( rhkAux.key(), context );
395  ATH_MSG_DEBUG("Creating missing Aux store for " << rhk.key());
396  ATH_CHECK( writeAuxHandle.record(std::make_unique<STORE>()) );
397  }
398  }
399  } else {
400  ATH_MSG_DEBUG( rhk.key() << " is missing, creating it" );
401  generator.create(true, true);
402  }
403 
404  } else {
405  // there are views, we assume that in the main store collection of given type#name is absent, else it will not work anyways
406  // simplest case, only one set of views is handled first
407  // below is handled the cases when the configuration of output keys is for example: A A B C C C D D E
408  // which means the first two collections come from first two views and because the names are the same they should end up in the same output collection
409  // thefore generators need to instructed to:
410  // - create new collection when a new name is handled (or for the first key)
411  // - and record when it is last identical name in the row (or it is last handled collection)
412  if ( handles.out.size() == 1 ) {
413  generator.create(true, true);
414  } else {
415  const bool doCreate = i == 0 or handles.out.at(i-1).key() != whk.key();
416  const bool doRecord = i == handles.out.size()-1 or handles.out.at(i+1).key() != whk.key();
417  ATH_MSG_DEBUG( "Instructing generator " << (doCreate ? "to" : "NOT TO") << " create collection and " << (doRecord ? "to" : "NOT TO") << " record collection in this iteration");
418  generator.create(doCreate, doRecord);
419  }
420 
421  const SG::ReadHandleKey<ViewContainer>& viewsReadHandleKey = handles.views.at(i);
422  ATH_MSG_DEBUG("Will be trying to merge from the " << viewsReadHandleKey.key() << " view container into that output");
423 
424  auto viewsHandle = SG::makeHandle( viewsReadHandleKey, context );
425  if ( viewsHandle.isValid() ) {
426  const SG::ReadHandleKey<T>& inViewReadHandleKey = handles.in.at(i);
427  ATH_MSG_DEBUG("Will be merging from " << viewsHandle->size() << " views using in-view key " << inViewReadHandleKey.key() );
428  ATH_CHECK( (this->*merger)( *viewsHandle, inViewReadHandleKey , context, *generator.data.get() ) );
429  } else {
430  ATH_MSG_DEBUG("Views " << viewsReadHandleKey.key() << " are missing. Will leave " << whk.key() << " output collection empty.");
431  }
432 
433  // Also consider probe variants of each EventView.
434  // Not every container will have a corresponding set of (typically) lower-pT probe ROIs, but it's safer to always test.
435  const std::string viewsReadHandleKeyProbe = viewsReadHandleKey.key() + "_probe";
436  ATH_MSG_VERBOSE("Will try to merge from the " << viewsReadHandleKeyProbe << " view container into that output");
437 
438  // Falling back to direct SG access here to avoid uninitiated key errors. This is safe to do in the context of the Trigger ControlFlow.
439  // I.e. if this collection is to exist in this event, then it is guaranteed to have been produced prior to this alg executing.
440  const ViewContainer* viewsContainer_probe = nullptr;
441  if (evtStore()->contains<ViewContainer>(viewsReadHandleKeyProbe)) {
442  ATH_CHECK(evtStore()->retrieve(viewsContainer_probe, viewsReadHandleKeyProbe));
443  }
444  if ( viewsContainer_probe ) {
445  const SG::ReadHandleKey<T>& inViewReadHandleKey = handles.in.at(i);
446  ATH_MSG_DEBUG("Will be merging from " << viewsContainer_probe->size() << " probe views using in-view key " << inViewReadHandleKey.key() );
447  ATH_CHECK( (this->*merger)( *viewsContainer_probe, inViewReadHandleKey , context, *generator.data.get() ) );
448  } else {
449  ATH_MSG_VERBOSE("Probe views " << viewsReadHandleKeyProbe << " are missing.");
450  }
451 
452  }
453 
454  auto writeHandle = SG::makeHandle( whk, context );
455  ATH_CHECK( generator.record( writeHandle ) );
456  }
457 
458  return StatusCode::SUCCESS;
459 }
460 
461 
462 
463 StatusCode HLTEDMCreator::createOutput(const EventContext& context) const {
464  ATH_MSG_DEBUG("Confirming / Creating this tool's output");
465  if ( m_dumpSGBefore )
466  ATH_MSG_DEBUG( evtStore()->dump() );
467 
468 #define CREATE(__TYPE) \
469  { \
470  plainGenerator<__TYPE> generator; \
471  ATH_CHECK( (createIfMissing<__TYPE, void>( context, ConstHandlesGroup<__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ), generator, &HLTEDMCreator::noMerge<__TYPE>)) ); \
472  }
473 
475 
476 #undef CREATE
477 
478 #define CREATE_XAOD(__TYPE, __STORE_TYPE) \
479  { \
480  xAODGenerator<xAOD::__TYPE, xAOD::__STORE_TYPE> generator; \
481  ATH_CHECK( (createIfMissing<xAOD::__TYPE, xAOD::__STORE_TYPE>( context, ConstHandlesGroup<xAOD::__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ), generator, &HLTEDMCreator::viewsMerge<xAOD::__TYPE>)) ); \
482  }
483 
484 
495 
503  CREATE_XAOD( CaloClusterContainer, CaloClusterTrigAuxContainer ); // NOTE: Difference in interface and aux
517 
518  // Phase-I L1 RoIs EDM
530 
531  // After view collections are merged, need to update collection links
532  ATH_CHECK( fixLinks(context) );
533 
534 #undef CREATE_XAOD
535 
536  // special cases
537  #define CREATE_SHALLOW(__TYPE) \
538  { \
539  for ( size_t index = 0; index < m_##__TYPE##ShallowCopy.size(); ++index ){ \
540  auto readHandle = SG::makeHandle<xAOD::__TYPE> ( m_##__TYPE##ShallowCopy[index], context ); \
541  if ( not readHandle.isValid() ) { \
542  ATH_MSG_DEBUG( "Creating missing "#__TYPE"ShallowCopy " << m_##__TYPE##ShallowCopy[index].key() ); \
543  auto writeHandle = SG::makeHandle( m_##__TYPE##ShallowCopyOut[index], context ); \
544  ATH_CHECK( writeHandle.record( std::make_unique<xAOD::__TYPE>(), std::make_unique<xAOD::ShallowAuxContainer>() )); \
545  } else { \
546  ATH_MSG_DEBUG( #__TYPE"ShallowCopy " << m_##__TYPE##ShallowCopyOut[index].key() << " present in the event, done nothing"); \
547  } \
548  } \
549  }
550 
553 
554  #undef CREATE_SHALLOW
555 
556  if ( m_dumpSGAfter )
557  ATH_MSG_DEBUG( evtStore()->dump() );
558 
559  ATH_MSG_DEBUG("Done");
560  return StatusCode::SUCCESS;
561 }
HLTEDMCreator::m_fixLinks
Gaudi::Property< std::vector< std::string > > m_fixLinks
Definition: HLTEDMCreator.h:100
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::AFPToFTrackContainer
AFPToFTrackContainer_v1 AFPToFTrackContainer
Definition: AFPToFTrackContainer.h:12
L2CombinedMuonAuxContainer.h
xAOD::AFPProtonContainer
AFPProtonContainer_v1 AFPProtonContainer
Definition: AFPProtonContainer.h:11
HLTEDMCreator::m_dumpSGBefore
Gaudi::Property< bool > m_dumpSGBefore
Definition: HLTEDMCreator.h:104
xAODGenerator::doRecord
bool doRecord
Definition: HLTEDMCreator.cxx:228
HLTEDMCreator::m_remapLinkColKeys
SG::WriteDecorHandleKeyArray< xAOD::TrigCompositeContainer, std::vector< SG::sgkey_t > > m_remapLinkColKeys
Definition: HLTEDMCreator.h:101
HLTEDMCreator::HandlesGroup::views
SG::ReadHandleKeyArray< ViewContainer > & views
Definition: HLTEDMCreator.h:194
xAOD::TrigElectronAuxContainer
TrigElectronAuxContainer_v1 TrigElectronAuxContainer
Declare the latest version of the auxiliary container.
Definition: TrigElectronAuxContainer.h:16
xAODGenerator::data
std::unique_ptr< T > data
Definition: HLTEDMCreator.cxx:226
xAOD::AFPVertexContainer
AFPVertexContainer_v1 AFPVertexContainer
Definition: AFPVertexContainer.h:12
AFPVertexAuxContainer.h
INIT
#define INIT(__TYPE)
xAOD::BTaggingAuxContainer
BTaggingAuxContainer_v2 BTaggingAuxContainer
Definition of the current BTagging auxiliary container.
Definition: BTaggingAuxContainer.h:22
CaloClusterTrigAuxContainer.h
xAOD::jFexTauRoIContainer
jFexTauRoIContainer_v1 jFexTauRoIContainer
Definition: jFexTauRoIContainer.h:13
xAOD::jFexSumETRoIContainer
jFexSumETRoIContainer_v1 jFexSumETRoIContainer
Definition: jFexSumETRoIContainer.h:13
plainGenerator::data
std::unique_ptr< T > data
Definition: HLTEDMCreator.cxx:209
xAOD::HIEventShapeAuxContainer
HIEventShapeAuxContainer_v2 HIEventShapeAuxContainer
Define the latest version of the auxiliary container.
Definition: HIEventShapeAuxContainer.h:16
xAOD::TauTrackContainer
TauTrackContainer_v1 TauTrackContainer
Definition of the current TauTrack container version.
Definition: TauTrackContainer.h:16
xAOD::MuonContainer
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
Definition: Event/xAOD/xAODMuon/xAODMuon/MuonContainer.h:14
xAOD::JetAuxContainer
JetAuxContainer_v1 JetAuxContainer
Definition of the current jet auxiliary container.
Definition: JetAuxContainer.h:22
AthCUDAExamples::TrackParticleContainer
vecmem::edm::container< TrackParticleInterface, vecmem::edm::type::vector< float >, vecmem::edm::type::vector< float >, vecmem::edm::type::vector< float > > TrackParticleContainer
SoA, GPU friendly TrackParticleContainer.
Definition: Control/AthenaExamples/AthExCUDA/src/TrackParticleContainer.h:46
xAOD::BTagVertexContainer
BTagVertexContainer_v1 BTagVertexContainer
Definition of the current "BTagging container version".
Definition: BTagVertexContainer.h:17
xAOD::TauJetAuxContainer
TauJetAuxContainer_v3 TauJetAuxContainer
Definition of the current taujet auxiliary container.
Definition: TauJetAuxContainer.h:22
xAODGenerator::store
std::unique_ptr< STORE > store
Definition: HLTEDMCreator.cxx:227
xAOD::jFexSRJetRoIContainer
jFexSRJetRoIContainer_v1 jFexSRJetRoIContainer
Definition: jFexSRJetRoIContainer.h:13
jFexSumETRoIAuxContainer.h
MuonRoIAuxContainer.h
CaloClusterContainer
Storable container for CaloCluster.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloClusterContainer.h:37
CREATE_XAOD
#define CREATE_XAOD(__TYPE, __STORE_TYPE)
xAOD::jFexMETRoIContainer
jFexMETRoIContainer_v1 jFexMETRoIContainer
Definition: jFexMETRoIContainer.h:13
xAOD::jFexLRJetRoIContainer
jFexLRJetRoIContainer_v1 jFexLRJetRoIContainer
Definition: jFexLRJetRoIContainer.h:13
plainGenerator
Definition: HLTEDMCreator.cxx:208
xAOD::TrackParticleAuxContainer
TrackParticleAuxContainer_v5 TrackParticleAuxContainer
Definition of the current TrackParticle auxiliary container.
Definition: TrackParticleAuxContainer.h:19
eFexEMRoIAuxContainer.h
TauTrackAuxContainer.h
HLTEDMCreator::fixLinks
StatusCode fixLinks(EventContext const &context) const
Definition: HLTEDMCreator.cxx:268
xAOD::jFexFwdElRoIContainer
jFexFwdElRoIContainer_v1 jFexFwdElRoIContainer
Definition: jFexFwdElRoIContainer.h:13
HLTEDMCreator::HandlesGroup
Definition: HLTEDMCreator.h:186
xAOD::gFexJetRoIContainer
gFexJetRoIContainer_v1 gFexJetRoIContainer
Definition: gFexJetRoIContainer.h:15
TrigMissingETContainer
Definition: Trigger/TrigEvent/TrigMissingEtEvent/TrigMissingEtEvent/TrigMissingETContainer.h:12
xAOD::eFexTauRoIContainer
eFexTauRoIContainer_v1 eFexTauRoIContainer
Definition: eFexTauRoIContainer.h:15
xAOD::PhotonAuxContainer
PhotonAuxContainer_v3 PhotonAuxContainer
Definition of the current photon auxiliary container.
Definition: PhotonAuxContainer.h:22
xAOD::TrigEMClusterAuxContainer
TrigEMClusterAuxContainer_v2 TrigEMClusterAuxContainer
Define the latest version of the trigger EM cluster auxiliary container.
Definition: TrigEMClusterAuxContainer.h:16
xAOD::eFexEMRoIAuxContainer
eFexEMRoIAuxContainer_v1 eFexEMRoIAuxContainer
Definition: eFexEMRoIAuxContainer.h:15
xAOD::jFexSumETRoIAuxContainer
jFexSumETRoIAuxContainer_v1 jFexSumETRoIAuxContainer
Definition: jFexSumETRoIAuxContainer.h:12
jFexLRJetRoIAuxContainer.h
xAOD::MuonRoIAuxContainer
MuonRoIAuxContainer_v1 MuonRoIAuxContainer
Definition: MuonRoIAuxContainer.h:15
HLTEDMCreator::createOutput
virtual StatusCode createOutput(const EventContext &context) const override
Definition: HLTEDMCreator.cxx:463
xAOD::TrigCompositeAuxContainer
TrigCompositeAuxContainer_v2 TrigCompositeAuxContainer
Declare the latest version of the container.
Definition: TrigCompositeAuxContainer.h:16
HLTEDMCreator::m_remapLinkColIndices
SG::WriteDecorHandleKeyArray< xAOD::TrigCompositeContainer, std::vector< xAOD::TrigComposite::index_type > > m_remapLinkColIndices
Definition: HLTEDMCreator.h:102
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
ShallowAuxContainer.h
xAOD::TrigRingerRingsContainer
TrigRingerRingsContainer_v2 TrigRingerRingsContainer
Define the latest version of the TrigRingerRingsContainer class.
Definition: TrigRingerRingsContainer.h:16
TrigEMClusterContainer
Container from TrigEMCluster type objects.
Definition: Trigger/TrigEvent/TrigCaloEvent/TrigCaloEvent/TrigEMClusterContainer.h:32
HLTEDMCreator::HandlesGroup::out
SG::WriteHandleKeyArray< T > & out
Definition: HLTEDMCreator.h:192
xAOD::AFPTrackAuxContainer
AFPTrackAuxContainer_v2 AFPTrackAuxContainer
Definition: AFPTrackAuxContainer.h:12
DiTauJetAuxContainer.h
TrigBphysAuxContainer.h
TrigCaloClusterAuxContainer.h
xAOD::VertexContainer
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Definition: VertexContainer.h:14
ViewHelper.h
xAOD::L2StandAloneMuonAuxContainer
L2StandAloneMuonAuxContainer_v2 L2StandAloneMuonAuxContainer
Define the latest version of the muon SA auxiliary container.
Definition: L2StandAloneMuonAuxContainer.h:16
xAOD::TrigT2MbtsBitsAuxContainer
TrigT2MbtsBitsAuxContainer_v1 TrigT2MbtsBitsAuxContainer
Definition: TrigT2MbtsBitsAuxContainer.h:11
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
jFexTauRoIAuxContainer.h
PhotonContainer
Definition: Reconstruction/egamma/egammaEvent/egammaEvent/PhotonContainer.h:30
TauJetAuxContainer.h
gFexJetRoIAuxContainer.h
xAOD::jFexSRJetRoIAuxContainer
jFexSRJetRoIAuxContainer_v1 jFexSRJetRoIAuxContainer
Definition: jFexSRJetRoIAuxContainer.h:12
xAOD::TrigRingerRingsAuxContainer
TrigRingerRingsAuxContainer_v2 TrigRingerRingsAuxContainer
Define the latest version of the TrigRingerRings class.
Definition: TrigRingerRingsAuxContainer.h:17
xAOD::TrigPhotonAuxContainer
TrigPhotonAuxContainer_v1 TrigPhotonAuxContainer
Declare the latest version of the photon auxiliary container.
Definition: TrigPhotonAuxContainer.h:16
run_Egamma1_LArStrip_Fex.dump
dump
Definition: run_Egamma1_LArStrip_Fex.py:87
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:274
MuonAuxContainer.h
TrigT2MbtsBitsAuxContainer.h
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:120
xAOD::TauTrackAuxContainer
TauTrackAuxContainer_v1 TauTrackAuxContainer
Definition: TauTrackAuxContainer.h:14
TrigT2MbtsBitsContainer
Definition: Trigger/TrigEvent/TrigCaloEvent/TrigCaloEvent/TrigT2MbtsBitsContainer.h:13
TrigCompositeContainer
Container from TrigComposite type objects.
Definition: Trigger/TrigEvent/TrigCombinedEvent/TrigCombinedEvent/TrigCompositeContainer.h:25
xAOD::DiTauJetAuxContainer
DiTauJetAuxContainer_v1 DiTauJetAuxContainer
Definition: DiTauJetAuxContainer.h:15
BTaggingAuxContainer.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xAOD::AFPSiHitsClusterAuxContainer
AFPSiHitsClusterAuxContainer_v1 AFPSiHitsClusterAuxContainer
Definition: AFPSiHitsClusterAuxContainer.h:12
TrigRingerRingsAuxContainer.h
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
HLTEDMCreator::m_dumpSGAfter
Gaudi::Property< bool > m_dumpSGAfter
Definition: HLTEDMCreator.h:105
TrackParticleAuxContainer.h
xAOD::BTaggingContainer
BTaggingContainer_v1 BTaggingContainer
Definition of the current "BTagging container version".
Definition: BTaggingContainer.h:17
TrigEMClusterAuxContainer.h
xAOD::VertexAuxContainer
VertexAuxContainer_v1 VertexAuxContainer
Definition of the current jet auxiliary container.
Definition: VertexAuxContainer.h:19
TrigRNNOutputContainer
Definition: Trigger/TrigEvent/TrigCaloEvent/TrigCaloEvent/TrigRNNOutputContainer.h:13
lumiFormat.i
int i
Definition: lumiFormat.py:85
ElectronAuxContainer.h
HLTEDMCreator::initHandles
StatusCode initHandles(const HandlesGroup< T > &handles)
Init related handles.
Definition: HLTEDMCreator.cxx:73
G
#define G(x, y, z)
Definition: MD5.cxx:113
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::AFPVertexAuxContainer
AFPVertexAuxContainer_v1 AFPVertexAuxContainer
Definition: AFPVertexAuxContainer.h:12
xAOD::L2StandAloneMuonContainer
L2StandAloneMuonContainer_v2 L2StandAloneMuonContainer
Define the latest version of the muon SA container.
Definition: L2StandAloneMuonContainer.h:17
CREATE_SHALLOW
#define CREATE_SHALLOW(__TYPE)
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
xAOD::jFexTauRoIAuxContainer
jFexTauRoIAuxContainer_v1 jFexTauRoIAuxContainer
Definition: jFexTauRoIAuxContainer.h:12
WriteDecorHandle.h
Handle class for adding a decoration to an object.
xAOD::BTagVertexAuxContainer
BTagVertexAuxContainer_v1 BTagVertexAuxContainer
Definition of the current BTagging auxiliary container.
Definition: BTagVertexAuxContainer.h:22
test_pyathena.parent
parent
Definition: test_pyathena.py:15
HLTEDMCreator::ConstHandlesGroup::views
const SG::ReadHandleKeyArray< ViewContainer > & views
Definition: HLTEDMCreator.h:225
xAOD::jFexLRJetRoIAuxContainer
jFexLRJetRoIAuxContainer_v1 jFexLRJetRoIAuxContainer
Definition: jFexLRJetRoIAuxContainer.h:12
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TrigPhotonAuxContainer.h
xAOD::TrigMissingETAuxContainer
TrigMissingETAuxContainer_v1 TrigMissingETAuxContainer
Define the most recent version of the AuxContainer for the TrigMissingET object(s).
Definition: TrigMissingETAuxContainer.h:12
xAOD::L2IsoMuonAuxContainer
L2IsoMuonAuxContainer_v1 L2IsoMuonAuxContainer
Define the latest version of the muon Iso auxiliary container.
Definition: L2IsoMuonAuxContainer.h:14
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
jFexMETRoIAuxContainer.h
TrigCompositeAuxContainer.h
HLTEDMCreator::viewsMerge
StatusCode viewsMerge(ViewContainer const &views, const SG::ReadHandleKey< T > &inViewKey, EventContext const &context, T &output) const
Definition: HLTEDMCreator.cxx:255
xAOD::ElectronAuxContainer
ElectronAuxContainer_v3 ElectronAuxContainer
Definition of the current electron auxiliary container.
Definition: ElectronAuxContainer.h:22
HLTEDMCreator.h
xAODGenerator
Definition: HLTEDMCreator.cxx:225
merge.output
output
Definition: merge.py:16
HLTEDMCreator::ConstHandlesGroup
Definition: HLTEDMCreator.h:217
xAOD::jFexMETRoIAuxContainer
jFexMETRoIAuxContainer_v1 jFexMETRoIAuxContainer
Definition: jFexMETRoIAuxContainer.h:12
xAOD::TrigBphysAuxContainer
TrigBphysAuxContainer_v1 TrigBphysAuxContainer
Definition: TrigBphysAuxContainer.h:12
xAODGenerator::create
void create(bool create, bool record)
Definition: HLTEDMCreator.cxx:230
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
xAOD::gFexGlobalRoIContainer
gFexGlobalRoIContainer_v1 gFexGlobalRoIContainer
Definition: gFexGlobalRoIContainer.h:15
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ViewContainer::size
size_t size() const
Definition: View.h:175
xAOD::TauJetContainer
TauJetContainer_v3 TauJetContainer
Definition of the current "taujet container version".
Definition: Event/xAOD/xAODTau/xAODTau/TauJetContainer.h:17
xAOD::eFexTauRoIAuxContainer
eFexTauRoIAuxContainer_v1 eFexTauRoIAuxContainer
Definition: eFexTauRoIAuxContainer.h:14
xAOD::TrigComposite_v1::index_type
uint32_t index_type
Definition: TrigComposite_v1.h:56
checkTriggerxAOD.found
found
Definition: checkTriggerxAOD.py:328
ViewHelper::ViewMerger::mergeViewCollection
StatusCode mergeViewCollection(ViewContainer const &viewVector, SG::ReadHandleKey< T > const &queryKey, EventContext const &sourceContext, T &outputData)
Definition: ViewHelper.h:144
INIT_XAOD
#define INIT_XAOD(__TYPE, __STORE_TYPE)
SG::sgkey_t
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
Definition: CxxUtils/CxxUtils/sgkey_t.h:32
HLTEDMCreator::ConstHandlesGroup::out
const SG::WriteHandleKeyArray< T > & out
Definition: HLTEDMCreator.h:223
xAOD::TrigBphysContainer
TrigBphysContainer_v1 TrigBphysContainer
Definition: TrigBphysContainer.h:12
xAOD::DiTauJetContainer
DiTauJetContainer_v1 DiTauJetContainer
Definition of the current DiTauJet container version.
Definition: DiTauJetContainer.h:17
SG::VarHandleKey
A property holding a SG store/key/clid from which a VarHandle is made.
Definition: StoreGate/StoreGate/VarHandleKey.h:62
xAOD::TrigCaloClusterAuxContainer
TrigCaloClusterAuxContainer_v1 TrigCaloClusterAuxContainer
Define the latest version of the trigger calorimeter cluster auxiliary container.
Definition: TrigCaloClusterAuxContainer.h:16
TrigPhotonContainer
File: TrigPhotonContainer.h.
Definition: Trigger/TrigEvent/TrigParticle/TrigParticle/TrigPhotonContainer.h:32
xAODGenerator::record
StatusCode record(SG::WriteHandle< T > &h)
Definition: HLTEDMCreator.cxx:239
jFexFwdElRoIAuxContainer.h
INIT_SHALLOW
#define INIT_SHALLOW(__TYPE)
TrigRNNOutputAuxContainer.h
HLTEDMCreator::initAuxKey
StatusCode initAuxKey(const std::vector< SG::VarHandleKey * > &keys)
Register AuxStore keys for the given keys.
Definition: HLTEDMCreator.cxx:93
xAOD::jFexFwdElRoIAuxContainer
jFexFwdElRoIAuxContainer_v1 jFexFwdElRoIAuxContainer
Definition: jFexFwdElRoIAuxContainer.h:12
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
plainGenerator::doRecord
bool doRecord
Definition: HLTEDMCreator.cxx:210
AFPSiHitsClusterAuxContainer.h
mc.generator
generator
Configure Herwig7 These are the commands corresponding to what would go into the regular Herwig infil...
Definition: mc.MGH7_FxFx_H71-DEFAULT_test.py:18
PhotonAuxContainer.h
h
xAOD::L2CombinedMuonContainer
L2CombinedMuonContainer_v1 L2CombinedMuonContainer
Define the latest version of the muon CB container.
Definition: L2CombinedMuonContainer.h:15
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
TriggerEDMAuxAccessors.h
xAOD::CaloClusterTrigAuxContainer
CaloClusterTrigAuxContainer_v1 CaloClusterTrigAuxContainer
Define the latest version of the calorimeter cluster auxiliary container.
Definition: CaloClusterTrigAuxContainer.h:16
HLTEDMCreator::HLTEDMCreator
HLTEDMCreator()
HLTEDMCreator::createIfMissing
StatusCode createIfMissing(const EventContext &context, const ConstHandlesGroup< T > &handles, G &generator, M merger) const
Definition: HLTEDMCreator.cxx:361
TrigRoiDescriptorCollection
Definition: TrigRoiDescriptorCollection.h:21
plainGenerator::record
StatusCode record(SG::WriteHandle< T > &h)
Definition: HLTEDMCreator.cxx:217
eFexTauRoIAuxContainer.h
TrigMissingETAuxContainer.h
ElectronContainer
Definition: Reconstruction/egamma/egammaEvent/egammaEvent/ElectronContainer.h:32
HLTEDMCreator::m_renounceOutputs
Gaudi::Property< bool > m_renounceOutputs
Definition: HLTEDMCreator.h:106
JetAuxContainer.h
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
AFPProtonAuxContainer.h
HIEventShapeAuxContainer.h
plainGenerator::create
void create(bool create, bool record)
Definition: HLTEDMCreator.cxx:211
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
ViewHelper::ViewMerger
Definition: ViewHelper.h:135
xAOD::JetContainer
JetContainer_v1 JetContainer
Definition of the current "jet container version".
Definition: JetContainer.h:17
TrigElectronAuxContainer.h
xAOD::HIEventShapeContainer
HIEventShapeContainer_v2 HIEventShapeContainer
Define the latest version of the container.
Definition: HIEventShapeContainer.h:17
HLTEDMCreator::initialize
virtual StatusCode initialize() override
Definition: HLTEDMCreator.cxx:103
HLTEDMCreator::ConstHandlesGroup::in
const SG::ReadHandleKeyArray< T > & in
Definition: HLTEDMCreator.h:224
TrigElectronContainer
File: TrigElectronContainer.h.
Definition: Trigger/TrigEvent/TrigParticle/TrigParticle/TrigElectronContainer.h:32
xAOD::TrigRNNOutputAuxContainer
TrigRNNOutputAuxContainer_v2 TrigRNNOutputAuxContainer
Define the latest version of the RingerRings class.
Definition: TrigRNNOutputAuxContainer.h:17
xAOD::MuonAuxContainer
MuonAuxContainer_v5 MuonAuxContainer
Definition of the current Muon auxiliary container.
Definition: MuonAuxContainer.h:19
CREATE
#define CREATE(__TYPE)
xAOD::AFPTrackContainer
AFPTrackContainer_v2 AFPTrackContainer
Definition: AFPTrackContainer.h:12
xAOD::L2CombinedMuonAuxContainer
L2CombinedMuonAuxContainer_v1 L2CombinedMuonAuxContainer
Define the latest version of the muon CB auxiliary container.
Definition: L2CombinedMuonAuxContainer.h:14
gFexGlobalRoIAuxContainer.h
BTagVertexAuxContainer.h
xAOD::MuonRoIContainer
MuonRoIContainer_v1 MuonRoIContainer
Definition: MuonRoIContainer.h:16
jFexSRJetRoIAuxContainer.h
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
xAOD::gFexGlobalRoIAuxContainer
gFexGlobalRoIAuxContainer_v1 gFexGlobalRoIAuxContainer
Definition: gFexGlobalRoIAuxContainer.h:14
xAOD::AFPProtonAuxContainer
AFPProtonAuxContainer_v1 AFPProtonAuxContainer
Definition: AFPProtonAuxContainer.h:11
TrigCaloClusterContainer
Container from TrigCaloCluster type objects.
Definition: Trigger/TrigEvent/TrigCaloEvent/TrigCaloEvent/TrigCaloClusterContainer.h:29
L2IsoMuonAuxContainer.h
xAOD::gFexJetRoIAuxContainer
gFexJetRoIAuxContainer_v1 gFexJetRoIAuxContainer
Definition: gFexJetRoIAuxContainer.h:14
xAOD::AFPToFTrackAuxContainer
AFPToFTrackAuxContainer_v1 AFPToFTrackAuxContainer
Definition: AFPToFTrackAuxContainer.h:12
xAOD::AFPSiHitsClusterContainer
AFPSiHitsClusterContainer_v1 AFPSiHitsClusterContainer
Definition: AFPSiHitsClusterContainer.h:12
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
HLTEDMCreator::noMerge
StatusCode noMerge(ViewContainer const &views, const SG::ReadHandleKey< T > &inViewKey, EventContext const &context, T &output) const
Definition: HLTEDMCreator.cxx:247
xAOD::eFexEMRoIContainer
eFexEMRoIContainer_v1 eFexEMRoIContainer
Definition: eFexEMRoIContainer.h:16
VertexAuxContainer.h
fitman.k
k
Definition: fitman.py:528
L2StandAloneMuonAuxContainer.h
HLTEDMCreator::HandlesGroup::in
SG::ReadHandleKeyArray< T > & in
Definition: HLTEDMCreator.h:193
AFPToFTrackAuxContainer.h
xAOD::L2IsoMuonContainer
L2IsoMuonContainer_v1 L2IsoMuonContainer
Define the latest version of the muon Iso container.
Definition: L2IsoMuonContainer.h:15
ViewContainer
Definition: View.h:158
AFPTrackAuxContainer.h