9 m_mdchit_one =
new int*[24];
10 for (
int i = 0; i < 24; i++ ) m_mdchit_one[i] =
new int[256];
11 m_mdchit_sone =
new int*[24];
12 for (
int i = 0; i < 24; i++ ) m_mdchit_sone[i] =
new int[256];
13 m_mdchit_pre =
new int*[24];
14 for (
int i = 0; i < 24; i++ ) m_mdchit_pre[i] =
new int[256];
15 m_mdchit_aft =
new int*[24];
16 for (
int i = 0; i < 24; i++ ) m_mdchit_aft[i] =
new int[256];
17 m_mdchit_win =
new uint32_t*[24];
18 for (
int i = 0; i < 24; i++ ) m_mdchit_win[i] =
new uint32_t[256];
20 m_mdctsf_one =
new int*[6];
21 for (
int i = 0; i < 6; i++ ) m_mdctsf_one[i] =
new int[256];
22 m_mdctsf_sone =
new int*[6];
23 for (
int i = 0; i < 6; i++ ) m_mdctsf_sone[i] =
new int[256];
24 m_mdctsf_pre =
new int*[6];
25 for (
int i = 0; i < 6; i++ ) m_mdctsf_pre[i] =
new int[256];
26 m_mdctsf_aft =
new int*[6];
27 for (
int i = 0; i < 6; i++ ) m_mdctsf_aft[i] =
new int[256];
28 m_mdctsf_win =
new uint32_t*[6];
29 for (
int i = 0; i < 6; i++ ) m_mdctsf_win[i] =
new uint32_t[256];
31 m_mdcltrk_one =
new int[128];
32 m_mdcltrk_sone =
new int[128];
33 m_mdcltrk_pre =
new int[128];
34 m_mdcltrk_aft =
new int[128];
35 m_mdcltrk_win =
new uint32_t[128];
37 m_mdcstrk_one =
new int[128];
38 m_mdcstrk_sone =
new int[128];
39 m_mdcstrk_pre =
new int[128];
40 m_mdcstrk_aft =
new int[128];
41 m_mdcstrk_win =
new uint32_t[128];
43 m_mdcltrkc_one =
new int[132];
44 m_mdcltrkc_sone =
new int[132];
46 m_mdcstrkc_one =
new int[132];
47 m_mdcstrkc_sone =
new int[132];
49 m_mdcTrigCondi =
new int[10];
51 filename = getenv(
"TRIGEVENTROOT" );
52 filename +=
"/dat/trig_mdc.txt";
54 inputfile.open( filename.c_str() );
56 std::vector<uint32_t> vtmp;
58 for ( uint32_t i = 0; i < 6; i++ ) inputfile >>
data[i];
59 for ( uint32_t j = 0; j < 4680; j++ )
61 for ( uint32_t k = 0; k < 6; k++ ) inputfile >>
data[k];
62 if ( ( uint32_t( atoi(
data[0].c_str() ) ) != mark ) || j == 4679 )
66 for (
int m = 1; m < 6; m++ ) vtmp.push_back( atoi(
data[m].c_str() ) );
68 typedef pair<uint32_t, vector<uint32_t>> vpair;
69 m_datamap.insert( vpair( mark, vtmp ) );
70 mark = atoi(
data[0].c_str() );
73 if ( ( uint32_t( atoi(
data[0].c_str() ) ) == mark ) && j != 4679 )
75 for (
int l = 1; l < 6; l++ ) vtmp.push_back( atoi(
data[l].c_str() ) );
146 const uint32_t*
data ) {
147 if ( datasize % window != 0 )
148 cerr <<
"ERROR: The data size is not completed in time windows" << endl;
149 uint32_t periods = datasize / window;
150 std::map<uint32_t, std::vector<uint32_t>>::iterator
iter = m_datamap.begin();
151 for ( ;
iter != m_datamap.end();
iter++ )
153 if (
iter->first != boardId )
continue;
154 std::vector<uint32_t>::iterator iter1 =
iter->second.begin();
155 for ( ; iter1 !=
iter->second.end(); iter1 += 5 )
157 uint32_t byteId = *( iter1 + 0 ) - 1;
158 uint32_t bitId = *( iter1 + 1 );
159 int layerId = *( iter1 + 2 ) - 1;
160 int wireId = *( iter1 + 3 ) - 1;
161 uint32_t data_type = *( iter1 + 4 );
162 int seriesOne = -100;
163 bool firstSOne =
true;
164 bool flag_firstone(
true ), flag_lastone(
true );
165 for ( uint32_t i = 0; i < window; i++ )
167 if ( layerId < 0 || wireId < 0 )
continue;
168 if ( (
iter->first ) >= 226 && (
iter->first ) <= 233 )
170 if ( data_type == 1 )
172 if ( (
data[byteId + i * periods] >> bitId ) & 1 )
174 if ( layerId >= 36 && layerId <= 39 )
176 if ( flag_firstone && ( i - seriesOne != 1 ) && ( i != 0 ) )
178 m_mdchit_pre[layerId - 16][wireId] = i + 1;
179 flag_firstone =
false;
181 if ( ( ( i - seriesOne ) != 1 ) &&
182 ( m_mdchit_aft[layerId - 16][wireId] != 0 ) )
183 flag_lastone =
false;
184 if ( ( flag_firstone ==
false ) && ( ( i - seriesOne ) == 1 ) && flag_lastone )
185 m_mdchit_aft[layerId - 16][wireId] = i + 1;
186 if ( ( ( i - seriesOne ) == 1 ) && firstSOne )
187 m_mdchit_sone[layerId - 16][wireId] += 1;
188 if ( m_mdchit_sone[layerId - 16][wireId] != 0 && ( i - seriesOne ) != 1 )
191 m_mdchit_one[layerId - 16][wireId] += 1;
192 m_mdchit_win[layerId - 16][wireId] += 1 << i;
196 if ( flag_firstone && ( i - seriesOne != 1 ) && ( i != 0 ) )
198 m_mdchit_pre[layerId][wireId] = i + 1;
199 flag_firstone =
false;
201 if ( ( ( i - seriesOne ) != 1 ) && ( m_mdchit_aft[layerId][wireId] != 0 ) )
202 flag_lastone =
false;
203 if ( ( flag_firstone ==
false ) && ( ( i - seriesOne ) == 1 ) && flag_lastone )
204 m_mdchit_aft[layerId][wireId] = i + 1;
205 if ( ( ( i - seriesOne ) == 1 ) && firstSOne )
206 m_mdchit_sone[layerId][wireId] += 1;
207 if ( m_mdchit_sone[layerId][wireId] != 0 && ( i - seriesOne ) != 1 )
210 m_mdchit_one[layerId][wireId] += 1;
211 m_mdchit_win[layerId][wireId] += 1 << i;
215 if ( data_type == 0 )
217 if ( (
data[byteId + i * periods] >> bitId ) & 1 )
221 if ( flag_firstone && ( i - seriesOne != 1 ) && ( i != 0 ) )
223 m_mdctsf_pre[2][wireId] = i + 1;
224 flag_firstone =
false;
226 if ( ( ( i - seriesOne ) != 1 ) && ( m_mdctsf_aft[2][wireId] != 0 ) )
227 flag_lastone =
false;
228 if ( ( flag_firstone ==
false ) && ( ( i - seriesOne ) == 1 ) && flag_lastone )
229 m_mdctsf_aft[2][wireId] = i + 1;
231 if ( ( i - seriesOne ) == 1 && firstSOne ) m_mdctsf_sone[2][wireId] += 1;
232 if ( m_mdctsf_sone[2][wireId] != 0 && ( i - seriesOne ) != 1 )
235 m_mdctsf_one[2][wireId] += 1;
236 m_mdctsf_win[2][wireId] += 1 << i;
240 if ( flag_firstone && ( i - seriesOne != 1 ) && ( i != 0 ) )
242 m_mdctsf_pre[3][wireId] = i + 1;
243 flag_firstone =
false;
245 if ( ( ( i - seriesOne ) != 1 ) && ( m_mdctsf_aft[3][wireId] != 0 ) )
246 flag_lastone =
false;
247 if ( ( flag_firstone ==
false ) && ( ( i - seriesOne ) == 1 ) && flag_lastone )
248 m_mdctsf_aft[3][wireId] = i + 1;
250 if ( ( i - seriesOne ) == 1 && firstSOne ) m_mdctsf_sone[3][wireId] += 1;
251 if ( m_mdctsf_sone[3][wireId] != 0 && ( i - seriesOne ) != 1 )
254 m_mdctsf_one[3][wireId] += 1;
255 m_mdctsf_win[3][wireId] += 1 << i;
259 if ( flag_firstone && ( i - seriesOne != 1 ) && ( i != 0 ) )
261 m_mdctsf_pre[4][wireId] = i + 1;
262 flag_firstone =
false;
264 if ( ( ( i - seriesOne ) != 1 ) && ( m_mdctsf_aft[4][wireId] != 0 ) )
265 flag_lastone =
false;
266 if ( ( flag_firstone ==
false ) && ( ( i - seriesOne ) == 1 ) && flag_lastone )
267 m_mdctsf_aft[4][wireId] = i + 1;
269 if ( ( i - seriesOne ) == 1 && firstSOne ) m_mdctsf_sone[4][wireId] += 1;
270 if ( m_mdctsf_sone[4][wireId] != 0 && ( i - seriesOne ) != 1 )
273 m_mdctsf_one[4][wireId] += 1;
274 m_mdctsf_win[4][wireId] += 1 << i;
278 if ( flag_firstone && ( i - seriesOne != 1 ) && ( i != 0 ) )
280 m_mdctsf_pre[5][wireId] = i + 1;
281 flag_firstone =
false;
283 if ( ( ( i - seriesOne ) != 1 ) && ( m_mdctsf_aft[5][wireId] != 0 ) )
284 flag_lastone =
false;
285 if ( ( flag_firstone ==
false ) && ( ( i - seriesOne ) == 1 ) && flag_lastone )
286 m_mdctsf_aft[5][wireId] = i + 1;
288 if ( ( i - seriesOne ) == 1 && firstSOne ) m_mdctsf_sone[5][wireId] += 1;
289 if ( m_mdctsf_sone[5][wireId] != 0 && ( i - seriesOne ) != 1 )
292 m_mdctsf_one[5][wireId] += 1;
293 m_mdctsf_win[5][wireId] += 1 << i;
297 if ( data_type == 2 )
299 if ( (
data[byteId + i * periods] >> bitId ) & 1 )
301 if ( flag_firstone && ( i - seriesOne != 1 ) && ( i != 0 ) )
303 m_mdcltrk_pre[wireId] = i + 1;
304 flag_firstone =
false;
306 if ( ( ( i - seriesOne ) != 1 ) && ( m_mdcltrk_aft[wireId] != 0 ) )
307 flag_lastone =
false;
308 if ( ( flag_firstone ==
false ) && ( ( i - seriesOne ) == 1 ) && flag_lastone )
309 m_mdcltrk_aft[wireId] = i + 1;
311 if ( ( i - seriesOne ) == 1 && firstSOne ) m_mdcltrk_sone[wireId] += 1;
312 if ( m_mdcltrk_sone[wireId] != 0 && ( i - seriesOne ) != 1 ) firstSOne =
false;
314 m_mdcltrk_one[wireId] += 1;
315 m_mdcltrk_win[wireId] += 1 << i;
318 if ( data_type == 3 )
320 if ( (
data[byteId + i * periods] >> bitId ) & 1 )
322 if ( flag_firstone && ( i - seriesOne != 1 ) && ( i != 0 ) )
324 m_mdcstrk_pre[wireId] = i + 1;
325 flag_firstone =
false;
327 if ( ( ( i - seriesOne ) != 1 ) && ( m_mdcstrk_aft[wireId] != 0 ) )
328 flag_lastone =
false;
329 if ( ( flag_firstone ==
false ) && ( ( i - seriesOne ) == 1 ) && flag_lastone )
330 m_mdcstrk_aft[wireId] = i + 1;
332 if ( ( i - seriesOne ) == 1 && firstSOne ) m_mdcstrk_sone[wireId] += 1;
333 if ( m_mdcstrk_sone[wireId] != 0 && ( i - seriesOne ) != 1 ) firstSOne =
false;
335 m_mdcstrk_one[wireId] += 1;
336 m_mdcstrk_win[wireId] += 1 << i;
341 if ( (
iter->first ) == 234 )
343 if ( data_type == 0 )
345 if ( (
data[byteId + i * periods] >> bitId ) & 1 )
349 if ( ( i - seriesOne ) == 1 && firstSOne ) m_mdctsf_sone[0][wireId] += 1;
350 if ( m_mdctsf_sone[0][wireId] != 0 && ( i - seriesOne ) != 1 )
353 m_mdctsf_one[0][wireId] += 1;
357 if ( ( i - seriesOne ) == 1 && firstSOne ) m_mdctsf_sone[1][wireId] += 1;
358 if ( m_mdctsf_sone[1][wireId] != 0 && ( i - seriesOne ) != 1 )
361 m_mdctsf_one[1][wireId] += 1;
365 if ( data_type == 1 )
367 if ( (
data[byteId + i * periods] >> bitId ) & 1 )
369 if ( ( i - seriesOne ) == 1 && firstSOne ) m_mdchit_sone[layerId][wireId] += 1;
370 if ( m_mdchit_sone[layerId][wireId] != 0 && ( i - seriesOne ) != 1 )
373 m_mdchit_one[layerId][wireId] += 1;
376 if ( data_type == 4 )
378 if ( (
data[byteId + i * periods] >> bitId ) & 1 ) { m_mdcTrigCondi[wireId] = 1; }
382 if ( (
iter->first ) == 235 || (
iter->first ) == 236 )
384 if ( data_type == 2 )
386 if ( (
data[byteId + i * periods] >> bitId ) & 1 )
388 if ( ( i - seriesOne ) == 1 && firstSOne ) m_mdcltrkc_sone[wireId] += 1;
389 if ( m_mdcltrkc_sone[wireId] != 0 && ( i - seriesOne ) != 1 ) firstSOne =
false;
391 m_mdcltrkc_one[wireId] += 1;
392 if ( wireId >= 128 ) m_mdcTrigCondi[wireId - 126] = 1;
395 if ( data_type == 3 )
397 if ( (
data[byteId + i * periods] >> bitId ) & 1 )
399 if ( ( i - seriesOne ) == 1 && firstSOne ) m_mdcstrkc_sone[wireId] += 1;
400 if ( m_mdcstrkc_sone[wireId] != 0 && ( i - seriesOne ) != 1 ) firstSOne =
false;
402 m_mdcstrkc_one[wireId] += 1;
403 if ( wireId >= 128 ) m_mdcTrigCondi[wireId - 122] = 1;