|
ATLAS Offline Software
|
#include <RoRSeqFilter.h>
|
| RoRSeqFilter (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual StatusCode | initialize () override final |
| Setup input and output handles. More...
|
|
virtual StatusCode | execute (const EventContext &ctx) const override final |
| Apply this filter in-between Steps of trigger execution. More...
|
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. More...
|
|
virtual unsigned int | cardinality () const override |
| Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
|
|
virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
virtual bool | filterPassed (const EventContext &ctx) const |
|
virtual void | setFilterPassed (bool state, const EventContext &ctx) const |
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
SG::ReadHandleKeyArray< TrigCompositeUtils::DecisionContainer > | m_inputKeys { this, "Input", {}, "Inputs to the filter" } |
|
SG::WriteHandleKeyArray< TrigCompositeUtils::DecisionContainer > | m_outputKeys { this, "Output", {}, "Output" } |
|
Gaudi::Property< std::vector< std::string > > | m_chainsProperty { this, "Chains", {}, "Chains of which this filter is concerned" } |
|
std::set< HLT::Identifier > | m_chains |
|
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. More...
|
|
std::vector< std::vector< unsigned > > | m_ioMapping |
|
ToolHandle< GenericMonitoringTool > | m_monTool { this, "MonTool", "", "Filter I/O monitoring" } |
|
DataObjIDColl | m_extendedExtraObjects |
| Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
|
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 47 of file RoRSeqFilter.h.
◆ StoreGateSvc_t
◆ RoRSeqFilter()
RoRSeqFilter::RoRSeqFilter |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ cardinality()
unsigned int AthReentrantAlgorithm::cardinality |
( |
| ) |
const |
|
overridevirtualinherited |
Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
Override this to return 0 for reentrant algorithms.
Override this to return 0 for reentrant algorithms.
Definition at line 55 of file AthReentrantAlgorithm.cxx.
◆ copyPassing()
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
-
inputKey | Storegate key of input, needed to link newly created decision objects to their parents. |
output | Writeable 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 193 of file RoRSeqFilter.cxx.
196 size_t passCounter = 0;
200 <<
". Applying filter of size " << topass.size());
214 ATH_MSG_DEBUG(
"Input satisfied at least one filtering chain. Chain(s) passing:");
221 ATH_MSG_DEBUG(
"No Input decisions requested by filtering chains");
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ 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 115 of file RoRSeqFilter.cxx.
124 std::vector<std::string> inputNames( {
"exec",
"anyvalid"} );
125 std::vector<bool> inputStats({
true,
false});
128 bool validInputs =
false;
130 inputNames.push_back( inputHandle.name() );
131 if( inputHandle.isValid() ) {
133 inputStats.push_back(
true );
135 inputStats.push_back(
false );
138 inputStats[1] = validInputs;
139 auto inputName = Monitored::Collection<std::vector<std::string>>(
"name", inputNames );
140 auto inputStat = Monitored::Collection<std::vector<bool>>(
"stat", inputStats );
145 ATH_MSG_DEBUG (
"No valid inputs found, filter failed. Return...." );
146 return StatusCode::SUCCESS;
151 size_t passCounter = 0;
153 for (
size_t outputIndex = 0; outputIndex <
m_ioMapping.size(); ++outputIndex ) {
154 bool anyPresent =
false;
155 for (
unsigned inputIndex :
m_ioMapping[outputIndex] ) {
167 for (
auto inputIndex :
m_ioMapping[outputIndex] ) {
190 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 79 of file AthReentrantAlgorithm.cxx.
86 return Algorithm::extraOutputDeps();
◆ filterPassed()
virtual bool AthReentrantAlgorithm::filterPassed |
( |
const EventContext & |
ctx | ) |
const |
|
inlinevirtualinherited |
◆ 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.
45 ATH_MSG_DEBUG(
"Default I/O collections mapping nth input -> nth output" );
60 std::set<int> inIndices;
63 inIndices.insert(
i.begin(),
i.end() );
70 if ( iset.count(
el ) != 0 ) {
72 return StatusCode::FAILURE;
111 return StatusCode::SUCCESS;
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ isClonable()
bool AthReentrantAlgorithm::isClonable |
( |
| ) |
const |
|
overridevirtualinherited |
Specify if the algorithm is clonable.
Reentrant algorithms are clonable.
Reimplemented in Simulation::BeamEffectsAlg, InDet::SiTrackerSpacePointFinder, InDet::SCT_Clusterization, InDet::SiSPSeededTrackFinder, SCTRawDataProvider, InDet::GNNSeedingTrackMaker, SCT_PrepDataToxAOD, RoIBResultToxAOD, InDet::SiSPGNNTrackMaker, SCT_CablingCondAlgFromCoraCool, SCT_ReadCalibDataTestAlg, SCT_CablingCondAlgFromText, SCT_ReadCalibChipDataTestAlg, SCT_TestCablingAlg, SCT_ConfigurationConditionsTestAlg, ITkPixelCablingAlg, ITkStripCablingAlg, SCTEventFlagWriter, SCT_ConditionsSummaryTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_TdaqEnabledTestAlg, SCT_SiliconConditionsTestAlg, SCTSiLorentzAngleTestAlg, SCT_ByteStreamErrorsTestAlg, SCT_ConditionsParameterTestAlg, SCT_FlaggedConditionTestAlg, SCT_StripVetoTestAlg, SCT_RawDataToxAOD, and SCTSiPropertiesTestAlg.
Definition at line 44 of file AthReentrantAlgorithm.cxx.
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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()
◆ renounceArray()
◆ setFilterPassed()
virtual void AthReentrantAlgorithm::setFilterPassed |
( |
bool |
state, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
inlinevirtualinherited |
◆ sysExecute()
StatusCode AthReentrantAlgorithm::sysExecute |
( |
const EventContext & |
ctx | ) |
|
|
overridevirtualinherited |
Execute an algorithm.
We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.
Definition at line 67 of file AthReentrantAlgorithm.cxx.
69 return Gaudi::Algorithm::sysExecute (ctx);
◆ sysInitialize()
StatusCode AthReentrantAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
Override sysInitialize.
Override sysInitialize from the base class.
Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc
Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc
Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.
Reimplemented in InputMakerBase, and HypoBase.
Definition at line 96 of file AthReentrantAlgorithm.cxx.
107 if ( cs.retrieve().isFailure() ) {
109 return StatusCode::SUCCESS;
111 if (cs->regHandle(
this,*
h).isFailure()) {
112 sc = StatusCode::FAILURE;
113 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_chains
◆ m_chainsPerInput
◆ m_chainsPerInputProperty
Gaudi::Property<std::vector <std::vector<std::string> > > RoRSeqFilter::m_chainsPerInputProperty { this, "ChainsPerInput", {}, "Chains of which this filter is concerned" } |
|
private |
◆ m_chainsProperty
Gaudi::Property<std::vector<std::string> > RoRSeqFilter::m_chainsProperty { this, "Chains", {}, "Chains of which this filter is concerned" } |
|
private |
◆ m_detStore
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects |
|
privateinherited |
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 153 of file AthReentrantAlgorithm.h.
◆ m_inputKeys
◆ m_ioMapping
std::vector<std::vector<unsigned> > RoRSeqFilter::m_ioMapping |
|
private |
◆ 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 80 of file RoRSeqFilter.h.
◆ m_monTool
◆ m_outputKeys
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
ToolHandle< GenericMonitoringTool > m_monTool
Group
Properties of a chain group.
xAOD::TrigCompositeContainer DecisionContainer
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.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
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)
SG::WriteHandleKeyArray< TrigCompositeUtils::DecisionContainer > m_outputKeys
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
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
bool msgLvl(const MSG::Level lvl) const
SG::WriteHandle< DecisionContainer > createAndStore(const SG::WriteHandleKey< DecisionContainer > &key, const EventContext &ctx)
Creates and right away records the DecisionContainer with the key.
SG::ReadHandleKeyArray< TrigCompositeUtils::DecisionContainer > m_inputKeys
void renounceArray(SG::VarHandleKeyArray &handlesArray)
remove all handles from I/O resolution
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
std::vector< std::string > intersection(std::vector< std::string > &v1, std::vector< std::string > &v2)
virtual bool filterPassed(const EventContext &ctx) const
virtual void setOwner(IDataHandleHolder *o)=0
virtual std::vector< Gaudi::DataHandle * > inputHandles() const override
Return this algorithm's input handles.
Gaudi::Property< std::vector< std::string > > m_chainsProperty
AthReentrantAlgorithm()
Default constructor:
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
::StatusCode StatusCode
StatusCode definition for legacy code.
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...
#define CHECK(...)
Evaluate an expression and check for errors.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
static Timeout & instance()
Get reference to Timeout singleton.
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
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,...
xAOD::TrigComposite Decision
std::vector< std::vector< unsigned > > m_ioMapping
virtual StatusCode sysInitialize() override
Override sysInitialize.
@ TIMEOUT
Timeout during event processing.
const std::string & filterNodeName()
std::set< DecisionID > DecisionIDContainer
#define ATH_MSG_WARNING(x)
void decisionIDs(const Decision *d, DecisionIDContainer &destination)
Extracts DecisionIDs stored in the Decision object.
std::set< HLT::Identifier > m_chains
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Gaudi::Property< std::vector< std::vector< std::string > > > m_chainsPerInputProperty
std::vector< std::set< HLT::Identifier > > m_chainsPerInput
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
virtual void setFilterPassed(bool state, const EventContext &ctx) const