ATLAS Offline Software
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 
13 HLTEDMCreator::HLTEDMCreator( const std::string& type,
14  const std::string& name,
15  const IInterface* parent )
16  : base_class( type, name, parent ) {}
17 
18 template<typename T>
20  ATH_CHECK( handles.out.initialize() );
21  renounceArray( handles.out );
22  ATH_CHECK( handles.in.initialize() );
23  renounceArray( handles.in );
24  ATH_CHECK( handles.views.initialize() );
25  renounceArray( handles.views );
26 
27  // the case w/o reading from views, both views handles and collection in views should be empty
28  if ( handles.views.empty() ) {
29  ATH_CHECK( handles.in.empty() );
30  } else {
31  // the case with views, for every output we expect an input View and an input collection inside that View
32  ATH_CHECK( handles.out.size() == handles.in.size() );
33  ATH_CHECK( handles.in.size() == handles.views.size() );
34  }
35  return StatusCode::SUCCESS;
36 }
37 
38 template<typename T>
39 StatusCode HLTEDMCreator::initAuxKey( const std::vector<SG::VarHandleKey*>& keys ) {
40  // Register Aux keys for all handles to avoid hash collisions (ATR-26386).
41  for (const SG::VarHandleKey* k : keys) {
42  SG::WriteHandleKey<T> auxkey(k->key()+"Aux.");
43  ATH_CHECK( auxkey.initialize() );
44  }
45  return StatusCode::SUCCESS;
46 }
47 
48 
50 {
51  if ( m_fixLinks.size() > 0 ) {
52  // Confirm that m_fixLinks is a sub-set of m_TrigCompositeContainer
53  for (const std::string& entry : m_fixLinks) {
54  const bool found = std::any_of(m_TrigCompositeContainer.begin(),
55  m_TrigCompositeContainer.end(), [&](const auto& writeHandleKey) { return writeHandleKey.key() == entry; } );
56  if (!found) {
57  ATH_MSG_ERROR("FixLinks contains the entry " << entry << ", however this is not one of this EDMCreator tool's managed TrigCompositeContainers.");
58  ATH_MSG_ERROR("Configure FixLinks to be a sub-set of TrigCompositeContainer");
59  return StatusCode::FAILURE;
60  }
61  }
62  // Set up the write decorate handles to hold the remapped data
63  for ( const auto& writeHandleKey: m_TrigCompositeContainer ) {
64  const bool doFixLinks = std::any_of(m_fixLinks.begin(), m_fixLinks.end(), [&](const std::string& s) { return s == writeHandleKey.key(); } );
65  if (doFixLinks) {
66  // This writeHandleKey is being included in the element link remapping
67  m_remapLinkColKeys.emplace_back( writeHandleKey.key()+".remap_linkColKeys" );
68  m_remapLinkColIndices.emplace_back( writeHandleKey.key()+".remap_linkColIndices" );
69  }
70  }
71  ATH_CHECK( m_remapLinkColKeys.initialize() ) ;
72  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
73  ATH_CHECK( m_remapLinkColIndices.initialize() );
74  renounceArray( m_remapLinkColIndices );
75  }
76 
77  // this section has to appear after the above initialisation of DecorHandles, else the renounce of TrigComposite does not work as expected
78 
79 #define INIT(__TYPE) \
80  ATH_CHECK( initHandles( HandlesGroup<__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ) ) );
81 
82 #define INIT_XAOD(__TYPE, __STORE_TYPE) \
83  ATH_CHECK( initHandles( HandlesGroup<xAOD::__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ) ) ); \
84  ATH_CHECK( initAuxKey<xAOD::__STORE_TYPE>( m_##__TYPE.keys() ) );
85 
88 
98 
110  INIT_XAOD( CaloClusterContainer, CaloClusterTrigAuxContainer ); // NOTE: Difference in interface and aux
119 
120  // Phase-I L1 RoIs EDM
132 
133 #undef INIT
134 #undef INIT_XAOD
135 
136 #define INIT_SHALLOW(__TYPE) \
137  ATH_CHECK( m_##__TYPE##ShallowCopy.initialize() ); \
138  renounceArray( m_##__TYPE##ShallowCopy ); \
139  for ( auto k: m_##__TYPE##ShallowCopy ) \
140  m_##__TYPE##ShallowCopyOut.push_back(k.key()); \
141  ATH_CHECK( m_##__TYPE##ShallowCopyOut.initialize() ); \
142  renounceArray( m_##__TYPE##ShallowCopyOut )
143 
146 
147 #undef INIT_SHALLOW
148 
149  return StatusCode::SUCCESS;
150 }
151 
152 template<class T>
154  std::unique_ptr<T> data;
155  bool doRecord{true};
156  void create( bool create, bool record ) {
157  doRecord = record;
158  if ( create )
159  data = std::make_unique<T>();
160  }
161 
163  if ( doRecord )
164  return h.record( std::move( data ) );
165  return StatusCode::SUCCESS;
166  }
167 };
168 
169 template<class T, class STORE>
171  std::unique_ptr<T> data;
172  std::unique_ptr<STORE> store;
173  bool doRecord{true};
174 
175  void create( bool create, bool record ) {
176  doRecord = record;
177  if ( create ) {
178  data = std::make_unique<T>();
179  store = std::make_unique<STORE>();
180  data->setStore( store.get() );
181  }
182  }
183 
185  if ( doRecord )
186  return h.record( std::move( data ), std::move( store ) );
187  return StatusCode::SUCCESS;
188  }
189 };
190 
191 template<typename T>
193  EventContext const&, T & ) const {
194  // if we are called it means views merging is requested but Type T does not support it (i.e. missing copy c'tor)
195  return StatusCode::FAILURE;
196 
197 }
198 
199 template<typename T>
201  EventContext const& context, T & output ) const {
202 
203  using type_in_container = typename T::base_value_type;
204  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
205  ATH_CHECK( sg != nullptr );
206  ViewHelper::ViewMerger merger( sg, msg() );
207  ATH_CHECK( merger.mergeViewCollection<type_in_container>( views, inViewKey, context, output ) );
208 
209  return StatusCode::SUCCESS;
210 }
211 
212 
214  if ( m_fixLinks.value().empty() ) {
215  ATH_MSG_DEBUG("fixLinks: No collections defined for this tool");
216  return StatusCode::SUCCESS;
217  }
218 
219  static const SG::AuxElement::ConstAccessor< std::vector< uint32_t > > keyAccessor( "linkColKeys" );
220  static const SG::AuxElement::ConstAccessor< std::vector< uint16_t > > indexAccessor( "linkColIndices" );
221 
222  ATH_MSG_DEBUG("fixLinks called for " << m_fixLinks.size() << " of " << m_TrigCompositeContainer.size() << " collections");
223 
224  // Do the remapping
225  int writeHandleArrayIndex = -1;
226  for ( const auto& writeHandleKey: m_TrigCompositeContainer ) {
227  // Check if we are re-mapping this handle
228  const bool doFixLinks = std::any_of(m_fixLinks.begin(), m_fixLinks.end(), [&](const std::string& s) { return s == writeHandleKey.key(); } );
229  if ( not doFixLinks ) {
230  ATH_MSG_DEBUG("Not requested to fix TrigComposite ElementLinks for " << writeHandleKey.key());
231  continue;
232  }
233 
234  // Only increment this index for the sub-set of the TrigComposite collections that we are fixing. Mirror the initialize() logic.
235  ++writeHandleArrayIndex;
236 
237  ATH_MSG_DEBUG("Fixing links: confirm collection is there: " << writeHandleKey.key() << ", write handle array index: " << writeHandleArrayIndex);
238  SG::ReadHandle<xAOD::TrigCompositeContainer> readHandle( writeHandleKey.key() );
239  if ( not readHandle.isValid() ) { // object missing, this is now an error as we should have literally just created it
240  ATH_MSG_ERROR(" Collection is not present. " << writeHandleKey.key() << " should have been created by createIfMissing.");
241  return StatusCode::FAILURE;
242  }
243 
244  ATH_MSG_DEBUG("Collection exists with size " << readHandle->size() << " Decision objects" );
245  ATH_MSG_DEBUG("Adding decorations: " << m_remapLinkColKeys.at( writeHandleArrayIndex ).key() << " and " << m_remapLinkColIndices.at( writeHandleArrayIndex ).key() );
246 
249 
250  // Examine each input TC
251  int decisionObjectIndex = -1;
252  for ( auto inputDecision : *( readHandle.cptr() ) ) {
253  ++decisionObjectIndex;
254 
255  // Retrieve the link information for remapping
256  std::vector< uint32_t > remappedKeys = keyAccessor( *inputDecision );
257  std::vector< uint16_t > remappedIndexes = indexAccessor( *inputDecision );
258 
259  // Search the linked collections for remapping
260  size_t const collectionTotal = inputDecision->linkColNames().size();
261  ATH_MSG_DEBUG(" Decision object #" << decisionObjectIndex << " has " << collectionTotal << " links");
262  for ( size_t elementLinkIndex = 0; elementLinkIndex < collectionTotal; ++elementLinkIndex ) {
263 
264  // Load ElementLink identifiers (except for CLID)
265  std::string const collectionName = inputDecision->linkColNames().at(elementLinkIndex);
266  uint32_t const collectionKey = remappedKeys.at(elementLinkIndex); //Note: This is the existing before-remap key
267  std::string const keyString = *( evtStore()->keyToString( collectionKey ) );
268  uint16_t const collectionIndex = remappedIndexes.at(elementLinkIndex); //Note: This is the existing before-remap index
269 
270  // Check for remapping in a merge
271  SG::sgkey_t newKey = 0;
272  size_t newIndex = 0;
273  bool isRemapped = evtStore()->tryELRemap( collectionKey, collectionIndex, newKey, newIndex);
274  if ( isRemapped ) {
275 
276  ATH_MSG_DEBUG( " Remap link [" << collectionName <<"] from " << keyString << " to " << *( evtStore()->keyToString( newKey ) ) << ", from index " << collectionIndex << " to index " << newIndex );
277  remappedKeys[ elementLinkIndex ] = newKey;
278  remappedIndexes[ elementLinkIndex ] = newIndex;
279 
280  } else {
281 
282  ATH_MSG_DEBUG( " StoreGate did not remap link [" << collectionName << "] from " << keyString << " index " << collectionIndex );
283 
284  }
285 
286  }
287 
288  // Save the remaps
289  keyDecor( *inputDecision ) = remappedKeys;
290  indexDecor( *inputDecision ) = remappedIndexes;
291 
292  }
293  }
294 
295  return StatusCode::SUCCESS;
296 }
297 
298 
299 template<typename T, typename STORE, typename G, typename M>
300 StatusCode HLTEDMCreator::createIfMissing( const EventContext& context, const ConstHandlesGroup<T>& handles, G& generator, M merger ) const {
301 
302  for (size_t i = 0; i < handles.out.size(); ++i) {
303  SG::WriteHandleKey<T> writeHandleKey = handles.out.at(i);
304 
305  if ( handles.views.empty() ) { // no merging will be needed
306  // Note: This is correct. We are testing if we can read, and if we cannot then we write.
307  // What we write will either be a dummy (empty) container, or be populated from N in-View collections.
308  SG::ReadHandle<T> readHandle( writeHandleKey.key() );
309  if ( readHandle.isValid() ) {
310  ATH_MSG_VERBOSE( writeHandleKey.key() << " is already present" );
311  generator.create(false, false);
312 
313  // For xAOD types we need to ensure there is an Aux store. This can happen if the
314  // Aux store gets truncated for collections marked with "allowTruncation".
315  // The TriggerEDMDeserialiserAlg will already have created a DataLink to the Aux store
316  // for the interface container. Now we just need to create an empty Aux store.
317  if constexpr (!std::is_void_v<STORE>) {
318  SG::ReadHandle<STORE> readAuxHandle( writeHandleKey.key() + "Aux." );
319  if ( !readAuxHandle.isValid() ) {
320  SG::WriteHandle<STORE> writeAuxHandle( writeHandleKey.key() + "Aux." );
321  ATH_MSG_DEBUG("Creating missing Aux store for " << writeHandleKey.key());
322  ATH_CHECK( writeAuxHandle.record(std::make_unique<STORE>()) );
323  }
324  }
325  } else {
326  ATH_MSG_DEBUG( writeHandleKey.key() << " is missing, creating it" );
327  generator.create(true, true);
328  }
329 
330  } else {
331  // there are views, we assume that in the main store collection of given type#name is absent, else it will not work anyways
332  // simplest case, only one set of views is handled first
333  // below is handled the cases when the configuration of output keys is for example: A A B C C C D D E
334  // 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
335  // thefore generators need to instructed to:
336  // - create new collection when a new name is handled (or for the first key)
337  // - and record when it is last identical name in the row (or it is last handled collection)
338  if ( handles.out.size() == 1 ) {
339  generator.create(true, true);
340  } else {
341  const bool doCreate = i == 0 or handles.out.at(i-1).key() != handles.out.at(i).key();
342  const bool doRecord = i == handles.out.size()-1 or handles.out.at(i+1).key() != handles.out.at(i).key();
343  ATH_MSG_DEBUG( "Instructing generator " << (doCreate ? "to" : "NOT TO") << " create collection and " << (doRecord ? "to" : "NOT TO") << " record collection in this iteration");
344  generator.create(doCreate, doRecord);
345  }
346 
347  SG::ReadHandleKey<ViewContainer> viewsReadHandleKey = handles.views.at(i);
348  ATH_MSG_DEBUG("Will be trying to merge from the " << viewsReadHandleKey.key() << " view container into that output");
349 
350  auto viewsHandle = SG::makeHandle( viewsReadHandleKey, context );
351  if ( viewsHandle.isValid() ) {
352  SG::ReadHandleKey<T> inViewReadHandleKey = handles.in.at(i);
353  ATH_MSG_DEBUG("Will be merging from " << viewsHandle->size() << " views using in-view key " << inViewReadHandleKey.key() );
354  ATH_CHECK( (this->*merger)( *viewsHandle, inViewReadHandleKey , context, *generator.data.get() ) );
355  } else {
356  ATH_MSG_DEBUG("Views " << viewsReadHandleKey.key() << " are missing. Will leave " << writeHandleKey.key() << " output collection empty.");
357  }
358 
359  // Also consider probe variants of each EventView.
360  // Not every container will have a corresponding set of (typically) lower-pT probe ROIs, but it's safer to always test.
361  static const std::string probe_suffix = "_probe";
362  const std::string viewsReadHandleKeyProbe = viewsReadHandleKey.key() + probe_suffix;
363  ATH_MSG_VERBOSE("Will try to merge from the " << viewsReadHandleKeyProbe << " view container into that output");
364 
365  // Falling back to direct SG access here to avoid uninitiated key errors. This is safe to do in the context of the Trigger ControlFlow.
366  // I.e. if this collection is to exist in this event, then it is guaranteed to have been produced prior to this alg executing.
367  const ViewContainer* viewsContainer_probe = nullptr;
368  if (evtStore()->contains<ViewContainer>(viewsReadHandleKeyProbe)) {
369  ATH_CHECK(evtStore()->retrieve(viewsContainer_probe, viewsReadHandleKeyProbe));
370  }
371  if ( viewsContainer_probe ) {
372  SG::ReadHandleKey<T> inViewReadHandleKey = handles.in.at(i);
373  ATH_MSG_DEBUG("Will be merging from " << viewsContainer_probe->size() << " probe views using in-view key " << inViewReadHandleKey.key() );
374  ATH_CHECK( (this->*merger)( *viewsContainer_probe, inViewReadHandleKey , context, *generator.data.get() ) );
375  } else {
376  ATH_MSG_VERBOSE("Probe views " << viewsReadHandleKeyProbe << " are missing.");
377  }
378 
379  }
380 
381  auto writeHandle = SG::makeHandle( writeHandleKey, context );
382  ATH_CHECK( generator.record( writeHandle ) );
383  }
384 
385  return StatusCode::SUCCESS;
386 }
387 
388 
389 
390 StatusCode HLTEDMCreator::createOutput(const EventContext& context) const {
391  ATH_MSG_DEBUG("Confirming / Creating this tool's output");
392  if ( m_dumpSGBefore )
393  ATH_MSG_DEBUG( evtStore()->dump() );
394 
395 #define CREATE(__TYPE) \
396  { \
397  plainGenerator<__TYPE> generator; \
398  ATH_CHECK( (createIfMissing<__TYPE, void>( context, ConstHandlesGroup<__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ), generator, &HLTEDMCreator::noMerge<__TYPE>)) ); \
399  }
400 
402 
403 #undef CREATE
404 
405 #define CREATE_XAOD(__TYPE, __STORE_TYPE) \
406  { \
407  xAODGenerator<xAOD::__TYPE, xAOD::__STORE_TYPE> generator; \
408  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>)) ); \
409  }
410 
411 
422 
429  CREATE_XAOD( CaloClusterContainer, CaloClusterTrigAuxContainer ); // NOTE: Difference in interface and aux
443 
444  // Phase-I L1 RoIs EDM
456 
457  // After view collections are merged, need to update collection links
458  ATH_CHECK( fixLinks() );
459 
460 #undef CREATE_XAOD
461 
462  // special cases
463  #define CREATE_SHALLOW(__TYPE) \
464  { \
465  for ( size_t index = 0; index < m_##__TYPE##ShallowCopy.size(); ++index ){ \
466  auto readHandle = SG::makeHandle<xAOD::__TYPE> ( m_##__TYPE##ShallowCopy[index], context ); \
467  if ( not readHandle.isValid() ) { \
468  ATH_MSG_DEBUG( "Creating missing "#__TYPE"ShallowCopy " << m_##__TYPE##ShallowCopy[index].key() ); \
469  auto writeHandle = SG::makeHandle( m_##__TYPE##ShallowCopyOut[index], context ); \
470  ATH_CHECK( writeHandle.record( std::make_unique<xAOD::__TYPE>(), std::make_unique<xAOD::ShallowAuxContainer>() )); \
471  } else { \
472  ATH_MSG_DEBUG( #__TYPE"ShallowCopy " << m_##__TYPE##ShallowCopyOut[index].key() << " present in the event, done nothing"); \
473  } \
474  } \
475  }
476 
479 
480  #undef CREATE_SHALLOW
481 
482  if ( m_dumpSGAfter )
483  ATH_MSG_DEBUG( evtStore()->dump() );
484 
485  ATH_MSG_DEBUG("Done");
486  return StatusCode::SUCCESS;
487 }
HLTEDMCreator::m_fixLinks
Gaudi::Property< std::vector< std::string > > m_fixLinks
Definition: HLTEDMCreator.h:141
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::AFPToFTrackContainer
AFPToFTrackContainer_v1 AFPToFTrackContainer
Definition: AFPToFTrackContainer.h:12
xAOD::AFPProtonContainer
AFPProtonContainer_v1 AFPProtonContainer
Definition: AFPProtonContainer.h:11
HLTEDMCreator::m_dumpSGBefore
Gaudi::Property< bool > m_dumpSGBefore
Definition: HLTEDMCreator.h:145
xAODGenerator::doRecord
bool doRecord
Definition: HLTEDMCreator.cxx:173
HLTEDMCreator::HandlesGroup::views
SG::ReadHandleKeyArray< ViewContainer > & views
Definition: HLTEDMCreator.h:239
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:171
xAOD::AFPVertexContainer
AFPVertexContainer_v1 AFPVertexContainer
Definition: AFPVertexContainer.h:12
INIT
#define INIT(__TYPE)
xAOD::BTaggingAuxContainer
BTaggingAuxContainer_v2 BTaggingAuxContainer
Definition of the current BTagging auxiliary container.
Definition: BTaggingAuxContainer.h:22
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:154
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:172
xAOD::jFexSRJetRoIContainer
jFexSRJetRoIContainer_v1 jFexSRJetRoIContainer
Definition: jFexSRJetRoIContainer.h:13
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
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:153
HLTEDMCreator::fixLinks
StatusCode fixLinks() const
Definition: HLTEDMCreator.cxx:213
xAOD::TrackParticleAuxContainer
TrackParticleAuxContainer_v5 TrackParticleAuxContainer
Definition of the current TrackParticle auxiliary container.
Definition: TrackParticleAuxContainer.h:19
xAOD::jFexFwdElRoIContainer
jFexFwdElRoIContainer_v1 jFexFwdElRoIContainer
Definition: jFexFwdElRoIContainer.h:13
HLTEDMCreator::HandlesGroup
Definition: HLTEDMCreator.h:231
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
xAOD::MuonRoIAuxContainer
MuonRoIAuxContainer_v1 MuonRoIAuxContainer
Definition: MuonRoIAuxContainer.h:15
HLTEDMCreator::createOutput
virtual StatusCode createOutput(const EventContext &context) const override
Definition: HLTEDMCreator.cxx:390
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
xAOD::TrigCompositeAuxContainer
TrigCompositeAuxContainer_v2 TrigCompositeAuxContainer
Declare the latest version of the container.
Definition: TrigCompositeAuxContainer.h:16
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
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:237
xAOD::AFPTrackAuxContainer
AFPTrackAuxContainer_v2 AFPTrackAuxContainer
Definition: AFPTrackAuxContainer.h:12
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
PhotonContainer
Definition: Reconstruction/egamma/egammaEvent/egammaEvent/PhotonContainer.h:30
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
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:269
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
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
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xAOD::AFPSiHitsClusterAuxContainer
AFPSiHitsClusterAuxContainer_v1 AFPSiHitsClusterAuxContainer
Definition: AFPSiHitsClusterAuxContainer.h:12
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:146
xAOD::BTaggingContainer
BTaggingContainer_v1 BTaggingContainer
Definition of the current "BTagging container version".
Definition: BTaggingContainer.h:17
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
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:92
HLTEDMCreator::initHandles
StatusCode initHandles(const HandlesGroup< T > &handles)
Init related handles.
Definition: HLTEDMCreator.cxx:19
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:99
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:270
xAOD::jFexLRJetRoIAuxContainer
jFexLRJetRoIAuxContainer_v1 jFexLRJetRoIAuxContainer
Definition: jFexLRJetRoIAuxContainer.h:12
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
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
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:200
xAOD::ElectronAuxContainer
ElectronAuxContainer_v3 ElectronAuxContainer
Definition of the current electron auxiliary container.
Definition: ElectronAuxContainer.h:22
HLTEDMCreator.h
xAODGenerator
Definition: HLTEDMCreator.cxx:170
merge.output
output
Definition: merge.py:17
HLTEDMCreator::ConstHandlesGroup
Definition: HLTEDMCreator.h:262
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:175
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:195
ViewContainer::size
size_t size() const
Definition: View.h:178
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
ViewHelper::ViewMerger::mergeViewCollection
StatusCode mergeViewCollection(ViewContainer const &viewVector, SG::ReadHandleKey< T > const &queryKey, EventContext const &sourceContext, T &outputData)
Definition: ViewHelper.h:143
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:268
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:184
INIT_SHALLOW
#define INIT_SHALLOW(__TYPE)
HLTEDMCreator::initAuxKey
StatusCode initAuxKey(const std::vector< SG::VarHandleKey * > &keys)
Register AuxStore keys for the given keys.
Definition: HLTEDMCreator.cxx:39
xAOD::jFexFwdElRoIAuxContainer
jFexFwdElRoIAuxContainer_v1 jFexFwdElRoIAuxContainer
Definition: jFexFwdElRoIAuxContainer.h:12
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
plainGenerator::doRecord
bool doRecord
Definition: HLTEDMCreator.cxx:155
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
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.
CondAlgsOpts.found
int found
Definition: CondAlgsOpts.py:101
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:300
TrigRoiDescriptorCollection
Definition: TrigRoiDescriptorCollection.h:21
HLTEDMCreator::m_remapLinkColIndices
SG::WriteDecorHandleKeyArray< xAOD::TrigCompositeContainer, std::vector< uint16_t > > m_remapLinkColIndices
Definition: HLTEDMCreator.h:143
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
plainGenerator::record
StatusCode record(SG::WriteHandle< T > &h)
Definition: HLTEDMCreator.cxx:162
ElectronContainer
Definition: Reconstruction/egamma/egammaEvent/egammaEvent/ElectronContainer.h:32
plainGenerator::create
void create(bool create, bool record)
Definition: HLTEDMCreator.cxx:156
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
ViewHelper::ViewMerger
Definition: ViewHelper.h:134
xAOD::JetContainer
JetContainer_v1 JetContainer
Definition of the current "jet container version".
Definition: JetContainer.h:17
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:49
HLTEDMCreator::ConstHandlesGroup::in
const SG::ReadHandleKeyArray< T > & in
Definition: HLTEDMCreator.h:269
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
FourMomUtils::dump
std::ostream & dump(std::ostream &out, const I4MomIter iBeg, const I4MomIter iEnd)
Helper to stream out a range of I4Momentum objects.
Definition: P4Dumper.h:24
xAOD::L2CombinedMuonAuxContainer
L2CombinedMuonAuxContainer_v1 L2CombinedMuonAuxContainer
Define the latest version of the muon CB auxiliary container.
Definition: L2CombinedMuonAuxContainer.h:14
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
xAOD::MuonRoIContainer
MuonRoIContainer_v1 MuonRoIContainer
Definition: MuonRoIContainer.h:16
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
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:192
xAOD::eFexEMRoIContainer
eFexEMRoIContainer_v1 eFexEMRoIContainer
Definition: eFexEMRoIContainer.h:16
fitman.k
k
Definition: fitman.py:528
HLTEDMCreator::HandlesGroup::in
SG::ReadHandleKeyArray< T > & in
Definition: HLTEDMCreator.h:238
HLTEDMCreator::m_remapLinkColKeys
SG::WriteDecorHandleKeyArray< xAOD::TrigCompositeContainer, std::vector< uint32_t > > m_remapLinkColKeys
Definition: HLTEDMCreator.h:142
xAOD::L2IsoMuonContainer
L2IsoMuonContainer_v1 L2IsoMuonContainer
Define the latest version of the muon Iso container.
Definition: L2IsoMuonContainer.h:15
ViewContainer
Definition: View.h:161