ATLAS Offline Software
Loading...
Searching...
No Matches
Menu.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 TrigConf_Menu
6#define TrigConf_Menu
7
12#include "TrigConfL1Data/PIT.h"
13#include "TrigConfL1Data/TIP.h"
14
15#include <boost/multi_index_container.hpp>
16#include <boost/multi_index/mem_fun.hpp>
17#include <boost/multi_index/hashed_index.hpp>
18#include <boost/multi_index/ordered_index.hpp>
19#include <boost/multi_index/sequenced_index.hpp>
20#include <boost/multi_index/random_access_index.hpp>
21
22#include <iosfwd>
23#include <vector>
24#include <string>
25
26
27namespace TrigConf {
28
29 // trigger items multi index container
30 struct tag_ctpid{};
31 struct tag_name_hash{};
32
33 typedef boost::multi_index::multi_index_container<TriggerItem*, boost::multi_index::indexed_by<
34 boost::multi_index::random_access<>,
35 boost::multi_index::ordered_unique< boost::multi_index::identity<TriggerItem> >,
36 boost::multi_index::ordered_unique< boost::multi_index::tag<tag_ctpid>, boost::multi_index::const_mem_fun<TriggerItem, int, &TriggerItem::ctpId> >,
37 boost::multi_index::hashed_unique < boost::multi_index::tag<tag_name_hash>, boost::multi_index::const_mem_fun<TrigConfData, const std::string&, &TrigConfData::name> >
38 >
40
41 typedef ItemContainer::index<tag_ctpid>::type item_by_ctpid_t;
42 typedef item_by_ctpid_t::iterator item_by_ctpid_iterator;
43
44 typedef ItemContainer::index<tag_name_hash>::type item_by_name_t;
45 typedef ItemContainer::index<tag_name_hash>::type::iterator item_by_name_iterator;
46
47 class DiffStruct;
48
49 class Menu : public L1DataBaseclass {
50 public:
51 Menu();
52 virtual ~Menu() override;
53
55 const item_by_ctpid_t& item_by_ctpid() const;
56
58 const item_by_name_t& item_by_name() const;
59
60 // setter and getters
62 const ItemContainer& itemVector() const;
63 const ItemContainer& items() const;
64 TriggerItem* findTriggerItem(int ctpid) const { return item(ctpid); }
65 TriggerItem* item(int ctpid) const;
66 TriggerItem* item(const std::string& name) const;
67
68
69 const std::vector<ThresholdMonitor*>& moncountVector() const { return m_ThresholdMonitorVector; }
70 const std::vector<PIT*>& pitVector() const { return m_PITs; }
71 const std::vector<TIP*>& tipVector() const { return m_TIPs; }
72 const std::map<unsigned int, std::string>& lutOutputNames() const { return m_LUT; }
74 const CaloInfo& caloInfo() const { return m_ThresholdConfig.caloInfo(); }
75
77
78 std::vector<uint16_t> bunchgroupMask() const;
79
80 // setters
81 void setCaloInfo( const CaloInfo& ci ) { m_ThresholdConfig.setCaloInfo(ci); }
82
83 // another interface to access the TriggerThreshold vector
84 const std::vector<TriggerThreshold*>& thresholdVector() const;
86
88 ThresholdMonitor* findThresholdMonitor(unsigned int id);
89
90 void addLutOutputName(unsigned int, const std::string &);
91 void setLutOutputNames(const std::map<unsigned int, std::string>& lut) { m_LUT = lut; }
92
93 void addPit(PIT* pit);
94 PIT* findPIT(unsigned int id);
95
96 void addTip(TIP* tip);
97 TIP* findTIP(unsigned int id);
98
99 int size() const;
100
101 virtual void print(const std::string& indent="", unsigned int detail=1) const override;
102
103 void writeXMLItems(std::ostream & xmlfile, int indentLevel=0, int indentWidth=2) const;
104 void writeXMLThresholds(std::ostream & xmlfile, int indentLevel=0, int indentWidth=2) const;
105 void writeXMLMonCounters(std::ostream & xmlfile, int indentLevel=0, int indentWidth=2) const;
106
107 DiffStruct* compareTo(const Menu* o) const;
108
109 void clear();
110
111 std::vector<TrigConf::TriggerItem*> itemsV() const;
112
113 private:
115
117
118 std::vector<ThresholdMonitor*> m_ThresholdMonitorVector;
119 std::vector<PIT*> m_PITs;
120 std::vector<TIP*> m_TIPs;
121 std::map<unsigned int, std::string> m_LUT; // contains the conditions out of each LUT output
122
123 };
124
125
126
127 inline
129 inline
131
132 inline
134 inline
136
137 inline
139 inline
141
142 inline
143 int Menu::size() const { return m_TriggerItemVector.size(); }
144
145
146}
147
148#endif
void addTriggerThreshold(TriggerThreshold *tt)
Definition Menu.cxx:128
virtual ~Menu() override
Definition Menu.cxx:19
TriggerItem * item(int ctpid) const
Definition Menu.cxx:84
DiffStruct * compareTo(const Menu *o) const
Definition Menu.cxx:134
void addTriggerItem(TriggerItem *ti)
Definition Menu.cxx:48
const std::vector< TriggerThreshold * > & thresholdVector() const
Definition Menu.cxx:123
item_by_name_t & item_by_name()
Definition Menu.h:133
std::vector< ThresholdMonitor * > m_ThresholdMonitorVector
Definition Menu.h:118
void addLutOutputName(unsigned int, const std::string &)
Definition Menu.cxx:74
ThresholdConfig m_ThresholdConfig
Definition Menu.h:114
std::vector< TIP * > m_TIPs
Definition Menu.h:120
item_by_ctpid_t & item_by_ctpid()
Definition Menu.h:128
const std::vector< PIT * > & pitVector() const
Definition Menu.h:70
std::vector< TrigConf::TriggerItem * > itemsV() const
Definition Menu.cxx:328
const std::map< unsigned int, std::string > & lutOutputNames() const
Definition Menu.h:72
void writeXMLThresholds(std::ostream &xmlfile, int indentLevel=0, int indentWidth=2) const
Definition Menu.cxx:299
void addThresholdMonitor(ThresholdMonitor *thrm)
Definition Menu.cxx:60
const ItemContainer & itemVector() const
Definition Menu.h:138
void clear()
Definition Menu.cxx:160
void addTip(TIP *tip)
Definition Menu.cxx:69
ThresholdMonitor * findThresholdMonitor(unsigned int id)
Definition Menu.cxx:100
void addPit(PIT *pit)
Definition Menu.cxx:64
int size() const
Definition Menu.h:143
const std::vector< ThresholdMonitor * > & moncountVector() const
Definition Menu.h:69
TIP * findTIP(unsigned int id)
Definition Menu.cxx:114
void setCaloInfo(const CaloInfo &ci)
Definition Menu.h:81
ThresholdConfig & thresholdConfig()
Definition Menu.h:76
void writeXMLMonCounters(std::ostream &xmlfile, int indentLevel=0, int indentWidth=2) const
Definition Menu.cxx:313
virtual void print(const std::string &indent="", unsigned int detail=1) const override
Definition Menu.cxx:210
std::map< unsigned int, std::string > m_LUT
Definition Menu.h:121
const CaloInfo & caloInfo() const
Definition Menu.h:74
PIT * findPIT(unsigned int id)
Definition Menu.cxx:107
void setLutOutputNames(const std::map< unsigned int, std::string > &lut)
Definition Menu.h:91
const ThresholdConfig & thresholdConfig() const
Definition Menu.h:73
std::vector< uint16_t > bunchgroupMask() const
Definition Menu.cxx:40
TriggerItem * findTriggerItem(int ctpid) const
Definition Menu.h:64
std::vector< PIT * > m_PITs
Definition Menu.h:119
void writeXMLItems(std::ostream &xmlfile, int indentLevel=0, int indentWidth=2) const
Definition Menu.cxx:288
const ItemContainer & items() const
Definition Menu.h:140
const std::vector< TIP * > & tipVector() const
Definition Menu.h:71
ItemContainer m_TriggerItemVector
Definition Menu.h:116
std::ostream & indent(std::ostream &o, int lvl, int size) const
static std::vector< std::string > xmlfile
Definition iLumiCalc.h:29
Forward iterator to traverse the main components of the trigger configuration.
Definition Config.h:22
ItemContainer::index< tag_name_hash >::type item_by_name_t
Definition Menu.h:44
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
ItemContainer::index< tag_name_hash >::type::iterator item_by_name_iterator
Definition Menu.h:45
ItemContainer::index< tag_ctpid >::type item_by_ctpid_t
Definition Menu.h:41
item_by_ctpid_t::iterator item_by_ctpid_iterator
Definition Menu.h:42