Loading [MathJax]/jax/output/SVG/config.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 
37 
39 
41 
43 
45 
51 
63 
65 
66 HLTEDMCreator::HLTEDMCreator( const std::string& type,
67  const std::string& name,
68  const IInterface* parent )
69  : base_class( type, name, parent ) {}
70 
71 template<typename T>
73  ATH_CHECK( handles.out.initialize() );
74  if(m_renounceOutputs) { renounceArray( handles.out ); }
75  ATH_CHECK( handles.in.initialize() );
76  renounceArray( handles.in );
77  ATH_CHECK( handles.views.initialize() );
78  renounceArray( handles.views );
79 
80  // the case w/o reading from views, both views handles and collection in views should be empty
81  if ( handles.views.empty() ) {
82  ATH_CHECK( handles.in.empty() );
83  } else {
84  // the case with views, for every output we expect an input View and an input collection inside that View
85  ATH_CHECK( handles.out.size() == handles.in.size() );
86  ATH_CHECK( handles.in.size() == handles.views.size() );
87  }
88  return StatusCode::SUCCESS;
89 }
90 
91 template<typename T>
92 StatusCode HLTEDMCreator::initAuxKey( const std::vector<SG::VarHandleKey*>& keys ) {
93  // Register Aux keys for all handles to avoid hash collisions (ATR-26386).
94  for (const SG::VarHandleKey* k : keys) {
95  SG::WriteHandleKey<T> auxkey(k->key()+"Aux.");
96  ATH_CHECK( auxkey.initialize() );
97  }
98  return StatusCode::SUCCESS;
99 }
100 
101 
103 {
104  if ( m_fixLinks.size() > 0 ) {
105  // Confirm that m_fixLinks is a sub-set of m_TrigCompositeContainer
106  for (const std::string& entry : m_fixLinks) {
107  const bool found = std::any_of(m_TrigCompositeContainer.begin(),
108  m_TrigCompositeContainer.end(), [&](const auto& writeHandleKey) { return writeHandleKey.key() == entry; } );
109  if (!found) {
110  ATH_MSG_ERROR("FixLinks contains the entry " << entry << ", however this is not one of this EDMCreator tool's managed TrigCompositeContainers.");
111  ATH_MSG_ERROR("Configure FixLinks to be a sub-set of TrigCompositeContainer");
112  return StatusCode::FAILURE;
113  }
114  }
115  // Set up the write decorate handles to hold the remapped data
116  for ( const auto& writeHandleKey: m_TrigCompositeContainer ) {
117  const bool doFixLinks = std::any_of(m_fixLinks.begin(), m_fixLinks.end(), [&](const std::string& s) { return s == writeHandleKey.key(); } );
118  if (doFixLinks) {
119  // This writeHandleKey is being included in the element link remapping
120  m_remapLinkColKeys.emplace_back( writeHandleKey.key()+".remap_linkColKeys" );
121  m_remapLinkColIndices.emplace_back( writeHandleKey.key()+".remap_linkColIndices" );
122  }
123  }
124  ATH_CHECK( m_remapLinkColKeys.initialize() ) ;
125  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
126  ATH_CHECK( m_remapLinkColIndices.initialize() );
127  renounceArray( m_remapLinkColIndices );
128  }
129 
130  // this section has to appear after the above initialisation of DecorHandles, else the renounce of TrigComposite does not work as expected
131 
132 #define INIT(__TYPE) \
133  ATH_CHECK( initHandles( HandlesGroup<__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ) ) );
134 
135 #define INIT_XAOD(__TYPE, __STORE_TYPE) \
136  ATH_CHECK( initHandles( HandlesGroup<xAOD::__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ) ) ); \
137  ATH_CHECK( initAuxKey<xAOD::__STORE_TYPE>( m_##__TYPE.keys() ) );
138 
141 
151 
163  INIT_XAOD( CaloClusterContainer, CaloClusterTrigAuxContainer ); // NOTE: Difference in interface and aux
172 
173  // Phase-I L1 RoIs EDM
185 
186 #undef INIT
187 #undef INIT_XAOD
188 
189 #define INIT_SHALLOW(__TYPE) \
190  ATH_CHECK( m_##__TYPE##ShallowCopy.initialize() ); \
191  renounceArray( m_##__TYPE##ShallowCopy ); \
192  for ( auto k: m_##__TYPE##ShallowCopy ) \
193  m_##__TYPE##ShallowCopyOut.push_back(k.key()); \
194  ATH_CHECK( m_##__TYPE##ShallowCopyOut.initialize() ); \
195  if(m_renounceOutputs) { renounceArray( m_##__TYPE##ShallowCopyOut ); }
196 
199 
200 #undef INIT_SHALLOW
201 
202  return StatusCode::SUCCESS;
203 }
204 
205 template<class T>
207  std::unique_ptr<T> data;
208  bool doRecord{true};
209  void create( bool create, bool record ) {
210  doRecord = record;
211  if ( create )
212  data = std::make_unique<T>();
213  }
214 
216  if ( doRecord )
217  return h.record( std::move( data ) );
218  return StatusCode::SUCCESS;
219  }
220 };
221 
222 template<class T, class STORE>
224  std::unique_ptr<T> data;
225  std::unique_ptr<STORE> store;
226  bool doRecord{true};
227 
228  void create( bool create, bool record ) {
229  doRecord = record;
230  if ( create ) {
231  data = std::make_unique<T>();
232  store = std::make_unique<STORE>();
233  data->setStore( store.get() );
234  }
235  }
236 
238  if ( doRecord )
239  return h.record( std::move( data ), std::move( store ) );
240  return StatusCode::SUCCESS;
241  }
242 };
243 
244 template<typename T>
246  EventContext const&, T & ) const {
247  // if we are called it means views merging is requested but Type T does not support it (i.e. missing copy c'tor)
248  return StatusCode::FAILURE;
249 
250 }
251 
252 template<typename T>
254  EventContext const& context, T & output ) const {
255 
256  using type_in_container = typename T::base_value_type;
257  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
258  ATH_CHECK( sg != nullptr );
259  ViewHelper::ViewMerger merger( sg, msg() );
260  ATH_CHECK( merger.mergeViewCollection<type_in_container>( views, inViewKey, context, output ) );
261 
262  return StatusCode::SUCCESS;
263 }
264 
265 
266 StatusCode HLTEDMCreator::fixLinks( EventContext const& context ) const {
267  if ( m_fixLinks.value().empty() ) {
268  ATH_MSG_DEBUG("fixLinks: No collections defined for this tool");
269  return StatusCode::SUCCESS;
270  }
271 
272  ATH_MSG_DEBUG("fixLinks called for " << m_fixLinks.size() << " of " << m_TrigCompositeContainer.size() << " collections");
273 
274  // Do the remapping
275  int writeHandleArrayIndex = -1;
276 
277  // Create a HandleKey that we can re-use during the loop (slightly better performance)
279  ATH_CHECK( readHandleKey.initialize() );
280 
281  for ( const auto& writeHandleKey: m_TrigCompositeContainer ) {
282  // Check if we are re-mapping this handle
283  const bool doFixLinks = std::any_of(m_fixLinks.begin(), m_fixLinks.end(), [&](const std::string& s) { return s == writeHandleKey.key(); } );
284  if ( not doFixLinks ) {
285  ATH_MSG_DEBUG("Not requested to fix TrigComposite ElementLinks for " << writeHandleKey.key());
286  continue;
287  }
288 
289  // Only increment this index for the sub-set of the TrigComposite collections that we are fixing. Mirror the initialize() logic.
290  ++writeHandleArrayIndex;
291 
292  ATH_MSG_DEBUG("Fixing links: confirm collection is there: " << writeHandleKey.key() << ", write handle array index: " << writeHandleArrayIndex);
293  // Update key name
294  readHandleKey = writeHandleKey.key();
295  auto readHandle = SG::makeHandle(readHandleKey, context);
296  if ( not readHandle.isValid() ) { // object missing, this is now an error as we should have literally just created it
297  ATH_MSG_ERROR("Collection is not present. " << readHandleKey.key() << " should have been created by createIfMissing.");
298  return StatusCode::FAILURE;
299  }
300 
301  ATH_MSG_DEBUG("Collection exists with size " << readHandle->size() << " Decision objects" );
302  ATH_MSG_DEBUG("Adding decorations: " << m_remapLinkColKeys.at( writeHandleArrayIndex ).key() << " and " << m_remapLinkColIndices.at( writeHandleArrayIndex ).key() );
303 
305  keyDecor(m_remapLinkColKeys.at( writeHandleArrayIndex ), context );
307  indexDecor( m_remapLinkColIndices.at( writeHandleArrayIndex ), context );
308 
309  // Examine each input TC
310  int decisionObjectIndex = -1;
311  for ( auto inputDecision : *( readHandle.cptr() ) ) {
312  ++decisionObjectIndex;
313 
314  // Retrieve the link information for remapping
315  std::vector< SG::sgkey_t > remappedKeys = inputDecision->linkColKeys(); // Vec copy
316  std::vector< xAOD::TrigComposite::index_type > remappedIndexes = inputDecision->linkColIndices(); // Vec copy
317 
318  // Search the linked collections for remapping
319  size_t const collectionTotal = inputDecision->linkColNames().size();
320  ATH_MSG_DEBUG(" Decision object #" << decisionObjectIndex << " has " << collectionTotal << " links");
321  for ( size_t elementLinkIndex = 0; elementLinkIndex < collectionTotal; ++elementLinkIndex ) {
322 
323  // Load ElementLink identifiers (except for CLID)
324  std::string const collectionName = inputDecision->linkColNames().at(elementLinkIndex);
325  SG::sgkey_t const collectionKey = remappedKeys.at(elementLinkIndex); //Note: This is the existing before-remap key
326  std::string const keyString = *( evtStore()->keyToString( collectionKey ) );
327  xAOD::TrigComposite::index_type const collectionIndex = remappedIndexes.at(elementLinkIndex); //Note: This is the existing before-remap index
328 
329  // Check for remapping in a merge
330  SG::sgkey_t newKey = 0;
331  size_t newIndex = 0;
332  bool isRemapped = evtStore()->tryELRemap( collectionKey, collectionIndex, newKey, newIndex);
333  if ( isRemapped ) {
334 
335  ATH_MSG_DEBUG( " Remap link [" << collectionName <<"] from " << keyString << " to " << *( evtStore()->keyToString( newKey ) ) << ", from index " << collectionIndex << " to index " << newIndex );
336  remappedKeys[ elementLinkIndex ] = newKey;
337  remappedIndexes[ elementLinkIndex ] = newIndex;
338 
339  } else {
340 
341  ATH_MSG_DEBUG( " StoreGate did not remap link [" << collectionName << "] from " << keyString << " index " << collectionIndex );
342 
343  }
344 
345  }
346 
347  // Save the remaps
348  keyDecor( *inputDecision ) = remappedKeys;
349  indexDecor( *inputDecision ) = remappedIndexes;
350 
351  }
352  }
353 
354  return StatusCode::SUCCESS;
355 }
356 
357 
358 template<typename T, typename STORE, typename G, typename M>
359 StatusCode HLTEDMCreator::createIfMissing( const EventContext& context, const ConstHandlesGroup<T>& handles, G& generator, M merger ) const {
360 
361  // Declare a ReadHandleKey that we can re-use during the loop for reading.
362  SG::ReadHandleKey<T> rhk("temp");
363 
364  // Same for the Aux store. If there is none (void) this would not compile
365  // so we just define a dummy RHK, which will never be used, of type T again.
366  using AuxType = std::conditional_t<std::is_void_v<STORE>, T, STORE>;
367  SG::ReadHandleKey<AuxType> rhkAux("temp");
368 
369  ATH_CHECK( rhk.initialize() && rhkAux.initialize() );
370 
371  for (size_t i = 0; i < handles.out.size(); ++i) {
372  const SG::WriteHandleKey<T>& whk = handles.out.at(i);
373  rhk = whk.key(); // set the RHK to the same key as the WHK
374 
375  if ( handles.views.empty() ) { // no merging will be needed
376  // Note: This is correct. We are testing if we can read, and if we cannot then we write.
377  // What we write will either be a dummy (empty) container, or be populated from N in-View collections.
378  auto readHandle = SG::makeHandle( rhk, context );
379  if ( readHandle.isValid() ) {
380  ATH_MSG_VERBOSE( rhk.key() << " is already present" );
381  generator.create(false, false);
382 
383  // For xAOD types we need to ensure there is an Aux store. This can happen if the
384  // Aux store gets truncated for collections marked with "allowTruncation".
385  // The TriggerEDMDeserialiserAlg will already have created a DataLink to the Aux store
386  // for the interface container. Now we just need to create an empty Aux store.
387  if constexpr (!std::is_void_v<STORE>) {
388  rhkAux = rhk.key() + "Aux.";
389  auto readAuxHandle = SG::makeHandle(rhkAux, context);
390  if ( !readAuxHandle.isValid() ) {
391  // This is rare so we just create a WH as needed:
392  SG::WriteHandle<STORE> writeAuxHandle( rhkAux.key(), context );
393  ATH_MSG_DEBUG("Creating missing Aux store for " << rhk.key());
394  ATH_CHECK( writeAuxHandle.record(std::make_unique<STORE>()) );
395  }
396  }
397  } else {
398  ATH_MSG_DEBUG( rhk.key() << " is missing, creating it" );
399  generator.create(true, true);
400  }
401 
402  } else {
403  // there are views, we assume that in the main store collection of given type#name is absent, else it will not work anyways
404  // simplest case, only one set of views is handled first
405  // below is handled the cases when the configuration of output keys is for example: A A B C C C D D E
406  // 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
407  // thefore generators need to instructed to:
408  // - create new collection when a new name is handled (or for the first key)
409  // - and record when it is last identical name in the row (or it is last handled collection)
410  if ( handles.out.size() == 1 ) {
411  generator.create(true, true);
412  } else {
413  const bool doCreate = i == 0 or handles.out.at(i-1).key() != whk.key();
414  const bool doRecord = i == handles.out.size()-1 or handles.out.at(i+1).key() != whk.key();
415  ATH_MSG_DEBUG( "Instructing generator " << (doCreate ? "to" : "NOT TO") << " create collection and " << (doRecord ? "to" : "NOT TO") << " record collection in this iteration");
416  generator.create(doCreate, doRecord);
417  }
418 
419  const SG::ReadHandleKey<ViewContainer>& viewsReadHandleKey = handles.views.at(i);
420  ATH_MSG_DEBUG("Will be trying to merge from the " << viewsReadHandleKey.key() << " view container into that output");
421 
422  auto viewsHandle = SG::makeHandle( viewsReadHandleKey, context );
423  if ( viewsHandle.isValid() ) {
424  const SG::ReadHandleKey<T>& inViewReadHandleKey = handles.in.at(i);
425  ATH_MSG_DEBUG("Will be merging from " << viewsHandle->size() << " views using in-view key " << inViewReadHandleKey.key() );
426  ATH_CHECK( (this->*merger)( *viewsHandle, inViewReadHandleKey , context, *generator.data.get() ) );
427  } else {
428  ATH_MSG_DEBUG("Views " << viewsReadHandleKey.key() << " are missing. Will leave " << whk.key() << " output collection empty.");
429  }
430 
431  // Also consider probe variants of each EventView.
432  // Not every container will have a corresponding set of (typically) lower-pT probe ROIs, but it's safer to always test.
433  const std::string viewsReadHandleKeyProbe = viewsReadHandleKey.key() + "_probe";
434  ATH_MSG_VERBOSE("Will try to merge from the " << viewsReadHandleKeyProbe << " view container into that output");
435 
436  // Falling back to direct SG access here to avoid uninitiated key errors. This is safe to do in the context of the Trigger ControlFlow.
437  // I.e. if this collection is to exist in this event, then it is guaranteed to have been produced prior to this alg executing.
438  const ViewContainer* viewsContainer_probe = nullptr;
439  if (evtStore()->contains<ViewContainer>(viewsReadHandleKeyProbe)) {
440  ATH_CHECK(evtStore()->retrieve(viewsContainer_probe, viewsReadHandleKeyProbe));
441  }
442  if ( viewsContainer_probe ) {
443  const SG::ReadHandleKey<T>& inViewReadHandleKey = handles.in.at(i);
444  ATH_MSG_DEBUG("Will be merging from " << viewsContainer_probe->size() << " probe views using in-view key " << inViewReadHandleKey.key() );
445  ATH_CHECK( (this->*merger)( *viewsContainer_probe, inViewReadHandleKey , context, *generator.data.get() ) );
446  } else {
447  ATH_MSG_VERBOSE("Probe views " << viewsReadHandleKeyProbe << " are missing.");
448  }
449 
450  }
451 
452  auto writeHandle = SG::makeHandle( whk, context );
453  ATH_CHECK( generator.record( writeHandle ) );
454  }
455 
456  return StatusCode::SUCCESS;
457 }
458 
459 
460 
461 StatusCode HLTEDMCreator::createOutput(const EventContext& context) const {
462  ATH_MSG_DEBUG("Confirming / Creating this tool's output");
463  if ( m_dumpSGBefore )
464  ATH_MSG_DEBUG( evtStore()->dump() );
465 
466 #define CREATE(__TYPE) \
467  { \
468  plainGenerator<__TYPE> generator; \
469  ATH_CHECK( (createIfMissing<__TYPE, void>( context, ConstHandlesGroup<__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ), generator, &HLTEDMCreator::noMerge<__TYPE>)) ); \
470  }
471 
473 
474 #undef CREATE
475 
476 #define CREATE_XAOD(__TYPE, __STORE_TYPE) \
477  { \
478  xAODGenerator<xAOD::__TYPE, xAOD::__STORE_TYPE> generator; \
479  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>)) ); \
480  }
481 
482 
493 
500  CREATE_XAOD( CaloClusterContainer, CaloClusterTrigAuxContainer ); // NOTE: Difference in interface and aux
514 
515  // Phase-I L1 RoIs EDM
527 
528  // After view collections are merged, need to update collection links
529  ATH_CHECK( fixLinks(context) );
530 
531 #undef CREATE_XAOD
532 
533  // special cases
534  #define CREATE_SHALLOW(__TYPE) \
535  { \
536  for ( size_t index = 0; index < m_##__TYPE##ShallowCopy.size(); ++index ){ \
537  auto readHandle = SG::makeHandle<xAOD::__TYPE> ( m_##__TYPE##ShallowCopy[index], context ); \
538  if ( not readHandle.isValid() ) { \
539  ATH_MSG_DEBUG( "Creating missing "#__TYPE"ShallowCopy " << m_##__TYPE##ShallowCopy[index].key() ); \
540  auto writeHandle = SG::makeHandle( m_##__TYPE##ShallowCopyOut[index], context ); \
541  ATH_CHECK( writeHandle.record( std::make_unique<xAOD::__TYPE>(), std::make_unique<xAOD::ShallowAuxContainer>() )); \
542  } else { \
543  ATH_MSG_DEBUG( #__TYPE"ShallowCopy " << m_##__TYPE##ShallowCopyOut[index].key() << " present in the event, done nothing"); \
544  } \
545  } \
546  }
547 
550 
551  #undef CREATE_SHALLOW
552 
553  if ( m_dumpSGAfter )
554  ATH_MSG_DEBUG( evtStore()->dump() );
555 
556  ATH_MSG_DEBUG("Done");
557  return StatusCode::SUCCESS;
558 }
HLTEDMCreator::m_fixLinks
Gaudi::Property< std::vector< std::string > > m_fixLinks
Definition: HLTEDMCreator.h:99
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:103
xAODGenerator::doRecord
bool doRecord
Definition: HLTEDMCreator.cxx:226
HLTEDMCreator::m_remapLinkColKeys
SG::WriteDecorHandleKeyArray< xAOD::TrigCompositeContainer, std::vector< SG::sgkey_t > > m_remapLinkColKeys
Definition: HLTEDMCreator.h:100
HLTEDMCreator::HandlesGroup::views
SG::ReadHandleKeyArray< ViewContainer > & views
Definition: HLTEDMCreator.h:192
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:224
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:207
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:225
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:206
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:266
xAOD::jFexFwdElRoIContainer
jFexFwdElRoIContainer_v1 jFexFwdElRoIContainer
Definition: jFexFwdElRoIContainer.h:13
HLTEDMCreator::HandlesGroup
Definition: HLTEDMCreator.h:184
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:461
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:101
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:190
xAOD::AFPTrackAuxContainer
AFPTrackAuxContainer_v2 AFPTrackAuxContainer
Definition: AFPTrackAuxContainer.h:12
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:88
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:124
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
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:104
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:72
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:223
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:253
xAOD::ElectronAuxContainer
ElectronAuxContainer_v3 ElectronAuxContainer
Definition of the current electron auxiliary container.
Definition: ElectronAuxContainer.h:22
HLTEDMCreator.h
xAODGenerator
Definition: HLTEDMCreator.cxx:223
merge.output
output
Definition: merge.py:17
HLTEDMCreator::ConstHandlesGroup
Definition: HLTEDMCreator.h:215
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:228
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:221
xAOD::TrigBphysContainer
TrigBphysContainer_v1 TrigBphysContainer
Definition: TrigBphysContainer.h:12
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:237
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:92
xAOD::jFexFwdElRoIAuxContainer
jFexFwdElRoIAuxContainer_v1 jFexFwdElRoIAuxContainer
Definition: jFexFwdElRoIAuxContainer.h:12
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
plainGenerator::doRecord
bool doRecord
Definition: HLTEDMCreator.cxx:208
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:359
TrigRoiDescriptorCollection
Definition: TrigRoiDescriptorCollection.h:21
plainGenerator::record
StatusCode record(SG::WriteHandle< T > &h)
Definition: HLTEDMCreator.cxx:215
eFexTauRoIAuxContainer.h
TrigMissingETAuxContainer.h
ElectronContainer
Definition: Reconstruction/egamma/egammaEvent/egammaEvent/ElectronContainer.h:32
HLTEDMCreator::m_renounceOutputs
Gaudi::Property< bool > m_renounceOutputs
Definition: HLTEDMCreator.h:105
JetAuxContainer.h
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:146
AFPProtonAuxContainer.h
HIEventShapeAuxContainer.h
plainGenerator::create
void create(bool create, bool record)
Definition: HLTEDMCreator.cxx:209
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
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:102
HLTEDMCreator::ConstHandlesGroup::in
const SG::ReadHandleKeyArray< T > & in
Definition: HLTEDMCreator.h:222
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:245
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:191
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