BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnProfRawTools.cxx
Go to the documentation of this file.
1
/*
2
*
3
* Author: Yulia Topko
4
*/
5
6
#include "
BmnProfRawTools.h
"
7
//-------------------------------
8
//------ functions
9
//-------------------------------
10
11
void
BmnProfRawTools::endian_swap
(uint32_t& x)
12
{
13
x = (x >> 24) | ((x << 8) & 0x00FF0000) | ((x >> 8) & 0x0000FF00) | (x << 24);
14
}
15
16
bool
BmnProfRawTools::data_or_trig
(
const
uint32_t& word)
17
{
18
return
bool(word >> 31 & 0x1);
19
}
20
21
uint32_t
BmnProfRawTools::holdb_cntr
(
const
uint32_t& word)
22
{
// trigger = 14bit
23
return
((word & 0x7FFC0000) >> 18);
24
}
25
26
bool
BmnProfRawTools::trig_psd
(
const
uint32_t& word)
27
{
28
return
bool((word & 0x7F800000) == 0x55000000);
29
}
30
31
bool
BmnProfRawTools::trig_nsd
(
const
uint32_t& word)
32
{
33
return
bool((word & 0x7F800000) == 0x55800000);
34
}
35
36
uint32_t
BmnProfRawTools::trig_cntr
(
const
uint32_t& word)
37
{
38
return
(word & 0x7FFFFF);
39
}
40
41
bool
BmnProfRawTools::adc_num
(
const
bitset<32>& word)
42
{
43
return
word[17];
44
}
45
46
bool
BmnProfRawTools::adc_num
(
const
uint32_t& word)
47
{
48
return
word & (1 << 17);
49
}
50
51
bool
BmnProfRawTools::fco
(
const
bitset<32>& word)
52
{
53
return
word[16];
54
}
55
56
bool
BmnProfRawTools::fco
(
const
uint32_t& word)
57
{
58
return
word & (1 << 16);
59
}
60
61
int
BmnProfRawTools::adc_ch
(vector<bitset<32>>& adc_word,
char
channel_name)
62
{
63
bitset<12> result;
64
map<char, size_t> offsets{{
'A'
, 0}, {
'B'
, 2}, {
'C'
, 4}, {
'D'
, 6}, {
'E'
, 8}, {
'F'
, 10}, {
'G'
, 12}, {
'H'
, 14}};
65
for
(
size_t
i
= 0;
i
< 12;
i
++) {
66
result[11 -
i
] = adc_word[
i
/ 2][
i
% 2 + offsets[channel_name]];
67
}
68
return
static_cast<
int
>
(result.to_ulong()) - 0x800;
69
// return result.to_ulong();
70
}
71
72
int
BmnProfRawTools::adc_ch
(vector<bitset<32>>& adc_word,
size_t
start_index,
char
channel_name)
73
{
74
unsigned
int
result = 0;
75
map<char, size_t> offsets{{
'A'
, 0}, {
'B'
, 2}, {
'C'
, 4}, {
'D'
, 6}, {
'E'
, 8}, {
'F'
, 10}, {
'G'
, 12}, {
'H'
, 14}};
76
for
(
size_t
i
= 0;
i
< 6;
i
++) {
77
result += ((adc_word[start_index +
i
] >> offsets[channel_name])[0]) << (10 - 2 *
i
+ 1);
78
result += ((adc_word[start_index +
i
] >> (offsets[channel_name] + 1))[0]) << (10 - 2 *
i
);
79
}
80
return
static_cast<
int
>
(result - 0x800);
81
}
82
83
// int BmnProfRawTools::adc_ch(vector<uint32_t> &adc_word, size_t start_index, char channel_name) {
84
// uint32_t result = 0;
85
// map<char, size_t> offsets{
86
// {'A', 0},
87
// {'B', 2},
88
// {'C', 4},
89
// {'D', 6},
90
// {'E', 8},
91
// {'F', 10},
92
// {'G', 12},
93
// {'H', 14}};
94
// for (size_t i = 0; i < 6; i++) {
95
// result += ((adc_word[start_index + i] >> offsets[channel_name]) & 1) << (10 - 2 * i + 1);
96
// result += ((adc_word[start_index + i] >> offsets[channel_name] + 1) & 1) << (10 - 2 * i);
97
// }
98
// return result - 0x800;
99
// // return result.to_ulong();
100
// }
101
102
//---------------------------------------------------
103
// Tracker detector 128x128 strip mapping
104
// Y - n+ readout card 3 and 4
105
// X - p+ readout card 1 and 2
106
// Readout card #1 (X - p+ strips 1-64 ) ADC channel-E.
107
// Readout card #2 (X - p+ strips 65-128) ADC channel-F.
108
// Readout card #3 (Y - n+ strips 65-128) ADC channel-G.
109
// Readout card #4 (Y - n+ strips 1-64 ) ADC channel-H.
110
//---------------------------------------------------
111
//---- beam_tracker_map
112
113
vector<int>
BmnProfRawTools::beam_tracker_map
(vector<int>&
vec
,
char
adc_channel)
114
{
115
vector<int> res(64 *
sizeof
(
int
));
116
117
switch
(adc_channel) {
118
case
'E'
:
119
res =
tracker_X1_chE
(
vec
);
120
break
;
121
case
'F'
:
122
res =
tracker_X2_chF
(
vec
);
123
break
;
124
case
'G'
:
125
res =
tracker_Y1_chH
(
vec
);
126
break
;
127
case
'H'
:
128
res =
tracker_Y2_chG
(
vec
);
129
break
;
130
}
131
return
res;
// never reach
132
}
133
134
//---- tracker_X1_chE
135
136
vector<int>
BmnProfRawTools::tracker_X1_chE
(vector<int>&
vec
)
137
{
138
if
(
vec
.size() != 64)
139
cout <<
"E: tracker_X1_chE.size() is not 64!"
<< endl;
140
141
vector<int> tracker_X1(64);
142
143
tracker_X1[0] =
vec
[61];
144
tracker_X1[1] =
vec
[61];
145
tracker_X1[2] =
vec
[61];
146
tracker_X1[3] =
vec
[61];
147
tracker_X1[4] =
vec
[61];
148
tracker_X1[5] =
vec
[62];
149
tracker_X1[6] =
vec
[60];
150
tracker_X1[7] =
vec
[58];
151
tracker_X1[8] =
vec
[59];
152
tracker_X1[9] =
vec
[57];
153
tracker_X1[10] =
vec
[55];
154
tracker_X1[11] =
vec
[56];
155
tracker_X1[12] =
vec
[54];
156
tracker_X1[13] =
vec
[52];
157
tracker_X1[14] =
vec
[53];
158
tracker_X1[15] =
vec
[51];
159
tracker_X1[16] =
vec
[49];
160
tracker_X1[17] =
vec
[50];
161
tracker_X1[18] =
vec
[48];
162
tracker_X1[19] =
vec
[46];
163
tracker_X1[20] =
vec
[47];
164
tracker_X1[21] =
vec
[45];
165
tracker_X1[22] =
vec
[43];
166
tracker_X1[23] =
vec
[44];
167
tracker_X1[24] =
vec
[42];
168
tracker_X1[25] =
vec
[40];
169
tracker_X1[26] =
vec
[41];
170
tracker_X1[27] =
vec
[39];
171
tracker_X1[28] =
vec
[37];
172
tracker_X1[29] =
vec
[38];
173
tracker_X1[30] =
vec
[36];
174
tracker_X1[31] =
vec
[34];
175
tracker_X1[32] =
vec
[35];
176
tracker_X1[33] =
vec
[33];
177
tracker_X1[34] =
vec
[31];
178
tracker_X1[35] =
vec
[32];
179
tracker_X1[36] =
vec
[30];
180
tracker_X1[37] =
vec
[28];
181
tracker_X1[38] =
vec
[29];
182
tracker_X1[39] =
vec
[27];
183
tracker_X1[40] =
vec
[25];
184
tracker_X1[41] =
vec
[26];
185
tracker_X1[42] =
vec
[24];
186
tracker_X1[43] =
vec
[22];
187
tracker_X1[44] =
vec
[23];
188
tracker_X1[45] =
vec
[21];
189
tracker_X1[46] =
vec
[19];
190
tracker_X1[47] =
vec
[20];
191
tracker_X1[48] =
vec
[18];
192
tracker_X1[49] =
vec
[16];
193
tracker_X1[50] =
vec
[17];
194
tracker_X1[51] =
vec
[15];
195
tracker_X1[52] =
vec
[13];
196
tracker_X1[53] =
vec
[14];
197
tracker_X1[54] =
vec
[12];
198
tracker_X1[55] =
vec
[10];
199
tracker_X1[56] =
vec
[11];
200
tracker_X1[57] =
vec
[9];
201
tracker_X1[58] =
vec
[7];
202
tracker_X1[59] =
vec
[8];
203
tracker_X1[60] =
vec
[6];
204
tracker_X1[61] =
vec
[4];
205
tracker_X1[62] =
vec
[5];
206
tracker_X1[63] =
vec
[3];
207
// ok = vec[63];
208
// test = vec[0], vec[1], vec[2]
209
return
tracker_X1;
210
}
211
212
//---- tracker_X2_chF
213
214
vector<int>
BmnProfRawTools::tracker_X2_chF
(vector<int>&
vec
)
215
{
216
if
(
vec
.size() != 64)
217
cout <<
"E: tracker_X2_chF.size() is not 64!"
<< endl;
218
219
vector<int> tracker_X2(64);
220
221
tracker_X2[0] =
vec
[3];
222
tracker_X2[1] =
vec
[4];
223
tracker_X2[2] =
vec
[5];
224
tracker_X2[3] =
vec
[6];
225
tracker_X2[4] =
vec
[7];
226
tracker_X2[5] =
vec
[8];
227
tracker_X2[6] =
vec
[9];
228
tracker_X2[7] =
vec
[10];
229
tracker_X2[8] =
vec
[11];
230
tracker_X2[9] =
vec
[12];
231
tracker_X2[10] =
vec
[13];
232
tracker_X2[11] =
vec
[14];
233
tracker_X2[12] =
vec
[15];
234
tracker_X2[13] =
vec
[16];
235
tracker_X2[14] =
vec
[17];
236
tracker_X2[15] =
vec
[18];
237
tracker_X2[16] =
vec
[19];
238
tracker_X2[17] =
vec
[20];
239
tracker_X2[18] =
vec
[21];
240
tracker_X2[19] =
vec
[22];
241
tracker_X2[20] =
vec
[23];
242
tracker_X2[21] =
vec
[24];
243
tracker_X2[22] =
vec
[25];
244
tracker_X2[23] =
vec
[26];
245
tracker_X2[24] =
vec
[27];
246
tracker_X2[25] =
vec
[28];
247
tracker_X2[26] =
vec
[29];
248
tracker_X2[27] =
vec
[30];
249
tracker_X2[28] =
vec
[31];
250
tracker_X2[29] =
vec
[32];
251
tracker_X2[30] =
vec
[33];
252
tracker_X2[31] =
vec
[34];
253
tracker_X2[32] =
vec
[35];
254
tracker_X2[33] =
vec
[36];
255
tracker_X2[34] =
vec
[37];
256
tracker_X2[35] =
vec
[38];
257
tracker_X2[36] =
vec
[39];
258
tracker_X2[37] =
vec
[40];
259
tracker_X2[38] =
vec
[41];
260
tracker_X2[39] =
vec
[42];
261
tracker_X2[40] =
vec
[43];
262
tracker_X2[41] =
vec
[44];
263
tracker_X2[42] =
vec
[45];
264
tracker_X2[43] =
vec
[46];
265
tracker_X2[44] =
vec
[47];
266
tracker_X2[45] =
vec
[48];
267
tracker_X2[46] =
vec
[49];
268
tracker_X2[47] =
vec
[50];
269
tracker_X2[48] =
vec
[51];
270
tracker_X2[49] =
vec
[52];
271
tracker_X2[50] =
vec
[53];
272
tracker_X2[51] =
vec
[54];
273
tracker_X2[52] =
vec
[55];
274
tracker_X2[53] =
vec
[56];
275
tracker_X2[54] =
vec
[57];
276
tracker_X2[55] =
vec
[58];
277
tracker_X2[56] =
vec
[59];
278
tracker_X2[57] =
vec
[60];
279
tracker_X2[58] =
vec
[61];
280
tracker_X2[59] =
vec
[62];
281
tracker_X2[60] =
vec
[63];
282
tracker_X2[61] =
vec
[63];
283
tracker_X2[62] =
vec
[63];
284
tracker_X2[63] =
vec
[63];
285
// test = vec[0], vec[1], vec[2]
286
return
tracker_X2;
287
}
288
289
//----- tracker_Y1_chH
290
291
vector<int>
BmnProfRawTools::tracker_Y1_chH
(vector<int>&
vec
)
292
{
293
if
(
vec
.size() != 64)
294
cout <<
"E: tracker_Y1_chH.size() is not 64!"
<< endl;
295
296
vector<int> tracker_Y1(64);
297
tracker_Y1[0] =
vec
[63];
298
tracker_Y1[1] =
vec
[63];
299
tracker_Y1[2] =
vec
[63];
300
tracker_Y1[3] =
vec
[63];
301
tracker_Y1[4] =
vec
[61];
302
tracker_Y1[5] =
vec
[62];
303
tracker_Y1[6] =
vec
[60];
304
tracker_Y1[7] =
vec
[58];
305
tracker_Y1[8] =
vec
[59];
306
tracker_Y1[9] =
vec
[57];
307
tracker_Y1[10] =
vec
[55];
308
tracker_Y1[11] =
vec
[56];
309
tracker_Y1[12] =
vec
[54];
310
tracker_Y1[13] =
vec
[52];
311
tracker_Y1[14] =
vec
[53];
312
tracker_Y1[15] =
vec
[51];
313
tracker_Y1[16] =
vec
[49];
314
tracker_Y1[17] =
vec
[50];
315
tracker_Y1[18] =
vec
[48];
316
tracker_Y1[19] =
vec
[46];
317
tracker_Y1[20] =
vec
[47];
318
tracker_Y1[21] =
vec
[45];
319
tracker_Y1[22] =
vec
[43];
320
tracker_Y1[23] =
vec
[44];
321
tracker_Y1[24] =
vec
[42];
322
tracker_Y1[25] =
vec
[40];
323
tracker_Y1[26] =
vec
[41];
324
tracker_Y1[27] =
vec
[39];
325
tracker_Y1[28] =
vec
[37];
326
tracker_Y1[29] =
vec
[38];
327
tracker_Y1[30] =
vec
[36];
328
tracker_Y1[31] =
vec
[34];
329
tracker_Y1[32] =
vec
[35];
330
tracker_Y1[33] =
vec
[33];
331
tracker_Y1[34] =
vec
[31];
332
tracker_Y1[35] =
vec
[32];
333
tracker_Y1[36] =
vec
[30];
334
tracker_Y1[37] =
vec
[28];
335
tracker_Y1[38] =
vec
[29];
336
tracker_Y1[39] =
vec
[27];
337
tracker_Y1[40] =
vec
[25];
338
tracker_Y1[41] =
vec
[26];
339
tracker_Y1[42] =
vec
[24];
340
tracker_Y1[43] =
vec
[22];
341
tracker_Y1[44] =
vec
[23];
342
tracker_Y1[45] =
vec
[21];
343
tracker_Y1[46] =
vec
[19];
344
tracker_Y1[47] =
vec
[20];
345
tracker_Y1[48] =
vec
[18];
346
tracker_Y1[49] =
vec
[16];
347
tracker_Y1[50] =
vec
[17];
348
tracker_Y1[51] =
vec
[15];
349
tracker_Y1[52] =
vec
[13];
350
tracker_Y1[53] =
vec
[14];
351
tracker_Y1[54] =
vec
[12];
352
tracker_Y1[55] =
vec
[10];
353
tracker_Y1[56] =
vec
[11];
354
tracker_Y1[57] =
vec
[9];
355
tracker_Y1[58] =
vec
[7];
356
tracker_Y1[59] =
vec
[8];
357
tracker_Y1[60] =
vec
[6];
358
tracker_Y1[61] =
vec
[4];
359
tracker_Y1[62] =
vec
[5];
360
tracker_Y1[63] =
vec
[3];
361
// test = vec[0],vec[1], vec[2]; goto test_tracker_Y1
362
return
tracker_Y1;
363
}
364
365
//----- tracker_Y2_chG
366
367
vector<int>
BmnProfRawTools::tracker_Y2_chG
(vector<int>&
vec
)
368
{
369
if
(
vec
.size() != 64)
370
cout <<
"E: tracker_Y2_chG.size() is not 64!"
<< endl;
371
372
vector<int> tracker_Y2(64);
373
374
tracker_Y2[0] =
vec
[63];
375
tracker_Y2[1] =
vec
[62];
376
tracker_Y2[2] =
vec
[61];
377
tracker_Y2[3] =
vec
[60];
378
tracker_Y2[4] =
vec
[59];
379
tracker_Y2[5] =
vec
[58];
380
tracker_Y2[6] =
vec
[57];
381
tracker_Y2[7] =
vec
[56];
382
tracker_Y2[8] =
vec
[55];
383
tracker_Y2[9] =
vec
[54];
384
tracker_Y2[10] =
vec
[53];
385
tracker_Y2[11] =
vec
[52];
386
tracker_Y2[12] =
vec
[51];
387
tracker_Y2[13] =
vec
[50];
388
tracker_Y2[14] =
vec
[49];
389
tracker_Y2[15] =
vec
[48];
390
tracker_Y2[16] =
vec
[47];
391
tracker_Y2[17] =
vec
[46];
392
tracker_Y2[18] =
vec
[45];
393
tracker_Y2[19] =
vec
[44];
394
tracker_Y2[20] =
vec
[43];
395
tracker_Y2[21] =
vec
[42];
396
tracker_Y2[22] =
vec
[41];
397
tracker_Y2[23] =
vec
[40];
398
tracker_Y2[24] =
vec
[39];
399
tracker_Y2[25] =
vec
[38];
400
tracker_Y2[26] =
vec
[37];
401
tracker_Y2[27] =
vec
[36];
402
tracker_Y2[28] =
vec
[35];
403
tracker_Y2[29] =
vec
[34];
404
tracker_Y2[30] =
vec
[33];
405
tracker_Y2[31] =
vec
[32];
406
tracker_Y2[32] =
vec
[31];
407
tracker_Y2[33] =
vec
[30];
408
tracker_Y2[34] =
vec
[29];
409
tracker_Y2[35] =
vec
[28];
410
tracker_Y2[36] =
vec
[27];
411
tracker_Y2[37] =
vec
[26];
412
tracker_Y2[38] =
vec
[25];
413
tracker_Y2[39] =
vec
[24];
414
tracker_Y2[40] =
vec
[23];
415
tracker_Y2[41] =
vec
[22];
416
tracker_Y2[42] =
vec
[21];
417
tracker_Y2[43] =
vec
[20];
418
tracker_Y2[44] =
vec
[19];
419
tracker_Y2[45] =
vec
[18];
420
tracker_Y2[46] =
vec
[17];
421
tracker_Y2[47] =
vec
[16];
422
tracker_Y2[48] =
vec
[15];
423
tracker_Y2[49] =
vec
[14];
424
tracker_Y2[50] =
vec
[13];
425
tracker_Y2[51] =
vec
[12];
426
tracker_Y2[52] =
vec
[11];
427
tracker_Y2[53] =
vec
[10];
428
tracker_Y2[54] =
vec
[9];
429
tracker_Y2[55] =
vec
[8];
430
tracker_Y2[56] =
vec
[7];
431
tracker_Y2[57] =
vec
[6];
432
tracker_Y2[58] =
vec
[5];
433
tracker_Y2[59] =
vec
[4];
434
tracker_Y2[60] =
vec
[3];
435
tracker_Y2[61] =
vec
[3];
436
tracker_Y2[62] =
vec
[3];
437
tracker_Y2[63] =
vec
[3];
438
// test vec[0], vec[1], vec[2]
439
return
tracker_Y2;
440
}
441
442
//----- tracker_test_signal
443
444
vector<int>
BmnProfRawTools::tracker_tst_sgnl
(vector<int>& chE, vector<int>& chF, vector<int>& chH, vector<int>& chG)
445
{
446
vector<int> tst_sgnl(4 * 3);
447
448
tst_sgnl[0] = chE[0];
449
tst_sgnl[1] = chE[1];
450
tst_sgnl[2] = chE[2];
451
tst_sgnl[3] = chF[0];
452
tst_sgnl[4] = chF[1];
453
tst_sgnl[5] = chF[2];
454
tst_sgnl[6] = chH[0];
455
tst_sgnl[7] = chH[1];
456
tst_sgnl[8] = chH[2];
457
tst_sgnl[9] = chG[0];
458
tst_sgnl[10] = chG[1];
459
tst_sgnl[11] = chG[2];
460
461
return
tst_sgnl;
462
}
i
int i
Definition
P4_F32vec4.h:22
BmnProfRawTools.h
BmnProfRawTools::data_or_trig
static bool data_or_trig(const uint32_t &word)
Definition
BmnProfRawTools.cxx:16
BmnProfRawTools::trig_nsd
static bool trig_nsd(const uint32_t &word)
Definition
BmnProfRawTools.cxx:31
BmnProfRawTools::tracker_X2_chF
static vector< int > tracker_X2_chF(vector< int > &vec)
Definition
BmnProfRawTools.cxx:214
BmnProfRawTools::beam_tracker_map
static vector< int > beam_tracker_map(vector< int > &vec, char adc_channel)
Definition
BmnProfRawTools.cxx:113
BmnProfRawTools::fco
static bool fco(const bitset< 32 > &word)
Definition
BmnProfRawTools.cxx:51
BmnProfRawTools::tracker_tst_sgnl
static vector< int > tracker_tst_sgnl(vector< int > &chE, vector< int > &chF, vector< int > &chH, vector< int > &chG)
Definition
BmnProfRawTools.cxx:444
BmnProfRawTools::holdb_cntr
static uint32_t holdb_cntr(const uint32_t &word)
Definition
BmnProfRawTools.cxx:21
BmnProfRawTools::adc_ch
static int adc_ch(vector< bitset< 32 > > &adc_word, char channel_name)
Definition
BmnProfRawTools.cxx:61
BmnProfRawTools::tracker_X1_chE
static vector< int > tracker_X1_chE(vector< int > &vec)
Definition
BmnProfRawTools.cxx:136
BmnProfRawTools::tracker_Y2_chG
static vector< int > tracker_Y2_chG(vector< int > &vec)
Definition
BmnProfRawTools.cxx:367
BmnProfRawTools::trig_cntr
static uint32_t trig_cntr(const uint32_t &word)
Definition
BmnProfRawTools.cxx:36
BmnProfRawTools::trig_psd
static bool trig_psd(const uint32_t &word)
Definition
BmnProfRawTools.cxx:26
BmnProfRawTools::tracker_Y1_chH
static vector< int > tracker_Y1_chH(vector< int > &vec)
Definition
BmnProfRawTools.cxx:291
BmnProfRawTools::adc_num
static bool adc_num(const bitset< 32 > &word)
Definition
BmnProfRawTools.cxx:41
BmnProfRawTools::endian_swap
static void endian_swap(uint32_t &x)
Definition
BmnProfRawTools.cxx:11
vec
base
math
BmnProfRawTools.cxx
Generated on
for BmnRoot by
1.17.0