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

beamtime/gsi-aug12/prod/go4/MATCHING/TMatchingProc.cxx (r4864/r4000)

Go to the documentation of this file.
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    //~ cout<<name<<endl;
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, // <- To be put in Param file
00047          20, 0, 20, // <- To be put in Param file
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, // <- To be put in Param file
00055          20, 0, 20, // <- To be put in Param file
00056          Form("Mul %s", fParRpcHd->sStripRpcName.Data()),
00057          Form("Mul %s", fParRpcBuc->sStripRpcName.Data()) );
00058 
00059    // Multiplicity 1-1 events:
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, // <- To be put in Param file
00064          300, -150, 150, // <- To be put in Param file
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, // <- To be put in Param file
00071          300, -150, 150, // <- To be put in Param file
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, // <- To be put in Param file
00078          400, -50, 50, // <- To be put in Param file
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, // <- To be put in Param file
00085          400, -100, 100, // <- To be put in Param file
00086          "dX [cm]", "dY [cm]" ) ;
00087 
00088    // Multiplicity vs Rate
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, // <- To be put in Param file
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, // <- To be put in Param file
00099          fParRpcHd->uNbStrips/2, 0, fParRpcHd->uNbStrips/2,
00100          "Rate [Hz/cm^2]", "Nb clusters []" ) ;
00101 
00102    // Rate
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, // <- To be put in Param file
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, // <- To be put in Param file
00113          "Rate [cm]", "Events []" ) ;
00114 
00115    // Efficiency calculation
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 // <- To be put in Param file
00124                            );
00125       AddHistogram( fHdEffVsRateBucMul1, "Matching/Efficiency/" );
00126    } //  if( 0 == fHdEffVsRateBucMul1 )
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 // <- To be put in Param file
00135                            );
00136       AddHistogram( fHdEffVsRateBucMul1Ok, "Matching/Efficiency/" );
00137    } //  if( 0 == fHdEffVsRateBucMul1Ok )
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    } //  if( 0 == fHdEffVsTimeBucMul1 )
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    } //  if( 0 == fHdEffVsTimeBucMul1Ok )
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); // will replace old one of same name
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, // <- To be put in Param file
00201                80, -20, 20, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
00224          400, -100, 100, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
00275          400, -100, 100, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
00303          20, -10 ,10,
00304          "Dt = Cluster Mean time(HD) - Cluster Mean time(BUC)  [ps]", "Y Buc (From Dt) [cm]" ) ;
00305 
00306    // Dt vs Strip vs Tot
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, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
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, // <- To be put in Param file
00368          "Dt = Cluster Mean time(HD) - Cluster Mean time(BUC)  [ps]", "Counts []" ) ;
00369 /*
00370    fDtMul1_StripsHd =
00371       MakeTH2('D', Form("Matching/StripSel/fDtMul1_StripsHd_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00372       Form("%s vs %s Clusters: Mean time difference, events with 1 clusters in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00373       10000, -100000, 0, // <- To be put in Param file
00374       fParRpcHd->uNbStrips, -0.5, fParRpcHd->uNbStrips -0.5,
00375       "Dt = Cluster Mean time(HD) - Cluster Mean time(BUC)  [ps]", "Strip []" ) ;
00376    fDtMul1_StripsBuc =
00377       MakeTH2('D', Form("Matching/StripSel/fDtMul1_StripsBuc_%s_%s", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()),
00378       Form("%s vs %s Clusters: Mean time difference, events with 1 clusters in each RPC", fParRpcHd->sStripRpcName.Data(), fParRpcBuc->sStripRpcName.Data()) ,
00379       10000, -100000, 0, // <- To be put in Param file
00380       fParRpcBuc->uNbStrips, -0.5, fParRpcBuc->uNbStrips -0.5,
00381       "Dt = Cluster Mean time(HD) - Cluster Mean time(BUC)  [ps]", "Strip []" ) ;
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, // <- To be put in Param file
00391          80, -20, 20, // <- To be put in Param file
00392          500, -60000, -10000 // <- To be put in Param file
00393          ) ;
00394       AddHistogram( fMatchingDtMul1, "Matching/" );
00395    }
00396 
00397    // Multiplicity 1,2-1,2 events:
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, // <- To be put in Param file
00402          300, -150, 150, // <- To be put in Param file
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, // <- To be put in Param file
00409          300, -150, 150, // <- To be put in Param file
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, // <- To be put in Param file
00416          400, -100, 100, // <- To be put in Param file
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    } //  if( 0 == fFluxHdLeftEvolution )
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    } // if( 0 == fFluxHdRightEvolution )
00435 #if SCALORMU_NB_SCAL == 16
00436       // Oct 12
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    } // if( 0 == fFluxBucEvolution )
00445 #else
00446       // Starting Nov 12
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    } // if( 0 == fFluxBucLeftEvolution )
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    } // if( 0 == fFluxBucRightEvolution )
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, // <- To be put in Param file
00468          1000, -10, 19990, // <- To be put in Param file
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, // <- To be put in Param file
00474          1000, -10, 19990, // <- To be put in Param file
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, // <- To be put in Param file
00489          400, -50, 50, // <- To be put in Param file
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, // <- To be put in Param file
00495                100, -5, 5, // <- To be put in Param file
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, // <- To be put in Param file
00506          400, -50, 50, // <- To be put in Param file
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, // <- To be put in Param file
00512                100, -5, 5, // <- To be put in Param file
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, // <- To be put in Param file
00530          400, -50, 50, // <- To be put in Param file
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, // <- To be put in Param file
00536                100, -5, 5, // <- To be put in Param file
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, // <- To be put in Param file
00554          400, -50, 50, // <- To be put in Param file
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, // <- To be put in Param file
00560                100, -5, 5, // <- To be put in Param file
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, // <- To be put in Param file
00578          200, 0, 50, // <- To be put in Param file
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, // <- To be put in Param file
00584          200, 0, 50, // <- To be put in Param file
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, // <- To be put in Param file
00596       400, -100, 100, // <- To be put in Param file
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, // <- To be put in Param file
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); // will replace old one of same name
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); // will replace old one of same name
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, // <- To be put in Param file
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, // <- To be put in Param file
00676       1000, -10000, 10000, // <- To be put in Param file
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, // <- To be put in Param file
00684       1000, -10000, 10000, // <- To be put in Param file
00685       "Dt = Diamond time(HD) - Cluster Mean time(BUC)  [ps]",
00686       "Dt = Cluster Mean time(HD) - Cluster Mean time(BUC)  [ps]", "Counts []" ) ;
00687 
00688 // Single event display
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, // <- To be put in Param file
00693       400, -50, 50, // <- To be put in Param file
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, // <- To be put in Param file
00702       400, -50, 50, // <- To be put in Param file
00703       "X [cm]", "Y [cm]" ) ;
00704    fSingleEvtClusterPosDisplayBuc->SetMarkerSize(1);
00705    fSingleEvtClusterPosDisplayHd->SetMarkerColor(2);
00706    fSingleEvtClusterPosDisplayBuc->SetMarkerStyle(34);
00707          
00708    //~ TGo4Log::Info("**** TMatchingProc: Instance %s created", name );
00709 }
00710 
00711 
00712 TMatchingProc::~TMatchingProc()
00713 {
00714    // Fit histograms only if at least one strip define!
00715    if( 0 < fParRpcHd->uNbStrips && 1 == fPar->uDtMatchingFitOn)
00716    {
00717       // Getting mean values for each strip in the Dt profile (offset)
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                   // Gauss fit parameters are:
00749                   // 0 = Constant
00750                   // 1 = Mean
00751                   // 2 = Sigma
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);  // retrieve the value for the parameter 1
00765                   dSigmaFit = r->Parameter(2);  // retrieve the value for the 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             } // if( 0 < th1dStripProfile->GetEntries() )
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          } // for( UInt_t uBin = 0; uBin < fPar->uNbStrips; uBin++)
00785       } // if( fBeamProfileStripRpc->GetEntries() > 0 )
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       // Getting mean values for each strip in the Dt profile (offset)
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                   // Gauss fit parameters are:
00831                   // 0 = Constant
00832                   // 1 = Mean
00833                   // 2 = Sigma
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);  // retrieve the value for the parameter 1
00851                   dSigmaFit = r->Parameter(2);  // retrieve the value for the 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             } // if( 0 < th1dStripProfile->GetEntries() )
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          } // for( UInt_t uBin = 0; uBin < fPar->uNbStrips; uBin++)
00877       } // if( fBeamProfileStripRpc->GetEntries() > 0 )
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    } // if( 0 < fPar->uNbStrips && 1 == fPar->uDtMatchingFitOn )
00888 
00889    cout << "**** TMatchingProc: Delete instance " << endl;
00890 
00891 }
00892 
00893 void TMatchingProc::InitEvent(TGo4EventElement* outevnt)
00894 {
00895    // first assign input event:
00896    // since input event object is never discarded within processor lifetime,
00897    // we just search for subevent by name once to speed up processing
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    } // if(fCrateInputEvent==0)
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    } // if(fTriglogInputEvent==0)
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    } // if(fVftxInputEvent==0)
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    } // if(fRpcHdInputEvent==0 || fRpcBucInputEvent==0 || fScalersInputEvent==0)
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    } // if(fPlasticsEvent==0)
00990 
00991    // then assign output event
00992    // since output event object is never discarded within processor lifetime,
00993    // we just search for subevent by name once to speed up processing
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          //     BuildEvent(dynamic_cast<TGo4MbsSubEvent*>(btevent->GetSubEvent("MBSCRATE")));
01011       }
01012    }
01013 }
01014 
01015 void TMatchingProc::FinalizeEvent()
01016 {
01017    /*
01018    // Accessing HD clusters
01019    for(UInt_t uCluster = 0; uCluster < (fRpcHdInputEvent->fClusters).size(); uCluster++)
01020    {
01021       for(UInt_t uHit = 0; uHit < ((fRpcHdInputEvent->fClusters[uClusters]).fHits).size(); uHit++)
01022       {
01023          (fRpcHdInputEvent->fClusters[uClusters]).fHits)[uHit].iStrip ....
01024       }
01025       (fRpcHdInputEvent->fClusters[uClusters]).dX
01026       (fRpcHdInputEvent->fClusters[uClusters]).dY
01027    }
01028    fParRpcHd->dStripRpcPosX
01029    fParRpcHd->dStripRpcPosY
01030    fParRpcHd->dStripRpcPosZ
01031 
01032    // Accessing Buc clusters
01033    for(UInt_t uCluster = 0; uCluster < (fRpcBucInputEvent->fClusters).size(); uCluster++)
01034    {
01035       for(UInt_t uHit = 0; uHit < ((fRpcBucInputEvent->fClusters[uClusters]).fHits).size(); uHit++)
01036       {
01037          (fRpcBucInputEvent->fClusters[uClusters]).fHits)[uHit].iStrip ....
01038       }
01039       (fRpcBucInputEvent->fClusters[uClusters]).dX
01040       (fRpcBucInputEvent->fClusters[uClusters]).dY
01041    }
01042    fParRpcBuc->dStripRpcPosX
01043    fParRpcBuc->dStripRpcPosY
01044    fParRpcBuc->dStripRpcPosZ
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    // Bucarest full rate / cm^2
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      } // if( 5.0 <= dBucarestReferenceTotalRate )
01076    } // if( kTRUE == bSelectedTrigger )
01077 
01078    // Multiplicity 1-1 events:
01079    if( 1 == (fRpcHdInputEvent->fClusters).size() &&
01080        1 == (fRpcBucInputEvent->fClusters).size())
01081    {
01082       if( kTRUE == bSelectedTrigger )
01083       {
01084          // Position matching
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          // Time matching
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          // Dt againt strip
01167          /*
01168          fDtMul1_StripsHd->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime,
01169                (fRpcHdInputEvent->fClusters[0]).dMeanStrip );
01170          fDtMul1_StripsBuc->Fill( (fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime,
01171                (fRpcBucInputEvent->fClusters[0]).dMeanStrip );
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          cout<<(fRpcHdInputEvent->fClusters[0]).dMeanTime - (fRpcBucInputEvent->fClusters[0]).dMeanTime;
01180          cout<<" "<<(fRpcHdInputEvent->fClusters[0]).dY<<" "<<(fRpcBucInputEvent->fClusters[0]).dX<<endl;
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       } // if( kTRUE == bSelectedTrigger )
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    } // if( 1 == (fRpcHdInputEvent->fClusters).size() && 1 == (fRpcBucInputEvent->fClusters).size())
01212 
01213    // Cluster Nb vs rate
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          } // for(UInt_t uClusterHd = 0; uClusterHd < (fRpcHdInputEvent->fClusters).size(); uClusterHd++)
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          } // if( uBestHdCluster < (fRpcHdInputEvent->fClusters).size() && 0 < dBestDistance )
01265 
01266          fSingleEvtClusterPosDisplayBuc->Fill(
01267                (fRpcBucInputEvent->fClusters[uClusterBuc]).dX + fParRpcBuc->dStripRpcPosX,
01268                (fRpcBucInputEvent->fClusters[uClusterBuc]).dY + fParRpcBuc->dStripRpcPosY );
01269       } // for(UInt_t uClusterBuc = 0; uClusterBuc < (fRpcBucInputEvent->fClusters).size(); uClusterBuc++)
01270       fHdMatchingNbBucIndex->Fill((fRpcBucInputEvent->fClusters).size(), iNbPositionMatchingHdClusters );
01271    } // if out of spill ( attempt)
01272 
01273    // Multiplicity X-1 events:
01274       // Heidelberg counter efficiency vs rate in Bucarest Mul1 event
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       // Hd Efficiency as function of Bucarest cluster size
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       // Loop over HD clusters to find a matching one
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       } // for(UInt_t uClusterHd = 0; uClusterHd < (fRpcHdInputEvent->fClusters).size(); uClusterHd++)
01355 
01356       fBucMul1Rate->Fill( fScalersInputEvent->fDDetectorRate[2]
01357                          );
01358 
01359       if( kTRUE == bAtLeastOneMatchingHdCluster )
01360       {
01361          // Hd Efficiency as function of Bucarest cluster size
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  //        fHdMulBucMul1Rate->Fill(fScalersInputEvent->fDTriglogRate[0][13]);
01368          // Heidelberg counter efficiency vs rate in Bucarest Mul1 event
01369 
01370          if(1 < ( ( (fRpcBucInputEvent->fClusters)[0] ).fHits ).size() &&
01371                5.0 <= dBucarestReferenceTotalRate  )
01372             fuNbEventsWithBucMul1HdOk++;
01373       } // if( kTRUE == bAtLeastOneMatchingHdCluster )
01374 
01375       // Heidelberg counter efficiency vs rate in Bucarest Mul1 event
01376       if( 1 < ( ( (fRpcBucInputEvent->fClusters)[0] ).fHits ).size() &&
01377             5.0 <= dBucarestReferenceTotalRate  )
01378       {
01379          fuNbEventsWithBucMul1 ++;
01380          if( 0 < (fRpcHdInputEvent->fClusters).size()
01381         //      && (fRpcHdInputEvent->fClusters).size() < 3
01382               )
01383             fuNbEventsWithBucMul1Hd++;
01384       }
01385 
01386       // Heidelberg counter efficiency vs rate in Bucarest Mul1 event
01387       // Not sure what is best
01388       if(  fPar->uNbEventAverageEfficiency <= fuNbEventsSummed )
01389 //      if( fPar->uNbEventAverageEfficiency == fuNbEventsWithBucMul1 )
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    // Hd Efficiency as function of Bucarest cluster size
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          fHdEffVsBucSizeMul1->SetBinError( fHdEffVsBucSizeMul1->FindBin(uClusterSize),
01434                100.0*(Double_t)fiNbEventsWith1BigBucClHd[uClusterSize]
01435                /((Double_t)fiNbEventsWith1BigBucCl[uClusterSize]*(Double_t)fiNbEventsWith1BigBucCl[uClusterSize]));
01436                 *
01437                 */
01438          fHdEffVsBucSizeMul1Ok->SetBinContent( fHdEffVsBucSizeMul1Ok->FindBin(uClusterSize),
01439                100.0*(Double_t)fiNbEventsWith1BigBucClHdOk[uClusterSize]
01440                /(Double_t)fiNbEventsWith1BigBucCl[uClusterSize]);
01441          /*
01442          fHdEffVsBucSizeMul1Ok->SetBinError( fHdEffVsBucSizeMul1Ok->FindBin(uClusterSize),
01443                100.0*(Double_t)fiNbEventsWith1BigBucClHdOk[uClusterSize]
01444                /((Double_t)fiNbEventsWith1BigBucCl[uClusterSize]*(Double_t)fiNbEventsWith1BigBucCl[uClusterSize]));
01445                 *
01446                 */
01447       } // if( 0 < fiNbEventsWith1BigBucCl[uClusterSize] )
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    // Multiplicity 1,2-1,2 events: 1-2, 2-1, 2-2
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          } // for(UInt_t uClusterBuc = 0; uClusterBuc < (fRpcBucInputEvent->fClusters).size(); uClusterBuc++)
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       } // for(UInt_t uClusterHd = 0; uClusterHd < (fRpcHdInputEvent->fClusters).size(); uClusterHd++)
01491    } // if( 2 == (fRpcHdInputEvent->fClusters).size() && 2 == (fRpcBucInputEvent->fClusters).size() )
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    } // if( 0 < ( (fParRpcHd->dStripLength)*(fParRpcHd->dStripWidth)*(double_t)fParRpcHd->uNbStrips) )
01507 #if SCALORMU_NB_SCAL == 16
01508       // Oct 12
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    // Starting Nov 12
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    } // if( strip in Hd and Buc)
01593 
01594    // New Bucarest counter
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                      } // if( -150000 <= dDiamondToTrigger && dDiamondToTrigger <= -125000)
01784                   } // for( Int_t iDiamondHit = 0; iDiamondHit < fVftxInputEvent->fVftxBoards[9].iMultiplicity[55]; iDiamondHit++ )
01785    //               break;
01786    //               break;
01787                } // if( matching positions)
01788    //         break;
01789          } // if buc hits matching plastics position
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       // Efficiency against plastics only
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       // Plastics Dt
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       // Efficiency against plastics and Buc and diamond
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    } // if( kTRUE == bSelectedTrigger )
01907 
01908    fOutputEvent->SetValid(kTRUE);
01909 }

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