ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigEvent
TrigSteeringEvent
src
TrigOperationalInfo.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
#include "
TrigSteeringEvent/TrigOperationalInfo.h
"
6
#include "GaudiKernel/MsgStream.h"
7
8
#include <sstream>
9
#include <cmath>
10
#include <algorithm>
11
12
13
TrigOperationalInfo::TrigOperationalInfo
() {
14
15
}
16
17
TrigOperationalInfo::TrigOperationalInfo
(
const
std::vector<std::string>& keys,
18
const
std::vector<float>& values)
19
:
m_infoName
(keys),
20
m_infoValue
(values)
21
{
22
}
23
24
unsigned
int
TrigOperationalInfo::defined
(
const
std::string& name)
const
{
25
return
std::count(
m_infoName
.begin(),
m_infoName
.end(), name );
26
}
27
28
float
TrigOperationalInfo::get
(
const
std::string& name)
const
{
29
std::vector<std::string>::const_iterator it;
30
it = std::find (
m_infoName
.begin(),
m_infoName
.end(), name );
31
return
m_infoValue
[it -
m_infoName
.begin()];
32
}
33
34
void
TrigOperationalInfo::set
(
const
std::string& name,
float
value) {
35
// Tim Martin - April 2016. Removed code which enforces unique names. Rquired by use in Cost Monitoring.
36
m_infoName
.push_back(name);
37
m_infoValue
.push_back(value);
38
}
39
40
std::pair<std::vector<std::string>, std::vector<float> >
TrigOperationalInfo::infos
()
const
{
41
return
std::make_pair(
m_infoName
,
m_infoValue
);
42
}
43
44
const
std::vector<std::string>&
TrigOperationalInfo::getKeys
()
const
{
45
return
m_infoName
;
46
}
47
48
const
std::vector<float>&
TrigOperationalInfo::getValues
()
const
{
49
return
m_infoValue
;
50
}
51
52
void
TrigOperationalInfo::updateAtLocation
(
unsigned
int
location,
float
value) {
53
m_infoValue
.at(location) = value;
54
}
55
57
// helper operators
58
59
60
std::string
str
(
const
TrigOperationalInfo
& d ) {
61
std::stringstream
ss
;
62
std::pair<std::vector<std::string>, std::vector<float> > quantities = d.infos();
63
std::vector<std::string>::const_iterator keyIt = quantities.first.begin();
64
std::vector<float>::const_iterator valueIt = quantities.second.begin();
65
for
(
unsigned
int
i = 0; i < quantities.first.size(); i++ ) {
66
ss
<<
" "
<< *keyIt <<
": "
<< *valueIt;
67
++keyIt;
68
++valueIt;
69
}
70
return
ss
.str();
71
}
72
73
MsgStream&
operator<<
( MsgStream& m,
const
TrigOperationalInfo
& d ) {
74
m <<
str
(d);
75
return
m;
76
}
77
78
79
bool
operator==
(
const
TrigOperationalInfo
&
a
,
const
TrigOperationalInfo
& b ) {
80
81
std::pair<std::vector<std::string>, std::vector<float> > a_infos =
a
.infos();
82
std::pair<std::vector<std::string>, std::vector<float> > b_infos = b.infos();
83
if
( a_infos.first.size() != b_infos.first.size())
84
return
false
;
85
if
( ! (a_infos.first == b_infos.first))
86
return
false
;
87
88
if
( ! (a_infos.second == b_infos.second))
89
return
false
;
90
91
return
true
;
92
}
93
void
diff
(
const
TrigOperationalInfo
&
a
,
const
TrigOperationalInfo
& b, std::map<std::string, double>& variableChange ) {
94
std::pair<std::vector<std::string>, std::vector<float> > a_infos =
a
.infos();
95
std::pair<std::vector<std::string>, std::vector<float> > b_infos = b.infos();
96
97
if
( a_infos.first.size() != b_infos.first.size())
98
variableChange[
"size"
] = a_infos.first.size() - b_infos.first.size();
99
100
std::vector<std::string>::const_iterator a_keyIt = a_infos.first.begin();
101
std::vector<float>::const_iterator a_valueIt = a_infos.second.begin();
102
for
(
unsigned
i = 0; i < a_infos.first.size(); i++ ) {
103
if
( b.defined(*a_keyIt) ) {
104
float
b_val = b.get(*a_keyIt);
105
variableChange[*a_keyIt] = *a_valueIt - b_val;
106
}
else
{
107
variableChange[*a_keyIt+
"_abs"
] = *a_valueIt;
108
}
109
110
++a_keyIt;
111
++a_valueIt;
112
}
113
}
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
ss
static Double_t ss
Definition
LArPhysWaveHECTool.cxx:37
operator==
bool operator==(const TrigOperationalInfo &a, const TrigOperationalInfo &b)
Definition
TrigOperationalInfo.cxx:79
operator<<
MsgStream & operator<<(MsgStream &m, const TrigOperationalInfo &d)
Definition
TrigOperationalInfo.cxx:73
diff
void diff(const TrigOperationalInfo &a, const TrigOperationalInfo &b, std::map< std::string, double > &variableChange)
Definition
TrigOperationalInfo.cxx:93
TrigOperationalInfo.h
TrigOperationalInfo
This class defined generic object to store operational info available during triggering online i....
Definition
TrigOperationalInfo.h:25
TrigOperationalInfo::getKeys
const std::vector< std::string > & getKeys() const
Definition
TrigOperationalInfo.cxx:44
TrigOperationalInfo::infos
std::pair< std::vector< std::string >, std::vector< float > > infos() const
Definition
TrigOperationalInfo.cxx:40
TrigOperationalInfo::updateAtLocation
void updateAtLocation(unsigned int location, float value)
Definition
TrigOperationalInfo.cxx:52
TrigOperationalInfo::getValues
const std::vector< float > & getValues() const
Definition
TrigOperationalInfo.cxx:48
TrigOperationalInfo::get
float get(const std::string &name) const
Definition
TrigOperationalInfo.cxx:28
TrigOperationalInfo::m_infoName
std::vector< std::string > m_infoName
Definition
TrigOperationalInfo.h:40
TrigOperationalInfo::TrigOperationalInfo
TrigOperationalInfo()
Definition
TrigOperationalInfo.cxx:13
TrigOperationalInfo::set
void set(const std::string &name, float value)
Definition
TrigOperationalInfo.cxx:34
TrigOperationalInfo::defined
unsigned int defined(const std::string &name) const
Definition
TrigOperationalInfo.cxx:24
TrigOperationalInfo::m_infoValue
std::vector< float > m_infoValue
Definition
TrigOperationalInfo.h:41
str
Definition
BTagTrackIpAccessor.cxx:11
Generated on
for ATLAS Offline Software by
1.17.0