00001
00002
00003 #include "TTRDMuensterFrankfurtProc.h"
00004
00005 #include "spadic/Message.h"
00006
00007 #define USED_SPADIC 13
00008
00009
00010
00011
00012
00013 Int_t SpMap[MAX_SPADIC] = { 0, 1, 2, 11, 12, 10, 6, 15, 18, 4, 16, 17, 5, 3, 14, 7, 8, 9, 13, 19 };
00014 Int_t StMap[MAX_SPADIC] = { 0, 1, 11, 10, 15, 0, 0, 0, 0, 4, 16, 17, 5, 3, 14, 7, 8, 9, 13, 19 };
00015 Int_t SbMap[MAX_SPADIC] = { 0, 2, 12, 6, 18, 0, 0, 0, 0, 4, 16, 17, 5, 3, 14, 7, 8, 9, 13, 19 };
00016 Int_t SuMap[MAX_SPADIC] = { 0, 1, 5, 10, 9, 12, 7, 17, 18, 15, 13, 2, 6, 16, 14, 4, 3, 11, 8, 19 };
00017
00018 Int_t SpaPosMap[USED_SPADIC] = { 0, 1, 11, 10, 15, 2, 12, 6, 18, 4, 16, 17, 5 };
00019
00020
00021 TTRDMuensterFrankfurtProc::TTRDMuensterFrankfurtProc(const char* name) : TCBMBeamtimeProc(name),
00022 fSpadicInputEvent(0),
00023 fOutputEvent(0),
00024 fBeamEvent(0),
00025 fHodo1(0)
00026 {
00027 cout << "**** TTRDMuensterFrankfurtProcTTRDSpadicProc: Create instance " << name << endl;
00028
00029
00030 fPar = (TTRDMuensterFrankfurtParam*) MakeParameter("TRDMuensterFrankfurtPar", "TTRDMuensterFrankfurtParam");
00031
00032
00033 for (int mst = 0; mst < MSTRDNUM; ++mst) {
00034 fEpicsMSTRD_Drift_U[mst] = 0;
00035 fEpicsMSTRD_Drift_I[mst] = 0;
00036 fEpicsMSTRD_Anode_U[mst] = 0;
00037 fEpicsMSTRD_Anode_I[mst] = 0;
00038 fEpicsMSTRD_Sus_U[mst] = 0;
00039 fEpicsMSTRD_Sus_I[mst] = 0;
00040 fEpicsMSTRD_Spa_U[mst] = 0;
00041 fEpicsMSTRD_Spa_I[mst] = 0;
00042 }
00043 for (int i = 0; i < 4; i++)
00044 fEpicsMSTRD_Temp[i] = 0;
00045
00046 for (int i = 0; i < RICHNUM; ++i) {
00047 fEpics_Rich_U[i] = 0;
00048 fEpics_Rich_I[i] = 0;
00049 }
00050
00051
00052
00053
00054 TString obname;
00055 TString obtitle;
00056 TString foldername;
00057 TH1* his=0;
00058
00059 one = new TLine(0,1,45,1);
00060
00061 TString SuDeId[MAX_SPADIC] = {"dummy",
00062 "MS_TRD1_T",
00063 "MS_TRD1_B",
00064
00065 "",
00066 "FFM_POS1_SUS04",
00067 "FFM_POS4_SUS05",
00068 "MS_TRD3_B",
00069 "",
00070 "",
00071 "",
00072
00073 "MS_TRD3_T",
00074 "MS_TRD2_T",
00075 "MS_TRD2_B",
00076 "",
00077 "",
00078 "MS_TRD4_T",
00079 "FFM_POS2_SUS16",
00080 "FFM_POS3_SUS17",
00081 "MS_TRD4_B",
00082 ""
00083 };
00084
00085 fSpadic_MSxyHitPadplane[0] = MakeTH2('I',"MuensterFrankfurt/MSxyHitPadplaneTRD1_2","MS x y Hit Pad Plane TRD 1 2",65,-32.5,32.5,65,-32.5,32.5,"x [mm]","y [mm]");
00086 fSpadic_MSxyHitPadplane[0]->SetContour(99);
00087 fSpadic_MSxyHitPadplane[1] = MakeTH2('I',"MuensterFrankfurt/MSxyHitPadplaneTRD3_4","MS x y Hit Pad Plane TRD 3 4",65,-32.5,32.5,65,-32.5,32.5,"x [mm]","y [mm]");
00088 fSpadic_MSxyHitPadplane[1]->SetContour(99);
00089 fSpadic_MSxyHitplane[0] = MakeTH2('I',"MuensterFrankfurt/MSxyHitplaneTRD1_2","MS x y Hit Plane TRD 1 2",65,-32.5,32.5,65,-32.5,32.5,"x [mm]","y [mm]");
00090 fSpadic_MSxyHitplane[0]->SetContour(99);
00091 fSpadic_MSxyHitplane[1] = MakeTH2('I',"MuensterFrankfurt/MSxyHitplaneTRD3_4","MS x y Hit Plane TRD 3 4",65,-32.5,32.5,65,-32.5,32.5,"x [mm]","y [mm]");
00092 fSpadic_MSxyHitplane[1]->SetContour(99);
00093
00094 for (Int_t i = 0; i < 4; i++){
00095 obname.Form("MuensterFrankfurt/BeamProfile2D_TRD%d",i+1);
00096 obtitle.Form("2D Beam Profil of MS TRD %d",i+1);
00097 fSpadic_beamProfil[i] = MakeTH2('I',obname.Data(),obtitle.Data(),240,-60,60,240,-60,60,"x position [mm]","y position [mm]");
00098 fSpadic_beamProfil[i]->SetContour(99);
00099 obname.Form("MuensterFrankfurt/deltaPos_TRD%d",i+1);
00100 obtitle.Form("offset of reco. pos. of MS TRD %d",i+1);
00101 fSpadic_deltaPos[i] = MakeTH2('I',obname.Data(),obtitle.Data(),240,-60,60,240,-60,60,"x position [mm]","#delta x position [mm]");
00102 fSpadic_deltaPos[i]->SetContour(99);
00103 }
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115 if (!fPar->reSortSusibo)
00116 for (Int_t sid = 0; sid < MAX_SPADIC; sid++)
00117 SuMap[sid] = sid;
00118
00119 TString MsId[MSTRDNUM] = {"dummy","336_2010","336_2011","444_2010","444_2011"};
00120 const Int_t timeMemory = 1800;
00121
00122 fSpadic_pidMixing = MakeTH1('I',"PIDmixing","PIDmixing",5,-2.5,2.5);
00123
00124 fEpics_MonitorU[0] = MakeTH1('D',"EPICS_BeamMonitor/Cherenkov_1_U","Cherenkov 1", timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00125 fEpics_MonitorI[0] = MakeTH1('D',"EPICS_BeamMonitor/Cherenkov_1_I","Cherenkov 1", timeMemory,-timeMemory,0,"relative event id","anode current [nA]");
00126 fEpics_MonitorU[1] = MakeTH1('D',"EPICS_BeamMonitor/Cherenkov_2_U","Cherenkov 2", timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00127 fEpics_MonitorI[1] = MakeTH1('D',"EPICS_BeamMonitor/Cherenkov_2_I","Cherenkov 2", timeMemory,-timeMemory,0,"relative event id","anode current [nA]");
00128 fEpics_MonitorU[2] = MakeTH1('D',"EPICS_BeamMonitor/Scintillator_1_U","Scintillator 1", timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00129 fEpics_MonitorI[2] = MakeTH1('D',"EPICS_BeamMonitor/Scintillator_1_I","Scintillator 1", timeMemory,-timeMemory,0,"relative event id","anode current [nA]");
00130 fEpics_MonitorU[3] = MakeTH1('D',"EPICS_BeamMonitor/Scintillator_2_U","Scintillator 2", timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00131 fEpics_MonitorI[3] = MakeTH1('D',"EPICS_BeamMonitor/Scintillator_2_I","Scintillator 2", timeMemory,-timeMemory,0,"relative event id","anode current [nA]");
00132 fEpics_MonitorU[4] = MakeTH1('D',"EPICS_BeamMonitor/Calorimeter_Veto_U","Calorimeter Veto", timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00133 fEpics_MonitorI[4] = MakeTH1('D',"EPICS_BeamMonitor/Calorimeter_Veto_I","Calorimeter Veto", timeMemory,-timeMemory,0,"relative event id","anode current [nA]");
00134 fEpics_MonitorU[5] = MakeTH1('D',"EPICS_BeamMonitor/Calorimeter_U","Calorimeter", timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00135 fEpics_MonitorI[5] = MakeTH1('D',"EPICS_BeamMonitor/Calorimeter_I","Calorimeter", timeMemory,-timeMemory,0,"relative event id","anode current [nA]");
00136 fEpics_MonitorU[6] = MakeTH1('D',"EPICS_BeamMonitor/Hodoscope_1_U","Hodoscope 1", timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00137 fEpics_MonitorI[6] = MakeTH1('D',"EPICS_BeamMonitor/Hodoscope_1_I","Hodoscope 1", timeMemory,-timeMemory,0,"relative event id","anode current [nA]");
00138 fEpics_MonitorU[7] = MakeTH1('D',"EPICS_BeamMonitor/Hodoscope_2_U","Hodoscope 2", timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00139 fEpics_MonitorI[7] = MakeTH1('D',"EPICS_BeamMonitor/Hodoscope_2_I","Hodoscope 2", timeMemory,-timeMemory,0,"relative event id","anode current [nA]");
00140
00141 for (Int_t sl = 0; sl < MPOD00SLOT; sl++) {
00142 for (Int_t ch = 0; ch < MPOD00CHA; ch++) {
00143 obname.Form("EPICS_MS/MS_Mpod00/Slot%02i/00Slot%02iChannel%02i_U",sl,sl,ch);
00144 obtitle.Form("Mpod00 Slot%02i Channel%02i Voltage",sl,ch);
00145 fEpicsMSMpod00_Monitor_U[sl][ch] = MakeTH1('D',obname,obtitle,timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00146 obname.Form("EPICS_MS/MS_Mpod00/Slot%02i/00Slot%02iChannel%02i_I",sl,sl,ch);
00147 obtitle.Form("Mpod00 Slot%02i Channel%02i Current",sl,ch);
00148 fEpicsMSMpod00_Monitor_I[sl][ch] = MakeTH1('D',obname,obtitle,timeMemory,-timeMemory,0,"relative event id","LV current [A]");
00149 }
00150 }
00151
00152 for (Int_t sl = 0; sl < MPOD01SLOT; sl++) {
00153 for (Int_t ch = 0; ch < MPOD01CHA; ch++) {
00154 obname.Form("EPICS_MS/MS_Mpod01/Slot%02i/01Slot%02iChannel%02i_U",sl,sl,ch);
00155 obtitle.Form("Mpod01 Slot%02i Channel%02i Voltage",sl,ch);
00156 fEpicsMSMpod01_Monitor_U[sl][ch] = MakeTH1('D',obname,obtitle,timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00157 obname.Form("EPICS_MS/MS_Mpod01/Slot%02i/01Slot%02iChannel%02i_I",sl,sl,ch);
00158 obtitle.Form("Mpod01 Slot%02i Channel%02i Current",sl,ch);
00159 fEpicsMSMpod01_Monitor_I[sl][ch] = MakeTH1('D',obname,obtitle,timeMemory,-timeMemory,0,"relative event id","HV current [nA]");
00160 }
00161 }
00162
00163 obname.Form("MuensterFrankfurt/Spadic_S2Ncnt");
00164 obtitle.Form("Spadic S/N counter of good events");
00165 fSpadic_S2Ncnt = MakeTH1('D', obname.Data(), obtitle.Data(), MAX_SPADIC, 0.5, MAX_SPADIC+0.5,"Susibo ID", "S/N counter");
00166
00167 obname.Form("MuensterFrankfurt/Spadic_S2N");
00168 obtitle.Form("Spadic S/N");
00169 fSpadic_S2N = MakeTH1('D', obname.Data(), obtitle.Data(), MAX_SPADIC, 0.5, MAX_SPADIC+0.5,"Susibo ID", "S/N");
00170 for (UInt_t sid = 1; sid < MAX_SPADIC; sid++)
00171 fSpadic_S2N->GetXaxis()->SetBinLabel(sid, SuDeId[sid].Data());
00172
00173 obname.Form("MuensterFrankfurt/Spadic_S2Nclean");
00174 obtitle.Form("Spadic S/N after data cleaning");
00175 fSpadic_S2Ncleaned = MakeTH1('D', obname.Data(), obtitle.Data(), MAX_SPADIC, 0.5, MAX_SPADIC+0.5,"Susibo ID", "S/N");
00176 for (UInt_t sid = 1; sid < MAX_SPADIC; sid++)
00177 fSpadic_S2Ncleaned->GetXaxis()->SetBinLabel(sid, SuDeId[sid].Data());
00178
00179 for (int i = 1; i < RICHNUM; ++i) {
00180 obname.Form("EPICS_MS/MAPMT%02d_U",i);
00181 obtitle.Form("MAPMT%02d_U",i);
00182 fEpics_RichU[i] = MakeTH1('D', obname.Data(), obtitle.Data(), timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00183 obname.Form("EPICS_MS/MAPMT%02d_I",i);
00184 obtitle.Form("MAPMT%02d_I",i);
00185 fEpics_RichI[i] = MakeTH1('D', obname.Data(), obtitle.Data(), timeMemory,-timeMemory,0,"relative event id","current [nA]");
00186 }
00187
00188 for (int mst = 1; mst < MSTRDNUM; ++mst) {
00189 obname.Form("EPICS_MS/%s_AnodeU",MsId[mst].Data());
00190 obtitle.Form("MS%s_AnodeU",MsId[mst].Data());
00191 fEpicsMSTRD_AnodeU[mst] = MakeTH1('D', obname.Data(), obtitle.Data(), timeMemory,-timeMemory,0,"relative event id","anode voltage [V]");
00192 obname.Form("EPICS_MS/%s_AnodeI",MsId[mst].Data());
00193 obtitle.Form("MS%s_AnodeI",MsId[mst].Data());
00194 fEpicsMSTRD_AnodeI[mst] = MakeTH1('D', obname.Data(), obtitle.Data(), timeMemory,-timeMemory,0,"relative event id","anode current [nA]");
00195 obname.Form("EPICS_MS/%s_DriftU",MsId[mst].Data());
00196 obtitle.Form("MS%s_DriftU",MsId[mst].Data());
00197 fEpicsMSTRD_DriftU[mst] = MakeTH1('D', obname.Data(), obtitle.Data(), timeMemory,-timeMemory,0,"relative event id","drift voltage [V]");
00198 obname.Form("EPICS_MS/%s_DriftI",MsId[mst].Data());
00199 obtitle.Form("MS%s_DriftI",MsId[mst].Data());
00200 fEpicsMSTRD_DriftI[mst] = MakeTH1('D', obname.Data(), obtitle.Data(), timeMemory,-timeMemory,0,"relative event id","drift current [nA]");
00201 obname.Form("EPICS_MS/%s_SusiboU",MsId[mst].Data());
00202 obtitle.Form("MS%s_SusiboU",MsId[mst].Data());
00203 fEpicsMSTRD_SusU[mst] = MakeTH1('D', obname.Data(), obtitle.Data(), timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00204 obname.Form("EPICS_MS/%s_SusiboI",MsId[mst].Data());
00205 obtitle.Form("MS%s_SusiboI",MsId[mst].Data());
00206 fEpicsMSTRD_SusI[mst] = MakeTH1('D', obname.Data(), obtitle.Data(), timeMemory,-timeMemory,0,"relative event id","current [A]");
00207 obname.Form("EPICS_MS/%s_SpadicU",MsId[mst].Data());
00208 obtitle.Form("MS%s_SpadicU",MsId[mst].Data());
00209 fEpicsMSTRD_SpaU[mst] = MakeTH1('D', obname.Data(), obtitle.Data(), timeMemory,-timeMemory,0,"relative event id","voltage [V]");
00210 obname.Form("EPICS_MS/%s_SpadicI",MsId[mst].Data());
00211 obtitle.Form("MS%s_SpadicI",MsId[mst].Data());
00212 fEpicsMSTRD_SpaI[mst] = MakeTH1('D', obname.Data(), obtitle.Data(), timeMemory,-timeMemory,0,"relative event id","current [A]");
00213 }
00214 for (Int_t i = 0; i < 4; i++) {
00215 obname.Form("EPICS_MS/T%d",i);
00216 obtitle.Form("MST%d",i);
00217 fEpicsMSTRD_T[i] = MakeTH1('D', obname.Data(), obtitle.Data(), timeMemory,-timeMemory,0,"relative event id","drift module temperatur [°C]");
00218 }
00219
00220 obname.Form("MuensterFrankfurt/Spadic_TriggerEfficiency");
00221 obtitle.Form("number of good events after all cuts");
00222 fSpadic_efficiency = MakeTH1('I', obname.Data(), obtitle.Data(), MAX_SPADIC, -0.5, MAX_SPADIC-0.5, "SuID", "good events after all cuts");
00223 fSpadic_efficiency->GetXaxis()->SetBinLabel( 1,"all");
00224 for (UInt_t sid = 1; sid < MAX_SPADIC; sid++) {
00225
00226 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_FingerCorr", sid, sid);
00227 obtitle.Form("correlation with finger sintilator spadic %d MF (%s)", sid, SuDeId[sid].Data());
00228 fSpadic_FingerCorr[sid] = MakeTH2('I', obname.Data(), obtitle.Data(), NUM_SPADIC_CHA, -0.5, NUM_SPADIC_CHA-0.5,4,-0.5,3.5, "Spadic Channel Number", "Finger Sint. Channel Number");
00229 fSpadic_FingerCorr[sid]->SetContour(99);
00230
00231 obname.Form("%d (%s)",sid, SuDeId[sid].Data());
00232 fSpadic_efficiency->GetXaxis()->SetBinLabel(1+sid, obname.Data());
00233
00234 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_NoiseDistMF", sid, sid);
00235 obtitle.Form("RMS of ADC distribution of spadic %d MF (%s)", sid, SuDeId[sid].Data());
00236 fSpadic_NoiseDistMF[sid] = MakeTH1('D', obname.Data(), obtitle.Data(), NUM_SPADIC_CHA, -0.5, NUM_SPADIC_CHA-0.5, "Channel Number", "RMS of ADC distribution [ADC values]");
00237
00238 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_NoiseDist2DMF", sid, sid);
00239 obtitle.Form("RMS of ADC distribution of spadic %d 2D MF (%s)", sid, SuDeId[sid].Data());
00240 fSpadic_NoiseDist2DMF[sid] = MakeTH2('D', obname.Data(), obtitle.Data(), NUM_SPADIC_CHA, -0.5, NUM_SPADIC_CHA-0.5, 305, -50, 255, "Channel Number", "RMS of ADC distribution [ADC values]");
00241 fSpadic_NoiseDist2DMF[sid]->SetContour(99);
00242
00243 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_PedelPosMF", sid, sid);
00244 obtitle.Form("Pedestel (Mean of ADC value distribution) of spadic %d MF (%s)", sid, SuDeId[sid].Data());
00245 fSpadic_PedelPosMF[sid] = MakeTH1('D', obname.Data(), obtitle.Data(), NUM_SPADIC_CHA, -0.5, NUM_SPADIC_CHA-0.5, "Channel Number", "Mean of ADC distribution [ADC values]");
00246
00247 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_PedelPos2DMF", sid, sid);
00248 obtitle.Form("Pedestel (Mean of ADC value distribution) of spadic %d 2D MF (%s)", sid, SuDeId[sid].Data());
00249 fSpadic_PedelPos2DMF[sid] = MakeTH2('D', obname.Data(), obtitle.Data(), NUM_SPADIC_CHA, -0.5, NUM_SPADIC_CHA-0.5, 305, -50, 255, "Channel Number", "Mean of ADC distribution [ADC values]");
00250 fSpadic_PedelPos2DMF[sid]->SetContour(99);
00251
00252 for (UInt_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
00253 obname.Form("Spadic_%d/Channel%d/Spadic%d_ch%d_ADCdistMF", sid, ch, sid, ch);
00254 obtitle.Form("ADC value distribution %2d %2d MF (%s)", sid, ch, SuDeId[sid].Data());
00255 fSpadic_ADCdistMF[sid][ch] = MakeTH1('I', obname.Data(), obtitle.Data(), 256, -256/2, 256/2, "ADC value", "Counts");
00256 }
00257 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_SHAPE_pi2D", sid, sid);
00258 obtitle.Form("Average pulse shape of spadic %d (pion) 2D (%s)", sid, SuDeId[sid].Data());
00259 fSpadic_pi_shape2D[sid] = MakeTH2('D', obname.Data(), obtitle.Data(), SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE, 300, -44, 255);
00260 fSpadic_pi_shape2D[sid]->SetContour(99);
00261
00262 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_SHAPE_pi", sid, sid);
00263 obtitle.Form("Average pulse shape of spadic %d (pion) (%s)", sid, SuDeId[sid].Data());
00264 fSpadic_pi_shape[sid] = MakeTH1('D', obname.Data(), obtitle.Data(), SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE);
00265
00266 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_SHAPEcnt_pi", sid, sid);
00267 obtitle.Form("Counts for average pulse shape of spadic %d (pion) (%s)", sid, SuDeId[sid].Data());
00268 fSpadic_pi_shapecnt[sid] = MakeTH1('D', obname.Data(), obtitle.Data(), SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE);
00269
00270 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_SHAPE_el2D", sid, sid);
00271 obtitle.Form("Average pulse shape of spadic %d (electron) 2D (%s)", sid, SuDeId[sid].Data());
00272 fSpadic_el_shape2D[sid] = MakeTH2('D', obname.Data(), obtitle.Data(), SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE, 300, -44, 255);
00273 fSpadic_el_shape2D[sid]->SetContour(99);
00274
00275 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_SHAPE_el", sid, sid);
00276 obtitle.Form("Average pulse shape of spadic %d (electron) (%s)", sid, SuDeId[sid].Data());
00277 fSpadic_el_shape[sid] = MakeTH1('D', obname.Data(), obtitle.Data(), SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE);
00278
00279 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_SHAPEcnt_el", sid, sid);
00280 obtitle.Form("Counts for average pulse shape of spadic %d (electron) (%s)", sid, SuDeId[sid].Data());
00281 fSpadic_el_shapecnt[sid] = MakeTH1('D', obname.Data(), obtitle.Data(), SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE);
00282
00283 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_PID", sid, sid);
00284 obtitle.Form("Spadic %d Particle ID (%s)", sid, SuDeId[sid].Data());
00285 fSpadic_pid[sid] = MakeTH1('I', obname.Data(), obtitle.Data(),4,-0.5,3.5);
00286 fSpadic_pid[sid]->GetXaxis()->SetBinLabel( 1,"all");
00287 fSpadic_pid[sid]->GetXaxis()->SetBinLabel( 2,"no PID");
00288 fSpadic_pid[sid]->GetXaxis()->SetBinLabel( 3,"electron");
00289 fSpadic_pid[sid]->GetXaxis()->SetBinLabel( 4,"pion");
00290
00291 S2N[sid] = new TLatex(0.1,0.8,"S/N=xy");
00292 S2N[sid]->SetTextAlign(12);
00293 S2N[sid]->SetTextSize(0.04);
00294 S2N[sid]->SetNDC();
00295 S2N[sid]->SetName(Form("S2N%dLatex",sid));
00296
00297
00298 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_Intens", sid, sid);
00299 obtitle.Form("Spadic %d intensity (%s)", sid, SuDeId[sid].Data());
00300 fSpadic_intens[sid] = MakeTH1('D', obname.Data(), obtitle.Data(), 255 * NUM_SPADIC_CHA * SPADIC_TRACE_SIZE / 300, 0, 255 * NUM_SPADIC_CHA * SPADIC_TRACE_SIZE / 6);
00301
00302 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_Intens_pi", sid, sid);
00303 obtitle.Form("Spadic %d intensity (pion) (%s)", sid, SuDeId[sid].Data());
00304 fSpadic_pi_intens[sid] = MakeTH1('D', obname.Data(), obtitle.Data(), 255 * NUM_SPADIC_CHA * SPADIC_TRACE_SIZE / 300, 0, 255 * NUM_SPADIC_CHA * SPADIC_TRACE_SIZE / 6);
00305
00306 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_Intens_el", sid, sid);
00307 obtitle.Form("Spadic %d intensity (electron) (%s)", sid, SuDeId[sid].Data());
00308 fSpadic_el_intens[sid] = MakeTH1('D', obname.Data(), obtitle.Data(), 255 * NUM_SPADIC_CHA * SPADIC_TRACE_SIZE / 300, 0, 255 * NUM_SPADIC_CHA * SPADIC_TRACE_SIZE / 6);
00309
00310 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_PadMax", sid, sid);
00311 obtitle.Form("Spadic %d pad with maximum charge (%s)", sid, SuDeId[sid].Data());
00312 fSpadic_padMax[sid] = MakeTH1('D', obname.Data(), obtitle.Data(),NUM_SPADIC_CHA, 0, NUM_SPADIC_CHA);
00313
00314 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_RecoPos", sid, sid);
00315 obtitle.Form("Spadic %d reco. position (%s)", sid, SuDeId[sid].Data());
00316 fSpadic_recoPos[sid] = MakeTH1('D', obname.Data(), obtitle.Data(),NUM_SPADIC_CHA * fPar->fPadwidth[sid], 0, NUM_SPADIC_CHA * fPar->fPadwidth[sid]);
00317
00318
00319 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_Statistics", sid, sid);
00320 obtitle.Form("Spadic %d statistics (%s)", sid, SuDeId[sid].Data());
00321 fSpadic_statistics[sid] = MakeTH1('D', obname.Data(), obtitle.Data(), 14, -0.5, 13.5);
00322 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel( 1,"all events");
00323 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel( 2,"noise");
00324 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel( 3,"above threshold");
00325 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel( 4,"in time window");
00326 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel( 5,"above intens");
00327 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel( 6,"no overflow");
00328 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel( 7,"no undershoot");
00329 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel( 8,"not a border pad");
00330 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel( 9,"not multi hit");
00331 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel( 10,"good");
00332 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel(11,"pion");
00333 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel(12,"electron");
00334 fSpadic_statistics[sid]->GetXaxis()->SetBinLabel(13,"no ID");
00335
00336 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_PRFMF", sid, sid);
00337 obtitle.Form("PRF of spadic %d MF (%s)", sid, SuDeId[sid].Data());
00338 fSpadic_PRFMF[sid] = MakeTH2('D', obname.Data(), obtitle.Data(), 400, -1.5, 1.5, 100, 0, 1);
00339 fSpadic_PRFMF[sid]->SetContour(99);
00340
00341 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_maxAmplitude", sid, sid);
00342 obtitle.Form("Spadic %d amplitude of signal with maximum charge (%s)", sid, SuDeId[sid].Data());
00343 fSpadic_maxAmplitude[sid] = MakeTH1('D', obname.Data(), obtitle.Data(),300, -44, 256);
00344
00345 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_el_maxAmplitude", sid, sid);
00346 obtitle.Form("Spadic %d electron amplitude of signal with maximum charge (%s)", sid, SuDeId[sid].Data());
00347 fSpadic_el_maxAmplitude[sid] = MakeTH1('D', obname.Data(), obtitle.Data(),300, -44, 256);
00348
00349 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_pi_maxAmplitude", sid, sid);
00350 obtitle.Form("Spadic %d pion amplitude of signal with maximum charge (%s)", sid, SuDeId[sid].Data());
00351 fSpadic_pi_maxAmplitude[sid] = MakeTH1('D', obname.Data(), obtitle.Data(),300, -44, 256);
00352
00353 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_hitTime", sid, sid);
00354 obtitle.Form("Spadic %d hit time of signal with maximum charge (%s)", sid, SuDeId[sid].Data());
00355 fSpadic_hitTime[sid] = MakeTH1('I', obname.Data(), obtitle.Data(),SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE);
00356
00357 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_el_hitTime", sid, sid);
00358 obtitle.Form("Spadic %d electron hit time of signal with maximum charge (%s)", sid, SuDeId[sid].Data());
00359 fSpadic_el_hitTime[sid] = MakeTH1('I', obname.Data(), obtitle.Data(),SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE);
00360
00361 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_pi_hitTime", sid, sid);
00362 obtitle.Form("Spadic %d pion hit time of signal with maximum charge (%s)", sid, SuDeId[sid].Data());
00363 fSpadic_pi_hitTime[sid] = MakeTH1('I', obname.Data(), obtitle.Data(),SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE);
00364
00365
00366 obname.Form("Spadic%d/Spadic%d_minAmplitudeGate", sid, sid);
00367 obtitle.Form("minimum amplitude gate %d (%s)", sid, SuDeId[sid].Data());
00368 fSpadic_minAmplitudeCond[sid] = MakeWinCond(obname.Data(), 10, 255, fSpadic_maxAmplitude[sid]->GetName());
00369
00370 obname.Form("Spadic%d/Spadic%d_minIntensityGate", sid, sid);
00371 obtitle.Form("minimum intensity gate %d (%s)", sid, SuDeId[sid].Data());
00372 fSpadic_minIntensCond[sid] = MakeWinCond(obname.Data(), 50, 255 * NUM_SPADIC_CHA * SPADIC_TRACE_SIZE, fSpadic_intens[sid]->GetName());
00373
00374 obname.Form("Spadic%d/Spadic%d_hitTimeGate", sid, sid);
00375 obtitle.Form("hit time gate %d (%s)", sid, SuDeId[sid].Data());
00376 fSpadic_hitTimeCond[sid] = MakeWinCond(obname.Data(), 12, 25, fSpadic_hitTime[sid]->GetName());
00377
00378 obname.Form("Spadic%d/Spadic%d_integWindow", sid, sid);
00379 obtitle.Form("integration window %d (%s)", sid, SuDeId[sid].Data());
00380 fSpadic_integWindow[sid] = MakeWinCond(obname.Data(), 0, SPADIC_TRACE_SIZE, fSpadic_el_shape[sid]->GetName());
00381
00382 obname.Form("Spadic%d/Spadic%d_padMaxWindow", sid, sid);
00383 obtitle.Form("used pad max %d (%s)", sid, SuDeId[sid].Data());
00384 fSpadic_padMaxWindow[sid] = MakeWinCond(obname.Data(), 1, NUM_SPADIC_CHA-1, fSpadic_padMax[sid]->GetName());
00385
00386
00387
00388 for (UInt_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
00389
00390 obname.Form("MuensterFrankfurt/Spadic_%d/Channel%d/Spadic%d_ch%d_input", sid, ch, sid, ch);
00391 obtitle.Form("MSFF Trace %2d %2d (%s)", sid, ch, SuDeId[sid].Data());
00392 fSpadic_input[sid][ch] = MakeTH1('F', obname.Data(), obtitle.Data(),
00393 SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE, "time (40ns)");
00394
00395 obname.Form("MuensterFrankfurt/Spadic_%d/Channel%d/Spadic%d_ch%d_output", sid, ch, sid, ch);
00396 obtitle.Form("MSFF Compensated %2d %2d (%s)", sid, ch, SuDeId[sid].Data());
00397 fSpadic_output[sid][ch] = MakeTH1('F', obname.Data(), obtitle.Data(),
00398 SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE, "time (40ns)");
00399 }
00400 obname.Form("MuensterFrankfurt/Alignment/Alignment_x_FiberHod_Spadic%d", sid);
00401 obtitle.Form("x Alignment Spadic %d (%s) to fiber hodoscope", sid, SuDeId[sid].Data());
00402 fFiberHod_x_alignment[sid] = MakeTH2('I', obname.Data(), obtitle.Data(), NUM_SPADIC_CHA * fPar->fPadwidth[sid], -0.5 * fPar->fPadwidth[sid], (NUM_SPADIC_CHA-0.5) * fPar->fPadwidth[sid], 70, -35, 35, SuDeId[sid].Data(),"x pos. Fiber Hodoscope");
00403 fFiberHod_x_alignment[sid]->SetContour(99);
00404
00405 obname.Form("MuensterFrankfurt/Alignment/Alignment_y_FiberHod_Spadic%d", sid);
00406 obtitle.Form("y Alignment Spadic %d (%s) to fiber hodoscope", sid, SuDeId[sid].Data());
00407 fFiberHod_y_alignment[sid] = MakeTH2('I', obname.Data(), obtitle.Data(), NUM_SPADIC_CHA * fPar->fPadwidth[sid], -0.5 * fPar->fPadwidth[sid], (NUM_SPADIC_CHA-0.5) * fPar->fPadwidth[sid], 70, -35, 35, SuDeId[sid].Data(),"y pos. Fiber Hodoscope");
00408 fFiberHod_y_alignment[sid]->SetContour(99);
00409 }
00410
00411 Int_t i = 0;
00412 for (UInt_t sid = 1; sid < MAX_SPADIC-1; sid++) {
00413 for (UInt_t sid2 = sid; sid2 < MAX_SPADIC; sid2++) {
00414 obname.Form("MuensterFrankfurt/Correlations/Correlation_Spadic%d_%d", sid, sid2);
00415 obtitle.Form("Correlations Spadic %d (%s) Spadic %d (%s)", sid, SuDeId[sid].Data(), sid2, SuDeId[sid2].Data());
00416 fSpadic_correlation[i] = MakeTH2('I', obname.Data(), obtitle.Data(), NUM_SPADIC_CHA, -0.5, NUM_SPADIC_CHA-0.5, NUM_SPADIC_CHA, -0.5, NUM_SPADIC_CHA-0.5, SuDeId[sid].Data(), SuDeId[sid2]);
00417 fSpadic_correlation[i]->SetContour(99);
00418
00419 obname.Form("MuensterFrankfurt/Alignment/Alignment_Spadic%d_%d", sid, sid2);
00420 obtitle.Form("Alignment Spadic %d (%s) Spadic %d (%s)", sid, SuDeId[sid].Data(), sid2, SuDeId[sid2].Data());
00421 fSpadic_alignment[i] = MakeTH2('I', obname.Data(), obtitle.Data(), NUM_SPADIC_CHA * fPar->fPadwidth[sid], -0.5 * fPar->fPadwidth[sid], (NUM_SPADIC_CHA-0.5) * fPar->fPadwidth[sid], NUM_SPADIC_CHA * fPar->fPadwidth[sid2], -0.5 * fPar->fPadwidth[sid2], (NUM_SPADIC_CHA-0.5) * fPar->fPadwidth[sid2], SuDeId[sid].Data(), SuDeId[sid2]);
00422 fSpadic_alignment[i]->SetContour(99);
00423
00424 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_pi_Ratio", sid, sid, sid2);
00425 obtitle.Form("Average pulse shape of spadic %d (pion) (%s)", sid, SuDeId[sid].Data());
00426 fSpadic_pi_shapeRatio[i] = MakeTH1('D', obname.Data(), obtitle.Data(), SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE, SuDeId[sid].Data(), SuDeId[sid2] );
00427
00428 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_el_Ratio", sid, sid, sid2);
00429 obtitle.Form("Average pulse shape of spadic %d (electron) (%s)", sid, SuDeId[sid].Data());
00430 fSpadic_el_shapeRatio[i] = MakeTH1('D', obname.Data(), obtitle.Data(), SPADIC_TRACE_SIZE, 0, SPADIC_TRACE_SIZE, SuDeId[sid].Data(), SuDeId[sid2]);
00431
00432 i++;
00433
00434 }
00435 }
00436
00437
00438
00439 if (GetPicture("SpadicsHitPlane")==0) {
00440 TGo4Picture* pic = new TGo4Picture("SpadicsHitPlane","Spadics Hit Plane");
00441 pic->SetDivision(2,2);
00442 pic->Pic(0, 0)->AddObject(fSpadic_MSxyHitPadplane[0]);
00443 pic->Pic(0, 1)->AddObject(fSpadic_MSxyHitPadplane[1]);
00444 pic->Pic(1, 0)->AddObject(fSpadic_MSxyHitplane[0]);
00445 pic->Pic(1, 0)->SetLogScale(2,1);
00446 pic->Pic(1, 1)->AddObject(fSpadic_MSxyHitplane[1]);
00447 pic->Pic(1, 0)->SetLogScale(2,1);
00448 AddPicture(pic,"MuensterFrankfurt");
00449 }
00450
00451 if (GetPicture("SpadicsSignal2Noise")==0) {
00452 TGo4Picture* pic = new TGo4Picture("SpadicsSignal2Noise","Signal to Noise");
00453 pic->SetDivision(1,1);
00454 pic->Pic(0, 0)->SetAutoScale(kFALSE);
00455 pic->Pic(0, 0)->SetRangeY(1, 255./20.);
00456 pic->Pic(0, 0)->AddObject(fSpadic_S2N);
00457 AddPicture(pic,"MuensterFrankfurt");
00458 }
00459
00460 if (GetPicture("SpadicsFiberHodXAlignment")==0) {
00461 TGo4Picture* pic = new TGo4Picture("SpadicsFiberHodXAlignment","X");
00462 int numy = 4;
00463 int numx = (USED_SPADIC-1) / numy;
00464 if (numx*numy < (USED_SPADIC - 1))
00465 numx++;
00466 pic->SetDivision(numy, numx);
00467
00468 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00469 int nx = (uid-1) / numy;
00470 int ny = (uid-1) % numy;
00471
00472 pic->Pic(ny, nx)->AddObject(fFiberHod_x_alignment[SpaPosMap[uid]]);
00473 }
00474 AddPicture(pic,"MuensterFrankfurt");
00475 }
00476 if (GetPicture("SpadicsFiberHodYAlignment")==0) {
00477 TGo4Picture* pic = new TGo4Picture("SpadicsFiberHodYAlignment","Y");
00478 int numy = 4;
00479 int numx = (USED_SPADIC-1) / numy;
00480 if (numx*numy < (USED_SPADIC - 1))
00481 numx++;
00482 pic->SetDivision(numy, numx);
00483
00484 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00485 int nx = (uid-1) / numy;
00486 int ny = (uid-1) % numy;
00487
00488 pic->Pic(ny, nx)->AddObject(fFiberHod_y_alignment[SpaPosMap[uid]]);
00489 }
00490 AddPicture(pic,"MuensterFrankfurt");
00491 }
00492 if (GetPicture("SpadicsPID")==0) {
00493 TGo4Picture* pic = new TGo4Picture("SpadicsPID", "Particle ID");
00494 int numy = 4;
00495 int numx = (USED_SPADIC-1) / numy;
00496 if (numx*numy < (USED_SPADIC - 1))
00497 numx++;
00498 pic->SetDivision(numy, numx);
00499
00500 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00501 int nx = (uid-1) / numy;
00502 int ny = (uid-1) % numy;
00503
00504 pic->Pic(ny, nx)->SetAutoScale(kFALSE);
00505 pic->Pic(ny, nx)->SetRangeY(1, 25000);
00506 pic->Pic(ny, nx)->AddObject(fSpadic_pid[SpaPosMap[uid]]);
00507 }
00508 AddPicture(pic,"MuensterFrankfurt");
00509 }
00510 if (GetPicture("SpadicsEfficiency")==0) {
00511 TGo4Picture* pic = new TGo4Picture("SpadicsEfficiency", "Trigger Efficiency");
00512 pic->Pic(0, 0)->AddObject(fSpadic_efficiency);
00513 AddPicture(pic,"MuensterFrankfurt");
00514 }
00515 if (GetPicture("MFmaxAmplitude")==0) {
00516 TGo4Picture* pic = new TGo4Picture("MFmaxAmplitude","max. amplitude on pad max");
00517 int numy = 4;
00518 int numx = (USED_SPADIC-1) / numy;
00519 if (numx*numy < (USED_SPADIC - 1))
00520 numx++;
00521 pic->SetDivision(numy, numx);
00522
00523 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00524 int nx = (uid-1) / numy;
00525 int ny = (uid-1) % numy;
00526
00527 pic->Pic(ny, nx)->AddObject(fSpadic_maxAmplitude[SpaPosMap[uid]]);
00528 pic->Pic(ny, nx)->AddObject(fSpadic_el_maxAmplitude[SpaPosMap[uid]]);
00529 pic->Pic(ny, nx)->AddObject(fSpadic_pi_maxAmplitude[SpaPosMap[uid]]);
00530 pic->Pic(ny, nx)->AddCondition(fSpadic_minAmplitudeCond[SpaPosMap[uid]]);
00531 }
00532 AddPicture(pic,"MuensterFrankfurt");
00533 }
00534
00535 if (GetPicture("MFhitTime")==0) {
00536 TGo4Picture* pic = new TGo4Picture("MFhitTime","hit time on pad max");
00537 int numy = 4;
00538 int numx = (USED_SPADIC-1) / numy;
00539 if (numx*numy < (USED_SPADIC - 1))
00540 numx++;
00541 pic->SetDivision(numy, numx);
00542
00543 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00544 int nx = (uid-1) / numy;
00545 int ny = (uid-1) % numy;
00546 pic->Pic(ny, nx)->AddObject(fSpadic_hitTime[SpaPosMap[uid]]);
00547 pic->Pic(ny, nx)->AddObject(fSpadic_el_hitTime[SpaPosMap[uid]]);
00548 pic->Pic(ny, nx)->AddObject(fSpadic_pi_hitTime[SpaPosMap[uid]]);
00549 pic->Pic(ny, nx)->AddCondition(fSpadic_hitTimeCond[SpaPosMap[uid]]);
00550 }
00551 AddPicture(pic,"MuensterFrankfurt");
00552 }
00553
00554 if (GetPicture("MFmaxIntensity")==0) {
00555 TGo4Picture* pic = new TGo4Picture("MFmaxIntensity","integrated intensity on 3 max pads");
00556 int numy = 4;
00557 int numx = (USED_SPADIC-1) / numy;
00558 if (numx*numy < (USED_SPADIC - 1))
00559 numx++;
00560 pic->SetDivision(numy, numx);
00561
00562 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00563 int nx = (uid-1) / numy;
00564 int ny = (uid-1) % numy;
00565
00566 pic->Pic(ny, nx)->AddObject(fSpadic_intens[SpaPosMap[uid]]);
00567 pic->Pic(ny, nx)->AddCondition(fSpadic_minIntensCond[SpaPosMap[uid]]);
00568 }
00569 AddPicture(pic,"MuensterFrankfurt");
00570 }
00571 if (GetPicture("MFFingerCorr")==0) {
00572 TGo4Picture* pic = new TGo4Picture("MFFingerCorr","Correlation with Finger Sint.");
00573 int numy = 4;
00574 int numx = (USED_SPADIC-1) / numy;
00575 if (numx*numy < (USED_SPADIC - 1))
00576 numx++;
00577 pic->SetDivision(numy, numx);
00578
00579 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00580 int nx = (uid-1) / numy;
00581 int ny = (uid-1) % numy;
00582
00583 pic->Pic(ny, nx)->AddObject(fSpadic_FingerCorr[SpaPosMap[uid]]);
00584 }
00585 AddPicture(pic,"MuensterFrankfurt");
00586 }
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599
00600
00601
00602
00603
00604
00605
00606
00607
00608
00609
00610
00611
00612
00613
00614
00615
00616
00617
00618
00619
00620
00621
00622
00623 if (GetPicture("MSummary")==0) {
00624 TGo4Picture* pic = new TGo4Picture("MSummary"," ");
00625 int numy = 4;
00626 int numx = 4;
00627 pic->SetDivision(numy, numx);
00628 int nx = 0;
00629 for (UInt_t sid = 1; sid < 9; sid++) {
00630 int ny = 0;
00631 if (sid % 2 == 1)
00632 continue;
00633 pic->Pic(ny, nx)->SetAutoScale(kFALSE);
00634 pic->Pic(ny, nx)->SetRangeY(-20, 255);
00635 pic->Pic(ny, nx)->AddObject(fSpadic_pi_shape[SpMap[sid]]);
00636 pic->Pic(ny, nx)->AddObject(fSpadic_el_shape[SpMap[sid]]);
00637 ny = 1;
00638
00639 pic->Pic(ny, nx)->SetRangeY(-20, 255);
00640 pic->Pic(ny, nx)->SetLogScale(2,1);
00641 pic->Pic(ny, nx)->AddObject(fSpadic_pi_shape2D[SpMap[sid]]);
00642 ny = 2;
00643
00644 pic->Pic(ny, nx)->SetRangeY(-20, 255);
00645 pic->Pic(ny, nx)->SetLogScale(2,1);
00646 pic->Pic(ny, nx)->AddObject(fSpadic_el_shape2D[SpMap[sid]]);
00647 ny = 3;
00648 pic->Pic(ny, nx)->AddObject(fSpadic_intens[SpMap[sid]]);
00649 pic->Pic(ny, nx)->AddObject(fSpadic_el_intens[SpMap[sid]]);
00650 pic->Pic(ny, nx)->AddObject(fSpadic_pi_intens[SpMap[sid]]);
00651 nx++;
00652 }
00653 AddPicture(pic,"MuensterFrankfurt");
00654 }
00655
00656
00657 if (GetPicture("MFShape")==0) {
00658 TGo4Picture* pic = new TGo4Picture("MFShape","Electron and Pion Pulse Shape");
00659 int numy = 4;
00660 int numx = (USED_SPADIC-1) / numy;
00661 if (numx*numy < (USED_SPADIC - 1))
00662 numx++;
00663 pic->SetDivision(numy, numx);
00664
00665 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00666 int nx = (uid-1) / numy;
00667 int ny = (uid-1) % numy;
00668
00669 pic->Pic(ny, nx)->SetAutoScale(kFALSE);
00670 pic->Pic(ny, nx)->SetRangeY(-20, 255);
00671
00672 pic->Pic(ny, nx)->AddObject(fSpadic_pi_shape[SpaPosMap[uid]]);
00673 pic->Pic(ny, nx)->AddObject(fSpadic_el_shape[SpaPosMap[uid]]);
00674 pic->Pic(ny, nx)->AddObject( S2N[SpaPosMap[uid]]);
00675 }
00676 AddPicture(pic,"MuensterFrankfurt");
00677 }
00678
00679 if (GetPicture("MFShapeRatio")==0) {
00680 const UInt_t first_MF_Spadic = 1;
00681 const UInt_t last_MF_Spadic = 12;
00682 Int_t d_MF_Spadic = last_MF_Spadic - first_MF_Spadic + 1;
00683 TGo4Picture* pic = new TGo4Picture("MFShapeRatio", "MF Signal Shape Ratio");
00684 pic->SetDivision(d_MF_Spadic, d_MF_Spadic);
00685 for (UInt_t sid = first_MF_Spadic; sid <= last_MF_Spadic; sid++) {
00686 for (UInt_t sid2 = sid; sid2 <= last_MF_Spadic; sid2++) {
00687 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic)->SetAutoScale(kFALSE);
00688 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic)->SetRangeY(-1, 3);
00689
00690 if (SpMap[sid] <= SpMap[sid2])
00691 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_el_Ratio", SpMap[sid], SpMap[sid], SpMap[sid2]);
00692 else
00693 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_el_Ratio", SpMap[sid2], SpMap[sid2], SpMap[sid]);
00694 his=GetHistogram(obname.Data());
00695 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic)->AddObject(his);
00696 if (SpMap[sid] <= SpMap[sid2])
00697 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_pi_Ratio", SpMap[sid], SpMap[sid], SpMap[sid2]);
00698 else
00699 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_pi_Ratio", SpMap[sid2], SpMap[sid2], SpMap[sid]);
00700 his=GetHistogram(obname.Data());
00701
00702 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic)->AddObject(his);
00703 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic)->AddObject(one);
00704
00705 }
00706 }
00707 AddPicture(pic,"MuensterFrankfurt");
00708 }
00709
00710
00711 if (GetPicture("MS4BotShapeRatio")==0) {
00712 const UInt_t first_MF_Spadic = 1;
00713 const UInt_t last_MF_Spadic = 4;
00714 Int_t d_MF_Spadic = last_MF_Spadic - first_MF_Spadic + 1;
00715 TGo4Picture* pic = new TGo4Picture("MS4BotShapeRatio", "MS 4 bottom Signal Shape Ratio");
00716 pic->SetDivision(d_MF_Spadic-1, d_MF_Spadic-1);
00717 for (UInt_t sid = first_MF_Spadic; sid <= last_MF_Spadic; sid++) {
00718 for (UInt_t sid2 = sid; sid2 <= last_MF_Spadic; sid2++) {
00719 if (sid == sid2) continue;
00720
00721 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic-1)->SetAutoScale(kFALSE);
00722 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic-1)->SetRangeY(-1, 3);
00723
00724 if (SbMap[sid] <= SbMap[sid2])
00725 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_el_Ratio", SbMap[sid], SbMap[sid], SbMap[sid2]);
00726 else
00727 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_el_Ratio", SbMap[sid2], SbMap[sid2], SbMap[sid]);
00728 his=GetHistogram(obname.Data());
00729 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic-1)->AddObject(his);
00730 if (SbMap[sid] <= SbMap[sid2])
00731 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_pi_Ratio", SbMap[sid], SbMap[sid], SbMap[sid2]);
00732 else
00733 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_pi_Ratio", SbMap[sid2], SbMap[sid2], SbMap[sid]);
00734 his=GetHistogram(obname.Data());
00735
00736 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic-1)->AddObject(his);
00737 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic-1)->AddObject(one);
00738
00739 }
00740 }
00741 AddPicture(pic,"MuensterFrankfurt");
00742 }
00743
00744
00745 if (GetPicture("MS4TopShapeRatio")==0) {
00746 const UInt_t first_MF_Spadic = 1;
00747 const UInt_t last_MF_Spadic = 4;
00748 Int_t d_MF_Spadic = last_MF_Spadic - first_MF_Spadic + 1;
00749 TGo4Picture* pic = new TGo4Picture("MS4TopShapeRatio", "MS 4 bottom Signal Shape Ratio");
00750 pic->SetDivision(d_MF_Spadic-1, d_MF_Spadic-1);
00751 for (UInt_t sid = first_MF_Spadic; sid <= last_MF_Spadic; sid++) {
00752 for (UInt_t sid2 = sid; sid2 <= last_MF_Spadic; sid2++) {
00753 if (sid == sid2) continue;
00754
00755 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic-1)->SetAutoScale(kFALSE);
00756 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic-1)->SetRangeY(-1, 3);
00757
00758 if (StMap[sid] <= StMap[sid2])
00759 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_el_Ratio", StMap[sid], StMap[sid], StMap[sid2]);
00760 else
00761 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_el_Ratio", StMap[sid2], StMap[sid2], StMap[sid]);
00762 his=GetHistogram(obname.Data());
00763 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic-1)->AddObject(his);
00764 if (StMap[sid] <= StMap[sid2])
00765 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_pi_Ratio", StMap[sid], StMap[sid], StMap[sid2]);
00766 else
00767 obname.Form("MuensterFrankfurt/Spadic_%d/Spadic%d_%d_SHAPE_pi_Ratio", StMap[sid2], StMap[sid2], StMap[sid]);
00768 his=GetHistogram(obname.Data());
00769
00770 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic-1)->AddObject(his);
00771 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic-1)->AddObject(one);
00772
00773 }
00774 }
00775 AddPicture(pic,"MuensterFrankfurt");
00776 }
00777
00778
00779 if (GetPicture("MFShapeP2D")==0) {
00780 TGo4Picture* pic = new TGo4Picture("MFShapeP2D","Pion Pulse Shape 2D");
00781 int numy = 4;
00782 int numx = (USED_SPADIC-1) / numy;
00783 if (numx*numy < (USED_SPADIC - 1))
00784 numx++;
00785 pic->SetDivision(numy, numx);
00786
00787 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00788 int nx = (uid-1) / numy;
00789 int ny = (uid-1) % numy;
00790
00791 pic->Pic(ny, nx)->SetAutoScale(kFALSE);
00792 pic->Pic(ny, nx)->SetRangeY(-20, 255);
00793
00794 pic->Pic(ny, nx)->AddObject(fSpadic_pi_shape2D[SpaPosMap[uid]]);
00795 }
00796 AddPicture(pic,"MuensterFrankfurt");
00797 }
00798
00799
00800 if (GetPicture("MFShapeE2D")==0) {
00801 TGo4Picture* pic = new TGo4Picture("MFShapeE2D","Electron Pulse Shape 2D");
00802 int numy = 4;
00803 int numx = (USED_SPADIC-1) / numy;
00804 if (numx*numy < (USED_SPADIC - 1))
00805 numx++;
00806 pic->SetDivision(numy, numx);
00807
00808 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00809 int nx = (uid-1) / numy;
00810 int ny = (uid-1) % numy;
00811
00812 pic->Pic(ny, nx)->SetAutoScale(kFALSE);
00813 pic->Pic(ny, nx)->SetRangeY(-20, 255);
00814
00815 pic->Pic(ny, nx)->AddObject(fSpadic_el_shape2D[SpaPosMap[uid]]);
00816 }
00817 AddPicture(pic,"MuensterFrankfurt");
00818 }
00819
00820
00821 if (GetPicture("MFSpectrum")==0) {
00822 TGo4Picture* pic = new TGo4Picture("MFSpectrum","Integrated and Clustered Intens for Electrons and Pions");
00823 int numy = 4;
00824 int numx = (USED_SPADIC-1) / numy;
00825 if (numx*numy < (USED_SPADIC - 1))
00826 numx++;
00827 pic->SetDivision(numy, numx);
00828
00829 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00830 int nx = (uid-1) / numy;
00831 int ny = (uid-1) % numy;
00832
00833 pic->Pic(ny, nx)->AddObject(fSpadic_intens [SpaPosMap[uid]]);
00834 pic->Pic(ny, nx)->AddObject(fSpadic_el_intens[SpaPosMap[uid]]);
00835 pic->Pic(ny, nx)->AddObject(fSpadic_pi_intens[SpaPosMap[uid]]);
00836 }
00837 AddPicture(pic,"MuensterFrankfurt");
00838 }
00839
00840
00841 if (GetPicture("MFInputSpadics")==0) {
00842 TGo4Picture* pic = new TGo4Picture("MFInputSpadics", "Input: MSFF Superposition of all shapes");
00843 int numy = 4;
00844 int numx = (USED_SPADIC-1) / numy;
00845 if (numx*numy < (USED_SPADIC - 1))
00846 numx++;
00847 pic->SetDivision(numy, numx);
00848
00849 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00850 int nx = (uid-1) / numy;
00851 int ny = (uid-1) % numy;
00852
00853 pic->Pic(ny, nx)->SetAutoScale(kFALSE);
00854 pic->Pic(ny, nx)->SetRangeY(-20, 255);
00855
00856 for (UInt_t ch = 0; ch < NUM_SPADIC_CHA; ch++)
00857 pic->Pic(ny, nx)->AddObject(fSpadic_input[SpaPosMap[uid]][ch]);
00858 }
00859 AddPicture(pic,"MuensterFrankfurt");
00860 }
00861
00862
00863 if (GetPicture("MFOutputSpadics")==0) {
00864 TGo4Picture* pic = new TGo4Picture("MFOutputSpadics", "Output: MSFF Superposition of all shapes");
00865 int numy = 4;
00866 int numx = (USED_SPADIC-1) / numy;
00867 if (numx*numy < (USED_SPADIC - 1))
00868 numx++;
00869 pic->SetDivision(numy, numx);
00870
00871 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00872 int nx = (uid-1) / numy;
00873 int ny = (uid-1) % numy;
00874
00875 pic->Pic(ny, nx)->SetAutoScale(kFALSE);
00876 pic->Pic(ny, nx)->SetRangeY(-20, 255);
00877
00878 for (UInt_t ch = 0; ch < NUM_SPADIC_CHA; ch++)
00879 pic->Pic(ny, nx)->AddObject(fSpadic_output[SpaPosMap[uid]][ch]);
00880 }
00881 AddPicture(pic,"MuensterFrankfurt");
00882 }
00883
00884
00885 if (GetPicture("MFSpadicsPRF")==0) {
00886 TGo4Picture* pic = new TGo4Picture("MFSpadicsPRF", "PRF for noise correction quality test MF");
00887 int numy = 4;
00888 int numx = (USED_SPADIC-1) / numy;
00889 if (numx*numy < (USED_SPADIC - 1))
00890 numx++;
00891 pic->SetDivision(numy, numx);
00892
00893 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00894 int nx = (uid-1) / numy;
00895 int ny = (uid-1) % numy;
00896 pic->Pic(ny, nx)->AddObject(fSpadic_PRFMF[SpaPosMap[uid]]);
00897 }
00898 AddPicture(pic,"MuensterFrankfurt");
00899 }
00900
00901
00902 if (GetPicture("MFSpadicsRecPos")==0) {
00903 TGo4Picture* pic = new TGo4Picture("MFSpadicsRecPos", "PRF based position reconstruction");
00904 int numy = 4;
00905 int numx = (USED_SPADIC-1) / numy;
00906 if (numx*numy < (USED_SPADIC - 1))
00907 numx++;
00908 pic->SetDivision(numy, numx);
00909
00910 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00911 int nx = (uid-1) / numy;
00912 int ny = (uid-1) % numy;
00913
00914 pic->Pic(ny, nx)->AddObject(fSpadic_recoPos[SpaPosMap[uid]]);
00915 }
00916 AddPicture(pic,"MuensterFrankfurt");
00917 }
00918
00919
00920 if (GetPicture("MFStatistics")==0) {
00921 TGo4Picture* pic = new TGo4Picture("MFStatistics", "Beam and Chamber Statistics");
00922 int numy = 4;
00923 int numx = (USED_SPADIC-1) / numy;
00924 if (numx*numy < (USED_SPADIC - 1))
00925 numx++;
00926 pic->SetDivision(numy, numx);
00927
00928 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00929 int nx = (uid-1) / numy;
00930 int ny = (uid-1) % numy;
00931
00932 pic->Pic(ny, nx)->AddObject(fSpadic_statistics[SpaPosMap[uid]]);
00933 }
00934 AddPicture(pic,"MuensterFrankfurt");
00935 }
00936
00937
00938 if (GetPicture("MFSpadicsADCdist")==0) {
00939 TGo4Picture* pic = new TGo4Picture("MFSpadicsADCdist", "Distribution of ADC values, for noise analysis");
00940 int numy = 4;
00941 int numx = (USED_SPADIC-1) / numy;
00942 if (numx*numy < (USED_SPADIC - 1))
00943 numx++;
00944 pic->SetDivision(numy, numx);
00945
00946 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00947 int nx = (uid-1) / numy;
00948 int ny = (uid-1) % numy;
00949
00950 for (UInt_t ch = 0; ch < NUM_SPADIC_CHA; ch++)
00951 pic->Pic(ny, nx)->AddObject(fSpadic_ADCdistMF[SpaPosMap[uid]][ch]);
00952 }
00953 AddPicture(pic,"MuensterFrankfurt");
00954 }
00955
00956
00957 if (GetPicture("MFSpadicsNoiseDist")==0) {
00958 TGo4Picture* pic = new TGo4Picture("MFSpadicsNoiseDist", "Noise-Distribution (RMS) of ADC distribution");
00959 int numy = 4;
00960 int numx = (USED_SPADIC-1) / numy;
00961 if (numx*numy < (USED_SPADIC - 1))
00962 numx++;
00963 pic->SetDivision(numy, numx);
00964
00965 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00966 int nx = (uid-1) / numy;
00967 int ny = (uid-1) % numy;
00968
00969 pic->Pic(ny, nx)->AddObject(fSpadic_NoiseDistMF[SpaPosMap[uid]]);
00970 }
00971 AddPicture(pic,"MuensterFrankfurt");
00972 }
00973
00974
00975 if (GetPicture("MFSpadicsNoiseDist2D")==0) {
00976 TGo4Picture* pic = new TGo4Picture("MFSpadicsNoiseDist2D", "Noise-Distribution (RMS) of ADC distribution 2D");
00977 int numy = 4;
00978 int numx = (USED_SPADIC-1) / numy;
00979 if (numx*numy < (USED_SPADIC - 1))
00980 numx++;
00981 pic->SetDivision(numy, numx);
00982
00983 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
00984 int nx = (uid-1) / numy;
00985 int ny = (uid-1) % numy;
00986
00987 pic->Pic(ny, nx)->AddObject(fSpadic_NoiseDist2DMF[SpaPosMap[uid]]);
00988 }
00989 AddPicture(pic,"MuensterFrankfurt");
00990 }
00991
00992
00993 if (GetPicture("MFSpadicsPedelPos")==0) {
00994 TGo4Picture* pic = new TGo4Picture("MFSpadicsPedelPos", "Pedestel Position (Mean) of ADC distribution");
00995 int numy = 4;
00996 int numx = (USED_SPADIC-1) / numy;
00997 if (numx*numy < (USED_SPADIC - 1))
00998 numx++;
00999 pic->SetDivision(numy, numx);
01000
01001 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
01002 int nx = (uid-1) / numy;
01003 int ny = (uid-1) % numy;
01004
01005 pic->Pic(ny, nx)->AddObject(fSpadic_PedelPosMF[SpaPosMap[uid]]);
01006 }
01007 AddPicture(pic,"MuensterFrankfurt");
01008 }
01009
01010
01011 if (GetPicture("MFSpadicsPedelPos2D")==0) {
01012 TGo4Picture* pic = new TGo4Picture("MFSpadicsPedelPos2D", "Pedestel Position (Mean) of ADC distribution 2D");
01013 int numy = 4;
01014 int numx = (USED_SPADIC-1) / numy;
01015 if (numx*numy < (USED_SPADIC - 1))
01016 numx++;
01017 pic->SetDivision(numy, numx);
01018
01019 for (UInt_t uid = 1; uid < USED_SPADIC; uid++) {
01020 int nx = (uid-1) / numy;
01021 int ny = (uid-1) % numy;
01022
01023 pic->Pic(ny, nx)->AddObject(fSpadic_PedelPos2DMF[SpaPosMap[uid]]);
01024 }
01025 AddPicture(pic,"MuensterFrankfurt");
01026 }
01027
01028 if (GetPicture("HV_LV")==0) {
01029 TGo4Picture* pic = new TGo4Picture("HV_LV", "HV left: Drift right: Anode LV left: Spadic right: Susibo");
01030
01031 int numx = 4;
01032 int numy = MSTRDNUM-1;
01033 pic->SetDivision(numy, numx);
01034
01035 for (Int_t i = 1; i < MSTRDNUM; i++) {
01036
01037 pic->Pic(0, i-1)->SetAutoScale(kFALSE);
01038 pic->Pic(0, i-1)->SetRangeY(-40, 800);
01039 pic->Pic(0, i-1)->AddObject(fEpicsMSTRD_DriftU[i]);
01040 pic->Pic(0, i-1)->AddObject(fEpicsMSTRD_DriftI[i]);
01041 pic->Pic(1, i-1)->SetAutoScale(kFALSE);
01042 pic->Pic(1, i-1)->SetRangeY(-100, 2200);
01043 pic->Pic(1, i-1)->AddObject(fEpicsMSTRD_AnodeU[i]);
01044 pic->Pic(1, i-1)->AddObject(fEpicsMSTRD_AnodeI[i]);
01045
01046 pic->Pic(2, i-1)->SetAutoScale(kFALSE);
01047 pic->Pic(2, i-1)->SetRangeY(-0.2, 6);
01048 pic->Pic(2, i-1)->AddObject(fEpicsMSTRD_SpaU[i]);
01049 pic->Pic(2, i-1)->AddObject(fEpicsMSTRD_SpaI[i]);
01050 pic->Pic(3, i-1)->SetAutoScale(kFALSE);
01051 pic->Pic(3, i-1)->SetRangeY(-0.2, 6);
01052 pic->Pic(3, i-1)->AddObject(fEpicsMSTRD_SusU[i]);
01053 pic->Pic(3, i-1)->AddObject(fEpicsMSTRD_SusI[i]);
01054 }
01055 AddPicture(pic,"MuensterEPICS");
01056 }
01057
01058 if (GetPicture("Temp")==0) {
01059 TGo4Picture* pic = new TGo4Picture("Temp", "Temp");
01060 pic->SetDivision(4, 1);
01061 pic->Pic(0, 0)->SetAutoScale(kFALSE);
01062 pic->Pic(0, 0)->SetRangeY(0, 70);
01063 pic->Pic(0, 0)->AddObject(fEpicsMSTRD_T[0]);
01064 pic->Pic(1, 0)->SetAutoScale(kFALSE);
01065 pic->Pic(1, 0)->SetRangeY(0, 70);
01066 pic->Pic(1, 0)->AddObject(fEpicsMSTRD_T[1]);
01067 pic->Pic(2, 0)->SetAutoScale(kFALSE);
01068 pic->Pic(2, 0)->SetRangeY(0, 70);
01069 pic->Pic(2, 0)->AddObject(fEpicsMSTRD_T[2]);
01070 pic->Pic(3, 0)->SetAutoScale(kFALSE);
01071 pic->Pic(3, 0)->SetRangeY(0, 70);
01072 pic->Pic(3, 0)->AddObject(fEpicsMSTRD_T[3]);
01073 AddPicture(pic,"MuensterEPICS");
01074 }
01075
01076 if (GetPicture("Beam_Monitor_HV")==0) {
01077 TGo4Picture* pic = new TGo4Picture("Beam_Monitor_HV", "Beam_Monitor_HV");
01078 pic->SetDivision(4, 2);
01079 pic->Pic(0, 0)->SetAutoScale(kFALSE);
01080 pic->Pic(0, 0)->SetRangeY(-100, 3000);
01081 pic->Pic(0, 0)->AddObject(fEpics_MonitorU[0]);
01082 pic->Pic(0, 0)->AddObject(fEpics_MonitorI[0]);
01083 pic->Pic(0, 1)->SetAutoScale(kFALSE);
01084 pic->Pic(0, 1)->SetRangeY(-100, 3000);
01085 pic->Pic(0, 1)->AddObject(fEpics_MonitorU[1]);
01086 pic->Pic(0, 1)->AddObject(fEpics_MonitorI[1]);
01087
01088 pic->Pic(1, 0)->SetAutoScale(kFALSE);
01089 pic->Pic(1, 0)->SetRangeY(-100, 3000);
01090 pic->Pic(1, 0)->AddObject(fEpics_MonitorU[2]);
01091 pic->Pic(1, 0)->AddObject(fEpics_MonitorI[2]);
01092 pic->Pic(1, 1)->SetAutoScale(kFALSE);
01093 pic->Pic(1, 1)->SetRangeY(-100, 3000);
01094 pic->Pic(1, 1)->AddObject(fEpics_MonitorU[3]);
01095 pic->Pic(1, 1)->AddObject(fEpics_MonitorI[3]);
01096
01097 pic->Pic(2, 0)->SetAutoScale(kFALSE);
01098 pic->Pic(2, 0)->SetRangeY(-100, 3000);
01099 pic->Pic(2, 0)->AddObject(fEpics_MonitorU[4]);
01100 pic->Pic(2, 0)->AddObject(fEpics_MonitorI[4]);
01101 pic->Pic(2, 1)->SetAutoScale(kFALSE);
01102 pic->Pic(2, 1)->SetRangeY(-100, 3000);
01103 pic->Pic(2, 1)->AddObject(fEpics_MonitorU[5]);
01104 pic->Pic(2, 1)->AddObject(fEpics_MonitorI[5]);
01105
01106 pic->Pic(3, 0)->SetAutoScale(kFALSE);
01107 pic->Pic(3, 0)->SetRangeY(-100, 3000);
01108 pic->Pic(3, 0)->AddObject(fEpics_MonitorU[6]);
01109 pic->Pic(3, 0)->AddObject(fEpics_MonitorI[6]);
01110 pic->Pic(3, 1)->SetAutoScale(kFALSE);
01111 pic->Pic(3, 1)->SetRangeY(-100, 3000);
01112 pic->Pic(3, 1)->AddObject(fEpics_MonitorU[7]);
01113 pic->Pic(3, 1)->AddObject(fEpics_MonitorI[7]);
01114 AddPicture(pic,"BeamMonitorEPICS");
01115 }
01116
01117 for (Int_t sl = 0; sl < MPOD00SLOT; sl++) {
01118 TString name;
01119 name.Form("MS_MPOD00_SLOT%02i",sl);
01120 if (GetPicture(name)==0) {
01121 TGo4Picture* pic = new TGo4Picture(name,name);
01122 Int_t nCol = Int_t(sqrt(MPOD00CHA) + 0.5);
01123 pic->SetDivision(nCol, nCol);
01124 Int_t iRow(0), iCol(0);
01125 for (Int_t ch = 0; ch < MPOD00CHA; ch++){
01126 if (iCol == nCol) {
01127 iRow++;
01128 iCol = 0;
01129 }
01130 pic->Pic(iRow, iCol)->SetAutoScale(kFALSE);
01131 pic->Pic(iRow, iCol)->SetRangeY(-100, 3000);
01132 pic->Pic(iRow, iCol)->AddObject(fEpicsMSMpod00_Monitor_U[sl][ch]);
01133 pic->Pic(iRow, iCol)->AddObject(fEpicsMSMpod00_Monitor_I[sl][ch]);
01134 iCol++;
01135 }
01136 AddPicture(pic,"MuensterEPICS");
01137 }
01138 }
01139
01140 for (Int_t sl = 0; sl < MPOD01SLOT; sl++) {
01141 TString name;
01142 name.Form("MS_MPOD01_SLOT%02i",sl);
01143 if (GetPicture(name)==0) {
01144 TGo4Picture* pic = new TGo4Picture(name,name);
01145 Int_t nCol = Int_t(sqrt(MPOD01CHA) + 0.5);
01146 pic->SetDivision(nCol, nCol);
01147 Int_t iRow(0), iCol(0);
01148 for (Int_t ch = 0; ch < MPOD01CHA; ch++){
01149 if (iCol == nCol) {
01150 iRow++;
01151 iCol = 0;
01152 }
01153 pic->Pic(iRow, iCol)->SetAutoScale(kFALSE);
01154 pic->Pic(iRow, iCol)->SetRangeY(-100, 3000);
01155 pic->Pic(iRow, iCol)->AddObject(fEpicsMSMpod01_Monitor_U[sl][ch]);
01156 pic->Pic(iRow, iCol)->AddObject(fEpicsMSMpod01_Monitor_I[sl][ch]);
01157 iCol++;
01158 }
01159 AddPicture(pic,"MuensterEPICS");
01160 }
01161 }
01162
01163 if (GetPicture("RICH_HV")==0) {
01164 TGo4Picture* pic = new TGo4Picture("RICH_HV", "HV on MAPMTs");
01165
01166
01167 int mapx [RICHNUM] = { 0, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3 };
01168 int mapy [RICHNUM] = { 0, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3 };
01169 int numx = 4;
01170 int numy = 4;
01171 pic->SetDivision(numy, numx);
01172 int posx = 0;
01173 int posy = 0;
01174
01175 for (Int_t i = 1; i < RICHNUM; i++) {
01176 posx = mapx[i];
01177 posy = mapy[i];
01178
01179
01180
01181
01182 pic->Pic(posy, posx)->SetAutoScale(kFALSE);
01183 pic->Pic(posy, posx)->SetRangeY(-100, 2500);
01184 pic->Pic(posy, posx)->AddObject(fEpics_RichU[i]);
01185 pic->Pic(posy, posx)->AddObject(fEpics_RichI[i]);
01186 }
01187 AddPicture(pic,"BeamMonitorEPICS");
01188 }
01189
01190
01191
01192
01193
01194
01195
01196 if (GetPicture("MFCorrelations")==0) {
01197 const UInt_t first_MF_Spadic = 1;
01198 const UInt_t last_MF_Spadic = 12;
01199 Int_t d_MF_Spadic = last_MF_Spadic - first_MF_Spadic + 1;
01200 TGo4Picture* pic = new TGo4Picture("MFCorrelations", "MF Beam and Chamber Correlation");
01201 pic->SetDivision(d_MF_Spadic, d_MF_Spadic);
01202 for (UInt_t sid = first_MF_Spadic; sid <= last_MF_Spadic; sid++) {
01203 for (UInt_t sid2 = sid; sid2 <= last_MF_Spadic; sid2++) {
01204 if (SpMap[sid] <= SpMap[sid2])
01205 obname.Form("MuensterFrankfurt/Correlations/Correlation_Spadic%d_%d", SpMap[sid], SpMap[sid2]);
01206 else
01207 obname.Form("MuensterFrankfurt/Correlations/Correlation_Spadic%d_%d", SpMap[sid2], SpMap[sid]);
01208 his=GetHistogram(obname.Data());
01209 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic)->AddObject(his, "colz");
01210
01211
01212 }
01213 }
01214 AddPicture(pic,"MuensterFrankfurt");
01215 }
01216
01217 if (GetPicture("MFAlignment")==0) {
01218 const UInt_t first_MF_Spadic = 1;
01219 const UInt_t last_MF_Spadic = 12;
01220 Int_t d_MF_Spadic = last_MF_Spadic - first_MF_Spadic + 1;
01221 TGo4Picture* pic = new TGo4Picture("MFAlignment", "MF Beam and Chamber Alignment");
01222 pic->SetDivision(d_MF_Spadic, d_MF_Spadic);
01223 for (UInt_t sid = first_MF_Spadic; sid <= last_MF_Spadic; sid++) {
01224 for (UInt_t sid2 = sid; sid2 <= last_MF_Spadic; sid2++) {
01225 if (SpMap[sid] <= SpMap[sid2])
01226 obname.Form("MuensterFrankfurt/Alignment/Alignment_Spadic%d_%d", SpMap[sid], SpMap[sid2]);
01227 else
01228 obname.Form("MuensterFrankfurt/Alignment/Alignment_Spadic%d_%d", SpMap[sid2], SpMap[sid]);
01229 his=GetHistogram(obname.Data());
01230 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic)->AddObject(his, "colz");
01231 pic->Pic(sid-first_MF_Spadic, sid2-first_MF_Spadic)->SetLogScale(2,1);
01232
01233 }
01234 }
01235 AddPicture(pic,"MuensterFrankfurt");
01236 }
01237
01238
01239 const UInt_t first_M_Spadic = 1;
01240 const UInt_t last_M_Spadic = 8;
01241 Int_t d_M_Spadic = last_M_Spadic - first_M_Spadic + 1;
01242 if (GetPicture("MS8Correlations")==0) {
01243 TGo4Picture* pic = new TGo4Picture("MS8Correlations", "MS 8 Beam and Chamber Correlation");
01244 pic->SetDivision(d_M_Spadic, d_M_Spadic);
01245 for (UInt_t sid = first_M_Spadic; sid <= last_M_Spadic; sid++) {
01246 for (UInt_t sid2 = sid; sid2 <= last_M_Spadic; sid2++) {
01247 if (SpMap[sid] <= SpMap[sid2])
01248 obname.Form("MuensterFrankfurt/Correlations/Correlation_Spadic%d_%d", SpMap[sid], SpMap[sid2]);
01249 else
01250 obname.Form("MuensterFrankfurt/Correlations/Correlation_Spadic%d_%d", SpMap[sid2], SpMap[sid]);
01251 his=GetHistogram(obname.Data());
01252 pic->Pic(sid-first_M_Spadic, sid2-first_M_Spadic)->AddObject(his, "colz");
01253
01254
01255 }
01256 }
01257 AddPicture(pic,"MuensterFrankfurt");
01258 }
01259
01260
01261 if (GetPicture("MS336Correlations")==0) {
01262 const UInt_t first_M336_Spadic = 1;
01263 const UInt_t last_M336_Spadic = 4;
01264 Int_t d_M336_Spadic = last_M336_Spadic - first_M336_Spadic + 1;
01265 TGo4Picture* pic = new TGo4Picture("MS336Correlations", "MS 336 Beam and Chamber Correlation");
01266 pic->SetDivision(d_M336_Spadic, d_M336_Spadic);
01267 for (UInt_t sid = first_M336_Spadic; sid <= last_M336_Spadic; sid++) {
01268 for (UInt_t sid2 = sid; sid2 <= last_M336_Spadic; sid2++) {
01269 if (SpMap[sid] <= SpMap[sid2])
01270 obname.Form("MuensterFrankfurt/Correlations/Correlation_Spadic%d_%d", SpMap[sid], SpMap[sid2]);
01271 else
01272 obname.Form("MuensterFrankfurt/Correlations/Correlation_Spadic%d_%d", SpMap[sid2], SpMap[sid]);
01273 his=GetHistogram(obname.Data());
01274 pic->Pic(sid-first_M336_Spadic, sid2-first_M336_Spadic)->AddObject(his, "colz");
01275
01276
01277 }
01278 }
01279 AddPicture(pic,"MuensterFrankfurt");
01280 }
01281
01282
01283 if (GetPicture("MS444Correlations")==0) {
01284 const UInt_t first_M444_Spadic = 5;
01285 const UInt_t last_M444_Spadic = 8;
01286 Int_t d_M444_Spadic = last_M444_Spadic - first_M444_Spadic + 1;
01287 TGo4Picture* pic = new TGo4Picture("MS444Correlations", "MS 444 Beam and Chamber Correlation");
01288 pic->SetDivision(d_M444_Spadic, d_M444_Spadic);
01289 for (UInt_t sid = first_M444_Spadic; sid <= last_M444_Spadic; sid++) {
01290 for (UInt_t sid2 = sid; sid2 <= last_M444_Spadic; sid2++) {
01291 if (SpMap[sid] <= SpMap[sid2])
01292 obname.Form("MuensterFrankfurt/Correlations/Correlation_Spadic%d_%d", SpMap[sid], SpMap[sid2]);
01293 else
01294 obname.Form("MuensterFrankfurt/Correlations/Correlation_Spadic%d_%d", SpMap[sid2], SpMap[sid]);
01295 his=GetHistogram(obname.Data());
01296 pic->Pic(sid-first_M444_Spadic, sid2-first_M444_Spadic)->AddObject(his, "colz");
01297
01298
01299 }
01300 }
01301 AddPicture(pic,"MuensterFrankfurt");
01302 }
01303
01304
01305 if (GetPicture("FCorrelations")==0) {
01306 const UInt_t first_F_Spadic = 9;
01307 const UInt_t last_F_Spadic = 12;
01308 Int_t d_F_Spadic = last_F_Spadic - first_F_Spadic + 1;
01309 TGo4Picture* pic = new TGo4Picture("FCorrelations", "F Beam and Chamber Correlation");
01310 pic->SetDivision(d_F_Spadic, d_F_Spadic);
01311 for (UInt_t sid = first_F_Spadic; sid <= last_F_Spadic; sid++) {
01312 for (UInt_t sid2 = sid; sid2 <= last_F_Spadic; sid2++) {
01313 if (SpMap[sid] <= SpMap[sid2])
01314 obname.Form("MuensterFrankfurt/Correlations/Correlation_Spadic%d_%d", SpMap[sid], SpMap[sid2]);
01315 else
01316 obname.Form("MuensterFrankfurt/Correlations/Correlation_Spadic%d_%d", SpMap[sid2], SpMap[sid]);
01317 his=GetHistogram(obname.Data());
01318 pic->Pic(sid-first_F_Spadic, sid2-first_F_Spadic)->AddObject(his, "colz");
01319
01320
01321 }
01322 }
01323 AddPicture(pic,"MuensterFrankfurt");
01324 }
01325
01326 if (GetPicture("MFSpadicsBeamProfile2D")==0) {
01327 TGo4Picture* pic = new TGo4Picture("MFSpadicsBeamProfile2D", "MF Spadics Beam Profile 2D");
01328
01329 pic->SetDivision(2, 2);
01330
01331 for (UInt_t uid = 0; uid < 4; uid++) {
01332 int nx = (uid) / 2;
01333 int ny = (uid) % 2;
01334
01335 pic->Pic(ny, nx)->AddObject(fSpadic_beamProfil[uid]);
01336 }
01337 AddPicture(pic,"MuensterFrankfurt");
01338 }
01339
01340 if (GetPicture("MFSpadicsDeltaPos2D")==0) {
01341 TGo4Picture* pic = new TGo4Picture("MFSpadicsDeltaPos2D", "MF Spadics delta pos. 2D");
01342
01343 pic->SetDivision(2, 2);
01344
01345 for (UInt_t uid = 0; uid < 4; uid++) {
01346 int nx = (uid) / 2;
01347 int ny = (uid) % 2;
01348
01349 pic->Pic(ny, nx)->AddObject(fSpadic_deltaPos[uid]);
01350 }
01351 AddPicture(pic,"MuensterFrankfurt");
01352 }
01353 printf("**** TTRDMuensterFrankfurtProc: Histograms created \n");
01354 fflush ( stdout);
01355
01356
01357
01358 }
01359
01360 TTRDMuensterFrankfurtProc::~TTRDMuensterFrankfurtProc()
01361 {
01362 }
01363
01364 void TTRDMuensterFrankfurtProc::InitEvent(TGo4EventElement* outevnt)
01365 {
01366
01367
01368
01369 if(fSpadicInputEvent==0)
01370 {
01371 TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(GetInputEvent());
01372 if(btevent)
01373 {
01374 fCrateInputEvent=dynamic_cast<TMbsCrateEvent*>(btevent->GetSubEvent("MBSCRATE"));
01375 fSpadicInputEvent=dynamic_cast<TSpadicEvent*>(btevent->GetSubEvent("SPADIC"));
01376 fEpicsInputEvent=dynamic_cast<TEpicsEvent*>(btevent->GetSubEvent("EPICS"));
01377 }
01378 else
01379 {
01380 fSpadicInputEvent=dynamic_cast<TSpadicEvent*>(GetInputEvent());
01381
01382 }
01383 if(fSpadicInputEvent==0) {
01384 GO4_STOP_ANALYSIS_MESSAGE("**** TTRDMuensterFrankfurtProc: Fatal error: input event is not a TSpadicEvent!!! STOP GO4");
01385 }
01386 if(fEpicsInputEvent==0) {
01387 Message(2,"**** TBeamMonitorProc: could not find TEpicsEvent!");
01388 }
01389
01390 }
01391
01392
01393
01394
01395 if(fOutputEvent==0)
01396 {
01397 TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(outevnt);
01398 if(btevent)
01399 {
01400 fOutputEvent=dynamic_cast<TTRDMuensterFrankfurtEvent*>(btevent->GetSubEvent("TRDMSFFM"));
01401 fHodo1 = dynamic_cast<TFiberHodEvent*>(btevent->GetSubEvent("Hodo1"));
01402 fBeamEvent = dynamic_cast<TBeamMonitorEvent*>(btevent->GetSubEvent("BEAM"));
01403 }
01404 else
01405 {
01406 fOutputEvent= dynamic_cast<TTRDMuensterFrankfurtEvent*>(outevnt);
01407 }
01408 if(fOutputEvent==0) {
01409 GO4_STOP_ANALYSIS_MESSAGE("**** TTRDMuensterFrankfurtProc: Fatal error: output event is not a TTRDMuensterFrankfurtEvent!!! STOP GO4");
01410 }
01411 }
01412 }
01413
01414 void TTRDMuensterFrankfurtProc::FinalizeEvent()
01415 {
01416
01417
01418
01419
01420 Bool_t ChMap[MAX_SPADIC];
01421
01422 ChMap[SpMap[2]] = true;
01423 ChMap[SpMap[4]] = true;
01424 ChMap[SpMap[6]] = true;
01425 ChMap[SpMap[8]] = true;
01426
01427 ChMap[SpMap[1]] = false;
01428 ChMap[SpMap[3]] = false;
01429 ChMap[SpMap[5]] = false;
01430 ChMap[SpMap[7]] = false;
01431
01432 ChMap[SpMap[9]] = false;
01433 ChMap[SpMap[10]] = false;
01434 ChMap[SpMap[11]] = false;
01435 ChMap[SpMap[12]] = true;
01436
01437 Int_t PID[MAX_SPADIC] = {8};
01438
01439 if(fEpicsInputEvent && fEpicsInputEvent->IsValid())
01440 {
01441
01442 TString varName;
01443 for (Int_t sl = 0; sl < MPOD00SLOT; sl++) {
01444 for (Int_t ch = 0; ch < MPOD00CHA; ch++) {
01445
01446 varName.Form("CBM:TRD:WIENLV_U%i%02i:vmon",sl,ch);
01447 fEpicsMSMpod00_U[sl][ch] = fEpicsInputEvent->GetDouble(varName.Data());
01448 varName.Form("CBM:TRD:WIENLV_U%i%02i:imon",sl,ch);
01449 fEpicsMSMpod00_I[sl][ch] = fEpicsInputEvent->GetDouble(varName.Data());
01450 }
01451 }
01452 for (Int_t sl = 0; sl < MPOD01SLOT; sl++) {
01453 for (Int_t ch = 0; ch < MPOD01CHA; ch++) {
01454
01455 varName.Form("CBM:TRD:ISEGHV_U%i%02i:vmon",sl,ch);
01456 fEpicsMSMpod01_U[sl][ch] = fEpicsInputEvent->GetDouble(varName.Data());
01457 varName.Form("CBM:TRD:ISEGHV_U%i%02i:imon",sl,ch);
01458 fEpicsMSMpod01_I[sl][ch] = fEpicsInputEvent->GetDouble(varName.Data());
01459 }
01460 }
01461 fEpicsMSTRD_Drift_U[1] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U102:vmon");
01462 fEpicsMSTRD_Drift_I[1] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U102:imon");
01463 fEpicsMSTRD_Anode_U[1] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U202:vmon");
01464 fEpicsMSTRD_Anode_I[1] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U202:imon");
01465 fEpicsMSTRD_Drift_U[2] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U103:vmon");
01466 fEpicsMSTRD_Drift_I[2] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U103:imon");
01467 fEpicsMSTRD_Anode_U[2] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U203:vmon");
01468 fEpicsMSTRD_Anode_I[2] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U203:imon");
01469 fEpicsMSTRD_Drift_U[3] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U104:vmon");
01470 fEpicsMSTRD_Drift_I[3] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U104:imon");
01471 fEpicsMSTRD_Anode_U[3] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U204:vmon");
01472 fEpicsMSTRD_Anode_I[3] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U204:imon");
01473 fEpicsMSTRD_Drift_U[4] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U105:vmon");
01474 fEpicsMSTRD_Drift_I[4] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U105:imon");
01475 fEpicsMSTRD_Anode_U[4] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U205:vmon");
01476 fEpicsMSTRD_Anode_I[4] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U205:imon");
01477 fEpicsMSTRD_Temp[0] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U0:temp");
01478 fEpicsMSTRD_Temp[1] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U100:temp");
01479 fEpicsMSTRD_Temp[2] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U200:temp");
01480 fEpicsMSTRD_Temp[3] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U300:temp");
01481 fEpicsMSTRD_Sus_U[1] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U1:vmon");
01482 fEpicsMSTRD_Sus_I[1] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U1:imon");
01483 fEpicsMSTRD_Spa_U[1] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U0:vmon");
01484 fEpicsMSTRD_Spa_I[1] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U0:imon");
01485 fEpicsMSTRD_Sus_U[2] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U3:vmon");
01486 fEpicsMSTRD_Sus_I[2] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U3:imon");
01487 fEpicsMSTRD_Spa_U[2] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U2:vmon");
01488 fEpicsMSTRD_Spa_I[2] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U2:imon");
01489 fEpicsMSTRD_Sus_U[3] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U5:vmon");
01490 fEpicsMSTRD_Sus_I[3] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U5:imon");
01491 fEpicsMSTRD_Spa_U[3] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U4:vmon");
01492 fEpicsMSTRD_Spa_I[3] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U4:imon");
01493 fEpicsMSTRD_Sus_U[4] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U7:vmon");
01494 fEpicsMSTRD_Sus_I[4] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U7:imon");
01495 fEpicsMSTRD_Spa_U[4] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U6:vmon");
01496 fEpicsMSTRD_Spa_I[4] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U6:imon");
01497
01498 fEpics_Monitor_U[0] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U300:vmon");
01499 fEpics_Monitor_I[0] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U300:imon");
01500 fEpics_Monitor_U[1] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U301:vmon");
01501 fEpics_Monitor_I[1] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U301:imon");
01502 fEpics_Monitor_U[2] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U302:vmon");
01503 fEpics_Monitor_I[2] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U302:imon");
01504 fEpics_Monitor_U[3] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U303:vmon");
01505 fEpics_Monitor_I[3] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U303:imon");
01506 fEpics_Monitor_U[4] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U304:vmon");
01507 fEpics_Monitor_I[4] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U304:imon");
01508 fEpics_Monitor_U[5] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U305:vmon");
01509 fEpics_Monitor_I[5] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U305:imon");
01510 fEpics_Monitor_U[6] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U306:vmon");
01511 fEpics_Monitor_I[6] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U306:imon");
01512 fEpics_Monitor_U[7] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U307:vmon");
01513 fEpics_Monitor_I[7] = fEpicsInputEvent->GetDouble("CBM:TRD:ISEGHV_U307:imon");
01514
01515 fEpics_Rich_U[1] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U0:vmon");
01516 fEpics_Rich_I[1] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U0:imon");
01517 fEpics_Rich_U[2] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U1:vmon");
01518 fEpics_Rich_I[2] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U1:imon");
01519 fEpics_Rich_U[3] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U2:vmon");
01520 fEpics_Rich_I[3] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U2:imon");
01521 fEpics_Rich_U[4] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U3:vmon");
01522 fEpics_Rich_I[4] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U3:imon");
01523 fEpics_Rich_U[5] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U4:vmon");
01524 fEpics_Rich_I[5] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U4:imon");
01525 fEpics_Rich_U[6] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U5:vmon");
01526 fEpics_Rich_I[6] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U5:imon");
01527 fEpics_Rich_U[7] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U6:vmon");
01528 fEpics_Rich_I[7] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U6:imon");
01529 fEpics_Rich_U[8] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U7:vmon");
01530 fEpics_Rich_I[8] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U7:imon");
01531
01532 fEpics_Rich_U[9] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U8:vmon");
01533 fEpics_Rich_I[9] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U8:imon");
01534 fEpics_Rich_U[10] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U9:vmon");
01535 fEpics_Rich_I[10] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U9:imon");
01536 fEpics_Rich_U[11] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U10:vmon");
01537 fEpics_Rich_I[11] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U10:imon");
01538 fEpics_Rich_U[12] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U11:vmon");
01539 fEpics_Rich_I[12] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U11:imon");
01540 fEpics_Rich_U[13] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U12:vmon");
01541 fEpics_Rich_I[13] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U12:imon");
01542 fEpics_Rich_U[14] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U13:vmon");
01543 fEpics_Rich_I[14] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U13:imon");
01544 fEpics_Rich_U[15] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U14:vmon");
01545 fEpics_Rich_I[15] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U14:imon");
01546 fEpics_Rich_U[16] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U15:vmon");
01547 fEpics_Rich_I[16] = fEpicsInputEvent->GetDouble("CBM:GIE:ISEGHV_U15:imon");
01548
01549
01550
01551 }
01552
01553 if(fEpicsInputEvent ){
01554 for (Int_t sl = 0; sl < MPOD00SLOT; sl++) {
01555 for (Int_t ch = 0; ch < MPOD00CHA; ch++) {
01556 Int_t nbin = fEpicsMSMpod00_Monitor_U[sl][ch]->GetNbinsX();
01557 for (Int_t ibin = 1; ibin <= nbin; ibin++){
01558 if (ibin < nbin) {
01559 fEpicsMSMpod00_Monitor_U[sl][ch]->SetBinContent(ibin,fEpicsMSMpod00_Monitor_U[sl][ch]->GetBinContent(ibin + 1));
01560 fEpicsMSMpod00_Monitor_I[sl][ch]->SetBinContent(ibin,fEpicsMSMpod00_Monitor_I[sl][ch]->GetBinContent(ibin + 1));
01561 }
01562 else {
01563 fEpicsMSMpod00_Monitor_U[sl][ch]->SetBinContent(ibin,fEpicsMSMpod00_U[sl][ch]);
01564 fEpicsMSMpod00_Monitor_I[sl][ch]->SetBinContent(ibin,fEpicsMSMpod00_I[sl][ch]);
01565 }
01566 }
01567 }
01568 }
01569
01570 for (Int_t sl = 0; sl < MPOD01SLOT; sl++) {
01571 for (Int_t ch = 0; ch < MPOD01CHA; ch++) {
01572 Int_t nbin = fEpicsMSMpod01_Monitor_U[sl][ch]->GetNbinsX();
01573 for (Int_t ibin = 1; ibin <= nbin; ibin++){
01574 if (ibin < nbin) {
01575 fEpicsMSMpod01_Monitor_U[sl][ch]->SetBinContent(ibin,fEpicsMSMpod01_Monitor_U[sl][ch]->GetBinContent(ibin + 1));
01576 fEpicsMSMpod01_Monitor_I[sl][ch]->SetBinContent(ibin,fEpicsMSMpod01_Monitor_I[sl][ch]->GetBinContent(ibin + 1));
01577 }
01578 else {
01579 fEpicsMSMpod01_Monitor_U[sl][ch]->SetBinContent(ibin,fEpicsMSMpod01_U[sl][ch]);
01580 fEpicsMSMpod01_Monitor_I[sl][ch]->SetBinContent(ibin,fEpicsMSMpod01_I[sl][ch] * 1e9 );
01581 }
01582 }
01583 }
01584 }
01585
01586 for (Int_t i = 0; i < 8; i++) {
01587 Int_t nbin = fEpics_MonitorU[i]->GetNbinsX();
01588 for (Int_t ibin = 1; ibin <= nbin; ibin++){
01589 if (ibin < nbin) {
01590 fEpics_MonitorU[i]->SetBinContent(ibin, fEpics_MonitorU[i]->GetBinContent(ibin + 1));
01591 fEpics_MonitorI[i]->SetBinContent(ibin, fEpics_MonitorI[i]->GetBinContent(ibin + 1));
01592 }
01593 else {
01594 fEpics_MonitorU[i]->SetBinContent(ibin, fEpics_Monitor_U[i]);
01595 if (fPar->show_currentSpikes)
01596 fEpics_MonitorI[i]->SetBinContent(ibin, fEpics_Monitor_I[i] * 1e9 );
01597 else
01598 if (fEpics_Monitor_I[i] < 0.5)
01599 fEpics_MonitorI[i]->SetBinContent(ibin, fEpics_Monitor_I[i] * 1e9 );
01600 else
01601 fEpics_MonitorI[i]->SetBinContent(ibin, fEpics_MonitorI[i]->GetBinContent(ibin - 1) );
01602 }
01603 }
01604 }
01605
01606 for (Int_t mstrd = 1; mstrd < MSTRDNUM; mstrd++) {
01607 Int_t nbin = fEpicsMSTRD_AnodeU[mstrd]->GetNbinsX();
01608 for (Int_t ibin = 1; ibin <= nbin; ibin++){
01609 if (ibin < nbin) {
01610 fEpicsMSTRD_DriftU[mstrd]->SetBinContent(ibin, fEpicsMSTRD_DriftU[mstrd]->GetBinContent(ibin + 1));
01611 fEpicsMSTRD_DriftI[mstrd]->SetBinContent(ibin, fEpicsMSTRD_DriftI[mstrd]->GetBinContent(ibin + 1));
01612 fEpicsMSTRD_AnodeU[mstrd]->SetBinContent(ibin, fEpicsMSTRD_AnodeU[mstrd]->GetBinContent(ibin + 1));
01613 fEpicsMSTRD_AnodeI[mstrd]->SetBinContent(ibin, fEpicsMSTRD_AnodeI[mstrd]->GetBinContent(ibin + 1));
01614 fEpicsMSTRD_SpaU[mstrd]->SetBinContent(ibin, fEpicsMSTRD_SpaU[mstrd]->GetBinContent(ibin + 1));
01615 fEpicsMSTRD_SpaI[mstrd]->SetBinContent(ibin, fEpicsMSTRD_SpaI[mstrd]->GetBinContent(ibin + 1));
01616 fEpicsMSTRD_SusU[mstrd]->SetBinContent(ibin, fEpicsMSTRD_SusU[mstrd]->GetBinContent(ibin + 1));
01617 fEpicsMSTRD_SusI[mstrd]->SetBinContent(ibin, fEpicsMSTRD_SusI[mstrd]->GetBinContent(ibin + 1));
01618 if (mstrd == 1){
01619 fEpicsMSTRD_T[0]->SetBinContent(ibin, fEpicsMSTRD_T[0]->GetBinContent(ibin + 1));
01620 fEpicsMSTRD_T[1]->SetBinContent(ibin, fEpicsMSTRD_T[1]->GetBinContent(ibin + 1));
01621 fEpicsMSTRD_T[2]->SetBinContent(ibin, fEpicsMSTRD_T[2]->GetBinContent(ibin + 1));
01622 fEpicsMSTRD_T[3]->SetBinContent(ibin, fEpicsMSTRD_T[3]->GetBinContent(ibin + 1));
01623 }
01624 }
01625 else {
01626
01627 fEpicsMSTRD_DriftU[mstrd]->SetBinContent(ibin, fEpicsMSTRD_Drift_U[mstrd]);
01628 if (fPar->show_currentSpikes)
01629 fEpicsMSTRD_DriftI[mstrd]->SetBinContent(ibin, fEpicsMSTRD_Drift_I[mstrd] * 1e9);
01630 else
01631 if (fEpicsMSTRD_Drift_I[mstrd] < 0.5)
01632 fEpicsMSTRD_DriftI[mstrd]->SetBinContent(ibin, fEpicsMSTRD_Drift_I[mstrd] * 1e9);
01633
01634 fEpicsMSTRD_AnodeU[mstrd]->SetBinContent(ibin, fEpicsMSTRD_Anode_U[mstrd]);
01635 if (fPar->show_currentSpikes)
01636 fEpicsMSTRD_AnodeI[mstrd]->SetBinContent(ibin, fEpicsMSTRD_Anode_I[mstrd] * 1e9);
01637 else
01638 if (fEpicsMSTRD_Anode_I[mstrd] < 0.5)
01639 fEpicsMSTRD_AnodeI[mstrd]->SetBinContent(ibin, fEpicsMSTRD_Anode_I[mstrd] * 1e9);
01640
01641 fEpicsMSTRD_SpaU[mstrd]->SetBinContent(ibin, fEpicsMSTRD_Spa_U[mstrd]);
01642 fEpicsMSTRD_SpaI[mstrd]->SetBinContent(ibin, fEpicsMSTRD_Spa_I[mstrd] * 10);
01643 fEpicsMSTRD_SusU[mstrd]->SetBinContent(ibin, fEpicsMSTRD_Sus_U[mstrd]);
01644 fEpicsMSTRD_SusI[mstrd]->SetBinContent(ibin, fEpicsMSTRD_Sus_I[mstrd]);
01645 if (mstrd == 1){
01646 fEpicsMSTRD_T[0]->SetBinContent(ibin, fEpicsMSTRD_Temp[0]);
01647 fEpicsMSTRD_T[1]->SetBinContent(ibin, fEpicsMSTRD_Temp[1]);
01648 fEpicsMSTRD_T[2]->SetBinContent(ibin, fEpicsMSTRD_Temp[2]);
01649 fEpicsMSTRD_T[3]->SetBinContent(ibin, fEpicsMSTRD_Temp[3]);
01650 }
01651 }
01652 }
01653 }
01654
01655
01656 for (Int_t irich = 1; irich < RICHNUM; irich++) {
01657 Int_t nbin = fEpics_RichU[irich]->GetNbinsX();
01658 for (Int_t ibin = 1; ibin <= nbin; ibin++){
01659 if (ibin < nbin) {
01660 fEpics_RichU[irich]->SetBinContent(ibin, fEpics_RichU[irich]->GetBinContent(ibin + 1));
01661 fEpics_RichI[irich]->SetBinContent(ibin, fEpics_RichI[irich]->GetBinContent(ibin + 1));
01662 } else {
01663
01664 fEpics_RichU[irich]->SetBinContent(ibin, fEpics_Rich_U[irich]);
01665 if (fPar->show_currentSpikes)
01666 fEpics_RichI[irich]->SetBinContent(ibin, fEpics_Rich_I[irich] * 1e7);
01667 else
01668 if (fEpics_Rich_I[irich] < 0.5)
01669 fEpics_RichI[irich]->SetBinContent(ibin, fEpics_Rich_I[irich] * 1e7);
01670 }
01671 }
01672 }
01673 }
01674
01675
01676 if(fCrateInputEvent && fCrateInputEvent->IsPulser()) {
01677
01678
01679
01680
01681 return;
01682 }
01683
01684
01685 if(fBeamEvent) {
01686
01687 Int_t xNrFiberHodCluster(0);
01688 Int_t yNrFiberHodCluster(0);
01689 Double_t xPosFiberHod(0);
01690 Double_t yPosFiberHod(0);
01691 if (fHodo1 && (fHodo1->NumHits()>0)) {
01692 xNrFiberHodCluster = fHodo1->NumHits();
01693 yNrFiberHodCluster = fHodo1->NumHits();
01694 xPosFiberHod = fHodo1->Hit(0).X;
01695 yPosFiberHod = fHodo1->Hit(0).Y;
01696 }
01697 else {
01698
01699 }
01700 fSpadic_efficiency->Fill(0);
01701 Double_t rawData[NUM_SPADIC_CHA][SPADIC_TRACE_SIZE] = {{0.0}};
01702 Double_t cleanData[NUM_SPADIC_CHA][SPADIC_TRACE_SIZE] = {{0.0}};
01703 Double_t intensCh[NUM_SPADIC_CHA] = {0};
01704
01705 Int_t maxChCorr[MAX_SPADIC] = {-1};
01706 Double_t dxPosCorr[MAX_SPADIC] = {0};
01707 Bool_t overnflowtingTB[NUM_SPADIC_CHA][SPADIC_TRACE_SIZE] = {{false}};
01708 Double_t intens[MAX_SPADIC] = {0};
01709 Double_t rowIntens[MAX_SPADIC] = {0};
01710
01711 for (UInt_t sid = 1; sid < MAX_SPADIC; sid++)
01712 {
01713 TSpadicData* theSpadic=dynamic_cast<TSpadicData*>(fSpadicInputEvent->getEventElement(sid));
01714 if(theSpadic==0) continue;
01715 if(!theSpadic->IsValid()) continue;
01716
01717 if (!fBeamEvent->fIsElectron && !fBeamEvent->fIsPion)
01718 PID[sid] = 0;
01719 if (fBeamEvent->fIsPion)
01720 PID[sid] = -1;
01721 if (fBeamEvent->fIsElectron)
01722 PID[sid] = 1;
01723
01724 if (fPar->reSortChannel){
01725 if (fPar->ChMap[sid]) {
01726 Double_t tempSpadic[NUM_SPADIC_CHA][SPADIC_TRACE_SIZE];
01727 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
01728 for (unsigned bin = 0; bin < SPADIC_TRACE_SIZE; bin++) {
01729 tempSpadic[ch][bin] = theSpadic->fSpadicCompensated[ch][bin];
01730 }
01731 }
01732 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
01733 for (unsigned bin = 0; bin < SPADIC_TRACE_SIZE; bin++) {
01734
01735 theSpadic->fSpadicCompensated[ch][bin] = tempSpadic[UInt_t((NUM_SPADIC_CHA-1)-ch)][bin];
01736 }
01737 }
01738 }
01739 }
01740
01741
01742 Bool_t overflow = false;
01743 Bool_t undershoot = false;
01744 for (UInt_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
01745 for (unsigned bin = 0; bin < SPADIC_TRACE_SIZE; bin++) {
01746 if (theSpadic->fSpadicOverflows[ch][bin]){
01747 overflow = true;
01748 overnflowtingTB[ch][bin] = true;
01749 }
01750 if (theSpadic->fSpadicUndershoots[ch][bin]){
01751 undershoot = true;
01752 }
01753 }
01754 }
01755
01756 if (!fPar->Use_OverflowEvents && overflow)
01757 continue;
01758
01759 Int_t maxCh(-1), maxSignal(0);
01760 Double_t baseline(0), signal(0);
01761 for (UInt_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
01762 baseline = 0;
01763 signal = 0;
01764
01765
01766 if (fPar->Run_PedestleCorrection) {
01767 for (unsigned bin = 0; (Int_t)bin < fPar->pedestalTB; bin++) {
01768 baseline += theSpadic->fSpadicCompensated[ch][bin];
01769 }
01770 if (fPar->pedestalTB > 0 && fPar->pedestalTB < SPADIC_TRACE_SIZE)
01771 baseline /= fPar->pedestalTB;
01772 else
01773 baseline = 0;
01774 for (unsigned bin = 0; bin < SPADIC_TRACE_SIZE; bin++) {
01775 rawData[ch][bin] = theSpadic->fSpadicCompensated[ch][bin];
01776 }
01777 }
01779 Float_t pedestal[NUM_SPADIC_CHA] = {0.0};
01780 if (!theSpadic->fSpadicSignalCh[ch]){
01781 for (UInt_t bin = 0; bin < SPADIC_TRACE_SIZE-1; bin++){
01782 fSpadic_input[sid][ch]->SetBinContent(bin + 1,theSpadic->fSpadicCompensated[ch][bin]);
01783 pedestal[ch] += rawData[ch][bin];
01784 fSpadic_ADCdistMF[sid][ch]->Fill(rawData[ch][bin]);
01785 }
01786 pedestal[ch] /= SPADIC_TRACE_SIZE;
01787 fSpadic_PedelPos2DMF[sid]->Fill(ch,pedestal[ch]);
01788 }
01789 fSpadic_NoiseDistMF[sid]->SetBinContent(ch+1, fSpadic_ADCdistMF[sid][ch]->GetRMS());
01790 fSpadic_NoiseDist2DMF[sid]->Fill(ch, fSpadic_ADCdistMF[sid][ch]->GetRMS());
01791 fSpadic_PedelPosMF[sid]->SetBinContent(ch+1, fSpadic_ADCdistMF[sid][ch]->GetMean());
01792
01794 for (unsigned bin = 0; bin < SPADIC_TRACE_SIZE; bin++) {
01795 rawData[ch][bin] -= baseline;
01796 signal += rawData[ch][bin];
01797
01798 }
01799
01800
01801 if (signal > maxSignal){
01802 maxSignal = signal;
01803 maxCh = ch;
01804 }
01805 }
01806
01807
01808
01809
01810
01811
01812 Int_t nSignalChannel = 0;
01813 Bool_t channelSignal[NUM_SPADIC_CHA] = {false};
01814 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
01815 if (theSpadic->fSpadicSignalCh[ch]) {
01816 nSignalChannel++;
01817 channelSignal[ch] = true;
01818 }
01819 }
01820
01821
01822
01823
01824
01825
01826
01827
01828
01829
01830
01831
01832
01833
01834
01835
01836
01837
01838
01839
01840
01841
01842
01843
01844
01845
01846
01847
01848
01849
01850
01851
01852
01853
01854
01855
01856
01857
01858
01859
01860
01861
01862
01863 Double_t maxAmp[NUM_SPADIC_CHA] = {0};
01864 Int_t hitTime[NUM_SPADIC_CHA] = {0};
01865 Double_t average;
01866
01867 Double_t intens3pads = 0;
01868 Double_t intensSignalPads = 0;
01869 for (unsigned bin = 0; bin < SPADIC_TRACE_SIZE; bin++) {
01870 average = 0.;
01871 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
01872
01873
01874
01875 if (!channelSignal[ch])
01876 average += rawData[ch][bin];
01877 }
01878 average /= (Double_t(NUM_SPADIC_CHA - nSignalChannel));
01879 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
01880
01881
01882 if (fPar->Run_NoiseCorrection)
01883 cleanData[ch][bin] = rawData[ch][bin] - average;
01884 else
01885 cleanData[ch][bin] = rawData[ch][bin];
01886
01887
01888 fSpadic_output[sid][ch]->SetBinContent(bin + 1, cleanData[ch][bin]);
01889 if (fSpadic_integWindow[sid]->Test(bin)) {
01890 intensCh[ch] += cleanData[ch][bin];
01891 if (theSpadic->fSpadicSignalCh[ch])
01892 intensSignalPads += cleanData[ch][bin];
01893 if (ch >= maxCh-1 && ch <= maxCh+1)
01894 intens3pads += cleanData[ch][bin];
01895 }
01896
01897 if (cleanData[ch][bin] > maxAmp[ch]){
01898 maxAmp[ch] = cleanData[ch][bin];
01899 hitTime[ch] = bin;
01900 }
01901 rowIntens[sid] += intensCh[ch];
01902 }
01903
01904 }
01905 fSpadic_maxAmplitude[sid]->Fill(maxAmp[maxCh]);
01906 fSpadic_hitTime[sid]->Fill(hitTime[maxCh]);
01907 if (fBeamEvent->fIsPion){
01908 fSpadic_pi_maxAmplitude[sid]->Fill(maxAmp[maxCh]);
01909 fSpadic_pi_hitTime[sid]->Fill(hitTime[maxCh]);
01910 }
01911 if (fBeamEvent->fIsElectron){
01912 fSpadic_el_maxAmplitude[sid]->Fill(maxAmp[maxCh]);
01913 fSpadic_el_hitTime[sid]->Fill(hitTime[maxCh]);
01914 }
01915 maxChCorr[sid] = maxCh;
01916 fSpadic_padMax[sid]->Fill(maxCh);
01917
01918 if(fPar->Use_ClusteredSignal)
01919 intens[sid] = intensSignalPads;
01920 else
01921 intens[sid] = intens3pads;
01922
01923
01924
01925
01926
01927
01928
01929
01930 if (fSpadic_hitTimeCond[sid]->Test(hitTime[maxCh])){
01931 if (fSpadic_minAmplitudeCond[sid]->Test(maxAmp[maxCh])){
01932
01933 if (!fPar->Merge_Rows) {
01934 if (fSpadic_padMaxWindow[sid]->Test(maxCh)) {
01935
01936 Int_t intensBin = fSpadic_intens[sid]->FindBin(intens[sid]);
01937 Int_t pidBin = 1;
01938 Int_t nBin = fSpadic_intens[sid]->GetNbinsX();
01939 Int_t nEntries;
01940 Double_t value;
01941 TH1 *spectrum=0;
01942 if (fBeamEvent->fIsPion){
01943 spectrum = fSpadic_pi_intens[sid];
01944 pidBin = fSpadic_pid[sid]->FindBin(3);
01945 }
01946 if (fBeamEvent->fIsElectron){
01947 spectrum = fSpadic_el_intens[sid];
01948 pidBin = fSpadic_pid[sid]->FindBin(2);
01949 }
01950 if (!(fBeamEvent->fIsPion) && !(fBeamEvent->fIsElectron)){
01951 pidBin = fSpadic_pid[sid]->FindBin(1);
01952 nEntries = fSpadic_pid[sid]->GetBinContent(pidBin);
01953 fSpadic_pid[sid]->SetBinContent(pidBin, nEntries + 1);
01954 }
01955 for (Int_t iBin = 1; iBin <= nBin; iBin++) {
01956 nEntries = fSpadic_pid[sid]->GetBinContent(fSpadic_pid[sid]->FindBin(0));
01957 value = fSpadic_intens[sid]->GetBinContent(iBin) * nEntries;
01958 if (iBin == intensBin){
01959 value++;
01960 fSpadic_pid[sid]->SetBinContent(1, nEntries + 1);
01961 }
01962 fSpadic_intens[sid]->SetBinContent(iBin, value / (nEntries + 1));
01963 if (pidBin > 2) {
01964 nEntries = fSpadic_pid[sid]->GetBinContent(pidBin);
01965 value = spectrum->GetBinContent(iBin) * nEntries;
01966 if (iBin == intensBin){
01967 value++;
01968 fSpadic_pid[sid]->SetBinContent(pidBin, nEntries + 1);
01969 }
01970 spectrum->SetBinContent(iBin, value / (nEntries + 1));
01971 }
01972 }
01973 }
01974 }
01975 if (fSpadic_minIntensCond[sid]->Test(intens[sid])){
01976
01977 Double_t avNoise = 0;
01978 Double_t maxNoise = 0;
01979 Double_t minNoise = 255;
01980 Double_t avSignal = 0;
01981 Double_t avNoiseClean = 0;
01982 Double_t avSignalClean = 0;
01983 for (unsigned bin = 0; bin < SPADIC_TRACE_SIZE; bin++) {
01984 if (bin < 5){
01985 avNoise += uint8_t(theSpadic->fSpadicPulse[maxCh][bin]);
01986 if (uint8_t(theSpadic->fSpadicPulse[maxCh][bin]) > maxNoise)
01987 maxNoise = uint8_t(theSpadic->fSpadicPulse[maxCh][bin]);
01988 if (uint8_t(theSpadic->fSpadicPulse[maxCh][bin]) < minNoise)
01989 minNoise = uint8_t(theSpadic->fSpadicPulse[maxCh][bin]);
01990 avNoiseClean += cleanData[maxCh][bin];
01991 }
01992 if (bin > 14 && bin < 20){
01993 avSignal += uint8_t(theSpadic->fSpadicPulse[maxCh][bin]);
01994 avSignalClean += cleanData[maxCh][bin];
01995 }
01996 }
01997 TString s2n = ("S/N=xx");
01998 if (avNoise != 0){
01999 double val = avSignal / (maxNoise - minNoise);
02000 double weight = fSpadic_S2Ncnt->GetBinContent(sid);
02001 double value0 = fSpadic_S2N->GetBinContent(sid);
02002 s2n.Form("S/N=%f",(value0 * weight + val) / (weight + 1.));
02003 fSpadic_S2N->SetBinContent(sid, (value0 * weight + val) / (weight + 1.));
02004 fSpadic_S2Ncnt->SetBinContent(sid, weight + 1);
02005 }
02006 if (avNoiseClean != 0){
02007 double val = avSignalClean/avNoiseClean;
02008 double weight = fSpadic_S2Ncnt->GetBinContent(sid) -1;
02009 double value0 = fSpadic_S2Ncleaned->GetBinContent(sid);
02010 fSpadic_S2Ncleaned->SetBinContent(sid, (value0 * weight + val) / (weight + 1.));
02011 }
02012 S2N[sid]->SetText(0.1,0.8,s2n.Data());
02013
02014
02015
02016
02017
02018 if (fSpadic_padMaxWindow[sid]->Test(maxCh)) {
02019 fSpadic_efficiency->Fill(sid);
02020 Double_t dxPos = 0.5 * log((intensCh[maxCh+1] / intensCh[maxCh-1])) / log((pow(intensCh[maxCh],2) / (intensCh[maxCh+1] * intensCh[maxCh-1])));
02021 fSpadic_recoPos[sid]->Fill(dxPos * fPar->fPadwidth[sid] + maxCh * fPar->fPadwidth[sid]);
02022 dxPosCorr[sid] = dxPos * fPar->fPadwidth[sid] + maxCh * fPar->fPadwidth[sid] + fPar->fPadwidth[sid];
02023 Double_t chargePercent = intensCh[maxCh-1] / (intensCh[maxCh-1] + intensCh[maxCh] + intensCh[maxCh+1]);
02024 fSpadic_PRFMF[sid]->Fill(-dxPos-1,chargePercent);
02025
02026 chargePercent = intensCh[maxCh] / (intensCh[maxCh-1] + intensCh[maxCh] + intensCh[maxCh+1]);
02027 fSpadic_PRFMF[sid]->Fill(dxPos,chargePercent);
02028
02029 chargePercent = intensCh[maxCh+1] / (intensCh[maxCh-1] + intensCh[maxCh] + intensCh[maxCh+1]);
02030 fSpadic_PRFMF[sid]->Fill(-dxPos+1,chargePercent);
02031
02032
02033 }
02034
02035
02036
02037 if (fBeamEvent->fIsPion) {
02038 for (unsigned bin = 0; bin < SPADIC_TRACE_SIZE; bin++) {
02039 double val = cleanData[maxCh][bin];
02040 fSpadic_pi_shape2D[sid]->Fill(bin, val);
02041
02042 double weight = fSpadic_pi_shapecnt[sid]->GetBinContent(bin+1);
02043 double value0 = fSpadic_pi_shape[sid]->GetBinContent(bin+1);
02044
02045 fSpadic_pi_shape[sid]->SetBinContent(bin+1, (value0 * weight + val) / (weight + 1.));
02046 fSpadic_pi_shapecnt[sid]->SetBinContent(bin+1, weight+1.);
02047 }
02048 }
02049 if (fBeamEvent->fIsElectron) {
02050 for (unsigned bin = 0; bin < SPADIC_TRACE_SIZE; bin++) {
02051 double val = cleanData[maxCh][bin];
02052 fSpadic_el_shape2D[sid]->Fill(bin, val);
02053
02054 double weight = fSpadic_el_shapecnt[sid]->GetBinContent(bin+1);
02055 double value0 = fSpadic_el_shape[sid]->GetBinContent(bin+1);
02056
02057 fSpadic_el_shape[sid]->SetBinContent(bin+1, (value0 * weight + val) / (weight + 1.));
02058 fSpadic_el_shapecnt[sid]->SetBinContent(bin+1, weight+1.);
02059 }
02060 }
02061
02062
02063 }
02064 }
02065 }
02066
02067
02068
02069 Bool_t multiHit = false;
02070
02071
02072
02073
02074
02075
02076
02077
02078
02079
02080
02081
02082
02083 fSpadic_statistics[sid]->Fill(0);
02084 if (fSpadic_minAmplitudeCond[sid]->Test(maxAmp[maxCh]))
02085 {
02086 fSpadic_statistics[sid]->Fill(2);
02087 if (fSpadic_hitTimeCond[sid]->Test(hitTime[maxCh]))
02088 {
02089 fSpadic_statistics[sid]->Fill(3);
02090 if (fSpadic_minIntensCond[sid]->Test(intens[sid]))
02091 {
02092 fSpadic_statistics[sid]->Fill(4);
02093 if (!overflow) fSpadic_statistics[sid]->Fill(5);
02094 if (!undershoot) fSpadic_statistics[sid]->Fill(6);
02095
02096 if (fSpadic_padMaxWindow[sid]->Test(maxCh))
02097 {
02098 fSpadic_statistics[sid]->Fill(7);
02099 if (!multiHit)
02100 {
02101 fSpadic_statistics[sid]->Fill(8);
02102 fSpadic_statistics[sid]->Fill(9);
02103 if (fBeamEvent->fIsPion) fSpadic_statistics[sid]->Fill(10);
02104 if (fBeamEvent->fIsElectron) fSpadic_statistics[sid]->Fill(11);
02105 if (!fBeamEvent->fIsPion && !fBeamEvent->fIsElectron)
02106 {
02107 fSpadic_statistics[sid]->Fill(12);
02108 }
02109 }
02110 }
02111 }
02112 }
02113 }
02114
02115
02116 if (!fSpadic_minAmplitudeCond[sid]->Test(maxAmp[maxCh]) ||
02117 !fSpadic_hitTimeCond[sid]->Test(hitTime[maxCh]) ||
02118 !fSpadic_minIntensCond[sid]->Test(intens[sid]) ||
02119 overflow ||
02120 multiHit
02121 ){
02122 fSpadic_statistics[sid]->Fill(1);
02123 }
02124
02125 }
02126
02127 for (UInt_t sid = 1; sid < MAX_SPADIC-1; sid++) {
02128 if (fPar->Merge_Rows) {
02129
02130
02131 Int_t intensBin=0;
02132 if (sid == 4 || sid == 16 || sid == 17|| sid == 5)
02133 intensBin = fSpadic_intens[sid]->FindBin(intens[sid]);
02134 else {
02135 if (sid == 1 || sid == 2)
02136 intensBin = fSpadic_intens[sid]->FindBin(intens[1] + intens[2]);
02137 if (sid == 11 || sid == 12)
02138 intensBin = fSpadic_intens[sid]->FindBin(intens[11] + intens[12]);
02139 if (sid == 3 || sid == 6)
02140 intensBin = fSpadic_intens[sid]->FindBin(intens[3] + intens[6]);
02141 if (sid == 15 || sid == 18)
02142 intensBin = fSpadic_intens[sid]->FindBin(intens[15] + intens[18]);
02143 }
02144
02145 Int_t pidBin = 1;
02146 Int_t nBin = fSpadic_intens[sid]->GetNbinsX();
02147 Int_t nEntries;
02148 Double_t value;
02149 TH1 *spectrum=0;
02150 if (fBeamEvent->fIsPion){
02151 spectrum = fSpadic_pi_intens[sid];
02152 pidBin = fSpadic_pid[sid]->FindBin(3);
02153 }
02154 if (fBeamEvent->fIsElectron){
02155 spectrum = fSpadic_el_intens[sid];
02156 pidBin = fSpadic_pid[sid]->FindBin(2);
02157 }
02158 if (!(fBeamEvent->fIsPion) && !(fBeamEvent->fIsElectron)){
02159 pidBin = fSpadic_pid[sid]->FindBin(1);
02160 nEntries = fSpadic_pid[sid]->GetBinContent(pidBin);
02161 fSpadic_pid[sid]->SetBinContent(pidBin, nEntries + 1);
02162 }
02163 for (Int_t iBin = 1; iBin <= nBin; iBin++) {
02164 nEntries = fSpadic_pid[sid]->GetBinContent(fSpadic_pid[sid]->FindBin(0));
02165 value = fSpadic_intens[sid]->GetBinContent(iBin) * nEntries;
02166 if (iBin == intensBin){
02167 value++;
02168 fSpadic_pid[sid]->SetBinContent(1, nEntries + 1);
02169 }
02170 fSpadic_intens[sid]->SetBinContent(iBin, value / (nEntries + 1));
02171 if (pidBin > 2) {
02172 nEntries = fSpadic_pid[sid]->GetBinContent(pidBin);
02173 value = spectrum->GetBinContent(iBin) * nEntries;
02174 if (iBin == intensBin){
02175 value++;
02176 fSpadic_pid[sid]->SetBinContent(pidBin, nEntries + 1);
02177 }
02178 spectrum->SetBinContent(iBin, value / (nEntries + 1));
02179 }
02180 }
02181
02182 }
02183 }
02184 Bool_t mixing = false;
02185 for (UInt_t sid = 1; sid < MAX_SPADIC-1; sid++) {
02186 for (UInt_t sid2 = 1; sid2 < MAX_SPADIC; sid2++) {
02187 if (PID[sid] != PID[sid2])
02188 mixing = true;
02189 fSpadic_pidMixing->Fill(PID[sid] - PID[sid2]);
02190 }
02191 }
02192
02193
02194
02195
02196
02197
02198
02199
02200
02201 Int_t i = 0;
02202 for (UInt_t sid = 1; sid < MAX_SPADIC-1; sid++) {
02203 if (fCrateInputEvent->fData1182[0][0] > 450)
02204 fSpadic_FingerCorr[sid]->Fill(maxChCorr[sid],0);
02205 if (fCrateInputEvent->fData1182[0][3] > 450)
02206 fSpadic_FingerCorr[sid]->Fill(maxChCorr[sid],1);
02207 if (fCrateInputEvent->fData1182[0][5] > 450)
02208 fSpadic_FingerCorr[sid]->Fill(maxChCorr[sid],2);
02209 if (fCrateInputEvent->fData1182[0][7] > 450)
02210 fSpadic_FingerCorr[sid]->Fill(maxChCorr[sid],3);
02211
02212 for (UInt_t sid2 = sid; sid2 < MAX_SPADIC; sid2++) {
02213 if (maxChCorr[sid] > -1 && maxChCorr[sid2] > -1){
02214 if (fPar->Run_SpadicCorrelation)
02215 fSpadic_correlation[i]->Fill(maxChCorr[sid],maxChCorr[sid2]);
02216 if (fPar->Run_Alignment)
02217 fSpadic_alignment[i]->Fill(dxPosCorr[sid],dxPosCorr[sid2]);
02218 for (Int_t bin = 0; bin <= SPADIC_TRACE_SIZE; bin++) {
02219 if (fSpadic_el_shape[sid2]->GetBinContent(bin+1) != 0)
02220 fSpadic_el_shapeRatio[i]->SetBinContent(bin+1, fSpadic_el_shape[sid]->GetBinContent(bin+1) / fSpadic_el_shape[sid2]->GetBinContent(bin+1));
02221 if (fSpadic_pi_shape[sid2]->GetBinContent(bin+1) != 0)
02222 fSpadic_pi_shapeRatio[i]->SetBinContent(bin+1, fSpadic_pi_shape[sid]->GetBinContent(bin+1) / fSpadic_pi_shape[sid2]->GetBinContent(bin+1));
02223 }
02224 i++;
02225 }
02226 }
02227 }
02228
02229 Int_t pairs[4][2] = {{ 1, 2},{11,12},{10, 6},{15,18}};
02230 Float_t yPos[4] = {0.0};
02231 Float_t ratio = 0.0;
02232 for (Int_t pid = 0; pid < 4; pid++) {
02233
02234
02235
02236
02237
02238
02239
02240
02241
02242
02243
02244 yPos[pid] = fPar->sigmaPRF[pid] * sqrt(-2.0 * log (rowIntens[pairs[pid][0]] / rowIntens[pairs[pid][1]]));
02245
02246 Float_t averageX = 0;
02247 Int_t counter = 0;
02248 if (dxPosCorr[pairs[pid][0]] > 0){
02249 averageX += dxPosCorr[pairs[pid][0]];
02250 counter++;
02251 }
02252 if (dxPosCorr[pairs[pid][1]] > 0){
02253 averageX += dxPosCorr[pairs[pid][1]];
02254 counter++;
02255 }
02256 averageX /= counter;
02257 if (intens[pairs[pid][0]] < intens[pairs[pid][1]])
02258 yPos[pid] *= -1.;
02259 fSpadic_beamProfil[pid]->Fill(averageX, yPos[pid]);
02260 }
02261 for (Int_t pid = 0; pid < 2; pid++) {
02262 fSpadic_deltaPos[pid]->Fill(dxPosCorr[pairs[pid][1]], dxPosCorr[pairs[pid][1]]-dxPosCorr[pairs[pid+2][1]]);
02263 fSpadic_deltaPos[pid+2]->Fill(yPos[pid], yPos[pid]-yPos[pid+2]);
02264 }
02265
02266 fSpadic_MSxyHitplane[0]->Fill(
02267 dxPosCorr[2]-3.5*fPar->fPadwidth[2],
02268 dxPosCorr[12]-3.5*fPar->fPadwidth[12]);
02269 fSpadic_MSxyHitplane[1]->Fill(
02270 dxPosCorr[6]-3.5*fPar->fPadwidth[6],
02271 dxPosCorr[18]-3.5*fPar->fPadwidth[18]);
02272
02273 fSpadic_MSxyHitPadplane[0]->Fill(
02274 (maxChCorr[2] -3.5)*fPar->fPadwidth[2],
02275 -(maxChCorr[12]-3.5)*fPar->fPadwidth[12]);
02276 fSpadic_MSxyHitPadplane[1]->Fill(
02277 (maxChCorr[6] -3.5)*fPar->fPadwidth[6],
02278 -(maxChCorr[18]-3.5)*fPar->fPadwidth[18]);
02279
02280
02281 if (xNrFiberHodCluster > 0)
02282 for (UInt_t sid = 1; sid < MAX_SPADIC-1; sid++) {
02283 fFiberHod_x_alignment[sid]->Fill(dxPosCorr[sid],xPosFiberHod);
02284 }
02285
02286 if (yNrFiberHodCluster > 0)
02287 for (UInt_t sid = 1; sid < MAX_SPADIC-1; sid++) {
02288 fFiberHod_y_alignment[sid]->Fill(dxPosCorr[sid],yPosFiberHod);
02289 }
02290
02291
02292 }
02293 }