#include "hrichcorrelator.h"

HRichCorrelator


class description - source file - inheritance tree (.pdf)

class HRichCorrelator : public HReconstructor

Inheritance Chart:
TObject
<-
TNamed
<-
HTask
<-
HReconstructor
<-
HRichCorrelator
<-
HRichCorrelatorSim

    public:
HRichCorrelator() HRichCorrelator(Text_t* name, Text_t* title) HRichCorrelator(Text_t* name, Text_t* title, char* filename, Bool_t style = kFALSE) ~HRichCorrelator() static TClass* Class() Float_t correctMdcSegPhi(Int_t) Float_t correctMdcSegTheta(Float_t) Int_t countDiscreteIndexes(Int_t*, Int_t) HHitMatch* createHitMatch(Int_t) HHitMatchHeader* createHitMatchHeader() Bool_t delRichHit(TObjArray*) void dumpCorrelationStatus() virtual Int_t execute() void fillALLRingHistos(HRichHit*) void fillControlHistos() void fillHitMatch(HHitMatch*, HRichHit*, HKickTrack*) void fillHitMatch(HHitMatch*, HRichHit*, HMdcSeg*) void fillHitMatch(HHitMatch*, HRichHit*, HTofHit*) void fillHitMatch(HHitMatch*, HRichHit*, HShowerHitTof*) void fillHitMatch(HHitMatch*, HMdcSeg*, HTofHit*) void fillHitMatch(HHitMatch*, HMdcSeg*, HShowerHitTof*) void fillHitMatchHeader(HHitMatchHeader*) Int_t fillUniqueIndex(Int_t, Int_t, Int_t*) virtual Bool_t finalize() HParSet* getCorrelationPar() HCategory* getHitMatchCat() HCategory* getHitMatchHeaderCat() HCategory* getKickCat() HCategory* getMdcSegCat() HCategory* getRichHitCat() HCategory* getRichHitFitCat() HCategory* getShowerTofHitCat() HSpecGeomPar* getSpecGeomPar() HCategory* getTofHitCat() void incrementRingCount(HRichHit* pRichHit) void iniControlHistos() virtual void iniCounters() void iniCuts() void iniSwitches() virtual Bool_t init() virtual TClass* IsA() const Bool_t isCorrelated(HRichHit*, HKickTrack*) Bool_t isCorrelated(HRichHit*, HMdcSeg*) Bool_t isCorrelated(HRichHit*, HHitMatch*) Bool_t isCorrelated(HRichHit*, HTofHit*) Bool_t isCorrelated(HRichHit*, HShowerHitTof*) Bool_t isCorrelated(HMdcSeg*, HShowerHitTof*) Bool_t isCorrelated(HMdcSeg*, HTofHit*) Bool_t isGoodRing(HRichHit*) Bool_t isSelectedSector(Int_t) Bool_t isShower(HShowerHitTof*) TCanvas* makeCanvas1() TCanvas* makeCanvas2() void matchKickTracks() virtual Bool_t reinit() void setCorrelationPar(HParSet* pPar) void setKick(HHitMatch*, HKickTrack*) void setMdc(HHitMatch*, HMdcSeg*) void setRich(HHitMatch*, HRichHit*) void setShower(HHitMatch*, HShowerHitTof*) void setSpecGeomPar(HSpecGeomPar* pPar) void setTof(HHitMatch*, HTofHit*) virtual void ShowMembers(TMemberInspector& insp, char* parent) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b)

Data Members


    protected:
HCategory* fTofHits ! HCategory* fShowerTofHits ! HCategory* fRichPID ! HCategory* pRichHitFitCat ! HCategory* fMdcSeg ! HCategory* pHitMatchCat ! HCategory* pHitMatchHeaderCat ! HCategory* fKickTrackCat ! Pointer to KickTrack data category HIterator* iterTracks ! Iterator over KickTrack category HParSet* pCorrPar ! HSpecGeomPar* pSpecGeomPar ! HIterator* fMdcSegIter ! HIterator* fRichIter ! HIterator* pRichHitFitIter ! HIterator* fTofIter ! HIterator* fShowerTofIter ! HIterator* pIterMatchHit ! HIterator* pIterMatchHitHeader ! TFile* pFileOut ! TH1D* pHdiffThetaRichMdc ! Float_t fRichMdcThetaCut ! Float_t fRichMdcThetaMinCut ! Float_t fRichMdcThetaMaxCut ! Float_t fRichTofThetaCut ! Float_t fRichTofThetaMinCut ! Float_t fRichTofThetaMaxCut ! Float_t fRichShowerThetaCut ! Float_t fRichShowerThetaMinCut ! Float_t fRichShowerThetaMaxCut ! Float_t fMdcTofThetaCut ! Float_t fMdcTofThetaMinCut ! Float_t fMdcTofThetaMaxCut ! Float_t fMdcShowerThetaCut ! Float_t fMdcShowerThetaMinCut ! Float_t fMdcShowerThetaMaxCut ! Float_t fTofTofMinCut ! Float_t fTofinoTofMinCut ! Float_t fTofTofMaxCut ! Float_t fTofinoTofMaxCut ! Float_t fShowerAmplification Float_t fRichMdcPhiCut ! Float_t fRichTofPhiCut ! Float_t fRichShowerPhiCut ! Float_t fMdcTofPhiCut ! Float_t fMdcShowerPhiCut ! Int_t nTofinoMultCut ! Float_t fMdcThetaCorrection ! TObjArray* pHistArray ! TH2D* pHistRMTheta ! TH2D* pHistRMPhi ! TH1F* pHistDiffRMTheta1 ! TH1F* pHistDiffRMPhi1 ! TH1F* pHistDiffRMTheta2 ! TH1F* pHistDiffRMPhi2 ! TH1F* pHistDiffRMTheta3 ! TH1F* pHistDiffRMPhi3 ! TH1F* pHistDiffRMTheta4 ! TH1F* pHistDiffRMPhi4 ! TH1F* pHistDiffRMTheta5 ! TH1F* pHistDiffRMPhi5 ! TH1F* pHistDiffRMTheta6 ! TH1F* pHistDiffRMPhi6 ! TH2D* pHistRSTheta ! TH2D* pHistRSPhi ! TH1F* pHistDiffRSTheta1 ! TH1F* pHistDiffRSPhi1 ! TH1F* pHistDiffRSTheta2 ! TH1F* pHistDiffRSPhi2 ! TH1F* pHistDiffRSTheta3 ! TH1F* pHistDiffRSPhi3 ! TH1F* pHistDiffRSTheta4 ! TH1F* pHistDiffRSPhi4 ! TH1F* pHistDiffRSTheta5 ! TH1F* pHistDiffRSPhi5 ! TH1F* pHistDiffRSTheta6 ! TH1F* pHistDiffRSPhi6 ! TH2D* pHistRTTheta ! TH2D* pHistRTPhi ! TH1F* pHistDiffRTTheta1 ! TH1F* pHistDiffRTPhi1 ! TH1F* pHistDiffRTTheta2 ! TH1F* pHistDiffRTPhi2 ! TH1F* pHistDiffRTTheta3 ! TH1F* pHistDiffRTPhi3 ! TH1F* pHistDiffRTTheta4 ! TH1F* pHistDiffRTPhi4 ! TH1F* pHistDiffRTTheta5 ! TH1F* pHistDiffRTPhi5 ! TH1F* pHistDiffRTTheta6 ! TH1F* pHistDiffRTPhi6 ! TH2D* pHistMTTheta ! TH2D* pHistMTPhi ! TH1F* pHistDiffMTTheta1 ! TH1F* pHistDiffMTPhi1 ! TH1F* pHistDiffMTTheta2 ! TH1F* pHistDiffMTPhi2 ! TH1F* pHistDiffMTTheta3 ! TH1F* pHistDiffMTPhi3 ! TH1F* pHistDiffMTTheta4 ! TH1F* pHistDiffMTPhi4 ! TH1F* pHistDiffMTTheta5 ! TH1F* pHistDiffMTPhi5 ! TH1F* pHistDiffMTTheta6 ! TH1F* pHistDiffMTPhi6 ! TH2D* pHistMSTheta ! TH2D* pHistMSPhi ! TH1F* pHistDiffMSTheta1 ! TH1F* pHistDiffMSPhi1 ! TH1F* pHistDiffMSTheta2 ! TH1F* pHistDiffMSPhi2 ! TH1F* pHistDiffMSTheta3 ! TH1F* pHistDiffMSPhi3 ! TH1F* pHistDiffMSTheta4 ! TH1F* pHistDiffMSPhi4 ! TH1F* pHistDiffMSTheta5 ! TH1F* pHistDiffMSPhi5 ! TH1F* pHistDiffMSTheta6 ! TH1F* pHistDiffMSPhi6 ! TH1F* pHistRMTRingHouTra ! TH1F* pHistRMTRingPatMat ! TH1F* pHistRMTRingAmplitude ! TH1F* pHistRMTRingPadNr ! TH1F* pHistRMTRingLocMax4 ! TH1F* pHistRMTRingRadius ! TH1F* pHistRMTRingCenterX ! TH1F* pHistRMTRingCenterY ! TH1F* pHistRMTRingTheta ! TH1F* pHistRMTRingPhi ! TH2D* pHistRMTRingHouTraTheta ! TH2D* pHistRMTRingPatMatTheta ! TH2D* pHistRMTRingAmplitudeTheta ! TH2D* pHistRMTRingPadNrTheta ! TH2D* pHistRMTRingLocMax4Theta ! TH1F* pHistRMRingHouTra ! TH1F* pHistRMRingPatMat ! TH1F* pHistRMRingAmplitude ! TH1F* pHistRMRingPadNr ! TH1F* pHistRMRingLocMax4 ! TH1F* pHistRMRingRadius ! TH1F* pHistRMRingCenterX ! TH1F* pHistRMRingCenterY ! TH1F* pHistRMRingTheta ! TH1F* pHistRMRingPhi ! TH2D* pHistRMRingHouTraTheta ! TH2D* pHistRMRingPatMatTheta ! TH2D* pHistRMRingAmplitudeTheta ! TH2D* pHistRMRingPadNrTheta ! TH2D* pHistRMRingLocMax4Theta ! TH1F* pHistRMSRingHouTra ! TH1F* pHistRMSRingPatMat ! TH1F* pHistRMSRingAmplitude ! TH1F* pHistRMSRingPadNr ! TH1F* pHistRMSRingLocMax4 ! TH1F* pHistRMSRingRadius ! TH1F* pHistRMSRingCenterX ! TH1F* pHistRMSRingCenterY ! TH1F* pHistRMSRingTheta ! TH1F* pHistRMSRingPhi ! TH2D* pHistRMSRingHouTraTheta ! TH2D* pHistRMSRingPatMatTheta ! TH2D* pHistRMSRingAmplitudeTheta ! TH2D* pHistRMSRingPadNrTheta ! TH2D* pHistRMSRingLocMax4Theta ! TH1F* pHistALLRingHouTra ! TH1F* pHistALLRingPatMat ! TH1F* pHistALLRingAmplitude ! TH1F* pHistALLRingPadNr ! TH1F* pHistALLRingLocMax4 ! TH1F* pHistALLRingRadius ! TH1F* pHistALLRingCenterX ! TH1F* pHistALLRingCenterY ! TH1F* pHistALLRingTheta ! TH1F* pHistALLRingPhi ! TH2D* pHistALLRingHouTraTheta ! TH2D* pHistALLRingPatMatTheta ! TH2D* pHistALLRingAmplitudeTheta ! TH2D* pHistALLRingPadNrTheta ! TH2D* pHistALLRingLocMax4Theta ! TProfile* pProfRMTHTtheta ! TProfile* pProfRMSHTtheta ! TProfile* pProfRMTPMtheta ! TProfile* pProfRMHTtheta ! TProfile* pProfRMPMtheta ! TProfile* pProfRMSPMtheta ! TProfile* pProfALLHTtheta ! TProfile* pProfALLPMtheta ! TProfile* pProfALLPadNrTheta ! TProfile* pProfRMPadNrTheta ! TProfile* pProfRMSPadNrTheta ! TProfile* pProfRMTPadNrTheta ! TProfile* pProfALLLocMax4Theta ! TProfile* pProfRMLocMax4Theta ! TProfile* pProfRMSLocMax4Theta ! TProfile* pProfRMTLocMax4Theta ! TProfile* pProfALLRingAmplitudeTheta ! TProfile* pProfRMRingAmplitudeTheta ! TProfile* pProfRMSRingAmplitudeTheta ! TProfile* pProfRMTRingAmplitudeTheta ! Int_t nCounterProcessedNbEvents Float_t nCounterMin2Rings Float_t nCounterTotalNbRings Float_t nCounterRingsAbove45 Float_t nCounterRingsBelow45 Float_t nCounterEvtWritten Float_t nCounterRingsWritten Float_t nCounterNbRejectedRings Float_t nCounterRingsUnresMultHit Float_t nCounterEventsUnresMultHit Float_t nCounterRingsCorrMdc Float_t nCounterRingsCorrShower Float_t nCounterRingsCorrTof Int_t ngNbCorrObjs Int_t ngNb_RM only Int_t ngNb_RT Int_t ngNb_RS Int_t ngNb_MT Int_t ngNb_MS Int_t ngNb_RcMcT RM MT Int_t ngNb_RcMcTcR RM MT RT Int_t ngNb_RMcTcR MT RT Int_t ngNb_RcMTcR RM RT Int_t ngNb_RcMcS RM MS Int_t ngNb_RcMcScR RM MS RS Int_t ngNb_RMcScR MS RS Int_t ngNb_RcMScR RM RS Int_t ngRTM 3 indexes in obj Int_t ngRSM Int_t ngRichCnt Int_t ngMdcSegCnt Int_t ngShowerCnt Int_t ngTofCnt Int_t ngDRind Int_t ngDRichminRMind Int_t ngDRichminRTind Int_t ngDRichminRSind Int_t ngDRichminRMTind Int_t ngDRichminRMSind Int_t ngDRcMcTcRind Int_t ngDRcMcScRind Int_t ngDRcMTcRind Int_t ngDRcMScRind Int_t ngDRcMcTind Int_t ngDRcMcSind Int_t ngDRMcTcRind Int_t ngDRMcScRind Int_t ngDRMind Int_t ngDRTind Int_t ngDRSind Int_t ngDMTind Int_t ngDMSind Int_t ngDMind Int_t ngDTind Int_t ngDSind Int_t nNbBinsForPatMat Int_t nNbBinsForHouTra Int_t nHouTraMax Bool_t kShowerCond Bool_t kIsNoCutOnTOFtof Bool_t kIsNoCutOnTOFINOtof Bool_t kNoSectorSelected Bool_t kSwitchOffRich Bool_t kRingQualityCut Bool_t kTofinoMultCut Bool_t kMagnet Bool_t kStandRing Int_t nPatMatCut Int_t nHouTraCut Int_t nPadNrCut Int_t nRingAmplCut Int_t nLocMax4Cut Int_t nSelectedSector from 0 to 5 char* pFileName ! Bool_t isComplex !

Class Description

 HRichCorrelator

 - this class matches hits in RICH, MDC and META

 - it fills the category HHitMatch
   cuts are applied in the isCorrelated() funcs



HRichCorrelator(Text_t *name,Text_t *title) : HReconstructor(name,title)

HRichCorrelator(Text_t *name,Text_t *title, char* filename, Bool_t style) : HReconstructor(name,title)

HRichCorrelator()

~HRichCorrelator(void)

Bool_t init()
cout<<"we are in init() now !"<<endl;

Bool_t reinit()
cout<<"in reinit function"<<endl;
 called, when program enters execute() for the first time
      HSpecGeomPar* pSpecGeomPar = (HSpecGeomPar*)getSpecGeomPar();
      cout<<"in reinit: pSpecGeomPar: "<<pSpecGeomPar<<endl;

void iniCounters()
 various counters
 COUNTER INITIALIZATION

void iniCuts()
 initialize parameters from RTDB containers
 different cuts to be applied during hit matching

void iniSwitches(void)

void iniControlHistos()

void incrementRingCount(HRichHit *pRichHit)

Int_t execute()
        if (nCounterProcessedNbEvents != 0 &&
  	nCounterProcessedNbEvents%50000==0) HRichUtilFunc::saveHistos(pFileOut,pHistArray);
         if (nCounterProcessedNbEvents != 0 &&
  	   nCounterProcessedNbEvents%10000==0)
         {
  	   cout<<"********** "<<nCounterProcessedNbEvents
  	       <<" EVTS PROCESSED **********"<<endl;
         }

void matchKickTracks()
 which kicktracks don't have a match in hitmatchs and vice versa

Bool_t delRichHit(TObjArray *t)
 remove rich hit obj from HLinearCategory
 afterwards delete empty slot

Bool_t finalize()
cout<<"in finalize"<<endl;
      pProfRMTHTtheta=pHistRMTRingHouTraTheta->
  	ProfileX("prof_RMT_HTtheta",0,nNbBinsForHouTra);
      pHistArray->Add(pProfRMTHTtheta);
      pProfRMSHTtheta=pHistRMSRingHouTraTheta->
  	ProfileX("prof_RMS_HTtheta",0,nNbBinsForHouTra);
      pHistArray->Add(pProfRMSHTtheta);
      pProfRMTPMtheta=pHistRMTRingPatMatTheta->
  	ProfileX("prof_RMT_PMtheta",0,nNbBinsForPatMat);
      pHistArray->Add(pProfRMTPMtheta);
      pProfRMHTtheta=pHistRMRingHouTraTheta->
  	ProfileX("prof_RM_HTtheta",0,nNbBinsForHouTra);
      pHistArray->Add(pProfRMHTtheta);
      pProfRMPMtheta=pHistRMRingPatMatTheta->
  	ProfileX("prof_RM_PMtheta",0,nNbBinsForPatMat);
      pHistArray->Add(pProfRMPMtheta);
      pProfRMSPMtheta=pHistRMSRingPatMatTheta->
  	ProfileX("prof_RMS_PMtheta",0,nNbBinsForPatMat);
      pHistArray->Add(pProfRMSPMtheta);
      pProfALLHTtheta=pHistALLRingHouTraTheta->
  	ProfileX("prof_ALL_HTtheta",0,nNbBinsForHouTra);
      pHistArray->Add(pProfALLHTtheta);
      pProfALLPMtheta=pHistALLRingPatMatTheta->
  	ProfileX("prof_ALL_PMtheta",0,nNbBinsForPatMat);
      pHistArray->Add(pProfALLPMtheta);

HHitMatchHeader* createHitMatchHeader()
 HHitMatchHeader is meant to be a bookkeeping obj
 storing info on an event-by-event basis

Int_t fillUniqueIndex(Int_t i,Int_t max,Int_t* iarr)
 check if index i is already stored in iarr
 if not then store it
 iarr is initialized to -2

Int_t countDiscreteIndexes(Int_t *iarr,Int_t max)
count arr slots that are different from -2 (ini value)

void fillHitMatchHeader(HHitMatchHeader *pHMH)
 iterate over HHitMatch (correlation or tracklet) objs
 in this evt, categorize and count them. Finally fill
 HHitMatchHeader obj for this evt.

HHitMatch* createHitMatch(Int_t s)
create a new HHitMatch object, input sector

void setRich(HHitMatch* m,HRichHit* r)
 copy info from RICH hit into HHitMatch
 copy info from RICH hit fit into HHitMatch

void setKick(HHitMatch* m,HKickTrack* k)
 copy info from KickTrack into HHitMatch
 retrieve objects from which kick track was built and
 use them to fill HHitMatch

void setMdc(HHitMatch* m,HMdcSeg* mdc)
 copy info from MDC Seg into HHitMatch

void setTof(HHitMatch* m, HTofHit* t)
 copy info from Tof hit to HHitMatch

void setShower(HHitMatch* m,HShowerHitTof* st)
 copy info from ShowerHitTof to HHitMatch

void fillHitMatch(HHitMatch* m, HRichHit* r, HKickTrack* k)
    cout<<"in fillHitmatch rich - kick"<<endl;

void fillHitMatch(HHitMatch* m, HRichHit* r, HMdcSeg* mdc)
 check whether this correlation object already holds info
 if not fill in detector specific info

void fillHitMatch(HHitMatch* m, HMdcSeg* mdc, HShowerHitTof* st)

void fillHitMatch(HHitMatch* m, HMdcSeg* mdc, HTofHit* t)

void fillHitMatch(HHitMatch* m, HRichHit *r, HTofHit* t)

void fillHitMatch(HHitMatch* m, HRichHit *r, HShowerHitTof* st)

void fillALLRingHistos(HRichHit* h)
 fill histos for all rich hits w/o selection or correlation

void fillControlHistos(void)
 use HHitMatch objs to fill histos under certain conditions
 e.g. only for corr objs that contain a RMT

Float_t correctMdcSegPhi(Int_t s)
 shift MDC Seg phi according to the sector

Float_t correctMdcSegTheta(Float_t th)
 multiply MdcSeg polar angles by a const factor
 to account for shifted target
 E.g. target was 18mm more downstream than seg finder assumes
 (info W. Koenig, apr01 gen1)
 correction factor can be set in param container, only rough corr !!!
 not necessary if alignment was done for DST production

Bool_t isGoodRing(HRichHit* r)
 apply rich ring quality check
cout<<"in isGoodRing()"<<endl;

Bool_t isSelectedSector(Int_t n)

Bool_t isCorrelated(HRichHit* pRichHit,HKickTrack* pKickTrack)

Bool_t isCorrelated(HRichHit* pRichHit,HMdcSeg* pMdcSeg)
 corr RICH - MDC

Bool_t isCorrelated(HRichHit* pRichHit, HHitMatch* pMatchHit)
 is RICH corr with this already MATCHed HIT (MDC part)
 not used !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Bool_t isCorrelated(HRichHit* pRichHit,HTofHit* pTofHit)
 corr RICH TOF

Bool_t isShower(HShowerHitTof* pSHT)
 information by J. Otwinowski
 check whether there was a shower indicating a lepton

Bool_t isCorrelated(HRichHit* pRichHit,HShowerHitTof* pShowerHitTof)
 corr RICH SHOWERHITTOF

Bool_t isCorrelated(HMdcSeg* pMdcSeg,HShowerHitTof* pShowerHitTof)
 corr MDCSEG - SHOWERHITTOF

Bool_t isCorrelated(HMdcSeg* pMdcSeg,HTofHit* pTofHit)
 corr MDCSEG - TOF

void dumpCorrelationStatus()
 FIXME: ring counters are unchecked and maybe not up-to-date

TCanvas* makeCanvas2()

TCanvas* makeCanvas1()
gStyle->SetLineWidth(3);



Inline Functions


           HCategory* getTofHitCat()
           HCategory* getShowerTofHitCat()
           HCategory* getMdcSegCat()
           HCategory* getHitMatchCat()
           HCategory* getHitMatchHeaderCat()
           HCategory* getRichHitCat()
           HCategory* getRichHitFitCat()
           HCategory* getKickCat()
                 void setCorrelationPar(HParSet* pPar)
             HParSet* getCorrelationPar()
                 void setSpecGeomPar(HSpecGeomPar* pPar)
        HSpecGeomPar* getSpecGeomPar()
              TClass* Class()
              TClass* IsA() const
                 void ShowMembers(TMemberInspector& insp, char* parent)
                 void Streamer(TBuffer& b)
                 void StreamerNVirtual(TBuffer& b)


Last update: Fri Jan 26 12:25:57 2007


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.