ATLAS Offline Software
Loading...
Searching...
No Matches
ChainGroup.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRIGGER_DECISION_TOOL_CHAIN_GROUP_H
6#define TRIGGER_DECISION_TOOL_CHAIN_GROUP_H
7
8/**********************************************************************************
9 * @Project: TrigDecisionTool
10 * @Package: TrigDecisionTool
11 * @class : ChainGroup
12 *
13 * @brief container to hold trigger chains
14 *
15 * @author Michael Begel <michael.begel@cern.ch> - Brookhaven National Laboratory
16 * @author Joerg Stelzer <Joerg.Stelzer@cern.ch> - DESY
17 * @author Tomasz Bold <Tomasz.Bold@cern.ch> - UC Irvine - AGH-UST Krakow
18 *
19 ***********************************************************************************/
20
21#include <iterator>
22#include <vector>
23#include <string>
24
33
34namespace HLT {
35 class Chain;
36}
37
38namespace LVL1CTP {
39 class Lvl1Item;
40}
41
42namespace TrigConf {
43 class TriggerItem;
44 class HLTChain;
46}
47
48
49namespace Trig {
50
51 class ChainGroup : public virtual Logger {
52
53 friend class CacheGlobalMemory;
54
55 public:
56
57 ChainGroup(const std::vector< std::string >& triggerNames,
59 ~ChainGroup() = default;
60
61 typedef std::vector<std::string>::const_iterator const_iterator;
63 bool operator==(const Trig::ChainGroup& rhs);
64 bool operator!=(const Trig::ChainGroup& rhs);
65
69 void addAlias(const std::string& alias);
70
71
76 bool isPassed(unsigned int condition=TrigDefs::Physics) const;
77
84 std::vector<bool> isPassedForEach(unsigned int condition=TrigDefs::Physics) const;
85
91 float getPrescale(unsigned int condition=TrigDefs::Physics) const;
92
93
94 std::vector< std::string > getListOfTriggers() const; // cppcheck-suppress returnByReference; for consistency
95 std::vector< std::string > getListOfStreams() const;
96 std::vector< std::string > getListOfGroups() const;
97 std::vector< std::string > getListOfThresholds() const;
98 std::vector< std::string > getListOfSignatures() const;
99 std::vector< std::vector< std::string > > getListOfTriggerElements() const;
100 std::vector< std::vector< TrigConf::HLTTriggerElement* > > getHLTTriggerElements() const;
101
102
107 unsigned int isPassedBits() const;
108
112 std::vector<unsigned int> isPassedBitsForEach() const;
113
114
121 HLT::ErrorCode error() const;
122
123
128 const FeatureContainer features(unsigned int condition = TrigDefs::Physics) const;
129
142 template<class CONTAINER>
143 std::vector< TrigCompositeUtils::LinkInfo<CONTAINER> > features(const asg::EventStoreType* eventStore,
145 unsigned int condition = TrigDefs::Physics,
146 const std::string& containerSGKey = "",
147 const unsigned int featureCollectionMode = TrigDefs::lastFeatureOfType,
148 const std::string& navElementLinkKey = TrigCompositeUtils::featureString(),
149 const int restrictToLegIndex = -1) const;
150
151 //
152 const std::vector< std::string >& patterns() const {return m_patterns;}
153 private:
154
155 bool isPassed(const TrigConf::HLTChain& chain, unsigned int condition) const;
156 bool isCorrelatedL1items(const std::string& item) const;
157 float correlatedL1Prescale(const std::string& item) const;
158 float calculatePrescale(unsigned int condition=TrigDefs::Physics);
159
160 void appendFeatures(std::vector< std::vector< HLT::TriggerElement*> >& tes, FeatureContainer& fc) const;
161
165 const std::vector< std::string >& names() const {return m_names;}
166
167 bool HLTResult(const std::string& chain, unsigned int condition) const;
168 bool L1Result(const std::string& item, unsigned int condition) const;
169
170 unsigned int HLTBits(const std::string& chain, const std::string& level, const TrigCompositeUtils::DecisionIDContainer& passExpress) const;
171 unsigned int L1Bits(const std::string& item) const;
172
173 float HLTPrescale(const std::string& chain, unsigned int condition) const;
174 float L1Prescale(const std::string& item, unsigned int condition) const;
175
176 std::string getLowerName(const std::string& EFname) const;
177
178 std::vector<std::string> m_patterns;
179
180 std::vector<const TrigConf::HLTChain*> m_confChains;
181 std::vector<const TrigConf::TriggerItem*> m_confItems;
182
183#ifndef __REFLEX__
184 // quick cache (external therefore reference) of the result per event
186#endif
187 std::vector< std::string > m_names;
188
189 const Trig::CacheGlobalMemory& cgm_assert() const;
190 const Trig::CacheGlobalMemory& cgm() const { return m_cgm; }
192
193 // update the configuration
194 void update(const TrigConf::HLTChainList* confChains,
195 const TrigConf::ItemContainer* confItems,
197
199
200 float m_prescale{0};
201
202 };
203} // End of namespace
204
205#include "ChainGroup.icc"
206
207#endif
This class represents one chain of signatures, i.e.
Definition Chain.h:64
Property holding a SG store/key/clid from which a ReadHandle is made.
list of all HLT chains in a trigger menu
HLT chain configuration information.
HLT trigger element configuration information.
float correlatedL1Prescale(const std::string &item) const
const std::vector< std::string > & patterns() const
Definition ChainGroup.h:152
std::vector< std::string > getListOfStreams() const
std::vector< std::string > getListOfThresholds() const
const Trig::CacheGlobalMemory & cgm() const
Definition ChainGroup.h:190
ChainGroup & operator=(const ChainGroup &)
const FeatureContainer features(unsigned int condition=TrigDefs::Physics) const
returns all features related to given chain group of HLT chains or L1 items Note: This does not yet w...
std::vector< std::string > getListOfGroups() const
friend class CacheGlobalMemory
Definition ChainGroup.h:53
HLT::ErrorCode error() const
returns most severe error in the chains composing that chain group for L1 it is just OK If there is s...
unsigned int isPassedBits() const
returns bits (OR ed) of the chain group Meaning of the returned bits can be understood by using masks...
std::vector< bool > isPassedForEach(unsigned int condition=TrigDefs::Physics) const
return vector with isPassed decision for each chain
bool isCorrelatedL1items(const std::string &item) const
ChainGroup(const std::vector< std::string > &triggerNames, Trig::CacheGlobalMemory &parent)
void addAlias(const std::string &alias)
adds alias (sort understandabel name) to the group
std::vector< std::string > m_names
names of trigger derived from patterns & current configuration
Definition ChainGroup.h:187
void update(const TrigConf::HLTChainList *confChains, const TrigConf::ItemContainer *confItems, TrigDefs::Group prop=TrigDefs::Group::Default)
float HLTPrescale(const std::string &chain, unsigned int condition) const
float getPrescale(unsigned int condition=TrigDefs::Physics) const
returns prescale factor for chain group with single chain in returns real prescale factor for real ch...
~ChainGroup()=default
const Trig::ChainGroup & operator+(const Trig::ChainGroup &rhs)
bool L1Result(const std::string &item, unsigned int condition) const
bool operator!=(const Trig::ChainGroup &rhs)
float calculatePrescale(unsigned int condition=TrigDefs::Physics)
std::vector< TrigCompositeUtils::LinkInfo< CONTAINER > > features(const asg::EventStoreType *eventStore, const SG::ReadHandleKey< TrigCompositeUtils::DecisionContainer > &HLTSummaryKeyIn, 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
returns typed features related to given chain group of HLT chains or L1 items Note: This is a RUN 3 (...
std::vector< const TrigConf::HLTChain * > m_confChains
Definition ChainGroup.h:180
unsigned int HLTBits(const std::string &chain, const std::string &level, const TrigCompositeUtils::DecisionIDContainer &passExpress) const
const std::vector< std::string > & names() const
names of triggers within chain group
Definition ChainGroup.h:165
std::vector< std::vector< std::string > > getListOfTriggerElements() const
std::vector< std::string > m_patterns
patterns with which the CG was constructed
Definition ChainGroup.h:178
bool isPassed(unsigned int condition=TrigDefs::Physics) const
tells if chain group passed
Trig::CacheGlobalMemory & m_cgm
Definition ChainGroup.h:185
void appendFeatures(std::vector< std::vector< HLT::TriggerElement * > > &tes, FeatureContainer &fc) const
float L1Prescale(const std::string &item, unsigned int condition) const
std::vector< unsigned int > isPassedBitsForEach() const
return result of isPassedBits for each chain in the group
const Trig::CacheGlobalMemory & cgm_assert() const
Trig::CacheGlobalMemory & cgm()
Definition ChainGroup.h:191
std::vector< std::string >::const_iterator const_iterator
Definition ChainGroup.h:61
bool operator==(const Trig::ChainGroup &rhs)
std::vector< std::string > getListOfSignatures() const
std::string getLowerName(const std::string &EFname) const
std::vector< std::vector< TrigConf::HLTTriggerElement * > > getHLTTriggerElements() const
bool HLTResult(const std::string &chain, unsigned int condition) const
std::vector< const TrigConf::TriggerItem * > m_confItems
Definition ChainGroup.h:181
std::vector< std::string > getListOfTriggers() const
Logger()=default
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
const std::string & featureString()
std::set< DecisionID > DecisionIDContainer
Forward iterator to traverse the main components of the trigger configuration.
Definition Config.h:22
boost::multi_index::multi_index_container< TriggerItem *, boost::multi_index::indexed_by< boost::multi_index::random_access<>, boost::multi_index::ordered_unique< boost::multi_index::identity< TriggerItem > >, boost::multi_index::ordered_unique< boost::multi_index::tag< tag_ctpid >, boost::multi_index::const_mem_fun< TriggerItem, int, &TriggerItem::ctpId > >, boost::multi_index::hashed_unique< boost::multi_index::tag< tag_name_hash >, boost::multi_index::const_mem_fun< TrigConfData, const std::string &, &TrigConfData::name > > > > ItemContainer
Definition Menu.h:39
Group
Properties of a chain group.
static const unsigned int lastFeatureOfType
Run 3 "enum". Only return the final feature along each route through the navigation.
The common trigger namespace for trigger analysis tools.
StoreGateSvc EventStoreType
the type returned by AsgTool::evtStore