ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigT1
TrigT1RPClogic
src
bitPATTERN.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
TrigT1RPClogic/bitPATTERN.h
"
6
7
using namespace
std
;
8
9
bitPATTERN::bitPATTERN
(
const
std::string&
name
,
const
PATTERNidentity
&
id
,
int
size
) :
10
RPCtrigDataObject
(0,
name
),
11
m_id
(
id
),
12
m_size
(
size
)
13
{
14
m_digits
=
new
const
RPCdigit
* [
m_size
];
15
reset
();
16
}
17
18
bitPATTERN::bitPATTERN
(
const
bitPATTERN
& pattern) :
19
RPCtrigDataObject
(0,pattern.
name
()),
20
m_id
(pattern.
id
()),
21
m_size
(pattern.
size
())
22
{
23
m_digits
=
new
const
RPCdigit
* [
m_size
];
24
reset
();
25
for
(
int
i=0;i<
m_size
;++i)
m_digits
[i] = pattern[i];
26
}
27
28
bitPATTERN::~bitPATTERN
()
29
{
30
delete
[]
m_digits
;
31
}
32
33
bitPATTERN
&
34
// cppcheck-suppress operatorEqVarError; m_size not assigned
35
bitPATTERN::operator=
(
const
bitPATTERN
& pattern)
36
{
37
if
(pattern.size() !=
m_size
)
return
*
this
;
38
39
reset
();
40
41
m_id
= pattern.id();
42
for
(
int
i=0;i<
m_size
;++i)
m_digits
[i] = pattern[i];
43
return
*
this
;
44
}
45
46
bool
47
bitPATTERN::operator<
(
const
bitPATTERN
& pattern)
48
{
49
if
(
m_id
< pattern.id())
return
true
;
50
else
return
false
;
51
}
52
53
void
54
bitPATTERN::set
(
const
RPCdigit
* digit,
int
bit)
55
{
56
if
(bit >=
m_size
|| bit < 0)
return
;
57
m_digits
[bit] = digit;
58
}
59
60
void
61
bitPATTERN::unset
(
int
bit)
62
{
63
if
(bit >=
m_size
|| bit < 0)
return
;
64
m_digits
[bit] = 0;
65
}
66
67
68
void
69
bitPATTERN::reset
()
70
{
71
for
(
int
i=0;i<
m_size
;++i)
72
{
73
m_digits
[i] = 0;
74
}
75
}
76
77
bool
78
bitPATTERN::any
()
const
79
{
80
for
(
int
i=0;i<
m_size
;++i)
81
{
82
if
(
m_digits
[i])
return
true
;
83
}
84
return
false
;
85
}
86
87
bool
88
bitPATTERN::test
(
int
bit)
const
89
{
90
if
(bit >=
m_size
|| bit < 0)
return
false
;
91
if
(
m_digits
[bit])
return
true
;
92
else
return
false
;
93
}
94
95
const
RPCdigit
*
96
bitPATTERN::operator[]
(
int
bit)
const
97
{
98
if
(bit >=
m_size
|| bit < 0)
return
0;
99
else
return
m_digits
[bit];
100
}
101
102
bitPATTERN
103
bitPATTERN::operator&
(
const
bitPATTERN
& pattern)
const
104
{
105
if
(pattern.size() !=
m_size
)
return
*
this
;
106
bitPATTERN
result(
name
(),
id
(),
m_size
);
107
108
for
(
int
i=0;i<
m_size
;++i)
109
{
110
if
(
m_digits
[i] && pattern.test(i) ) result.set(
m_digits
[i],i);
111
}
112
113
return
result;
114
}
115
116
bitPATTERN
&
117
bitPATTERN::operator&=
(
const
bitPATTERN
& pattern)
118
{
119
if
(pattern.size() !=
m_size
)
return
*
this
;
120
for
(
int
i=0;i<
m_size
;++i)
121
{
122
if
( !(
m_digits
[i] && pattern.test(i)) )
m_digits
[i] = 0;
123
}
124
return
*
this
;
125
}
126
127
bitPATTERN
128
bitPATTERN::operator|
(
const
bitPATTERN
& pattern)
const
129
{
130
if
(pattern.size() !=
m_size
)
return
*
this
;
131
bitPATTERN
result(
name
(),
id
(),
m_size
);
132
133
for
(
int
i=0;i<
m_size
;++i)
134
{
135
if
(
m_digits
[i] || pattern.test(i) )
136
{
137
if
(
m_digits
[i]) result.set(
m_digits
[i],i);
138
else
result.set(pattern[i],i);
139
}
140
}
141
142
return
result;
143
}
144
145
bitPATTERN
&
146
bitPATTERN::operator|=
(
const
bitPATTERN
& pattern)
147
{
148
if
(pattern.size() !=
m_size
)
return
*
this
;
149
for
(
int
i=0;i<
m_size
;++i)
150
{
151
if
( !(
m_digits
[i] || pattern.test(i)) )
m_digits
[i] = 0;
152
else
if
(!
m_digits
[i])
m_digits
[i] = pattern[i];
153
}
154
return
*
this
;
155
}
156
157
158
bitPATTERN
159
bitPATTERN::operator^
(
const
bitPATTERN
& pattern)
const
160
{
161
if
(pattern.size() !=
m_size
)
return
*
this
;
162
bitPATTERN
result(
name
(),
id
(),
m_size
);
163
164
for
(
int
i=0;i<
m_size
;++i)
165
{
166
if
( (
m_digits
[i] || pattern.test(i)) &&
167
!(
m_digits
[i] && pattern.test(i)) )
168
{
169
if
(
m_digits
[i]) result.set(
m_digits
[i],i);
170
else
result.set(pattern[i],i);
171
}
172
}
173
174
return
result;
175
}
176
177
bitPATTERN
&
178
bitPATTERN::operator^=
(
const
bitPATTERN
& pattern)
179
{
180
if
(pattern.size() !=
m_size
)
return
*
this
;
181
for
(
int
i=0;i<
m_size
;++i)
182
{
183
if
( !((
m_digits
[i] || pattern.test(i)) &&
184
!(
m_digits
[i] && pattern.test(i)) ) )
m_digits
[i] = 0;
185
else
if
(!
m_digits
[i])
m_digits
[i] = pattern[i];
186
}
187
return
*
this
;
188
}
189
190
bitPATTERN
&
191
bitPATTERN::operator<<
(
int
num)
192
{
193
if
(num <= 0)
return
*
this
;
194
for
(
int
i=0;i<num;++i)
shift_left
();
195
return
*
this
;
196
}
197
198
bitPATTERN
&
199
bitPATTERN::operator>>
(
int
num)
200
{
201
if
(num <= 0)
return
*
this
;
202
for
(
int
i=0;i<num;++i)
shift_right
();
203
return
*
this
;
204
}
205
206
void
207
bitPATTERN::shift_left
()
208
{
209
for
(
int
i=1;i<
m_size
;++i)
m_digits
[i-1] =
m_digits
[i];
210
m_digits
[
m_size
-1] = 0;
211
}
212
213
void
214
bitPATTERN::shift_right
()
215
{
216
for
(
int
i=
m_size
-2;i>=0;--i)
m_digits
[i+1] =
m_digits
[i];
217
m_digits
[0] = 0;
218
}
219
220
void
bitPATTERN::dump
(uint32_t& first_32_pattern ,
221
uint32_t& second_32_pattern )
const
222
{
223
first_32_pattern = 0x0;
224
second_32_pattern = 0x0;
225
226
if
(
m_size
!=32 &&
m_size
!=64)
return
;
227
228
for
(
int
i=0; i<32; ++i)
229
{
230
if
(
m_digits
[i]) first_32_pattern |= (0x1<<i);
231
}
232
233
if
(
m_size
== 64)
234
{
235
for
(
int
i=32; i<64; ++i)
236
{
237
if
(
m_digits
[i]) second_32_pattern |= (0x1<<(i-32));
238
}
239
}
240
}
241
242
243
void
bitPATTERN::Print
(ostream& stream,
bool
detail
)
const
244
{
245
stream <<
name
() <<
" ("
<<
size
() <<
") "
;
246
247
if
(
any
()) stream <<
"*> "
;
248
else
stream <<
" > "
;
249
250
for
(
int
i=0;i<
size
();++i)
251
{
252
if
(
test
(i)) stream <<
"1"
;
253
else
stream <<
"0"
;
254
}
255
256
257
stream << endl;
258
259
if
(
detail
)
260
{
261
stream <<
"gives input to "
<<
id
() << endl;
262
for
(
int
i=0;i<
size
();++i)
263
{
264
if
(
test
(i))
265
{
266
stream <<
"bit "
<< i <<
" raised by:"
<< endl;
267
(*this)[i]->Print(stream,
false
);
268
}
269
}
270
}
271
}
bitPATTERN.h
BaseObject::name
const std::string & name() const
Definition
BaseObject.h:23
PATTERNidentity
Definition
PATTERNidentity.h:13
RPCdigit
Definition
RPCdigit.h:16
RPCtrigDataObject::RPCtrigDataObject
RPCtrigDataObject(int, const std::string &)
Definition
RPCtrigDataObject.cxx:10
bitPATTERN
Definition
bitPATTERN.h:13
bitPATTERN::bitPATTERN
bitPATTERN(const std::string &, const PATTERNidentity &, int)
Definition
bitPATTERN.cxx:9
bitPATTERN::id
const PATTERNidentity & id(void) const
Definition
bitPATTERN.h:39
bitPATTERN::operator<<
bitPATTERN & operator<<(int)
Definition
bitPATTERN.cxx:191
bitPATTERN::set
void set(const RPCdigit *, int)
Definition
bitPATTERN.cxx:54
bitPATTERN::reset
void reset(void)
Definition
bitPATTERN.cxx:69
bitPATTERN::Print
void Print(std::ostream &, bool detail) const
Definition
bitPATTERN.cxx:243
bitPATTERN::test
bool test(int) const
Definition
bitPATTERN.cxx:88
bitPATTERN::operator<
bool operator<(const bitPATTERN &)
Definition
bitPATTERN.cxx:47
bitPATTERN::operator|=
bitPATTERN & operator|=(const bitPATTERN &)
Definition
bitPATTERN.cxx:146
bitPATTERN::dump
void dump(uint32_t &, uint32_t &) const
Definition
bitPATTERN.cxx:220
bitPATTERN::operator=
bitPATTERN & operator=(const bitPATTERN &)
Definition
bitPATTERN.cxx:35
bitPATTERN::shift_right
void shift_right(void)
Definition
bitPATTERN.cxx:214
bitPATTERN::unset
void unset(int)
Definition
bitPATTERN.cxx:61
bitPATTERN::m_digits
const RPCdigit ** m_digits
Definition
bitPATTERN.h:17
bitPATTERN::any
bool any(void) const
Definition
bitPATTERN.cxx:78
bitPATTERN::size
int size(void) const
Definition
bitPATTERN.h:41
bitPATTERN::m_id
PATTERNidentity m_id
Definition
bitPATTERN.h:15
bitPATTERN::m_size
int m_size
Definition
bitPATTERN.h:16
bitPATTERN::operator>>
bitPATTERN & operator>>(int)
Definition
bitPATTERN.cxx:199
bitPATTERN::shift_left
void shift_left(void)
Definition
bitPATTERN.cxx:207
bitPATTERN::~bitPATTERN
~bitPATTERN()
Definition
bitPATTERN.cxx:28
bitPATTERN::operator&
bitPATTERN operator&(const bitPATTERN &) const
Definition
bitPATTERN.cxx:103
bitPATTERN::operator^
bitPATTERN operator^(const bitPATTERN &) const
Definition
bitPATTERN.cxx:159
bitPATTERN::operator^=
bitPATTERN & operator^=(const bitPATTERN &)
Definition
bitPATTERN.cxx:178
bitPATTERN::operator|
bitPATTERN operator|(const bitPATTERN &) const
Definition
bitPATTERN.cxx:128
bitPATTERN::operator&=
bitPATTERN & operator&=(const bitPATTERN &)
Definition
bitPATTERN.cxx:117
bitPATTERN::operator[]
const RPCdigit * operator[](int) const
Definition
bitPATTERN.cxx:96
detail
Definition
extract_histogram_tag.cxx:14
std
STL namespace.
Generated on
for ATLAS Offline Software by
1.17.0