00001 #include "TExploderProc.h"
00002
00003
00004 #include "TGo4Version.h"
00005 #if __GO4BUILDVERSION__ > 40502
00006 #include "go4iostream.h"
00007 #else
00008 #include "Riostream.h"
00009 #endif
00010
00011 #include "TH1.h"
00012 #include "TH2.h"
00013 #include "TCutG.h"
00014 #include "snprintf.h"
00015
00016 #include "TGo4MbsEvent.h"
00017 #include "TGo4WinCond.h"
00018 #include "TGo4PolyCond.h"
00019 #include "TGo4CondArray.h"
00020 #include "TGo4Picture.h"
00021 #include "TGo4Fitter.h"
00022
00023 #include "f_ut_utime.h"
00024
00025
00026
00027
00028 #define EXPLODER_PROCID 25
00029
00030
00031 #define CHARGE 1
00032
00033 #define FI_CHARGE 0
00034 #define LA_CHARGE 4000
00035 #define N_BIN_CHARGE 4000
00036
00037 #define FI_TI_DIF -2000
00038 #define LA_TI_DIF 2000
00039 #define N_BIN_TI_DIF 4000
00040
00041 #define MAX_TOT_NXY 100 // maximum nxy chips in complet system
00042
00043 #define CLEAR_PAT 999999
00044 #define MIN_PAT 0
00045
00046 #define MAX_PAT 0xffff
00047 #define MAX_PA 0xffffff
00048 #define MAX_HIT 0x5a
00049
00050 static UInt_t l_gosip_head;
00051 static UInt_t l_nxy_size;
00052 static UInt_t l_nxy_head;
00053 static UInt_t l_nxy_trail;
00054 static UInt_t l_nxy_err_pat;
00055 static UInt_t l_nxy_n_cha;
00056 static UInt_t l_nxy_n_chakw[MAX_EXP];
00057 static UInt_t l_nxy_n_chasqr[MAX_EXP];
00058 static UInt_t l_nxy_n_charange[MAX_EXP];
00059
00060 static UInt_t l_dat_fir;
00061 static UInt_t l_dat_sec;
00062
00063 static UInt_t l_evt_ct=0;
00064 static UInt_t l_err_ct=0;
00065
00066 static Int_t l_sfp0_in_use[MAX_EXP] = SFP0_EXP_IN_USE;
00067 static Int_t l_sfp1_in_use[MAX_EXP] = SFP1_EXP_IN_USE;
00068 static Int_t l_sfp2_in_use[MAX_EXP] = SFP2_EXP_IN_USE;
00069 static Int_t l_sfp3_in_use[MAX_EXP] = SFP3_EXP_IN_USE;
00070 static Int_t l_in_use[MAX_SFP][MAX_EXP];
00071
00072 static UInt_t l_cha_ix;
00073 static UInt_t l_cha_ixkw[MAX_EXP][MAX_HIT];
00074 static UInt_t l_nhit_ch[MAX_SFP][MAX_EXP][MAX_NXY][MAX_CHA];
00075 static Int_t l_nhit_ch_adc[MAX_SFP][MAX_EXP][MAX_NXY][MAX_CHA][MAX_HIT];
00076 static Long64_t ll_trg_epo [MAX_SFP][MAX_EXP][MAX_NXY];
00077 static Long64_t ll_trg_epo_short[MAX_EXP] ;
00078 static Long64_t ll_trg_epo_shorto[MAX_EXP] ;
00079 static Long64_t ll_trg_epo_plus [MAX_SFP][MAX_EXP][MAX_NXY];
00080 static UInt_t ll_trg_epo_uint [MAX_SFP][MAX_EXP][MAX_NXY];
00081 static Int_t ll_trg_epo_int [MAX_SFP][MAX_EXP][MAX_NXY];
00082 static Long64_t l_trg_epo_l32[MAX_SFP][MAX_EXP][MAX_NXY];
00083 static Long64_t l_trg_epo_h16[MAX_SFP][MAX_EXP][MAX_NXY];
00084 static Int_t l_time [MAX_SFP][MAX_EXP][MAX_NXY][MAX_CHA];
00085 static Int_t l_of [MAX_SFP][MAX_EXP][MAX_NXY][MAX_CHA];
00086 static Int_t l_pu [MAX_SFP][MAX_EXP][MAX_NXY][MAX_CHA];
00087 static Int_t l_adc [MAX_SFP][MAX_EXP][MAX_NXY][MAX_CHA];
00088 static Int_t l_epo [MAX_SFP][MAX_EXP][MAX_NXY][MAX_CHA];
00089 static Long64_t l_toti [MAX_SFP][MAX_EXP][MAX_NXY][MAX_CHA];
00090
00091 static UInt_t l_nxy_ct=0;
00092 static UInt_t l_sfp[MAX_TOT_NXY];
00093 static UInt_t l_exp[MAX_TOT_NXY];
00094 static UInt_t l_nxy[MAX_TOT_NXY];
00095
00096 static Long64_t l_time_first_ch [MAX_SFP][MAX_EXP][MAX_NXY][MAX_CHA];
00097 static Long64_t l_time_first_xy [MAX_SFP][MAX_EXP][MAX_NXY];
00098 static Long64_t l_time_first_ex [MAX_SFP][MAX_EXP];
00099 static Long64_t l_time_first_sf [MAX_SFP];
00100 static Long64_t l_time_first_al ;
00101 static Long64_t ll_time ;
00102 static Long64_t l_epo_min [MAX_SFP][MAX_EXP][MAX_NXY];
00103 static Long64_t l_epo_max [MAX_SFP][MAX_EXP][MAX_NXY];
00104 static Long64_t l_test;
00105 static Int_t l_mult [MAX_SFP][MAX_EXP][MAX_NXY];
00106 static Int_t l_mult_wtimewind [MAX_SFP][MAX_EXP][MAX_NXY];
00107 static UInt_t l_trig_count;
00108 static UInt_t lowtrig;
00109 static UInt_t hightrig;
00110
00111
00112
00113
00114
00115
00116
00117
00118 TExploderProc::TExploderProc(const char* name) : TCBMBeamtimeProc(name),fOutputEvent(0)
00119 {
00120 cout << "**** TExploderProc: Create instance" << name << endl;
00121
00122 fPar = (TExploderParam*) MakeParameter("ExploderPar", "TExploderParam");
00123
00124
00125
00126 Text_t chis[128];
00127 Text_t chead[128];
00128 Int_t l_i, l_j, l_k, l_l;
00129
00130 for (l_i=0; l_i<MAX_EXP; l_i++)
00131 {
00132 l_in_use[0][l_i] = l_sfp0_in_use[l_i];
00133 l_in_use[1][l_i] = l_sfp1_in_use[l_i];
00134 l_in_use[2][l_i] = l_sfp2_in_use[l_i];
00135 l_in_use[3][l_i] = l_sfp3_in_use[l_i];
00136 }
00137
00138
00139
00140 for (l_i=0; l_i<MAX_SFP; l_i++)
00141 {
00142 if (l_in_use[l_i][0] > 0)
00143 {
00144 for (l_j=0; l_j<MAX_EXP; l_j++)
00145 {
00146
00147 if (l_in_use[l_i][l_j] == 0) {break;}
00148 if (l_in_use[l_i][l_j] > MAX_NXY)
00149 {
00150 printf ("ERROR>> for SFP: %d, EXP: %d too many Nxyter specified \n", l_i, l_j);
00151 printf (" allowed Nxyter: %d, specified: %d \n", MAX_NXY, l_in_use[l_i][l_j]);
00152 }
00153
00154 for (l_k=0; l_k<l_in_use[l_i][l_j]; l_k++)
00155 {
00156
00157 if (l_k==0)
00158 {
00159
00160
00161 l_sfp[l_nxy_ct] = l_i;
00162 l_exp[l_nxy_ct] = l_j;
00163 l_nxy[l_nxy_ct] = l_k;
00164 l_nxy_ct++;
00165
00166 sprintf(chis,"EXPLODERS/Hit Pattern SFP: %1d EXP: %1d NXY: %1d", l_i, l_j, l_k);
00167 sprintf(chead,"Nxyter HIT PATTERN");
00168 h_hitpat[l_i][l_j][l_k] = MakeTH1('I', chis,chead,MAX_CHA+4,-2,MAX_CHA+2);
00169
00170
00171
00172
00173
00174
00175
00176 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 7 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00177 sprintf(chead,"Diff Time cha 0 - cha 7");
00178 h_diff_tim_ch0_ch7[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00179
00180 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 15 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00181 sprintf(chead,"Diff Time cha 0 - cha 15");
00182 h_diff_tim_ch0_ch15[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00183
00184 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 23 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00185 sprintf(chead,"Diff Time cha 0 - cha 23");
00186 h_diff_tim_ch0_ch23[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00187
00188 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 31 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00189 sprintf(chead,"Diff Time cha 0 - cha 31");
00190 h_diff_tim_ch0_ch31[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00191
00192 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 39 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00193 sprintf(chead,"Diff Time cha 0 - cha 39");
00194 h_diff_tim_ch0_ch39[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00195
00196 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 47 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00197 sprintf(chead,"Diff Time cha 0 - cha 47");
00198 h_diff_tim_ch0_ch47[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00199
00200 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 55 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00201 sprintf(chead,"Diff Time cha 0 - cha 55");
00202 h_diff_tim_ch0_ch55[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00203
00204 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 63 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00205 sprintf(chead,"Diff Time cha 0 - cha 63");
00206 h_diff_tim_ch0_ch63[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00207
00208 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 71 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00209 sprintf(chead,"Diff Time cha 0 - cha 71");
00210 h_diff_tim_ch0_ch71[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00211
00212 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 79 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00213 sprintf(chead,"Diff Time cha 0 - cha 79");
00214 h_diff_tim_ch0_ch79[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00215
00216 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 87 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00217 sprintf(chead,"Diff Time cha 0 - cha 87");
00218 h_diff_tim_ch0_ch87[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00219
00220 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 95 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00221 sprintf(chead,"Diff Time cha 0 - cha 95");
00222 h_diff_tim_ch0_ch95[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00223
00224 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 103 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00225 sprintf(chead,"Diff Time cha 0 - cha 103");
00226 h_diff_tim_ch0_ch103[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00227
00228 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 111 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00229 sprintf(chead,"Diff Time cha 0 - cha 111");
00230 h_diff_tim_ch0_ch111[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00231
00232 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 119 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00233 sprintf(chead,"Diff Time cha 0 - cha 119");
00234 h_diff_tim_ch0_ch119[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00235
00236 sprintf(chis,"EXPLODERS/Time Diff_Channel/Diff time cha 0 - cha 127 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00237 sprintf(chead,"Diff Time cha 0 - cha 127");
00238 h_diff_tim_ch0_ch127[l_i][l_j][l_k] = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00239
00240
00241 sprintf(chis,"EXPLODERS/NXY fine time S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, 0);
00242 sprintf(chead,"Time");
00243 h_time[l_i][l_j][l_k][0] = MakeTH1('I', chis,chead,0x4000,0,0x4000);
00244
00245 sprintf(chis,"EXPLODERS/NXY fine time S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, 7);
00246 sprintf(chead,"Time");
00247 h_time[l_i][l_j][l_k][7] = MakeTH1('I', chis,chead,0x4000,0,0x4000);
00248
00249 sprintf(chis,"EXPLODERS/NXY fine time S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, 37);
00250 sprintf(chead,"Time");
00251 h_time[l_i][l_j][l_k][37] = MakeTH1('I', chis,chead,0x4000,0,0x4000);
00252
00253 sprintf(chis,"EXPLODERS/NXY fine time S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, 127);
00254 sprintf(chead,"Time");
00255 h_time[l_i][l_j][l_k][127] = MakeTH1('I', chis,chead,0x4000,0,0x4000);
00256
00257
00258 sprintf(chis,"EXPLODERS/NXY fine time bit_1_0 S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, 0);
00259 sprintf(chead,"Time bit_1_0");
00260 h_time_2[l_i][l_j][l_k][0] = MakeTH1('I', chis,chead,10,-2,8);
00261
00262 sprintf(chis,"EXPLODERS/NXY fine time bit_1_0 S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, 7);
00263 sprintf(chead,"Time bit_1_0");
00264 h_time_2[l_i][l_j][l_k][7] = MakeTH1('I', chis,chead,10,-2,8);
00265
00266 sprintf(chis,"EXPLODERS/NXY fine time S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, 37);
00267 sprintf(chead,"Time");
00268 h_time_2[l_i][l_j][l_k][37] = MakeTH1('I', chis,chead,0x4000,0,0x4000);
00269
00270 sprintf(chis,"EXPLODERS/NXY fine time bit_1_0 S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, 127);
00271 sprintf(chead,"Time bit_1_0");
00272 h_time_2[l_i][l_j][l_k][127] = MakeTH1('I', chis,chead,10,-2,8);
00273
00274
00275 sprintf(chis,"EXPLODERS/NXY fine time bit_13_2 S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, 0);
00276 sprintf(chead,"Time bit_13_2");
00277 h_time_12[l_i][l_j][l_k][0] = MakeTH1('I', chis,chead,0x1000,0,0x1000);
00278
00279 sprintf(chis,"EXPLODERS/NXY fine time bit_13_2 S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, 7);
00280 sprintf(chead,"Time bit_13_2");
00281 h_time_12[l_i][l_j][l_k][7] = MakeTH1('I', chis,chead,0x1000,0,0x1000);
00282
00283 sprintf(chis,"EXPLODERS/NXY fine time S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, 37);
00284 sprintf(chead,"Time");
00285 h_time_12[l_i][l_j][l_k][37] = MakeTH1('I', chis,chead,0x4000,0,0x4000);
00286
00287 sprintf(chis,"EXPLODERS/NXY fine time bit_13_2 S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, 127);
00288 sprintf(chead,"Time bit_13_2");
00289 h_time_12[l_i][l_j][l_k][127] = MakeTH1('I', chis,chead,0x1000,0,0x1000);
00290
00291 sprintf(chis,"EXPLODERS/Trigger epoche low 16 bits S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00292 sprintf(chead,"Trigger Epoche, low 16 bits");
00293 h_trg_time_l16[l_i][l_j][l_k] = MakeTH1('I', chis,chead,0x10000,0,0x10000);
00294
00295 if ((l_i==1) && (l_j==0) && (l_k==0))
00296
00297 {
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333 }
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348 for (l_l=0; l_l<MAX_CHA; l_l++)
00349 {
00350 #ifdef CHARGE
00351 sprintf(chis,"EXPLODERS/ADCs/Charge S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00352 sprintf(chead,"Charge");
00353 h_charge[l_i][l_j][l_k][l_l] =
00354 MakeTH1('I', chis,chead,N_BIN_CHARGE,FI_CHARGE,LA_CHARGE);
00355
00356 #endif // CHARGE
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451 sprintf(chis,"EXPLODERS/blabla/ampl vs mult S: %1d E: %1d N: %1d, C: %1d", l_i, l_j, l_k, l_l);
00452 sprintf(chead,"ampl vs mult");
00453 h_ampl_vs_mult[l_i][l_j][l_k][l_l] =
00454 MakeTH2('I', chis,chead,0x5a,0,0x5a,N_BIN_CHARGE,FI_CHARGE,LA_CHARGE);
00455
00456 }
00457
00458 sprintf(chis,"EXPLODERS/blabla/hitpat vs mult S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00459 sprintf(chead,"hitpat vs mult");
00460 h_hitpat_vs_mult[l_i][l_j][l_k] =
00461 MakeTH2('I', chis,chead,0x5a,0,0x5a,MAX_CHA+4,-2,MAX_CHA+2);
00462
00463
00464
00465
00466
00467
00468
00469
00470 sprintf(chis,"EXPLODERS/blabla/ampl vs ch S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00471 sprintf(chead,"ampl vs ch");
00472 h_ampl_vs_ch[l_i][l_j][l_k] =
00473 MakeTH2('I', chis,chead,MAX_CHA+4,-2,MAX_CHA+2,N_BIN_CHARGE,FI_CHARGE,LA_CHARGE);
00474
00475 sprintf(chis,"EXPLODERS/blabla/epo vs trig S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00476 sprintf(chead,"epo vs trig");
00477 h_epo_vs_trig_vs_ch[l_i][l_j][l_k] =
00478 MakeTH2('I', chis,chead,MAX_CHA+4,-2,MAX_CHA+2,10000,-5000,5000);
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498 sprintf(chis,"EXPLODERS/blabla/Mult S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00499 sprintf(chead,"Mult");
00500 h_mult[l_i][l_j][l_k] =
00501 MakeTH1('I', chis,chead,0x200,0,0x200);
00502
00503
00504
00505
00506
00507
00508 }
00509
00510 }
00511
00512 sprintf(chis,"EXPLODERS/blabla/hitpat 2dim E %d E %d",l_j,l_j+1 );
00513 sprintf(chead,"hitpat 2dim");
00514 h_hitpat_2dim[l_j] =
00515 MakeTH2('I', chis,chead,MAX_CHA+4,-2,MAX_CHA+2,MAX_CHA+4,-2,MAX_CHA+2);
00516
00517
00518
00519
00520
00521
00522 sprintf(chis,"EXPLODERS/blabla/mult 2dim E %d E %d",l_j,l_j+1 );
00523 sprintf(chead,"mult 2dim");
00524 h_mult_2dim[l_j] =
00525 MakeTH2('I', chis,chead,0x5a,0,0x5a,0x5a,0,0x5a);
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540 }
00541 }
00542 }
00543
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560
00561
00562
00563
00564
00565
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575 printf ("l_nxy_ct: %d \n", l_nxy_ct);
00576
00577 for (l_i=1; l_i<l_nxy_ct; l_i++)
00578 {
00579 sprintf(chis,"EXPLODERS/Diff Epoche TRG (SFP: %1d EXP: %1d NXY: %1d) - (SFP: %1d EXP: %1d NXY: %1d)",
00580 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00581 sprintf(chead,"Nxyter Trigger Epoche time difference");
00582 h_diff_epo_trg[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00583 = MakeTH1('I', chis,chead,100,-50,50);
00584
00585
00586
00587 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 0) - (S: %1d E: %1d N: %1d C: 0)",
00588 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00589 sprintf(chead,"Time difference");
00590 h_ndiff_tim_ch0_ch0[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00591 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00592
00593 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 7) - (S: %1d E: %1d N: %1d C: 7)",
00594 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00595 sprintf(chead,"Time difference");
00596 h_ndiff_tim_ch7_ch7[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00597 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00598
00599 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 15) - (S: %1d E: %1d N: %1d C: 15)",
00600 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00601 sprintf(chead,"Time difference");
00602 h_ndiff_tim_ch15_ch15[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00603 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00604
00605 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 23) - (S: %1d E: %1d N: %1d C: 23)",
00606 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00607 sprintf(chead,"Time difference");
00608 h_ndiff_tim_ch23_ch23[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00609 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00610
00611 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 31) - (S: %1d E: %1d N: %1d C: 31)",
00612 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00613 sprintf(chead,"Time difference");
00614 h_ndiff_tim_ch31_ch31[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00615 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00616
00617 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 39) - (S: %1d E: %1d N: %1d C: 39)",
00618 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00619 sprintf(chead,"Time difference");
00620 h_ndiff_tim_ch39_ch39[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00621 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00622
00623 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 47) - (S: %1d E: %1d N: %1d C: 47)",
00624 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00625 sprintf(chead,"Time difference");
00626 h_ndiff_tim_ch47_ch47[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00627 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00628
00629 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 55) - (S: %1d E: %1d N: %1d C: 55)",
00630 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00631 sprintf(chead,"Time difference");
00632 h_ndiff_tim_ch55_ch55[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00633 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00634
00635 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 63) - (S: %1d E: %1d N: %1d C: 63)",
00636 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00637 sprintf(chead,"Time difference");
00638 h_ndiff_tim_ch63_ch63[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00639 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00640
00641 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 71) - (S: %1d E: %1d N: %1d C: 71)",
00642 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00643 sprintf(chead,"Time difference");
00644 h_ndiff_tim_ch71_ch71[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00645 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00646
00647 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 79) - (S: %1d E: %1d N: %1d C: 79)",
00648 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00649 sprintf(chead,"Time difference");
00650 h_ndiff_tim_ch79_ch79[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00651 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00652
00653 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 87) - (S: %1d E: %1d N: %1d C: 87)",
00654 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00655 sprintf(chead,"Time difference");
00656 h_ndiff_tim_ch87_ch87[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00657 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00658
00659 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 95) - (S: %1d E: %1d N: %1d C: 95)",
00660 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00661 sprintf(chead,"Time difference");
00662 h_ndiff_tim_ch95_ch95[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00663 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00664
00665 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 103) - (S: %1d E: %1d N: %1d C: 103)",
00666 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00667 sprintf(chead,"Time difference");
00668 h_ndiff_tim_ch103_ch103[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00669 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00670
00671 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 111) - (S: %1d E: %1d N: %1d C: 111)",
00672 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00673 sprintf(chead,"Time difference");
00674 h_ndiff_tim_ch111_ch111[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00675 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00676
00677 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 119) - (S: %1d E: %1d N: %1d C: 119)",
00678 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00679 sprintf(chead,"Time difference");
00680 h_ndiff_tim_ch119_ch119[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00681 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00682
00683 sprintf(chis,"EXPLODERS/Diff_NXY/Diff time (S: %1d E: %1d N: %1d C: 127) - (S: %1d E: %1d N: %1d C: 127)",
00684 l_sfp[0], l_exp[0], l_nxy[0], l_sfp[l_i], l_exp[l_i], l_nxy[l_i]);
00685 sprintf(chead,"Time difference");
00686 h_ndiff_tim_ch127_ch127[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]
00687 = MakeTH1('I', chis,chead,N_BIN_TI_DIF,FI_TI_DIF,LA_TI_DIF);
00688 }
00689
00690
00691 printf ("Histograms created \n"); fflush (stdout);
00692 printf ("depp \n");
00693
00694
00695
00696
00697
00698 printf("TExploderProc Histograms created \n");
00699 fflush ( stdout);
00700 }
00701
00702
00703 TExploderProc::~TExploderProc()
00704 {
00705 }
00706
00707 void TExploderProc::InitEvent(TGo4EventElement* outevnt)
00708 {
00709
00710
00711
00712
00713 if(fOutputEvent==0)
00714 {
00715 TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(outevnt);
00716 if(btevent)
00717 {
00718 fOutputEvent=dynamic_cast<TExploderEvent*>(btevent->GetSubEvent("EXPLODER"));
00719
00720 }
00721 else
00722 {
00723
00724 fOutputEvent= dynamic_cast<TExploderEvent*>(outevnt);
00725 }
00726 if(fOutputEvent==0) {
00727 GO4_STOP_ANALYSIS_MESSAGE("**** TExploderProc: Fatal error: output event is not a TExploderEvent!!! STOP GO4");
00728 }
00729 }
00730 }
00731
00732 void TExploderProc::ProcessSubevent(TGo4MbsSubEvent* psubevt)
00733 {
00734
00735 if((!fPar->pureExploderInput) && (psubevt->GetProcid() != EXPLODER_PROCID)) return;
00736 l_evt_ct++;
00737 l_test=MAX_PAT;
00738 Int_t l_i, l_j, l_k, l_l, l_m;
00739 UInt_t l_check;
00740 UInt_t *pl_se_dat;
00741 UInt_t *pl_tmp;
00742 UInt_t l_padd;
00743
00744
00745 for (l_i=0; l_i<MAX_SFP; l_i++)
00746 {
00747 for (l_j=0; l_j<MAX_EXP; l_j++)
00748 {
00749 for (l_k=0; l_k<MAX_NXY; l_k++)
00750 {
00751 ll_trg_epo [l_i][l_j][l_k] = CLEAR_PAT;
00752 ll_trg_epo_plus [l_i][l_j][l_k] = CLEAR_PAT;
00753 ll_trg_epo_uint [l_i][l_j][l_k] = CLEAR_PAT;
00754 ll_trg_epo_int [l_i][l_j][l_k] = CLEAR_PAT;
00755 l_trg_epo_h16[l_i][l_j][l_k] = CLEAR_PAT;
00756 l_trg_epo_l32[l_i][l_j][l_k] = CLEAR_PAT;
00757 for (l_l=0; l_l<MAX_CHA; l_l++)
00758 {
00759 l_time[l_i][l_j][l_k][l_l] = CLEAR_PAT;
00760 l_of [l_i][l_j][l_k][l_l] = CLEAR_PAT;
00761 l_pu [l_i][l_j][l_k][l_l] = CLEAR_PAT;
00762 l_adc [l_i][l_j][l_k][l_l] = CLEAR_PAT;
00763 l_epo [l_i][l_j][l_k][l_l] = CLEAR_PAT;
00764 l_toti[l_i][l_j][l_k][l_l] = CLEAR_PAT;
00765
00766 l_time_first_ch[l_i][l_j][l_k][l_l] = MAX_PAT;
00767 l_nhit_ch[l_i][l_j][l_k][l_l] = 0;
00768
00769 }
00770 l_time_first_xy[l_i][l_j][l_k] = MAX_PAT;
00771 l_epo_min[l_i][l_j][l_k] = MAX_PA;
00772 l_epo_max[l_i][l_j][l_k] = MIN_PAT;
00773 l_mult[l_i][l_j][l_k] = MIN_PAT;
00774 l_mult_wtimewind[l_i][l_j][l_k] = MIN_PAT;
00775 }
00776 l_time_first_ex[l_i][l_j] = MAX_PAT;
00777 l_nxy_n_chakw[l_j] = 0;
00778 l_nxy_n_chasqr[l_j] = 0;
00779 l_nxy_n_charange[l_j] = 0;
00780 }
00781 l_time_first_sf[l_i] = MAX_PAT;
00782 }
00783 l_time_first_al = MAX_PAT;
00784 lowtrig=0; hightrig=0;
00785
00787
00788 pl_se_dat = (UInt_t *)psubevt->GetDataField();
00789
00790 pl_tmp = pl_se_dat;
00791
00792 if ( (*pl_tmp) == 0xbad00bad)
00793 {
00794 printf ("found bad event \n");
00795 goto bad_event;
00796 }
00797
00798 for (l_i=0; l_i<MAX_SFP; l_i++)
00799 {
00800 if (l_in_use[l_i][0] > 0)
00801 {
00802
00803 for (l_j=0; l_j<100; l_j++)
00804 {
00805 l_padd = *pl_tmp++;
00806
00807 if ( (l_padd & 0xfff00000) != 0xadd00000 )
00808 {
00809
00810 pl_tmp--;
00811 break;
00812 }
00813 }
00814 for (l_j=0; l_j<MAX_EXP; l_j++)
00815 {
00816
00817 if (l_in_use[l_i][l_j] == 0) {break;}
00818 for (l_k=0; l_k<l_in_use[l_i][l_j]; l_k++)
00819 {
00820
00821 l_gosip_head = *pl_tmp++;
00822
00823 if ( ((l_gosip_head & 0xff) >> 0) != 0x34 )
00824 {
00825 printf ("ERROR>> channel header type is not 0x34 \n");
00826 }
00827
00828
00829
00830
00831
00832
00833
00834
00835
00836
00837
00838
00839
00840
00841
00842
00843 if ( ((l_gosip_head & 0xff0000) >> 16) != l_j )
00844 {
00845 printf ("ERROR>> exploder id is wrong \n");
00846 }
00847 if ( ((l_gosip_head & 0xff000000) >> 24) != l_k )
00848 {
00849 printf ("ERROR>> Nxyter id is wrong \n");
00850 }
00851
00852 l_nxy_size = *pl_tmp++;
00853
00854 l_nxy_n_cha = (l_nxy_size - 20) >> 3;
00855
00856 if (l_k == 0 )
00857 {
00858 l_nxy_n_chakw[l_j] = l_nxy_n_cha ;
00859 }
00860
00861
00862
00863 if ((l_i==1) && (l_j==3) && (l_k==0) && (l_nxy_n_cha>2000) ) {goto bad_event;}
00864
00865
00866
00867
00868
00869 l_nxy_head = *pl_tmp++;
00870 if ( ((l_nxy_head & 0xff000000) >> 24) != 0xaa)
00871 {
00872 printf ("ERROR>> Nxyter header id is not 0xaa \n");
00873 }
00874
00875 l_trig_count = l_nxy_head & 0xffff;
00876
00877
00878 l_dat_fir = *pl_tmp++;
00879 l_dat_sec = *pl_tmp++;
00880
00881
00882
00883 l_trg_epo_h16[l_i][l_j][l_k] = l_dat_fir;
00884 l_trg_epo_l32[l_i][l_j][l_k] = l_dat_sec;
00885
00886 if (l_k == 0)
00887 {
00888 h_trg_time_l16[l_i][l_j][l_k]->Fill (l_trg_epo_l32[l_i][l_j][l_k] & 0xffff);
00889 h_mult[l_i][l_j][l_k]->Fill (l_nxy_n_cha);
00890 }
00891
00892 ll_trg_epo[l_i][l_j][l_k] = (((ULong64_t)l_dat_fir & 0xffff) << 32) + l_dat_sec;
00893
00894
00895
00896 ll_trg_epo_short[l_j] = (ll_trg_epo[l_i][l_j][l_k] >> 25 ) ;
00897 if (l_evt_ct<500 && l_k==0)
00898 {
00899 cout << "ll_trg_epo:" << l_evt_ct << " " << l_trig_count << " " << l_i << " " << " " << l_j << " " << " " << l_k << " " << ll_trg_epo[l_i][l_j][l_k] << " " << ll_trg_epo_short[l_j] << endl;
00900 }
00901
00902
00903 if (l_k==0)
00904 {
00905
00906 if ((ll_trg_epo[l_i][l_j][l_k] >> 20 ) - ll_trg_epo_shorto[l_j] >1)
00907 {
00908
00909 lowtrig=1; hightrig=0;
00910 }
00911 else
00912 {
00913
00914 lowtrig=0; hightrig=1;
00915 }
00916 }
00917
00918
00919
00920 ll_trg_epo_shorto[l_j] = (ll_trg_epo[l_i][l_j][l_k] >> 20 ) ;
00921
00922
00923
00924
00925 for (l_l=0; l_l<l_nxy_n_cha; l_l++)
00926 {
00927
00928 l_dat_fir = *pl_tmp++;
00929 l_dat_sec = *pl_tmp++;
00930
00931 l_cha_ix = (l_dat_sec & 0x7f000000) >> 24;
00932
00933
00934 if (l_k==0 && l_j==0 && l_cha_ix>70 && l_cha_ix<100)
00935 {
00936 l_nxy_n_chasqr[l_j] ++;
00937 }
00938 if (l_k==0 && l_j==1 && l_cha_ix>30 && l_cha_ix<100)
00939 {
00940 l_nxy_n_chasqr[l_j] ++;
00941 }
00942
00943
00944 if (l_l < MAX_HIT)
00945 {
00946 l_cha_ixkw[l_j][l_l] = l_cha_ix ;
00947 }
00948
00949 if ( (l_j == 0 && l_cha_ix > 50 && l_cha_ix < 100) || (l_j == 1 && l_cha_ix > 40 && l_cha_ix < 80) )
00950 {
00951 l_nxy_n_charange[l_j] ++ ;
00952 }
00953
00954 l_time[l_i][l_j][l_k][l_cha_ix] = (l_dat_fir & 0x3fff);
00955 l_of [l_i][l_j][l_k][l_cha_ix] = (l_dat_fir & 0x4000) >> 14;
00956 l_pu [l_i][l_j][l_k][l_cha_ix] = (l_dat_fir & 0x8000) >> 15;
00957 l_adc [l_i][l_j][l_k][l_cha_ix] = (l_dat_fir & 0xfff0000) >> 16;
00958
00959 if ( l_nhit_ch[l_i][l_j][l_k][l_cha_ix] < MAX_HIT)
00960 {
00961 l_nhit_ch[l_i][l_j][l_k][l_cha_ix]++;
00962 l_m = l_nhit_ch[l_i][l_j][l_k][l_cha_ix];
00963 l_nhit_ch_adc[l_i][l_j][l_k][l_cha_ix][l_m]=l_adc [l_i][l_j][l_k][l_cha_ix];
00964 }
00965
00966
00967
00968 l_epo [l_i][l_j][l_k][l_cha_ix] = (l_dat_sec & 0xffffff);
00969
00970 if ( ((l_epo [l_i][l_j][l_k][l_cha_ix] - (l_trg_epo_l32[l_i][l_j][l_k] & 0xffffff)) > -15) && ((l_epo [l_i][l_j][l_k][l_cha_ix] - (l_trg_epo_l32[l_i][l_j][l_k] & 0xffffff)) < -5) )
00971 {
00972 l_mult_wtimewind[l_i][l_j][l_k] ++ ;
00973 }
00974
00975
00976
00977
00978
00979
00980 l_toti[l_i][l_j][l_k][l_cha_ix] = l_time[l_i][l_j][l_k][l_cha_ix];
00981
00982
00983
00984
00985
00986
00987 if ((l_k == 0))
00988 {
00989 h_hitpat[l_i][l_j][l_k]->Fill (l_cha_ix, 1);
00990 h_hitpat_vs_mult[l_i][l_j][l_k]->Fill (l_nxy_n_cha, l_cha_ix);
00991 #ifdef CHARGE
00992 h_charge[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
00993 #endif // CHARGE
00994 }
00995
00996
00997
00998
00999
01000
01001
01002
01003
01004
01005
01006
01007 if ((l_k == 0))
01008 {
01009 #ifdef CHARGE
01010 h_ampl_vs_mult[l_i][l_j][l_k][l_cha_ix]->Fill (l_nxy_n_cha,l_adc[l_i][l_j][l_k][l_cha_ix]);
01011 h_ampl_vs_ch[l_i][l_j][l_k]->Fill (l_cha_ix,l_adc[l_i][l_j][l_k][l_cha_ix]);
01012 #endif // CHARGE }
01013 h_epo_vs_trig_vs_ch[l_i][l_j][l_k]->Fill (l_cha_ix, l_epo [l_i][l_j][l_k][l_cha_ix] - (l_trg_epo_l32[l_i][l_j][l_k] & 0xffffff));
01014
01015
01016
01017
01018
01019
01020
01021
01022
01023
01024 }
01025
01026
01027 ll_time = l_time[l_i][l_j][l_k][l_cha_ix];
01028
01029
01030 if (ll_time < l_time_first_ch[l_i][l_j][l_k][l_cha_ix] )
01031 {
01032 l_time_first_ch[l_i][l_j][l_k][l_cha_ix] = ll_time ;
01033 }
01034
01035 if ( (ll_time < l_time_first_xy[l_i][l_j][l_k]) )
01036
01037 {
01038 l_time_first_xy[l_i][l_j][l_k] = ll_time ;
01039 }
01040
01041 if (ll_time < l_time_first_ex[l_i][l_j] )
01042 {
01043 l_time_first_ex[l_i][l_j] = ll_time ;
01044 }
01045
01046 if (ll_time < l_time_first_sf[l_i] )
01047 {
01048 l_time_first_sf[l_i] = ll_time ;
01049 }
01050
01051 if (ll_time < l_time_first_al )
01052 {
01053 l_time_first_al = ll_time ;
01054 }
01055
01056 if (l_epo[l_i][l_j][l_k][l_cha_ix] < l_epo_min[l_i][l_j][l_k] )
01057 {
01058 l_epo_min[l_i][l_j][l_k] = l_epo[l_i][l_j][l_k][l_cha_ix] ;
01059 }
01060
01061 if (l_epo[l_i][l_j][l_k][l_cha_ix] > l_epo_max[l_i][l_j][l_k] )
01062 {
01063 l_epo_max[l_i][l_j][l_k] = l_epo[l_i][l_j][l_k][l_cha_ix] ;
01064 }
01065
01066 if (l_k == 0)
01067 {
01068
01069 if (l_cha_ix == 0)
01070 {
01071 h_time [l_i][l_j][l_k][l_cha_ix]->Fill (l_toti[l_i][l_j][l_k][l_cha_ix]);
01072 h_time_2 [l_i][l_j][l_k][l_cha_ix]->Fill (l_time[l_i][l_j][l_k][l_cha_ix] & 0x3);
01073 h_time_12[l_i][l_j][l_k][l_cha_ix]->Fill (l_time[l_i][l_j][l_k][l_cha_ix] >> 2);
01074 }
01075 if (l_cha_ix == 7)
01076 {
01077 h_time [l_i][l_j][l_k][l_cha_ix]->Fill (l_toti[l_i][l_j][l_k][l_cha_ix]);
01078 h_time_2 [l_i][l_j][l_k][l_cha_ix]->Fill (l_time[l_i][l_j][l_k][l_cha_ix] & 0x3);
01079 h_time_12[l_i][l_j][l_k][l_cha_ix]->Fill (l_time[l_i][l_j][l_k][l_cha_ix] >> 2);
01080 }
01081 if (l_cha_ix == 37)
01082 {
01083 h_time [l_i][l_j][l_k][l_cha_ix]->Fill (l_toti[l_i][l_j][l_k][l_cha_ix]);
01084 h_time_2 [l_i][l_j][l_k][l_cha_ix]->Fill (l_time[l_i][l_j][l_k][l_cha_ix] & 0x3);
01085 h_time_12[l_i][l_j][l_k][l_cha_ix]->Fill (l_time[l_i][l_j][l_k][l_cha_ix] >> 2);
01086 }
01087 if (l_cha_ix == 127)
01088 {
01089 h_time [l_i][l_j][l_k][l_cha_ix]->Fill (l_toti[l_i][l_j][l_k][l_cha_ix]);
01090 h_time_2 [l_i][l_j][l_k][l_cha_ix]->Fill (l_time[l_i][l_j][l_k][l_cha_ix] & 0x3);
01091 h_time_12[l_i][l_j][l_k][l_cha_ix]->Fill (l_time[l_i][l_j][l_k][l_cha_ix] >> 2);
01092 }
01093 }
01094 }
01095
01096
01097 l_nxy_err_pat = *pl_tmp++;
01098 if ( ((l_nxy_err_pat & 0xff000000) >> 24) != 0xee)
01099 {
01100 printf ("ERROR>> Nxyter error pattern is not 0xee \n");
01101 }
01102
01103
01104
01105
01106 l_nxy_trail = *pl_tmp++;
01107 if ( ((l_nxy_trail & 0xff000000) >> 24) != 0xbb)
01108 {
01109 printf ("ERROR>> Nxyter trailer id is not 0xbb \n");
01110 }
01111
01112 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01113 && (l_toti[l_i][l_j][l_k][7] != CLEAR_PAT))
01114 {
01115 h_diff_tim_ch0_ch7[l_i][l_j][l_k]->Fill
01116 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][7]);
01117 }
01118
01119 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01120 && (l_toti[l_i][l_j][l_k][15] != CLEAR_PAT))
01121 {
01122 h_diff_tim_ch0_ch15[l_i][l_j][l_k]->Fill
01123 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][15]);
01124 }
01125
01126 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01127 && (l_toti[l_i][l_j][l_k][23] != CLEAR_PAT))
01128 {
01129 h_diff_tim_ch0_ch23[l_i][l_j][l_k]->Fill
01130 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][23]);
01131 }
01132
01133 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01134 && (l_toti[l_i][l_j][l_k][31] != CLEAR_PAT))
01135 {
01136 h_diff_tim_ch0_ch31[l_i][l_j][l_k]->Fill
01137 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][31]);
01138 }
01139
01140 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01141 && (l_toti[l_i][l_j][l_k][39] != CLEAR_PAT))
01142 {
01143 h_diff_tim_ch0_ch39[l_i][l_j][l_k]->Fill
01144 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][39]);
01145 }
01146
01147 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01148 && (l_toti[l_i][l_j][l_k][47] != CLEAR_PAT))
01149 {
01150 h_diff_tim_ch0_ch47[l_i][l_j][l_k]->Fill
01151 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][47]);
01152 }
01153
01154 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01155 && (l_toti[l_i][l_j][l_k][55] != CLEAR_PAT))
01156 {
01157 h_diff_tim_ch0_ch55[l_i][l_j][l_k]->Fill
01158 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][55]);
01159 }
01160
01161 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01162 && (l_toti[l_i][l_j][l_k][63] != CLEAR_PAT))
01163 {
01164 h_diff_tim_ch0_ch63[l_i][l_j][l_k]->Fill
01165 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][63]);
01166 }
01167
01168 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01169 && (l_toti[l_i][l_j][l_k][71] != CLEAR_PAT))
01170 {
01171 h_diff_tim_ch0_ch71[l_i][l_j][l_k]->Fill
01172 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][71]);
01173 }
01174
01175 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01176 && (l_toti[l_i][l_j][l_k][79] != CLEAR_PAT))
01177 {
01178 h_diff_tim_ch0_ch79[l_i][l_j][l_k]->Fill
01179 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][79]);
01180 }
01181
01182 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01183 && (l_toti[l_i][l_j][l_k][87] != CLEAR_PAT))
01184 {
01185 h_diff_tim_ch0_ch87[l_i][l_j][l_k]->Fill
01186 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][87]);
01187 }
01188
01189 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01190 && (l_toti[l_i][l_j][l_k][95] != CLEAR_PAT))
01191 {
01192 h_diff_tim_ch0_ch95[l_i][l_j][l_k]->Fill
01193 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][95]);
01194 }
01195
01196 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01197 && (l_toti[l_i][l_j][l_k][103] != CLEAR_PAT))
01198 {
01199 h_diff_tim_ch0_ch103[l_i][l_j][l_k]->Fill
01200 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][103]);
01201 }
01202
01203 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01204 && (l_toti[l_i][l_j][l_k][111] != CLEAR_PAT))
01205 {
01206 h_diff_tim_ch0_ch111[l_i][l_j][l_k]->Fill
01207 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][111]);
01208 }
01209
01210 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01211 && (l_toti[l_i][l_j][l_k][119] != CLEAR_PAT))
01212 {
01213 h_diff_tim_ch0_ch119[l_i][l_j][l_k]->Fill
01214 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][119]);
01215 }
01216
01217 if ( (l_toti[l_i][l_j][l_k][0] != CLEAR_PAT)
01218 && (l_toti[l_i][l_j][l_k][127] != CLEAR_PAT))
01219 {
01220 h_diff_tim_ch0_ch127[l_i][l_j][l_k]->Fill
01221 (l_toti[l_i][l_j][l_k][0] - l_toti[l_i][l_j][l_k][127]);
01222 }
01223 }
01224 }
01225 }
01226 }
01227
01228
01229
01230
01231
01232
01233
01234
01235 pl_tmp = pl_se_dat;
01236
01237 if ( (*pl_tmp) == 0xbad00bad)
01238 {
01239 printf ("found bad event \n");
01240 goto bad_event;
01241 }
01242
01243 for (l_i=0; l_i<MAX_SFP; l_i++)
01244 {
01245 if (l_in_use[l_i][0] > 0)
01246 {
01247
01248 for (l_j=0; l_j<100; l_j++)
01249 {
01250 l_padd = *pl_tmp++;
01251
01252 if ( (l_padd & 0xfff00000) != 0xadd00000 )
01253 {
01254
01255 pl_tmp--;
01256 break;
01257 }
01258 }
01259 for (l_j=0; l_j<MAX_EXP; l_j++)
01260 {
01261
01262 if (l_in_use[l_i][l_j] == 0) {break;}
01263 for (l_k=0; l_k<l_in_use[l_i][l_j]; l_k++)
01264 {
01265
01266 l_gosip_head = *pl_tmp++;
01267
01268 if ( ((l_gosip_head & 0xff) >> 0) != 0x34 )
01269 {
01270 printf ("ERROR>> channel header type is not 0x34 \n");
01271 }
01272
01273
01274
01275
01276
01277
01278
01279
01280
01281
01282
01283
01284
01285
01286
01287
01288 if ( ((l_gosip_head & 0xff0000) >> 16) != l_j )
01289 {
01290 printf ("ERROR>> exploder id is wrong \n");
01291 }
01292 if ( ((l_gosip_head & 0xff000000) >> 24) != l_k )
01293 {
01294 printf ("ERROR>> Nxyter id is wrong \n");
01295 }
01296
01297 l_nxy_size = *pl_tmp++;
01298
01299 l_nxy_n_cha = (l_nxy_size - 20) >> 3;
01300
01301
01302 l_nxy_head = *pl_tmp++;
01303 if ( ((l_nxy_head & 0xff000000) >> 24) != 0xaa)
01304 {
01305 printf ("ERROR>> Nxyter header id is not 0xaa \n");
01306 }
01307
01308
01309 l_dat_fir = *pl_tmp++;
01310 l_dat_sec = *pl_tmp++;
01311
01312 l_trg_epo_h16[l_i][l_j][l_k] = l_dat_fir;
01313 l_trg_epo_l32[l_i][l_j][l_k] = l_dat_sec;
01314
01315
01316
01317
01318
01319 if ((l_i==1) && (l_j == 0) && (l_k==0))
01320 {
01321 h_mult_2dim[l_j]->Fill (l_nxy_n_chakw[l_j+1],l_nxy_n_cha);
01322 }
01323
01324
01325
01326
01327
01328
01329
01330
01331 for (l_l=0; l_l<l_nxy_n_cha; l_l++)
01332 {
01333 l_dat_fir = *pl_tmp++;
01334 l_dat_sec = *pl_tmp++;
01335
01336 l_cha_ix = (l_dat_sec & 0x7f000000) >> 24;
01337
01338
01339
01340
01341 if ( (l_k == 0) && ((l_j == 0) || (l_j == 2)) && (l_nxy_n_chakw[l_j] < MAX_HIT) && (l_nxy_n_chakw[l_j+1] < 2000) && (l_nxy_n_chakw[l_j+1] > 0) )
01342 {
01343
01344 for (l_m=0; l_m<l_nxy_n_chakw[l_j+1]; l_m++)
01345 {
01346 h_hitpat_2dim[l_j]->Fill (l_cha_ixkw[l_j+1][l_m],l_cha_ix);
01347 };
01348 }
01349
01350 if ( (l_k == 0) && ((l_j == 0) || (l_j == 2)) && (l_nxy_n_chakw[l_j] < 3) && (l_nxy_n_chakw[l_j+1] < 3) && (l_nxy_n_chakw[l_j+1] > 0) )
01351 {
01352
01353
01354
01355
01356
01357
01358
01359 }
01360
01361
01362
01363 l_time[l_i][l_j][l_k][l_cha_ix] = (l_dat_fir & 0x3fff);
01364 l_of [l_i][l_j][l_k][l_cha_ix] = (l_dat_fir & 0x4000) >> 14;
01365 l_pu [l_i][l_j][l_k][l_cha_ix] = (l_dat_fir & 0x8000) >> 15;
01366 l_adc [l_i][l_j][l_k][l_cha_ix] = (l_dat_fir & 0xfff0000) >> 16;
01367
01368
01369 l_epo [l_i][l_j][l_k][l_cha_ix] = (l_dat_sec & 0xffffff);
01370
01371
01372
01373
01374
01375
01376 l_toti[l_i][l_j][l_k][l_cha_ix] = l_time[l_i][l_j][l_k][l_cha_ix];
01377
01378
01379
01380
01381
01382
01383
01384
01385
01386
01387
01388
01389
01390
01391
01392
01393
01394
01395
01396
01397
01398
01399
01400
01401
01402
01403
01404
01405
01406
01407
01408
01409
01410
01411
01412
01413
01414
01415
01416
01417
01418
01419
01420
01421
01422
01423
01424
01425
01426
01427
01428
01429
01430
01431
01432
01433
01434 if ( (l_nhit_ch[l_i][l_j][l_k][20] > 0) && (l_j ==1) && l_nxy_n_cha<4000)
01435 {
01436 for (l_m=1; l_m<l_nhit_ch[l_i][l_j][l_k][20]+2; l_m++)
01437 {
01438 if (l_m < l_nhit_ch[l_i][l_j][l_k][20]+1)
01439 {
01440
01441 }
01442 };
01443 }
01444
01445
01446
01447
01448
01449 ll_time = l_time[l_i][l_j][l_k][l_cha_ix];
01450
01451
01452 if (l_evt_ct < 0)
01453 {
01454
01455
01456
01457
01458
01459 cout << "n-xdc " << l_evt_ct << " " << l_i<< " " << l_j << " " << l_k<< " " << l_cha_ix<< " " << (l_trg_epo_l32[l_i][l_j][l_k] & 0xffffff)<< " " << l_time[l_i][l_j][l_k][l_cha_ix] << " " << l_epo[l_i][l_j][l_k][l_cha_ix] << endl;
01460
01461 }
01462
01463
01464 if ((l_i==1) && (l_j==0) && (l_k==0))
01465
01466 {
01467
01468
01469
01470
01471
01472
01473
01474
01475
01476
01477
01478
01479
01480
01481
01482
01483 }
01484
01485
01486
01487
01488 if (l_k == 0)
01489
01490 {
01491
01492
01493 if ( (l_adc[l_i][l_j][l_k][l_cha_ix] < 1300) )
01494 {
01495
01496
01497
01498
01499
01500
01501
01502
01503
01504
01505
01506
01507
01508
01509
01510
01511
01512
01513
01514
01515
01516 }
01517
01518
01519
01520
01521
01522
01523
01524
01525
01526
01527
01528
01529
01530
01531
01532
01533
01534
01535
01536
01537
01538
01539
01540
01541
01542
01543
01544
01545
01546
01547
01548
01549
01550
01551
01552
01553
01554 }
01555
01556
01557
01558
01559
01560
01561
01562
01563
01564
01565
01566
01567
01568
01569
01570
01571
01572
01573
01574
01575
01576
01577
01578
01579
01580
01581
01582
01583
01584
01585
01586
01587 }
01588
01589
01590 l_nxy_err_pat = *pl_tmp++;
01591 if ( ((l_nxy_err_pat & 0xff000000) >> 24) != 0xee)
01592 {
01593 printf ("ERROR>> Nxyter error pattern is not 0xee \n");
01594 }
01595
01596
01597
01598
01599 l_nxy_trail = *pl_tmp++;
01600 if ( ((l_nxy_trail & 0xff000000) >> 24) != 0xbb)
01601 {
01602 printf ("ERROR>> Nxyter trailer id is not 0xbb \n");
01603 }
01604
01605
01606
01607
01608
01609
01610
01611
01612
01613
01614
01615
01616
01617
01618
01619
01620
01621 }
01622 }
01623 }
01624 }
01625
01626
01627
01628
01629
01630
01631
01632
01633
01634
01635
01636
01637 for (l_i=1; l_i<l_nxy_ct; l_i++)
01638 {
01639
01640
01641
01642
01643
01644
01645
01646
01647 if ( (l_trg_epo_l32[l_sfp[0]] [l_exp[0]] [l_nxy[0]] != CLEAR_PAT)
01648 && (l_trg_epo_l32[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]] != CLEAR_PAT) )
01649 {
01650 h_diff_epo_trg[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01651 (l_trg_epo_l32[l_sfp[0]][l_exp[0]][l_nxy[0]] - l_trg_epo_l32[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]);
01652 }
01653
01654
01655
01656
01657
01658
01659
01660
01661 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [0] != CLEAR_PAT)
01662 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][0] != CLEAR_PAT) )
01663 {
01664 h_ndiff_tim_ch0_ch0[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01665 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][0] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][0]);
01666 }
01667
01668 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [7] != CLEAR_PAT)
01669 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][7] != CLEAR_PAT) )
01670 {
01671 h_ndiff_tim_ch7_ch7[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01672 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][7] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][7]);
01673 }
01674
01675 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [15] != CLEAR_PAT)
01676 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][15] != CLEAR_PAT) )
01677 {
01678 h_ndiff_tim_ch15_ch15[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01679 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][15] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][15]);
01680 }
01681
01682 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [23] != CLEAR_PAT)
01683 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][23] != CLEAR_PAT) )
01684 {
01685 h_ndiff_tim_ch23_ch23[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01686 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][23] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][23]);
01687 }
01688
01689 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [31] != CLEAR_PAT)
01690 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][31] != CLEAR_PAT) )
01691 {
01692 h_ndiff_tim_ch31_ch31[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01693 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][31] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][31]);
01694 }
01695
01696 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [39] != CLEAR_PAT)
01697 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][39] != CLEAR_PAT) )
01698 {
01699 h_ndiff_tim_ch39_ch39[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01700 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][39] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][39]);
01701 }
01702
01703 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [47] != CLEAR_PAT)
01704 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][47] != CLEAR_PAT) )
01705 {
01706 h_ndiff_tim_ch47_ch47[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01707 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][47] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][47]);
01708 }
01709
01710 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [55] != CLEAR_PAT)
01711 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][55] != CLEAR_PAT) )
01712 {
01713 h_ndiff_tim_ch55_ch55[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01714 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][55] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][55]);
01715 }
01716
01717 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [63] != CLEAR_PAT)
01718 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][63] != CLEAR_PAT) )
01719 {
01720 h_ndiff_tim_ch63_ch63[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01721 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][63] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][63]);
01722 }
01723
01724 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [71] != CLEAR_PAT)
01725 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][71] != CLEAR_PAT) )
01726 {
01727 h_ndiff_tim_ch71_ch71[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01728 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][71] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][71]);
01729 }
01730
01731 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [79] != CLEAR_PAT)
01732 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][79] != CLEAR_PAT) )
01733 {
01734 h_ndiff_tim_ch79_ch79[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01735 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][79] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][79]);
01736 }
01737
01738 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [87] != CLEAR_PAT)
01739 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][87] != CLEAR_PAT) )
01740 {
01741 h_ndiff_tim_ch87_ch87[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01742 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][87] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][87]);
01743 }
01744
01745 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [95] != CLEAR_PAT)
01746 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][95] != CLEAR_PAT) )
01747 {
01748 h_ndiff_tim_ch95_ch95[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01749 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][95] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][95]);
01750 }
01751
01752 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [103] != CLEAR_PAT)
01753 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][103] != CLEAR_PAT) )
01754 {
01755 h_ndiff_tim_ch103_ch103[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01756 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][103] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][103]);
01757 }
01758
01759 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [111] != CLEAR_PAT)
01760 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][111] != CLEAR_PAT) )
01761 {
01762 h_ndiff_tim_ch111_ch111[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01763 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][111] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][111]);
01764 }
01765
01766 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [119] != CLEAR_PAT)
01767 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][119] != CLEAR_PAT) )
01768 {
01769 h_ndiff_tim_ch119_ch119[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01770 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][119] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][119]);
01771 }
01772
01773 if ( (l_toti[l_sfp[0]] [l_exp[0]] [l_nxy[0]] [127] != CLEAR_PAT)
01774 && (l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][127] != CLEAR_PAT) )
01775 {
01776 h_ndiff_tim_ch127_ch127[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]->Fill
01777 (l_toti[l_sfp[0]][l_exp[0]][l_nxy[0]][127] - l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][127]);
01778 }
01779
01780 }
01781
01782
01783
01784 bad_event:
01785
01786
01787 return;
01788
01789
01790
01791
01792 }
01793
01794
01795
01796