//================================================================== // // TMuoCand.hh // // Class Definition // // Select out muon candidates and put them in an array of pointers // // Version 0.0: P. Koehn 7/24/01 // //================================================================== #if !defined (__CINT__) || defined (__MAKECINT__) #include #include "TH1.h" #include "TCanvas.h" #include #include #include #include #include #include "Geometry.hh" #endif class TMuoCand: public TStnModule { //----------------------------------------------------------------------------- // data members //----------------------------------------------------------------------------- private: // Muon data members TStnMuonBlock* pMuonBlock; TStnTrackBlock* pTrackBlock; TCalDataBlock* pCalDataBlock; TStnMuon* goodMuon[5]; bool HIST_ENABLE; bool DISPLAY_ENABLE; bool NgoodMuonList[5]; bool MuonPtCutEnable ; bool MuonEmCutEnable ; bool MuonHadCutEnable ; bool MuonEmHadCutEnable ; bool MuonD0CutEnable ; bool MuonZvCutEnable ; bool MuonIsoCutEnable ; bool MuonTIsoCutEnable ; bool CmuDxCutEnable ; bool CmpDxCutEnable ; bool CmxDxCutEnable ; bool NaxslEnable ; bool NstslEnable ; bool NtotslEnable ; int NMu; int NgoodMuon; int NgoodMuontot; int NMuonMax; int Nevents; int Ncmp; int Ncmu; int Ncmx; int Ncmucmp; double emE[5]; double hadE[5]; double ISO[5]; double TISO[5]; double emEgood[5]; double hadEgood[5]; double ISOgood[5]; double TISOgood[5]; Int_t TDCgood[5]; double MuonPtCut; double MuonEmCut; double MuonHadCut; double MuonEmHadCut; double MuonD0Cut; double MuonZvCut; double MuonIsoCut; double MuonTIsoCut; double CmuDxCut; double CmpDxCut; double CmxDxCut; int NaxslCut; int NstslCut; int NtotslCut; //histograms TFile* histFile; TDirectory* dir; const char* histDir; TH1F * DetCode; // nocut cmu TH1F * ncmu_Pt; TH1F * ncmu_Em; TH1F * ncmu_Had ; TH1F * ncmu_HadEm; TH1F * ncmu_Dx; TH1F * ncmu_ISO; TH1F * ncmu_TISO; TH1F * ncmu_d0; TH1F * ncmu_zv ; TH1F * ncmu_ztrk; TH1F * ncmu_Ax; TH1F * ncmu_St; TH1F * ncmu_AxSt; // nocut cmp TH1F * ncmp_Pt; TH1F * ncmp_Em; TH1F * ncmp_Had ; TH1F * ncmp_HadEm; TH1F * ncmp_Dx; TH1F * ncmp_ISO; TH1F * ncmp_TISO; TH1F * ncmp_d0; TH1F * ncmp_zv ; TH1F * ncmp_ztrk; TH1F * ncmp_Ax; TH1F * ncmp_St; TH1F * ncmp_AxSt; // nocut cmu && cmp TH1F * ncmucmp_Pt; TH1F * ncmucmp_Em; TH1F * ncmucmp_Had ; TH1F * ncmucmp_HadEm; TH1F * ncmucmp_Dx; TH1F * ncmucmp_ISO; TH1F * ncmucmp_TISO; TH1F * ncmucmp_d0; TH1F * ncmucmp_zv ; TH1F * ncmucmp_ztrk; TH1F * ncmucmp_Ax; TH1F * ncmucmp_St; TH1F * ncmucmp_AxSt; // no cut cmx TH1F * ncmx_Pt; TH1F * ncmx_Em; TH1F * ncmx_Had ; TH1F * ncmx_HadEm; TH1F * ncmx_Dx; TH1F * ncmx_ISO; TH1F * ncmx_TISO; TH1F * ncmx_d0; TH1F * ncmx_zv ; TH1F * ncmx_ztrk; TH1F * ncmx_Ax; TH1F * ncmx_St; TH1F * ncmx_AxSt; // cut cmu TH1F * cmu_Pt; TH1F * cmu_Em; TH1F * cmu_Had ; TH1F * cmu_HadEm; TH1F * cmu_Dx; TH1F * cmu_ISO; TH1F * cmu_TISO; TH1F * cmu_d0; TH1F * cmu_zv ; TH1F * cmu_ztrk; TH1F * cmu_Ax; TH1F * cmu_St; TH1F * cmu_AxSt; // cut cmp TH1F * cmp_Pt; TH1F * cmp_Em; TH1F * cmp_Had ; TH1F * cmp_HadEm; TH1F * cmp_Dx; TH1F * cmp_ISO; TH1F * cmp_TISO; TH1F * cmp_d0; TH1F * cmp_zv ; TH1F * cmp_ztrk; TH1F * cmp_Ax; TH1F * cmp_St; TH1F * cmp_AxSt; // cut cmu && cmp TH1F * cmucmp_Pt; TH1F * cmucmp_Em; TH1F * cmucmp_Had ; TH1F * cmucmp_HadEm; TH1F * cmucmp_Dx; TH1F * cmucmp_ISO; TH1F * cmucmp_TISO; TH1F * cmucmp_d0; TH1F * cmucmp_zv ; TH1F * cmucmp_ztrk; TH1F * cmucmp_Ax; TH1F * cmucmp_St; TH1F * cmucmp_AxSt; // cut cmx TH1F * cmx_Pt; TH1F * cmx_Em; TH1F * cmx_Had ; TH1F * cmx_HadEm; TH1F * cmx_Dx; TH1F * cmx_ISO; TH1F * cmx_TISO; TH1F * cmx_d0; TH1F * cmx_zv ; TH1F * cmx_ztrk; TH1F * cmx_Ax; TH1F * cmx_St; TH1F * cmx_AxSt; public: //----------------------------------------------------------------------------- // methods //----------------------------------------------------------------------------- public: TMuoCand( const char* name="MuoCand", const char* title="MuoCand"); TMuoCand(TFile* file, const char* name="MuoCand", const char* title="MuoCand"); ~TMuoCand(); // ****** data blocks used by the module ****** TStnMuonBlock* GetMuonBlock() { return pMuonBlock; } TStnTrackBlock* GetTrackBlock() { return pTrackBlock; } TCalDataBlock* GetCalDataBlock() { return pCalDataBlock; } // ****** getters ****** TStnMuon* getgoodMuon(int M){ return goodMuon[M]; } int getNgoodMuon(){ return NgoodMuon; } bool IsagoodMuon(int moo){ return NgoodMuonList[moo];} double getMuonPtCut(){ return MuonPtCut; } double getMuonEmCut(){ return MuonEmCut; } double getMuonHadCut(){ return MuonHadCut; } double getMuonEmHadCut(){ return MuonEmHadCut; } double getMuonD0Cut(){ return MuonD0Cut; } double getMuonZvCut(){ return MuonZvCut; } double getMuonIsoCut(){ return MuonIsoCut; } double getMuonTIsoCut(){ return MuonTIsoCut; } double getCmuDxCut(){ return CmuDxCut; } double getCmpDxCut(){ return CmpDxCut; } double getCmxDxCut(){ return CmxDxCut; } double getNaxslCut(){ return NaxslCut; } double getNstslCut(){ return NstslCut; } double getNtotslCut(){ return NtotslCut; } bool getMuonPtCutEnable() { return MuonPtCutEnable ;} bool getMuonEmCutEnable() { return MuonEmCutEnable ;} bool getMuonHadCutEnable() { return MuonHadCutEnable ;} bool getMuonEmHadCutEnable() { return MuonEmHadCutEnable ;} bool getMuonD0CutEnable() { return MuonD0CutEnable ;} bool getMuonZvCutEnable() { return MuonZvCutEnable ;} bool getMuonIsoCutEnable() { return MuonIsoCutEnable ;} bool getMuonTIsoCutEnable(){ return MuonTIsoCutEnable ;} bool getCmuDxCutEnable() { return CmuDxCutEnable ;} bool getCmpDxCutEnable() { return CmpDxCutEnable ;} bool getCmxDxCutEnable() { return CmxDxCutEnable ;} bool getNaxslEnable() { return NaxslEnable ;} bool getNstslEnable() { return NstslEnable ;} bool getNtotslEnable() { return NtotslEnable ;} double getemE(int M) { return emE[M]; } double gethadE(int M){ return hadE[M]; } double getISO(int M) { return ISO[M]; } double getTISO(int M){ return TISO[M]; } double getemEgood(int M) { return emEgood[M]; } double gethadEgood(int M){ return hadEgood[M]; } double getISOgood(int M) { return ISOgood[M]; } double getTISOgood(int M){ return TISOgood[M]; } Int_t getTDCgood(int M) { return TDCgood[M]; } bool IsHistEnable(){ return HIST_ENABLE;} bool IsDisplayEnable(){ return DISPLAY_ENABLE;} // ****** setters ****** void setMuonPtCut(double CUT) { MuonPtCut = CUT; } void setMuonEmCut(double CUT) { MuonEmCut = CUT; } void setMuonHadCut(double CUT) { MuonHadCut = CUT; } void setMuonEmHadCut(double CUT) { MuonEmHadCut = CUT; } void setMuonD0Cut(double CUT) { MuonD0Cut = CUT; } void setMuonZvCut(double CUT) { MuonZvCut = CUT; } void setMuonIsoCut(double CUT) { MuonIsoCut = CUT; } void setMuonTIsoCut(double CUT) { MuonTIsoCut = CUT; } void setCmuDxCut(double CUT) { CmuDxCut = CUT; } void setCmpDxCut(double CUT) { CmpDxCut = CUT; } void setCmxDxCut(double CUT) { CmxDxCut = CUT; } void setNaxslCut(int CUT) { NaxslCut = CUT; } void setNstslCut(int CUT) { NstslCut = CUT; } void setNtotslCut(int CUT) { NtotslCut = CUT; } void setHistEnable(bool ENABLE) { HIST_ENABLE = ENABLE; } void setDisplayEnable(bool ENABLE) { DISPLAY_ENABLE = ENABLE; } void setMuonPtCutEnable(bool ENABLE) { MuonPtCutEnable = ENABLE; } void setMuonEmCutEnable(bool ENABLE) { MuonEmCutEnable = ENABLE; } void setMuonHadCutEnable(bool ENABLE) { MuonHadCutEnable = ENABLE; } void setMuonEmHadCutEnable(bool ENABLE) { MuonEmHadCutEnable = ENABLE; } void setMuonD0CutEnable(bool ENABLE) { MuonD0CutEnable = ENABLE; } void setMuonZvCutEnable(bool ENABLE) { MuonZvCutEnable = ENABLE; } void setMuonIsoCutEnable(bool ENABLE) { MuonIsoCutEnable = ENABLE; } void setMuonTIsoCutEnable(bool ENABLE){ MuonTIsoCutEnable = ENABLE; } void setCmuDxCutEnable(bool ENABLE) { CmuDxCutEnable = ENABLE; } void setCmpDxCutEnable(bool ENABLE) { CmpDxCutEnable = ENABLE; } void setCmxDxCutEnable(bool ENABLE) { CmxDxCutEnable = ENABLE; } void setNaxslEnable(bool ENABLE) { NaxslEnable = ENABLE; } void setNstslEnable(bool ENABLE) { NstslEnable = ENABLE; } void setNtotslEnable(bool ENABLE) { NtotslEnable = ENABLE; } void setemE(int M, double VALUE) { emE[M] = VALUE;} void sethadE(int M, double VALUE){ hadE[M] = VALUE;} void setISO(int M, double VALUE) { ISO[M] = VALUE;} void setTISO(int M, double VALUE){ TISO[M] = VALUE;} void setemEgood(int M, double VALUE) { emEgood[M] = VALUE;} void sethadEgood(int M, double VALUE){ hadEgood[M] = VALUE;} void setISOgood(int M, double VALUE) { ISOgood[M] = VALUE;} void setTISOgood(int M, double VALUE){ TISOgood[M] = VALUE;} void setTDCgood(int M, Int_t VALUE) { TDCgood[M] = VALUE;} // ****** overloaded methods of TStnModule ****** int BeginJob(); int BeginRun(); int Event (int ientry); int EndJob (); // ****** other methods ****** float cdfphi(const float &phi); Float_t cdfeta(const float &Y, const float &Z); void BookHistograms(); void printcuts(); void Display(bool ENABLE); void Count(); void init(); void track_Prop(float &radius, float &curvature, float &PhiZeroIn, float &cotan, float &D_0, float &Z_0, float* xyz); void track_Prop(float &epsilon, float &radius, float &curvature, float &PhiZeroIn, float &cotan, float &D_O, float &Z_0, float* xyz); Double_t CorrectedD0(TStnMuon* Muon); Double_t TrackIso(Int_t &trknum, TStnTrackBlock* track_block, Double_t &CONE, Double_t &DZ, Double_t &PTMIN); Double_t Iso(Float_t &PT, float* xyz, TCalDataBlock* cal_block ); Int_t TrackNumber(const Double_t &meta, const Double_t &mphi, TStnTrackBlock* track_block); Int_t HadTDCtime(float &curvature, float &PhiZeroIn, float &cotan, float &D_0, float &Z_0, TCalDataBlock* cal_block ); Double_t* MuonCalEnergy(float &curvature, float &PhiZeroIn, float &cotan, float &D_0, float &Z_0, TCalDataBlock* cal_block ); };