ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigT1
TrigT1Result
src
CTPResult.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
6
// this header file
7
#include "
TrigT1Result/CTPResult.h
"
8
9
// gaudi includes
10
#include "GaudiKernel/Bootstrap.h"
11
#include "GaudiKernel/ISvcLocator.h"
12
#include "GaudiKernel/IMessageSvc.h"
13
#include "GaudiKernel/MsgStream.h"
14
15
// STL includes
16
#include <sstream>
17
#include <iomanip>
18
19
// Local include(s):
20
#include "
TrigT1Interfaces/TrigT1CTPDefs.h
"
21
22
23
namespace
ROIB
{
24
25
26
27
CTPResult::CTPResult
(
unsigned
int
ctpVersion,
Header
&&
head
,
Trailer
&&trail, std::vector<CTPRoI>&& rois) :
28
m_CTPResultHeader
(
std
::move(
head
) ),
29
m_CTPResultTrailer
(
std
::move(trail) ),
30
m_CTPResultRoIVec
(
std
::move(rois) ),
31
//m_ctpVersionNumber( ctpVersion ),
32
m_ctpDataformat
( ctpVersion ),
33
m_useRoIB
(false),
34
m_l1aBunch
(0)
35
{
36
m_useRoIB
= (
m_CTPResultHeader
.sourceID() == 0x770001);
37
if
(!
m_useRoIB
)
m_l1aBunch
= (
m_CTPResultHeader
.formatVersion() >>
m_ctpDataformat
.getL1APositionShift()) &
m_ctpDataformat
.getL1APositionMask();
38
}
39
40
41
CTPResult::CTPResult
(
unsigned
int
ctpVersion,
Header
&&
head
,
Trailer
&& trail,
const
std::vector<uint32_t>& v ) :
42
m_CTPResultHeader
(
std
::move(
head
) ),
43
m_CTPResultTrailer
(
std
::move(trail) ),
44
//m_ctpVersionNumber( ctpVersion ),
45
m_ctpDataformat
( ctpVersion ),
46
m_useRoIB
(false),
47
m_l1aBunch
(0)
48
{
49
m_useRoIB
= (
m_CTPResultHeader
.sourceID() == 0x770001);
50
51
std::copy(v.begin(), v.end(), back_inserter(
m_CTPResultRoIVec
));
52
if
(!
m_useRoIB
)
m_l1aBunch
= (
m_CTPResultHeader
.formatVersion() >>
m_ctpDataformat
.getL1APositionShift()) &
m_ctpDataformat
.getL1APositionMask();
53
}
54
55
56
const
std::string
CTPResult::dump
()
const
57
{
58
std::ostringstream s;
59
60
s <<
" ["
<< this->
header
().
dump
() <<
"] "
;
61
s <<
" ["
;
62
for
(std::vector<CTPRoI>::size_type i(0); i <
roIVec
().size(); ++i) {
63
s <<
LVL1CTP::convertToHex
(
roIVec
()[i].roIWord());
64
}
65
s <<
"] "
;
66
s <<
" ["
<< this->
trailer
().
dump
() <<
"] "
;
67
68
return
s.str();
69
}
70
71
const
std::string
CTPResult::print
(
const
bool
longFormat)
const
72
{
73
std::ostringstream s;
74
75
s <<
"header ["
<< this->
header
().
print
(longFormat) <<
"] "
;
76
if
(longFormat) s << std::endl;
77
s <<
"data ["
<<
convert
(this->
roIVec
(), longFormat) <<
"] "
;
78
if
(longFormat) s << std::endl;
79
s <<
"trailer ["
<< this->
trailer
().
print
(longFormat) <<
"] "
;
80
81
return
s.str();
82
}
83
84
const
std::string
CTPResult::convert
(
const
std::vector<CTPRoI>& data,
const
bool
longFormat)
const
85
{
86
std::ostringstream s;
87
88
// time
89
for
(
size_t
i(0); (i <
m_ctpDataformat
.getNumberTimeWords()) && (i < data.size()); ++i) {
90
if
(longFormat) s <<
"\n"
;
91
if
(i == 0 || longFormat) s <<
" Time"
;
92
if
(longFormat) s << std::setw(1) << i;
93
s <<
" "
<< std::setw(8) << data[i].roIWord();
94
if
(longFormat) s << std::endl;
95
}
96
97
// TIP
98
for
(
size_t
i(0), p((
m_useRoIB
) ?
m_ctpDataformat
.getTIPpos():
m_l1aBunch
*
m_ctpDataformat
.getDAQwordsPerBunch()+
m_ctpDataformat
.getTIPpos());
99
(i < ((
m_useRoIB
) ?
m_ctpDataformat
.getRoIBTIPwords():
m_ctpDataformat
.getTIPwords())) && (p < data.size());
100
++i, ++p) {
101
if
(longFormat) s <<
"\n"
;
102
if
(i == 0 || longFormat) s <<
" TIP"
;
103
if
(longFormat) s << std::setw(1) << i;
104
s <<
LVL1CTP::convertToHex
(data[p].roIWord());
105
if
(longFormat) s << std::endl;
106
}
107
108
// FPI
109
// for (size_t i(0), p(m_ctpDataformat.getFPIpos());
110
// (i < m_ctpDataformat.getFPIwords()) && (p < data.size());
111
// ++i, ++p) {
112
// if (longFormat) s << "\n";
113
// if (i == 0 || longFormat) s << " FPI";
114
// if (longFormat) s << std::setw(1) << i;
115
// s << LVL1CTP::convertToHex(data[p].roIWord());
116
// if (longFormat) s << std::endl;
117
// }
118
119
// TBP
120
for
(
size_t
i(0), p(((
m_useRoIB
) ?
m_ctpDataformat
.getRoIBTBPpos():
m_l1aBunch
*
m_ctpDataformat
.getDAQwordsPerBunch()+
m_ctpDataformat
.getTBPpos()));
121
(i <
m_ctpDataformat
.getTBPwords()) && (p < data.size());
122
++i, ++p) {
123
if
(longFormat) s <<
"\n"
;
124
if
(i == 0 || longFormat) s <<
" TBP"
;
125
if
(longFormat) s << std::setw(1) << i;
126
s <<
LVL1CTP::convertToHex
(data[p].roIWord());
127
if
(longFormat) s << std::endl;
128
}
129
130
// TAP
131
for
(
size_t
i(0), p((
m_useRoIB
) ?
m_ctpDataformat
.getTAPpos():
m_l1aBunch
*
m_ctpDataformat
.getDAQwordsPerBunch()+
m_ctpDataformat
.getTAPpos());
132
(i < ((
m_useRoIB
) ?
m_ctpDataformat
.getRoIBTAPwords():
m_ctpDataformat
.getTAPwords())) && (p < data.size());
133
++i, ++p) {
134
if
(longFormat) s <<
"\n"
;
135
if
(i == 0 || longFormat) s <<
" TAP"
;
136
if
(longFormat) s << std::setw(1) << i;
137
s <<
LVL1CTP::convertToHex
(data[p].roIWord());
138
if
(longFormat) s << std::endl;
139
}
140
141
// TAV
142
for
(
size_t
i(0), p(((
m_useRoIB
) ?
m_ctpDataformat
.getRoIBTAVpos():
m_l1aBunch
*
m_ctpDataformat
.getDAQwordsPerBunch()+
m_ctpDataformat
.getTAVpos()));
143
(i <
m_ctpDataformat
.getTAVwords()) && (p < data.size());
144
++i, ++p) {
145
if
(longFormat) s <<
"\n"
;
146
if
(i == 0 || longFormat) s <<
" TAV"
;
147
if
(longFormat) s << std::setw(1) << i;
148
s <<
LVL1CTP::convertToHex
(data[p].roIWord());
149
if
(longFormat) s << std::endl;
150
}
151
152
return
s.str();
153
}
154
155
156
void
CTPResult::dumpData
()
const
157
{
158
SmartIF<IMessageSvc> msgSvc{Gaudi::svcLocator()->service(
"MessageSvc"
)};
159
if
( !msgSvc ) {
160
return
;
161
}
162
MsgStream log(msgSvc,
"CTPResult"
);
163
dumpData
(log);
164
}
165
166
void
CTPResult::dumpData
(MsgStream& log)
const
167
{
168
log << MSG::DEBUG <<
"*BEGIN* CTPResult"
<<
endmsg
;
169
m_CTPResultHeader
.dumpData(log);
170
int
counter = 0;
171
std::vector< CTPRoI >::const_iterator it =
m_CTPResultRoIVec
.begin();
172
for
(; it !=
m_CTPResultRoIVec
.end(); ++it,++counter) {
173
log << MSG::DEBUG <<
"RoI word["
<< counter <<
"] : 0x"
174
<< MSG::hex << it->roIWord() << MSG::dec <<
endmsg
;
175
}
176
m_CTPResultTrailer
.dumpData(log);
177
log << MSG::DEBUG <<
"*END* CTPResult"
<<
endmsg
;
178
}
179
180
// convert vector of ints into bitset
181
std::bitset<512>
convertToBitset
(
const
std::vector<uint32_t>& words)
182
{
183
std::bitset<512> bitset;
184
185
for
(
size_t
i(0); i < words.size(); ++i) {
186
std::bitset<512> bs = words[i];
187
bs <<= (i * 32);
188
bitset |= bs;
189
}
190
191
return
bitset;
192
}
193
194
// convert vector of CTPRoIs into bitset
195
std::bitset<512>
convertToBitset
(
const
std::vector<CTPRoI>& words)
196
{
197
std::bitset<512> bitset;
198
199
for
(
size_t
i(0); i < words.size(); ++i) {
200
std::bitset<512> bs = words[i].roIWord();
201
bs <<= (i * 32);
202
bitset |= bs;
203
}
204
205
return
bitset;
206
}
207
208
}
// namespace ROIB
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:61
TrigT1CTPDefs.h
CTPResult.h
ROIB::CTPResult::convert
const std::string convert(const std::vector< CTPRoI > &data, const bool longFormat=false) const
convert data content into string (used by dump and print)
Definition
CTPResult.cxx:84
ROIB::CTPResult::m_ctpDataformat
CTPdataformatVersion m_ctpDataformat
Definition
Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h:126
ROIB::CTPResult::header
const Header & header() const
return header
ROIB::CTPResult::dumpData
void dumpData() const
print object content to default message stream
Definition
CTPResult.cxx:156
ROIB::CTPResult::m_l1aBunch
unsigned int m_l1aBunch
Definition
Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h:135
ROIB::CTPResult::m_CTPResultTrailer
Trailer m_CTPResultTrailer
trailer fragment in LVL1 eformat
Definition
Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h:121
ROIB::CTPResult::m_CTPResultRoIVec
std::vector< CTPRoI > m_CTPResultRoIVec
raw data content (RoIs)
Definition
Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h:122
ROIB::CTPResult::print
const std::string print(const bool longFormat=false) const
print object content in a human readable format to string
Definition
CTPResult.cxx:71
ROIB::CTPResult::m_CTPResultHeader
Header m_CTPResultHeader
header fragment in LVL1 eformat
Definition
Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h:120
ROIB::CTPResult::roIVec
const std::vector< CTPRoI > & roIVec() const
return the RoI vector */
ROIB::CTPResult::dump
const std::string dump() const
dump raw object content to string
Definition
CTPResult.cxx:56
ROIB::CTPResult::trailer
const Trailer & trailer() const
return trailer
ROIB::CTPResult::m_useRoIB
bool m_useRoIB
Definition
Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h:132
ROIB::CTPResult::CTPResult
CTPResult()
default constructor: empty object
Definition
Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h:56
ROIB::Header
Header models the LVL1 ROD Header.
Definition
TrigT1Result/TrigT1Result/Header.h:37
ROIB::Header::print
const std::string print(const bool longFormat=false) const
print object content in a human readable format to string
Definition
TrigT1Result/src/Header.cxx:80
ROIB::Header::dump
const std::string dump() const
dump raw object content to string
Definition
TrigT1Result/src/Header.cxx:69
ROIB::Trailer
ROIB::Trailer models the LVL1 ROD Trailer.
Definition
Trailer.h:37
ROIB::Trailer::dump
const std::string dump() const
dump raw object content to string
Definition
Trailer.cxx:45
ROIB::Trailer::print
const std::string print(const bool longFormat=false) const
print object content in a human readable format to string
Definition
Trailer.cxx:56
head
std::string head(std::string s, const std::string &pattern)
head of a string
Definition
computils.cxx:312
LVL1CTP::convertToHex
const std::string convertToHex(const uint32_t word)
helper function to dump a number in hex format
Definition
TrigT1CTPDefs.h:41
ROIB
Namespace of the LVL1 RoIB simulation.
Definition
ILvl1ResultAccessTool.h:19
ROIB::convertToBitset
std::bitset< 512 > convertToBitset(const std::vector< uint32_t > &words)
convert vector of unsigned int into bitset
Definition
CTPResult.cxx:181
std
STL namespace.
Generated on
for ATLAS Offline Software by
1.17.0