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