#ifndef HMDCCOSMICSCANDIDATE_H #define HMDCCOSMICSCANDIDATE_H #include "hreconstructor.h" #include "TString.h" #include "TRandom.h" #include "hlocation.h" using namespace std; class TH1F; class TH2F; class TFile; class TLine; class HIterator; class HCategory; class HTofHit; class HTofCluster; class HMdcSizesCells; class HMdcGetContainers; class HMdcCosmicsCandidate : public HReconstructor { protected: Int_t tofMult; Int_t nsec[768]; Float_t xlab[768]; Float_t ylab[768]; Float_t zlab[768]; Float_t tof[768]; Float_t zTofShift; // Shift z position of TofCluster(TofHit) on this value // Cut parameters" Float_t betaMin; Float_t betaMax; Float_t dCellWind[4]; // [mod] window of cell-cell_calc Int_t nModInSecCut[6]; Int_t nLayInModCut[6][4]; Int_t nEventsTot; Int_t nEventsSel; Int_t nSelTr[9]; // index is number of MDC modules in track // nSelTr[index] - number of tracks with "index" number of MDCs Double_t trackScaling[9]; // index is number of MDC modules in track // trackScaling[index] - take this fraction // (=1.-all, =0.5-half, ...) of tracks with "index" number of MDCs Int_t nSelTrSc[9]; Int_t nEventsSelSc; TRandom rndm; HCategory *pCatTofHit; HCategory *pCatTofCluster; HIterator *tofIter; HCategory *pCatMdcCal1; HLocation locCal1; HCategory *pCatMdcClus; HLocation locClus; HMdcSizesCells* sizes; //! comment to fill in. HMdcGetContainers* pGetCont; Int_t index; Int_t returnFlag; Int_t mdcsetup[6][4]; Bool_t setParContStat; TH1F *hsBeta; TH2F *plStat; TH1F *hsDCell[6][4]; TH1F *hsDCellL[6][4][6]; Bool_t makeHists; TFile *histFile; TString histFileName; TString histFileOption; private: void printParam(void); Bool_t createHists(void); void initVariables(void); Float_t transTofHitToSec(Int_t tofInd,Int_t sec,Double_t& tofy, Double_t& tofz); public: HMdcCosmicsCandidate(const Text_t *name, const Text_t *title); HMdcCosmicsCandidate(void); ~HMdcCosmicsCandidate(void); virtual Bool_t init(void); virtual Bool_t reinit(void); virtual Bool_t finalize(void); virtual Int_t execute(void); void setBetaCut(Float_t min,Float_t max); void setDCellWindow(Float_t wM1,Float_t wM2,Float_t wM3,Float_t wM4); void setNModInSecCut(Int_t s1,Int_t s2,Int_t s3,Int_t s4,Int_t s5,Int_t s6); void setNLayInModCut(Int_t sec,Int_t lm1,Int_t lm2,Int_t lm3,Int_t lm4); void makeHistograms(Bool_t fl=kTRUE) {makeHists = fl;} void setHistFile(const Char_t* dir="./",const Char_t* fileNm="cosmCandHists", const Char_t* opt="NEW"); void setSkipEvent(Bool_t fl=kTRUE) {returnFlag = fl ? kSkipEvent : 0;} void scaleDownTrack(UInt_t nMdcTr,Double_t sc); void scaleDownTrack(Double_t *sca); void setParContainersStatic(void) {setParContStat = kTRUE;} void setZShiftForTof(Float_t sh) {zTofShift = sh;} ClassDef(HMdcCosmicsCandidate,0) }; class HCosmicCalibEvSkip : public HReconstructor { public: HCosmicCalibEvSkip(void); HCosmicCalibEvSkip(const Text_t *name, const Text_t *title); ~HCosmicCalibEvSkip(void) {} virtual Bool_t init(void) {return kTRUE;} virtual Bool_t reinit(void) {return kTRUE;} virtual Bool_t finalize(void) {return kTRUE;} virtual Int_t execute(void); ClassDef(HCosmicCalibEvSkip,0) }; #endif