//================================================================== // // TEleCand.hh // // Version 0.0: P. Koehn 5/5/01 // Version 0.9: R. Hughes 7/23/01 // //================================================================== #if !defined (__CINT__) || defined (__MAKECINT__) #include "TH1.h" #include "TH2.h" #include "TCanvas.h" #include "TProfile.h" #include #include #include #include #include "Stntuple/obj/TStnHeaderBlock.hh" #include #include "TConvEleCand.hh" #endif class TEleCand: public TStnModule { //----------------------------------------------------------------------------- // data members //----------------------------------------------------------------------------- private: int fDebugLevel; // Electron data members TStnHeaderBlock* pHeaderBlock; TStnElectronBlock* pEleBlock; TStnElectronBlock* pTopTEleBlock; TStnElectronBlock* pTopLEleBlock; TStnJetBlock* pJetBlock; TStnTrackBlock* pTrackBlock; TStnTopSummaryBlock* pTopSummaryBlock; int NgoodElectron; int NElectronMax; TStnElectron* goodElectron[20]; bool NgoodElectronList[20]; int ElectronJetIndex[20]; const Text_t* jobName; int totEvents; int eleEvents; // //efficiency int nPassCut[20]; string nameCut[20]; int nCem; int nZees; double EleEtCut; double ElePtCut; double EleEOverPCut; double EleDelXCut; double EleDelZCut; double EleLshrCut; double EleHadEmCut; double EleIsolCut; double EleTisolCut; double EleChi2StripCut; double EleDelZvrtCut; double EleZvrtCut; bool EleEtCutEnabled; bool ElePtCutEnabled; bool EleEOverPCutEnabled; bool EleDelXCutEnabled; bool EleDelZCutEnabled; bool EleLshrCutEnabled; bool EleHadEmCutEnabled; bool EleIsolCutEnabled; bool EleTisolCutEnabled; bool EleChi2StripCutEnabled; bool EleDelZvrtCutEnabled; bool EleZvrtCutEnabled; bool EleRemoveConvEnabled; bool EleHistEnabled; bool EleTopEventEnabled; bool EleOldCodeEnabled; public: // Define the histos TFile* histFile; TDirectory* dir; const char* histDir; //Keep pointers here in order to make histogram filling easier TH1F* DetCode; //CENTRAL TH1F* ncem_E; TH1F* ncem_Et; TH1F* ncem_Phi; TH1F* ncem_Eta; TH1F* ncem_SeedPhi; TH1F* ncem_SeedEta; TH1F* ncem_Wedge; TH1F* ncem_Side; TH1F* ncem_EmPhi; TH1F* ncem_EmDetEta; TH1F* ncem_EmZv; TH1F* ncem_EmEvEta; TH1F* ncem_EmEt; TH1F* ncem_HadEt; TH1F* ncem_EmE; TH1F* ncem_HadE; TH1F* ncem_HadEm; TH1F* ncem_Isol; TH1F* ncem_Lshr; TH1F* ncem_EOverP; TH1F* ncem_Pt; TH1F* ncem_Charge; TH1F* ncem_Z0; TH1F* ncem_D0; TH1F* ncem_Phi0; TH1F* ncem_Eta0; TH1F* ncem_Chi2Track; TH1F* ncem_Chi2Cot; TH1F* ncem_Chi2Svx; TH1F* ncem_nDof; TH1F* ncem_Chi2perDof; TH1F* ncem_NAxHits; TH1F* ncem_NStHits; TH1F* ncem_NTotHits; TH1F* ncem_NSvxHits; TH1F* ncem_NSvxRPhiHits; TH1F* ncem_NSvxSASHits; TH1F* ncem_ClusterSize; TH1F* ncem_NTracks; TH1F* ncem_NCesStrip; TH1F* ncem_ECesStrip; TH1F* ncem_ZCes; TH1F* ncem_DelZ; TH1F* ncem_Chi2Strip; TH1F* ncem_NCesWire; TH1F* ncem_ECesWire; TH1F* ncem_XCes; TH1F* ncem_DelX; TH1F* ncem_Chi2Wire; //2d plots TH2F* ncem_Isol_Et; TH2F* ncem_HadEm_E; TH2F* ncem_EOverP_E; TH2F* ncem_Phi0_EmPhi; TH2F* ncem_DelX_Et; TH2F* ncem_DelZ_Et; TH2F* ncem_DelX_Wedge; TH2F* ncem_DelZ_Wedge; TH2F* ncem_DelEStrip_E; TH2F* ncem_DelEWire_E; //PLUG TH1F* npem_E; TH1F* npem_Et; TH1F* npem_Phi; TH1F* npem_Eta; TH1F* npem_SeedPhi; TH1F* npem_SeedEta; TH1F* npem_Wedge; TH1F* npem_Side; TH1F* npem_EmPhi; TH1F* npem_EmDetEta; TH1F* npem_EmZv; TH1F* npem_EmEvEta; TH1F* npem_EmEt; TH1F* npem_HadEt; TH1F* npem_EmE; TH1F* npem_HadE; TH1F* npem_HadEm; TH1F* npem_Isol; TH1F* npem_Chi2Three; TH1F* npem_EOverP; TH1F* npem_Pt; TH1F* npem_Charge; TH1F* npem_Z0; TH1F* npem_D0; TH1F* npem_Phi0; TH1F* npem_Eta0; TH1F* npem_Chi2Track; TH1F* npem_Chi2Cot; TH1F* npem_Chi2Svx; TH1F* npem_nDof; TH1F* npem_Chi2perDof; TH1F* npem_NAxHits; TH1F* npem_NStHits; TH1F* npem_NTotHits; TH1F* npem_NSvxHits; TH1F* npem_NSvxRPhiHits; TH1F* npem_NSvxSASHits; TH1F* npem_ClusterSize; TH1F* npem_NTracks; TH1F* npem_NPesClusters; TH1F* npem_PesEta; TH1F* npem_PesPhi; TH1F* npem_EPesU; TH1F* npem_EPesV; TH1F* npem_DelR; //2d plots TH2F* npem_Isol_Et; TH2F* npem_HadEm_E; TH2F* npem_EOverP_E; TH2F* npem_Chi2Three_Et; TH2F* npem_DelR_Et; TH2F* npem_DelR_Wedge; TH2F* npem_Phi0_EmPhi; TH2F* npem_PesPhi_EmPhi; TH2F* npem_PesEta_EmEta; TH2F* npem_DelEU_E; TH2F* npem_DelEV_E; //z->ee study - uses tight and loose electrons only (not Stntuple default block) TH1F* pairMass; TH2F* Zcem_Isol_Et; TH2F* Zcem_HadEm_E; TH2F* Zcem_EOverP_Pt; TH2F* Zcem_DelX_Et; TH2F* Zcem_DelZ_Et; //----------------------------------------------------------------------------- // methods //----------------------------------------------------------------------------- public: TEleCand(const char* name="EleCand", const char* title="EleCand"); TEleCand(TFile* file, const char* name="EleCand", const char* title="EleCand"); ~TEleCand(); // ****** getters ****** TStnElectron* getgoodElectron(int M){ return goodElectron[M]; } int getNgoodElectron(){ return NgoodElectron; } bool IsagoodElectron(int ele){ return NgoodElectronList[ele];} int getElectronJetIndex(int ele){ return ElectronJetIndex[ele];} void init(); void setDebugLevel(int level) { fDebugLevel = level;} int getDebugLevel() {return fDebugLevel;} double getEleEtCut() { return EleEtCut;} double getElePtCut() { return ElePtCut;} double getEleEOverPCut() { return EleEOverPCut;} double getEleDelXCut() { return EleDelXCut;} double getEleDelZCut() { return EleDelZCut;} double getEleLshrCut() { return EleLshrCut;} double getEleHadEmCut() { return EleHadEmCut;} double getEleIsolCut() { return EleIsolCut;} double getEleTisolCut() { return EleTisolCut;} double getEleChi2StripCut() { return EleChi2StripCut;} double getEleDelZvrtCut() { return EleDelZvrtCut;} double getEleZvrtCut() { return EleZvrtCut;} bool isEnableEtCut() { return EleEtCutEnabled; } bool isEnablePtCut() { return ElePtCutEnabled; } bool isEnableEOverPCut() { return EleEOverPCutEnabled; } bool isEnableDelXCut() { return EleDelXCutEnabled; } bool isEnableDelZCut() { return EleDelZCutEnabled; } bool isEnableLshrCut() { return EleLshrCutEnabled; } bool isEnableHadEmCut() { return EleHadEmCutEnabled; } bool isEnableIsolCut() { return EleIsolCutEnabled; } bool isEnableTisolCut() { return EleTisolCutEnabled; } bool isEnableChi2StripCut() { return EleChi2StripCutEnabled; } bool isEnableDelZvrtCut() { return EleDelZvrtCutEnabled; } bool isEnableZvrtCut() { return EleZvrtCutEnabled; } bool isEnableRemoveConv() { return EleRemoveConvEnabled; } bool isEnableHist() { return EleHistEnabled; } bool isEnableTopEvent() { return EleTopEventEnabled; } bool isEnableOldCode() { return EleOldCodeEnabled; } // ****** setters ****** // void setEleEtCut(double CUT) { EleEtCut = CUT; } void setElePtCut(double CUT) { ElePtCut = CUT; } void setEleEOverPCut(double CUT) { EleEOverPCut = CUT; } void setEleDelXCut(double CUT) { EleDelXCut = CUT; } void setEleDelZCut(double CUT) { EleDelZCut = CUT; } void setEleLshrCut(double CUT) { EleLshrCut = CUT; } void setEleHadEmCut(double CUT) { EleHadEmCut = CUT; } void setEleIsolCut(double CUT) { EleIsolCut = CUT; } void setEleTisolCut(double CUT) { EleTisolCut = CUT; } void setEleChi2StripCut(double CUT) { EleChi2StripCut = CUT; } void setEleDelZvrtCut(double CUT) { EleDelZvrtCut = CUT; } void setEleZvrtCut(double CUT) { EleZvrtCut = CUT; } void enableEleEtCut(bool enbl) { EleEtCutEnabled = enbl; } void enableElePtCut(bool enbl) { ElePtCutEnabled = enbl; } void enableEleEOverPCut(bool enbl) { EleEOverPCutEnabled = enbl; } void enableEleDelXCut(bool enbl) { EleDelXCutEnabled = enbl; } void enableEleDelZCut(bool enbl) { EleDelZCutEnabled = enbl; } void enableEleLshrCut(bool enbl) { EleLshrCutEnabled = enbl; } void enableEleHadEmCut(bool enbl) { EleHadEmCutEnabled = enbl; } void enableEleIsolCut(bool enbl) { EleIsolCutEnabled = enbl; } void enableEleTisolCut(bool enbl) { EleTisolCutEnabled = enbl; } void enableEleChi2StripCut(bool enbl) { EleChi2StripCutEnabled = enbl; } void enableEleDelZvrtCut(bool enbl) { EleDelZvrtCutEnabled = enbl; } void enableEleZvrtCut(bool enbl) { EleZvrtCutEnabled = enbl; } void enableEleRemoveConv(bool enbl) { EleRemoveConvEnabled = enbl; } void enableEleHist(bool enbl) {EleHistEnabled = enbl;} void enableEleTopEvent(bool enbl) {EleTopEventEnabled = enbl;} void enableOldCode(bool enbl) {EleOldCodeEnabled = enbl;} // ****** overloaded methods of TStnModule ****** int BeginJob(); int BeginRun(); int Event (int ientry); int EndJob (); // ****** other methods ****** void BookHistograms(const char* subdirName); void BookZBosonHistograms(const char* subdirName); bool GetHistogramPointers(const char* subdirName); void FillHistograms(TStnElectron* ele); void oldCodeElectron(); void Efficiency(bool enbl); float cdfphi(const float &phi); bool isZBoson(TStnElectron* ele1, TStnElectron* ele2); double myFindTrackZ0(TStnElectron* ele); int myFindClosestJet(TStnElectron* ele); // ClassDef(TEleCand,0) };