00001 #include "TRossendorfProc.h"
00002 #include "TRossendorfHistParam.h"
00003 #include "TRossendorfMapParam.h"
00004
00005 #include "TSystem.h"
00006 #include "TROOT.h"
00007 #include "TGo4Log.h"
00008
00009 TRossendorfProc::TRossendorfProc(const char* name) : TCBMBeamtimeProc(name),fCrateInputEvent(0), fOutputEvent(0),fBeamEvent(0)
00010 {
00011 cout << "**** TRossendorfProc: Create instance" << name << endl;
00012
00013 fMapPar = (TRossendorfMapParam*) MakeParameter("RossendorfMapPar", "TRossendorfMapParam");
00014 fHistTdcPar = (TRossendorfHistParam*) MakeParameter("RossendorfHistTdcPar","TRossendorfHistParam");
00015 fHistQdcPar = (TRossendorfHistParam*) MakeParameter("RossendorfHistQdcPar","TRossendorfHistParam");
00016 fHistStripTdcPar = (TRossendorfHistParam*) MakeParameter("RossendorfHistStripTdcPar","TRossendorfHistParam");
00017 fHistStripQdcPar = (TRossendorfHistParam*) MakeParameter("RossendorfHistStripQdcPar","TRossendorfHistParam");
00018 fHistStripCorrPar = (TRossendorfHistParam*) MakeParameter("RossendorfHistStripCorrPar","TRossendorfHistParam");
00019 fHistStripCorrQdcPar = (TRossendorfHistParam*) MakeParameter("RossendorfHistStripCorrQdcPar","TRossendorfHistParam");
00020 fRoluPar = (TRossendorfHistParam*) MakeParameter("RossendorfRoluTdcPar","TRossendorfHistParam");
00021 fRpcResHistPar = (TRossendorfHistParam*) MakeParameter("RossendorfResHistPar","TRossendorfHistParam");
00022 fRpcPosResHistPar = (TRossendorfHistParam*) MakeParameter("RossendorfPosResHistPar","TRossendorfHistParam");
00023
00024 TString obname, obtitle;
00025 TString setupmacro = "set_RossendorfPar.C";
00026 if (!gSystem->AccessPathName(setupmacro.Data())) {
00027 TGo4Log::Info("Executing Rossendorf parameter setup script %s", setupmacro.Data());
00028 gROOT->ProcessLine(Form(".x %s", setupmacro.Data()));
00029 } else {
00030 TGo4Log::Info("NO Rossendorf parameter setup script %s. Use previous values!", setupmacro.Data());
00031 }
00032
00033 for(Int_t m=0;m<3;m++)
00034 {
00035 for(Int_t i=0;i<16;i++)
00036 {
00037 if(fHistTdcPar->getFillHisto())
00038 {
00039 obname.Form("%s%d%s%d","CRPC/TDC/TDC",m,"ch",i);
00040 obtitle.Form("%s%d%s%d","CRPC_TDC",m,"ch",i);
00041 hTDC[m][i] = (TH1F*)MakeTH1('F',obname,obtitle,fHistTdcPar->getHistBinsX(i),fHistTdcPar->getHistLowX(i),fHistTdcPar->getHistHighX(i));
00042 hTDC[m][i]->SetXTitle("Time [channels]");
00043 hTDC[m][i]->SetYTitle("counts [a.u.]");
00044 }
00045 if(fHistQdcPar->getFillHisto())
00046 {
00047
00048 obname.Form("%s%d%s%d","CRPC/QDC/QDC",m,"ch",i);
00049 obtitle.Form("%s%d%s%d","CRPC_QDC",m,"ch",i);
00050 hQDC[m][i] = (TH1F*)MakeTH1('F',obname,obtitle,fHistQdcPar->getHistBinsX(i),fHistQdcPar->getHistLowX(i),fHistQdcPar->getHistHighX(i));
00051 hQDC[m][i]->SetXTitle("Charge [channels]");
00052 hQDC[m][i]->SetYTitle("counts [a.u.]");
00053 }
00054 }
00055 }
00056
00057 if(fRpcResHistPar->getFillHisto())
00058 {
00059 obname.Form("%s","CRPC/RefTime/TDC1_TDC2");
00060 obtitle.Form("%s","RefTime_TDC1-TDC2");
00061 hRefTimeCorr[0] = (TH1F*)MakeTH1('F',obname,obtitle, fRpcResHistPar->getHistBinsX(1),fRpcResHistPar->getHistLowX(1),
00062 fRpcResHistPar->getHistHighX(1));
00063 hRefTimeCorr[0]->SetXTitle("RefTime TDC1 - TDC2 [channels]");
00064 hRefTimeCorr[0]->SetYTitle("Counts [a.u.]");
00065
00066 obname.Form("%s","CRPC/RefTime/TDC2_TDC3");
00067 obtitle.Form("%s","RefTime_TDC2-TDC3");
00068 hRefTimeCorr[1] = (TH1F*)MakeTH1('F',obname,obtitle,fRpcResHistPar->getHistBinsX(1),fRpcResHistPar->getHistLowX(1),
00069 fRpcResHistPar->getHistHighX(1));
00070 hRefTimeCorr[1]->SetXTitle("RefTime TDC2 - TDC2 [channels]");
00071 hRefTimeCorr[1]->SetYTitle("Counts [a.u.]");
00072
00073 obname.Form("%s","CRPC/RefTime/TDC1_TDC3");
00074 obtitle.Form("%s","RefTime_TDC1-TDC3");
00075 hRefTimeCorr[2] = (TH1F*)MakeTH1('F',obname,obtitle,fRpcResHistPar->getHistBinsX(1),fRpcResHistPar->getHistLowX(1),
00076 fRpcResHistPar->getHistHighX(1));
00077 hRefTimeCorr[2]->SetXTitle("RefTime TDC1 - TDC3 [channels]");
00078 hRefTimeCorr[2]->SetYTitle("Counts [a.u.]");
00079
00080 obname.Form("%s","CRPC/RefTime/TDC1_S1");
00081 obtitle.Form("%s","RefTime_TDC1-S1");
00082 hRefTimeCorr[3] = (TH1F*)MakeTH1('F',obname,obtitle,fRpcResHistPar->getHistBinsX(1),fRpcResHistPar->getHistLowX(1),
00083 fRpcResHistPar->getHistHighX(1));
00084 hRefTimeCorr[3]->SetXTitle("RefTime TDC1 - S1 [channels]");
00085 hRefTimeCorr[3]->SetYTitle("Counts [a.u.]");
00086
00087 obname.Form("%s","CRPC/Scint/S11");
00088 obtitle.Form("%s","S11 charge vs time");
00089 hRosSzint[0] = (TH2F*)MakeTH2('f',obname,obtitle,fHistStripCorrQdcPar->getHistBinsX(0),
00090 fHistStripCorrQdcPar->getHistLowX(0),fHistStripCorrQdcPar->getHistHighX(0),
00091 fHistStripCorrQdcPar->getHistBinsY(0),fHistStripCorrQdcPar->getHistLowY(0),
00092 fHistStripCorrQdcPar->getHistHighY(0));
00093 hRosSzint[0]->SetXTitle("Charge");
00094 hRosSzint[0]->SetYTitle("Time");
00095
00096 obname.Form("%s","CRPC/Scint/S12");
00097 obtitle.Form("%s","S12 charge vs time");
00098 hRosSzint[1] = (TH2F*)MakeTH2('f',obname,obtitle,fHistStripCorrQdcPar->getHistBinsX(0),
00099 fHistStripCorrQdcPar->getHistLowX(0),fHistStripCorrQdcPar->getHistHighX(0),
00100 fHistStripCorrQdcPar->getHistBinsY(0),fHistStripCorrQdcPar->getHistLowY(0),
00101 fHistStripCorrQdcPar->getHistHighY(0));
00102 hRosSzint[1]->SetXTitle("Charge");
00103 hRosSzint[1]->SetYTitle("Time");
00104
00105 for(Int_t i=0;i<8;i++)
00106 {
00107 for(Int_t j=0;j<8;j++)
00108 {
00109 obname.Form("%s%d%s%d","CRPC/RPC/Resolution/StripRpc0_",i,"StripRpc1_",j);
00110 obtitle.Form("%s%d%s%d","Rpc Resolution(RPC0 strip ",i," vs RPC1 strip ",j);
00111 hRpcRes[i][j] = (TH1F*)MakeTH1('F',obname,obtitle,fRpcResHistPar->getHistBinsX(0),fRpcResHistPar->getHistLowX(0),
00112 fRpcResHistPar->getHistHighX(0));
00113 hRpcRes[i][j]->SetXTitle("RPC0 Time Sum");
00114 hRpcRes[i][j]->SetYTitle("RPC1 Time Sum");
00115 }
00116 }
00117 }
00118
00119 if(fHistStripTdcPar->getFillHisto())
00120 {
00121 for(Int_t n=0;n<2;n++)
00122 {
00123 for(Int_t i=0;i<8;i++)
00124 {
00125 obname.Form("%s%d%s%d","CRPC/TDC/RPC",n,"StripTdc",i);
00126 obtitle.Form("%s%d%s%d%s","RPC",n,"StripTdc",i," (tL+tR)*0.5-tOFF");
00127 hStripTdc[n][i] = (TH1F*)MakeTH1('F',obname,obtitle,fHistStripTdcPar->getHistBinsX(i),fHistStripTdcPar->getHistLowX(i),fHistStripTdcPar->getHistHighX(i));
00128 hStripTdc[n][i]->SetXTitle("Time summ [channels]");
00129 hStripTdc[n][i]->SetYTitle("counts [a.u.]");
00130
00131 obname.Form("%s%d%s%d","CRPC/QDC/RPC",n,"StripQdc",i);
00132 obtitle.Form("%s%d%s%d%s","RPC",n,"StripQdc",i," (qL+qR)*0.5");
00133 hStripQdc[n][i] = (TH1F*)MakeTH1('F',obname,obtitle,fHistStripQdcPar->getHistBinsX(i),fHistStripQdcPar->getHistLowX(i),fHistStripQdcPar->getHistHighX(i));
00134 hStripQdc[n][i]->SetXTitle("Charge Summ [channels]");
00135 hStripQdc[n][i]->SetYTitle("counts [a.u.]");
00136
00137 obname.Form("%s%d%s%d%s%d","CRPC/RPC/RPC",n,"/RPC",n,"TimeResStrip",i);
00138 obtitle.Form("%s%d%s%d%s","RPC",n," Time Resolution Strip",i," (qL+qR)*0.5 vs TimeOffset");
00139 hTimeRes[n][i] = (TH2F*)MakeTH2('F',obname,obtitle,2000,0.,40000,2000,0.,40000);
00140 hTimeRes[n][i]->SetXTitle("Time difference");
00141 hTimeRes[n][i]->SetYTitle("Time offset");
00142 }
00143 }
00144 }
00145
00146 for(Int_t det=0;det<2;det++)
00147 {
00148 for(Int_t side=0;side<2;side++)
00149 {
00150 for(Int_t strip=0;strip<8;strip++)
00151 {
00152 if(fHistStripCorrPar->getFillHisto())
00153 {
00154 obname.Form("%s%d%s%d%s%d%s%s","CRPC/RPC/RPC",det,"/RPC",det,"Strip",strip,"Side_",side==0?"left":"right");
00155 obtitle.Form("%s%d%s%d%s%s","RPC",det,"Strip",strip,"Side_",side==0?"left":"right");
00156 hRpcCorr[det][side][strip] = (TH2F*)MakeTH2('F',obname,obtitle,fHistStripCorrPar->getHistBinsX(strip),fHistStripCorrPar->getHistLowX(strip),
00157 fHistStripCorrPar->getHistHighX(strip), fHistStripCorrPar->getHistBinsY(strip),
00158 fHistStripCorrPar->getHistLowY(strip),fHistStripCorrPar->getHistHighY(strip));
00159 hRpcCorr[det][side][strip]->SetXTitle("Charge [Channels]");
00160 hRpcCorr[det][side][strip]->SetYTitle("Time [channels]");
00161 hRpcCorr[det][side][strip]->SetOption("COLZ");
00162 }
00163
00164 if(fHistStripCorrQdcPar->getFillHisto())
00165 {
00166 obname.Form("%s%d%s%d%s%d","CRPC/RPC/RPC",det,"/RPC",det,"TimevsCharge_Strip",strip);
00167 obtitle.Form("%s%d%s%d","RPC",det,"Time diff vs Charge Strip",strip);
00168 hRpcCorrQdc[det][side][strip] = (TH2F*)MakeTH2('F',obname,obtitle,fHistStripCorrQdcPar->getHistBinsX(strip),fHistStripCorrQdcPar->getHistLowX(strip),
00169 fHistStripCorrQdcPar->getHistHighX(strip), fHistStripCorrQdcPar->getHistBinsY(strip),
00170 fHistStripCorrQdcPar->getHistLowY(strip),fHistStripCorrQdcPar->getHistHighY(strip));
00171 hRpcCorrQdc[det][side][strip]->SetXTitle("Charge [channels]");
00172 hRpcCorrQdc[det][side][strip]->SetYTitle("Time diff.[channels]");
00173 hRpcCorrQdc[det][side][strip]->SetOption("COLZ");
00174 }
00175 }
00176 if(det==0)
00177 {
00178 obname.Form("%s%d%s","CRPC/RPC/RPC",side,"StripMult");
00179 obtitle.Form("%s%d%s","RPC",side,"StripMult");
00180 hRpcStripMult[side] = (TH1F*)MakeTH1('F',obname,obtitle,8,0.,8.);
00181 hRpcStripMult[side]->SetXTitle("Strip");
00182 hRpcStripMult[side]->SetYTitle("count [a.u.]");
00183 }
00184 }
00185 }
00186 obname.Form("%s","CRPC/RPC/StripsCRPC3bvsCRPC2b");
00187 obtitle.Form("%s","StripsCPRC3bvsCRPC2b");
00188 hRpcStripvsStrip[0] = (TH2F*)MakeTH2('F',obname,obtitle,8,0.,8.,8,0.,8.);
00189 hRpcStripvsStrip[0]->SetXTitle("Strip CRPC2b");
00190 hRpcStripvsStrip[0]->SetYTitle("Strip CRPC3b");
00191 hRpcStripvsStrip[0]->SetOption("COLZ");
00192
00193 obname.Form("%s","CRPC/RPC/StripsCRPC3bvsCRPC2bS11");
00194 obtitle.Form("%s","StripsCRPC3bvsCRPC2b & S11");
00195 hRpcStripvsStrip[1] = (TH2F*)MakeTH2('F',obname,obtitle,8,0.,8.,8,0.,8.);
00196 hRpcStripvsStrip[1]->SetXTitle("Strip CRPC2b");
00197 hRpcStripvsStrip[1]->SetYTitle("Strip CRPC3b");
00198 hRpcStripvsStrip[1]->SetOption("COLZ");
00199
00200 obname.Form("%s","CRPC/RPC/StripsCRPC3bvsCRPC2bS12");
00201 obtitle.Form("%s","StripsCRPC3bvsCRPC2b & S12");
00202 hRpcStripvsStrip[2] = (TH2F*)MakeTH2('F',obname,obtitle,8,0.,8.,8,0.,8.);
00203 hRpcStripvsStrip[2]->SetXTitle("Strip CRPC2b");
00204 hRpcStripvsStrip[2]->SetYTitle("Strip CRPC3b");
00205 hRpcStripvsStrip[2]->SetOption("COLZ");
00206
00207 if(fRpcPosResHistPar->getFillHisto())
00208 {
00209 obname.Form("%s","CRPC/RPC/BeamSpot_RPC0");
00210 obtitle.Form("%s","Beamspot on RPC 0");
00211 hRpcPosRes[0] = (TH2F*)MakeTH2('F',obname,obtitle,fRpcPosResHistPar->getHistBinsX(0),fRpcPosResHistPar->getHistLowX(0),fRpcPosResHistPar->getHistHighX(0),fRpcPosResHistPar->getHistBinsY(0),fRpcPosResHistPar->getHistLowY(0),fRpcPosResHistPar->getHistHighY(0));
00212 hRpcPosRes[0]->SetXTitle("pos [cm]");
00213 hRpcPosRes[0]->SetYTitle("strip");
00214
00215 obname.Form("%s","CRPC/RPC/BeamSpot_RPC1");
00216 obtitle.Form("%s","Beamspot on RPC 1");
00217 hRpcPosRes[1] = (TH2F*)MakeTH2('F',obname,obtitle,fRpcPosResHistPar->getHistBinsX(1),fRpcPosResHistPar->getHistLowX(1),fRpcPosResHistPar->getHistHighX(1),fRpcPosResHistPar->getHistBinsY(1),fRpcPosResHistPar->getHistLowY(1),fRpcPosResHistPar->getHistHighY(1));
00218 hRpcPosRes[1]->SetXTitle("pos [cm]");
00219 hRpcPosRes[1]->SetYTitle("strip");
00220 }
00221
00222 if(fRoluPar->getFillHisto())
00223 {
00224 obname.Form("%s","Scint/ROLUSum");
00225 obtitle.Form("%s","ROLUSum (t1 + t2 + t3 + t4)*0.25 ");
00226 hROLUSum = (TH1F*)MakeTH1('F',obname,obtitle,fRoluPar->getHistBinsX(0),fRoluPar->getHistLowX(0),fRoluPar->getHistHighX(0));
00227 obname.Form("%s","Scint/ROLUDif");
00228 obtitle.Form("%s","ROLU (t1 + t2 + t3 + t4)*0.25) - (t5+t6)*0.5");
00229 hROLUSum1 = (TH1F*)MakeTH1('F',obname,obtitle,fRoluPar->getHistBinsX(1),fRoluPar->getHistLowX(1),fRoluPar->getHistHighX(1));
00230 obname.Form("%s","Scint/TrigRes12");
00231 obtitle.Form("%s","TrigRes ((t1 + t2 + t5 + t6)*0.25) - (t3 + t4)*0.5");
00232 hROLUSum2 = (TH1F*)MakeTH1('F',obname,obtitle,fRoluPar->getHistBinsX(1),fRoluPar->getHistLowX(1),fRoluPar->getHistHighX(1));
00233 obname.Form("%s","Scint/TrigRes34");
00234 obtitle.Form("%s","TrigRes ((t3+t4+t5+t6)*0.25) - (t1+t2)*0.5");
00235 hROLUSum3 = (TH1F*)MakeTH1('F',obname,obtitle,fRoluPar->getHistBinsX(1),fRoluPar->getHistLowX(1),fRoluPar->getHistHighX(1));
00236
00237 obname.Form("%s","Scint/ROLURes");
00238 obtitle.Form("%s","ROLURes ((t1 + t2) *0.5) - (t3 + t4) * 0.5)");
00239 hROLURes = (TH1F*)MakeTH1('F',obname,obtitle,fRoluPar->getHistBinsX(2),fRoluPar->getHistLowX(2),fRoluPar->getHistHighX(2));
00240 obname.Form("%s","Scint/ResBack");
00241 obtitle.Form("%s","ResBack ((t5 - t6) *0.5)");
00242 hROLURes1 = (TH1F*)MakeTH1('F',obname,obtitle,fRoluPar->getHistBinsX(2),fRoluPar->getHistLowX(2),fRoluPar->getHistHighX(2));
00243 }
00244
00245 printf("TRossendorfProc Histograms created \n");
00246 fflush ( stdout);
00247 }
00248
00249
00250 TRossendorfProc::~TRossendorfProc(void)
00251 {
00252 }
00253
00254 void TRossendorfProc::InitEvent(TGo4EventElement* outevnt)
00255 {
00256
00257
00258
00259 if(fCrateInputEvent==0)
00260 {
00261 TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(GetInputEvent());
00262 if(btevent)
00263 {
00264 fCrateInputEvent=dynamic_cast<TMbsCrateEvent*>(btevent->GetSubEvent("MBSCRATE"));
00265 }
00266 else
00267 {
00268 fCrateInputEvent=dynamic_cast<TMbsCrateEvent*>(GetInputEvent());
00269
00270 }
00271 if(fCrateInputEvent==0) {
00272 GO4_STOP_ANALYSIS_MESSAGE("**** TRossendorfProc: Fatal error: input event is not a TMbsCrateEvent!!! STOP GO4");
00273 }
00274 }
00275
00276
00277
00278 if(fOutputEvent==0)
00279 {
00280 TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(outevnt);
00281 if(btevent)
00282 {
00283 fOutputEvent=dynamic_cast<TRossendorfEvent*>(btevent->GetSubEvent("ROSSENDORF"));
00284
00285
00286 if(fBeamEvent==0)
00287 fBeamEvent=dynamic_cast<TBeamMonitorEvent*>(btevent->GetSubEvent("BEAM"));
00288 }
00289 else
00290 {
00291
00292 fOutputEvent= dynamic_cast<TRossendorfEvent*>(outevnt);
00293 }
00294 if(fOutputEvent==0) {
00295 GO4_STOP_ANALYSIS_MESSAGE("**** TRossendorfProc: Fatal error: output event is not a TRossendorfEvent!!! STOP GO4");
00296 }
00297 }
00298 }
00299
00300 void TRossendorfProc::FinalizeEvent()
00301 {
00302 Int_t tdcLeft,tdcRight,chLeft,chRight;
00303 Int_t tdcLeft1,tdcRight1,chLeft1,chRight1;
00304 Int_t qdcLeft,qdcRight,chLeftQdc,chRightQdc;
00305 Int_t qdcLeft1,qdcRight1,chLeftQdc1,chRightQdc1;
00306 Int_t tdcScintLeft,tdcScintRight,chScintLeft,chScintRight;
00307 Int_t qdcScintLeft,qdcScintRight,chQdcScintLeft,chQdcScintRight;
00308 Float_t timeOffset=0;
00309
00310 if (fCrateInputEvent && fCrateInputEvent->IsValid()) {
00311
00312
00313 if((fCrateInputEvent->fMtdc[5].lead[2] > 0) && (fCrateInputEvent->fMtdc[5].lead[3] > 0) &&
00314 (fCrateInputEvent->fMtdc[5].lead[4] > 0) && (fCrateInputEvent->fMtdc[5].lead[5] > 0))
00315 {
00316 timeOffset = 0.25*(fCrateInputEvent->fMtdc[5].lead[2]+fCrateInputEvent->fMtdc[5].lead[3]+
00317 fCrateInputEvent->fMtdc[5].lead[4]+fCrateInputEvent->fMtdc[5].lead[5]);
00318 }
00319 for(Int_t i=0;i<3;i++)
00320 {
00321 for(Int_t j=0;j<16;j++)
00322 {
00323 fOutputEvent->fTdc[i].time[j] = fCrateInputEvent->fMtdc[i+5].lead[j];
00324 fOutputEvent->fQdc[i].charge[j] = fCrateInputEvent->fMqdc[i].charge[j];
00325
00326 if(fHistTdcPar->getFillHisto() && (fCrateInputEvent->fMtdc[i+5].lead[j]>0))
00327 hTDC[i][j]->Fill(fCrateInputEvent->fMtdc[i+5].lead[j]);
00328 if(fHistQdcPar &&(fCrateInputEvent->fMqdc[i].charge[j]>0))
00329 hQDC[i][j]->Fill(fCrateInputEvent->fMqdc[i].charge[j]);
00330 }
00331 }
00332 if((fOutputEvent->fTdc[0].time[0]>0) && (fOutputEvent->fTdc[1].time[1]>0))
00333 hRefTimeCorr[0]->Fill(fOutputEvent->fTdc[0].time[0]-fOutputEvent->fTdc[1].time[1]);
00334 if((fOutputEvent->fTdc[1].time[1]>0) && (fOutputEvent->fTdc[2].time[0]>0))
00335 hRefTimeCorr[1]->Fill(fOutputEvent->fTdc[1].time[1]-fOutputEvent->fTdc[2].time[0]);
00336 if((fOutputEvent->fTdc[0].time[0]>0) && (fOutputEvent->fTdc[2].time[0]>0))
00337 hRefTimeCorr[2]->Fill(fOutputEvent->fTdc[0].time[0]-fOutputEvent->fTdc[2].time[0]);
00338 if((fOutputEvent->fTdc[0].time[0]>0) && (fOutputEvent->fTdc[0].time[2]>0))
00339 hRefTimeCorr[3]->Fill(fOutputEvent->fTdc[0].time[0]-fOutputEvent->fTdc[0].time[2]);
00340
00341 fMapPar->getTdcMap(2,3,&tdcLeft,&tdcRight,&chLeft,&chRight);
00342 fMapPar->getQdcMap(2,3,&qdcLeft,&qdcRight,&chLeftQdc,&chRightQdc);
00343 hRosSzint[0]->Fill(fCrateInputEvent->fMqdc[qdcLeft].charge[chLeftQdc],fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]-timeOffset);
00344 hRosSzint[1]->Fill(fCrateInputEvent->fMqdc[qdcRight].charge[chRightQdc],fCrateInputEvent->fMtdc[tdcRight].lead[chRight]-timeOffset);
00345
00346 for(Int_t i=0;i<8;i++)
00347 {
00348 fMapPar->getTdcMap(0,i,&tdcLeft,&tdcRight,&chLeft,&chRight);
00349 for(Int_t j=0;j<8;j++)
00350 {
00351 fMapPar->getTdcMap(1,j,&tdcLeft1,&tdcRight1,&chLeft1,&chRight1);
00352 if((fabs(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]-fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1])>0) &&
00353 (fabs(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]-fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1])<2000) &&
00354 (fabs(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]-fCrateInputEvent->fMtdc[tdcRight].lead[chRight]>0) &&
00355 (fabs(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]-fCrateInputEvent->fMtdc[tdcRight].lead[chRight]<2000))) && timeOffset)
00356 {
00357 hRpcStripvsStrip[0]->Fill(i,j);
00358
00359 fMapPar->getTdcMap(2,3,&tdcScintLeft,&tdcScintRight,&chScintLeft,&chScintRight);
00360 fMapPar->getQdcMap(2,3,&qdcScintLeft,&qdcScintRight,&chQdcScintLeft,&chQdcScintRight);
00361
00362 if((fCrateInputEvent->fMtdc[tdcScintLeft].lead[chScintLeft]>35000)&&(fCrateInputEvent->fMqdc[qdcScintLeft].charge[chQdcScintLeft] > 700))
00363 hRpcStripvsStrip[1]->Fill(i,j);
00364
00365 if((fCrateInputEvent->fMtdc[tdcScintRight].lead[chScintRight]>35000)&&(fCrateInputEvent->fMqdc[qdcScintRight].charge[chQdcScintRight] > 600))
00366 hRpcStripvsStrip[2]->Fill(i,j);
00367
00368 }
00369 if(fRpcResHistPar->getFillHisto())
00370 {
00371 if((fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]>0)&&(fCrateInputEvent->fMtdc[tdcRight].lead[chRight]>0)&&
00372 (fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]>0)&&(fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1]>0))
00373 {
00374 fMapPar->getTdcMap(0,i,&tdcLeft,&tdcRight,&chLeft,&chRight);
00375 fMapPar->getTdcMap(1,j,&tdcLeft1,&tdcRight1,&chLeft1,&chRight1);
00376 hRpcRes[i][j]->Fill(0.5*(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]+fCrateInputEvent->fMtdc[tdcRight].lead[chRight])- 0.5*(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]+fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1]));
00377 }
00378 }
00379 }
00380 }
00381 if(fHistStripTdcPar->getFillHisto())
00382 {
00383 for(Int_t i=0;i<8;i++)
00384 {
00385 fMapPar->getTdcMap(0,i,&tdcLeft,&tdcRight,&chLeft,&chRight);
00386 if(timeOffset)
00387 hStripTdc[0][i]->Fill(fabs(0.5*(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]+fCrateInputEvent->fMtdc[tdcRight].lead[chRight])-timeOffset));
00388
00389 if(fRpcPosResHistPar->getFillHisto())
00390 {
00391 if((fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]>0) && (fCrateInputEvent->fMtdc[tdcRight].lead[chRight] > 0))
00392 hRpcPosRes[0]->Fill(0.025*7.5*(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]-fCrateInputEvent->fMtdc[tdcRight].lead[chRight]),i);
00393 }
00394
00395 if((fabs(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]-fCrateInputEvent->fMtdc[tdcRight].lead[chRight])>0) &&
00396 (fabs(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]-fCrateInputEvent->fMtdc[tdcRight].lead[chRight])<2000))
00397 {
00398 hRpcStripMult[0]->Fill(i);
00399 }
00400 fMapPar->getTdcMap(1,i,&tdcLeft1,&tdcRight1,&chLeft1,&chRight1);
00401 if (timeOffset)
00402 hStripTdc[1][i]->Fill(fabs(0.5*(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]+
00403 fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1])-timeOffset));
00404
00405 if(fRpcPosResHistPar->getFillHisto())
00406 {
00407 if((fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]>0) && (fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1] > 0))
00408 hRpcPosRes[1]->Fill(0.025*7.5*(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]-fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1]),i);
00409 }
00410
00411 if((fabs(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]-fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1])>0) &&
00412 (fabs(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]-fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1])<2000))
00413 {
00414 hRpcStripMult[1]->Fill(i);
00415 }
00416
00417 }
00418 }
00419 if(fHistStripQdcPar->getFillHisto())
00420 {
00421 for(Int_t i=0;i<8;i++)
00422 {
00423 if((fMapPar->getQdcMap(0,i,&tdcLeft,&tdcRight,&chLeft,&chRight) ==0) &&
00424 (fMapPar->getQdcMap(1,i,&tdcLeft1,&tdcRight1,&chLeft,&chRight1) ==0))
00425 {
00426 hStripQdc[0][i]->Fill(0.5*(fCrateInputEvent->fMqdc[tdcLeft].charge[chLeft]+
00427 fCrateInputEvent->fMqdc[tdcRight].charge[chRight]));
00428 hStripQdc[1][i]->Fill(0.5*(fCrateInputEvent->fMqdc[tdcLeft1].charge[chLeft1]+
00429 fCrateInputEvent->fMqdc[tdcRight1].charge[chRight1]));
00430 }
00431 }
00432 }
00433 if(fHistStripCorrPar->getFillHisto())
00434 {
00435 for(Int_t i=0;i<8;i++)
00436 {
00437 if((fMapPar->getTdcMap(0,i,&tdcLeft,&tdcRight,&chLeft,&chRight) == 0) &&
00438 (fMapPar->getTdcMap(1,i,&tdcLeft1,&tdcRight1,&chLeft1,&chRight1) == 0) &&
00439 (fMapPar->getQdcMap(0,i,&qdcLeft,&qdcRight,&chLeftQdc,&chRightQdc) == 0) &&
00440 (fMapPar->getQdcMap(0,i,&qdcLeft1,&qdcRight1,&chLeftQdc1,&chRightQdc1) == 0))
00441 {
00442 hRpcCorr[0][0][i]->Fill(fCrateInputEvent->fMqdc[qdcLeft].charge[chLeftQdc],fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]-timeOffset);
00443 hRpcCorr[0][1][i]->Fill(fCrateInputEvent->fMqdc[qdcRight].charge[chRightQdc],
00444 fCrateInputEvent->fMtdc[tdcRight].lead[chRight]-timeOffset);
00445 hRpcCorr[1][0][i]->Fill(fCrateInputEvent->fMqdc[qdcLeft1].charge[chLeftQdc1],
00446 fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]-timeOffset);
00447 hRpcCorr[1][1][i]->Fill(fCrateInputEvent->fMqdc[qdcRight1].charge[chRightQdc1],
00448 fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1]-timeOffset);
00449 }
00450 if(fHistStripTdcPar->getFillHisto())
00451 {
00452 hTimeRes[0][i]->Fill(0.5*fabs(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]+
00453 fCrateInputEvent->fMtdc[tdcRight].lead[chRight]),timeOffset);
00454 hTimeRes[1][i]->Fill(0.5*fabs(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]+
00455 fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1]),timeOffset);
00456 }
00457
00458 if((fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft] > 0) && (fCrateInputEvent->fMtdc[tdcRight].lead[chRight] > 0))
00459 {
00460 if(fCrateInputEvent->fMqdc[qdcLeft].charge[chLeftQdc] > 0)
00461 {
00462 hRpcCorrQdc[0][0][i]->Fill(fCrateInputEvent->fMqdc[qdcLeft].charge[chLeftQdc],
00463 fabs(0.5*(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]+
00464 fCrateInputEvent->fMtdc[tdcRight].lead[chRight]))-timeOffset);
00465 }
00466 if(fCrateInputEvent->fMqdc[qdcRight].charge[chRightQdc] > 0)
00467 {
00468 hRpcCorrQdc[0][1][i]->Fill(fCrateInputEvent->fMqdc[qdcRight].charge[chRightQdc],
00469 fabs(0.5*(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]+
00470 fCrateInputEvent->fMtdc[tdcRight].lead[chRight]))-timeOffset);
00471 }
00472 }
00473 if((fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1] > 0) && (fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1] > 0))
00474 {
00475 if(fCrateInputEvent->fMqdc[tdcLeft].charge[chLeft1] > 0)
00476 {
00477 hRpcCorrQdc[1][0][i]->Fill(fCrateInputEvent->fMqdc[qdcLeft1].charge[chLeftQdc1],
00478 0.5*(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]+fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1])-timeOffset);
00479 }
00480 if(fCrateInputEvent->fMqdc[tdcRight1].charge[chRight1] > 0)
00481 {
00482 hRpcCorrQdc[1][1][i]->Fill(fCrateInputEvent->fMqdc[qdcRight1].charge[chRightQdc1],
00483 0.5*(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]+
00484 fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1])-timeOffset);
00485 }
00486 }
00487 }
00488 }
00489 if(fRoluPar->getFillHisto())
00490 {
00491 fMapPar->getTdcMap(2,0,&tdcLeft,&tdcRight,&chLeft,&chRight);
00492 fMapPar->getTdcMap(2,1,&tdcLeft1,&tdcRight1,&chLeft1,&chRight1);
00493 fMapPar->getTdcMap(2,2,&qdcLeft1,&qdcRight1,&chLeftQdc1,&chRightQdc1);
00494 hROLUSum->Fill(0.25*(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]+fCrateInputEvent->fMtdc[tdcRight].lead[chRight]+
00495 fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]+fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1]));
00496
00497 if((fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft] > 0) && (fCrateInputEvent->fMtdc[tdcRight].lead[chRight] > 0) &&
00498 (fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1] > 0) && (fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1] > 0) &&
00499 (fCrateInputEvent->fMtdc[qdcLeft1].lead[chLeftQdc1] > 0) && (fCrateInputEvent->fMtdc[qdcRight1].lead[chRightQdc1] > 0))
00500 {
00501 hROLUSum1->Fill(fabs(0.25*((fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]+fCrateInputEvent->fMtdc[tdcRight].lead[chRight])+
00502 (fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]+fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1]))-
00503 (0.5*(fCrateInputEvent->fMtdc[qdcLeft1].lead[chLeftQdc1]+fCrateInputEvent->fMtdc[qdcRight1].lead[chRightQdc1]))));
00504 hROLUSum2->Fill((0.25*(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]+fCrateInputEvent->fMtdc[tdcRight].lead[chRight])+
00505 (fCrateInputEvent->fMtdc[qdcLeft1].lead[chLeftQdc1]+fCrateInputEvent->fMtdc[qdcRight1].lead[chRightQdc1]))-
00506 (0.5*(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]+fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1])));
00507
00508 hROLUSum3->Fill((0.25*(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]+fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1])+
00509 (fCrateInputEvent->fMtdc[qdcLeft1].lead[chLeftQdc1]+fCrateInputEvent->fMtdc[qdcRight1].lead[chRightQdc1]))-
00510 (0.5*(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]+fCrateInputEvent->fMtdc[tdcRight].lead[chRight])));
00511 }
00512 if(((fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]>0) && (fCrateInputEvent->fMtdc[tdcRight].lead[chRight] > 0)) &&
00513 ((fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]>0) && (fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1] > 0)))
00514 hROLURes->Fill((0.5*(fabs(fCrateInputEvent->fMtdc[tdcLeft].lead[chLeft]+fCrateInputEvent->fMtdc[tdcRight].lead[chRight]))-
00515 (0.5*(fCrateInputEvent->fMtdc[tdcLeft1].lead[chLeft1]+fCrateInputEvent->fMtdc[tdcRight1].lead[chRight1]))));
00516 if((fCrateInputEvent->fMtdc[qdcLeft1].lead[chLeftQdc1] > 0) && (fCrateInputEvent->fMtdc[qdcRight1].lead[chRightQdc1] > 0))
00517 hROLURes1->Fill(0.5*fabs(fCrateInputEvent->fMtdc[qdcLeft1].lead[chLeftQdc1] -
00518 fCrateInputEvent->fMtdc[qdcRight1].lead[chRightQdc1]));
00519 }
00520 if (fBeamEvent && fBeamEvent->IsValid()) {
00521
00522 }
00523
00524 }
00525 }