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

beamtime/gsi-aug12/hd/go4/ROSSENDORF/TRossendorfProc.cxx (r4864/r3172)

Go to the documentation of this file.
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    // first assign input event:
00257    // since input event object is never discarded within processor lifetime,
00258    // we just search for subevent by name once to speed up processing
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    // then assign output event
00276    // since output event object is never discarded within processor lifetime,
00277    // we just search for subevent by name once to speed up processing
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          // since output event object is never discarded within processor lifetime,
00285          // we just search for subevent by name once to speed up processing
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       // place for the code
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         // one can use additional info from Beam detectors
00522      }
00523 
00524    }
00525 }

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