BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
TrigEACC.cxx
Go to the documentation of this file.
1#include "TrigEvent/TrigEACC.h"
2#include <fstream>
3#include <iostream>
4using namespace std;
5
6TrigEACC::TrigEACC( const char* name ) { m_name = name; }
7
9
11 // initialize
12 for ( uint32_t i = 0; i < 11; i++ )
13 for ( uint32_t j = 0; j < 32; j++ )
14 for ( uint32_t k = 0; k < 32; k++ )
15 {
16 if ( j < 30 ) TC[i][j][k] = 0;
17 if ( i == 0 )
18 {
19 TC_E[j][k] = 0;
20 TC_W[j][k] = 0;
21 }
22 if ( i == 0 && j < 16 )
23 {
24 midCondi[j] = 0;
25 emcTrigCondi[j][k] = 0;
26 }
27 if ( i == 0 && j < 12 )
28 {
29 E_blk[j] = 0;
30 T_blk[j] = 0;
31 }
32 if ( i == 0 && j < 2 )
33 {
34 E_blkE[j] = 0;
35 T_blkE[j] = 0;
36 E_blkW[j] = 0;
37 T_blkW[j] = 0;
38 }
39 }
40 E_B_Etot = 0;
41 T_B_Etot = 0;
42 E_E_Etot = 0;
43 T_E_Etot = 0;
44 E_blkAll = 0;
45 T_blkAll = 0;
46 E_eastHalf = 0;
47 T_eastHalf = 0;
48 E_westHalf = 0;
49 T_westHalf = 0;
50 E_eastEndHalf = 0;
51 T_eastEndHalf = 0;
52 E_westEndHalf = 0;
53 T_westEndHalf = 0;
54}
55
56void TrigEACC::setEACCTrigData( uint32_t boardId, uint32_t window, uint32_t datasize,
57 const uint32_t* data ) {
58 if ( boardId != 0xd7 )
59 std::cerr << "ERROR: You set the wrong board data to TrigEACC!!!" << std::endl;
60
61 m_window = window;
62
63 uint32_t charge_mask = 0xFFFF;
64 uint32_t time_mask = 0xFF0000;
65 for ( uint32_t i = 0; i < datasize; i++ )
66 {
67 if ( i < 12 )
68 {
69 E_blk[i] = ( ( data[i] ) & charge_mask );
70 T_blk[i] = ( ( data[i] ) & time_mask ) >> 16;
71 }
72 if ( i >= 12 && i < 14 )
73 {
74 E_blkE[i - 12] = ( ( data[i] ) & charge_mask );
75 T_blkE[i - 12] = ( ( data[i] ) & time_mask ) >> 16;
76 }
77 if ( i >= 14 && i < 16 )
78 {
79 E_blkW[i - 14] = ( ( data[i] ) & charge_mask );
80 T_blkW[i - 14] = ( ( data[i] ) & time_mask ) >> 16;
81 }
82 if ( i >= 16 && i < 23 )
83 {
84 if ( i == 16 )
85 {
86 E_B_Etot = ( ( data[i] ) & charge_mask );
87 T_B_Etot = ( ( data[i] ) & time_mask ) >> 16;
88 }
89 if ( i == 17 )
90 {
91 E_E_Etot = ( ( data[i] ) & charge_mask );
92 T_E_Etot = ( ( data[i] ) & time_mask ) >> 16;
93 }
94 if ( i == 18 )
95 {
96 E_blkAll = ( ( data[i] ) & charge_mask );
97 T_blkAll = ( ( data[i] ) & time_mask ) >> 16;
98 }
99 if ( i == 19 )
100 {
101 E_eastHalf = ( ( data[i] ) & charge_mask );
102 T_eastHalf = ( ( data[i] ) & time_mask ) >> 16;
103 }
104 if ( i == 20 )
105 {
106 E_westHalf = ( ( data[i] ) & charge_mask );
107 T_westHalf = ( ( data[i] ) & time_mask ) >> 16;
108 }
109 if ( i == 21 )
110 {
111 E_eastEndHalf = ( ( data[i] ) & charge_mask );
112 T_eastEndHalf = ( ( data[i] ) & time_mask ) >> 16;
113 }
114 if ( i == 22 )
115 {
116 E_westEndHalf = ( ( data[i] ) & charge_mask );
117 T_westEndHalf = ( ( data[i] ) & time_mask ) >> 16;
118 }
119 }
120 if ( i == 23 )
121 {
122 for ( uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1 )
123 {
124 if ( data[i] & mask ) midCondi[j] = 1;
125 }
126 }
127 if ( i >= 24 && i < 24 + 20 * window )
128 {
129 uint32_t winId = uint32_t( ( i - 24 ) / 20 );
130 uint32_t id = i - ( 24 + winId * 20 );
131 if ( i >= ( 24 + winId * 20 ) && i < ( 39 + winId * 20 ) )
132 {
133 for ( uint32_t j = 0, mask = 1; j < 24; j++, mask <<= 1 )
134 {
135 if ( j < 11 )
136 {
137 if ( data[i] & mask ) TC[j][2 * id + 1][winId] = 1;
138 }
139 if ( j >= 12 && j < 23 )
140 {
141 if ( data[i] & mask ) TC[j - 12][2 * id][winId] = 1;
142 }
143 }
144 }
145 if ( i == ( 39 + winId * 20 ) )
146 {
147 for ( uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1 )
148 {
149 if ( data[i] & mask ) TC_E[j][winId] = 1;
150 }
151 }
152 if ( i == ( 40 + winId * 20 ) )
153 {
154 for ( uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1 )
155 {
156 if ( data[i] & mask ) TC_E[j + 16][winId] = 1;
157 }
158 }
159 if ( i == ( 41 + winId * 20 ) )
160 {
161 for ( uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1 )
162 {
163 if ( data[i] & mask ) TC_W[j][winId] = 1;
164 }
165 }
166 if ( i == ( 42 + winId * 20 ) )
167 {
168 for ( uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1 )
169 {
170 if ( data[i] & mask ) TC_W[j + 16][winId] = 1;
171 }
172 }
173 if ( i == ( 43 + winId * 20 ) )
174 {
175 for ( uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1 )
176 {
177 if ( data[i] & mask ) emcTrigCondi[j][winId] = 1;
178 }
179 }
180 }
181 }
182 if ( 24 + 20 * window != datasize )
183 std::cerr << "ERROR: The data in EACC are not complete" << std::endl;
184}
185
TTree * data
void print()
Definition TrigEACC.cxx:186
void setEACCTrigData(uint32_t boardId, uint32_t window, uint32_t datasize, const uint32_t *data)
Definition TrigEACC.cxx:56
TrigEACC(const char *name)
Definition TrigEACC.cxx:6
virtual ~TrigEACC()
Definition TrigEACC.cxx:8
void initialize()
Definition TrigEACC.cxx:10