ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigT1
TrigT1RPClogic
src
RPCbytestream.cxx
Go to the documentation of this file.
1
/* // -*- C++ -*- */
2
3
/*
4
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5
*/
6
7
8
#include <fstream>
9
#include "
TrigT1RPClogic/RPCbytestream.h
"
10
11
using namespace
std
;
12
13
RPCbytestream::RPCbytestream
(
CMAdata
& data,
const
std::string&
filename
,MsgStream& log,
14
debu
cma_debug,
debu
pad_debug,
debu
rx_debug,
15
debu
sl_debug,
debu
cma_struc_debug,
16
debu
pad_struc_debug,
debu
rx_struc_debug,
17
debu
sl_struc_debug,
uint
NOBXS,
uint
BCZERO) :
18
RPCtrigDataObject
(0,
"RPC byte stream"
),
19
m_cma_ro_debug
(cma_debug),
20
m_pad_ro_debug
(pad_debug),
21
m_rx_ro_debug
(rx_debug),
22
m_sl_ro_debug
(sl_debug),
23
m_cma_rostruct_debug
(cma_struc_debug),
24
m_pad_rostruct_debug
(pad_struc_debug),
25
m_rx_rostruct_debug
(rx_struc_debug),
26
m_sl_rostruct_debug
(sl_struc_debug),
27
m_filename
(
filename
)
28
{
29
CMAdata::PatternsList
list = data.give_patterns();
30
CMAdata::PatternsList::iterator it = list.begin();
31
32
while
(it != list.end())
33
{
34
int key = (*it)->sector() * 10000 +
35
(*it)->cma_parameters().id().PAD_index() * 100 +
36
(*it)->cma_parameters().id().type() * 10 +
37
(*it)->cma_parameters().id().Ixx_index();
38
39
std::pair < CMA_Readout::iterator, bool> ins =
40
m_cma_readout.insert(CMA_Readout::value_type(key,CMAreadout(*it, NOBXS, BCZERO)));
41
if(!ins.second)
42
{
43
log << MSG::ERROR <<
"Found duplicate CMA readout into CMA data!"
<< endmsg;
44
}
45
46
++it;
47
}
48
49
build_pad_readout(log, NOBXS);
50
if
(m_filename !=
""
) dump_rpc_bytestream();
51
}
52
53
RPCbytestream::RPCbytestream
(
const
RPCbytestream
& readout) :
54
RPCtrigDataObject
(readout.
number
(),readout.
name
()),
55
m_cma_ro_debug
(readout.
cma_ro_debug
()),
56
m_pad_ro_debug
(readout.
pad_ro_debug
()),
57
m_rx_ro_debug
(readout.
rx_ro_debug
()),
58
m_sl_ro_debug
(readout.
sl_ro_debug
()),
59
m_cma_rostruct_debug
(readout.
cma_rostruct_debug
()),
60
m_pad_rostruct_debug
(readout.
pad_rostruct_debug
()),
61
m_rx_rostruct_debug
(readout.
rx_rostruct_debug
()),
62
m_sl_rostruct_debug
(readout.
sl_rostruct_debug
()),
63
m_filename
(readout.
filename
()),
64
m_cma_readout
(readout.
cma_readout
()),
65
m_pad_readout
(readout.
pad_readout
())
66
{
67
}
68
69
70
RPCbytestream::~RPCbytestream
()
71
{
72
m_cma_readout
.clear();
73
}
74
75
76
void
77
RPCbytestream::build_pad_readout
(MsgStream& log,
uint
NOBXS)
78
{
79
for
(
int
i=0;i<64;++i)
80
{
81
for
(
int
j=0;j<=10;++j)
// 99 is the maximum number allowed
82
{
83
int
kPAD_lw = i * 10000 + j * 100;
84
int
kPAD_hg = i * 10000 + j * 100 + 99;
85
86
CMA_Readout::iterator PAD_l =
m_cma_readout
.lower_bound(kPAD_lw);
87
CMA_Readout::iterator PAD_h =
m_cma_readout
.upper_bound(kPAD_hg);
88
89
if
(distance(PAD_l,PAD_h) )
90
{
91
int
SLid = (*PAD_l).second.sector();
92
int
PADid = (*PAD_l).second.id().PAD_index();
93
PADreadout
pad_readout
(SLid,PADid);
94
95
int
key = SLid * 100 + PADid;
96
97
if
(SLid != i)
98
{
99
log << MSG::ERROR <<
"Key doesn't correspond to CMA Sector Id!"
<<
endmsg
;
100
}
101
102
for
(CMA_Readout::iterator it = PAD_l; it != PAD_h; ++it)
103
{
104
auto
cma_readout
= (*it).second.give_matrix_readout(log, NOBXS);
105
pad_readout
.load_readout(
cma_readout
);
106
if
(log.level() <= MSG::DEBUG) {
107
log << MSG::DEBUG <<
"Dump of the matrices readout into PAD "
<< PADid
108
<< endl
109
<<
cma_readout
[0]
110
<<
cma_readout
[1] <<
endmsg
;
111
}
112
}
113
114
std::pair < PAD_Readout::iterator, bool> ins =
115
m_pad_readout
.insert(PAD_Readout::value_type(key,
pad_readout
));
116
if
(!ins.second)
117
{
118
log << MSG::ERROR <<
"Found duplicate PAD readout into CMA data!"
<<
endmsg
;
119
}
120
}
121
}
122
}
123
}
124
125
void
126
RPCbytestream::dump_rpc_bytestream
()
127
{
128
ofstream out;
129
out.open(
m_filename
.c_str(),ios::app);
130
131
// dump the PAD chunk of data into the byte stream file
132
PAD_Readout::iterator it =
m_pad_readout
.begin();
133
while
(it !=
m_pad_readout
.end())
134
{
135
PadReadOut
* readout = (*it).second.give_pad_readout();
136
137
readout->
bytestream
(out);
138
139
out << endl;
140
141
++it;
142
}
143
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:61
uint
unsigned int uint
Definition
LArOFPhaseFill.cxx:19
RPCbytestream.h
BaseObject::name
const std::string & name() const
Definition
BaseObject.h:23
CMAdata
Definition
CMAdata.h:19
CMAdata::PatternsList
std::list< CMApatterns * > PatternsList
Definition
CMAdata.h:22
PADreadout
Definition
PADreadout.h:20
PadReadOut
Definition
PadReadOut.h:15
PadReadOut::bytestream
void bytestream(std::ostream &stream)
Definition
PadReadOut.cxx:167
RPCbytestream::m_sl_ro_debug
debu m_sl_ro_debug
Definition
RPCbytestream.h:30
RPCbytestream::m_pad_readout
PAD_Readout m_pad_readout
Definition
RPCbytestream.h:40
RPCbytestream::rx_ro_debug
debu rx_ro_debug(void) const
Definition
RPCbytestream.h:53
RPCbytestream::debu
unsigned long int debu
Definition
RPCbytestream.h:22
RPCbytestream::m_filename
std::string m_filename
Definition
RPCbytestream.h:37
RPCbytestream::m_pad_ro_debug
debu m_pad_ro_debug
Definition
RPCbytestream.h:28
RPCbytestream::m_pad_rostruct_debug
debu m_pad_rostruct_debug
Definition
RPCbytestream.h:33
RPCbytestream::m_cma_ro_debug
debu m_cma_ro_debug
Definition
RPCbytestream.h:27
RPCbytestream::pad_ro_debug
debu pad_ro_debug(void) const
Definition
RPCbytestream.h:52
RPCbytestream::m_rx_ro_debug
debu m_rx_ro_debug
Definition
RPCbytestream.h:29
RPCbytestream::filename
const std::string & filename(void) const
Definition
RPCbytestream.h:61
RPCbytestream::m_rx_rostruct_debug
debu m_rx_rostruct_debug
Definition
RPCbytestream.h:34
RPCbytestream::m_sl_rostruct_debug
debu m_sl_rostruct_debug
Definition
RPCbytestream.h:35
RPCbytestream::m_cma_rostruct_debug
debu m_cma_rostruct_debug
Definition
RPCbytestream.h:32
RPCbytestream::rx_rostruct_debug
debu rx_rostruct_debug(void) const
Definition
RPCbytestream.h:58
RPCbytestream::pad_rostruct_debug
debu pad_rostruct_debug(void) const
Definition
RPCbytestream.h:57
RPCbytestream::dump_rpc_bytestream
void dump_rpc_bytestream(void)
Definition
RPCbytestream.cxx:126
RPCbytestream::sl_ro_debug
debu sl_ro_debug(void) const
Definition
RPCbytestream.h:54
RPCbytestream::pad_readout
const PAD_Readout & pad_readout(void) const
Definition
RPCbytestream.h:64
RPCbytestream::m_cma_readout
CMA_Readout m_cma_readout
Definition
RPCbytestream.h:39
RPCbytestream::RPCbytestream
RPCbytestream(CMAdata &, const std::string &, MsgStream &, debu, debu, debu, debu, debu, debu, debu, debu, uint, uint)
Definition
RPCbytestream.cxx:13
RPCbytestream::cma_rostruct_debug
debu cma_rostruct_debug(void) const
Definition
RPCbytestream.h:56
RPCbytestream::sl_rostruct_debug
debu sl_rostruct_debug(void) const
Definition
RPCbytestream.h:59
RPCbytestream::build_pad_readout
void build_pad_readout(MsgStream &log, uint NOBXS)
Definition
RPCbytestream.cxx:77
RPCbytestream::cma_ro_debug
debu cma_ro_debug(void) const
Definition
RPCbytestream.h:51
RPCbytestream::cma_readout
const CMA_Readout & cma_readout(void) const
Definition
RPCbytestream.h:63
RPCbytestream::~RPCbytestream
~RPCbytestream()
Definition
RPCbytestream.cxx:70
RPCtrigDataObject::number
int number() const
Definition
RPCtrigDataObject.h:30
RPCtrigDataObject::RPCtrigDataObject
RPCtrigDataObject(int, const std::string &)
Definition
RPCtrigDataObject.cxx:10
std
STL namespace.
Generated on
for ATLAS Offline Software by
1.17.0