ATLAS Offline Software
Loading...
Searching...
No Matches
RoRSeqFilter Class Reference

#include <RoRSeqFilter.h>

Inheritance diagram for RoRSeqFilter:
Collaboration diagram for RoRSeqFilter:

Public Member Functions

 RoRSeqFilter (const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode initialize () override final
 Setup input and output handles.
virtual StatusCode execute (const EventContext &ctx) const override final
 Apply this filter in-between Steps of trigger execution.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
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.
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 &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

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.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

size_t copyPassing (const TrigCompositeUtils::DecisionContainer &input, TrigCompositeUtils::DecisionContainer &output, const std::set< HLT::Identifier > &topass, const EventContext &ctx) const
 Applies generic filter to input container, keeping only the decision objects with at least one affirmative decision from the previous Stage.
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

SG::ReadHandleKeyArray< TrigCompositeUtils::DecisionContainerm_inputKeys { this, "Input", {}, "Inputs to the filter" }
SG::WriteHandleKeyArray< TrigCompositeUtils::DecisionContainerm_outputKeys { this, "Output", {}, "Output" }
Gaudi::Property< std::vector< std::string > > m_chainsProperty { this, "Chains", {}, "Chains of which this filter is concerned" }
std::set< HLT::Identifierm_chains
std::vector< std::string > m_monInputNames
Gaudi::Property< std::vector< std::vector< std::string > > > m_chainsPerInputProperty { this, "ChainsPerInput", {}, "Chains of which this filter is concerned" }
std::vector< std::set< HLT::Identifier > > m_chainsPerInput
Gaudi::Property< std::vector< std::vector< unsigned > > > m_ioMappingProperty { this, "IOMapping", {}, "Maps which inputs should be routed to which output" }
 It can be used to define a custom routing from input to output collections Example: [[0,1,3], [2]] means that inputs 0, 1, and 3 are directed to output 0, and input under the index 2 to aoutput 1 When not set the default is used.
std::vector< std::vector< unsigned > > m_ioMapping
ToolHandle< GenericMonitoringToolm_monTool { this, "MonTool", "", "Filter I/O monitoring" }
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
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

Detailed Description

Definition at line 47 of file RoRSeqFilter.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ RoRSeqFilter()

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

Definition at line 23 of file RoRSeqFilter.cxx.

24 :
25 ::AthReentrantAlgorithm( name, pSvcLocator )
26{}

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::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.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ copyPassing()

size_t RoRSeqFilter::copyPassing ( const TrigCompositeUtils::DecisionContainer & input,
TrigCompositeUtils::DecisionContainer & output,
const std::set< HLT::Identifier > & topass,
const EventContext & ctx ) const
private

Applies generic filter to input container, keeping only the decision objects with at least one affirmative decision from the previous Stage.

Considering only decisions from chains utilising this filter.

Parameters
inputKeyStoregate key of input, needed to link newly created decision objects to their parents.
outputWriteable output container to store copies of decision objects which pass the filter.
Returns
The number of decision objects which passed the filter.

Produced a selective copy of all Decision objects in the input container which possess a positive decision from at least one of the chains which this filter algorithm is configured for. This new object is linked to its parent and stored in the output collection. It will form the starting point for the next Step.

Definition at line 194 of file RoRSeqFilter.cxx.

196 {
197 size_t passCounter = 0;
198 for (const Decision* inputDecision : input) {
199
200 ATH_MSG_DEBUG("Number of positive decisions for this input is " << decisionIDs(inputDecision).size()
201 <<". Applying filter of size " << topass.size());
202
203 const DecisionIDContainer& intersection = passedDecisionIDs(inputDecision, topass);
204
205 if ( not intersection.empty() ) {
206 // This sets up the 'self' link & the 'seed' link (seeds from inputDecision)
207 Decision* decisionCopy = newDecisionIn( &output, inputDecision, filterNodeName(), ctx );
208
209 // Copy accross only the DecisionIDs which have passed through this Filter for this Decision object.
210 // WARNING: Still need to 100% confirm if the correct set to propagate forward is objDecisions or intersection.
211 // Tim M changing this from inputDecisions (all IDs) -> intersection (only passed IDs) Feb 19
212 insertDecisionIDs(intersection, decisionCopy);
213 passCounter ++;
214 if (msgLvl(MSG::DEBUG)){
215 ATH_MSG_DEBUG("Input satisfied at least one filtering chain. Chain(s) passing:");
216 for ( DecisionID id : intersection ) {
217 ATH_MSG_DEBUG( " -- " << HLT::Identifier( id ) );
218 }
219 }
220
221 } else {
222 ATH_MSG_DEBUG("No Input decisions requested by filtering chains");
223 }
224 }
225 return passCounter;
226}
#define ATH_MSG_DEBUG(x)
Decision * newDecisionIn(DecisionContainer *dc, const std::string &name="")
Helper method to create a Decision object, place it in the container and return a pointer to it.
void decisionIDs(const Decision *d, DecisionIDContainer &id)
Extracts DecisionIDs stored in the Decision object.
void insertDecisionIDs(const Decision *src, Decision *dest)
Appends the decision IDs of src to the dest decision object.
DecisionIDContainer passedDecisionIDs(const Decision *d, const T &required)
return DecisionIDs in Decision object that match the required ones
const std::string & filterNodeName()
bool msgLvl(const MSG::Level lvl) const
std::vector< std::string > intersection(std::vector< std::string > &v1, std::vector< std::string > &v2)
unsigned int DecisionID
std::set< DecisionID > DecisionIDContainer

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< 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.

◆ evtStore()

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.

◆ execute()

StatusCode RoRSeqFilter::execute ( const EventContext & ctx) const
finaloverridevirtual

Apply this filter in-between Steps of trigger execution.

Fully implicit inputs, requires Control Flow to unlock. will signal a negative filter result to the Scheduler if zero chains remain active upon termination.

Definition at line 121 of file RoRSeqFilter.cxx.

121 {
122 ATH_MSG_DEBUG ( "Executing " << name() << "..." );
123 if (Athena::Timeout::instance(ctx).reached()) {
124 ATH_MSG_ERROR("Timeout reached before " << name());
126 }
127 auto inputHandles = m_inputKeys.makeHandles( ctx );
128 auto outputHandles = m_outputKeys.makeHandles( ctx );
129
130 std::vector<bool> inputStats(inputHandles.size() + 2, false);
131 inputStats[0] = true; // position 0 for number of execs, always true
132 bool validInputs = false;
133 for ( size_t i=0; i<inputHandles.size(); i++) {
134 if( inputHandles[i].isValid() ) { // this is because input is implicit
135 validInputs = true;
136 inputStats[i+2] = true;
137 }
138 }
139 inputStats[1] = validInputs; // position 1 for number of execes with any collection valid
141 auto inputStat = Monitored::Collection<std::vector<bool>>( "stat", inputStats );
142 Monitored::Group( m_monTool, inputStat, inputName );
143
144 if (!validInputs) {
145 setFilterPassed(false, ctx);
146 ATH_MSG_DEBUG ( "No valid inputs found, filter failed. Return...." );
147 return StatusCode::SUCCESS;
148 }
149
150 ATH_MSG_DEBUG ( "Running on "<< inputHandles.size() <<" input keys" );
151
152 size_t passCounter = 0;
153
154 for ( size_t outputIndex = 0; outputIndex < m_ioMapping.size(); ++outputIndex ) {
155 bool anyPresent = false;
156 for ( unsigned inputIndex : m_ioMapping[outputIndex] ) {
157 if( not inputHandles[inputIndex].isValid() ) {
158 ATH_MSG_DEBUG( "InputHandle "<< inputHandles[inputIndex].key() <<" not present" );
159 } else if ( inputHandles[inputIndex]->empty() ) {
160 ATH_MSG_DEBUG( "InputHandle "<< inputHandles[inputIndex].key() <<" contains all rejected decisions, skipping" );
161 } else {
162 anyPresent = true;
163 }
164 }
165 if ( anyPresent ) {
166 createAndStore(outputHandles[outputIndex]);
167 DecisionContainer* output = outputHandles[outputIndex].ptr();
168 for ( auto inputIndex : m_ioMapping[outputIndex] ) {
169 if ( inputHandles[inputIndex].isValid() and not inputHandles[inputIndex]->empty() ) {
170 ATH_MSG_DEBUG( "Checking inputHandle: "<< inputHandles[inputIndex].key() <<" has " << inputHandles[inputIndex]->size() <<" elements");
171 if ( not m_chainsPerInput.empty() ) {
172 passCounter += copyPassing( *inputHandles[inputIndex], *output, m_chainsPerInput[inputIndex], ctx );
173 } else {
174 passCounter += copyPassing( *inputHandles[inputIndex], *output, m_chains, ctx );
175 }
176 ATH_MSG_DEBUG( "Recorded output key " << m_outputKeys[ outputIndex ].key() <<" of size "<<output->size() <<" at index "<< outputIndex);
177 }
178 }
179 }
180 }
181
182 setFilterPassed( passCounter != 0, ctx );
183
184 if ( msgLvl( MSG::DEBUG ) ){
185 ATH_MSG_DEBUG( "Filter " << ( filterPassed(ctx) ? "passed" : "rejected" ) );
186 for ( auto& output: outputHandles ) {
187 if( output.isValid() ) ATH_MSG_DEBUG( " "<<output.key() );
188 }
189 }
190
191 return StatusCode::SUCCESS;
192}
#define ATH_MSG_ERROR(x)
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition AtlasPID.h:878
SG::WriteHandle< DecisionContainer > createAndStore(const SG::WriteHandleKey< DecisionContainer > &key, const EventContext &ctx)
Creates and right away records the DecisionContainer with the key.
virtual std::vector< Gaudi::DataHandle * > inputHandles() const override
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
virtual bool filterPassed(const EventContext &ctx) const
virtual void setFilterPassed(bool state, const EventContext &ctx) const
static Timeout & instance()
Get reference to Timeout singleton.
Definition Timeout.h:64
SG::WriteHandleKeyArray< TrigCompositeUtils::DecisionContainer > m_outputKeys
std::set< HLT::Identifier > m_chains
ToolHandle< GenericMonitoringTool > m_monTool
size_t copyPassing(const TrigCompositeUtils::DecisionContainer &input, TrigCompositeUtils::DecisionContainer &output, const std::set< HLT::Identifier > &topass, const EventContext &ctx) const
Applies generic filter to input container, keeping only the decision objects with at least one affirm...
std::vector< std::string > m_monInputNames
std::vector< std::set< HLT::Identifier > > m_chainsPerInput
SG::ReadHandleKeyArray< TrigCompositeUtils::DecisionContainer > m_inputKeys
std::vector< std::vector< unsigned > > m_ioMapping
bool empty(TH1 *h)
@ TIMEOUT
Timeout during event processing.
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
output
Definition merge.py:16

◆ 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 & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}
An algorithm that can be simultaneously executed in multiple threads.

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }

◆ initialize()

StatusCode RoRSeqFilter::initialize ( )
finaloverridevirtual

Setup input and output handles.

Renounce all input handles. Get IDs for all configured chains.

Definition at line 29 of file RoRSeqFilter.cxx.

30{
31 CHECK( not m_inputKeys.empty() );
32 CHECK( not m_outputKeys.empty() );
33
34 CHECK( m_inputKeys.initialize() );
35 CHECK( m_outputKeys.initialize() );
36
38
39 // default IO mappnig nth input -> nth output
40 if ( m_ioMappingProperty.empty()) {
41 CHECK( m_inputKeys.size() == m_outputKeys.size() );
42 for ( unsigned i = 0; i < m_inputKeys.size(); ++i ) {
43 m_ioMapping.push_back( {i} );
44 }
45 ATH_MSG_DEBUG( "Default I/O collections mapping nth input -> nth output" );
46 } else {
48 ATH_MSG_DEBUG( "Custom I/O mapping used by the filter" );
49 }
50
51 for ( size_t i = 0; i < m_ioMapping.size(); ++i ) {
52 for ( unsigned inIndex: m_ioMapping[i] ) {
53 ATH_MSG_DEBUG("Input collection: " << m_inputKeys[inIndex] );
54 }
55 ATH_MSG_DEBUG(" Routed to output collection " << m_outputKeys[i] );
56 }
57
58 // crosscheck mapping (also the default one)
59 CHECK( m_ioMapping.size() == m_outputKeys.size() ); // all outputs will be filled
60 std::set<int> inIndices;
61 for ( auto i: m_ioMapping ) {
62 CHECK( not i.empty() ); // all outputs are connected to at least one input
63 inIndices.insert( i.begin(), i.end() );
64 }
65 CHECK( inIndices.size() == m_inputKeys.size() ); // all inputs are routed
66 for ( size_t i = 0; i < m_ioMapping.size(); ++i ) {
67 auto iset = std::set( m_ioMapping[i].begin(), m_ioMapping[i].end() );
68 for ( size_t j = i+1; j < m_ioMapping.size(); ++j ) {
69 for ( auto el: m_ioMapping[j] ) {
70 if ( iset.count( el ) != 0 ) {
71 ATH_MSG_ERROR( "The input index " << el << " directed to two outputs " << m_ioMapping[i] << " " << m_ioMapping[j] );
72 return StatusCode::FAILURE;
73 }
74 }
75 }
76 }
77
78 if (msgLvl(MSG::DEBUG)){
79 ATH_MSG_DEBUG("Will consume implicit ReadDH:" );
80 for (auto& input: m_inputKeys){
81 ATH_MSG_DEBUG(" - "<<input.key());
82 }
83 ATH_MSG_DEBUG("Will produce WriteDH: ");
84 for (auto& output: m_outputKeys){
85 ATH_MSG_DEBUG(" - "<<output.key());
86 }
87 }
88
89 CHECK( not m_chainsProperty.empty() );
90
91 for ( const std::string& el: m_chainsProperty )
92 m_chains.insert( HLT::Identifier( el ).numeric() );
93
94
96 for ( size_t i = 0; i < m_chainsPerInputProperty.size(); ++i ) {
97 for ( const std::string& el: m_chainsPerInputProperty[i] )
98 m_chainsPerInput[i].insert( HLT::Identifier( el ).numeric() );
99 }
100
101 if (msgLvl(MSG::DEBUG)){
102 ATH_MSG_DEBUG( "Configured to require these chains: ");
103 for ( const HLT::Identifier& id: m_chains )
104 ATH_MSG_DEBUG( " - " << id );
105 }
106
107 if ( not m_monTool.name().empty() ) {
108 ATH_CHECK( m_monTool.retrieve() );
109 }
110
111 // Prepare monitoring vector
112 m_monInputNames = {"exec", "anyvalid"};
113 for (const auto& k : m_inputKeys) {
114 m_monInputNames.push_back( k.key() );
115 }
116
117 return StatusCode::SUCCESS;
118}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define CHECK(...)
Evaluate an expression and check for errors.
void renounceArray(SG::VarHandleKeyArray &handlesArray)
Gaudi::Property< std::vector< std::string > > m_chainsProperty
Gaudi::Property< std::vector< std::vector< std::string > > > m_chainsPerInputProperty
Gaudi::Property< std::vector< std::vector< unsigned > > > m_ioMappingProperty
It can be used to define a custom routing from input to output collections Example: [[0,...

◆ 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()

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ 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();
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< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::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 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::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 HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
#define ATH_MSG_WARNING(x)

◆ 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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_chains

std::set<HLT::Identifier> RoRSeqFilter::m_chains
private

Definition at line 70 of file RoRSeqFilter.h.

◆ m_chainsPerInput

std::vector<std::set<HLT::Identifier> > RoRSeqFilter::m_chainsPerInput
private

Definition at line 74 of file RoRSeqFilter.h.

◆ m_chainsPerInputProperty

Gaudi::Property<std::vector <std::vector<std::string> > > RoRSeqFilter::m_chainsPerInputProperty { this, "ChainsPerInput", {}, "Chains of which this filter is concerned" }
private

Definition at line 73 of file RoRSeqFilter.h.

73{ this, "ChainsPerInput", {}, "Chains of which this filter is concerned" };

◆ m_chainsProperty

Gaudi::Property<std::vector<std::string> > RoRSeqFilter::m_chainsProperty { this, "Chains", {}, "Chains of which this filter is concerned" }
private

Definition at line 69 of file RoRSeqFilter.h.

69{ this, "Chains", {}, "Chains of which this filter is concerned" };

◆ 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 AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

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

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_inputKeys

SG::ReadHandleKeyArray<TrigCompositeUtils::DecisionContainer> RoRSeqFilter::m_inputKeys { this, "Input", {}, "Inputs to the filter" }
private

Definition at line 66 of file RoRSeqFilter.h.

66{ this, "Input", {}, "Inputs to the filter" };

◆ m_ioMapping

std::vector<std::vector<unsigned> > RoRSeqFilter::m_ioMapping
private

Definition at line 82 of file RoRSeqFilter.h.

◆ m_ioMappingProperty

Gaudi::Property< std::vector<std::vector<unsigned> > > RoRSeqFilter::m_ioMappingProperty { this, "IOMapping", {}, "Maps which inputs should be routed to which output" }
private

It can be used to define a custom routing from input to output collections Example: [[0,1,3], [2]] means that inputs 0, 1, and 3 are directed to output 0, and input under the index 2 to aoutput 1 When not set the default is used.

I.e. nth input -> nth output

Definition at line 81 of file RoRSeqFilter.h.

81{ this, "IOMapping", {}, "Maps which inputs should be routed to which output" };

◆ m_monInputNames

std::vector<std::string> RoRSeqFilter::m_monInputNames
private

Definition at line 71 of file RoRSeqFilter.h.

◆ m_monTool

ToolHandle<GenericMonitoringTool> RoRSeqFilter::m_monTool { this, "MonTool", "", "Filter I/O monitoring" }
private

Definition at line 99 of file RoRSeqFilter.h.

99{ this, "MonTool", "", "Filter I/O monitoring" };

◆ m_outputKeys

SG::WriteHandleKeyArray<TrigCompositeUtils::DecisionContainer> RoRSeqFilter::m_outputKeys { this, "Output", {}, "Output" }
private

Definition at line 67 of file RoRSeqFilter.h.

67{ this, "Output", {}, "Output" };

◆ 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.


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