ATLAS Offline Software
Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
TriggerEDMDeserialiserAlg Class Reference

#include <TriggerEDMDeserialiserAlg.h>

Inheritance diagram for TriggerEDMDeserialiserAlg:
Collaboration diagram for TriggerEDMDeserialiserAlg:

Classes

class  WritableAuxStore
 

Public Types

using Payload = std::vector< uint32_t >
 
using PayloadIterator = Payload::const_iterator
 

Public Member Functions

 TriggerEDMDeserialiserAlg (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual ~TriggerEDMDeserialiserAlg () override=default
 
virtual StatusCode initialize () override
 
virtual StatusCode execute (const EventContext &context) const override
 
virtual StatusCode finalize () override
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
virtual bool filterPassed (const EventContext &ctx) const
 
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Attributes

static constexpr size_t CLIDOffset = 1
 
static constexpr size_t NameLengthOffset = 2
 
static constexpr size_t NameOffset = 3
 
static std::unique_ptr< TList > s_streamerInfoList ATLAS_THREAD_SAFE
 
static std::mutex s_mutex
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

void add_bs_streamerinfos ()
 
StatusCode deserialise (const Payload *dataptr) const
 Performs actual deserialisation loop. More...
 
StatusCode deserialiseDynAux (const std::string &transientTypeName, const std::string &persistentTypeName, const std::string &decorationName, void *obj, WritableAuxStore *currentAuxStore, SG::AuxVectorBase *interface) const
 Handle decoration. More...
 
StatusCode checkSanity (const std::string &transientTypeName, bool isxAODInterfaceContainer, bool isxAODAuxContainer, bool isDecoration, bool isTPContainer) const
 Checker for data integrity, one and only one of the passed booleans can be true, else FAILURE is returned and relevant diagnostics printed. More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

SG::ReadHandleKey< HLT::HLTResultMTm_resultKey
 
Gaudi::Property< std::string > m_prefix
 
Gaudi::Property< int > m_moduleID
 
Gaudi::Property< int > m_initialSerialisationBufferSize
 
Gaudi::Property< bool > m_skipDuplicates
 
Gaudi::Property< bool > m_permitMissingModule
 
ServiceHandle< IClassIDSvc > m_clidSvc
 
ServiceHandle< IAthenaSerializeSvcm_serializerSvc
 
ToolHandle< TrigSerTPToolm_tpTool
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Friends

StatusCode tester (TriggerEDMDeserialiserAlg *)
 

Detailed Description

from the HLTResultMT Each serialised collection is a chunk of words with the content as described below. The [] == one word, the [...] more words. Format is as follows: [fragment size in words][CLID][size of serialised collection name][...serialised collection name ...][data payload in bytes][....data payload...] It follows from the TrigEDMSerialiserTool implementation.

Definition at line 28 of file TriggerEDMDeserialiserAlg.h.

Member Typedef Documentation

◆ Payload

using TriggerEDMDeserialiserAlg::Payload = std::vector<uint32_t>

Definition at line 32 of file TriggerEDMDeserialiserAlg.h.

◆ PayloadIterator

using TriggerEDMDeserialiserAlg::PayloadIterator = Payload::const_iterator

Definition at line 33 of file TriggerEDMDeserialiserAlg.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TriggerEDMDeserialiserAlg()

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

Definition at line 224 of file TriggerEDMDeserialiserAlg.cxx.

224  :
225  AthReentrantAlgorithm(name, pSvcLocator) {}

◆ ~TriggerEDMDeserialiserAlg()

virtual TriggerEDMDeserialiserAlg::~TriggerEDMDeserialiserAlg ( )
overridevirtualdefault

Member Function Documentation

◆ add_bs_streamerinfos()

void TriggerEDMDeserialiserAlg::add_bs_streamerinfos ( )
private

Definition at line 500 of file TriggerEDMDeserialiserAlg.cxx.

500  {
501  std::lock_guard<std::mutex> lock(s_mutex);
502 
503  if (s_streamerInfoList) {
504  return;
505  }
506 
507  std::string extStreamerInfos = "bs-streamerinfos.root";
508  std::string extFilePath = PathResolver::find_file(extStreamerInfos, "DATAPATH");
509  ATH_MSG_DEBUG( "Using " << extFilePath );
510  TFile extFile(extFilePath.c_str());
511 
512  s_streamerInfoList = std::unique_ptr<TList>(extFile.GetStreamerInfoList());
513  for(const auto&& infObj: *s_streamerInfoList) {
514  TString t_name=infObj->GetName();
515  if (t_name.BeginsWith("listOfRules")){
516  ATH_MSG_WARNING( "Could not re-load class " << t_name );
517  continue;
518  }
519 
520  TStreamerInfo* inf = dynamic_cast<TStreamerInfo*>(infObj);
521  inf->BuildCheck();
522  TClass *cl = inf->GetClass();
523  if (cl != nullptr) {
524  ATH_MSG_DEBUG( "external TStreamerInfo for " << cl->GetName() <<
525  " checksum: " << std::hex << inf->GetCheckSum() << std::dec );
526  }
527  }
528 }

◆ cardinality()

unsigned int AthReentrantAlgorithm::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ checkSanity()

StatusCode TriggerEDMDeserialiserAlg::checkSanity ( const std::string &  transientTypeName,
bool  isxAODInterfaceContainer,
bool  isxAODAuxContainer,
bool  isDecoration,
bool  isTPContainer 
) const
private

Checker for data integrity, one and only one of the passed booleans can be true, else FAILURE is returned and relevant diagnostics printed.

Definition at line 474 of file TriggerEDMDeserialiserAlg.cxx.

474  {
475  ATH_MSG_DEBUG( "Recognised type " << transientTypeName <<" as: "
476  << (isxAODInterfaceContainer ? "xAOD Interface Container":"" )
477  << (isxAODAuxContainer ? "xAOD Aux Container ":"" )
478  << ( isDecoration ? "xAOD Decoration" : "")
479  << ( isTPContainer ? "T/P Container " : "") );
480 
481  const std::vector<bool> typeOfContainer( { isxAODInterfaceContainer, isxAODAuxContainer, isDecoration, isTPContainer } );
482  const size_t count = std::count( typeOfContainer.begin(), typeOfContainer.end(), true );
483  if ( count == 0 ) {
484  ATH_MSG_ERROR( "Could not recognise the kind of container " << transientTypeName );
485  return StatusCode::FAILURE;
486  }
487  if (count > 1 ) {
488  ATH_MSG_ERROR( "Ambiguous container kind deduced from the transient type name " << transientTypeName );
489  ATH_MSG_ERROR( "Recognised type as: "
490  << (isxAODInterfaceContainer ? "xAOD Interface Context":"" )
491  << (isxAODAuxContainer ? " xAOD Aux Container ":"" )
492  << ( isDecoration ? "xAOD Decoration" : "")
493  << ( isTPContainer ? "T/P Container " : "") );
494  return StatusCode::FAILURE;
495  }
496  return StatusCode::SUCCESS;
497 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ deserialise()

StatusCode TriggerEDMDeserialiserAlg::deserialise ( const Payload dataptr) const
private

Performs actual deserialisation loop.

Definition at line 266 of file TriggerEDMDeserialiserAlg.cxx.

266  {
267 
268  size_t buffSize = m_initialSerialisationBufferSize;
269  std::unique_ptr<char[]> buff = std::make_unique<char[]>(buffSize);
270 
271  // returns a char* buffer that is at minimum as large as specified in the argument
272  auto resize = [&buffSize, &buff]( const size_t neededSize ) -> void {
273  if ( neededSize > buffSize ) {
274  buffSize = neededSize;
275  buff = std::make_unique<char[]>(buffSize);
276  }
277  };
278 
279  // the pointers defined below need to be used in decoding consecutive fragments of xAOD containers:
280  // 1) xAOD interface, 2) Aux store, 3) decorations
281  // invalid conditions are: invalid interface pointer when decoding Aux store
282  // invalid aux store and interface when decoding the decoration
283  // these pointer should be invalidated when: decoding TP containers, aux store when decoding the xAOD interface
284  WritableAuxStore* currentAuxStore = nullptr; // set when decoding Aux
285  SG::AuxVectorBase* xAODInterfaceContainer = nullptr; // set when decoding xAOD interface
286 
287  size_t fragmentCount = 0;
288  PayloadIterator start = dataptr->begin();
289  std::string previousKey;
290  while ( start != dataptr->end() ) {
291  fragmentCount++;
292  const CLID clid{ PayloadHelpers::collectionCLID( start ) };
293  std::string transientTypeName, transientTypeInfoName;
294  ATH_CHECK( m_clidSvc->getTypeNameOfID( clid, transientTypeName ) );
295  ATH_CHECK( m_clidSvc->getTypeInfoNameOfID( clid, transientTypeInfoName ) ); // version
296 
297  const std::vector<std::string> descr( PayloadHelpers::collectionDescription( start ) );
298  ATH_CHECK( descr.size() == 2 );
299  std::string persistentTypeName{ descr[0] };
300  const std::string key{ descr[1] };
301  const size_t bsize{ PayloadHelpers::dataSize( start ) };
302 
303  if( m_skipDuplicates && evtStore()->contains(clid,m_prefix+key) ) {
304  ATH_MSG_DEBUG("Skipping duplicate record " << m_prefix+key);
305  // Advance
307  continue;
308  }
309 
310  ATH_MSG_DEBUG( "fragment #" << fragmentCount <<
311  " type: "<< transientTypeName << " (" << transientTypeInfoName << ")" <<
312  " persistent type: " << persistentTypeName << " key: " << key << " size: " << bsize );
313  resize( bsize );
315 
316  // point the start to the next chunk, irrespectively of what happens in deserialisation below
318 
319  RootType classDesc = RootType::ByNameNoQuiet( persistentTypeName );
320  ATH_CHECK( classDesc.IsComplete() );
321 
322  // Many variables in this class were changed from double to float.
323  // However, we wrote data in the past which contained values
324  // that were valid doubles but which were out of range for floats.
325  // So we can get FPEs when we read them.
326  // Disable FPEs when we're reading an instance of this class.
327  CxxUtils::FPControl fpcontrol;
328  if (persistentTypeName == "xAOD::BTaggingTrigAuxContainer_v1") {
329  fpcontrol.holdExceptions();
330  }
331 
332  size_t usedBytes{ bsize };
333  void* obj{ nullptr };
334  {
335  // Temporary error handler to debug ATR-25049
336  RootUtils::WithRootErrorHandler hand( handleError(buff.get(), usedBytes, dataptr, &*start) );
337  obj = m_serializerSvc->deserialize( buff.get(), usedBytes, classDesc );
338  }
339 
340  ATH_MSG_DEBUG( "Deserialised object of ptr: " << obj << " which used: " << usedBytes <<
341  " bytes from available: " << bsize );
342  if ( obj == nullptr ) {
343  ATH_MSG_ERROR( "Deserialisation of object of CLID " << clid << " and transientTypeName " <<
344  transientTypeName << " # " << key << " failed" );
345  return StatusCode::FAILURE;
346  }
347  const bool isxAODInterfaceContainer = (transientTypeName.rfind("xAOD", 0) != std::string::npos and
348  transientTypeName.find("Aux") == std::string::npos and
349  transientTypeName.find("ElementLink") == std::string::npos);
350  const bool isxAODAuxContainer = (transientTypeName.rfind("xAOD", 0) != std::string::npos and
351  transientTypeName.find("Aux") != std::string::npos);
352  const bool isxAODDecoration = transientTypeName.find("vector") != std::string::npos;
353  const bool isTPContainer = persistentTypeName.find("_p") != std::string::npos;
354  const bool isVersionChange = versionChange(persistentTypeName, transientTypeInfoName);
355 
356  ATH_CHECK( checkSanity( transientTypeName, isxAODInterfaceContainer,
357  isxAODAuxContainer, isxAODDecoration, isTPContainer ) );
358 
359  if ( isTPContainer or isVersionChange ) {
360  if ( isVersionChange ) ATH_MSG_DEBUG( "Version change detected from " << persistentTypeName << " to "
361  << transientTypeInfoName << ". Will invoke PT converter." );
362 
363  std::string decodedTransientName;
364  void * converted = m_tpTool->convertPT( persistentTypeName, obj, decodedTransientName );
365  ATH_CHECK( converted != nullptr );
366  classDesc.Destruct( obj );
367 
368  // from now on in case of T/P class we deal with a new class, the transient one
369  classDesc = RootType::ByNameNoQuiet( transientTypeName );
370  ATH_CHECK( classDesc.IsComplete() );
371  obj = converted;
372  }
373 
374  if ( isxAODInterfaceContainer or isxAODAuxContainer or isTPContainer ) {
375  BareDataBucket* dataBucket = new BareDataBucket( obj, clid, classDesc );
376  const std::string outputName = m_prefix + key;
377  auto proxyPtr = evtStore()->recordObject( SG::DataObjectSharedPtr<BareDataBucket>( dataBucket ),
378  outputName, false, false );
379  if ( proxyPtr == nullptr ) {
380  ATH_MSG_WARNING( "Recording of object of CLID " << clid << " and name " << outputName << " failed" );
381  }
382 
383  if ( isxAODInterfaceContainer ) {
384  // If the container of the previous iteration was supposed to have an Aux store (trackIndices)
385  // but we didn't find one, then create at least a DataLink with the correct key name.
386  // The EDMCreatorAlg will take care of creating an empty Aux store with the correct type.
387  if (xAODInterfaceContainer!=nullptr &&
388  xAODInterfaceContainer->trackIndices() && currentAuxStore==nullptr) {
389  ATH_MSG_DEBUG("Container with key " << previousKey << " is missing its Aux store");
390  xAODInterfaceContainer->setStore( DataLink<SG::IConstAuxStore>(previousKey+"Aux.") );
391  }
392  currentAuxStore = nullptr; // the store will be following, setting it to nullptr assure we catch issue with of missing Aux
393  const SG::BaseInfoBase* bib = getBaseInfo(clid);
394  if(!bib){
395  ATH_MSG_WARNING("No BaseInfoBase for CLID "<< clid << " and name " << outputName);
396  }
397  xAODInterfaceContainer =
398  bib ? reinterpret_cast<SG::AuxVectorBase*>(
399  bib->cast(dataBucket->object(),
401  : nullptr;
402  } else if (isxAODAuxContainer) {
403  // key contains exactly one '.' at the end
404  ATH_CHECK( key.find('.') == key.size()-1 );
405  ATH_CHECK( currentAuxStore == nullptr and xAODInterfaceContainer != nullptr );
406  const SG::BaseInfoBase* bib = getBaseInfo(clid);
407  SG::IAuxStore* auxHolder =
408  reinterpret_cast<SG::IAuxStore*>(
409  bib->cast(dataBucket->object(), ClassID_traits<SG::IAuxStore>::ID()));
410  ATH_CHECK(auxHolder != nullptr);
411  xAODInterfaceContainer->setStore(auxHolder);
412  currentAuxStore = new WritableAuxStore();
413  dynamic_cast<SG::IAuxStoreHolder*>(auxHolder)->setStore( currentAuxStore );
414  } else {
415  currentAuxStore = nullptr;
416  xAODInterfaceContainer = nullptr; // invalidate xAOD related pointers
417  }
418 
419  } else if ( isxAODDecoration ) {
420  if(m_skipDuplicates and (currentAuxStore == nullptr || xAODInterfaceContainer == nullptr)) {
421  ATH_MSG_DEBUG("Decoration " << key << " encountered with no active container. Assume this was already handled.");
422  } else {
423  ATH_CHECK( currentAuxStore != nullptr and xAODInterfaceContainer != nullptr );
424  ATH_CHECK( deserialiseDynAux( transientTypeName, persistentTypeName, key, obj,
425  currentAuxStore, xAODInterfaceContainer ) );
426  }
427  }
428  previousKey = key;
429  }
430  return StatusCode::SUCCESS;
431 }

◆ deserialiseDynAux()

StatusCode TriggerEDMDeserialiserAlg::deserialiseDynAux ( const std::string &  transientTypeName,
const std::string &  persistentTypeName,
const std::string &  decorationName,
void *  obj,
WritableAuxStore currentAuxStore,
SG::AuxVectorBase interface 
) const
private

Handle decoration.

Definition at line 435 of file TriggerEDMDeserialiserAlg.cxx.

436  {
437  const bool isPacked = persistentTypeName.find("SG::PackedContainer") != std::string::npos;
438 
440  SG::auxid_t id = registry.findAuxID ( decorationName );
441  if (id != SG::null_auxid ) {
442  std::string regTypeName = stripStdVec( registry.getVecTypeName(id) );
443  if ( regTypeName != stripStdVec(transientTypeName) and transientTypeName.find("ElementLink") == std::string::npos )
444  {
445  // Before giving up, also translate any typedefs in the transient name.
446  RootUtils::Type tname (transientTypeName);
447  if ( regTypeName != stripStdVec(tname.getTypeName()) ) {
448  ATH_MSG_INFO( "Schema evolution required for decoration \"" << decorationName << "\" from " << transientTypeName << " to " << registry.getVecTypeName( id ) << " not handled yet");
449  return StatusCode::SUCCESS;
450  }
451  }
452  } else {
453  std::string elementTypeName;
454  const std::type_info* elt_tinfo = getElementType( transientTypeName, elementTypeName );
455  ATH_CHECK( elt_tinfo != nullptr );
456  ATH_MSG_DEBUG( "Dynamic decoration: \"" << decorationName << "\" of type " << transientTypeName << " will create a dynamic ID, stored type" << elementTypeName );
457  id = SG::getDynamicAuxID ( *elt_tinfo, decorationName, elementTypeName, transientTypeName, false, SG::null_auxid );
458  }
459  ATH_MSG_DEBUG( "Unstreaming decoration \"" << decorationName << "\" of type " << transientTypeName << " aux ID " << id << " class " << persistentTypeName << " packed " << isPacked );
460  std::unique_ptr<SG::IAuxTypeVector> vec( registry.makeVectorFromData (id, obj, nullptr, isPacked, true) );
461  ATH_CHECK( vec.get() != nullptr );
462  ATH_MSG_DEBUG("Size for \"" << decorationName << "\" " << vec->size() << " interface " << interfaceContainer->size_v() );
463  ATH_CHECK( vec->size() == interfaceContainer->size_v() );
464  if ( vec->size() != 0 ) {
465  ATH_CHECK( currentAuxStore != nullptr );
466  currentAuxStore->addVector(std::move(vec), false);
467  // trigger loading of the dynamic variables
469  accessor.getDataArray( *interfaceContainer );
470  }
471  return StatusCode::SUCCESS;
472 }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode TriggerEDMDeserialiserAlg::execute ( const EventContext &  context) const
overridevirtual

Definition at line 243 of file TriggerEDMDeserialiserAlg.cxx.

243  {
244 
245  auto resultHandle = SG::makeHandle( m_resultKey, context );
246  if ( not resultHandle.isValid() ) {
247  ATH_MSG_ERROR("Failed to obtain HLTResultMT with key " << m_resultKey.key());
248  return StatusCode::FAILURE;
249  }
250  ATH_MSG_DEBUG("Obtained HLTResultMT with key " << m_resultKey.key());
251 
252  const Payload* dataptr = nullptr;
253  if ( resultHandle->getSerialisedData( m_moduleID, dataptr ).isFailure() ) {
254  if ( m_permitMissingModule ) {
255  ATH_MSG_DEBUG("No payload available with moduleId " << m_moduleID << " in this event, ignored");
256  return StatusCode::SUCCESS;
257  } else {
258  ATH_MSG_ERROR("No payload available with moduleId " << m_moduleID << " in this event");
259  return StatusCode::FAILURE;
260  }
261  }
262  ATH_CHECK( deserialise( dataptr ) );
263  return StatusCode::SUCCESS;
264 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 79 of file AthReentrantAlgorithm.cxx.

80 {
81  // If we didn't find any symlinks to add, just return the collection
82  // from the base class. Otherwise, return the extended collection.
83  if (!m_extendedExtraObjects.empty()) {
85  }
86  return Algorithm::extraOutputDeps();
87 }

◆ filterPassed()

virtual bool AthReentrantAlgorithm::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 135 of file AthReentrantAlgorithm.h.

135  {
136  return execState( ctx ).filterPassed();
137  }

◆ finalize()

StatusCode TriggerEDMDeserialiserAlg::finalize ( )
overridevirtual

Definition at line 237 of file TriggerEDMDeserialiserAlg.cxx.

237  {
238  s_streamerInfoList.reset();
239  return StatusCode::SUCCESS;
240 }

◆ initialize()

StatusCode TriggerEDMDeserialiserAlg::initialize ( )
overridevirtual

Definition at line 227 of file TriggerEDMDeserialiserAlg.cxx.

227  {
229  ATH_CHECK( m_clidSvc.retrieve() );
230  ATH_CHECK( m_serializerSvc.retrieve() );
231  ATH_CHECK( m_tpTool.retrieve() );
233  return StatusCode::SUCCESS;
234 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

bool AthReentrantAlgorithm::isClonable ( ) const
overridevirtualinherited

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

MsgStream& AthCommonMsg< Gaudi::Algorithm >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ setFilterPassed()

virtual void AthReentrantAlgorithm::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 139 of file AthReentrantAlgorithm.h.

139  {
140  execState( ctx ).setFilterPassed( state );
141  }

◆ sysExecute()

StatusCode AthReentrantAlgorithm::sysExecute ( const EventContext &  ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 67 of file AthReentrantAlgorithm.cxx.

68 {
69  return Gaudi::Algorithm::sysExecute (ctx);
70 }

◆ sysInitialize()

StatusCode AthReentrantAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in InputMakerBase, and HypoBase.

Definition at line 96 of file AthReentrantAlgorithm.cxx.

96  {
98 
99  if (sc.isFailure()) {
100  return sc;
101  }
102 
103  ServiceHandle<ICondSvc> cs("CondSvc",name());
104  for (auto h : outputHandles()) {
105  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
106  // do this inside the loop so we don't create the CondSvc until needed
107  if ( cs.retrieve().isFailure() ) {
108  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
109  return StatusCode::SUCCESS;
110  }
111  if (cs->regHandle(this,*h).isFailure()) {
112  sc = StatusCode::FAILURE;
113  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
114  << " with CondSvc");
115  }
116  }
117  }
118  return sc;
119 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Friends And Related Function Documentation

◆ tester

StatusCode tester ( TriggerEDMDeserialiserAlg )
friend

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::unique_ptr<TList> s_streamerInfoList TriggerEDMDeserialiserAlg::ATLAS_THREAD_SAFE
static

Definition at line 37 of file TriggerEDMDeserialiserAlg.h.

◆ CLIDOffset

constexpr size_t TriggerEDMDeserialiserAlg::CLIDOffset = 1
staticconstexpr

Definition at line 34 of file TriggerEDMDeserialiserAlg.h.

◆ m_clidSvc

ServiceHandle<IClassIDSvc> TriggerEDMDeserialiserAlg::m_clidSvc
private
Initial value:
{ this, "ClassIDSvc", "ClassIDSvc",
"Service to translate CLID to class name" }

Definition at line 65 of file TriggerEDMDeserialiserAlg.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_initialSerialisationBufferSize

Gaudi::Property<int> TriggerEDMDeserialiserAlg::m_initialSerialisationBufferSize
private
Initial value:
{ this, "InitialSerialisationBufferSize", 1024*1024,
"Initial serialisation buffer size in bytes, can be set large to avoid reallocations in every event" }

Definition at line 58 of file TriggerEDMDeserialiserAlg.h.

◆ m_moduleID

Gaudi::Property<int> TriggerEDMDeserialiserAlg::m_moduleID
private
Initial value:
{ this, "ModuleID", 0,
"Module ID of HLT result ROB, default 0 is the main HLT result, others are for TLA, calibration etc." }

Definition at line 56 of file TriggerEDMDeserialiserAlg.h.

◆ m_permitMissingModule

Gaudi::Property<bool> TriggerEDMDeserialiserAlg::m_permitMissingModule
private
Initial value:
{ this, "PermitMissingModule", false,
"Silently ignore absent HLT results (when handling multiple HLT results)" }

Definition at line 62 of file TriggerEDMDeserialiserAlg.h.

◆ m_prefix

Gaudi::Property<std::string> TriggerEDMDeserialiserAlg::m_prefix
private
Initial value:
{ this, "Prefix", "",
"Set for testing to avoid clash with the input collections" }

Definition at line 54 of file TriggerEDMDeserialiserAlg.h.

◆ m_resultKey

SG::ReadHandleKey<HLT::HLTResultMT> TriggerEDMDeserialiserAlg::m_resultKey
private
Initial value:
{ this, "ResultKey", "HLTResultMT",
"Key of the HLT result object" }

Definition at line 52 of file TriggerEDMDeserialiserAlg.h.

◆ m_serializerSvc

ServiceHandle<IAthenaSerializeSvc> TriggerEDMDeserialiserAlg::m_serializerSvc
private
Initial value:
{ this, "Serializer", "AthenaRootSerializeSvc",
"Service that translates persistent to transient representation" }

Definition at line 68 of file TriggerEDMDeserialiserAlg.h.

◆ m_skipDuplicates

Gaudi::Property<bool> TriggerEDMDeserialiserAlg::m_skipDuplicates
private
Initial value:
{ this, "SkipDuplicateRecords", false,
"Silently ignore collections that ware already in StoreGate (when handling multiple HLT results)" }

Definition at line 60 of file TriggerEDMDeserialiserAlg.h.

◆ m_tpTool

ToolHandle<TrigSerTPTool> TriggerEDMDeserialiserAlg::m_tpTool
private
Initial value:
{ this, "TPTool", "TrigSerTPTool/TrigSerTPTool",
"Tool to do Transient/Persistent conversion (Old EDM)"}

Definition at line 71 of file TriggerEDMDeserialiserAlg.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ NameLengthOffset

constexpr size_t TriggerEDMDeserialiserAlg::NameLengthOffset = 2
staticconstexpr

Definition at line 35 of file TriggerEDMDeserialiserAlg.h.

◆ NameOffset

constexpr size_t TriggerEDMDeserialiserAlg::NameOffset = 3
staticconstexpr

Definition at line 36 of file TriggerEDMDeserialiserAlg.h.

◆ s_mutex

std::mutex TriggerEDMDeserialiserAlg::s_mutex
static

Definition at line 38 of file TriggerEDMDeserialiserAlg.h.


The documentation for this class was generated from the following files:
python.Dso.registry
registry
Definition: Control/AthenaServices/python/Dso.py:159
get_hdefs.buff
buff
Definition: get_hdefs.py:64
TriggerEDMDeserialiserAlg::s_mutex
static std::mutex s_mutex
Definition: TriggerEDMDeserialiserAlg.h:38
ConvertOldHistosToNewHistos.converted
converted
Definition: ConvertOldHistosToNewHistos.py:40
TScopeAdapter::ByNameNoQuiet
static TScopeAdapter ByNameNoQuiet(const std::string &name, Bool_t load=kTRUE)
Definition: RootType.cxx:581
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
BareDataBucket
Allows to insert void* returned from serialisation into the store.
Definition: BareDataBucket.h:14
TriggerEDMDeserialiserAlg::m_tpTool
ToolHandle< TrigSerTPTool > m_tpTool
Definition: TriggerEDMDeserialiserAlg.h:71
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
PathResolver::find_file
static std::string find_file(const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
Definition: PathResolver.cxx:251
SG::AuxTypeRegistry::instance
static AuxTypeRegistry & instance()
Return the singleton registry instance.
Definition: AuxTypeRegistry.cxx:49
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:14
AthCommonDataStore::renounce
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
Definition: AthCommonDataStore.h:380
BareDataBucket::object
virtual void * object() override
Definition: BareDataBucket.h:38
SG::TypelessConstAccessor
Helper class to provide const generic access to aux data.
Definition: TypelessConstAccessor.h:44
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
PayloadHelpers::toNextFragment
TDA::PayloadIterator toNextFragment(TDA::PayloadIterator start)
Returns starting point of the next fragment, can be == end()
Definition: TriggerEDMDeserialiserAlg.cxx:200
SG::AuxVectorBase::setStore
void setStore(SG::IAuxStore *store)
Set the store associated with this object.
Definition: AuxVectorBase.cxx:96
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
TriggerEDMDeserialiserAlg::m_prefix
Gaudi::Property< std::string > m_prefix
Definition: TriggerEDMDeserialiserAlg.h:54
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
PayloadHelpers::collectionDescription
std::vector< std::string > collectionDescription(TDA::PayloadIterator start)
String description of the collection stored in the next fragment, returns persistent type name and th...
Definition: TriggerEDMDeserialiserAlg.cxx:205
SG::BaseInfoBase::cast
void * cast(void *p, CLID clid) const
Cast to a base pointer.
Definition: BaseInfo.cxx:166
SG::AuxVectorBase
Manage index tracking and synchronization of auxiliary data.
Definition: AuxVectorBase.h:98
inf
TStreamerInfo * inf
Definition: liststreamerinfos.cxx:12
TriggerEDMDeserialiserAlg::m_initialSerialisationBufferSize
Gaudi::Property< int > m_initialSerialisationBufferSize
Definition: TriggerEDMDeserialiserAlg.h:58
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
fragmentCount
int fragmentCount(uint32_t data, int id)
Definition: TgcByteStreamData.h:331
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
TriggerEDMDeserialiserAlg::m_moduleID
Gaudi::Property< int > m_moduleID
Definition: TriggerEDMDeserialiserAlg.h:56
SG::AuxTypeRegistry
Handle mappings between names and auxid_t.
Definition: AuxTypeRegistry.h:62
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
TriggerEDMDeserialiserAlg::m_serializerSvc
ServiceHandle< IAthenaSerializeSvc > m_serializerSvc
Definition: TriggerEDMDeserialiserAlg.h:68
TriggerEDMDeserialiserAlg::PayloadIterator
Payload::const_iterator PayloadIterator
Definition: TriggerEDMDeserialiserAlg.h:33
CxxUtils::vec
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
Definition: vec.h:207
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
SG::auxid_t
size_t auxid_t
Identifier for a particular aux data item.
Definition: AuxTypes.h:27
TriggerEDMDeserialiserAlg::add_bs_streamerinfos
void add_bs_streamerinfos()
Definition: TriggerEDMDeserialiserAlg.cxx:500
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
SG::getDynamicAuxID
SG::auxid_t getDynamicAuxID(const std::type_info &ti, const std::string &name, const std::string &elementTypeName, const std::string &branch_type_name, bool standalone, SG::auxid_t linked_auxid)
Find the auxid for a dynamic branch.
Definition: getDynamicAuxID.cxx:64
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
TriggerEDMDeserialiserAlg::Payload
std::vector< uint32_t > Payload
Definition: TriggerEDMDeserialiserAlg.h:32
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
ClassID_traits
Default, invalid implementation of ClassID_traits.
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:40
contains
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition: hcg.cxx:111
TriggerEDMDeserialiserAlg::deserialiseDynAux
StatusCode deserialiseDynAux(const std::string &transientTypeName, const std::string &persistentTypeName, const std::string &decorationName, void *obj, WritableAuxStore *currentAuxStore, SG::AuxVectorBase *interface) const
Handle decoration.
Definition: TriggerEDMDeserialiserAlg.cxx:435
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
python.TransformConfig.descr
descr
print "%s.properties()" % self.__name__
Definition: TransformConfig.py:360
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
PayloadHelpers::toBuffer
void toBuffer(TDA::PayloadIterator start, char *buffer)
Copies fragment to the buffer, no size checking, use dataSize to do so.
Definition: TriggerEDMDeserialiserAlg.cxx:213
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
TriggerEDMDeserialiserAlg::deserialise
StatusCode deserialise(const Payload *dataptr) const
Performs actual deserialisation loop.
Definition: TriggerEDMDeserialiserAlg.cxx:266
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
PayloadHelpers::collectionCLID
CLID collectionCLID(TDA::PayloadIterator start)
CLID of the collection stored in the next fragment.
Definition: TriggerEDMDeserialiserAlg.cxx:172
PayloadHelpers::dataSize
size_t dataSize(TDA::PayloadIterator start)
Size in bytes of the buffer that is needed to decode next fragment data content.
Definition: TriggerEDMDeserialiserAlg.cxx:188
RootUtils::WithRootErrorHandler
Run a MT piece of code with an alternate root error handler.
Definition: WithRootErrorHandler.h:56
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
TriggerEDMDeserialiserAlg::m_clidSvc
ServiceHandle< IClassIDSvc > m_clidSvc
Definition: TriggerEDMDeserialiserAlg.h:65
lumiFormat.outputName
string outputName
Definition: lumiFormat.py:71
xAOD::JetAttributeAccessor::accessor
const AccessorWrapper< T > * accessor(xAOD::JetAttribute::AttributeID id)
Returns an attribute accessor corresponding to an AttributeID.
Definition: JetAccessorMap.h:26
TriggerEDMDeserialiserAlg::m_permitMissingModule
Gaudi::Property< bool > m_permitMissingModule
Definition: TriggerEDMDeserialiserAlg.h:62
SG::IAuxStore
Interface for non-const operations on an auxiliary store.
Definition: IAuxStore.h:48
a
TList * a
Definition: liststreamerinfos.cxx:10
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TScopeAdapter::Destruct
void Destruct(void *place) const
Definition: RootType.cxx:672
SG::BaseInfoBase
The non-template portion of the BaseInfo implementation.
Definition: Control/AthenaKernel/AthenaKernel/BaseInfo.h:451
RootUtils::Type
Wrapper for ROOT types.
Definition: Type.h:40
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
TriggerEDMDeserialiserAlg::m_resultKey
SG::ReadHandleKey< HLT::HLTResultMT > m_resultKey
Definition: TriggerEDMDeserialiserAlg.h:52
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
TriggerEDMDeserialiserAlg::checkSanity
StatusCode checkSanity(const std::string &transientTypeName, bool isxAODInterfaceContainer, bool isxAODAuxContainer, bool isDecoration, bool isTPContainer) const
Checker for data integrity, one and only one of the passed booleans can be true, else FAILURE is retu...
Definition: TriggerEDMDeserialiserAlg.cxx:474
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
SG::DataObjectSharedPtr
Smart pointer to manage DataObject reference counts.
Definition: DataObjectSharedPtr.h:46
TriggerEDMDeserialiserAlg::m_skipDuplicates
Gaudi::Property< bool > m_skipDuplicates
Definition: TriggerEDMDeserialiserAlg.h:60
python.PyAthena.obj
obj
Definition: PyAthena.py:135
TScopeAdapter::IsComplete
Bool_t IsComplete() const
Definition: RootType.cxx:890
SG::IAuxStoreHolder
Interface for objects taking part in direct ROOT I/O.
Definition: IAuxStoreHolder.h:36
SG::AuxVectorBase::trackIndices
bool trackIndices() const
Return true if index tracking is enabled for this container.
dq_make_web_display.cl
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Definition: dq_make_web_display.py:26
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
fitman.k
k
Definition: fitman.py:528
ServiceHandle< ICondSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
TScopeAdapter
Definition: RootType.h:119