ATLAS Offline Software
Loading...
Searching...
No Matches
TrigMonTE.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5
6
9
10// C/C++
11#include <cassert>
12#include <iostream>
13#include <sstream>
14#include <set>
15#include <array>
16
17namespace SeqBits
18{
19 const uint32_t maskLow16 = 0x0000ffff; // mask 2 type bits
20 const uint32_t maskType = 0x00c00000; // mask 2 type bits
21
22 const uint32_t shiftType = 22; // shift 2 type bits
23}
24
25
26//--------------------------------------------------------------------------------------
27TrigMonTE::TrigMonTE(uint32_t id, uint16_t index)
28 :m_id(id),
30{
31}
32
33//--------------------------------------------------------------------------------------
35{
36 //
37 // Store variable as int and float, reserve 0-9 keys
38 //
39 if(var.getKey() > 9) {
40 m_var_key.push_back(var.getKey());
41 m_var_val.push_back(var.getData());
42 }
43}
44
45//--------------------------------------------------------------------------------------
47{
48 //
49 // Set trigger element type: use 2 bits
50 //
52}
53
54//--------------------------------------------------------------------------------------
56{
57 //
58 // Set state bits directly
59 //
60 m_encoded |= state;
61}
62
63//--------------------------------------------------------------------------------------
65{
66 //
67 // Return trigger element type
68 //
69 const unsigned int val = (m_encoded & SeqBits::maskType) >> SeqBits::shiftType;
70 static constexpr std::array<Type,4> types{kELEM, kINIT, kROI, kL1TH};
71 return types.at(val);
72}
73
74//--------------------------------------------------------------------------------------
75uint16_t TrigMonTE::getIndex() const
76{
77 //
78 // Return index - mask low 16 bits
79 //
81}
82
83//--------------------------------------------------------------------------------------
84const std::vector<TrigMonVar> TrigMonTE::getVar() const
85{
86 //
87 // Build variables on a fly and return vector by value
88 //
89 std::vector<TrigMonVar> var;
90
91 if(m_var_key.size() == m_var_val.size()) {
92 //
93 // Iterate over keys abd values
94 //
95 var.reserve(m_var_key.size());
96
97 for(unsigned int i = 0; i < m_var_key.size(); ++i) {
98 var.push_back(TrigMonVar(m_var_key[i], m_var_val[i]));
99 }
100 }
101
102 return var;
103}
104
105//--------------------------------------------------------------------------------------
106void TrigMonTE::print(std::ostream &os)
107{
108 os << str(*this) << std::endl;
109}
110
112{
113 std::cout << str(*this) << std::endl;
114}
115
116
117//--------------------------------------------------------------------------------------
118std::string str(const TrigMonTE &o)
119{
120 std::stringstream s;
121
122 s << "TrigMonTE id=" << o.getId() << " status=";
123 if (o.getType() == TrigMonTE::kINIT) s << "init";
124 else if(o.getType() == TrigMonTE::kROI) s << "roi ";
125 else if(o.getType() == TrigMonTE::kL1TH) s << "L1th";
126 else if(o.getType() == TrigMonTE::kELEM) s << "elem";
127 else s << "bad ";
128 s << " index=" << o.getIndex();
129
130 s << std::endl << " children " << o.getChildIndex().size() << ": ";
131 for(unsigned int i = 0; i < o.getChildIndex().size(); ++i) s << o.getChildIndex()[i] << " ";
132 s << std::endl;
133
134 s << std::endl << " parents " << o.getParentIndex().size() << ": ";
135 for(unsigned int i = 0; i < o.getParentIndex().size(); ++i) s << o.getParentIndex()[i] << " ";
136 s << std::endl;
137
138 s << std::endl << " features " << o.getClid().size() << ": ";
139 for(unsigned int i = 0; i < o.getClid().size(); ++i) s << o.getClid()[i] << " ";
140 s << std::endl;
141
142 return s.str();
143}
144
145//--------------------------------------------------------------------------------------
146bool Equal(const TrigMonTE &lhs, const TrigMonTE &rhs)
147{
148 //
149 // Compare TriggerElements by id and roi parents
150 //
151
152 // 1st: compare types
153 if(lhs.getType() != rhs.getType()) return false;
154
155 // 2nd: initial node?
156 if(lhs.getType() == TrigMonTE::kINIT) return true;
157
158 // 3rd: RoI or ELEM node?
159 if(lhs.getId() != rhs.getId()) return false;
160
161 const std::set<uint8_t> lhs_set(lhs.getRoiId().begin(), lhs.getRoiId().end());
162 const std::set<uint8_t> rhs_set(rhs.getRoiId().begin(), rhs.getRoiId().end());
163
164 return lhs_set == rhs_set;
165}
Helpers for checking error return status codes and reporting errors.
static const std::vector< std::string > types
size_t size() const
Number of registered mappings.
bool Equal(const TrigMonTE &lhs, const TrigMonTE &rhs)
Summary of one trigger element from navigation tree.
Definition TrigMonTE.h:28
void setType(Type type)
Definition TrigMonTE.cxx:46
void addVar(const TrigMonVar &var)
Definition TrigMonTE.cxx:34
const std::vector< uint8_t > & getRoiId() const
Definition TrigMonTE.h:77
const std::vector< TrigMonVar > getVar() const
Definition TrigMonTE.cxx:84
const std::vector< uint16_t > & getParentIndex() const
Definition TrigMonTE.h:75
uint32_t m_id
Definition TrigMonTE.h:89
void addState(State state)
Definition TrigMonTE.cxx:55
uint16_t getIndex() const
Definition TrigMonTE.cxx:75
TrigMonTE()=default
const std::vector< uint32_t > & getClid() const
Definition TrigMonTE.h:78
uint32_t m_encoded
Definition TrigMonTE.h:90
uint32_t getId() const
Definition TrigMonTE.h:63
const std::vector< uint16_t > & getChildIndex() const
Definition TrigMonTE.h:74
std::vector< float > m_var_val
Definition TrigMonTE.h:98
Type getType() const
Definition TrigMonTE.cxx:64
std::vector< uint16_t > m_var_key
Definition TrigMonTE.h:97
void print()
const uint32_t maskLow16
const uint32_t maskType
Definition TrigMonTE.cxx:20
const uint32_t shiftType
Definition TrigMonTE.cxx:22
Definition index.py:1
setEventNumber uint32_t