• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

beamtime/cosy-nov11/go4/SISTRIPS/TExploderProc.cxx (r4864/r3159)

Go to the documentation of this file.
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 // needed for subevent ids
00026 //#include "roc/Board.h"
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 //#define MAX_PAT    0x4fffffffff
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      // create histograms
00139      //l_nxy_ct = 0;
00140      for (l_i=0; l_i<MAX_SFP; l_i++)          // loop over SFPs
00141       {
00142        if (l_in_use[l_i][0] > 0)              // sfp l_i used
00143        {
00144          for (l_j=0; l_j<MAX_EXP; l_j++)      // loop over EXPLODERs
00145             {
00146            //printf ("SFP: %d, EXP: %d, NXY: %d  \n", l_i, l_j, l_in_use[l_i][l_j]);
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++)  // loop over NXYTERs
00155            {
00156 
00157              if (l_k==0)
00158         {
00159 
00160              //printf ("nxy index %d \n", l_k);
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              sprintf(chis,"EXPLODERS/Hit Pattern low mult SFP: %1d EXP: %1d NXY: %1d", l_i, l_j, l_k);
00172              sprintf(chead,"Nxyter HIT PATTERN low mult");
00173              h_hitpatkw[l_i][l_j][l_k] = MakeTH1('I', chis,chead,MAX_CHA+4,-2,MAX_CHA+2);
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              sprintf(chis,"EXPLODERS/blabla/T from 1st hit in ch S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00302              sprintf(chead,"Time from the first hit in ch vs channel numb");
00303              h_t_from_1st_hit_in_ch_vs_ch[l_i][l_j][l_k] =
00304                   MakeTH2('I', chis,chead,0xffff,0,0xffff, MAX_CHA, 0, MAX_CHA);
00305 
00306         */
00307 
00308              /* //latest
00309              sprintf(chis,"EXPLODERS/blabla/T from 1st hit in xy S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00310              sprintf(chead,"Time from the first hit in xy vs channel numb");
00311              h_t_from_1st_hit_in_xy_vs_ch[l_i][l_j][l_k] =
00312                   MakeTH2('I', chis,chead,0x3fff,0,0x3fff, MAX_CHA, 0, MAX_CHA);
00313              */
00314 
00315 
00316         /*
00317              sprintf(chis,"EXPLODERS/blabla/T from 1st hit in ex S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00318              sprintf(chead,"Time from the first hit in ex vs channel numb");
00319              h_t_from_1st_hit_in_ex_vs_ch[l_i][l_j][l_k] =
00320                   MakeTH2('I', chis,chead,0xffff,0,0xffff, MAX_CHA, 0, MAX_CHA);
00321 
00322              sprintf(chis,"EXPLODERS/blabla/T from 1st hit in sf S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00323              sprintf(chead,"Time from the first hit in sf vs channel numb");
00324              h_t_from_1st_hit_in_sf_vs_ch[l_i][l_j][l_k] =
00325                   MakeTH2('I', chis,chead,0xffff,0,0xffff, MAX_CHA, 0, MAX_CHA);
00326 
00327              sprintf(chis,"EXPLODERS/blabla/T from 1st hit in al S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00328              sprintf(chead,"Time from the first hit in al vs channel numb");
00329              h_t_from_1st_hit_in_al_vs_ch[l_i][l_j][l_k] =
00330                   MakeTH2('I', chis,chead,0xffff,0,0xffff, MAX_CHA, 0, MAX_CHA);
00331 
00332         */
00333           }
00334 
00335 
00336        /*
00337 
00338              sprintf(chis,"EXPLODERS/blabla/Diff epo  S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00339              sprintf(chead,"Diff epo");
00340              h_diff_epo[l_i][l_j][l_k] = MakeTH1('I', chis,chead,0x10000,0,0x10000);
00341 
00342              sprintf(chis,"EXPLODERS/blabla/Diff epo 1 S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00343              sprintf(chead,"Diff epo 1");
00344              h_diff_epo_1[l_i][l_j][l_k] = MakeTH1('I', chis,chead,0x10000,0,0x10000);
00345 
00346        */
00347 
00348              for (l_l=0; l_l<MAX_CHA; l_l++)          // loop over channels
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                sprintf(chis,"EXPLODERS/ADCsblabla/Chargekw  S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00362                sprintf(chead,"Chargekw");
00363                h_chargekw[l_i][l_j][l_k][l_l] =
00364                                       MakeTH1('I', chis,chead,N_BIN_CHARGE,FI_CHARGE,LA_CHARGE);
00365 
00366                sprintf(chis,"EXPLODERS/ADCsblabla/Chargecoinc  S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00367                sprintf(chead,"Chargecoinc");
00368                h_chargecoinc[l_i][l_j][l_k][l_l] =
00369                                       MakeTH1('I', chis,chead,N_BIN_CHARGE,FI_CHARGE,LA_CHARGE);
00370 
00371                sprintf(chis,"EXPLODERS/ADCsblabla/Chargecoinc1  S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00372                sprintf(chead,"Chargecoinc1");
00373                h_chargecoinc1[l_i][l_j][l_k][l_l] =
00374                                       MakeTH1('I', chis,chead,N_BIN_CHARGE,FI_CHARGE,LA_CHARGE);
00375 
00376 
00377                sprintf(chis,"EXPLODERS/ADCsblabla/Chargecoincsqr  S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00378                sprintf(chead,"Chargecoincsqr");
00379                h_chargecoincsqr[l_i][l_j][l_k][l_l] =
00380                                       MakeTH1('I', chis,chead,N_BIN_CHARGE,FI_CHARGE,LA_CHARGE);
00381 
00382                sprintf(chis,"EXPLODERS/ADCsblabla/Chargecoincsqr1  S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00383                sprintf(chead,"Chargecoincsqr1");
00384                h_chargecoincsqr1[l_i][l_j][l_k][l_l] =
00385                                       MakeTH1('I', chis,chead,N_BIN_CHARGE,FI_CHARGE,LA_CHARGE);
00386 
00387           */
00388 
00389           /*
00390                sprintf(chis,"EXPLODERS/ADCsblabla/Chargekw51  S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00391                sprintf(chead,"Chargekw51");
00392                h_chargekw51[l_i][l_j][l_k][l_l] =
00393                                       MakeTH1('I', chis,chead,N_BIN_CHARGE,FI_CHARGE,LA_CHARGE);
00394                sprintf(chis,"EXPLODERS/ADCsblabla/Chargekw51T  S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00395                sprintf(chead,"Chargekw51T");
00396                h_chargekw51T[l_i][l_j][l_k][l_l] =
00397                                       MakeTH1('I', chis,chead,N_BIN_CHARGE,FI_CHARGE,LA_CHARGE);
00398 
00399           */
00400 
00401 
00402           /*
00403              sprintf(chis,"EXPLODERS/blabla/T from 1st hit adc cut S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00404              sprintf(chead,"Time from the first hit adc cut");
00405              h_t_from_1st_hit_e3_adc[l_i][l_j][l_k][l_l] =
00406                   MakeTH1('I', chis,chead,0x7ffe,-0x3fff,0x3fff);
00407           */
00408 
00409           /*
00410              sprintf(chis,"EXPLODERS/blabla/T from 1st hit S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00411              sprintf(chead,"Time from the first hit ");
00412              h_t_from_1st_hit_e3[l_i][l_j][l_k][l_l] =
00413                   MakeTH1('I', chis,chead,0x7ffe,-0x3fff,0x3fff);
00414           */
00415         /*
00416 
00417              sprintf(chis,"EXPLODERS/blabla/T from 1st hit ch 37 adc cut S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00418              sprintf(chead,"Time from the first hit ch 37 adc cut");
00419              h_t_from_1st_hit_e3ch37_adc[l_i][l_j][l_k][l_l] =
00420                   MakeTH1('I', chis,chead,0x3fff,0,0x3fff);
00421              sprintf(chis,"EXPLODERS/blabla/T from 1st hit ch 37 S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00422              sprintf(chead,"Time from the first hit ch 37");
00423              h_t_from_1st_hit_e3ch37[l_i][l_j][l_k][l_l] =
00424                   MakeTH1('I', chis,chead,0x3fff,0,0x3fff);
00425 
00426              sprintf(chis,"EXPLODERS/blabla/T from 1st hit ch 77 adc cut S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00427              sprintf(chead,"Time from the first hit ch 77 adc cut");
00428              h_t_from_1st_hit_e3ch77_adc[l_i][l_j][l_k][l_l] =
00429                   MakeTH1('I', chis,chead,0x3fff,0,0x3fff);
00430              sprintf(chis,"EXPLODERS/blabla/T from 1st hit ch 77 S: %1d E: %1d N: %1d C: %1d", l_i, l_j, l_k, l_l);
00431              sprintf(chead,"Time from the first hit ch 77");
00432              h_t_from_1st_hit_e3ch77[l_i][l_j][l_k][l_l] =
00433                   MakeTH1('I', chis,chead,0x3fff,0,0x3fff);
00434 
00435         */
00436 
00437 
00438              // latest
00439              /*
00440              if (l_j == 1  )
00441           {
00442              sprintf(chis,"EXPLODERS/blabla/ampl vs ch 20 S: %1d E: %1d N: %1d, C: %1d", l_i, l_j, l_k, l_l);
00443              sprintf(chead,"ampl vs ch 20");
00444         h_ampl_vs_ampl[l_i][l_j][l_k][l_l] =
00445         MakeTH2('I', chis,chead,1500,1000,2500,1500,1000,2500);
00446             //  MakeTH2('I', chis,chead,0x5a,0,0x5a,N_BIN_CHARGE,FI_CHARGE,LA_CHARGE);
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              sprintf(chis,"EXPLODERS/blabla/hitpat vs mult range S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00465              sprintf(chead,"hitpat vs mult range");
00466              h_hitpat_vs_mult_range[l_i][l_j][l_k] =
00467           MakeTH2('I', chis,chead,0x5a,0,0x5a,MAX_CHA+4,-2,MAX_CHA+2);
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              sprintf(chis,"EXPLODERS/blabla/epo vs trig low multS: %1d E: %1d N: %1d", l_i, l_j, l_k);
00482              sprintf(chead,"epo vs trig low mult");
00483              h_epo_vs_trig_lowmult_vs_ch[l_i][l_j][l_k] =
00484           MakeTH2('I', chis,chead,MAX_CHA+4,-2,MAX_CHA+2,10000,-5000,5000);
00485 
00486              sprintf(chis,"EXPLODERS/blabla/epo vs trig low trigS: %1d E: %1d N: %1d", l_i, l_j, l_k);
00487              sprintf(chead,"epo vs trig low trig");
00488              h_epo_vs_trig_vs_chl[l_i][l_j][l_k] =
00489           MakeTH2('I', chis,chead,MAX_CHA+4,-2,MAX_CHA+2,200,-100,100);
00490 
00491              sprintf(chis,"EXPLODERS/blabla/epo vs trig high trigS: %1d E: %1d N: %1d", l_i, l_j, l_k);
00492              sprintf(chead,"epo vs trig high trig");
00493              h_epo_vs_trig_vs_chh[l_i][l_j][l_k] =
00494           MakeTH2('I', chis,chead,MAX_CHA+4,-2,MAX_CHA+2,200,-100,100);
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              sprintf(chis,"EXPLODERS/blabla/Mult with time window S: %1d E: %1d N: %1d", l_i, l_j, l_k);
00504              sprintf(chead,"Mult with time window");
00505              h_mult_wtimewind[l_i][l_j][l_k] =
00506                   MakeTH1('I', chis,chead,0x201,-1,0x200);
00507         */
00508              } // if l_k=0
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              sprintf(chis,"EXPLODERS/blabla/hitpat 2dim low multE %d E %d",l_j,l_j+1 );
00518              sprintf(chead,"hitpat 2dim low mult");
00519              h_hitpat_2dim_lowmult[l_j] =
00520           MakeTH2('I', chis,chead,MAX_CHA+4,-2,MAX_CHA+2,MAX_CHA+4,-2,MAX_CHA+2);
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              sprintf(chis,"EXPLODERS/epo short %d",l_j);
00528              sprintf(chead,"epo short");
00529              h_trg_epo_short[l_j] =
00530           MakeTH1('I', chis,chead,30000,0,30000);
00531              sprintf(chis,"EXPLODERS/epo short high %d",l_j);
00532              sprintf(chead,"epo short high");
00533              h_trg_epo_shorth[l_j] =
00534           MakeTH1('I', chis,chead,30000,0,30000);
00535              sprintf(chis,"EXPLODERS/epo short low %d",l_j);
00536              sprintf(chead,"epo short low");
00537              h_trg_epo_shortl[l_j] =
00538           MakeTH1('I', chis,chead,30000,0,30000);
00539         */
00540          }
00541        }
00542      }
00543 
00544 
00545 
00546 
00547         /*
00548              sprintf(chis,"EXPLODERS/blabla/T from 1st hit E3 38");
00549              sprintf(chead,"Time from the first hit E3 38");
00550              h_t_from_1st_hit_e3[1] =
00551                   MakeTH1('I', chis,chead,0x3fff,0,0x3fff);
00552              sprintf(chis,"EXPLODERS/blabla/T from 1st hit E3 39");
00553              sprintf(chead,"Time from the first hit E3 39");
00554              h_t_from_1st_hit_e3[2] =
00555                   MakeTH1('I', chis,chead,0x3fff,0,0x3fff);
00556              sprintf(chis,"EXPLODERS/blabla/T from 1st hit E3 49");
00557              sprintf(chead,"Time from the first hit E3 49");
00558              h_t_from_1st_hit_e3[3] =
00559                   MakeTH1('I', chis,chead,0x3fff,0,0x3fff);
00560              sprintf(chis,"EXPLODERS/blabla/T from 1st hit E3 50");
00561              sprintf(chead,"Time from the first hit E3 50");
00562              h_t_from_1st_hit_e3[4] =
00563                   MakeTH1('I', chis,chead,0x3fff,0,0x3fff);
00564              sprintf(chis,"EXPLODERS/blabla/T from 1st hit E3 51");
00565              sprintf(chead,"Time from the first hit E3 51");
00566              h_t_from_1st_hit_e3[5] =
00567                   MakeTH1('I', chis,chead,0x3fff,0,0x3fff);
00568         //   MakeTH1('I', chis,chead,0x31ff38,0,0x31ff38);
00569 
00570         */
00571 
00572      // create comparing histograms over different Nxyter.
00573      // reference always first nxyter found
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    // then assign output event
00711    // since output event object is never discarded within processor lifetime,
00712    // we just search for subevent by name once to speed up processing
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          // since output event object is never discarded within processor lifetime,
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 // todo: put all data fields to output event JAM
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++)          // loop over SFPs
00799                {
00800                 if (l_in_use[l_i][0] > 0)              // sfp l_i used
00801                 {
00802                   // first jump over pci express dma padding words
00803                   for (l_j=0; l_j<100; l_j++)
00804                   {
00805                     l_padd = *pl_tmp++;
00806                     //printf ("l_padd: 0x%x \n", l_padd);
00807                     if ( (l_padd & 0xfff00000) != 0xadd00000 )
00808                       {
00809                       //printf ("%d padding words \n", l_j);
00810                       pl_tmp--;
00811                       break;
00812                     }
00813                   }
00814                   for (l_j=0; l_j<MAX_EXP; l_j++)      // loop over EXPLODERs
00815                      {
00816                     //printf ("SFP: %d, EXP: %d, NXY: %d  \n", l_i, l_j, l_in_use[l_i][l_j]);
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++)  // loop over NXYTERs
00819                     {
00820                       // because of 2 x 32 bit gosip Nxyter header
00821                       l_gosip_head = *pl_tmp++;
00822                       //printf ("nxy_head: 0x%x \n", l_gosip_head);
00823                       if ( ((l_gosip_head & 0xff) >> 0) != 0x34 )
00824                            {
00825                         printf ("ERROR>> channel header type is not 0x34 \n");
00826                       }
00827 
00828 
00829             /* trigger type not yet filled in gosip header
00830                       if ( ((l_gosip_head & 0xff00) >> 8) == 3 )
00831                            {
00832                         goto bad_event;  // actually no bad event but sync. trigger
00833                                          // contains no Nxyter data
00834                       }
00835                       else if ( ((l_gosip_head & 0xff00) >> 8) == 1 )
00836                            {}
00837                       else
00838                           {
00839                         printf ("found event with trigger type %d \n",
00840                                                              (l_gosip_head & 0xff00) >> 8);
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++;              // Nxyter data size
00853                       //printf ("nxy_size: 0x%x \n", l_nxy_size);
00854                       l_nxy_n_cha  = (l_nxy_size - 20) >> 3;
00855                       //printf ("nxy_n_cha: %d \n", l_nxy_n_cha);
00856                       if (l_k == 0 )
00857                          {
00858                          l_nxy_n_chakw[l_j] = l_nxy_n_cha ;
00859                          }
00860 
00861                  //          cout << "XX  " << l_evt_ct << " " << l_j << " " << l_nxy_n_chakw[l_j] <<endl;
00862 
00863                       if ((l_i==1) && (l_j==3) && (l_k==0) && (l_nxy_n_cha>2000) ) {goto bad_event;}
00864             //          if ((l_i==1) && (l_j==0) && (l_k==0) && ((l_nxy_n_cha<1) || (l_nxy_n_cha>70)) ) {goto bad_event;}
00865             //          if ((l_i==1) && (l_j==2) && (l_k==0) && ((l_nxy_n_cha<1) || (l_nxy_n_cha>70)) ) {goto bad_event;}
00866 
00867 
00868 
00869                       l_nxy_head = *pl_tmp++;                // Nxyter header
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                       // trigger epo time
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                       //ll_trg_epo_plus[l_i][l_j][l_k] = (((ULong64_t)l_dat_fir & 0xffff) << 32) + l_dat_sec + 0x4000000000;
00894                       //ll_trg_epo_uint[l_i][l_j][l_k] = (((ULong64_t)l_dat_fir & 0xffff) << 32) + l_dat_sec;
00895                       //ll_trg_epo_int[l_i][l_j][l_k] = (((ULong64_t)l_dat_fir & 0xffff) << 32) + l_dat_sec;
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                      //h_trg_epo_short[l_j]->Fill (ll_trg_epo_short[l_j]);
00906                         if ((ll_trg_epo[l_i][l_j][l_k] >> 20 ) - ll_trg_epo_shorto[l_j] >1)
00907                      {
00908                   //h_trg_epo_shortl[l_j]->Fill (ll_trg_epo_short[l_j]);
00909                           lowtrig=1; hightrig=0;
00910                           }
00911                    else
00912                           {
00913                   //h_trg_epo_shorth[l_j]->Fill (ll_trg_epo_short[l_j]);
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                  //printf ("ll_trg_epo: 0x%llx \n", ll_trg_epo[l_i][l_j][l_k]);
00924                       //sleep (1); fflush (stdout);
00925                       for (l_l=0; l_l<l_nxy_n_cha; l_l++)   // loop over channels
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                               //printf ("cha ix: %d \n", l_cha_ix);
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                         //printf ("l_adc: %d \n", l_adc [l_i][l_j][l_k][l_cha_ix]); fflush (stdout);
00967                         //sleep (1);
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                         //l_toti[l_i][l_j][l_k][l_cha_ix] =  (l_epo [l_i][l_j][l_k][l_cha_ix] * 8)
00976                         //                                +  (l_time[l_i][l_j][l_k][l_cha_ix]);
00977 
00978                         //l_toti[l_i][l_j][l_k][l_cha_ix] =  l_epo [l_i][l_j][l_k][l_cha_ix];
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                         // remove the 2 nxy interpolator bits
00983                         //l_toti[l_i][l_j][l_k][l_cha_ix] = l_toti[l_i][l_j][l_k][l_cha_ix] & 0x3ffc;
00984                         //l_toti[l_i][l_j][l_k][l_cha_ix] = l_toti[l_i][l_j][l_k][l_cha_ix] & 0x3ffe;
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                    if ((l_k == 0) && (l_nxy_n_cha==1))
00997                          {
00998                      h_hitpatkw[l_i][l_j][l_k]->Fill (l_cha_ix, 1);
00999                         #ifdef CHARGE
01000                      h_chargekw[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
01001                         #endif // CHARGE
01002                                     h_epo_vs_trig_lowmult_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));
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                         if (lowtrig>0)
01016                      {
01017                    h_epo_vs_trig_vs_chl[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));
01018                      }
01019                         else
01020                           {
01021                    h_epo_vs_trig_vs_chh[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));
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                         //if ( (ll_time < l_time_first_xy[l_i][l_j][l_k]) && (l_cha_ix==115) && l_adc[l_i][l_j][l_k][l_cha_ix]<3000)
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                       // Nxyter error pattern
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                       // here further tests on error bits
01104 
01105                       // Nxyter trailer
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++)          // loop over SFPs
01244                {
01245                 if (l_in_use[l_i][0] > 0)              // sfp l_i used
01246                 {
01247                   // first jump over pci express dma padding words
01248                   for (l_j=0; l_j<100; l_j++)
01249                   {
01250                     l_padd = *pl_tmp++;
01251                     //printf ("l_padd: 0x%x \n", l_padd);
01252                     if ( (l_padd & 0xfff00000) != 0xadd00000 )
01253                       {
01254                       //printf ("%d padding words \n", l_j);
01255                       pl_tmp--;
01256                       break;
01257                     }
01258                   }
01259                   for (l_j=0; l_j<MAX_EXP; l_j++)      // loop over EXPLODERs
01260                      {
01261                     //printf ("SFP: %d, EXP: %d, NXY: %d  \n", l_i, l_j, l_in_use[l_i][l_j]);
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++)  // loop over NXYTERs
01264                     {
01265                       // because of 2 x 32 bit gosip Nxyter header
01266                       l_gosip_head = *pl_tmp++;
01267                       //printf ("nxy_head: 0x%x \n", l_gosip_head);
01268                       if ( ((l_gosip_head & 0xff) >> 0) != 0x34 )
01269                            {
01270                         printf ("ERROR>> channel header type is not 0x34 \n");
01271                       }
01272 
01273 
01274             /* trigger type not yet filled in gosip header
01275                       if ( ((l_gosip_head & 0xff00) >> 8) == 3 )
01276                            {
01277                         goto bad_event;  // actually no bad event but sync. trigger
01278                                          // contains no Nxyter data
01279                       }
01280                       else if ( ((l_gosip_head & 0xff00) >> 8) == 1 )
01281                            {}
01282                       else
01283                           {
01284                         printf ("found event with trigger type %d \n",
01285                                                              (l_gosip_head & 0xff00) >> 8);
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++;              // Nxyter data size
01298                       //printf ("nxy_size: 0x%x \n", l_nxy_size);
01299                       l_nxy_n_cha  = (l_nxy_size - 20) >> 3;
01300                       //printf ("nxy_n_cha: %d \n", l_nxy_n_cha);
01301 
01302                       l_nxy_head = *pl_tmp++;                // Nxyter header
01303                       if ( ((l_nxy_head & 0xff000000) >> 24) != 0xaa)
01304                            {
01305                         printf ("ERROR>> Nxyter header id is not 0xaa \n");
01306                       }
01307 
01308                       // trigger epo time
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                       //ll_trg_epo[l_i][l_j][l_k] = (((ULong64_t)l_dat_fir & 0xffff) << 32) + l_dat_sec;
01315                            //printf ("ll_trg_epo: 0x%llx \n", ll_trg_epo[l_i][l_j][l_k]);
01316                       //sleep (1); fflush (stdout);
01317 
01318                  //    if ((l_j == 0) || (l_j == 2))
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                       if (l_mult_wtimewind[l_i][l_j][l_k]>0)
01326                    {
01327                  h_mult_wtimewind[l_i][l_j][l_k]->Fill (l_mult_wtimewind[l_i][l_j][l_k]);
01328                    }
01329                  */
01330 
01331                       for (l_l=0; l_l<l_nxy_n_cha; l_l++)   // loop over channels
01332                       {
01333                         l_dat_fir = *pl_tmp++;
01334                         l_dat_sec = *pl_tmp++;
01335 
01336                         l_cha_ix = (l_dat_sec & 0x7f000000) >> 24;
01337                               //printf ("cha ix: %d \n", l_cha_ix);
01338 
01339                    //       cout << " " << l_evt_ct << " " << l_j << " " << l_nxy_n_chakw[l_j] << " " << l_nxy_n_chakw[0] << " " << l_nxy_n_chakw[1] << " " << l_nxy_n_chakw[2] << " " << l_nxy_n_chakw[3] <<endl;
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                    //    cout << " " << l_evt_ct << " " << l_j << " " << l_nxy_n_chakw[0] << " " << l_nxy_n_chakw[1] << " " << l_nxy_n_chakw[2] << " " << l_nxy_n_chakw[3] <<endl;
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                    //    cout << " " << l_evt_ct << " " << l_j << " " << l_nxy_n_chakw[0] << " " << l_nxy_n_chakw[1] << " " << l_nxy_n_chakw[2] << " " << l_nxy_n_chakw[3] <<endl;
01353                   /*
01354                   for (l_m=0; l_m<l_nxy_n_chakw[l_j+1]; l_m++)
01355                               {
01356                                h_hitpat_2dim_lowmult[l_j]->Fill (l_cha_ixkw[l_j+1][l_m],l_cha_ix);
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                         //printf ("l_adc: %d \n", l_adc [l_i][l_j][l_k][l_cha_ix]); fflush (stdout);
01368                         //sleep (1);
01369                         l_epo [l_i][l_j][l_k][l_cha_ix] =  (l_dat_sec & 0xffffff);
01370 
01371                         //l_toti[l_i][l_j][l_k][l_cha_ix] =  (l_epo [l_i][l_j][l_k][l_cha_ix] * 8)
01372                         //                                +  (l_time[l_i][l_j][l_k][l_cha_ix]);
01373 
01374                         //l_toti[l_i][l_j][l_k][l_cha_ix] =  l_epo [l_i][l_j][l_k][l_cha_ix];
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                         // remove the 2 nxy interpolator bits
01379                         //l_toti[l_i][l_j][l_k][l_cha_ix] = l_toti[l_i][l_j][l_k][l_cha_ix] & 0x3ffc;
01380                         //l_toti[l_i][l_j][l_k][l_cha_ix] = l_toti[l_i][l_j][l_k][l_cha_ix] & 0x3ffe;
01381 
01382                    //     h_diff_epo_1[l_i][l_j][l_k]->Fill
01383                    //                (l_epo[l_i][l_j][l_k][l_cha_ix] - l_epo_min[l_i][l_j][l_k]);
01384 
01385                    /*
01386                         if ( (l_k == 0) && (l_j == 0) && (l_nxy_n_chakw[l_j]==1) && (l_nxy_n_chakw[l_j+1]==1) )
01387                           {
01388                      h_chargecoinc1[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
01389                           }
01390 
01391                         if ( (l_k == 0) && (l_j == 1) && (l_nxy_n_chakw[l_j]==1) && (l_nxy_n_chakw[l_j-1]==1) )
01392                           {
01393                      h_chargecoinc1[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
01394                           }
01395 
01396                         if ( (l_k == 0) && (l_j == 0) && (l_nxy_n_chakw[l_j]==1) && (l_nxy_n_chakw[l_j+1]>0) )
01397                           {
01398                      h_chargecoinc[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
01399                           }
01400 
01401                         if ( (l_k == 0) && (l_j == 1) && (l_nxy_n_chakw[l_j]==1) && (l_nxy_n_chakw[l_j-1]>0) )
01402                           {
01403                      h_chargecoinc[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
01404                           }
01405 
01406 
01407                         if ( (l_k == 0) && (l_j == 0) && (l_nxy_n_chasqr[l_j]==1) && (l_nxy_n_chasqr[l_j+1]==1) )
01408                           {
01409                      h_chargecoincsqr1[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
01410                           }
01411 
01412                         if ( (l_k == 0) && (l_j == 1) && (l_nxy_n_chasqr[l_j]==1) && (l_nxy_n_chasqr[l_j-1]==1) )
01413                           {
01414                      h_chargecoincsqr1[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
01415                           }
01416 
01417                         if ( (l_k == 0) && (l_j == 0) && (l_nxy_n_chasqr[l_j]==1) && (l_nxy_n_chasqr[l_j+1]>0) )
01418                           {
01419                      h_chargecoincsqr[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
01420                           }
01421 
01422                         if ( (l_k == 0) && (l_j == 1) && (l_nxy_n_chasqr[l_j]==1) && (l_nxy_n_chasqr[l_j-1]>0) )
01423                           {
01424                      h_chargecoincsqr[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
01425                           }
01426 
01427 
01428                    if ((l_k == 0))
01429                          {
01430                      h_hitpat_vs_mult_range[l_i][l_j][l_k]->Fill (l_nxy_n_charange[l_j], l_cha_ix);
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                      //h_ampl_vs_ampl[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc [l_i][l_j][l_k][l_cha_ix], l_nhit_ch_adc[l_i][l_j][l_k][20][l_m] );
01441                         }
01442                               };
01443                           }
01444 
01445 
01446 
01447                  //ll_time = (l_epo[l_i][l_j][l_k][l_cha_ix] << 14) + l_time[l_i][l_j][l_k][l_cha_ix];
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                      printf ("l_xdc: %d %d %d %d %d %d %d %d \n", l_evt_ct, l_i, l_j, l_k, l_cha_ix, (l_trg_epo_l32[l_i][l_j][l_k] & 0xffff), l_time[l_i][l_j][l_k][l_cha_ix], l_epo[l_i][l_j][l_k][l_cha_ix] ); //fflush (stdout);
01456                                printf ("l_bdc: %d %d %d %d \n", l_time[l_i][l_j][l_k][l_cha_ix], l_epo[l_i][l_j][l_k][l_cha_ix], ll_time, l_epo[l_i][l_j][l_k][l_cha_ix]); //fflush (stdout);
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                      //cout << "n-bdc " << l_time[l_i][l_j][l_k][l_cha_ix] << " " << l_epo[l_i][l_j][l_k][l_cha_ix]<< " " << ll_time << " " << l_epo[l_i][l_j][l_k][l_cha_ix]<< endl;
01461                              }
01462 
01463 
01464                       if ((l_i==1) && (l_j==0) && (l_k==0))
01465 
01466                         {
01467 
01468                       /*
01469             h_t_from_1st_hit_in_ch_vs_ch[l_i][l_j][l_k]->Fill
01470                               (ll_time - l_time_first_ch[l_i][l_j][l_k][l_cha_ix] , l_cha_ix);
01471                       */
01472                      //h_t_from_1st_hit_in_xy_vs_ch[l_i][l_j][l_k]->Fill
01473                           //    (ll_time - l_time_first_xy[l_i][l_j][l_k] , l_cha_ix);
01474             /*
01475             h_t_from_1st_hit_in_ex_vs_ch[l_i][l_j][l_k]->Fill
01476                               (ll_time - l_time_first_ex[l_i][l_j] ,l_cha_ix );
01477             h_t_from_1st_hit_in_sf_vs_ch[l_i][l_j][l_k]->Fill
01478                               (ll_time - l_time_first_sf[l_i] , l_cha_ix);
01479             h_t_from_1st_hit_in_al_vs_ch[l_i][l_j][l_k]->Fill
01480                               (ll_time - l_time_first_al , l_cha_ix);
01481             */
01482 
01483                         }
01484 
01485 
01486                  //    if (l_time_first_xy[l_i][0][l_k] != MAX_PAT )
01487 
01488                                 if (l_k == 0)
01489 
01490                    {
01491 
01492                      //            if ( (l_adc[l_i][l_j][l_k][l_cha_ix] > 1400) &&  (l_adc[l_i][l_j][l_k][l_cha_ix] < 1460)  )
01493                         if ( (l_adc[l_i][l_j][l_k][l_cha_ix] < 1300)  )
01494                            {
01495                    //printf ("l_bdc: %d \n", l_adc [l_i][l_j][l_k][l_cha_ix]); fflush (stdout);
01496 
01497                    /*
01498                    h_t_from_1st_hit_e3ch37_adc[l_i][l_j][l_k][l_cha_ix]->Fill
01499                                      (ll_time - l_time_first_ch[l_i][l_j][l_k][l_cha_ix]);
01500 
01501                    if (    (l_time_first_ch[l_i][l_j][l_k][77]   != MAX_PAT)  )
01502                     {
01503                          h_t_from_1st_hit_e3ch77_adc[l_i][l_j][l_k][l_cha_ix]->Fill
01504                                      (ll_time - l_time_first_ch[l_i][l_j][l_k][77]);
01505                               }
01506 
01507 
01508 
01509                    if (    (l_time_first_xy[l_i][l_j][l_k]   != MAX_PAT)  )
01510                          {
01511                            h_t_from_1st_hit_e3_adc[l_i][l_j][l_k][l_cha_ix]->Fill
01512                                      (ll_time - l_time_first_xy[l_i][l_j][l_k]);
01513                          }
01514                              */
01515 
01516                       }
01517 
01518                                //printf ("l_adc: %d \n", l_adc [l_i][l_j][l_k][l_cha_ix]); fflush (stdout);
01519 
01520                    /*
01521                    h_t_from_1st_hit_e3ch37[l_i][l_j][l_k][l_cha_ix]->Fill
01522                                           (ll_time - l_time_first_ch[l_i][l_j][l_k][l_cha_ix]);
01523 
01524                         if (    (l_time_first_ch[l_i][l_j][l_k][77]   != MAX_PAT)  )
01525                            {
01526                      h_t_from_1st_hit_e3ch77[l_i][l_j][l_k][l_cha_ix]->Fill
01527                                           (ll_time - l_time_first_ch[l_i][l_j][l_k][77]);
01528                            }
01529                    */
01530 
01531 
01532                    //h_chargekw[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
01533 
01534                    /*
01535                       if ( (l_time_first_xy[l_i][l_j][l_k] != MAX_PAT) && (l_nxy_n_cha<1000) )
01536                      {
01537                            h_t_from_1st_hit_e3[l_i][l_j][l_k][l_cha_ix]->Fill
01538                                           (ll_time - l_time_first_xy[l_i][l_j][l_k]);
01539 
01540                       //h_chargekw51[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
01541 
01542             //PK         if ( ((ll_time - l_time_first_xy[l_i][l_j][l_k])>-1)
01543             //PK        && ((ll_time - l_time_first_xy[l_i][l_j][l_k])<70) )
01544             //PK         if ( ((ll_time - l_time_first_xy[l_i][l_j][l_k])>-50)
01545             //PK        && ((ll_time - l_time_first_xy[l_i][l_j][l_k])<50) )
01546                       if ( ((ll_time - l_time_first_xy[l_i][l_j][l_k])>250)
01547                      && ((ll_time - l_time_first_xy[l_i][l_j][l_k])<350) )
01548                              {
01549                     //h_chargekw51T[l_i][l_j][l_k][l_cha_ix]->Fill (l_adc[l_i][l_j][l_k][l_cha_ix]);
01550                              }
01551 
01552                           }
01553                    */
01554                         }
01555 
01556                    /*
01557 
01558                         if (l_cha_ix == 38 )
01559                            {
01560                         h_t_from_1st_hit_e3[1]->Fill
01561                               (ll_time - l_time_first_xy[l_i][l_j][l_k]);
01562                       }
01563                         if (l_cha_ix == 39 )
01564                            {
01565                         h_t_from_1st_hit_e3[2]->Fill
01566                               (ll_time - l_time_first_xy[l_i][l_j][l_k]);
01567                       }
01568                         if (l_cha_ix == 49 )
01569                            {
01570                         h_t_from_1st_hit_e3[3]->Fill
01571                               (ll_time - l_time_first_xy[l_i][l_j][l_k]);
01572                       }
01573                         if (l_cha_ix == 50 )
01574                            {
01575                         h_t_from_1st_hit_e3[4]->Fill
01576                               (ll_time - l_time_first_xy[l_i][l_j][l_k]);
01577                       }
01578                         if (l_cha_ix == 51 )
01579                            {
01580                         h_t_from_1st_hit_e3[5]->Fill
01581                               (ll_time - l_time_first_xy[l_i][l_j][l_k]);
01582                       }
01583 
01584                    */
01585 
01586 
01587                       }
01588 
01589                       // Nxyter error pattern
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                       // here further tests on error bits
01597 
01598                       // Nxyter trailer
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                  //h_diff_epo[l_i][l_j][l_k]->Fill
01606                  //                  (l_epo_max[l_i][l_j][l_k] - l_epo_min[l_i][l_j][l_k]);
01607 
01608                  /*
01609 
01610                       if ( (l_epo_max[l_i][l_j][l_k] - l_epo_min[l_i][l_j][l_k] < 0) && (l_i==1) && (l_j==3) && (l_k==0) )
01611 
01612                    {
01613                           l_err_ct ++,
01614                   printf ("ERROR %d %x %x %d %x \n", l_err_ct, l_epo_max[l_i][l_j][l_k], l_epo_min[l_i][l_j][l_k], l_test, l_test   );
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                 //printf ("ref epo trg 16h: 0x%x \n", l_trg_epo_h16[l_sfp[0]][l_exp[0]][l_nxy[0]]);
01640                 //printf ("    epo trg 16h: 0x%x \n", l_trg_epo_h16[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]);
01641                 //printf ("ref epo trg 32l: 0x%x \n", l_trg_epo_l32[l_sfp[0]][l_exp[0]][l_nxy[0]]);
01642                 //printf ("    epo trg 32l: 0x%x \n", l_trg_epo_l32[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]]);
01643                 //fflush (stdout);
01644                 //sleep (1);
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                 //printf ("ref ch0 tim: 0x%x \n", l_toti[l_sfp[0]  ][l_exp[0]  ][l_nxy[0]  ][0]);
01655                 //printf ("    ch0 tim: 0x%x \n", l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][0]);
01656                 //printf ("    diff:      %d \n", l_toti[l_sfp[0]  ][l_exp[0]  ][l_nxy[0]  ][0] -
01657                 //                                l_toti[l_sfp[l_i]][l_exp[l_i]][l_nxy[l_i]][0]);
01658                 //fflush (stdout);
01659                 //sleep (1);
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               //printf ("check next event \n"); sleep (1);
01783 
01784        bad_event:
01785 
01786 // just leave
01787 return;
01788 
01789 
01790 
01791 
01792 }
01793 
01794 
01795 
01796 

Generated on Tue Dec 10 2013 04:52:19 for ROCsoft by  doxygen 1.7.1