#ifndef HRICHCORRELATOR_H
#define HRICHCORRELATOR_H
#include "TFile.h"
#include "TH1.h"
#include "TH2.h"
#include "TCanvas.h"
#include "TString.h"
#include "TStyle.h"
#include "TProfile.h"
#include "TObjArray.h"
#include "TString.h"
#include "hreconstructor.h"
#include "hparset.h"
class HCategory;
class HIterator;
class HRichHit;
class HMdcSeg;
class HShowerHitTof;
class HTofHit;
class HKickTrack;
class HHitMatch;
class HHitMatchHeader;
class HRichUtilFunc;
class HSpecGeomPar;
class HRichCorrelator : public HReconstructor {
public:
HRichCorrelator();
HRichCorrelator(const Text_t *name,const Text_t *title);
HRichCorrelator(const Text_t *name,const Text_t *title,const Char_t* filename,Bool_t style=kFALSE);
~HRichCorrelator();
Bool_t init();
Bool_t reinit();
Bool_t finalize();
Int_t execute();
Bool_t delRichHit(TObjArray *);
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*);
void fillControlHistos(void);
void matchKickTracks(void);
void fillALLRingHistos(HRichHit*);
void iniCuts(void);
void iniControlHistos(void);
virtual void iniCounters(void);
void iniSwitches(void);
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*);
Int_t fillUniqueIndex(Int_t,Int_t,Int_t*);
Int_t countDiscreteIndexes(Int_t*,Int_t);
void setRich(HHitMatch*,HRichHit*);
void setMdc(HHitMatch*,HMdcSeg*);
void setKick(HHitMatch*,HKickTrack*);
void setTof(HHitMatch*, HTofHit*);
void setShower(HHitMatch*,HShowerHitTof*);
void dumpCorrelationStatus();
void incrementRingCount(HRichHit *pRichHit);
TCanvas* makeCanvas1();
TCanvas* makeCanvas2();
Float_t correctMdcSegPhi(Int_t);
Float_t correctMdcSegTheta(Float_t);
HHitMatch* createHitMatch(Int_t);
HHitMatchHeader* createHitMatchHeader();
void fillHitMatchHeader(HHitMatchHeader*);
HCategory* getTofHitCat(){return fTofHits;};
HCategory* getShowerTofHitCat(){return fShowerTofHits;};
HCategory* getMdcSegCat() { return fMdcSeg ; };
HCategory* getHitMatchCat(){return pHitMatchCat;};
HCategory* getHitMatchHeaderCat(){return pHitMatchHeaderCat;};
HCategory* getRichHitCat() { return fRichPID; };
HCategory* getRichHitFitCat(){return pRichHitFitCat;};
HCategory* getKickCat() {return fKickTrackCat;};
void setCorrelationPar(HParSet* pPar){pCorrPar = pPar;};
HParSet* getCorrelationPar(){return pCorrPar;};
void setSpecGeomPar(HSpecGeomPar* pPar){pSpecGeomPar = pPar;};
HSpecGeomPar* getSpecGeomPar(){return pSpecGeomPar;};
ClassDef(HRichCorrelator,2)
protected:
HCategory *fTofHits;
HCategory *fShowerTofHits;
HCategory *fRichPID;
HCategory *pRichHitFitCat;
HCategory *fMdcSeg;
HCategory *pHitMatchCat;
HCategory *pHitMatchHeaderCat;
HCategory* fKickTrackCat;
HIterator* iterTracks;
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;
Int_t ngNb_RT;
Int_t ngNb_RS;
Int_t ngNb_MT;
Int_t ngNb_MS;
Int_t ngNb_RcMcT;
Int_t ngNb_RcMcTcR;
Int_t ngNb_RMcTcR;
Int_t ngNb_RcMTcR;
Int_t ngNb_RcMcS;
Int_t ngNb_RcMcScR;
Int_t ngNb_RMcScR;
Int_t ngNb_RcMScR;
Int_t ngRTM;
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;
TString pFileName;
Bool_t isComplex;
};
#endif //HRICHCORRELATOR_H
Last change: Sat May 22 13:08:26 2010
Last generated: 2010-05-22 13:08
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.