ATLAS Offline Software
Loading...
Searching...
No Matches
Trig::TrigDecisionTool Class Reference

#include <TrigDecisionTool.h>

Inheritance diagram for Trig::TrigDecisionTool:

Public Types

Definition of the StoreGate-like object's definition
typedef ServiceHandle< StoreGateSvcMetaStore_t
 Type of the metadata store object in Athena.
typedef const ServiceHandle< StoreGateSvc > & MetaStorePtr_t
 Type of the metadata store pointer in standalone mode.

Public Member Functions

 TrigDecisionTool (const std::string &name)
StatusCode initialize ()
 Dummy implementation of the initialisation function.
StatusCode beginEvent ()
 Function called when a new events is loaded.
StatusCode beginInputFile ()
 Function called when a new input file is opened.
StatusCode finalize ()
virtual void handle (const Incident &inc)
 Function receiving incidents from IncidentSvc/TEvent.
virtual bool isPassed (const std::string &chain, unsigned int condition) const
 true if given chain passed
virtual bool isPassed (const std::string &chain) const
 Implementation of the ITrigDecisionTool function.
virtual unsigned int isPassedBits (const std::string &chain) const
 Implementation of the ITrigDecisionTool function.
const std::string & getNavigationFormat () const
 Note: Temporary.
bool msgLvl (const MSG::Level lvl) const
MsgStream & msg () const
MsgStream & msg (const MSG::Level lvl) const
virtual StatusCode sysInitialize ()
 Function initialising the tool in the correct way in Athena.
virtual void print () const
 Print the state of the tool.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
const Trig::ExpertMethodsExperimentalAndExpertMethods () const
const Trig::ChainGroupgetChainGroup (const std::vector< std::string > &patterns, TrigDefs::Group props=TrigDefs::Group::Default) const
 Create/get chain group (.
const Trig::ChainGroupgetChainGroup (const std::string &pattern, TrigDefs::Group props=TrigDefs::Group::Default) const
 Create/get chain group (.
std::vector< std::string > getListOfTriggers (const Trig::ChainGroup *chaingroup) const
std::vector< std::string > getListOfTriggers (const std::string &triggerNames=".*") const
std::vector< std::string > getListOfStreams (const Trig::ChainGroup *chaingroup) const
std::vector< std::string > getListOfStreams (const std::string &triggerNames=".*") const
std::vector< std::string > getListOfGroups (const Trig::ChainGroup *chaingroup) const
std::vector< std::string > getListOfGroups (const std::string &triggerNames=".*") const
std::vector< std::vector< std::string > > getListOfTriggerElements (const Trig::ChainGroup *chaingroup) const
std::vector< std::vector< std::string > > getListOfTriggerElements (const std::string &triggerNames=".*") const
float getPrescale (const Trig::ChainGroup *chaingroup, unsigned int condition=TrigDefs::Physics) const
float getPrescale (const std::string &triggerNames="EF._*", unsigned int condition=TrigDefs::Physics) const
bool isPassed (const Trig::ChainGroup *chaingroup, unsigned int condition=TrigDefs::Physics) const
 true if given group of chains passed
unsigned int isPassedBits (const Trig::ChainGroup *chaingroup) const
 Return expert-level information about the various trigger flags as a bit mask.
FeatureContainer features (const Trig::ChainGroup *group, unsigned int condition=TrigDefs::Physics) const
 Runs 1, 2.
FeatureContainer features (const std::string &chainName="EF_.*", unsigned int condition=TrigDefs::Physics) const
 Runs 1, 2.
template<class CONTAINER>
std::vector< TrigCompositeUtils::LinkInfo< CONTAINER > > features (const Trig::FeatureRequestDescriptor &featureRequest) const
 Runs 3+.
template<class CONTAINER>
std::vector< TrigCompositeUtils::LinkInfo< CONTAINER > > features (const Trig::ChainGroup *group, const unsigned int condition=TrigDefs::Physics, const std::string &containerSGKey="", const unsigned int featureCollectionMode=TrigDefs::lastFeatureOfType, const std::string &navElementLinkKey=TrigCompositeUtils::featureString(), const int restrictToLegIndex=-1) const
 Runs 3+.
template<class CONTAINER>
std::vector< TrigCompositeUtils::LinkInfo< CONTAINER > > features (const std::string &chainGroupName, const unsigned int condition=TrigDefs::Physics, const std::string &containerSGKey="", const unsigned int featureCollectionMode=TrigDefs::lastFeatureOfType, const std::string &navElementLinkKey=TrigCompositeUtils::featureString(), const int restrictToLegIndex=-1) const
 Runs 3+.
template<class T>
Feature< T > ancestor (const HLT::TriggerElement *te, std::string label="") const
 gives back feature matching (by seeding relation)
std::vector< bool > isPassedForEach (const Trig::ChainGroup *chainGroup, unsigned int condition=TrigDefs::Physics) const
 return decision for each chain in group
std::vector< bool > isPassedForEach (const std::string &chain, unsigned int condition=TrigDefs::Physics) const
 return decision for each chain defined by given pattern
std::vector< unsigned int > isPassedBitsForEach (const Trig::ChainGroup *chaingroup) const
 Return the result of isPassedBits for each chain in the group.
std::vector< unsigned int > isPassedBitsForEach (const std::string &chain) const
char getBGCode () const
 get the bunch group code bit X=1: BG X fired (X=0..7) use: bool BGXfired = BGCode & (0x1<<X)
template<class T>
std::vector< Trig::Feature< T > > ancestors (const HLT::TriggerElement *te, std::string label="", unsigned int condition=TrigDefs::Physics, const std::string &teName="") const
 gives back features matching (by seeding relation) - will also flatten containers if necessary
Functions providing access to the input/output metadata
MetaStorePtr_t inputMetaStore () const
 Accessor for the input metadata store.
MetaStorePtr_t outputMetaStore () const
 Accessor for the output metadata store.
Additional helper functions, not directly mimicking Athena
template<class T>
const T * getProperty (const std::string &name) const
 Get one of the tool's properties.
const std::string & msg_level_name () const __attribute__((deprecated))
 A deprecated function for getting the message level's name.
const std::string & getName (const void *ptr) const
 Get the name of an object that is / should be in the event store.
SG::sgkey_t getKey (const void *ptr) const
 Get the (hashed) key of an object that is in the event store.
Run 3 functions
template<class CONTAINER, class FEATURE_CONTAINER>
std::pair< typename CONTAINER::const_iterator, typename CONTAINER::const_iterator > associateToEventView (typename SG::ReadHandle< CONTAINER > &inViewContainer, const TrigCompositeUtils::LinkInfo< FEATURE_CONTAINER > linkInfo, const std::string &roiName=TrigCompositeUtils::roiString()) const
 Runs 3+.
template<class CONTAINER>
std::pair< typename CONTAINER::const_iterator, typename CONTAINER::const_iterator > associateToEventView (typename SG::ReadHandle< CONTAINER > &inViewContainer, const TrigCompositeUtils::Decision *decisionObject, const std::string &roiName=TrigCompositeUtils::roiString()) const
 Runs 3+.
template<class CONTAINER>
std::pair< typename CONTAINER::const_iterator, typename CONTAINER::const_iterator > associateToEventView (typename SG::ReadHandle< CONTAINER > &inViewContainer, const ElementLink< TrigRoiDescriptorCollection > &matchROI) const
 Runs 3+.
template<class CONTAINER>
std::pair< typename CONTAINER::const_iterator, typename CONTAINER::const_iterator > associateToEventView (typename SG::ReadHandle< CONTAINER > &inViewContainer, const uint32_t matchIndex, const uint32_t matchKey=0, const bool isFullscan=false) const
 Runs 3+.

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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.
virtual Trig::CacheGlobalMemorycgm ()
virtual const Trig::CacheGlobalMemorycgm () const
void ChainGroupInitialize ()
void configurationUpdate (const TrigConf::HLTChainList *confChains, const TrigConf::CTPConfig *confItems)
Callback functions helping in metadata reading/writing
void setUseIncidents (const bool flag)
virtual StatusCode endInputFile ()
 Function called when the currently open input file got completely processed.
virtual StatusCode metaDataStop ()
 Function called when the tool should write out its metadata.

Protected Attributes

HLT::TrigNavStructurem_navigation = nullptr

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

std::vector< uint32_t > * getKeys ()
void setForceConfigUpdate (bool b, bool forceForAllSlots=false)
bool getForceConfigUpdate ()
TrigDecisionTooloperator= (const TrigDecisionTool &)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

SG::SlotSpecificObj< std::vector< uint32_t > > m_configKeysCache
 cache for config keys.
SG::SlotSpecificObj< std::atomic< bool > > m_forceConfigUpdate
 Cache for registering new input files.
PublicToolHandle< TrigConf::ITrigConfigToolm_configTool {this, "ConfigTool", ""}
ServiceHandle< TrigConf::ITrigConfigSvcm_configSvc {this, "TrigConfigSvc", "TrigConf::xAODConfigSvc/xAODConfigSvc"}
 trigger configuration service handle
Gaudi::Property< bool > m_useOldEventInfoDecisionFormat
SG::ReadHandleKey< EventInfom_oldEventInfoKey
SG::ReadHandleKey< TrigDec::TrigDecisionm_oldDecisionKey
ToolHandle< HLT::Navigationm_fullNavigation {this, "Navigation", "HLT::Navigation/Navigation"}
Gaudi::Property< bool > m_useOldAODDecisionInput
HLT::StandaloneNavigation m_standaloneNavigation
Gaudi::Property< bool > m_acceptMultipleInstance
SG::ReadHandleKey< xAOD::TrigNavigationm_navigationKey
Gaudi::Property< std::map< std::string, std::string > > m_publicChainGroups
MetaStore_t m_inputMetaStore
 Object accessing the input metadata store.
MetaStore_t m_outputMetaStore
 Object accessing the output metadata store.
bool m_beginInputFileCalled
 Flag helping to discover when the tool misses the opening of the first input file.
bool m_useIncidents
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared
SG::SlotSpecificObj< Trig::CacheGlobalMemorym_cacheGlobalMemory
Trig::ExpertMethods m_expertMethods
Run 3 properties
Gaudi::Property< std::string > m_navigationFormat
 Note: Temporary property.
SG::ReadHandleKey< TrigCompositeUtils::DecisionContainerm_HLTSummaryKeyIn
SG::ReadHandleKey< xAOD::TrigDecisionm_decisionKey

Detailed Description

Definition at line 61 of file TrigDecisionTool.h.

Member Typedef Documentation

◆ MetaStore_t

Type of the metadata store object in Athena.

Definition at line 66 of file AsgMetadataTool.h.

◆ MetaStorePtr_t

Type of the metadata store pointer in standalone mode.

Definition at line 68 of file AsgMetadataTool.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TrigDecisionTool()

Trig::TrigDecisionTool::TrigDecisionTool ( const std::string & name)

Definition at line 32 of file TrigDecisionTool.cxx.

33 : Logger(this)
34 , asg::AsgMetadataTool(name)
35{
36#ifdef XAOD_ANALYSIS // AthAnalysis or AnalysisBase
38#else //full Athena env
40#endif
41}
Logger()=default
HLT::TrigNavStructure * m_navigation
HLT::StandaloneNavigation m_standaloneNavigation
ToolHandle< HLT::Navigation > m_fullNavigation

Member Function Documentation

◆ ancestor()

template<class T>
Feature< T > Trig::DecisionAccess::ancestor ( const HLT::TriggerElement * te,
std::string label = "" ) const
inherited

gives back feature matching (by seeding relation)

Parameters
te- is trigger element to start with, not that thanks to conversion operators Feature object can be given here as well

◆ ancestors()

template<class T>
std::vector< Trig::Feature< T > > Trig::DecisionAccess::ancestors ( const HLT::TriggerElement * te,
std::string label = "",
unsigned int condition = TrigDefs::Physics,
const std::string & teName = "" ) const
inherited

gives back features matching (by seeding relation) - will also flatten containers if necessary

Parameters
te- is trigger element to start with, not that thanks to conversion operators Feature object can be given here as well

◆ associateToEventView() [1/4]

template<class CONTAINER>
std::pair< typename CONTAINER::const_iterator, typename CONTAINER::const_iterator > Trig::DecisionAccess::associateToEventView ( typename SG::ReadHandle< CONTAINER > & inViewContainer,
const ElementLink< TrigRoiDescriptorCollection > & matchROI ) const
inherited

Runs 3+.

Returns a range over a container which are associated with a particular EventView instance from online. Instance mapping done via supplied ElementLink<TrigRoiDescriptorCollection>.

Parameters
[in]inViewContainerThe ReadHandle of the collection which was produced online inside an EventView.
[in]roiTrigRoiDescriptor used to seed the desired EventView.
Returns
Pair of iterators spanning a range of indices over the collection accessed through the ReadHandleKey

◆ associateToEventView() [2/4]

template<class CONTAINER>
std::pair< typename CONTAINER::const_iterator, typename CONTAINER::const_iterator > Trig::DecisionAccess::associateToEventView ( typename SG::ReadHandle< CONTAINER > & inViewContainer,
const TrigCompositeUtils::Decision * decisionObject,
const std::string & roiName = TrigCompositeUtils::roiString() ) const
inherited

Runs 3+.

Returns a range over a container which are associated with a particular EventView instance from online. Instance mapping done via an ElementLink<TrigRoiDescriptorCollection> obtained from the supplied Decision object pointer

Parameters
[in]inViewContainerThe ReadHandle of the collection which was produced online inside an EventView.
[in]decisionObjectDecision node from which a TrigRoiDescriptor can be located.
[in]roiNameName of the TrigRoiDescriptor inside the Navigation.
Returns
Pair of iterators spanning a range of indices over the collection accessed through the ReadHandleKey

◆ associateToEventView() [3/4]

template<class CONTAINER, class FEATURE_CONTAINER>
std::pair< typename CONTAINER::const_iterator, typename CONTAINER::const_iterator > Trig::DecisionAccess::associateToEventView ( typename SG::ReadHandle< CONTAINER > & inViewContainer,
const TrigCompositeUtils::LinkInfo< FEATURE_CONTAINER > linkInfo,
const std::string & roiName = TrigCompositeUtils::roiString() ) const
inherited

Runs 3+.

Returns a range over a container which are associated with a particular EventView instance from online. Instance mapping done via an ElementLink<TrigRoiDescriptorCollection> obtained from the supplied LinkInfo

Parameters
[in]inViewContainerThe ReadHandle of the collection which was produced online inside an EventView.
[in]linkInfoLinkInfo from which a TrigRoiDescriptor can be located.
[in]roiNameName of the TrigRoiDescriptor inside the Navigation.
Returns
Pair of iterators spanning a range of indices over the collection accessed through the ReadHandleKey

◆ associateToEventView() [4/4]

template<class CONTAINER>
std::pair< typename CONTAINER::const_iterator, typename CONTAINER::const_iterator > Trig::DecisionAccess::associateToEventView ( typename SG::ReadHandle< CONTAINER > & inViewContainer,
const uint32_t matchIndex,
const uint32_t matchKey = 0,
const bool isFullscan = false ) const
inherited

Runs 3+.

Returns a range over a container which are associated with a particular EventView instance from online. Instance mapping done via matchIndex and optional matchKey (leave matchKey = 0 to not cut on this).

Parameters
[in]inViewContainerThe ReadHandle of the collection which was produced online inside an EventView.
[in]matchIndexThe index of the desired EventView.
[in]matchKeyOptional. SGKey of the index of the desired EventView (collection hosting the ROI used to span the Event View)
[in]isFullscanOptional. If true, and inViewContainer has no viewIndex decorations, then return iterators over the full span of the inViewContainer instead of throwing an exception. This allows the associateToEventView interface to be used also for non-EventView containers, with the FS ROI used to indicate that the lack of decorations is expected rather than being indicative of a configuration problem.
Returns
Pair of iterators spanning a range of indices over the collection accessed through the ReadHandleKey

◆ beginEvent()

StatusCode Trig::TrigDecisionTool::beginEvent ( )
virtual

Function called when a new events is loaded.

Dummy implementation that can be overridden by the derived tool.

Reimplemented from asg::AsgMetadataTool.

Definition at line 163 of file TrigDecisionTool.cxx.

163 {
164
165 CacheGlobalMemory* cgmPtr = cgm();
166 cgmPtr->setDecisionKeyPtr( &m_decisionKey );
167 cgmPtr->setRun2NavigationKeyPtr( &m_navigationKey );
168 cgmPtr->setRun3NavigationKeyPtr( &m_HLTSummaryKeyIn );
169
170 size_t slot = 0;
171#ifndef XAOD_STANDALONE // AthAnalysis or full Athena
172 cgmPtr->setStore(&*evtStore()); // Can change based on event slot
173 slot = Gaudi::Hive::currentContext().slot();
174#ifndef XAOD_ANALYSIS // Full Athena only
175 cgmPtr->setOldDecisionKeyPtr( &m_oldDecisionKey );
176 cgmPtr->setOldEventInfoKeyPtr( &m_oldEventInfoKey );
177#endif // End Full Athena only
178#endif // End AthAnalysis or Full Athena
179
180 // inform the CGM that we are on a new event
181 ATH_MSG_VERBOSE("beginEvent: invalidating CacheGlobalMemory");
182 cgmPtr->reset_decision();
183 TrigConf::IIHLTConfigSvc *iHLTConfig{nullptr};
184 TrigConf::IILVL1ConfigSvc *iL1Config{nullptr};
185#ifndef XAOD_STANDALONE
186 if (!m_configSvc.empty())
187 {
188 iHLTConfig = m_configSvc.get();
189 iL1Config = m_configSvc.get();
190 }
191 else
192#endif
193 {
194 iHLTConfig = m_configTool.operator->();
195 iL1Config = m_configTool.operator->();
196 }
197
198 ATH_MSG_DEBUG("beginEvent: check if config update is necessary");
199 std::vector<uint32_t> newKeys = {
200 iHLTConfig->masterKey(),
201 iL1Config->lvl1PrescaleKey(),
202 iHLTConfig->hltPrescaleKey(),
203 iL1Config->bunchGroupSetKey()
204 };
205 if (*getKeys() != newKeys or getForceConfigUpdate())
206 {
207 ATH_MSG_INFO("Updating config in slot " << slot
208 << " with SMK: " << newKeys[0]
209 << " and L1PSK: " << newKeys[1]
210 << " and HLTPSK: " << newKeys[2]
211 << " and BGSK: " << newKeys[3]
212 << " getForceConfigUpdate()=" << getForceConfigUpdate()
213 << " HLT Chains: " << iHLTConfig->chains().size());
214 *getKeys() = newKeys;
215 configurationUpdate( &iHLTConfig->chains(), iL1Config->ctpConfig() );
217 }
218 else
219 ATH_MSG_DEBUG("Cached trigger configuration keys match for this event in slot " << slot);
220
221 return StatusCode::SUCCESS;
222}
#define ATH_MSG_INFO(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
ServiceHandle< StoreGateSvc > & evtStore()
virtual const HLTChainList & chains() const =0
accessor to HLT chains
virtual uint32_t masterKey() const =0
accessor to the configuration super masterkey
virtual uint32_t hltPrescaleKey() const =0
accessor to the configuration hlt prescale key
virtual uint32_t lvl1PrescaleKey() const =0
accessor to the configuration lvl1 prescale key
virtual uint32_t bunchGroupSetKey() const =0
accessor to the LVL1 bunch group set key
virtual const CTPConfig * ctpConfig() const =0
Provides the LVL1 trigger menu.
void configurationUpdate(const TrigConf::HLTChainList *confChains, const TrigConf::CTPConfig *confItems)
virtual Trig::CacheGlobalMemory * cgm()
SG::ReadHandleKey< xAOD::TrigDecision > m_decisionKey
SG::ReadHandleKey< EventInfo > m_oldEventInfoKey
ServiceHandle< TrigConf::ITrigConfigSvc > m_configSvc
trigger configuration service handle
void setForceConfigUpdate(bool b, bool forceForAllSlots=false)
SG::ReadHandleKey< xAOD::TrigNavigation > m_navigationKey
SG::ReadHandleKey< TrigDec::TrigDecision > m_oldDecisionKey
PublicToolHandle< TrigConf::ITrigConfigTool > m_configTool
std::vector< uint32_t > * getKeys()
SG::ReadHandleKey< TrigCompositeUtils::DecisionContainer > m_HLTSummaryKeyIn

◆ beginInputFile()

StatusCode Trig::TrigDecisionTool::beginInputFile ( )
virtual

Function called when a new input file is opened.

Dummy implementation that can be overridden by the derived tool.

Reimplemented from asg::AsgMetadataTool.

Definition at line 224 of file TrigDecisionTool.cxx.

224 {
225 // We need to update the cached configuration when switching to a new input
226 // file:
227 //have to do this at the next beginEvent, because the event info isn't ready at this point (e.g. if the file has no events!)
228 ATH_MSG_VERBOSE("Trig::TrigDecisionTool::beginInputFile: setForceConfigUpdate(true, forceForAllSlots=true)");
229 setForceConfigUpdate(true, /*forceForAllSlots=*/ true);
230 return StatusCode::SUCCESS;
231}

◆ cgm() [1/2]

Trig::CacheGlobalMemory * Trig::TrigDecisionToolCore::cgm ( )
protectedvirtualinherited

Implements Trig::ChainGroupFunctions.

Definition at line 30 of file TrigDecisionToolCore.cxx.

30 {
31 Trig::CacheGlobalMemory* ptr = m_cacheGlobalMemory.get();
32 // A consequence of placing the cache in a slot-specific wrapper
33 ptr->navigation (m_navigation);
34 return ptr;
35}
SG::SlotSpecificObj< Trig::CacheGlobalMemory > m_cacheGlobalMemory
void * ptr(T *p)
Definition SGImplSvc.cxx:74

◆ cgm() [2/2]

const Trig::CacheGlobalMemory * Trig::TrigDecisionToolCore::cgm ( ) const
protectedvirtualinherited

Implements Trig::ChainGroupFunctions.

Definition at line 37 of file TrigDecisionToolCore.cxx.

37 {
38 const Trig::CacheGlobalMemory* ptr = m_cacheGlobalMemory.get();
39 // A consequence of placing the cache in a slot-specific wrapper
40 Trig::CacheGlobalMemory* p ATLAS_THREAD_SAFE = const_cast<Trig::CacheGlobalMemory*>(ptr);
41 HLT::TrigNavStructure* navigation ATLAS_THREAD_SAFE = m_navigation;
42 p->navigation (navigation);
43 return ptr;
44}

◆ ChainGroupInitialize()

void Trig::ChainGroupFunctions::ChainGroupInitialize ( )
protectedinherited

Definition at line 25 of file ChainGroupFunctions.cxx.

25 {
26 // all triggers
27 getChainGroup(".*");
28 // all L1 triggers
29 getChainGroup("L1_.*");
30 // all L2 triggers
31 getChainGroup("L2_.*");
32 // all EF triggers
33 getChainGroup("EF_.*");
34 // all merged L2EF triggers
35 getChainGroup("HLT_.*");
36}
const Trig::ChainGroup * getChainGroup(const std::vector< std::string > &patterns, TrigDefs::Group props=TrigDefs::Group::Default) const
Create/get chain group (.

◆ configurationUpdate()

void Trig::ConfigurationAccess::configurationUpdate ( const TrigConf::HLTChainList * confChains,
const TrigConf::CTPConfig * confItems )
protectedinherited

Definition at line 26 of file ConfigurationAccess.cxx.

27 {
28 // this is the update method which is called whenever a lower level element has changed
29 // or needs to be changed
30 cgm()->update(confChains, ctp);
31}
void update(const TrigConf::HLTChainList *confChains, const TrigConf::CTPConfig *ctp)
Updates configuration of the chain groups (i.e.
virtual Trig::CacheGlobalMemory * cgm()=0

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

◆ endInputFile()

StatusCode asg::AsgMetadataTool::endInputFile ( )
protectedvirtualinherited

Function called when the currently open input file got completely processed.

Dummy implementation that can be overridden by the derived tool.

Reimplemented in BookkeeperDumperTool, BookkeeperTool, xAODMaker::TriggerMenuMetaDataTool, and xAODMaker::TruthMetaDataTool.

Definition at line 193 of file AsgMetadataTool.cxx.

193 {
194
195 // Return gracefully:
196 return StatusCode::SUCCESS;
197 }

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

◆ ExperimentalAndExpertMethods()

const Trig::ExpertMethods & Trig::TrigDecisionToolCore::ExperimentalAndExpertMethods ( ) const
inlineinherited

Definition at line 59 of file TrigDecisionToolCore.h.

59{ return m_expertMethods; }
Trig::ExpertMethods m_expertMethods

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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

◆ features() [1/5]

template<class CONTAINER>
std::vector< TrigCompositeUtils::LinkInfo< CONTAINER > > Trig::DecisionAccess::features ( const std::string & chainGroupName,
const unsigned int condition = TrigDefs::Physics,
const std::string & containerSGKey = "",
const unsigned int featureCollectionMode = TrigDefs::lastFeatureOfType,
const std::string & navElementLinkKey = TrigCompositeUtils::featureString(),
const int restrictToLegIndex = -1 ) const
inherited

Runs 3+.

Returns features related to given chain

Parameters
[in]groupChain group to return features for.
[in]conditionCondition requirement. Only TrigDefs::Physics and TrigDefs::includeFailedDecisions are supported.
[in]containerSGKeyOptional requirement to return only features within the specified container name. Not checked if not specified.
[in]featureCollectionModeFor lastFeatureOfType, stop exploring each route through the navigation once one matching feature has been found.
[in]navElementLinkKeyOptional name of element link as saved online. The "feature" link is enforced, others may have been added.
[in]restrictToLegIndexOptional index of a leg for mult-leg chains. Features will only be returned on the specified leg. Default is all legs.
Returns
Vector of LinkInfo, where each entry wraps an ElementLink to the feature, and the Decision object it came from.

◆ features() [2/5]

Trig::FeatureContainer Trig::DecisionAccess::features ( const std::string & chainName = "EF_.*",
unsigned int condition = TrigDefs::Physics ) const
inherited

Runs 1, 2.

Returns features related to given chain

Definition at line 136 of file DecisionAccess.cxx.

97 {
98 const Trig::ChainGroup *g = cgm()->createChainGroup(Trig::convertStringToVector(chain));
99 return features(g,condition);
100}
const Trig::ChainGroup * createChainGroup(const std::vector< std::string > &patterns, const std::string &alias="", TrigDefs::Group props=TrigDefs::Group::Default) const
creates new chain group
FeatureContainer features(const Trig::ChainGroup *group, unsigned int condition=TrigDefs::Physics) const
Runs 1, 2.
std::vector< std::string > convertStringToVector(const std::string &triggerNames)
makes a split of list of chains into the vector of chains

◆ features() [3/5]

template<class CONTAINER>
std::vector< TrigCompositeUtils::LinkInfo< CONTAINER > > Trig::DecisionAccess::features ( const Trig::ChainGroup * group,
const unsigned int condition = TrigDefs::Physics,
const std::string & containerSGKey = "",
const unsigned int featureCollectionMode = TrigDefs::lastFeatureOfType,
const std::string & navElementLinkKey = TrigCompositeUtils::featureString(),
const int restrictToLegIndex = -1 ) const
inherited

Runs 3+.

Returns all features related to given chain group

Parameters
[in]groupChain group to return features for.
[in]conditionCondition requirement. Only TrigDefs::Physics and TrigDefs::includeFailedDecisions are supported.
[in]containerSGKeyOptional requirement to return only features within the specified container name. Not checked if not specified.
[in]featureCollectionModeFor lastFeatureOfType, stop exploring each route through the navigation once one matching feature has been found.
[in]navElementLinkKeyOptional name of element link as saved online. The "feature" link is enforced, others may have been added.
[in]restrictToLegIndexOptional index of a leg for mult-leg chains. Features will only be returned on the specified leg. Default is all legs.
Returns
Vector of LinkInfo, where each entry wraps an ElementLink to the feature, and the Decision object it came from.

◆ features() [4/5]

Trig::FeatureContainer Trig::DecisionAccess::features ( const Trig::ChainGroup * group,
unsigned int condition = TrigDefs::Physics ) const
inherited

Runs 1, 2.

Returns all features related to given chain group

Definition at line 130 of file DecisionAccess.cxx.

92 {
93 return chain->features(condition);
94}

◆ features() [5/5]

template<class CONTAINER>
std::vector< TrigCompositeUtils::LinkInfo< CONTAINER > > Trig::DecisionAccess::features ( const Trig::FeatureRequestDescriptor & featureRequest) const
inherited

Runs 3+.

Returns all features related to given chain group

Parameters
[in]featureRequestHelper object which encapsulates all configurable options of a request for features from the TDT
Returns
Vector of LinkInfo, where each entry wraps an ElementLink to the feature, and the Decision object it came from.

◆ finalize()

StatusCode Trig::TrigDecisionTool::finalize ( )
virtual

Reimplemented from Trig::TrigDecisionToolCore.

Definition at line 234 of file TrigDecisionTool.cxx.

234 {
235 // release all chaingroups
236 m_navigation->reset(true);
237
238 --s_instances;
239
240 ATH_MSG_INFO("Finalized");
241 return StatusCode::SUCCESS;
242}
static std::atomic< int > s_instances
Number of TDT instances.

◆ getBGCode()

char Trig::DecisionAccess::getBGCode ( ) const
inherited

get the bunch group code bit X=1: BG X fired (X=0..7) use: bool BGXfired = BGCode & (0x1<<X)

Definition at line 103 of file DecisionAccess.cxx.

103 {
104 if( ! cgm()->assert_decision() ) {
105 ATH_MSG_ERROR("Something went wrong in decoding the trigger decision");
106 return 0;
107 }
108 return cgm()->m_bgCode;
109}
#define ATH_MSG_ERROR(x)
char m_bgCode
the encoded bunchgroup information
virtual Trig::CacheGlobalMemory * cgm()=0

◆ getChainGroup() [1/2]

const Trig::ChainGroup * Trig::ChainGroupFunctions::getChainGroup ( const std::string & pattern,
TrigDefs::Group props = TrigDefs::Group::Default ) const
inherited

Create/get chain group (.

See also
CacheGlobalMemory)

Definition at line 41 of file ChainGroupFunctions.cxx.

44 {
45 return getChainGroup(Trig::convertStringToVector(triggerNames), props);
46}
const Trig::ChainGroup * getChainGroup(const std::vector< std::string > &patterns, TrigDefs::Group props=TrigDefs::Group::Default) const
Create/get chain group (.

◆ getChainGroup() [2/2]

const Trig::ChainGroup * Trig::ChainGroupFunctions::getChainGroup ( const std::vector< std::string > & patterns,
TrigDefs::Group props = TrigDefs::Group::Default ) const
inherited

Create/get chain group (.

See also
CacheGlobalMemory)

Definition at line 37 of file ChainGroupFunctions.cxx.

39 {
40 return cgm()->getChainGroup (triggerNames, props);
41}
const Trig::ChainGroup * getChainGroup(const std::vector< std::string > &triggerNames, TrigDefs::Group props) const

◆ getForceConfigUpdate()

bool Trig::TrigDecisionTool::getForceConfigUpdate ( )
private

Definition at line 157 of file TrigDecisionTool.cxx.

157 {
158 std::atomic<bool>* ab = m_forceConfigUpdate.get();
159 return *ab;
160}
SG::SlotSpecificObj< std::atomic< bool > > m_forceConfigUpdate
Cache for registering new input files.

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void * ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119 {
120
121#ifdef XAOD_STANDALONE
122 // In case we use @c xAOD::TEvent, we have a direct function call
123 // for this.
124 return evtStore()->event()->getKey( ptr );
125#else
126 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127 return ( proxy == nullptr ? 0 : proxy->sgkey() );
128#endif // XAOD_STANDALONE
129 }

◆ getKeys()

std::vector< uint32_t > * Trig::TrigDecisionTool::getKeys ( )
private

Definition at line 139 of file TrigDecisionTool.cxx.

139 {
140 return m_configKeysCache.get();
141}
SG::SlotSpecificObj< std::vector< uint32_t > > m_configKeysCache
cache for config keys.

◆ getListOfGroups() [1/2]

std::vector< std::string > Trig::ConfigurationAccess::getListOfGroups ( const std::string & triggerNames = ".*") const
inherited

Definition at line 39 of file ConfigurationAccess.cxx.

67 {
68 const Trig::ChainGroup *g = cgm()->createChainGroup(Trig::convertStringToVector(triggerNames));
69 return getListOfGroups(g);
70}
std::vector< std::string > getListOfGroups(const Trig::ChainGroup *chaingroup) const

◆ getListOfGroups() [2/2]

std::vector< std::string > Trig::ConfigurationAccess::getListOfGroups ( const Trig::ChainGroup * chaingroup) const
inherited

Definition at line 38 of file ConfigurationAccess.cxx.

63 {
64 return chaingroup->getListOfGroups();
65}
std::vector< std::string > getListOfGroups() const

◆ getListOfStreams() [1/2]

std::vector< std::string > Trig::ConfigurationAccess::getListOfStreams ( const std::string & triggerNames = ".*") const
inherited

Definition at line 36 of file ConfigurationAccess.cxx.

54 {
55 const Trig::ChainGroup *g = cgm()->createChainGroup(Trig::convertStringToVector(triggerNames));
56 return getListOfStreams(g);
57}
std::vector< std::string > getListOfStreams(const Trig::ChainGroup *chaingroup) const

◆ getListOfStreams() [2/2]

std::vector< std::string > Trig::ConfigurationAccess::getListOfStreams ( const Trig::ChainGroup * chaingroup) const
inherited

Definition at line 35 of file ConfigurationAccess.cxx.

50 {
51 return chaingroup->getListOfStreams();
52}
std::vector< std::string > getListOfStreams() const

◆ getListOfTriggerElements() [1/2]

std::vector< std::vector< std::string > > Trig::ConfigurationAccess::getListOfTriggerElements ( const std::string & triggerNames = ".*") const
inherited

Definition at line 42 of file ConfigurationAccess.cxx.

80 {
81 const Trig::ChainGroup *g = cgm()->createChainGroup(Trig::convertStringToVector(triggerNames));
83}
std::vector< std::vector< std::string > > getListOfTriggerElements(const Trig::ChainGroup *chaingroup) const

◆ getListOfTriggerElements() [2/2]

std::vector< std::vector< std::string > > Trig::ConfigurationAccess::getListOfTriggerElements ( const Trig::ChainGroup * chaingroup) const
inherited

Definition at line 41 of file ConfigurationAccess.cxx.

76 {
77 return chaingroup->getListOfTriggerElements();
78}
std::vector< std::vector< std::string > > getListOfTriggerElements() const

◆ getListOfTriggers() [1/2]

std::vector< std::string > Trig::ConfigurationAccess::getListOfTriggers ( const std::string & triggerNames = ".*") const
inherited

Definition at line 33 of file ConfigurationAccess.cxx.

41 {
42 const Trig::ChainGroup *g = cgm()->createChainGroup(Trig::convertStringToVector(triggerNames));
43 return getListOfTriggers(g);
44}
std::vector< std::string > getListOfTriggers(const Trig::ChainGroup *chaingroup) const

◆ getListOfTriggers() [2/2]

std::vector< std::string > Trig::ConfigurationAccess::getListOfTriggers ( const Trig::ChainGroup * chaingroup) const
inherited

Definition at line 32 of file ConfigurationAccess.cxx.

37 {
38 return chaingroup->getListOfTriggers();
39}
std::vector< std::string > getListOfTriggers() const

◆ getName()

const std::string & asg::AsgTool::getName ( const void * ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106 {
107
108#ifdef XAOD_STANDALONE
109 // In case we use @c xAOD::TEvent, we have a direct function call
110 // for this.
111 return evtStore()->event()->getName( ptr );
112#else
113 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114 static const std::string dummy = "";
115 return ( proxy == nullptr ? dummy : proxy->name() );
116#endif // XAOD_STANDALONE
117 }

◆ getNavigationFormat()

const std::string & Trig::TrigDecisionTool::getNavigationFormat ( ) const

Note: Temporary.

Definition at line 287 of file TrigDecisionTool.cxx.

287 {
288 return m_navigationFormat;
289}
Gaudi::Property< std::string > m_navigationFormat
Note: Temporary property.

◆ getPrescale() [1/2]

float Trig::ConfigurationAccess::getPrescale ( const std::string & triggerNames = "EF._*",
unsigned int condition = TrigDefs::Physics ) const
inherited

Definition at line 45 of file ConfigurationAccess.cxx.

97{
98 const Trig::ChainGroup *g = cgm()->createChainGroup(Trig::convertStringToVector(chain));
99 return getPrescale(g,condition);
100}
float getPrescale(const Trig::ChainGroup *chaingroup, unsigned int condition=TrigDefs::Physics) const

◆ getPrescale() [2/2]

float Trig::ConfigurationAccess::getPrescale ( const Trig::ChainGroup * chaingroup,
unsigned int condition = TrigDefs::Physics ) const
inherited

Definition at line 44 of file ConfigurationAccess.cxx.

90{
91 return chainGroup->getPrescale(condition);
92}

◆ getProperty()

template<class T>
const T * asg::AsgTool::getProperty ( const std::string & name) const
inherited

Get one of the tool's properties.

◆ handle()

void Trig::TrigDecisionTool::handle ( const Incident & inc)
virtual

Function receiving incidents from IncidentSvc/TEvent.

Reimplemented from asg::AsgMetadataTool.

Definition at line 246 of file TrigDecisionTool.cxx.

246 {
247 // an update configuration incident triggers the update of the configuration
248 ATH_MSG_DEBUG("got incident type:" << inc.type() << " source: " << inc.source() );
249
250 if (inc.type() == IncidentType::BeginEvent) {
251 ATH_MSG_VERBOSE("Obtained IncidentType::BeginEvent via Trig::TrigDecisionTool::handle");
252 if (beginEvent().isFailure()) {
253 throw std::runtime_error("In Trig::TrigDecisionTool::handle beginEvent() returned StatusCode::FAILURE");
254 }
255 }
256 else if (inc.type() == IncidentType::BeginInputFile) {
257 ATH_MSG_VERBOSE("Obtained IncidentType::BeginInputFile via Trig::TrigDecisionTool::handle");
258 if (beginInputFile().isFailure()) {
259 throw std::runtime_error("In Trig::TrigDecisionTool::handle beginInputFile() returned StatusCode::FAILURE");
260 }
261 }
262 else {
263 //call the parent handle
264 AsgMetadataTool::handle(inc);
265 }
266}
StatusCode beginInputFile()
Function called when a new input file is opened.
StatusCode beginEvent()
Function called when a new events is loaded.

◆ initialize()

StatusCode Trig::TrigDecisionTool::initialize ( void )
virtual

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Reimplemented from asg::AsgTool.

Definition at line 45 of file TrigDecisionTool.cxx.

45 {
47
48 if (m_navigationFormat != "TriggerElement" && m_navigationFormat != "TrigComposite") {
49 ATH_MSG_ERROR("NavigationFormat property must be one of 'TriggerElement' for Run 1, 2 triggered input or 'TrigComposite' for Run 3+ triggered input");
50 return StatusCode::FAILURE;
51 }
52
53
54#ifndef XAOD_ANALYSIS // Full Athena only
55 ATH_CHECK(m_oldDecisionKey.initialize( m_useOldAODDecisionInput ) ); // Read TrigDec::TrigDecision
57#endif
58
59 ATH_CHECK(m_HLTSummaryKeyIn.initialize(m_navigationFormat == "TrigComposite"));
60 ATH_CHECK(m_navigationKey.initialize(m_navigationFormat == "TriggerElement"));
61 ATH_CHECK(m_decisionKey.initialize( !m_useOldAODDecisionInput )); // Read xAOD::TrigDecision. Mutually exclusive with reading TrigDec::TrigDecision
62
64 if ( s_instances > 1) {
65 ATH_MSG_WARNING("Multiple TrigDecisionTool instances created. "
66 "This is not efficent from performance perspective. "
67 "Access of the same EDM objects will give warnings." );
69 ATH_MSG_ERROR("Will not accept multiple instances. "
70 "Set 'AcceptMultipleInstance' to overwrite this behavior.");
71 return StatusCode::FAILURE;
72 }
73 }
74
75 ATH_MSG_INFO("Initializing Trig::TrigDecisionTool (standalone version even for athena)");
76
77#ifndef XAOD_STANDALONE // AthAnalysis or full Athena
78 // We setup the TrigConfigSvc interface
79 // This is the standalone xAOD ConfigSvc
80 // In Run 3 the standalone xAOD ConfigSvc is useable in both RAWtoALL jobs and from ESD, AOD.
81
82 if(m_configSvc.empty()) {
83 ATH_MSG_DEBUG("No TrigConfigSvc provided. Using ConfigTool instead...");
84 CHECK( m_configTool.retrieve()); //use configTool if no configSvc available
85 } else {
86
87 m_configTool.disable();
88
89 ATH_MSG_DEBUG("Fetching " << m_configSvc.typeAndName());
90 ATH_CHECK(m_configSvc.retrieve());
91
92 // call update if there is anything in config svc
93 if ( m_configSvc->ctpConfig() ) {
94 configurationUpdate( &m_configSvc->chains(), m_configSvc->ctpConfig() );
95 }
96 }
97#else // AnalysisBase
98 ATH_CHECK(m_configTool.retrieve());
99#endif
100
101#ifndef XAOD_ANALYSIS // Full athena only
102 if (m_navigationFormat == "TriggerElement") {
103 ATH_CHECK(m_fullNavigation.retrieve());
104 }
105#endif
106
108
109 cgm()->setStore(&*evtStore()); // Cache must be updated per-event too (when running with multiple slots)
110
111#ifndef XAOD_STANDALONE // AthAnalysis or full Athena
112 ServiceHandle<IIncidentSvc> incSvc("IncidentSvc",name());
113 if (incSvc.retrieve().isFailure()) {
114 ATH_MSG_ERROR("Cannot retrieve IncidentSvc");
115 return StatusCode::FAILURE;
116 }
117
118 long int pri=-1; //ensure happens *after* TrigConfxAOD tool ... use -1 priority
119 incSvc->removeListener( this, "BeginEvent"); //beginEvent is added by AsgMetadataTool already! ...DONT ADD IT AGAIN ... especially at priority 100!
120 incSvc->addListener( this, "BeginEvent", pri );
121 //do the same adjustment for the BeginInputFile incident, just to be safe
122 incSvc->removeListener( this, IncidentType::BeginInputFile );
123 incSvc->addListener( this, IncidentType::BeginInputFile, pri, true/*rethrow*/);
124#endif
125
126 ATH_MSG_INFO("Initialized TDT" );
127
128 std::map<std::string, std::string>::const_iterator pIt;
129 for ( pIt = m_publicChainGroups.begin(); pIt != m_publicChainGroups.end(); ++pIt ) {
130 std::vector<std::string> patterns;
131 patterns.push_back(pIt->second);
132 cgm()->createChainGroup(patterns, pIt->first);
133 ATH_MSG_INFO("created Public Chain Group " << pIt->first << " with pattern: " << pIt->second );
134 }
135
136 return StatusCode::SUCCESS;
137}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
#define CHECK(...)
Evaluate an expression and check for errors.
void setStore(asg::EventStoreType *store)
Set the event store to be used by the object.
const HLT::TrigNavStructure * navigation() const
Gaudi::Property< bool > m_useOldEventInfoDecisionFormat
Gaudi::Property< std::map< std::string, std::string > > m_publicChainGroups
Gaudi::Property< bool > m_acceptMultipleInstance
Gaudi::Property< bool > m_useOldAODDecisionInput
std::vector< std::string > patterns
Definition listroot.cxx:187

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ inputMetaStore()

AsgMetadataTool::MetaStorePtr_t asg::AsgMetadataTool::inputMetaStore ( ) const
inherited

Accessor for the input metadata store.

Definition at line 93 of file AsgMetadataTool.cxx.

93 {
94
95#ifdef XAOD_STANDALONE
96 return &m_inputMetaStore;
97#else // XAOD_STANDALONE
98 return m_inputMetaStore;
99#endif // XAOD_STANDALONE
100 }
MetaStore_t m_inputMetaStore
Object accessing the input metadata store.

◆ isPassed() [1/3]

bool Trig::TrigDecisionTool::isPassed ( const std::string & chain) const
virtual

Implementation of the ITrigDecisionTool function.

Implements Trig::ITrigDecisionTool.

Definition at line 276 of file TrigDecisionTool.cxx.

276 {
277 return TrigDecisionToolCore::isPassed(chain);
278}
bool isPassed(const Trig::ChainGroup *chaingroup, unsigned int condition=TrigDefs::Physics) const
true if given group of chains passed

◆ isPassed() [2/3]

bool Trig::TrigDecisionTool::isPassed ( const std::string & chain,
unsigned int condition ) const
virtual

true if given chain passed

See also
DecisionAccess::isPassed(const Trig::ChainGroup*, unsigned int)
Trig::DecisionAccess
Trig::ITrigDecisionTool

Implements Trig::ITrigDecisionTool.

Definition at line 270 of file TrigDecisionTool.cxx.

270 {
271 return TrigDecisionToolCore::isPassed(chain, condition);
272}

◆ isPassed() [3/3]

bool Trig::DecisionAccess::isPassed ( const Trig::ChainGroup * chaingroup,
unsigned int condition = TrigDefs::Physics ) const
inherited

true if given group of chains passed

See also
Trig::ChainGroup
TrigDefs::Conditions

Definition at line 65 of file DecisionAccess.cxx.

36{
37 return chainGroup->isPassed(condition);
38}

◆ isPassedBits() [1/2]

unsigned int Trig::TrigDecisionTool::isPassedBits ( const std::string & chain) const
virtual

Implementation of the ITrigDecisionTool function.

Implements Trig::ITrigDecisionTool.

Definition at line 281 of file TrigDecisionTool.cxx.

281 {
282
284}
unsigned int isPassedBits(const Trig::ChainGroup *chaingroup) const
Return expert-level information about the various trigger flags as a bit mask.

◆ isPassedBits() [2/2]

unsigned int Trig::DecisionAccess::isPassedBits ( const Trig::ChainGroup * chaingroup) const
inherited

Return expert-level information about the various trigger flags as a bit mask.

Note: this does not accept a conditions flag – the prescription is always enforceLogicalFlow. The mask can be comprehended using the following constants from TrigDefs:: EF_passedRaw EF_passThrough EF_prescaled EF_resurrected L2_passedRaw L2_passThrough L2_prescaled L2_resurrected L1_isPassedAfterPrescale L1_isPassedBeforePrescale L1_isPassedAfterVeto

Definition at line 110 of file DecisionAccess.cxx.

68{
69 return chainGroup->isPassedBits();
70}

◆ isPassedBitsForEach() [1/2]

std::vector< unsigned int > Trig::DecisionAccess::isPassedBitsForEach ( const std::string & chain) const
inherited

Definition at line 85 of file DecisionAccess.cxx.

86{
87 const Trig::ChainGroup *g = cgm()->createChainGroup(Trig::convertStringToVector(chain));
88 return g->isPassedBitsForEach();
89}

◆ isPassedBitsForEach() [2/2]

std::vector< unsigned int > Trig::DecisionAccess::isPassedBitsForEach ( const Trig::ChainGroup * chaingroup) const
inherited

Return the result of isPassedBits for each chain in the group.

Definition at line 79 of file DecisionAccess.cxx.

80{
81 return chainGroup->isPassedBitsForEach();
82}

◆ isPassedForEach() [1/2]

std::vector< bool > Trig::DecisionAccess::isPassedForEach ( const std::string & chain,
unsigned int condition = TrigDefs::Physics ) const
inherited

return decision for each chain defined by given pattern

See also
Trig::ChainGroup
TrigDefs::Conditions

Definition at line 60 of file DecisionAccess.cxx.

62{
63 const Trig::ChainGroup *g = cgm()->createChainGroup(Trig::convertStringToVector(chain));
64 return g->isPassedForEach(condition);
65}

◆ isPassedForEach() [2/2]

std::vector< bool > Trig::DecisionAccess::isPassedForEach ( const Trig::ChainGroup * chainGroup,
unsigned int condition = TrigDefs::Physics ) const
inherited

return decision for each chain in group

See also
Trig::ChainGroup
TrigDefs::Conditions

Definition at line 53 of file DecisionAccess.cxx.

55{
56 return chainGroup->isPassedForEach(condition);
57}
std::vector< bool > isPassedForEach(unsigned int condition=TrigDefs::Physics) const
return vector with isPassed decision for each chain

◆ metaDataStop()

StatusCode asg::AsgMetadataTool::metaDataStop ( )
protectedvirtualinherited

Function called when the tool should write out its metadata.

Dummy implementation that can be overridden by the derived tool.

Reimplemented in BookkeeperDumperTool, BookkeeperTool, xAODMaker::TriggerMenuMetaDataTool, and xAODMaker::TruthMetaDataTool.

Definition at line 209 of file AsgMetadataTool.cxx.

209 {
210
211 // Return gracefully:
212 return StatusCode::SUCCESS;
213 }

◆ msg() [1/2]

MsgStream & Trig::Logger::msg ( ) const
inline

Definition at line 29 of file Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/Logger.h.

29 {
30 if (s_logger) return s_logger->msg();
31 else throw std::runtime_error("TrigDecisionTool Logger not initialized.");
32 }

◆ msg() [2/2]

MsgStream & Trig::Logger::msg ( const MSG::Level lvl) const
inline

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101 {
102
103 return MSG::name( msg().level() );
104 }
MsgStream & msg() const
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition MsgLevel.cxx:19

◆ msgLvl()

bool Trig::Logger::msgLvl ( const MSG::Level lvl) const
inline

Definition at line 34 of file Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/Logger.h.

34{ return s_logger && s_logger->msgLvl(lvl); }

◆ operator=()

TrigDecisionTool & Trig::TrigDecisionTool::operator= ( const TrigDecisionTool & )
private

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ outputMetaStore()

AsgMetadataTool::MetaStorePtr_t asg::AsgMetadataTool::outputMetaStore ( ) const
inherited

Accessor for the output metadata store.

Definition at line 102 of file AsgMetadataTool.cxx.

102 {
103
104#ifdef XAOD_STANDALONE
105 return &m_outputMetaStore;
106#else // XAOD_STANDALONE
107 return m_outputMetaStore;
108#endif // XAOD_STANDALONE
109 }
MetaStore_t m_outputMetaStore
Object accessing the output metadata store.

◆ print()

◆ 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< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
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)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setForceConfigUpdate()

void Trig::TrigDecisionTool::setForceConfigUpdate ( bool b,
bool forceForAllSlots = false )
private

Definition at line 143 of file TrigDecisionTool.cxx.

143 {
144
145 if (forceForAllSlots) {
146 for (std::atomic<bool>& ab : m_forceConfigUpdate) {
147 ab = b;
148 }
149 }
150 else { // only current slot
151 std::atomic<bool>* ab = m_forceConfigUpdate.get();
152 (*ab) = b;
153 }
154}

◆ setUseIncidents()

void asg::AsgMetadataTool::setUseIncidents ( const bool flag)
inlineprotectedinherited

Definition at line 132 of file AsgMetadataTool.h.

133 {
135 }
bool flag
Definition master.py:29

◆ sysInitialize()

StatusCode asg::AsgMetadataTool::sysInitialize ( )
virtualinherited

Function initialising the tool in the correct way in Athena.

This function is used to set up the callbacks from IncidentSvc in Athena at the right time during initialisation, without the user having to do anything special in his/her code.

Reimplemented from AthCommonDataStore< AthCommonMsg< AlgTool > >.

Definition at line 115 of file AsgMetadataTool.cxx.

115 {
116
117#ifndef XAOD_STANDALONE
118 if (m_useIncidents) {
119 // Connect to the IncidentSvc:
120 ServiceHandle< IIncidentSvc > incSvc( "IncidentSvc", name() );
121 ATH_CHECK( incSvc.retrieve() );
122
123 // Set up the right callbacks: don't rethrow exceptions, any failure and we should end
124 incSvc->addListener( this, IncidentType::BeginEvent, 0, false );
125 }
126 // Let the base class do its thing:
127 ATH_CHECK( AlgTool::sysInitialize() );
128
129#endif // not XAOD_STANDALONE
130
131 // Return gracefully:
132 return StatusCode::SUCCESS;
133 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_acceptMultipleInstance

Gaudi::Property<bool> Trig::TrigDecisionTool::m_acceptMultipleInstance
private
Initial value:
{this, "AcceptMultipleInstance", false,
"Allow multiple TrigDecisionTool instances"}

Definition at line 153 of file TrigDecisionTool.h.

153 {this, "AcceptMultipleInstance", false,
154 "Allow multiple TrigDecisionTool instances"};

◆ m_beginInputFileCalled

bool asg::AsgMetadataTool::m_beginInputFileCalled
privateinherited

Flag helping to discover when the tool misses the opening of the first input file.

Definition at line 126 of file AsgMetadataTool.h.

◆ m_cacheGlobalMemory

SG::SlotSpecificObj<Trig::CacheGlobalMemory> Trig::TrigDecisionToolCore::m_cacheGlobalMemory
privateinherited

Definition at line 68 of file TrigDecisionToolCore.h.

◆ m_configKeysCache

SG::SlotSpecificObj< std::vector<uint32_t> > Trig::TrigDecisionTool::m_configKeysCache
private

cache for config keys.

only update CacheGlobalMemory when these change

Definition at line 117 of file TrigDecisionTool.h.

◆ m_configSvc

ServiceHandle<TrigConf::ITrigConfigSvc> Trig::TrigDecisionTool::m_configSvc {this, "TrigConfigSvc", "TrigConf::xAODConfigSvc/xAODConfigSvc"}
private

trigger configuration service handle

Definition at line 127 of file TrigDecisionTool.h.

127{this, "TrigConfigSvc", "TrigConf::xAODConfigSvc/xAODConfigSvc"};

◆ m_configTool

PublicToolHandle<TrigConf::ITrigConfigTool> Trig::TrigDecisionTool::m_configTool {this, "ConfigTool", ""}
private

Definition at line 121 of file TrigDecisionTool.h.

121{this, "ConfigTool", ""};

◆ m_decisionKey

SG::ReadHandleKey<xAOD::TrigDecision> Trig::TrigDecisionTool::m_decisionKey
private
Initial value:
{this, "TrigDecisionKey", "xTrigDecision",
"Storegate key of Trigger Decision"}

Definition at line 167 of file TrigDecisionTool.h.

167 {this, "TrigDecisionKey", "xTrigDecision",
168 "Storegate key of Trigger Decision"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_expertMethods

Trig::ExpertMethods Trig::TrigDecisionToolCore::m_expertMethods
privateinherited

Definition at line 70 of file TrigDecisionToolCore.h.

◆ m_forceConfigUpdate

SG::SlotSpecificObj< std::atomic<bool> > Trig::TrigDecisionTool::m_forceConfigUpdate
private

Cache for registering new input files.

Definition at line 118 of file TrigDecisionTool.h.

◆ m_fullNavigation

ToolHandle<HLT::Navigation> Trig::TrigDecisionTool::m_fullNavigation {this, "Navigation", "HLT::Navigation/Navigation"}
private

Definition at line 143 of file TrigDecisionTool.h.

143{this, "Navigation", "HLT::Navigation/Navigation"};

◆ m_HLTSummaryKeyIn

SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer> Trig::TrigDecisionTool::m_HLTSummaryKeyIn
private
Initial value:
{this, "HLTSummary",
"HLTNav_Summary_DAODSlimmed", "HLT summary container Key"}

Definition at line 164 of file TrigDecisionTool.h.

164 {this, "HLTSummary",
165 "HLTNav_Summary_DAODSlimmed", "HLT summary container Key"};

◆ m_inputMetaStore

MetaStore_t asg::AsgMetadataTool::m_inputMetaStore
privateinherited

Object accessing the input metadata store.

Definition at line 119 of file AsgMetadataTool.h.

◆ m_navigation

HLT::TrigNavStructure* Trig::TrigDecisionToolCore::m_navigation = nullptr
protectedinherited

Definition at line 76 of file TrigDecisionToolCore.h.

◆ m_navigationFormat

Gaudi::Property<std::string> Trig::TrigDecisionTool::m_navigationFormat
private
Initial value:
{this, "NavigationFormat", "TriggerElement",
"Allowed tokens are 'TriggerElement' or 'TrigComposite'"}

Note: Temporary property.

Definition at line 161 of file TrigDecisionTool.h.

161 {this, "NavigationFormat", "TriggerElement",
162 "Allowed tokens are 'TriggerElement' or 'TrigComposite'"};

◆ m_navigationKey

SG::ReadHandleKey<xAOD::TrigNavigation> Trig::TrigDecisionTool::m_navigationKey
private
Initial value:
{this, "NavigationKey", "TrigNavigation",
"Storegate key of Run1, Run2 Trig Navigation"}

Definition at line 156 of file TrigDecisionTool.h.

156 {this, "NavigationKey", "TrigNavigation",
157 "Storegate key of Run1, Run2 Trig Navigation"};

◆ m_oldDecisionKey

SG::ReadHandleKey<TrigDec::TrigDecision> Trig::TrigDecisionTool::m_oldDecisionKey
private
Initial value:
{this, "OldTrigDecisionKey", "TrigDecision",
"Storegate key of old pre-xAOD Decision object"}

Definition at line 140 of file TrigDecisionTool.h.

140 {this, "OldTrigDecisionKey", "TrigDecision",
141 "Storegate key of old pre-xAOD Decision object"};

◆ m_oldEventInfoKey

SG::ReadHandleKey<EventInfo> Trig::TrigDecisionTool::m_oldEventInfoKey
private
Initial value:
{this, "OldEventInfoKey", "EventInfo",
"Storegate key of old pre-xAOD EventInfo object"}

Definition at line 137 of file TrigDecisionTool.h.

137 {this, "OldEventInfoKey", "EventInfo",
138 "Storegate key of old pre-xAOD EventInfo object"};

◆ m_outputMetaStore

MetaStore_t asg::AsgMetadataTool::m_outputMetaStore
privateinherited

Object accessing the output metadata store.

Definition at line 121 of file AsgMetadataTool.h.

◆ m_publicChainGroups

Gaudi::Property< std::map<std::string,std::string> > Trig::TrigDecisionTool::m_publicChainGroups
private
Initial value:
{this, "PublicChainGroups",
std::map<std::string,std::string>(), "Pre-created chain groups"}

Definition at line 173 of file TrigDecisionTool.h.

173 {this, "PublicChainGroups",
174 std::map<std::string,std::string>(), "Pre-created chain groups"};

◆ m_standaloneNavigation

HLT::StandaloneNavigation Trig::TrigDecisionTool::m_standaloneNavigation
private

Definition at line 151 of file TrigDecisionTool.h.

◆ m_useIncidents

bool asg::AsgMetadataTool::m_useIncidents
privateinherited

Definition at line 128 of file AsgMetadataTool.h.

◆ m_useOldAODDecisionInput

Gaudi::Property<bool> Trig::TrigDecisionTool::m_useOldAODDecisionInput
private
Initial value:
{this, "UseAODDecision", false,
"For use when reading old ESD/AOD with only a TrigDec::TrigDecision and no xAOD::TrigDecision "
"or Run 1 / Run 2 RAW data where an initial TrigDec::TrigDecision needs to be converted via the TDT into xAOD"}

Definition at line 147 of file TrigDecisionTool.h.

147 {this, "UseAODDecision", false,
148 "For use when reading old ESD/AOD with only a TrigDec::TrigDecision and no xAOD::TrigDecision "
149 "or Run 1 / Run 2 RAW data where an initial TrigDec::TrigDecision needs to be converted via the TDT into xAOD"};

◆ m_useOldEventInfoDecisionFormat

Gaudi::Property<bool> Trig::TrigDecisionTool::m_useOldEventInfoDecisionFormat
private
Initial value:
{this, "UseOldEventInfoDecisionFormat", false,
"For use when reading old BS with trigger decision information available in the EventInfo"}

Definition at line 134 of file TrigDecisionTool.h.

134 {this, "UseOldEventInfoDecisionFormat", false,
135 "For use when reading old BS with trigger decision information available in the EventInfo"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: