BOSS 6.6.4.p01
BESIII Offline Software System
Loading...
Searching...
No Matches
TrigEACC.cxx
Go to the documentation of this file.
1#include <iostream>
2#include <fstream>
4using namespace std;
5
6TrigEACC::TrigEACC(const char* name)
7{
8 m_name = name;
9}
10
12}
13
15 //initialize
16 for(uint32_t i = 0; i < 11; i++)
17 for(uint32_t j = 0; j < 32; j++)
18 for(uint32_t k = 0; k < 32; k++) {
19 if(j < 30) TC[i][j][k] = 0;
20 if(i == 0) { TC_E[j][k] = 0; TC_W[j][k] = 0; }
21 if(i == 0 && j < 16) { midCondi[j] = 0; emcTrigCondi[j][k] = 0; }
22 if(i == 0 && j < 12) { E_blk[j] = 0; T_blk[j] = 0; }
23 if(i == 0 && j < 2) { E_blkE[j] = 0; T_blkE[j] = 0; E_blkW[j] = 0; T_blkW[j] = 0; }
24 }
25 E_B_Etot = 0;
26 T_B_Etot = 0;
27 E_E_Etot = 0;
28 T_E_Etot = 0;
29 E_blkAll = 0;
30 T_blkAll = 0;
31 E_eastHalf = 0;
32 T_eastHalf = 0;
33 E_westHalf = 0;
34 T_westHalf = 0;
35 E_eastEndHalf = 0;
36 T_eastEndHalf = 0;
37 E_westEndHalf = 0;
38 T_westEndHalf = 0;
39}
40
41void TrigEACC::setEACCTrigData( uint32_t boardId, uint32_t window, uint32_t datasize, const uint32_t* data) {
42 if(boardId != 0xd7) std::cerr << "ERROR: You set the wrong board data to TrigEACC!!!" << std::endl;
43
44 m_window = window;
45
46 uint32_t charge_mask = 0xFFFF;
47 uint32_t time_mask = 0xFF0000;
48 for(uint32_t i = 0; i < datasize; i++) {
49 if(i < 12) {
50 E_blk[i] = ((data[i]) & charge_mask);
51 T_blk[i] = ((data[i]) & time_mask) >> 16;
52 }
53 if(i >= 12 && i < 14) {
54 E_blkE[i-12] = ((data[i]) & charge_mask);
55 T_blkE[i-12] = ((data[i]) & time_mask) >> 16;
56 }
57 if(i >= 14 && i < 16) {
58 E_blkW[i-14] = ((data[i]) & charge_mask);
59 T_blkW[i-14] = ((data[i]) & time_mask) >> 16;
60 }
61 if(i >= 16 && i < 23) {
62 if(i == 16) { E_B_Etot = ((data[i]) & charge_mask); T_B_Etot = ((data[i]) & time_mask) >> 16; }
63 if(i == 17) { E_E_Etot = ((data[i]) & charge_mask); T_E_Etot = ((data[i]) & time_mask) >> 16; }
64 if(i == 18) { E_blkAll = ((data[i]) & charge_mask); T_blkAll = ((data[i]) & time_mask) >> 16; }
65 if(i == 19) { E_eastHalf = ((data[i]) & charge_mask); T_eastHalf = ((data[i]) & time_mask) >> 16; }
66 if(i == 20) { E_westHalf = ((data[i]) & charge_mask); T_westHalf = ((data[i]) & time_mask) >> 16; }
67 if(i == 21) { E_eastEndHalf = ((data[i]) & charge_mask); T_eastEndHalf = ((data[i]) & time_mask) >> 16; }
68 if(i == 22) { E_westEndHalf = ((data[i]) & charge_mask); T_westEndHalf = ((data[i]) & time_mask) >> 16; }
69 }
70 if(i == 23) {
71 for(uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1) {
72 if(data[i] & mask) midCondi[j] = 1;
73 }
74 }
75 if(i >= 24 && i < 24 + 20*window) {
76 uint32_t winId = uint32_t ((i-24)/20);
77 uint32_t id = i - (24+winId*20);
78 if(i >= (24+winId*20) && i < (39+winId*20)) {
79 for(uint32_t j = 0, mask = 1; j < 24; j++, mask <<= 1) {
80 if(j < 11) {
81 if(data[i] & mask) TC[j][2*id+1][winId] = 1;
82 }
83 if(j >= 12 && j < 23) {
84 if(data[i] & mask) TC[j-12][2*id][winId] = 1;
85 }
86 }
87 }
88 if(i == (39+winId*20)) {
89 for(uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1) {
90 if(data[i] & mask) TC_E[j][winId] = 1;
91 }
92 }
93 if(i == (40+winId*20)) {
94 for(uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1) {
95 if(data[i] & mask) TC_E[j+16][winId] = 1;
96 }
97 }
98 if(i == (41+winId*20)) {
99 for(uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1) {
100 if(data[i] & mask) TC_W[j][winId] = 1;
101 }
102 }
103 if(i == (42+winId*20)) {
104 for(uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1) {
105 if(data[i] & mask) TC_W[j+16][winId] = 1;
106 }
107 }
108 if(i == (43+winId*20)) {
109 for(uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1) {
110 if(data[i] & mask) emcTrigCondi[j][winId] = 1;
111 }
112 }
113 }
114 }
115 if(24 + 20*window != datasize) std::cerr << "ERROR: The data in EACC are not complete" << std::endl;
116}
117
119}
TTree * data
void print()
Definition: TrigEACC.cxx:118
void setEACCTrigData(uint32_t boardId, uint32_t window, uint32_t datasize, const uint32_t *data)
Definition: TrigEACC.cxx:41
TrigEACC(const char *name)
Definition: TrigEACC.cxx:6
virtual ~TrigEACC()
Definition: TrigEACC.cxx:11
void initialize()
Definition: TrigEACC.cxx:14