Loading [MathJax]/extensions/tex2jax.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-2023 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 
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  for ( const auto& writeHandleKey: m_TrigCompositeContainer ) {
277  // Check if we are re-mapping this handle
278  const bool doFixLinks = std::any_of(m_fixLinks.begin(), m_fixLinks.end(), [&](const std::string& s) { return s == writeHandleKey.key(); } );
279  if ( not doFixLinks ) {
280  ATH_MSG_DEBUG("Not requested to fix TrigComposite ElementLinks for " << writeHandleKey.key());
281  continue;
282  }
283 
284  // Only increment this index for the sub-set of the TrigComposite collections that we are fixing. Mirror the initialize() logic.
285  ++writeHandleArrayIndex;
286 
287  ATH_MSG_DEBUG("Fixing links: confirm collection is there: " << writeHandleKey.key() << ", write handle array index: " << writeHandleArrayIndex);
288  SG::ReadHandle<xAOD::TrigCompositeContainer> readHandle( writeHandleKey.key() );
289  if ( not readHandle.isValid() ) { // object missing, this is now an error as we should have literally just created it
290  ATH_MSG_ERROR(" Collection is not present. " << writeHandleKey.key() << " should have been created by createIfMissing.");
291  return StatusCode::FAILURE;
292  }
293 
294  ATH_MSG_DEBUG("Collection exists with size " << readHandle->size() << " Decision objects" );
295  ATH_MSG_DEBUG("Adding decorations: " << m_remapLinkColKeys.at( writeHandleArrayIndex ).key() << " and " << m_remapLinkColIndices.at( writeHandleArrayIndex ).key() );
296 
299 
300  // Examine each input TC
301  int decisionObjectIndex = -1;
302  for ( auto inputDecision : *( readHandle.cptr() ) ) {
303  ++decisionObjectIndex;
304 
305  // Retrieve the link information for remapping
306  std::vector< SG::sgkey_t > remappedKeys = inputDecision->linkColKeys(); // Vec copy
307  std::vector< xAOD::TrigComposite::index_type > remappedIndexes = inputDecision->linkColIndices(); // Vec copy
308 
309  // Search the linked collections for remapping
310  size_t const collectionTotal = inputDecision->linkColNames().size();
311  ATH_MSG_DEBUG(" Decision object #" << decisionObjectIndex << " has " << collectionTotal << " links");
312  for ( size_t elementLinkIndex = 0; elementLinkIndex < collectionTotal; ++elementLinkIndex ) {
313 
314  // Load ElementLink identifiers (except for CLID)
315  std::string const collectionName = inputDecision->linkColNames().at(elementLinkIndex);
316  SG::sgkey_t const collectionKey = remappedKeys.at(elementLinkIndex); //Note: This is the existing before-remap key
317  std::string const keyString = *( evtStore()->keyToString( collectionKey ) );
318  xAOD::TrigComposite::index_type const collectionIndex = remappedIndexes.at(elementLinkIndex); //Note: This is the existing before-remap index
319 
320  // Check for remapping in a merge
321  SG::sgkey_t newKey = 0;
322  size_t newIndex = 0;
323  bool isRemapped = evtStore()->tryELRemap( collectionKey, collectionIndex, newKey, newIndex);
324  if ( isRemapped ) {
325 
326  ATH_MSG_DEBUG( " Remap link [" << collectionName <<"] from " << keyString << " to " << *( evtStore()->keyToString( newKey ) ) << ", from index " << collectionIndex << " to index " << newIndex );
327  remappedKeys[ elementLinkIndex ] = newKey;
328  remappedIndexes[ elementLinkIndex ] = newIndex;
329 
330  } else {
331 
332  ATH_MSG_DEBUG( " StoreGate did not remap link [" << collectionName << "] from " << keyString << " index " << collectionIndex );
333 
334  }
335 
336  }
337 
338  // Save the remaps
339  keyDecor( *inputDecision ) = remappedKeys;
340  indexDecor( *inputDecision ) = remappedIndexes;
341 
342  }
343  }
344 
345  return StatusCode::SUCCESS;
346 }
347 
348 
349 template<typename T, typename STORE, typename G, typename M>
350 StatusCode HLTEDMCreator::createIfMissing( const EventContext& context, const ConstHandlesGroup<T>& handles, G& generator, M merger ) const {
351 
352  for (size_t i = 0; i < handles.out.size(); ++i) {
353  SG::WriteHandleKey<T> writeHandleKey = handles.out.at(i);
354 
355  if ( handles.views.empty() ) { // no merging will be needed
356  // Note: This is correct. We are testing if we can read, and if we cannot then we write.
357  // What we write will either be a dummy (empty) container, or be populated from N in-View collections.
358  SG::ReadHandle<T> readHandle( writeHandleKey.key() );
359  if ( readHandle.isValid() ) {
360  ATH_MSG_VERBOSE( writeHandleKey.key() << " is already present" );
361  generator.create(false, false);
362 
363  // For xAOD types we need to ensure there is an Aux store. This can happen if the
364  // Aux store gets truncated for collections marked with "allowTruncation".
365  // The TriggerEDMDeserialiserAlg will already have created a DataLink to the Aux store
366  // for the interface container. Now we just need to create an empty Aux store.
367  if constexpr (!std::is_void_v<STORE>) {
368  SG::ReadHandle<STORE> readAuxHandle( writeHandleKey.key() + "Aux." );
369  if ( !readAuxHandle.isValid() ) {
370  SG::WriteHandle<STORE> writeAuxHandle( writeHandleKey.key() + "Aux." );
371  ATH_MSG_DEBUG("Creating missing Aux store for " << writeHandleKey.key());
372  ATH_CHECK( writeAuxHandle.record(std::make_unique<STORE>()) );
373  }
374  }
375  } else {
376  ATH_MSG_DEBUG( writeHandleKey.key() << " is missing, creating it" );
377  generator.create(true, true);
378  }
379 
380  } else {
381  // there are views, we assume that in the main store collection of given type#name is absent, else it will not work anyways
382  // simplest case, only one set of views is handled first
383  // below is handled the cases when the configuration of output keys is for example: A A B C C C D D E
384  // 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
385  // thefore generators need to instructed to:
386  // - create new collection when a new name is handled (or for the first key)
387  // - and record when it is last identical name in the row (or it is last handled collection)
388  if ( handles.out.size() == 1 ) {
389  generator.create(true, true);
390  } else {
391  const bool doCreate = i == 0 or handles.out.at(i-1).key() != handles.out.at(i).key();
392  const bool doRecord = i == handles.out.size()-1 or handles.out.at(i+1).key() != handles.out.at(i).key();
393  ATH_MSG_DEBUG( "Instructing generator " << (doCreate ? "to" : "NOT TO") << " create collection and " << (doRecord ? "to" : "NOT TO") << " record collection in this iteration");
394  generator.create(doCreate, doRecord);
395  }
396 
397  SG::ReadHandleKey<ViewContainer> viewsReadHandleKey = handles.views.at(i);
398  ATH_MSG_DEBUG("Will be trying to merge from the " << viewsReadHandleKey.key() << " view container into that output");
399 
400  auto viewsHandle = SG::makeHandle( viewsReadHandleKey, context );
401  if ( viewsHandle.isValid() ) {
402  SG::ReadHandleKey<T> inViewReadHandleKey = handles.in.at(i);
403  ATH_MSG_DEBUG("Will be merging from " << viewsHandle->size() << " views using in-view key " << inViewReadHandleKey.key() );
404  ATH_CHECK( (this->*merger)( *viewsHandle, inViewReadHandleKey , context, *generator.data.get() ) );
405  } else {
406  ATH_MSG_DEBUG("Views " << viewsReadHandleKey.key() << " are missing. Will leave " << writeHandleKey.key() << " output collection empty.");
407  }
408 
409  // Also consider probe variants of each EventView.
410  // Not every container will have a corresponding set of (typically) lower-pT probe ROIs, but it's safer to always test.
411  static const std::string probe_suffix = "_probe";
412  const std::string viewsReadHandleKeyProbe = viewsReadHandleKey.key() + probe_suffix;
413  ATH_MSG_VERBOSE("Will try to merge from the " << viewsReadHandleKeyProbe << " view container into that output");
414 
415  // Falling back to direct SG access here to avoid uninitiated key errors. This is safe to do in the context of the Trigger ControlFlow.
416  // I.e. if this collection is to exist in this event, then it is guaranteed to have been produced prior to this alg executing.
417  const ViewContainer* viewsContainer_probe = nullptr;
418  if (evtStore()->contains<ViewContainer>(viewsReadHandleKeyProbe)) {
419  ATH_CHECK(evtStore()->retrieve(viewsContainer_probe, viewsReadHandleKeyProbe));
420  }
421  if ( viewsContainer_probe ) {
422  SG::ReadHandleKey<T> inViewReadHandleKey = handles.in.at(i);
423  ATH_MSG_DEBUG("Will be merging from " << viewsContainer_probe->size() << " probe views using in-view key " << inViewReadHandleKey.key() );
424  ATH_CHECK( (this->*merger)( *viewsContainer_probe, inViewReadHandleKey , context, *generator.data.get() ) );
425  } else {
426  ATH_MSG_VERBOSE("Probe views " << viewsReadHandleKeyProbe << " are missing.");
427  }
428 
429  }
430 
431  auto writeHandle = SG::makeHandle( writeHandleKey, context );
432  ATH_CHECK( generator.record( writeHandle ) );
433  }
434 
435  return StatusCode::SUCCESS;
436 }
437 
438 
439 
440 StatusCode HLTEDMCreator::createOutput(const EventContext& context) const {
441  ATH_MSG_DEBUG("Confirming / Creating this tool's output");
442  if ( m_dumpSGBefore )
443  ATH_MSG_DEBUG( evtStore()->dump() );
444 
445 #define CREATE(__TYPE) \
446  { \
447  plainGenerator<__TYPE> generator; \
448  ATH_CHECK( (createIfMissing<__TYPE, void>( context, ConstHandlesGroup<__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ), generator, &HLTEDMCreator::noMerge<__TYPE>)) ); \
449  }
450 
452 
453 #undef CREATE
454 
455 #define CREATE_XAOD(__TYPE, __STORE_TYPE) \
456  { \
457  xAODGenerator<xAOD::__TYPE, xAOD::__STORE_TYPE> generator; \
458  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>)) ); \
459  }
460 
461 
472 
479  CREATE_XAOD( CaloClusterContainer, CaloClusterTrigAuxContainer ); // NOTE: Difference in interface and aux
493 
494  // Phase-I L1 RoIs EDM
506 
507  // After view collections are merged, need to update collection links
508  ATH_CHECK( fixLinks() );
509 
510 #undef CREATE_XAOD
511 
512  // special cases
513  #define CREATE_SHALLOW(__TYPE) \
514  { \
515  for ( size_t index = 0; index < m_##__TYPE##ShallowCopy.size(); ++index ){ \
516  auto readHandle = SG::makeHandle<xAOD::__TYPE> ( m_##__TYPE##ShallowCopy[index], context ); \
517  if ( not readHandle.isValid() ) { \
518  ATH_MSG_DEBUG( "Creating missing "#__TYPE"ShallowCopy " << m_##__TYPE##ShallowCopy[index].key() ); \
519  auto writeHandle = SG::makeHandle( m_##__TYPE##ShallowCopyOut[index], context ); \
520  ATH_CHECK( writeHandle.record( std::make_unique<xAOD::__TYPE>(), std::make_unique<xAOD::ShallowAuxContainer>() )); \
521  } else { \
522  ATH_MSG_DEBUG( #__TYPE"ShallowCopy " << m_##__TYPE##ShallowCopyOut[index].key() << " present in the event, done nothing"); \
523  } \
524  } \
525  }
526 
529 
530  #undef CREATE_SHALLOW
531 
532  if ( m_dumpSGAfter )
533  ATH_MSG_DEBUG( evtStore()->dump() );
534 
535  ATH_MSG_DEBUG("Done");
536  return StatusCode::SUCCESS;
537 }
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
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
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
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
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
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
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
HLTEDMCreator::fixLinks
StatusCode fixLinks() const
Definition: HLTEDMCreator.cxx:266
xAOD::TrackParticleAuxContainer
TrackParticleAuxContainer_v5 TrackParticleAuxContainer
Definition of the current TrackParticle auxiliary container.
Definition: TrackParticleAuxContainer.h:19
eFexEMRoIAuxContainer.h
TauTrackAuxContainer.h
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:440
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:270
MuonAuxContainer.h
TrigT2MbtsBitsAuxContainer.h
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:125
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
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
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:228
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:76
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:350
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
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
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
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