#include "hrichcorrelator.h" |
HRichCorrelator
class description - source file - inheritance tree (.pdf)
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)
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 !
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.