57 const uint32_t*
data ) {
58 if ( boardId != 0xd7 )
59 std::cerr <<
"ERROR: You set the wrong board data to TrigEACC!!!" << std::endl;
63 uint32_t charge_mask = 0xFFFF;
64 uint32_t time_mask = 0xFF0000;
65 for ( uint32_t i = 0; i < datasize; i++ )
69 E_blk[i] = ( (
data[i] ) & charge_mask );
70 T_blk[i] = ( (
data[i] ) & time_mask ) >> 16;
72 if ( i >= 12 && i < 14 )
74 E_blkE[i - 12] = ( (
data[i] ) & charge_mask );
75 T_blkE[i - 12] = ( (
data[i] ) & time_mask ) >> 16;
77 if ( i >= 14 && i < 16 )
79 E_blkW[i - 14] = ( (
data[i] ) & charge_mask );
80 T_blkW[i - 14] = ( (
data[i] ) & time_mask ) >> 16;
82 if ( i >= 16 && i < 23 )
86 E_B_Etot = ( (
data[i] ) & charge_mask );
87 T_B_Etot = ( (
data[i] ) & time_mask ) >> 16;
91 E_E_Etot = ( (
data[i] ) & charge_mask );
92 T_E_Etot = ( (
data[i] ) & time_mask ) >> 16;
96 E_blkAll = ( (
data[i] ) & charge_mask );
97 T_blkAll = ( (
data[i] ) & time_mask ) >> 16;
101 E_eastHalf = ( (
data[i] ) & charge_mask );
102 T_eastHalf = ( (
data[i] ) & time_mask ) >> 16;
106 E_westHalf = ( (
data[i] ) & charge_mask );
107 T_westHalf = ( (
data[i] ) & time_mask ) >> 16;
111 E_eastEndHalf = ( (
data[i] ) & charge_mask );
112 T_eastEndHalf = ( (
data[i] ) & time_mask ) >> 16;
116 E_westEndHalf = ( (
data[i] ) & charge_mask );
117 T_westEndHalf = ( (
data[i] ) & time_mask ) >> 16;
122 for ( uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1 )
124 if (
data[i] & mask ) midCondi[j] = 1;
127 if ( i >= 24 && i < 24 + 20 * window )
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 ) )
133 for ( uint32_t j = 0, mask = 1; j < 24; j++, mask <<= 1 )
137 if (
data[i] & mask ) TC[j][2 *
id + 1][winId] = 1;
139 if ( j >= 12 && j < 23 )
141 if (
data[i] & mask ) TC[j - 12][2 * id][winId] = 1;
145 if ( i == ( 39 + winId * 20 ) )
147 for ( uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1 )
149 if (
data[i] & mask ) TC_E[j][winId] = 1;
152 if ( i == ( 40 + winId * 20 ) )
154 for ( uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1 )
156 if (
data[i] & mask ) TC_E[j + 16][winId] = 1;
159 if ( i == ( 41 + winId * 20 ) )
161 for ( uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1 )
163 if (
data[i] & mask ) TC_W[j][winId] = 1;
166 if ( i == ( 42 + winId * 20 ) )
168 for ( uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1 )
170 if (
data[i] & mask ) TC_W[j + 16][winId] = 1;
173 if ( i == ( 43 + winId * 20 ) )
175 for ( uint32_t j = 0, mask = 1; j < 16; j++, mask <<= 1 )
177 if (
data[i] & mask ) emcTrigCondi[j][winId] = 1;
182 if ( 24 + 20 * window != datasize )
183 std::cerr <<
"ERROR: The data in EACC are not complete" << std::endl;