00001 #include "TMatchingProc.h"
00002
00003 #include "TMath.h"
00004 #include "TF1.h"
00005 #include "TFitResult.h"
00006 #include "TLatex.h"
00007
00008 TMatchingProc::TMatchingProc(const char* name) : TCBMBeamtimeProc(name),
00009 fCrateInputEvent(0),
00010 fTriglogInputEvent(0),
00011 fVftxInputEvent(0),
00012 fRpcHdInputEvent(0),
00013 fRpcBucInputEvent(0),
00014 fRpcBucMod1InputEvent(0),
00015 fRpcBucMod2InputEvent(0),
00016 fRpcBucMod3InputEvent(0),
00017 fRpcBucMod4InputEvent(0),
00018 fPlasticsEvent(0),
00019 fScalersInputEvent(0),
00020 fOutputEvent(0)
00021 {
00022 TGo4Log::Info("**** TMatchingProc: Create instance %s" , name );
00023
00024 fPar = (TMatchingParam*) MakeParameter("MatchingPar", "TMatchingParam");
00025
00026 fParRpcHd = (TRpcParam*) MakeParameter("RpcPar_Hd", "TRpcParam");
00027 fParRpcBuc = (TRpcParam*) MakeParameter("RpcPar_Buc_Ref", "TRpcParam");
00028
00029 fParRpcBucMod1 = (TRpcParam*) GetParameter("RpcPar_Buc_Mod1");
00030 if( 0 == fParRpcBucMod1)
00031 cout<<"Parameter for Bucarest Module Rpc 1 not found => Matching Histo disabled"<<endl;
00032 fParRpcBucMod2 = (TRpcParam*) GetParameter("RpcPar_Buc_Mod2");
00033 if( 0 == fParRpcBucMod2)
00034 cout<<"Parameter for Bucarest Module Rpc 2 not found => Matching Histo disabled"<<endl;
00035 fParRpcBucMod3 = (TRpcParam*) GetParameter("RpcPar_Buc_Mod3");
00036 if( 0 == fParRpcBucMod3)
00037 cout<<"Parameter for Bucarest Module Rpc 3 not found => Matching Histo disabled"<<endl;
00038 fParRpcBucMod4 = (TRpcParam*) GetParameter("RpcPar_Buc_Mod4");
00039 if( 0 == fParRpcBucMod4)
00040 cout<<"Parameter for Bucarest Module Rpc 4 not found => Matching Histo disabled"<<endl;
00041
00042
00043 fMatchingMulHdMulBuc =
00044 MakeTH2('D', Form("Matching/fMatchingMul%sMul%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00045 Form("Mul %s vs Mul %s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00046 20, 0, 20,
00047 20, 0, 20,
00048 Form("Mul %s", fParRpcHd->sStripRpcName.Data()),
00049 Form("Mul %s", fParRpcBuc->sStripRpcName.Data()) );
00050
00051 fMatchingMulHdMulBucBigSizeBuc =
00052 MakeTH2('D', Form("Matching/fMatchingBigBucMul%sMul%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00053 Form("Mul %s vs Mul %s, at least 1 Buc size>1", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00054 20, 0, 20,
00055 20, 0, 20,
00056 Form("Mul %s", fParRpcHd->sStripRpcName.Data()),
00057 Form("Mul %s", fParRpcBuc->sStripRpcName.Data()) );
00058
00059
00060 fXMatchingMul1 =
00061 MakeTH2('D', Form("Matching/fMul1XMatching_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00062 Form("%s Clusters X vs %s Clusters X, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00063 300, -150, 150,
00064 300, -150, 150,
00065 Form("%s Clusters X [cm]", fParRpcHd->sStripRpcName.Data()),
00066 Form("%s Clusters X [cm]", fParRpcBuc->sStripRpcName.Data()) );
00067 fYMatchingMul1 =
00068 MakeTH2('D', Form("Matching/fMul1YMatching_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00069 Form("%s Clusters Y vs %s Clusters Y, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00070 300, -150, 150,
00071 300, -150, 150,
00072 Form("%s Clusters Y [cm]", fParRpcHd->sStripRpcName.Data()),
00073 Form("%s Clusters Y [cm]", fParRpcBuc->sStripRpcName.Data()) );
00074 fMatchingMul1 =
00075 MakeTH2('D', Form("Matching/fMul1Matching_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00076 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00077 400, -50, 50,
00078 400, -50, 50,
00079 "dX [cm]", "dY [cm]" ) ;
00080
00081 fMatchingMulBuc1 =
00082 MakeTH2('D', Form("Matching/fMulBuc1Matching_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00083 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in Buc RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00084 400, -100, 100,
00085 400, -100, 100,
00086 "dX [cm]", "dY [cm]" ) ;
00087
00088
00089 fBucMulVsRate =
00090 MakeTH2('D', Form("Matching/fBucMulVsRate_%s_", fParRpcBuc->sStripRpcName.Data()),
00091 Form("%s Clusters: nb cluster vs rate in Buc RPC ", fParRpcBuc->sStripRpcName.Data()) ,
00092 1600, 0, 40000,
00093 fParRpcBuc->uNbStrips/2, 0, fParRpcBuc->uNbStrips/2,
00094 "Rate [Hz/cm^2]", "Nb clusters []" ) ;
00095 fHdMulVsRate =
00096 MakeTH2('D', Form("Matching/fHdMulVsRate_%s_", fParRpcHd->sStripRpcName.Data()),
00097 Form("%s Clusters: nb cluster vs rate in Hd RPC ", fParRpcHd->sStripRpcName.Data()) ,
00098 1600, 0, 40000,
00099 fParRpcHd->uNbStrips/2, 0, fParRpcHd->uNbStrips/2,
00100 "Rate [Hz/cm^2]", "Nb clusters []" ) ;
00101
00102
00103 fBucMul1Rate =
00104 MakeTH1('D', Form("Matching/fBucMul1Rate_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00105 Form("%s Clusters: nb events with 1 cluster in Buc RPC vs Rate", fParRpcBuc->sStripRpcName.Data()) ,
00106 800, 0, 400000,
00107 "Rate [Hz]", "Events []" ) ;
00108 fHdMulBucMul1Rate =
00109 MakeTH1('D', Form("Matching/fHdMulBucMul1Rate_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00110 Form("%s vs %s Clusters: nb events with 1 cluster in Buc RPC & >1 cluster in Hd RPC vs rate",
00111 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00112 800, 0, 400000,
00113 "Rate [cm]", "Events []" ) ;
00114
00115
00116 fHdEffVsRateBucMul1 = (TProfile*)GetHistogram( Form("Matching/Efficiency/fHdEffVsRateBucMul1_%s_%s",
00117 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data() ) );
00118 if( 0 == fHdEffVsRateBucMul1 )
00119 {
00120 fHdEffVsRateBucMul1 = new TProfile( Form("fHdEffVsRateBucMul1_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00121 Form("%s vs %s Clusters: efficiency of Hd RPC vs rate in events with 1 cluster in Buc RPC; Rate [Hz/cm^2]; Efficiency [%%]",
00122 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data() ) ,
00123 500, 0, 20000
00124 );
00125 AddHistogram( fHdEffVsRateBucMul1, "Matching/Efficiency/" );
00126 }
00127 fHdEffVsRateBucMul1Ok = (TProfile*)GetHistogram( Form("Matching/Efficiency/fHdEffVsRateBucMul1Ok_%s_%s",
00128 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data() ) );
00129 if( 0 == fHdEffVsRateBucMul1Ok )
00130 {
00131 fHdEffVsRateBucMul1Ok = new TProfile( Form("fHdEffVsRateBucMul1Ok_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00132 Form("%s vs %s Clusters: efficiency of Hd RPC vs rate in events with 1 cluster in Buc RPC matching; Rate [Hz/cm^2]; Efficiency [%%]",
00133 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data() ) ,
00134 500, 0, 20000
00135 );
00136 AddHistogram( fHdEffVsRateBucMul1Ok, "Matching/Efficiency/" );
00137 }
00138
00139 fHdEffVsTimeBucMul1 = (TProfile*)GetHistogram( Form("Matching/Efficiency/fHdEffVsTimeBucMul1_%s_%s",
00140 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data() ) );
00141 if( 0 == fHdEffVsTimeBucMul1 )
00142 {
00143 fHdEffVsTimeBucMul1 = new TProfile( Form("fHdEffVsTimeBucMul1_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00144 "Efficiency of Hd RPC vs time in events with 1 cluster in Buc RPC; Time [s]; Efficiency [%]",
00145 36000, 0, 3600);
00146 AddHistogram( fHdEffVsTimeBucMul1, "Matching/Efficiency/" );
00147 }
00148 fHdEffVsTimeBucMul1Ok = (TProfile*)GetHistogram( Form("Matching/Efficiency/fHdEffVsTimeBucMul1Ok_%s_%s",
00149 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data() ) );
00150 if( 0 == fHdEffVsTimeBucMul1Ok )
00151 {
00152 fHdEffVsTimeBucMul1Ok = new TProfile( Form("fHdEffVsTimeBucMul1Ok_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00153 "Efficiency of Hd RPC vs time in events with 1 cluster in Buc RPC matching; Time [s]; Efficiency [%]",
00154 36000, 0, 3600);
00155 AddHistogram( fHdEffVsTimeBucMul1Ok, "Matching/Efficiency/" );
00156 }
00157
00158 fuNbEventsSummed = 0;
00159 fuNbEventsWithBucMul1 = 0;
00160 fuNbEventsWithBucMul1Hd = 0;
00161 fuNbEventsWithBucMul1HdOk = 0;
00162 fdBucRatesSummed = 0.0;
00163
00164
00165 fHdEffVsBucSizeMul1 =
00166 MakeTH1('D', Form("Matching/Efficiency/fHdEffVsBucSizeMul1_%s_%s",
00167 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00168 "Efficiency of Hd RPC vs buc cluster size in events with 1 cluster in Buc RPC" ,
00169 fParRpcBuc->uNbStrips -1, 1, fParRpcBuc->uNbStrips,
00170 "Cluster Size []", "Efficiency [%]" ) ;
00171 fHdEffVsBucSizeMul1Nb =
00172 MakeTH1('D', Form("Matching/EfficiencyNb/fHdEffVsBucSizeMul1Nb_%s_%s",
00173 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00174 "Efficiency of Hd RPC vs buc cluster size in events with 1 cluster in Buc RPC" ,
00175 fParRpcBuc->uNbStrips -1, 1, fParRpcBuc->uNbStrips,
00176 "Cluster Size []", "Nb of base events []" ) ;
00177 fHdEffVsBucSizeMul1Ok =
00178 MakeTH1('D', Form("Matching/Efficiency/fHdEffVsBucSizeMul1Ok_%s_%s",
00179 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00180 "Efficiency of Hd RPC vs buc cluster size in events with 1 cluster matching in Buc RPC" ,
00181 fParRpcBuc->uNbStrips -1, 1, fParRpcBuc->uNbStrips,
00182 "Cluster Size []", "Efficiency [%]" ) ;
00183 for( UInt_t uClusterSize = 0; uClusterSize < fParRpcBuc->uNbStrips; uClusterSize++)
00184 {
00185 fiNbEventsWith1BigBucCl[uClusterSize] = 0;
00186 fiNbEventsWith1BigBucClHd[uClusterSize] = 0;
00187 fiNbEventsWith1BigBucClHdOk[uClusterSize] = 0;
00188 }
00189 fHdEffBuMul1BucSize2 = new TLatex(0.5,0.5,"-- demo text --");
00190 fHdEffBuMul1BucSize2->SetName("FullEffHd");
00191 fHdEffBuMul1BucSize2->SetNDC();
00192 AddObject(fHdEffBuMul1BucSize2);
00193
00194 if( 1 == fPar->uTriggerSelDebugHistos)
00195 for(Int_t iTrigger = 0; iTrigger<16; iTrigger++)
00196 fMatchingMul1TriggerDebug[iTrigger] =
00197 MakeTH2('D', Form("Matching/TrigSel/fMul1MatchingTrig%d_%s_%s", iTrigger, fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00198 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC and trigger %d",
00199 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data(), iTrigger) ,
00200 80, -20, 20,
00201 80, -20, 20,
00202 "dX [cm]", "dY [cm]" ) ;
00203
00204 fXMatchingMul1StripHd =
00205 MakeTH2('D', Form("Matching/StripSel/fXMatchingMul1StripHd_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00206 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00207 400, -100, 100,
00208 fParRpcHd->uNbStrips, -0.5, fParRpcHd->uNbStrips -0.5,
00209 "dX [cm]", "Strip []" ) ;
00210 fYMatchingMul1StripHd =
00211 MakeTH2('D', Form("Matching/StripSel/fYMatchingMul1StripHd_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00212 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00213 400, -100, 100,
00214 fParRpcHd->uNbStrips, -0.5, fParRpcHd->uNbStrips -0.5,
00215 "dY [cm]", "Strip []" ) ;
00216 fMatchingMul1StripHd = (TH3*)GetHistogram(Form("Matching/StripSel/fMul1MatchingStripHd_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) );
00217 if( 0 == fMatchingMul1StripHd )
00218 {
00219 fMatchingMul1StripHd = new TH3I
00220 ( Form("fMul1MatchingStripHd_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00221 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC; dX [cm]; dY [cm]; Strip []",
00222 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00223 400, -100, 100,
00224 400, -100, 100,
00225 fParRpcHd->uNbStrips, -0.5, fParRpcHd->uNbStrips -0.5 ) ;
00226 AddHistogram( fMatchingMul1StripHd, "Matching/StripSel/" );
00227 }
00228
00229 fXMatchingMul1DtHd =
00230 MakeTH2('D', Form("Matching/TimeSel/fXMatchingMul1DtHd_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00231 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00232 400, -100, 100,
00233 60, -30 ,30,
00234 "dX [cm]", "X Hd (From Dt) [cm]" ) ;
00235 fYMatchingMul1DtHd =
00236 MakeTH2('D', Form("Matching/TimeSel/fYMatchingMul1DtHd_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00237 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00238 400, -100, 100,
00239 60, -30 ,30,
00240 "dY [cm]", "X Hd (From Dt) [cm]" ) ;
00241
00242 fTMatchingMul1StripHd =
00243 MakeTH2('D', Form("Matching/StripSel/fTMatchingMul1StripHd_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00244 Form("%s vs %s Clusters: Dt, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00245 2000, -20000, 20000,
00246 fParRpcHd->uNbStrips, -0.5, fParRpcHd->uNbStrips -0.5,
00247 "Dt = Cluster Mean time(HD) - Cluster Mean time(BUC) [ps]", "Strip []", "Counts []" ) ;
00248 fTMatchingMul1DtHd =
00249 MakeTH2('D', Form("Matching/TimeSel/fTMatchingMul1DtHd_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00250 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00251 2000, -20000, 20000,
00252 60, -30 ,30,
00253 "Dt = Cluster Mean time(HD) - Cluster Mean time(BUC) [ps]", "X Hd (From Dt) [cm]", "Counts []" ) ;
00254
00255 fXMatchingMul1StripBuc =
00256 MakeTH2('D', Form("Matching/StripSel/fXMatchingMul1StripBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00257 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00258 400, -100, 100,
00259 fParRpcBuc->uNbStrips, -0.5, fParRpcBuc->uNbStrips -0.5,
00260 "dX [cm]", "Strip []" ) ;
00261 fYMatchingMul1StripBuc =
00262 MakeTH2('D', Form("Matching/StripSel/fYMatchingMul1StripBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00263 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00264 400, -100, 100,
00265 fParRpcBuc->uNbStrips, -0.5, fParRpcBuc->uNbStrips -0.5,
00266 "dY [cm]", "Strip []" ) ;
00267 fMatchingMul1StripBuc = (TH3*)GetHistogram(Form("Matching/StripSel/fMul1MatchingStripBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) );
00268 if( 0 == fMatchingMul1StripBuc )
00269 {
00270 fMatchingMul1StripBuc = new TH3I
00271 ( Form("fMul1MatchingStripBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00272 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC; dX [cm]; dY [cm]; Strip []",
00273 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00274 400, -100, 100,
00275 400, -100, 100,
00276 fParRpcBuc->uNbStrips, -0.5, fParRpcBuc->uNbStrips -0.5 ) ;
00277 AddHistogram( fMatchingMul1StripBuc, "Matching/StripSel/" );
00278 }
00279
00280 fXMatchingMul1DtBuc =
00281 MakeTH2('D', Form("Matching/TimeSel/fXMatchingMul1DtBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00282 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00283 400, -100, 100,
00284 20, -10 ,10,
00285 "dX [cm]", "Y Buc (From Dt) [cm]" ) ;
00286 fYMatchingMul1DtBuc =
00287 MakeTH2('D', Form("Matching/TimeSel/fYMatchingMul1DtBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00288 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00289 400, -100, 100,
00290 20, -10 ,10,
00291 "dY [cm]", "Y Buc (From Dt) [cm]" ) ;
00292
00293 fTMatchingMul1StripBuc =
00294 MakeTH2('D', Form("Matching/StripSel/fTMatchingMul1StripBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00295 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00296 2000, -20000, 20000,
00297 fParRpcBuc->uNbStrips, -0.5, fParRpcBuc->uNbStrips -0.5,
00298 "Dt = Cluster Mean time(HD) - Cluster Mean time(BUC) [ps]", "Strip []" ) ;
00299 fTMatchingMul1DtBuc =
00300 MakeTH2('D', Form("Matching/TimeSel/fTMatchingMul1DtBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00301 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00302 2000, -20000, 20000,
00303 20, -10 ,10,
00304 "Dt = Cluster Mean time(HD) - Cluster Mean time(BUC) [ps]", "Y Buc (From Dt) [cm]" ) ;
00305
00306
00307 fTMatchingMul1StripTotLeftHd = (TH3*)GetHistogram(Form("Matching/StripTot/fTMatchingMul1StripTotLeftHd_%s_%s",
00308 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) );
00309 if( 0 == fTMatchingMul1StripTotLeftHd )
00310 {
00311 fTMatchingMul1StripTotLeftHd = new TH3I
00312 ( Form("fTMatchingMul1StripTotLeftHd_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00313 Form("%s vs %s Clusters: dT vs strip vs tot left, events with 1 cluster in each RPC;Dt = Cluster Mean time(HD) - Cluster Mean time(BUC) [ps];Strip Hd[];Tot left %s [ps]",
00314 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data(), fParRpcHd->sStripRpcName.Data()) ,
00315 1000, -10000, 10000,
00316 fParRpcBuc->uNbStrips, -0.5, fParRpcBuc->uNbStrips -0.5,
00317 100, 0, 10000
00318 ) ;
00319 AddHistogram( fTMatchingMul1StripTotLeftHd, "Matching/StripTot/" );
00320 }
00321 fTMatchingMul1StripTotRightHd = (TH3*)GetHistogram(Form("Matching/StripTot/fTMatchingMul1StripTotRightHd_%s_%s",
00322 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) );
00323 if( 0 == fTMatchingMul1StripTotRightHd )
00324 {
00325 fTMatchingMul1StripTotRightHd = new TH3I
00326 ( Form("fTMatchingMul1StripTotRightHd_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00327 Form("%s vs %s Clusters: dT vs strip vs tot right, events with 1 cluster in each RPC;Dt = Cluster Mean time(HD) - Cluster Mean time(BUC) [ps];Strip Hd[];Tot right %s [ps",
00328 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data(), fParRpcHd->sStripRpcName.Data()) ,
00329 1000, -10000, 10000,
00330 fParRpcBuc->uNbStrips, -0.5, fParRpcBuc->uNbStrips -0.5,
00331 100, 0, 10000
00332 ) ;
00333 AddHistogram( fTMatchingMul1StripTotRightHd, "Matching/StripTot/" );
00334 }
00335 fTMatchingMul1StripTotLeftBuc = (TH3*)GetHistogram(Form("Matching/StripTot/fTMatchingMul1StripTotLeftBuc_%s_%s",
00336 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) );
00337 if( 0 == fTMatchingMul1StripTotLeftBuc )
00338 {
00339 fTMatchingMul1StripTotLeftBuc = new TH3I
00340 (Form("fTMatchingMul1StripTotLeftBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00341 Form("%s vs %s Clusters: dT vs strip vs tot left, events with 1 cluster in each RPC;Dt = Cluster Mean time(HD) - Cluster Mean time(BUC) [ps];Strip Buc[];Tot left %s [ps]",
00342 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00343 1000, -10000, 10000,
00344 fParRpcBuc->uNbStrips, -0.5, fParRpcBuc->uNbStrips -0.5,
00345 100, 0, 10000
00346 ) ;
00347 AddHistogram( fTMatchingMul1StripTotLeftBuc, "Matching/StripTot/" );
00348 }
00349 fTMatchingMul1StripTotRightBuc = (TH3*)GetHistogram(Form("Matching/StripTot/fTMatchingMul1StripTotRightBuc_%s_%s",
00350 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) );
00351 if( 0 == fTMatchingMul1StripTotRightBuc )
00352 {
00353 fTMatchingMul1StripTotRightBuc = new TH3I
00354 (Form("fTMatchingMul1StripTotRightBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00355 Form("%s vs %s Clusters: dT vs strip vs tot right, events with 1 cluster in each RPC;Dt = Cluster Mean time(HD) - Cluster Mean time(BUC) [ps];Strip Buc[];Tot right %s [ps",
00356 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00357 1000, -10000, 10000,
00358 fParRpcBuc->uNbStrips, -0.5, fParRpcBuc->uNbStrips -0.5,
00359 100, 0, 10000
00360 ) ;
00361 AddHistogram( fTMatchingMul1StripTotRightBuc, "Matching/StripTot/" );
00362 }
00363
00364 fDtMul1 =
00365 MakeTH1('D', Form("Matching/Dt/fMul1Dt_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00366 Form("%s vs %s Clusters: Mean time difference, events with 1 clusters in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00367 40000, -200000, 200000,
00368 "Dt = Cluster Mean time(HD) - Cluster Mean time(BUC) [ps]", "Counts []" ) ;
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383 fMatchingDtMul1 = (TH3*)GetHistogram(Form("Matching/fMatchingDtMul1_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) );
00384 if( 0 == fMatchingDtMul1 )
00385 {
00386 fMatchingDtMul1 = new TH3I
00387 ( Form("fMatchingDtMul1_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00388 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC; dX [cm]; dY [cm]; dT [ps]",
00389 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00390 80, -20, 20,
00391 80, -20, 20,
00392 500, -60000, -10000
00393 ) ;
00394 AddHistogram( fMatchingDtMul1, "Matching/" );
00395 }
00396
00397
00398 fXMatchingMul2 =
00399 MakeTH2('D', Form("Matching/fMul2XMatching_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00400 Form("%s Clusters X vs %s Clusters X, events with 1-2 clusters in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00401 300, -150, 150,
00402 300, -150, 150,
00403 Form("%s Clusters X [cm]", fParRpcHd->sStripRpcName.Data()),
00404 Form("%s Clusters X [cm]", fParRpcBuc->sStripRpcName.Data()) );
00405 fYMatchingMul2 =
00406 MakeTH2('D', Form("Matching/fMul2YMatching_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00407 Form("%s Clusters Y vs %s Clusters Y, events with 1-2 clusters in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00408 300, -150, 150,
00409 300, -150, 150,
00410 Form("%s Clusters Y [cm]", fParRpcHd->sStripRpcName.Data()),
00411 Form("%s Clusters Y [cm]", fParRpcBuc->sStripRpcName.Data()) );
00412 fMatchingMul2 =
00413 MakeTH2('D', Form("Matching/fMul2Matching_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00414 Form("%s vs %s Clusters: dX / dY, events with 1-2 clusters in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00415 400, -100, 100,
00416 400, -100, 100,
00417 "dX [cm]", "dY [cm]" ) ;
00418
00419 fFluxHdLeftEvolution = (TProfile*)GetHistogram( "Matching/fFluxHdLeftEvolution" );
00420 if( 0 == fFluxHdLeftEvolution )
00421 {
00422 fFluxHdLeftEvolution = new TProfile( "fFluxHdLeftEvolution",
00423 "Evolution of flux on Heidelberg counter; Time [s]; Rate [Hz/cm^2]",
00424 36000, 0, 3600);
00425 AddHistogram( fFluxHdLeftEvolution, "Matching/" );
00426 }
00427 fFluxHdRightEvolution = (TProfile*)GetHistogram( "Matching/fFluxHdRightEvolution" );
00428 if( 0 == fFluxHdRightEvolution )
00429 {
00430 fFluxHdRightEvolution = new TProfile( "fFluxHdRightEvolution",
00431 "Evolution of flux on Heidelberg counter; Time [s]; Rate [Hz/cm^2]",
00432 36000, 0, 3600);
00433 AddHistogram( fFluxHdRightEvolution, "Matching/" );
00434 }
00435 #if SCALORMU_NB_SCAL == 16
00436
00437 fFluxBucEvolution = (TProfile*)GetHistogram( "Matching/fFluxBucEvolution" );
00438 if( 0 == fFluxBucEvolution )
00439 {
00440 fFluxBucEvolution = new TProfile( "fFluxBucEvolution",
00441 "Evolution of flux on Buc Reference counter; Time [s]; Rate [Hz/cm^2]",
00442 36000, 0, 3600);
00443 AddHistogram( fFluxBucEvolution, "Matching/" );
00444 }
00445 #else
00446
00447 fFluxBucLeftEvolution = (TProfile*)GetHistogram( "Matching/fFluxBucLeftEvolution" );
00448 if( 0 == fFluxBucLeftEvolution )
00449 {
00450 fFluxBucLeftEvolution = new TProfile( "fFluxBucLeftEvolution",
00451 "Evolution of flux on Buc Reference counter; Time [s]; Rate [Hz/cm^2]",
00452 36000, 0, 3600);
00453 AddHistogram( fFluxBucLeftEvolution, "Matching/" );
00454 }
00455 fFluxBucRightEvolution = (TProfile*)GetHistogram( "Matching/fFluxBucRightEvolution" );
00456 if( 0 == fFluxBucRightEvolution )
00457 {
00458 fFluxBucRightEvolution = new TProfile( "fFluxBucRightEvolution",
00459 "Evolution of flux on Buc Reference counter; Time [s]; Rate [Hz/cm^2]",
00460 36000, 0, 3600);
00461 AddHistogram( fFluxBucRightEvolution, "Matching/" );
00462 }
00463 #endif
00464 fFluxComparisonHdLeftBuc =
00465 MakeTH2('D', Form("Matching/fFluxComparisonHdLeftBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00466 Form("%s vs %s Clusters: comparison of fluxes in Heidelberg and Buc Reference", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00467 1000, -10, 19990,
00468 1000, -10, 19990,
00469 "Rate [Hz/cm^2]", "Rate [Hz/cm^2]", "Events []" ) ;
00470 fFluxComparisonHdRightBuc =
00471 MakeTH2('D', Form("Matching/fFluxComparisonHdRightBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00472 Form("%s vs %s Clusters: comparison of fluxes in Heidelberg and Buc Reference", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00473 1000, -10, 19990,
00474 1000, -10, 19990,
00475 "Rate [Hz/cm^2]", "Rate [Hz/cm^2]", "Events []" ) ;
00476
00477 if( 0 != fParRpcBucMod1)
00478 {
00479 fFluxBucMod1Evolution = new TProfile( "fFluxBucMod1Evolution",
00480 "Evolution of flux on RPC counter 1 in new module; Time [s]; Rate [Hz/cm^2]",
00481 36000, 0, 3600);
00482 AddHistogram( fFluxBucMod1Evolution, "Matching/BucMod/" );
00483 if( 0 != fParRpcBucMod2)
00484 {
00485 fMatchingMod12Mul1 =
00486 MakeTH2('D', Form("Matching/BucMod/fMatching_%s_%s_Mul1", fParRpcBucMod1->sStripRpcName.Data(), fParRpcBucMod2->sStripRpcName.Data()),
00487 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcBucMod1->sStripRpcName.Data(), fParRpcBucMod2->sStripRpcName.Data()) ,
00488 400, -50, 50,
00489 400, -50, 50,
00490 "dX [cm]", "dY [cm]" ) ;
00491 fMatchingTvsDistMod12Mul1 =
00492 MakeTH2('D', Form("Matching/BucMod/fMatchingTvsDist_%s_%s_Mul1", fParRpcBucMod1->sStripRpcName.Data(), fParRpcBucMod2->sStripRpcName.Data()),
00493 Form("%s vs %s Clusters: Time difference vs Cluster distance, events with 1 cluster in each RPC", fParRpcBucMod1->sStripRpcName.Data(), fParRpcBucMod2->sStripRpcName.Data()) ,
00494 2000, -10000, 10000,
00495 100, -5, 5,
00496 Form("T_%s - T_%s [ps]", fParRpcBucMod1->sStripRpcName.Data(), fParRpcBucMod2->sStripRpcName.Data()),
00497 "Sqrt((X-X)^2+(Y-Y)^2) [cm]") ;
00498 }
00499
00500 if( 0 != fParRpcBucMod3)
00501 {
00502 fMatchingMod13Mul1 =
00503 MakeTH2('D', Form("Matching/BucMod/fMatching_%s_%s_Mul1", fParRpcBucMod1->sStripRpcName.Data(), fParRpcBucMod3->sStripRpcName.Data()),
00504 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcBucMod1->sStripRpcName.Data(), fParRpcBucMod3->sStripRpcName.Data()) ,
00505 400, -50, 50,
00506 400, -50, 50,
00507 "dX [cm]", "dY [cm]" ) ;
00508 fMatchingTvsDistMod13Mul1 =
00509 MakeTH2('D', Form("Matching/BucMod/fMatchingTvsDist_%s_%s_Mul1", fParRpcBucMod1->sStripRpcName.Data(), fParRpcBucMod3->sStripRpcName.Data()),
00510 Form("%s vs %s Clusters: Time difference vs Cluster distance, events with 1 cluster in each RPC", fParRpcBucMod1->sStripRpcName.Data(), fParRpcBucMod3->sStripRpcName.Data()) ,
00511 2000, -10000, 10000,
00512 100, -5, 5,
00513 Form("T_%s - T_%s [ps]", fParRpcBucMod1->sStripRpcName.Data(), fParRpcBucMod3->sStripRpcName.Data()),
00514 "Sqrt((X-X)^2+(Y-Y)^2) [cm]") ;
00515 }
00516 }
00517 if( 0 != fParRpcBucMod2)
00518 {
00519 fFluxBucMod2Evolution = new TProfile( "fFluxBucMod2Evolution",
00520 "Evolution of flux on RPC counter 2 in new module; Time [s]; Rate [Hz/cm^2]",
00521 36000, 0, 3600);
00522 AddHistogram( fFluxBucMod2Evolution, "Matching/BucMod/" );
00523
00524 if( 0 != fParRpcBucMod4)
00525 {
00526 fMatchingMod24Mul1 =
00527 MakeTH2('D', Form("Matching/BucMod/fMatching_%s_%s_Mul1", fParRpcBucMod2->sStripRpcName.Data(), fParRpcBucMod4->sStripRpcName.Data()),
00528 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcBucMod2->sStripRpcName.Data(), fParRpcBucMod4->sStripRpcName.Data()) ,
00529 400, -50, 50,
00530 400, -50, 50,
00531 "dX [cm]", "dY [cm]" ) ;
00532 fMatchingTvsDistMod24Mul1 =
00533 MakeTH2('D', Form("Matching/BucMod/fMatchingTvsDist_%s_%s_Mul1", fParRpcBucMod2->sStripRpcName.Data(), fParRpcBucMod4->sStripRpcName.Data()),
00534 Form("%s vs %s Clusters: Time difference vs Cluster distance, events with 1 cluster in each RPC", fParRpcBucMod2->sStripRpcName.Data(), fParRpcBucMod4->sStripRpcName.Data()) ,
00535 2000, -10000, 10000,
00536 100, -5, 5,
00537 Form("T_%s - T_%s [ps]", fParRpcBucMod2->sStripRpcName.Data(), fParRpcBucMod4->sStripRpcName.Data()),
00538 "Sqrt((X-X)^2+(Y-Y)^2) [cm]") ;
00539 }
00540 }
00541 if( 0 != fParRpcBucMod3)
00542 {
00543 fFluxBucMod3Evolution = new TProfile( "fFluxBucMod3Evolution",
00544 "Evolution of flux on RPC counter 3 in new module; Time [s]; Rate [Hz/cm^2]",
00545 36000, 0, 3600);
00546 AddHistogram( fFluxBucMod3Evolution, "Matching/BucMod/" );
00547
00548 if( 0 != fParRpcBucMod4)
00549 {
00550 fMatchingMod34Mul1 =
00551 MakeTH2('D', Form("Matching/BucMod/fMatching_%s_%s_Mul1", fParRpcBucMod3->sStripRpcName.Data(), fParRpcBucMod4->sStripRpcName.Data()),
00552 Form("%s vs %s Clusters: dX / dY, events with 1 cluster in each RPC", fParRpcBucMod3->sStripRpcName.Data(), fParRpcBucMod4->sStripRpcName.Data()) ,
00553 400, -50, 50,
00554 400, -50, 50,
00555 "dX [cm]", "dY [cm]" ) ;
00556 fMatchingTvsDistMod34Mul1 =
00557 MakeTH2('D', Form("Matching/BucMod/fMatchingTvsDist_%s_%s_Mul1", fParRpcBucMod3->sStripRpcName.Data(), fParRpcBucMod4->sStripRpcName.Data()),
00558 Form("%s vs %s Clusters: Time difference vs Cluster distance, events with 1 cluster in each RPC", fParRpcBucMod3->sStripRpcName.Data(), fParRpcBucMod4->sStripRpcName.Data()) ,
00559 2000, -10000, 10000,
00560 100, -5, 5,
00561 Form("T_%s - T_%s [ps]", fParRpcBucMod3->sStripRpcName.Data(), fParRpcBucMod4->sStripRpcName.Data()),
00562 "Sqrt((X-X)^2+(Y-Y)^2) [cm]") ;
00563 }
00564 }
00565 if( 0 != fParRpcBucMod4)
00566 {
00567 fFluxBucMod4Evolution = new TProfile( "fFluxBucMod4Evolution",
00568 "Evolution of flux on RPC counter 4 in new module; Time [s]; Rate [Hz/cm^2]",
00569 36000, 0, 3600);
00570 AddHistogram( fFluxBucMod4Evolution, "Matching/BucMod/" );
00571 }
00572
00573
00574 fBucM1HdR1R2 =
00575 MakeTH2('D', Form("Matching/ClusterDist/fBucM1HdR1R2_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00576 Form("%s vs %s Clusters: events with 1 cluster in Buc, 2 in Hd, R(Buc-HD) for each", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00577 200, 0, 50,
00578 200, 0, 50,
00579 "R1 [cm]", "R2 [cm]" ) ;
00580 fHdM1BucR1R2 =
00581 MakeTH2('D', Form("Matching/ClusterDist/fHdM1BucR1R2_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00582 Form("%s vs %s Clusters: events with 1 cluster in Hd, 2 in Buc, R(Buc-HD) for each", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00583 200, 0, 50,
00584 200, 0, 50,
00585 "R1 [cm]", "R2 [cm]" ) ;
00586 fHdMatchingNbBucIndex =
00587 MakeTH2('D', Form("Matching/fHdMatchingNbBucIndex_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00588 Form("%s vs %s Clusters:Nb of position matching Hd cluster for each Buc cluster", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00589 fParRpcBuc->uNbStrips/2, -0.5, fParRpcBuc->uNbStrips/2 -0.5,
00590 fParRpcHd->uNbStrips/2, -0.5, fParRpcHd->uNbStrips/2 -0.5,
00591 "Cluster Index Buc []", "nb Matching clusters HD []" ) ;
00592 fBestMatchingAllMul =
00593 MakeTH2('D', Form("Matching/fBestMatchingAllMul_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00594 Form("%s vs %s Clusters: dX / dY, best cluster match", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00595 400, -100, 100,
00596 400, -100, 100,
00597 "dX [cm]", "dY [cm]" ) ;
00598 fBestDistanceBucIndex =
00599 MakeTH2('D', Form("Matching/fBestDistanceBucIndex_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00600 Form("%s vs %s Clusters: best R(Buc-HD) for each Buc cluster", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00601 fParRpcBuc->uNbStrips/2, -0.5, fParRpcBuc->uNbStrips/2 -0.5,
00602 200, 0, 50,
00603 "Cluster Index Buc []", "R [cm]" ) ;
00604
00605 fHdEffVsPlastics =
00606 MakeTH1('D', "Matching/Efficiency/fHdEffVsPlastics",
00607 "Efficiency of Hd RPC vs Plastic 1" ,
00608 3, 0, 3,
00609 "Plastic Combination []", "Efficiency [%]" ) ;
00610 fHdEffVsPlastics->GetXaxis()->SetBinLabel(1 , "Plas 1");
00611 fHdEffVsPlastics->GetXaxis()->SetBinLabel(2 , "Plas 2");
00612 fHdEffVsPlastics->GetXaxis()->SetBinLabel(3 , "Plas 1+2");
00613 fHdEffVsPlasticsNb =
00614 MakeTH1('D', "Matching/EfficiencyNb/fHdEffVsPlasticsNb",
00615 "Efficiency of Hd RPC vs Plastic 1" ,
00616 3, 0, 3,
00617 "Plastic Combination []", "Nb of base events []" ) ;
00618 fHdEffVsPlasticsNb->GetXaxis()->SetBinLabel(1 , "Plas 1");
00619 fHdEffVsPlasticsNb->GetXaxis()->SetBinLabel(2 , "Plas 2");
00620 fHdEffVsPlasticsNb->GetXaxis()->SetBinLabel(3 , "Plas 1+2");
00621
00622 fPlasticsDt =
00623 MakeTH1('D', "Matching/Dt/fPlasticsDt",
00624 "Plastic 1 mean time - Plastic 2 mean time" ,
00625 5000, -10000, 10000,
00626 "(t1+t2)/2 - (t3+t4)/2 []", "Counts []" ) ;
00627
00628 fiNbEventsWithPlastics1 = 0;
00629 fiNbEventsWithPlastics1Hd = 0;
00630 fiNbEventsWithPlastics2 = 0;
00631 fiNbEventsWithPlastics2Hd = 0;
00632 fiNbEventsWithPlastics12 = 0;
00633 fiNbEventsWithPlastics12Hd = 0;
00634 fHdEffPlastics = new TLatex(0.5,0.5,"-- demo text --");
00635 fHdEffPlastics->SetName("PlasticsEffHd");
00636 fHdEffPlastics->SetNDC();
00637 AddObject(fHdEffPlastics);
00638
00639 fHdEffVsBucPlastics =
00640 MakeTH1('D', "Matching/Efficiency/fHdEffVsBucPlastics",
00641 "Efficiency of Hd RPC vs Buc and Plastic and diamond" ,
00642 3, 0, 3,
00643 "Plastic Combination []", "Efficiency [%]" ) ;
00644 fHdEffVsBucPlastics->GetXaxis()->SetBinLabel(1 , "Plas 1");
00645 fHdEffVsBucPlastics->GetXaxis()->SetBinLabel(2 , "Plas 2");
00646 fHdEffVsBucPlastics->GetXaxis()->SetBinLabel(3 , "Plas 1+2");
00647 fHdEffVsBucPlasticsNb =
00648 MakeTH1('D', "Matching/EfficiencyNb/fHdEffVsBucPlasticsNb",
00649 "Efficiency of Hd RPC vs Buc and Plastic and diamond" ,
00650 3, 0, 3,
00651 "Plastic Combination []", "Nb of base events []" ) ;
00652 fHdEffVsBucPlasticsNb->GetXaxis()->SetBinLabel(1 , "Plas 1");
00653 fHdEffVsBucPlasticsNb->GetXaxis()->SetBinLabel(2 , "Plas 2");
00654 fHdEffVsBucPlasticsNb->GetXaxis()->SetBinLabel(3 , "Plas 1+2");
00655
00656 fiNbEventsWithBucPlastics1 = 0;
00657 fiNbEventsWithBucPlastics1Hd = 0;
00658 fiNbEventsWithBucPlastics2 = 0;
00659 fiNbEventsWithBucPlastics2Hd = 0;
00660 fiNbEventsWithBucPlastics12 = 0;
00661 fiNbEventsWithBucPlastics12Hd = 0;
00662 fHdEffBucPlastics = new TLatex(0.5,0.5,"-- demo text --");
00663 fHdEffBucPlastics->SetName("BucPlasticsEffHd");
00664 fHdEffBucPlastics->SetNDC();
00665 AddObject(fHdEffBucPlastics);
00666
00667 fDtDiamBuc =
00668 MakeTH1('D', "Matching/Dt/fDtDiamBuc",
00669 Form("%s Clusters: Mean time difference to diamond", fParRpcBuc->sStripRpcName.Data()) ,
00670 40000, -200000, 200000,
00671 "Dt = Diamond time(HD) - Cluster Mean time(BUC) [ps]", "Counts []" ) ;
00672 fDtCompHdBucVsDiamBuc =
00673 MakeTH2('D', "Matching/Dt/fDtCompHdBucVsDiamBuc",
00674 Form("%s vs %s Clusters: Mean time difference, events with matching cuts and diamond", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00675 500, -72000, -62000,
00676 1000, -10000, 10000,
00677 "Dt = Diamond time(HD) - Cluster Mean time(BUC) [ps]",
00678 "Dt = Cluster Mean time(HD) - Cluster Mean time(BUC) [ps]", "Counts []" ) ;
00679 fDtCompHdBucVsDiamBucCutPlastics =
00680 MakeTH2('D', "Matching/Dt/fDtCompHdBucVsDiamBucCutPlastics",
00681 Form("%s vs %s Clusters: Mean time difference, events with matching cuts and diamond and plastics",
00682 fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00683 500, -72000, -62000,
00684 1000, -10000, 10000,
00685 "Dt = Diamond time(HD) - Cluster Mean time(BUC) [ps]",
00686 "Dt = Cluster Mean time(HD) - Cluster Mean time(BUC) [ps]", "Counts []" ) ;
00687
00688
00689 fSingleEvtClusterPosDisplayHd =
00690 MakeTH2('D', Form("Matching/fSingleEvtClusterPosDisplay_%s", fParRpcHd->sStripRpcName.Data()),
00691 Form("%s Clusters: Single event display", fParRpcHd->sStripRpcName.Data()) ,
00692 400, -50, 50,
00693 400, -50, 50,
00694 "X [cm]", "Y [cm]" ) ;
00695 fSingleEvtClusterPosDisplayHd->SetMarkerSize(1);
00696 fSingleEvtClusterPosDisplayHd->SetMarkerColor(4);
00697 fSingleEvtClusterPosDisplayHd->SetMarkerStyle(8);
00698 fSingleEvtClusterPosDisplayBuc =
00699 MakeTH2('D', Form("Matching/fSingleEvtClusterPosDisplay_%s", fParRpcBuc->sStripRpcName.Data()),
00700 Form("%s Clusters: Single event display", fParRpcBuc->sStripRpcName.Data()) ,
00701 400, -50, 50,
00702 400, -50, 50,
00703 "X [cm]", "Y [cm]" ) ;
00704 fSingleEvtClusterPosDisplayBuc->SetMarkerSize(1);
00705 fSingleEvtClusterPosDisplayHd->SetMarkerColor(2);
00706 fSingleEvtClusterPosDisplayBuc->SetMarkerStyle(34);
00707
00708
00709 }
00710
00711
00712 TMatchingProc::~TMatchingProc()
00713 {
00714
00715 if( 0 < fParRpcHd->uNbStrips && 1 == fPar->uDtMatchingFitOn)
00716 {
00717
00718 TString sStripNumbHd;
00719 TString sStripCharHd;
00720 TString sNewOffsetHd;
00721 TString sOldOffsetHd;
00722 TString sWidthHd;
00723
00724 sStripNumbHd += Form("%-16s","Strip No.: ");
00725 sStripCharHd += Form("%-16s"," ");
00726 sOldOffsetHd += Form("%-16s","monitor_opt ");
00727 sNewOffsetHd += Form("%-16s","strmatchingoffs ");
00728 sWidthHd += Form("%-16s","width ");
00729
00730 TGo4Log::Info("**** Matching Offset Map [ns] %-20s *******", fParRpcHd->sStripRpcName.Data());
00731 if( fTMatchingMul1StripHd->GetEntries() > 0 )
00732 {
00733 Double_t dMeanFit;
00734 Double_t dSigmaFit;
00735 for( UInt_t uBin = 0; uBin < fParRpcHd->uNbStrips; uBin++)
00736 {
00737 Double_t dOffsetList = fParRpcHd->dOffsetMatching[uBin];
00738 Double_t dNewOffset = dOffsetList;
00739 sStripNumbHd += Form("%9u",uBin);
00740 sStripCharHd += Form("%9c",'|');
00741 sOldOffsetHd += Form("%+9.0f",dOffsetList);
00742
00743 TH1D* th1dStripProfile = ((TH1D*)fTMatchingMul1StripHd-> ProjectionX( Form("px%smatching%d", fParRpcHd->sStripRpcName.Data(), uBin), uBin+1, uBin+1));
00744 if( 0 < th1dStripProfile->GetEntries() )
00745 {
00746 if( 0 != th1dStripProfile->GetRMS() )
00747 {
00748
00749
00750
00751
00752 TF1 *f1Gauss = new TF1(Form("GaussHd%d", uBin), "gaus",
00753 th1dStripProfile->GetBinCenter(th1dStripProfile->GetMaximumBin()) - 3*th1dStripProfile->GetRMS(),
00754 th1dStripProfile->GetBinCenter(th1dStripProfile->GetMaximumBin()) - 3*th1dStripProfile->GetRMS() );
00755
00756 f1Gauss->SetParameter(0, th1dStripProfile->GetMaximum() );
00757 f1Gauss->SetParameter(1, th1dStripProfile->GetBinCenter(th1dStripProfile->GetMaximumBin()) );
00758 f1Gauss->SetParLimits(1, th1dStripProfile->GetBinCenter(th1dStripProfile->GetMaximumBin()) - 1000,
00759 th1dStripProfile->GetBinCenter(th1dStripProfile->GetMaximumBin()) + 1000);
00760 f1Gauss->SetParameter(2, th1dStripProfile->GetRMS());
00761 f1Gauss->SetParLimits(2, 0.0, th1dStripProfile->GetRMS());
00762
00763 TFitResultPtr r = th1dStripProfile->Fit(Form("GaussHd%d", uBin),"BRSQ");
00764 dMeanFit = r->Parameter(1);
00765 dSigmaFit = r->Parameter(2);
00766 delete f1Gauss;
00767 }
00768 else
00769 {
00770 dMeanFit = 0;
00771 dSigmaFit = 0;
00772 }
00773 dNewOffset += dMeanFit;
00774 sNewOffsetHd += Form("%+9.0f", dNewOffset);
00775 sWidthHd += Form("%+9.0f", dSigmaFit);
00776 }
00777 else
00778 {
00779 cout<<"Strip "<<uBin<<" empty."<<endl;
00780 sNewOffsetHd += Form("%+9.0f", dOffsetList);
00781 sWidthHd += Form("%+9.0f", 0.0);
00782 }
00783 delete th1dStripProfile;
00784 }
00785 }
00786 cout<<sStripNumbHd<<endl;
00787 cout<<sStripCharHd<<endl;
00788 cout<<sOldOffsetHd<<endl;
00789 cout<<sNewOffsetHd<<endl;
00790 cout<<sWidthHd<<endl;
00791 TGo4Log::Info("********************************************************");
00792
00793
00794 TString sStripNumbBuc;
00795 TString sStripCharBuc;
00796 TString sFitStartBuc0;
00797 TString sFitStartBuc1;
00798 TString sFitStartBuc2;
00799 TString sOldOffsetBuc;
00800 TString sNewOffsetBuc;
00801 TString sWidthBuc;
00802
00803 sStripNumbBuc += Form("%-16s","Strip No.: ");
00804 sStripCharBuc += Form("%-16s"," ");
00805 sFitStartBuc0 += Form("%-16s","Fit val init 0 ");
00806 sFitStartBuc1 += Form("%-16s","Fit val init 1 ");
00807 sFitStartBuc2 += Form("%-16s","Fit val init 2 ");
00808 sOldOffsetBuc += Form("%-16s","monitor_opt ");
00809 sNewOffsetBuc += Form("%-16s","strmatchingoffs ");
00810 sWidthBuc += Form("%-16s","width ");
00811
00812 TGo4Log::Info("**** Matching Offset Map [ns] %-20s *******", fParRpcBuc->sStripRpcName.Data());
00813 if( fTMatchingMul1StripBuc->GetEntries() > 0 )
00814 {
00815 Double_t dMeanFit;
00816 Double_t dSigmaFit;
00817 for( UInt_t uBin = 0; uBin < fParRpcBuc->uNbStrips; uBin++)
00818 {
00819 Double_t dOffsetList = fParRpcBuc->dOffsetMatching[uBin];
00820 Double_t dNewOffset = dOffsetList;
00821 sStripNumbBuc += Form("%9u",uBin);
00822 sStripCharBuc += Form("%9c",'|');
00823 sOldOffsetBuc += Form("%+9.0f",dOffsetList);
00824
00825 TH1D* th1dStripProfile = ((TH1D*)fTMatchingMul1StripBuc-> ProjectionX( Form("px%smatching%d", fParRpcBuc->sStripRpcName.Data(), uBin), uBin+1, uBin+1));
00826 if( 0 < th1dStripProfile->GetEntries() )
00827 {
00828 if( 0 != th1dStripProfile->GetRMS() )
00829 {
00830
00831
00832
00833
00834 TF1 *f1Gauss = new TF1(Form("GaussBuc%d", uBin), "gaus",
00835 th1dStripProfile->GetBinCenter(th1dStripProfile->GetMaximumBin()) - 3*th1dStripProfile->GetRMS(),
00836 th1dStripProfile->GetBinCenter(th1dStripProfile->GetMaximumBin()) - 3*th1dStripProfile->GetRMS() );
00837
00838 sFitStartBuc0 += Form("%+9.0f",th1dStripProfile->GetMaximum() );
00839 sFitStartBuc1 += Form("%+9.0f",th1dStripProfile->GetBinCenter(th1dStripProfile->GetMaximumBin()) );
00840 sFitStartBuc2 += Form("%+9.0f",th1dStripProfile->GetRMS() );
00841
00842 f1Gauss->SetParameter(0, th1dStripProfile->GetMaximum() );
00843 f1Gauss->SetParameter(1, th1dStripProfile->GetBinCenter(th1dStripProfile->GetMaximumBin()) );
00844 f1Gauss->SetParLimits(1, th1dStripProfile->GetBinCenter(th1dStripProfile->GetMaximumBin()) - 1000,
00845 th1dStripProfile->GetBinCenter(th1dStripProfile->GetMaximumBin()) + 1000);
00846 f1Gauss->SetParameter(2, th1dStripProfile->GetRMS());
00847 f1Gauss->SetParLimits(2, 0.0, th1dStripProfile->GetRMS());
00848
00849 TFitResultPtr r = th1dStripProfile->Fit(Form("GaussBuc%d", uBin),"BRSQ");
00850 dMeanFit = r->Parameter(1);
00851 dSigmaFit = r->Parameter(2);
00852 delete f1Gauss;
00853 }
00854 else
00855 {
00856 sFitStartBuc0 += Form("%+9.0f",0.0 );
00857 sFitStartBuc1 += Form("%+9.0f",0.0 );
00858 sFitStartBuc2 += Form("%+9.0f",0.0 );
00859 dMeanFit = 0;
00860 dSigmaFit = 0;
00861 }
00862 dNewOffset += dMeanFit;
00863 sNewOffsetBuc += Form("%+9.0f", dNewOffset);
00864 sWidthBuc += Form("%+9.0f", dSigmaFit);
00865 }
00866 else
00867 {
00868 cout<<"Strip "<<uBin<<" empty."<<endl;
00869 sNewOffsetBuc += Form("%+9.0f", dOffsetList);
00870 sWidthBuc += Form("%+9.0f", 0.0);
00871 sFitStartBuc0 += Form("%+9.0f", 0.0 );
00872 sFitStartBuc1 += Form("%+9.0f", 0.0 );
00873 sFitStartBuc2 += Form("%+9.0f", 0.0 );
00874 }
00875 delete th1dStripProfile;
00876 }
00877 }
00878 cout<<sStripNumbBuc<<endl;
00879 cout<<sStripCharBuc<<endl;
00880 cout<<sFitStartBuc0<<endl;
00881 cout<<sFitStartBuc1<<endl;
00882 cout<<sFitStartBuc2<<endl;
00883 cout<<sOldOffsetBuc<<endl;
00884 cout<<sNewOffsetBuc<<endl;
00885 cout<<sWidthBuc<<endl;
00886 TGo4Log::Info("********************************************************");
00887 }
00888
00889 cout << "**** TMatchingProc: Delete instance " << endl;
00890
00891 }
00892
00893 void TMatchingProc::InitEvent(TGo4EventElement* outevnt)
00894 {
00895
00896
00897
00898
00899 if(fCrateInputEvent==0)
00900 {
00901 TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(GetInputEvent("Calibration"));
00902 if(btevent)
00903 {
00904 fCrateInputEvent=dynamic_cast<TMbsCrateEvent*>(btevent->GetSubEvent("MBSCRATE"));
00905 }
00906 else
00907 {
00908 fCrateInputEvent=dynamic_cast<TMbsCrateEvent*>(GetInputEvent());
00909 }
00910 if(fCrateInputEvent==0) {
00911 GO4_STOP_ANALYSIS_MESSAGE("**** TMatchingProc: Fatal error: no input event TMbsCrateEvent!!! STOP GO4");
00912 }
00913 }
00914 if(fTriglogInputEvent==0)
00915 {
00916 TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(GetInputEvent("Calibration"));
00917 if(btevent)
00918 {
00919 fTriglogInputEvent=dynamic_cast<TTriglogEvent*>(btevent->GetSubEvent("TRIGLOG"));
00920 }
00921
00922 if(fTriglogInputEvent==0) {
00923 GO4_STOP_ANALYSIS_MESSAGE("**** TMatchingProc: Fatal error: input event is/has not a TTriglogEvent!!! STOP GO4");
00924 }
00925 }
00926 if(fVftxInputEvent==0)
00927 {
00928 TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(GetInputEvent("Detector"));
00929 if(btevent)
00930 {
00931 fVftxInputEvent=dynamic_cast<TVftxEvent*>(btevent->GetSubEvent("VFTX"));
00932 }
00933
00934 if(fVftxInputEvent==0) {
00935 GO4_STOP_ANALYSIS_MESSAGE("**** TMatchingProc: Fatal error: input event is/has not a TVftxEvent!!! STOP GO4");
00936 }
00937 }
00938 if(fRpcHdInputEvent==0 || fRpcBucInputEvent==0 || fScalersInputEvent==0 )
00939 {
00940 TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(GetInputEvent("Tracking"));
00941 if(btevent)
00942 {
00943 fRpcHdInputEvent =dynamic_cast<TRpcEvent*>(btevent->GetSubEvent("RPC_HD"));
00944 fRpcBucInputEvent =dynamic_cast<TRpcEvent*>(btevent->GetSubEvent("RPC_BUC_REF"));
00945 if( 0 != fParRpcBucMod1)
00946 fRpcBucMod1InputEvent =dynamic_cast<TRpcEvent*>(btevent->GetSubEvent("RPC_BUC_MOD1"));
00947 if( 0 != fParRpcBucMod2)
00948 fRpcBucMod2InputEvent =dynamic_cast<TRpcEvent*>(btevent->GetSubEvent("RPC_BUC_MOD2"));
00949 if( 0 != fParRpcBucMod3)
00950 fRpcBucMod3InputEvent =dynamic_cast<TRpcEvent*>(btevent->GetSubEvent("RPC_BUC_MOD3"));
00951 if( 0 != fParRpcBucMod4)
00952 fRpcBucMod4InputEvent =dynamic_cast<TRpcEvent*>(btevent->GetSubEvent("RPC_BUC_MOD4"));
00953 fScalersInputEvent=dynamic_cast<TScalersEvent*>(btevent->GetSubEvent("SCALERS"));
00954 }
00955
00956 if(fRpcHdInputEvent==0) {
00957 GO4_STOP_ANALYSIS_MESSAGE("**** TMatchingProc: Fatal error: input event is/has not a TRpcEvent for HD!!! STOP GO4");
00958 }
00959 if(fRpcBucInputEvent==0) {
00960 GO4_STOP_ANALYSIS_MESSAGE("**** TMatchingProc: Fatal error: input event is/has not a TRpcEvent for Buc Ref!!! STOP GO4");
00961 }
00962 if( 0 != fParRpcBucMod1 && fRpcBucMod1InputEvent==0) {
00963 GO4_STOP_ANALYSIS_MESSAGE("**** TMatchingProc: Fatal error: input event is/has not a TRpcEvent for Buc Mod 1!!! STOP GO4");
00964 }
00965 if( 0 != fParRpcBucMod2 && fRpcBucMod2InputEvent==0) {
00966 GO4_STOP_ANALYSIS_MESSAGE("**** TMatchingProc: Fatal error: input event is/has not a TRpcEvent for Buc Mod 2!!! STOP GO4");
00967 }
00968 if( 0 != fParRpcBucMod3 && fRpcBucMod3InputEvent==0) {
00969 GO4_STOP_ANALYSIS_MESSAGE("**** TMatchingProc: Fatal error: input event is/has not a TRpcEvent for Buc Mod 3!!! STOP GO4");
00970 }
00971 if( 0 != fParRpcBucMod4 && fRpcBucMod4InputEvent==0) {
00972 GO4_STOP_ANALYSIS_MESSAGE("**** TMatchingProc: Fatal error: input event is/has not a TRpcEvent for Buc Mod 4!!! STOP GO4");
00973 }
00974 if(fScalersInputEvent==0) {
00975 GO4_STOP_ANALYSIS_MESSAGE("**** TMatchingProc: Fatal error: input event is/has not a TScalersEvent!!! STOP GO4");
00976 }
00977 }
00978 if( 0 == fPlasticsEvent )
00979 {
00980 TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(GetInputEvent("Tracking"));
00981 if(btevent)
00982 {
00983 fPlasticsEvent=dynamic_cast<TPlasticsEvent*>(btevent->GetSubEvent("PLASTICS"));
00984 }
00985
00986 if(fPlasticsEvent==0) {
00987 GO4_STOP_ANALYSIS_MESSAGE("**** TMatchingProc: Fatal error: input event is/has not a fPlasticsEvent!!! STOP GO4");
00988 }
00989 }
00990
00991
00992
00993
00994 if(fOutputEvent==0)
00995 {
00996 TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(outevnt);
00997 if(btevent)
00998 {
00999 fOutputEvent=dynamic_cast<TMatchingEvent*>(btevent->GetSubEvent("MATCHING"));
01000 }
01001 else
01002 {
01003
01004 fOutputEvent= dynamic_cast<TMatchingEvent*>(outevnt);
01005 }
01006 if(fOutputEvent==0) {
01007 GO4_STOP_ANALYSIS_MESSAGE("**** TMatchingProc: Fatal error: output event is not a TMatchingEvent!!! STOP GO4");
01008 }
01009 else {
01010
01011 }
01012 }
01013 }
01014
01015 void TMatchingProc::FinalizeEvent()
01016 {
01017
01018
01019
01020
01021
01022
01023
01024
01025
01026
01027
01028
01029
01030
01031
01032
01033
01034
01035
01036
01037
01038
01039
01040
01041
01042
01043
01044
01045
01046
01047 Bool_t bSelectedTrigger = kFALSE;
01048 if( -1 == fPar->iTriggerSelection )
01049 bSelectedTrigger = kTRUE;
01050 else if( 1 == ((fTriglogInputEvent->fVulomTriggerPattern>>(fPar->iTriggerSelection)) & 0x1) )
01051 bSelectedTrigger = kTRUE;
01052
01053
01054 Double_t dBucarestReferenceTotalRate =
01055 ( 0.0
01056 + fScalersInputEvent->fDDetectorRate[2] )
01057 /( (fParRpcBuc->dStripLength)*(fParRpcBuc->dStripWidth)*(double_t)fParRpcBuc->uNbStrips);
01058
01059 if( kTRUE == bSelectedTrigger )
01060 {
01061 fMatchingMulHdMulBuc->Fill((fRpcHdInputEvent->fClusters).size(),
01062 (fRpcBucInputEvent->fClusters).size());
01063
01064 if( 5.0 <= dBucarestReferenceTotalRate )
01065 {
01066 Bool_t bBigBucThere = kFALSE;
01067 for(UInt_t uClusterBuc = 0; uClusterBuc < (fRpcBucInputEvent->fClusters).size(); uClusterBuc++)
01068 if( 1 < ( ( (fRpcBucInputEvent->fClusters)[uClusterBuc] ).fHits ).size() &&
01069 -4.5 < (fRpcBucInputEvent->fClusters[0]).dY &&
01070 (fRpcBucInputEvent->fClusters[0]).dY < 4.5)
01071 bBigBucThere = kTRUE;
01072 if( kTRUE == bBigBucThere )
01073 fMatchingMulHdMulBucBigSizeBuc->Fill((fRpcHdInputEvent->fClusters).size(),
01074 (fRpcBucInputEvent->fClusters).size());
01075 }
01076 }
01077
01078
01079 if( 1 == (fRpcHdInputEvent->fClusters).size() &&
01080 1 == (fRpcBucInputEvent->fClusters).size())
01081 {
01082 if( kTRUE == bSelectedTrigger )
01083 {
01084
01085 fXMatchingMul1->Fill( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX,
01086 (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX);
01087 fYMatchingMul1->Fill( (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY,
01088 (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY);
01089 fMatchingMul1->Fill( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01090 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX),
01091 (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01092 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY) );
01093
01094 fXMatchingMul1StripHd->Fill( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01095 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX),
01096 (fRpcHdInputEvent->fClusters[0]).dMeanStrip);
01097 fYMatchingMul1StripHd->Fill( (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01098 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY),
01099 (fRpcHdInputEvent->fClusters[0]).dMeanStrip);
01100 fMatchingMul1StripHd->Fill( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01101 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX),
01102 (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01103 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY),
01104 (fRpcHdInputEvent->fClusters[0]).dMeanStrip);
01105
01106 fXMatchingMul1DtHd->Fill( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01107 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX),
01108 (fRpcHdInputEvent->fClusters[0]).dX);
01109 fYMatchingMul1DtHd->Fill( (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01110 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY),
01111 (fRpcHdInputEvent->fClusters[0]).dX);
01112
01113 fXMatchingMul1StripBuc->Fill( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01114 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX),
01115 (fRpcBucInputEvent->fClusters[0]).dMeanStrip);
01116 fYMatchingMul1StripBuc->Fill( (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01117 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY),
01118 (fRpcBucInputEvent->fClusters[0]).dMeanStrip);
01119 fMatchingMul1StripBuc->Fill( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01120 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX),
01121 (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01122 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY),
01123 (fRpcBucInputEvent->fClusters[0]).dMeanStrip);
01124
01125 fXMatchingMul1DtBuc->Fill( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01126 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX),
01127 (fRpcBucInputEvent->fClusters[0]).dY);
01128 fYMatchingMul1DtBuc->Fill( (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01129 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY),
01130 (fRpcBucInputEvent->fClusters[0]).dY);
01131
01132
01133 switch( fPar->uDetectorOffsetToUse )
01134 {
01135 case 0:
01136 fDtMul1->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime
01137 - fParRpcHd->dOffsetMatching[ (Int_t)((fRpcHdInputEvent->fClusters[0]).dMeanStrip) ] );
01138 break;
01139 case 1:
01140 fDtMul1->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime
01141 - fParRpcBuc->dOffsetMatching[ (Int_t)((fRpcBucInputEvent->fClusters[0]).dMeanStrip) ] );
01142 break;
01143 case 2:
01144 fDtMul1->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime
01145 - fParRpcHd->dOffsetMatching[ (Int_t)((fRpcHdInputEvent->fClusters[0]).dMeanStrip) ]
01146 - fParRpcBuc->dOffsetMatching[ (Int_t)((fRpcBucInputEvent->fClusters[0]).dMeanStrip) ] );
01147 break;
01148 default:
01149 fDtMul1->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime );
01150 break;
01151 }
01152
01153 fTMatchingMul1StripHd->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime
01154 - fParRpcHd->dOffsetMatching[ (Int_t)((fRpcHdInputEvent->fClusters[0]).dMeanStrip) ]
01155 - fParRpcBuc->dOffsetMatching[ (Int_t)((fRpcBucInputEvent->fClusters[0]).dMeanStrip) ] ,
01156 (fRpcHdInputEvent->fClusters[0]).dMeanStrip);
01157 fTMatchingMul1DtHd->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime,
01158 (fRpcHdInputEvent->fClusters[0]).dX);
01159 fTMatchingMul1StripBuc->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime
01160 - fParRpcHd->dOffsetMatching[ (Int_t)((fRpcHdInputEvent->fClusters[0]).dMeanStrip) ]
01161 - fParRpcBuc->dOffsetMatching[ (Int_t)((fRpcBucInputEvent->fClusters[0]).dMeanStrip) ] ,
01162 (fRpcBucInputEvent->fClusters[0]).dMeanStrip);
01163 fTMatchingMul1DtBuc->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime,
01164 (fRpcBucInputEvent->fClusters[0]).dY);
01165
01166
01167
01168
01169
01170
01171
01172
01173 fMatchingDtMul1->Fill((fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01174 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX),
01175 (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01176 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY),
01177 (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime);
01178
01179
01180
01181
01182
01183 if( 1 == ((fRpcHdInputEvent->fClusters[0]).fHits).size() )
01184 {
01185 fTMatchingMul1StripTotLeftHd->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime,
01186 (fRpcHdInputEvent->fClusters[0]).dMeanStrip,
01187 ((fRpcHdInputEvent->fClusters[0]).fHits[0]).dTotLeft );
01188 fTMatchingMul1StripTotRightHd->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime,
01189 (fRpcHdInputEvent->fClusters[0]).dMeanStrip,
01190 ((fRpcHdInputEvent->fClusters[0]).fHits[0]).dTotRight );
01191 }
01192 if( 1 == ((fRpcBucInputEvent->fClusters[0]).fHits).size() )
01193 {
01194 fTMatchingMul1StripTotLeftBuc->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime,
01195 (fRpcBucInputEvent->fClusters[0]).dMeanStrip,
01196 ((fRpcBucInputEvent->fClusters[0]).fHits[0]).dTotLeft );
01197 fTMatchingMul1StripTotRightBuc->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime,
01198 (fRpcBucInputEvent->fClusters[0]).dMeanStrip,
01199 ((fRpcBucInputEvent->fClusters[0]).fHits[0]).dTotRight );
01200 }
01201
01202 }
01203
01204 if( 1 == fPar->uTriggerSelDebugHistos)
01205 for(Int_t iTrigger = 0; iTrigger<16; iTrigger++)
01206 if( 1 == ((fTriglogInputEvent->fVulomTriggerPattern>>iTrigger) & 0x1) )
01207 fMatchingMul1TriggerDebug[iTrigger]->Fill( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01208 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX),
01209 (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01210 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY) );
01211 }
01212
01213
01214 fBucMulVsRate->Fill( fScalersInputEvent->fDTriglogRate[0][13]/(( (fParRpcBuc->dStripLength)*(fParRpcBuc->dStripWidth)*(double_t)fParRpcBuc->uNbStrips)),
01215 (fRpcBucInputEvent->fClusters).size());
01216 fHdMulVsRate->Fill(fScalersInputEvent->fDTriglogRate[0][13]/(( (fParRpcBuc->dStripLength)*(fParRpcBuc->dStripWidth)*(double_t)fParRpcBuc->uNbStrips)),
01217 (fRpcHdInputEvent->fClusters).size());
01218
01219 if( 5.0 <= dBucarestReferenceTotalRate
01220 && 0<(fRpcBucInputEvent->fClusters).size()
01221 && 0<(fRpcHdInputEvent->fClusters).size() )
01222 {
01223 fSingleEvtClusterPosDisplayHd->Reset();
01224 fSingleEvtClusterPosDisplayBuc->Reset();
01225 for(UInt_t uClusterHd = 0; uClusterHd < (fRpcHdInputEvent->fClusters).size(); uClusterHd++)
01226 fSingleEvtClusterPosDisplayHd->Fill(
01227 (fRpcHdInputEvent->fClusters[uClusterHd]).dX + fParRpcHd->dStripRpcPosX,
01228 (fRpcHdInputEvent->fClusters[uClusterHd]).dY + fParRpcHd->dStripRpcPosY );
01229
01230 Int_t iNbPositionMatchingHdClusters = 0;
01231 for(UInt_t uClusterBuc = 0; uClusterBuc < (fRpcBucInputEvent->fClusters).size(); uClusterBuc++)
01232 {
01233 UInt_t uBestHdCluster = (fRpcHdInputEvent->fClusters).size();
01234 Double_t dBestDistance = -1;
01235
01236 for(UInt_t uClusterHd = 0; uClusterHd < (fRpcHdInputEvent->fClusters).size(); uClusterHd++)
01237 {
01238 Double_t dDR = TMath::Sqrt(
01239 ( (fRpcHdInputEvent->fClusters[uClusterHd]).dX + fParRpcHd->dStripRpcPosX
01240 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dX + fParRpcBuc->dStripRpcPosX) )*
01241 ( (fRpcHdInputEvent->fClusters[uClusterHd]).dX + fParRpcHd->dStripRpcPosX
01242 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dX + fParRpcBuc->dStripRpcPosX) ) +
01243 ( (fRpcHdInputEvent->fClusters[uClusterHd]).dY + fParRpcHd->dStripRpcPosY
01244 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dY + fParRpcBuc->dStripRpcPosY) )*
01245 ( (fRpcHdInputEvent->fClusters[uClusterHd]).dY + fParRpcHd->dStripRpcPosY
01246 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dY + fParRpcBuc->dStripRpcPosY) ) );
01247 if( dDR <= 3.0 )
01248 iNbPositionMatchingHdClusters++;
01249 if( dDR < dBestDistance || dBestDistance < 0 )
01250 {
01251 uBestHdCluster = uClusterHd;
01252 dBestDistance = dDR;
01253 }
01254
01255 }
01256 if( uBestHdCluster < (fRpcHdInputEvent->fClusters).size() && 0 < dBestDistance )
01257 {
01258 fBestMatchingAllMul->Fill(
01259 (fRpcHdInputEvent->fClusters[uBestHdCluster]).dX + fParRpcHd->dStripRpcPosX
01260 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dX + fParRpcBuc->dStripRpcPosX),
01261 (fRpcHdInputEvent->fClusters[uBestHdCluster]).dY + fParRpcHd->dStripRpcPosY
01262 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dY + fParRpcBuc->dStripRpcPosY));
01263 fBestDistanceBucIndex->Fill( uClusterBuc, dBestDistance);
01264 }
01265
01266 fSingleEvtClusterPosDisplayBuc->Fill(
01267 (fRpcBucInputEvent->fClusters[uClusterBuc]).dX + fParRpcBuc->dStripRpcPosX,
01268 (fRpcBucInputEvent->fClusters[uClusterBuc]).dY + fParRpcBuc->dStripRpcPosY );
01269 }
01270 fHdMatchingNbBucIndex->Fill((fRpcBucInputEvent->fClusters).size(), iNbPositionMatchingHdClusters );
01271 }
01272
01273
01274
01275 if(
01276 5.0 <= dBucarestReferenceTotalRate )
01277 {
01278 fuNbEventsSummed ++;
01279 fdBucRatesSummed += dBucarestReferenceTotalRate;
01280 }
01281 if( 2 == (fRpcBucInputEvent->fClusters).size() )
01282 if( 1 == (fRpcHdInputEvent->fClusters).size())
01283 fHdM1BucR1R2->Fill(
01284 TMath::Sqrt(
01285 ( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01286 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX) )*
01287 ( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01288 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX) ) +
01289 ( (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01290 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY) )*
01291 ( (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01292 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY) ) ),
01293 TMath::Sqrt(
01294 ( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01295 -( (fRpcBucInputEvent->fClusters[1]).dX + fParRpcBuc->dStripRpcPosX) )*
01296 ( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01297 -( (fRpcBucInputEvent->fClusters[1]).dX + fParRpcBuc->dStripRpcPosX) ) +
01298 ( (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01299 -( (fRpcBucInputEvent->fClusters[1]).dY + fParRpcBuc->dStripRpcPosY) )*
01300 ( (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01301 -( (fRpcBucInputEvent->fClusters[1]).dY + fParRpcBuc->dStripRpcPosY) ) ));
01302 if( 1 == (fRpcBucInputEvent->fClusters).size() )
01303 {
01304 Bool_t bAtLeastOneMatchingHdCluster = kFALSE;
01305
01306
01307 if( -4.5 < (fRpcBucInputEvent->fClusters[0]).dY &&
01308 (fRpcBucInputEvent->fClusters[0]).dY < 4.5 &&
01309 5.0 <= dBucarestReferenceTotalRate)
01310 {
01311 fiNbEventsWith1BigBucCl[( ( (fRpcBucInputEvent->fClusters)[0] ).fHits ).size()]++;
01312 if( 0 < (fRpcHdInputEvent->fClusters).size())
01313 fiNbEventsWith1BigBucClHd[( ( (fRpcBucInputEvent->fClusters)[0] ).fHits ).size()]++;
01314 }
01315
01316 if( 2 == (fRpcHdInputEvent->fClusters).size())
01317 fBucM1HdR1R2->Fill(
01318 TMath::Sqrt(
01319 ( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01320 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX) )*
01321 ( (fRpcHdInputEvent->fClusters[0]).dX + fParRpcHd->dStripRpcPosX
01322 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX) ) +
01323 ( (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01324 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY) )*
01325 ( (fRpcHdInputEvent->fClusters[0]).dY + fParRpcHd->dStripRpcPosY
01326 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY) ) ),
01327 TMath::Sqrt(
01328 ( (fRpcHdInputEvent->fClusters[1]).dX + fParRpcHd->dStripRpcPosX
01329 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX) )*
01330 ( (fRpcHdInputEvent->fClusters[1]).dX + fParRpcHd->dStripRpcPosX
01331 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX) ) +
01332 ( (fRpcHdInputEvent->fClusters[1]).dY + fParRpcHd->dStripRpcPosY
01333 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY) )*
01334 ( (fRpcHdInputEvent->fClusters[1]).dY + fParRpcHd->dStripRpcPosY
01335 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY) ) ));
01336
01337
01338 for(UInt_t uClusterHd = 0; uClusterHd < (fRpcHdInputEvent->fClusters).size(); uClusterHd++)
01339 {
01340 fMatchingMulBuc1->Fill( (fRpcHdInputEvent->fClusters[uClusterHd]).dX + fParRpcHd->dStripRpcPosX
01341 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX),
01342 (fRpcHdInputEvent->fClusters[uClusterHd]).dY + fParRpcHd->dStripRpcPosY
01343 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY) );
01344
01345 if( -5.0 < (fRpcHdInputEvent->fClusters[uClusterHd]).dX + fParRpcHd->dStripRpcPosX
01346 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX) &&
01347 (fRpcHdInputEvent->fClusters[uClusterHd]).dX + fParRpcHd->dStripRpcPosX
01348 -( (fRpcBucInputEvent->fClusters[0]).dX + fParRpcBuc->dStripRpcPosX) < 5.0 &&
01349 -5.0 < (fRpcHdInputEvent->fClusters[uClusterHd]).dY + fParRpcHd->dStripRpcPosY
01350 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY) &&
01351 (fRpcHdInputEvent->fClusters[uClusterHd]).dY + fParRpcHd->dStripRpcPosY
01352 -( (fRpcBucInputEvent->fClusters[0]).dY + fParRpcBuc->dStripRpcPosY) < 5.0 )
01353 bAtLeastOneMatchingHdCluster = kTRUE;
01354 }
01355
01356 fBucMul1Rate->Fill( fScalersInputEvent->fDDetectorRate[2]
01357 );
01358
01359 if( kTRUE == bAtLeastOneMatchingHdCluster )
01360 {
01361
01362 if( -4.5 < (fRpcBucInputEvent->fClusters[0]).dY &&
01363 (fRpcBucInputEvent->fClusters[0]).dY < 4.5 &&
01364 5.0 <= dBucarestReferenceTotalRate)
01365 fiNbEventsWith1BigBucClHdOk[( ( (fRpcBucInputEvent->fClusters)[0] ).fHits ).size()]++;
01366
01367
01368
01369
01370 if(1 < ( ( (fRpcBucInputEvent->fClusters)[0] ).fHits ).size() &&
01371 5.0 <= dBucarestReferenceTotalRate )
01372 fuNbEventsWithBucMul1HdOk++;
01373 }
01374
01375
01376 if( 1 < ( ( (fRpcBucInputEvent->fClusters)[0] ).fHits ).size() &&
01377 5.0 <= dBucarestReferenceTotalRate )
01378 {
01379 fuNbEventsWithBucMul1 ++;
01380 if( 0 < (fRpcHdInputEvent->fClusters).size()
01381
01382 )
01383 fuNbEventsWithBucMul1Hd++;
01384 }
01385
01386
01387
01388 if( fPar->uNbEventAverageEfficiency <= fuNbEventsSummed )
01389
01390 {
01391 if( 0 < fuNbEventsWithBucMul1 )
01392 {
01393 fHdEffVsRateBucMul1->Fill( fdBucRatesSummed /(Double_t)(fuNbEventsSummed),
01394 100.0*(Double_t)fuNbEventsWithBucMul1Hd/(Double_t)fuNbEventsWithBucMul1,
01395 fuNbEventsWithBucMul1);
01396 fHdEffVsRateBucMul1Ok->Fill( fdBucRatesSummed /(Double_t)(fuNbEventsSummed),
01397 100.0*(Double_t)fuNbEventsWithBucMul1HdOk/(Double_t)fuNbEventsWithBucMul1,
01398 fuNbEventsWithBucMul1);
01399
01400 fHdEffVsTimeBucMul1->Fill( fScalersInputEvent->fDTimeSinceFirstEventSecondsTriglog,
01401 100.0*(Double_t)fuNbEventsWithBucMul1Hd/(Double_t)fuNbEventsWithBucMul1,
01402 fuNbEventsWithBucMul1);
01403 fHdEffVsTimeBucMul1Ok->Fill( fScalersInputEvent->fDTimeSinceFirstEventSecondsTriglog,
01404 100.0*(Double_t)fuNbEventsWithBucMul1HdOk/(Double_t)fuNbEventsWithBucMul1,
01405 fuNbEventsWithBucMul1);
01406 }
01407 fuNbEventsSummed = 0;
01408 fuNbEventsWithBucMul1 = 0;
01409 fuNbEventsWithBucMul1Hd = 0;
01410 fuNbEventsWithBucMul1HdOk = 0;
01411 fdBucRatesSummed = 0.0;
01412 }
01413 }
01414
01415 Double_t dTotalHdSizeOk = 0;
01416 Double_t dTotalHdOkSizeOk = 0;
01417 Double_t dTotalBucSizeOk = 0;
01418 for( UInt_t uClusterSize = 1; uClusterSize < fParRpcBuc->uNbStrips; uClusterSize++)
01419 if( 0 < fiNbEventsWith1BigBucCl[uClusterSize] )
01420 {
01421 if( 1 < uClusterSize)
01422 {
01423 dTotalHdSizeOk += fiNbEventsWith1BigBucClHd[uClusterSize];
01424 dTotalHdOkSizeOk += fiNbEventsWith1BigBucClHdOk[uClusterSize];
01425 dTotalBucSizeOk += fiNbEventsWith1BigBucCl[uClusterSize];
01426 }
01427 fHdEffVsBucSizeMul1->SetBinContent( fHdEffVsBucSizeMul1->FindBin(uClusterSize),
01428 100.0*(Double_t)fiNbEventsWith1BigBucClHd[uClusterSize]
01429 /(Double_t)fiNbEventsWith1BigBucCl[uClusterSize]);
01430 fHdEffVsBucSizeMul1Nb->SetBinContent( fHdEffVsBucSizeMul1Nb->FindBin(uClusterSize),
01431 fiNbEventsWith1BigBucCl[uClusterSize]);
01432
01433
01434
01435
01436
01437
01438 fHdEffVsBucSizeMul1Ok->SetBinContent( fHdEffVsBucSizeMul1Ok->FindBin(uClusterSize),
01439 100.0*(Double_t)fiNbEventsWith1BigBucClHdOk[uClusterSize]
01440 /(Double_t)fiNbEventsWith1BigBucCl[uClusterSize]);
01441
01442
01443
01444
01445
01446
01447 }
01448 if( 0 < dTotalBucSizeOk )
01449 {
01450 TString txt;
01451 txt.Form("#splitline{#scale[1.0]{#color[2]{Full efficiency:%.2f}}}"
01452 "{#scale[1.0]{#color[4]{Full efficiency OK:%.2f}}}",
01453 100.0*dTotalHdSizeOk/dTotalBucSizeOk,
01454 100.0*dTotalHdOkSizeOk/dTotalBucSizeOk);
01455 fHdEffBuMul1BucSize2->SetText(0.2, 0.5, txt.Data());
01456 }
01457
01458
01459 if( 2 == (fRpcHdInputEvent->fClusters).size() &&
01460 2 == (fRpcBucInputEvent->fClusters).size() )
01461 {
01462 for(UInt_t uClusterHd = 0; uClusterHd < (fRpcHdInputEvent->fClusters).size(); uClusterHd++)
01463 {
01464 Double_t dX_Min = 0;
01465 Double_t dY_Min = 0;
01466 UInt_t uIndexClusterBuc = 0;
01467 for(UInt_t uClusterBuc = 0; uClusterBuc < (fRpcBucInputEvent->fClusters).size(); uClusterBuc++)
01468 {
01469 if( ( dX_Min <= (fRpcHdInputEvent->fClusters[uClusterHd]).dX + fParRpcHd->dStripRpcPosX
01470 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dX + fParRpcBuc->dStripRpcPosX) &&
01471 dY_Min <= (fRpcHdInputEvent->fClusters[uClusterHd]).dY + fParRpcHd->dStripRpcPosY
01472 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dY + fParRpcBuc->dStripRpcPosY) ) ||
01473 ( 0 == dX_Min && 0 == dY_Min ) )
01474 {
01475 dX_Min = (fRpcHdInputEvent->fClusters[uClusterHd]).dX + fParRpcHd->dStripRpcPosX
01476 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dX + fParRpcBuc->dStripRpcPosX);
01477 dY_Min = (fRpcHdInputEvent->fClusters[uClusterHd]).dY + fParRpcHd->dStripRpcPosY
01478 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dY + fParRpcBuc->dStripRpcPosY);
01479 uIndexClusterBuc = uClusterBuc;
01480 }
01481 }
01482 fXMatchingMul2->Fill( (fRpcHdInputEvent->fClusters[uClusterHd]).dX + fParRpcHd->dStripRpcPosX,
01483 (fRpcBucInputEvent->fClusters[uIndexClusterBuc]).dX + fParRpcBuc->dStripRpcPosX);
01484 fYMatchingMul2->Fill( (fRpcHdInputEvent->fClusters[uClusterHd]).dY + fParRpcHd->dStripRpcPosY,
01485 (fRpcBucInputEvent->fClusters[uIndexClusterBuc]).dY + fParRpcBuc->dStripRpcPosY);
01486 fMatchingMul2->Fill( (fRpcHdInputEvent->fClusters[uClusterHd]).dX + fParRpcHd->dStripRpcPosX
01487 -( (fRpcBucInputEvent->fClusters[uIndexClusterBuc]).dX + fParRpcBuc->dStripRpcPosX),
01488 (fRpcHdInputEvent->fClusters[uClusterHd]).dY + fParRpcHd->dStripRpcPosY
01489 -( (fRpcBucInputEvent->fClusters[uIndexClusterBuc]).dY + fParRpcBuc->dStripRpcPosY) );
01490 }
01491 }
01492
01493 if( 0 < ( (fParRpcHd->dStripLength)*(fParRpcHd->dStripWidth)*(double_t)fParRpcHd->uNbStrips) )
01494 {
01495 if( 0.0 < fScalersInputEvent->fDDetectorRate[0])
01496 fFluxHdLeftEvolution->Fill( fScalersInputEvent->fDTimeSinceFirstEventSecondsTriglog,
01497 fScalersInputEvent->fDDetectorRate[0]
01498 /( (fParRpcHd->dStripLength)*(fParRpcHd->dStripWidth)*(double_t)fParRpcHd->uNbStrips),
01499 fScalersInputEvent->fDTimeSinceLastEventSecondsTriglog);
01500
01501 if( 0.0 < fScalersInputEvent->fDDetectorRate[0])
01502 fFluxHdRightEvolution->Fill( fScalersInputEvent->fDTimeSinceFirstEventSecondsTriglog,
01503 fScalersInputEvent->fDDetectorRate[1]
01504 /( (fParRpcHd->dStripLength)*(fParRpcHd->dStripWidth)*(double_t)fParRpcHd->uNbStrips),
01505 fScalersInputEvent->fDTimeSinceLastEventSecondsTriglog);
01506 }
01507 #if SCALORMU_NB_SCAL == 16
01508
01509 if( 0 < ( (fParRpcBuc->dStripLength)*(fParRpcBuc->dStripWidth)*(double_t)fParRpcBuc->uNbStrips) &&
01510 0.0 < fScalersInputEvent->fDDetectorRate[2]
01511 )
01512 fFluxBucEvolution->Fill( fScalersInputEvent->fDTimeSinceFirstEventSecondsTriglog,
01513 fScalersInputEvent->fDDetectorRate[2]
01514 /( (fParRpcBuc->dStripLength)*(fParRpcBuc->dStripWidth)*(double_t)fParRpcBuc->uNbStrips),
01515 fScalersInputEvent->fDTimeSinceLastEventSecondsTriglog);
01516 #else
01517
01518 if( 0 < ( (fParRpcBuc->dStripLength)*(fParRpcBuc->dStripWidth)*(double_t)fParRpcBuc->uNbStrips) &&
01519 0.0 < fScalersInputEvent->fDDetectorRate[2]
01520 )
01521 fFluxBucLeftEvolution->Fill( fScalersInputEvent->fDTimeSinceFirstEventSecondsTriglog,
01522 fScalersInputEvent->fDDetectorRate[2]
01523 /( (fParRpcBuc->dStripLength)*(fParRpcBuc->dStripWidth)*(double_t)fParRpcBuc->uNbStrips),
01524 fScalersInputEvent->fDTimeSinceLastEventSecondsTriglog);
01525 if( 0 < ( (fParRpcBuc->dStripLength)*(fParRpcBuc->dStripWidth)*(double_t)fParRpcBuc->uNbStrips) &&
01526 0.0 < fScalersInputEvent->fDDetectorRate[3]
01527 )
01528 fFluxBucRightEvolution->Fill( fScalersInputEvent->fDTimeSinceFirstEventSecondsTriglog,
01529 fScalersInputEvent->fDDetectorRate[3]
01530 /( (fParRpcBuc->dStripLength)*(fParRpcBuc->dStripWidth)*(double_t)fParRpcBuc->uNbStrips),
01531 fScalersInputEvent->fDTimeSinceLastEventSecondsTriglog);
01532 #endif
01533
01534 if(0 < ( (fParRpcHd->dStripLength)*(fParRpcHd->dStripWidth)*(double_t)fParRpcHd->uNbStrips) &&
01535 0 < ( (fParRpcBuc->dStripLength)*(fParRpcBuc->dStripWidth)*(double_t)fParRpcBuc->uNbStrips) )
01536 {
01537 if(( -1 <fScalersInputEvent->fDScalOrMuRate[0] ||
01538 -1 <fScalersInputEvent->fDScalOrMuRate[1] ||
01539 -1 <fScalersInputEvent->fDScalOrMuRate[2] ||
01540 -1 <fScalersInputEvent->fDScalOrMuRate[3] ) &&
01541 ( -1 <fScalersInputEvent->fDScalOrMuRate[8] ||
01542 -1 <fScalersInputEvent->fDScalOrMuRate[9] ||
01543 -1 <fScalersInputEvent->fDScalOrMuRate[10] ||
01544 -1 <fScalersInputEvent->fDScalOrMuRate[11] ||
01545 -1 <fScalersInputEvent->fDScalOrMuRate[12] ||
01546 -1 <fScalersInputEvent->fDScalOrMuRate[13] ||
01547 -1 <fScalersInputEvent->fDScalOrMuRate[14] ||
01548 -1 <fScalersInputEvent->fDScalOrMuRate[15] ))
01549 fFluxComparisonHdLeftBuc->Fill(
01550 ( (-1 <fScalersInputEvent->fDScalOrMuRate[8] ? fScalersInputEvent->fDScalOrMuRate[ 8] : 0.0)
01551 + (-1 <fScalersInputEvent->fDScalOrMuRate[9] ? fScalersInputEvent->fDScalOrMuRate[ 9] : 0.0)
01552 + (-1 <fScalersInputEvent->fDScalOrMuRate[10] ? fScalersInputEvent->fDScalOrMuRate[10] : 0.0)
01553 + (-1 <fScalersInputEvent->fDScalOrMuRate[11] ? fScalersInputEvent->fDScalOrMuRate[11] : 0.0)
01554 + (-1 <fScalersInputEvent->fDScalOrMuRate[12] ? fScalersInputEvent->fDScalOrMuRate[12] : 0.0)
01555 + (-1 <fScalersInputEvent->fDScalOrMuRate[13] ? fScalersInputEvent->fDScalOrMuRate[13] : 0.0)
01556 + (-1 <fScalersInputEvent->fDScalOrMuRate[14] ? fScalersInputEvent->fDScalOrMuRate[14] : 0.0)
01557 + (-1 <fScalersInputEvent->fDScalOrMuRate[15] ? fScalersInputEvent->fDScalOrMuRate[15] : 0.0) )
01558 /( (fParRpcBuc->dStripLength)*(fParRpcBuc->dStripWidth)*(double_t)fParRpcBuc->uNbStrips),
01559 ( (-1 <fScalersInputEvent->fDScalOrMuRate[0] ? fScalersInputEvent->fDScalOrMuRate[0] : 0.0)
01560 + (-1 <fScalersInputEvent->fDScalOrMuRate[1] ? fScalersInputEvent->fDScalOrMuRate[1] : 0.0)
01561 + (-1 <fScalersInputEvent->fDScalOrMuRate[2] ? fScalersInputEvent->fDScalOrMuRate[2] : 0.0)
01562 + (-1 <fScalersInputEvent->fDScalOrMuRate[3] ? fScalersInputEvent->fDScalOrMuRate[3] : 0.0) )
01563 /( (fParRpcHd->dStripLength)*(fParRpcHd->dStripWidth)*(double_t)fParRpcHd->uNbStrips) );
01564
01565 if(( -1 <fScalersInputEvent->fDScalOrMuRate[4] ||
01566 -1 <fScalersInputEvent->fDScalOrMuRate[5] ||
01567 -1 <fScalersInputEvent->fDScalOrMuRate[6] ||
01568 -1 <fScalersInputEvent->fDScalOrMuRate[7] )&&
01569 ( -1 <fScalersInputEvent->fDScalOrMuRate[8] ||
01570 -1 <fScalersInputEvent->fDScalOrMuRate[9] ||
01571 -1 <fScalersInputEvent->fDScalOrMuRate[10] ||
01572 -1 <fScalersInputEvent->fDScalOrMuRate[11] ||
01573 -1 <fScalersInputEvent->fDScalOrMuRate[12] ||
01574 -1 <fScalersInputEvent->fDScalOrMuRate[13] ||
01575 -1 <fScalersInputEvent->fDScalOrMuRate[14] ||
01576 -1 <fScalersInputEvent->fDScalOrMuRate[15] ))
01577 fFluxComparisonHdRightBuc->Fill(
01578 ( (-1 <fScalersInputEvent->fDScalOrMuRate[8] ? fScalersInputEvent->fDScalOrMuRate[ 8] : 0.0)
01579 + (-1 <fScalersInputEvent->fDScalOrMuRate[9] ? fScalersInputEvent->fDScalOrMuRate[ 9] : 0.0)
01580 + (-1 <fScalersInputEvent->fDScalOrMuRate[10] ? fScalersInputEvent->fDScalOrMuRate[10] : 0.0)
01581 + (-1 <fScalersInputEvent->fDScalOrMuRate[11] ? fScalersInputEvent->fDScalOrMuRate[11] : 0.0)
01582 + (-1 <fScalersInputEvent->fDScalOrMuRate[12] ? fScalersInputEvent->fDScalOrMuRate[12] : 0.0)
01583 + (-1 <fScalersInputEvent->fDScalOrMuRate[13] ? fScalersInputEvent->fDScalOrMuRate[13] : 0.0)
01584 + (-1 <fScalersInputEvent->fDScalOrMuRate[14] ? fScalersInputEvent->fDScalOrMuRate[14] : 0.0)
01585 + (-1 <fScalersInputEvent->fDScalOrMuRate[15] ? fScalersInputEvent->fDScalOrMuRate[15] : 0.0) )
01586 /( (fParRpcBuc->dStripLength)*(fParRpcBuc->dStripWidth)*(double_t)fParRpcBuc->uNbStrips),
01587 ( (-1 <fScalersInputEvent->fDScalOrMuRate[4] ? fScalersInputEvent->fDScalOrMuRate[4] : 0.0)
01588 + (-1 <fScalersInputEvent->fDScalOrMuRate[5] ? fScalersInputEvent->fDScalOrMuRate[5] : 0.0)
01589 + (-1 <fScalersInputEvent->fDScalOrMuRate[6] ? fScalersInputEvent->fDScalOrMuRate[6] : 0.0)
01590 + (-1 <fScalersInputEvent->fDScalOrMuRate[7] ? fScalersInputEvent->fDScalOrMuRate[7] : 0.0) )
01591 /( (fParRpcHd->dStripLength)*(fParRpcHd->dStripWidth)*(double_t)fParRpcHd->uNbStrips) );
01592 }
01593
01594
01595 if( 0 != fParRpcBucMod1 && 0 != fParRpcBucMod3)
01596 if( 1 == (fRpcBucMod1InputEvent->fClusters).size() &&
01597 1 == (fRpcBucMod3InputEvent->fClusters).size())
01598 {
01599 fMatchingMod13Mul1->Fill( (fRpcBucMod3InputEvent->fClusters[0]).dX + fParRpcBucMod3->dStripRpcPosX
01600 -( (fRpcBucMod1InputEvent->fClusters[0]).dX + fParRpcBucMod1->dStripRpcPosX),
01601 (fRpcBucMod3InputEvent->fClusters[0]).dY + fParRpcBucMod3->dStripRpcPosY
01602 -( (fRpcBucMod1InputEvent->fClusters[0]).dY + fParRpcBucMod1->dStripRpcPosY) );
01603 fMatchingTvsDistMod13Mul1->Fill(
01604 (fRpcBucMod3InputEvent->fClusters[0]).dMeanTime - (fRpcBucMod1InputEvent->fClusters[0]).dMeanTime,
01605 TMath::Sqrt(
01606 ( (fRpcBucMod3InputEvent->fClusters[0]).dX + fParRpcBucMod3->dStripRpcPosX
01607 -( (fRpcBucMod1InputEvent->fClusters[0]).dX + fParRpcBucMod1->dStripRpcPosX) )*
01608 ( (fRpcBucMod3InputEvent->fClusters[0]).dX + fParRpcBucMod3->dStripRpcPosX
01609 -( (fRpcBucMod1InputEvent->fClusters[0]).dX + fParRpcBucMod1->dStripRpcPosX) ) +
01610 ( (fRpcBucMod3InputEvent->fClusters[0]).dY + fParRpcBucMod3->dStripRpcPosY
01611 -( (fRpcBucMod1InputEvent->fClusters[0]).dY + fParRpcBucMod1->dStripRpcPosY) )*
01612 ( (fRpcBucMod3InputEvent->fClusters[0]).dY + fParRpcBucMod3->dStripRpcPosY
01613 -( (fRpcBucMod1InputEvent->fClusters[0]).dY + fParRpcBucMod1->dStripRpcPosY) ) ) );
01614 }
01615 if( 0 != fParRpcBucMod1 && 0 != fParRpcBucMod2)
01616 if( 1 == (fRpcBucMod1InputEvent->fClusters).size() &&
01617 1 == (fRpcBucMod2InputEvent->fClusters).size())
01618 {
01619 fMatchingMod12Mul1->Fill( (fRpcBucMod2InputEvent->fClusters[0]).dX + fParRpcBucMod2->dStripRpcPosX
01620 -( (fRpcBucMod1InputEvent->fClusters[0]).dX + fParRpcBucMod1->dStripRpcPosX),
01621 (fRpcBucMod2InputEvent->fClusters[0]).dY + fParRpcBucMod2->dStripRpcPosY
01622 -( (fRpcBucMod1InputEvent->fClusters[0]).dY + fParRpcBucMod1->dStripRpcPosY) );
01623 fMatchingTvsDistMod12Mul1->Fill(
01624 (fRpcBucMod2InputEvent->fClusters[0]).dMeanTime - (fRpcBucMod1InputEvent->fClusters[0]).dMeanTime,
01625 TMath::Sqrt(
01626 ( (fRpcBucMod2InputEvent->fClusters[0]).dX + fParRpcBucMod2->dStripRpcPosX
01627 -( (fRpcBucMod1InputEvent->fClusters[0]).dX + fParRpcBucMod1->dStripRpcPosX) )*
01628 ( (fRpcBucMod2InputEvent->fClusters[0]).dX + fParRpcBucMod2->dStripRpcPosX
01629 -( (fRpcBucMod1InputEvent->fClusters[0]).dX + fParRpcBucMod1->dStripRpcPosX) ) +
01630 ( (fRpcBucMod2InputEvent->fClusters[0]).dY + fParRpcBucMod2->dStripRpcPosY
01631 -( (fRpcBucMod1InputEvent->fClusters[0]).dY + fParRpcBucMod1->dStripRpcPosY) )*
01632 ( (fRpcBucMod2InputEvent->fClusters[0]).dY + fParRpcBucMod2->dStripRpcPosY
01633 -( (fRpcBucMod1InputEvent->fClusters[0]).dY + fParRpcBucMod1->dStripRpcPosY) ) ) );
01634 }
01635 if( 0 != fParRpcBucMod2 && 0 != fParRpcBucMod4)
01636 if( 1 == (fRpcBucMod2InputEvent->fClusters).size() &&
01637 1 == (fRpcBucMod4InputEvent->fClusters).size())
01638 {
01639 fMatchingMod24Mul1->Fill( (fRpcBucMod4InputEvent->fClusters[0]).dX + fParRpcBucMod4->dStripRpcPosX
01640 -( (fRpcBucMod2InputEvent->fClusters[0]).dX + fParRpcBucMod2->dStripRpcPosX),
01641 (fRpcBucMod4InputEvent->fClusters[0]).dY + fParRpcBucMod4->dStripRpcPosY
01642 -( (fRpcBucMod2InputEvent->fClusters[0]).dY + fParRpcBucMod2->dStripRpcPosY) );
01643 fMatchingTvsDistMod24Mul1->Fill(
01644 (fRpcBucMod4InputEvent->fClusters[0]).dMeanTime - (fRpcBucMod2InputEvent->fClusters[0]).dMeanTime,
01645 TMath::Sqrt(
01646 ( (fRpcBucMod4InputEvent->fClusters[0]).dX + fParRpcBucMod4->dStripRpcPosX
01647 -( (fRpcBucMod2InputEvent->fClusters[0]).dX + fParRpcBucMod2->dStripRpcPosX) )*
01648 ( (fRpcBucMod4InputEvent->fClusters[0]).dX + fParRpcBucMod4->dStripRpcPosX
01649 -( (fRpcBucMod2InputEvent->fClusters[0]).dX + fParRpcBucMod2->dStripRpcPosX) ) +
01650 ( (fRpcBucMod4InputEvent->fClusters[0]).dY + fParRpcBucMod4->dStripRpcPosY
01651 -( (fRpcBucMod2InputEvent->fClusters[0]).dY + fParRpcBucMod2->dStripRpcPosY) )*
01652 ( (fRpcBucMod4InputEvent->fClusters[0]).dY + fParRpcBucMod4->dStripRpcPosY
01653 -( (fRpcBucMod2InputEvent->fClusters[0]).dY + fParRpcBucMod2->dStripRpcPosY) ) ) );
01654 }
01655 if( 0 != fParRpcBucMod3 && 0 != fParRpcBucMod4)
01656 if( 1 == (fRpcBucMod3InputEvent->fClusters).size() &&
01657 1 == (fRpcBucMod4InputEvent->fClusters).size())
01658 {
01659 fMatchingMod34Mul1->Fill( (fRpcBucMod4InputEvent->fClusters[0]).dX + fParRpcBucMod4->dStripRpcPosX
01660 -( (fRpcBucMod3InputEvent->fClusters[0]).dX + fParRpcBucMod3->dStripRpcPosX),
01661 (fRpcBucMod4InputEvent->fClusters[0]).dY + fParRpcBucMod4->dStripRpcPosY
01662 -( (fRpcBucMod3InputEvent->fClusters[0]).dY + fParRpcBucMod3->dStripRpcPosY) );
01663 fMatchingTvsDistMod34Mul1->Fill(
01664 (fRpcBucMod4InputEvent->fClusters[0]).dMeanTime - (fRpcBucMod3InputEvent->fClusters[0]).dMeanTime,
01665 TMath::Sqrt(
01666 ( (fRpcBucMod4InputEvent->fClusters[0]).dX + fParRpcBucMod4->dStripRpcPosX
01667 -( (fRpcBucMod3InputEvent->fClusters[0]).dX + fParRpcBucMod3->dStripRpcPosX) )*
01668 ( (fRpcBucMod4InputEvent->fClusters[0]).dX + fParRpcBucMod4->dStripRpcPosX
01669 -( (fRpcBucMod3InputEvent->fClusters[0]).dX + fParRpcBucMod3->dStripRpcPosX) ) +
01670 ( (fRpcBucMod4InputEvent->fClusters[0]).dY + fParRpcBucMod4->dStripRpcPosY
01671 -( (fRpcBucMod3InputEvent->fClusters[0]).dY + fParRpcBucMod3->dStripRpcPosY) )*
01672 ( (fRpcBucMod4InputEvent->fClusters[0]).dY + fParRpcBucMod4->dStripRpcPosY
01673 -( (fRpcBucMod3InputEvent->fClusters[0]).dY + fParRpcBucMod3->dStripRpcPosY) ) ) );
01674 }
01675 if( 0 != fParRpcBucMod1)
01676 {
01677 if( 0 < ( (fParRpcBucMod1->dStripLength)*(fParRpcBucMod1->dStripWidth)*(double_t)fParRpcBucMod1->uNbStrips) )
01678 fFluxBucMod1Evolution->Fill( fScalersInputEvent->fDTimeSinceFirstEventSecondsTriglog,
01679 ( fScalersInputEvent->fDScalOrMuRate[0] +
01680 fScalersInputEvent->fDScalOrMuRate[1] )
01681 /( (fParRpcBucMod1->dStripLength)*(fParRpcBucMod1->dStripWidth)*(double_t)fParRpcBucMod1->uNbStrips),
01682 fScalersInputEvent->fDTimeSinceLastEventSecondsTriglog);
01683 }
01684 if( 0 != fParRpcBucMod2)
01685 {
01686 if( 0 < ( (fParRpcBucMod2->dStripLength)*(fParRpcBucMod2->dStripWidth)*(double_t)fParRpcBucMod2->uNbStrips) )
01687 fFluxBucMod2Evolution->Fill( fScalersInputEvent->fDTimeSinceFirstEventSecondsTriglog,
01688 ( fScalersInputEvent->fDScalOrMuRate[2] +
01689 fScalersInputEvent->fDScalOrMuRate[3] )
01690 /( (fParRpcBucMod2->dStripLength)*(fParRpcBucMod2->dStripWidth)*(double_t)fParRpcBucMod2->uNbStrips),
01691 fScalersInputEvent->fDTimeSinceLastEventSecondsTriglog);
01692 }
01693 if( 0 != fParRpcBucMod3)
01694 {
01695 if( 0 < ( (fParRpcBucMod3->dStripLength)*(fParRpcBucMod3->dStripWidth)*(double_t)fParRpcBucMod3->uNbStrips) )
01696 fFluxBucMod3Evolution->Fill( fScalersInputEvent->fDTimeSinceFirstEventSecondsTriglog,
01697 ( fScalersInputEvent->fDScalOrMuRate[4] +
01698 fScalersInputEvent->fDScalOrMuRate[5] )
01699 /( (fParRpcBucMod3->dStripLength)*(fParRpcBucMod3->dStripWidth)*(double_t)fParRpcBucMod3->uNbStrips),
01700 fScalersInputEvent->fDTimeSinceLastEventSecondsTriglog);
01701 }
01702 if( 0 != fParRpcBucMod4)
01703 {
01704 if( 0 < ( (fParRpcBucMod4->dStripLength)*(fParRpcBucMod4->dStripWidth)*(double_t)fParRpcBucMod4->uNbStrips) )
01705 fFluxBucMod4Evolution->Fill( fScalersInputEvent->fDTimeSinceFirstEventSecondsTriglog,
01706 ( fScalersInputEvent->fDScalOrMuRate[6] +
01707 fScalersInputEvent->fDScalOrMuRate[7] )
01708 /( (fParRpcBucMod4->dStripLength)*(fParRpcBucMod4->dStripWidth)*(double_t)fParRpcBucMod4->uNbStrips),
01709 fScalersInputEvent->fDTimeSinceLastEventSecondsTriglog);
01710 }
01711
01712 if( kTRUE == bSelectedTrigger )
01713 {
01714 Double_t dDiamondToTrigger = 0.0;
01715 Bool_t bOneDiamondGood = kFALSE;
01716 Bool_t bOneBucGood = kFALSE;
01717 Bool_t bOneBucHdGood = kFALSE;
01718 for( Int_t iDiamondHit = 0; iDiamondHit < fVftxInputEvent->fVftxBoards[9].iMultiplicity[55]; iDiamondHit++ )
01719 {
01720 dDiamondToTrigger = (fVftxInputEvent->fVftxBoards[9]).dTimeCorr[55][iDiamondHit]
01721 - (fVftxInputEvent->fVftxBoards[9]).iTriggerTime*CLOCK_TIME;
01722 if( 1000 < (fVftxInputEvent->fVftxBoards[9]).iCoarseTime[55][iDiamondHit]
01723 - (fVftxInputEvent->fVftxBoards[9]).iTriggerTime)
01724 dDiamondToTrigger -= ((TDC_FIFO_COARSE_CT>>TDC_FIFO_COARSE_CT_SHIFT)+1)*(Double_t)CLOCK_TIME;
01725 if( (fVftxInputEvent->fVftxBoards[9]).iCoarseTime[55][iDiamondHit]
01726 - (fVftxInputEvent->fVftxBoards[9]).iTriggerTime < -1000 )
01727 dDiamondToTrigger += ((TDC_FIFO_COARSE_CT>>TDC_FIFO_COARSE_CT_SHIFT)+1)*(Double_t)CLOCK_TIME;
01728
01729 if( -70000 <= dDiamondToTrigger && dDiamondToTrigger <= -40000)
01730 {
01731 bOneDiamondGood = kTRUE;
01732 break;
01733 }
01734 }
01735 for(UInt_t uClusterBuc = 0; uClusterBuc < (fRpcBucInputEvent->fClusters).size(); uClusterBuc++)
01736 if( 1 < ( (fRpcBucInputEvent->fClusters[uClusterBuc]).fHits).size() &&
01737 -3.25 < (fRpcBucInputEvent->fClusters[uClusterBuc]).dX &&
01738 (fRpcBucInputEvent->fClusters[uClusterBuc]).dX < -1.25 &&
01739 -0.70 < (fRpcBucInputEvent->fClusters[uClusterBuc]).dY &&
01740 (fRpcBucInputEvent->fClusters[uClusterBuc]).dY < 1.3)
01741 {
01742 bOneBucGood = kTRUE;
01743
01744 for(UInt_t uClusterHd = 0; uClusterHd < (fRpcHdInputEvent->fClusters).size(); uClusterHd++)
01745 if( TMath::Sqrt(
01746 ( (fRpcHdInputEvent->fClusters[uClusterHd]).dX + fParRpcHd->dStripRpcPosX
01747 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dX + fParRpcBuc->dStripRpcPosX) )*
01748 ( (fRpcHdInputEvent->fClusters[uClusterHd]).dX + fParRpcHd->dStripRpcPosX
01749 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dX + fParRpcBuc->dStripRpcPosX) ) +
01750 ( (fRpcHdInputEvent->fClusters[uClusterHd]).dY + fParRpcHd->dStripRpcPosY
01751 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dY + fParRpcBuc->dStripRpcPosY) )*
01752 ( (fRpcHdInputEvent->fClusters[uClusterHd]).dY + fParRpcHd->dStripRpcPosY
01753 -( (fRpcBucInputEvent->fClusters[uClusterBuc]).dY + fParRpcBuc->dStripRpcPosY) ) ) < 3.0 )
01754 {
01755 bOneBucHdGood = kTRUE;
01756
01757 Double_t dHdToBuc =
01758 (fRpcHdInputEvent->fClusters[uClusterHd]).dMeanTime
01759 - (fRpcBucInputEvent->fClusters[uClusterBuc]).dMeanTime
01760 - fParRpcHd->dOffsetMatching[ (Int_t)((fRpcHdInputEvent->fClusters[uClusterHd]).dMeanStrip) ]
01761 - fParRpcBuc->dOffsetMatching[ (Int_t)((fRpcBucInputEvent->fClusters[uClusterBuc]).dMeanStrip) ];
01762 for( Int_t iDiamondHit = 0; iDiamondHit < fVftxInputEvent->fVftxBoards[9].iMultiplicity[55]; iDiamondHit++ )
01763 {
01764 dDiamondToTrigger = (fVftxInputEvent->fVftxBoards[9]).dTimeCorr[55][iDiamondHit]
01765 - (fVftxInputEvent->fVftxBoards[9]).iTriggerTime*CLOCK_TIME;
01766 if( 1000 < (fVftxInputEvent->fVftxBoards[9]).iCoarseTime[55][iDiamondHit]
01767 - (fVftxInputEvent->fVftxBoards[9]).iTriggerTime)
01768 dDiamondToTrigger -= ((TDC_FIFO_COARSE_CT>>TDC_FIFO_COARSE_CT_SHIFT)+1)*(Double_t)CLOCK_TIME;
01769 if( (fVftxInputEvent->fVftxBoards[9]).iCoarseTime[55][iDiamondHit]
01770 - (fVftxInputEvent->fVftxBoards[9]).iTriggerTime < -1000 )
01771 dDiamondToTrigger += ((TDC_FIFO_COARSE_CT>>TDC_FIFO_COARSE_CT_SHIFT)+1)*(Double_t)CLOCK_TIME;
01772
01773 if( -70000 <= dDiamondToTrigger && dDiamondToTrigger <= -40000)
01774 {
01775 Double_t dDiamondToBuc = (fVftxInputEvent->fVftxBoards[9]).dTimeCorr[55][iDiamondHit]
01776 - (fRpcBucInputEvent->fClusters[uClusterBuc]).dMeanTime
01777 - fParRpcBuc->dOffsetMatching[ (Int_t)((fRpcBucInputEvent->fClusters[uClusterBuc]).dMeanStrip)];
01778 fDtDiamBuc->Fill(dDiamondToBuc);
01779 if( 0 < fPlasticsEvent->fHits[1].size() &&
01780 0 < fPlasticsEvent->fHits[0].size() )
01781 fDtCompHdBucVsDiamBucCutPlastics->Fill( dDiamondToBuc, dHdToBuc);
01782 else fDtCompHdBucVsDiamBuc->Fill( dDiamondToBuc, dHdToBuc);
01783 }
01784 }
01785
01786
01787 }
01788
01789 }
01790
01791
01792 if(0 < fPlasticsEvent->fHits[0].size() )
01793 {
01794 fiNbEventsWithPlastics1++;
01795 if( 0 < (fRpcHdInputEvent->fClusters).size() )
01796 fiNbEventsWithPlastics1Hd++;
01797
01798 if( kTRUE == bOneBucGood
01799 && kTRUE == bOneDiamondGood )
01800 {
01801 fiNbEventsWithBucPlastics1++;
01802 if( kTRUE == bOneBucHdGood )
01803 fiNbEventsWithBucPlastics1Hd++;
01804 }
01805 }
01806 if(0 < fPlasticsEvent->fHits[1].size() )
01807 {
01808 fiNbEventsWithPlastics2++;
01809 if( 0 < (fRpcHdInputEvent->fClusters).size() )
01810 fiNbEventsWithPlastics2Hd++;
01811
01812 if( kTRUE == bOneBucGood
01813 && kTRUE == bOneDiamondGood )
01814 {
01815 fiNbEventsWithBucPlastics2++;
01816 if( kTRUE == bOneBucHdGood )
01817 fiNbEventsWithBucPlastics2Hd++;
01818 }
01819
01820 if(0 < fPlasticsEvent->fHits[0].size() )
01821 {
01822 fiNbEventsWithPlastics12++;
01823 if( 0 < (fRpcHdInputEvent->fClusters).size() )
01824 fiNbEventsWithPlastics12Hd++;
01825
01826 if( kTRUE == bOneBucGood
01827 && kTRUE == bOneDiamondGood )
01828 {
01829 fiNbEventsWithBucPlastics12++;
01830 if( kTRUE == bOneBucHdGood )
01831 fiNbEventsWithBucPlastics12Hd++;
01832 }
01833 }
01834 }
01835
01836 if( 0 < fiNbEventsWithPlastics1 )
01837 {
01838 fHdEffVsPlastics->SetBinContent( fHdEffVsPlastics->FindBin(0),
01839 100.0*(Double_t)fiNbEventsWithPlastics1Hd/(Double_t)fiNbEventsWithPlastics1 );
01840 fHdEffVsPlasticsNb->SetBinContent( fHdEffVsPlasticsNb->FindBin(0), fiNbEventsWithPlastics1);
01841 }
01842 if( 0 < fiNbEventsWithPlastics2 )
01843 {
01844 fHdEffVsPlastics->SetBinContent( fHdEffVsPlastics->FindBin(1),
01845 100.0*(Double_t)fiNbEventsWithPlastics2Hd/(Double_t)fiNbEventsWithPlastics2 );
01846 fHdEffVsPlasticsNb->SetBinContent( fHdEffVsPlasticsNb->FindBin(1), fiNbEventsWithPlastics2);
01847 }
01848 if( 0 < fiNbEventsWithPlastics12 )
01849 {
01850 fHdEffVsPlastics->SetBinContent( fHdEffVsPlastics->FindBin(2),
01851 100.0*(Double_t)fiNbEventsWithPlastics12Hd/(Double_t)fiNbEventsWithPlastics12 );
01852 fHdEffVsPlasticsNb->SetBinContent( fHdEffVsPlasticsNb->FindBin(2), fiNbEventsWithPlastics12);
01853 }
01854
01855 if(0 < fPlasticsEvent->fHits[0].size() &&
01856 0 < fPlasticsEvent->fHits[1].size())
01857 fPlasticsDt->Fill( (fPlasticsEvent->fHits[0][0].dTimeLeft + fPlasticsEvent->fHits[0][0].dTimeRight)/2
01858 - (fPlasticsEvent->fHits[1][0].dTimeLeft + fPlasticsEvent->fHits[1][0].dTimeRight)/2);
01859
01860 if( 0 < fiNbEventsWithPlastics1 &&
01861 0 < fiNbEventsWithPlastics2 &&
01862 0 < fiNbEventsWithPlastics12)
01863 {
01864 TString txt;
01865 txt.Form("#splitline{#scale[1.0]{#color[2]{%.2f %% <= Efficiency vs Plas1}}}"
01866 "{#splitline{#scale[1.0]{#color[4]{%.2f %% <= Efficiency vs Plas2}}}"
01867 "{#scale[1.0]{#color[6]{%.2f %% <= Efficiency vs (Plas1 and 2)}}}}",
01868 100.0*(Double_t)fiNbEventsWithPlastics1Hd/(Double_t)fiNbEventsWithPlastics1,
01869 100.0*(Double_t)fiNbEventsWithPlastics2Hd/(Double_t)fiNbEventsWithPlastics2,
01870 100.0*(Double_t)fiNbEventsWithPlastics12Hd/(Double_t)fiNbEventsWithPlastics12);
01871 fHdEffPlastics->SetText(0.2, 0.5, txt.Data());
01872 }
01873
01874 if( 0 < fiNbEventsWithBucPlastics1 )
01875 {
01876 fHdEffVsBucPlastics->SetBinContent( fHdEffVsBucPlastics->FindBin(0),
01877 100.0*(Double_t)fiNbEventsWithBucPlastics1Hd/(Double_t)fiNbEventsWithBucPlastics1 );
01878 fHdEffVsBucPlasticsNb->SetBinContent( fHdEffVsBucPlasticsNb->FindBin(0), fiNbEventsWithBucPlastics1);
01879 }
01880 if( 0 < fiNbEventsWithBucPlastics2 )
01881 {
01882 fHdEffVsBucPlastics->SetBinContent( fHdEffVsBucPlastics->FindBin(1),
01883 100.0*(Double_t)fiNbEventsWithBucPlastics2Hd/(Double_t)fiNbEventsWithBucPlastics2 );
01884 fHdEffVsBucPlasticsNb->SetBinContent( fHdEffVsBucPlasticsNb->FindBin(1), fiNbEventsWithBucPlastics2);
01885 }
01886 if( 0 < fiNbEventsWithBucPlastics12 )
01887 {
01888 fHdEffVsBucPlastics->SetBinContent( fHdEffVsBucPlastics->FindBin(2),
01889 100.0*(Double_t)fiNbEventsWithBucPlastics12Hd/(Double_t)fiNbEventsWithBucPlastics12 );
01890 fHdEffVsBucPlasticsNb->SetBinContent( fHdEffVsBucPlasticsNb->FindBin(2), fiNbEventsWithBucPlastics12);
01891 }
01892
01893 if( 0 < fiNbEventsWithBucPlastics1 &&
01894 0 < fiNbEventsWithBucPlastics2 &&
01895 0 < fiNbEventsWithBucPlastics12)
01896 {
01897 TString txt;
01898 txt.Form("#splitline{#scale[1.0]{#color[2]{%.2f %% <= Efficiency vs Plas1 + Buc + Diam}}}"
01899 "{#splitline{#scale[1.0]{#color[4]{%.2f %% <= Efficiency vs Plas2 + Buc + Diam}}}"
01900 "{#scale[1.0]{#color[6]{%.2f %% <= Efficiency vs (Plas1 and 2) + Buc + Diam}}}}",
01901 100.0*(Double_t)fiNbEventsWithBucPlastics1Hd/(Double_t)fiNbEventsWithBucPlastics1,
01902 100.0*(Double_t)fiNbEventsWithBucPlastics2Hd/(Double_t)fiNbEventsWithBucPlastics2,
01903 100.0*(Double_t)fiNbEventsWithBucPlastics12Hd/(Double_t)fiNbEventsWithBucPlastics12);
01904 fHdEffBucPlastics->SetText(0.2, 0.5, txt.Data());
01905 }
01906 }
01907
01908 fOutputEvent->SetValid(kTRUE);
01909 }