#ifndef STNTUPLE_TStnElectronID #define STNTUPLE_TStnElectronID /////////////////////////////////////////////////////////////////////////////// // class representing electron ID cuts // Author: P. Murat (CDF/FNAL) // Date: /////////////////////////////////////////////////////////////////////////////// #include "TNamed.h" #include "TString.h" class TStnElectron; class TH1F; class TStnElectronID: public TNamed { public: enum { kCentralBit = 0x1 << 0, // 0x00000001 kDetectorBit = 0x1 << 0, // 0x00000001 // kSeedIEtaBit = 0x1 << 1, // 0x00000002 kConversionBit = 0x1 << 1, // 0x00000002 kCotFidBit = 0x1 << 2, // 0x00000004 kDetEtaBit = 0x1 << 3, // 0x00000008 kFidEleBit = 0x1 << 4, // 0x00000010 kEtBit = 0x1 << 5, // 0x00000020 kHadEmBit = 0x1 << 6, // 0x00000040 kIsoBit = 0x1 << 7, // 0x00000080 kIso1Bit = 0x1 << 8, // 0x00000100 kTIsoBit = 0x1 << 9, // 0x00000200 kPtBit = 0x1 << 10, // 0x00000400 kCotNAxBit = 0x1 << 11, // 0x00000800 kCotNStBit = 0x1 << 12, // 0x00001000 kTrackZ0Bit = 0x1 << 13, // 0x00002000 kTrackD0Bit = 0x1 << 14, // 0x00004000 kEOverPBit = 0x1 << 15, // 0x00008000 kChi2StripBit = 0x1 << 16, // 0x00010000 kXCesBit = 0x1 << 17, // 0x00020000 kZCesBit = 0x1 << 18, // 0x00040000 kDelXBit = 0x1 << 19, // 0x00080000 kDelZBit = 0x1 << 20, // 0x00100000 kLshrBit = 0x1 << 21, // 0x00200000 kTrackDz0Bit = 0x1 << 22, // 0x00400000 kTrackBcZ0Bit = 0x1 << 23, // 0x00800000 kTrackBcDelXBit = 0x1 << 24, // 0x01000000 kTrackBcDelZBit = 0x1 << 25, // 0x02000000 kCesDistBit = 0x1 << 26, // 0x04000000 kPes5x9Bit = 0x1 << 27, // 0x08000000 kPemChi2Bit = 0x1 << 28, // 0x10000000 kPemFitTowerBit = 0x1 << 29, // 0x20000000 kChi2CotBit = 0x1 << 30, // 0x40000000 kCesEpBit = 0x1 << 31 // 0x80000000 }; struct Hist_t { TH1F* fCentral [5]; TH1F* fDetector [5]; // TH1F* fSeedIEta [5]; TH1F* fCotFid [5]; TH1F* fDetEta [5]; TH1F* fFidEle [5]; TH1F* fEt [5]; TH1F* fHadEm [5]; TH1F* fIso [5]; TH1F* fIso1 [5]; TH1F* fTIso [5]; TH1F* fTrackPt [5]; TH1F* fCotNAxSeg [5]; TH1F* fCotNStSeg [5]; TH1F* fTrackZ0 [5]; TH1F* fTrackD0 [5]; TH1F* fEOverP [5]; TH1F* fChi2Strip [5]; TH1F* fXCes [5]; TH1F* fZCes [5]; TH1F* fDelX [5]; TH1F* fDelZ [5]; TH1F* fCesDist [5]; TH1F* fLshr [5]; TH1F* fTrackDz0 [5]; TH1F* fConwrd [5]; TH1F* fPes5x9 [5]; TH1F* fPemChi2 [5]; TH1F* fPemFitTower [5]; TH1F* fChi2Cot [5]; TH1F* fCesEp [5]; TH1F* fFailedBits; TH1F* fPassed; // summary histogram }; //----------------------------------------------------------------------------- // data members //----------------------------------------------------------------------------- protected: Int_t fLooseCentral; // if 1 use only central electrons Int_t fFidEleTight; Int_t fFidEleLoose; Int_t fUseMask; // bit on if this cut to be used Int_t fInteger[4]; // for future Float_t fMaxDetEta; Float_t fMaxMomEta; Float_t fMinEt; Float_t fMaxHadEm; Float_t fHadEmSlope; Float_t fMaxIso; Float_t fMaxTIso; Float_t fMaxIso1; Float_t fMinPt; Float_t fMinNCotAxHits; // min number of hits per segment Float_t fMinNCotStHits; Float_t fMinNCotAxSeg; // min number of segments per track Float_t fMinNCotStSeg; Float_t fMaxD0; Float_t fMaxChi2Strip; Float_t fMaxXCes; Float_t fMinZCes; Float_t fMaxZCes; Float_t fMaxZ0; Float_t fMinDelX; Float_t fMaxDelX; Float_t fMaxDelZ; Float_t fMinEOverP; Float_t fMaxEOverP; Float_t fMaxLshr; Float_t fMaxLshr2; Float_t fMaxBcZ0; Float_t fMinBcDelX; Float_t fMaxBcDelX; Float_t fMaxBcDelZ; Float_t fMinLooseEt; Float_t fMinLoosePt; Float_t fMaxLooseEta; Float_t fMaxLooseXCes; Float_t fMinLooseZCes; Float_t fMaxLooseZCes; Float_t fMinPlugEt; Float_t fMaxPlugIso1; Float_t fFloat[3]; // for future void* fEOR; // ! end-of-record int fCalcNCotSeg; // ! 1 if nseg needs to be recalculated //----------------------------------------------------------------------------- // methods //----------------------------------------------------------------------------- public: // ****** constructors and destructor TStnElectronID(const char* Name="EleID", const char* Title="EleID"); virtual ~TStnElectronID(); //----------------------------------------------------------------------------- // accessors //----------------------------------------------------------------------------- Float_t MinEt() const { return fMinEt; } Float_t MinPt() const { return fMinPt; } Float_t MaxMomEta () const { return fMaxMomEta;} Float_t MaxDetEta () const { return fMaxDetEta;} Float_t MaxZ0 () const { return fMaxZ0; } Float_t MaxD0 () const { return fMaxD0; } Float_t MaxLshr () const { return fMaxLshr; } Float_t MaxLshr2 () const { return fMaxLshr2; } Float_t MinDelX () const { return fMinDelX; } Float_t MaxDelX () const { return fMaxDelX; } Float_t MaxDelZ () const { return fMaxDelZ; } Float_t MaxChi2Strip() const { return fMaxChi2Strip; } Float_t MaxXCes () const { return fMaxXCes; } Float_t MaxZCes () const { return fMaxZCes; } Float_t MinZCes () const { return fMinZCes; } Float_t MaxIso () const { return fMaxIso; } Float_t MaxIso1 () const { return fMaxIso1; } Float_t MaxTIso () const { return fMaxTIso; } Float_t MaxHadEm () const { return fMaxHadEm; } Float_t HadEmSlope() const { return fHadEmSlope; } Float_t MinEOverP () const { return fMinEOverP; } Float_t MaxEOverP () const { return fMaxEOverP; } Float_t MaxBcZ0 () const { return fMaxBcZ0; } Float_t MinBcDelX () const { return fMinBcDelX; } Float_t MaxBcDelX () const { return fMaxBcDelX; } Float_t MaxBcDelZ () const { return fMaxBcDelZ; } Float_t MinNCotAxSeg () const { return fMinNCotAxSeg; } Float_t MinNCotStSeg () const { return fMinNCotStSeg; } Float_t MinNCotAxHits() const { return fMinNCotAxHits; } Float_t MinNCotStHits() const { return fMinNCotStHits; } Int_t LooseCentral () const { return fLooseCentral; } Float_t MinLooseZCes () const { return fMinLooseZCes; } Float_t MaxLooseZCes () const { return fMaxLooseZCes; } Float_t MaxPlugIso1 () const { return fMaxPlugIso1; } Int_t FidEleTight () const { return fFidEleTight; } Int_t FidEleLoose () const { return fFidEleLoose; } Int_t UseMask () const { return fUseMask; } Int_t CalcNCotSeg () const { return fCalcNCotSeg; } //----------------------------------------------------------------------------- // modifiers //----------------------------------------------------------------------------- void SetMinEt (Float_t Et ) { fMinEt = Et; } void SetMinPt (Float_t Pt ) { fMinPt = Pt; } void SetMaxMomEta (Float_t Eta ) { fMaxMomEta = Eta; } void SetMaxDetEta (Float_t Eta ) { fMaxDetEta = Eta; } void SetMinDelX (Float_t DelX ) { fMinDelX = DelX; } void SetMaxDelX (Float_t DelX ) { fMaxDelX = DelX; } void SetMaxDelZ (Float_t DelZ ) { fMaxDelZ = DelZ; } void SetMaxTIso (Float_t Iso ) { fMaxTIso = Iso; } void SetMaxCalIso1 (Float_t Iso ) { fMaxIso1 = Iso; } void SetMaxCalIso (Float_t Iso ) { fMaxIso = Iso; } void SetMaxZ0 (Float_t Z0 ) { fMaxZ0 = Z0; } void SetMaxD0 (Float_t D0 ) { fMaxD0 = D0; } void SetMaxLshr (Float_t Lshr ) { fMaxLshr = Lshr; } void SetMaxLshr2 (Float_t Lshr ) { fMaxLshr2 = Lshr; } void SetMaxXCes (Float_t X ) { fMaxXCes = X; } void SetMaxZCes (Float_t Z ) { fMaxZCes = Z; } void SetMinZCes (Float_t Z ) { fMinZCes = Z; } void SetMaxChi2Strip (Float_t Chi2 ) { fMaxChi2Strip = Chi2; } void SetMinNCotAxHits(Int_t N ) { fMinNCotAxHits = N; } void SetMinNCotStHits(Int_t N ) { fMinNCotStHits = N; } void SetMinNCotAxSeg (Int_t N ) { fMinNCotAxSeg = N; } void SetMinNCotStSeg (Int_t N ) { fMinNCotStSeg = N; } void SetMaxHadEm (Float_t HadEm) { fMaxHadEm = HadEm; } void SetMinEOverP (Float_t Ep ) { fMinEOverP = Ep; } void SetMaxEOverP (Float_t Ep ) { fMaxEOverP = Ep; } void SetFidEleTight (Int_t Fid ) { fFidEleTight = Fid; } void SetFidEleLoose (Int_t Fid ) { fFidEleLoose = Fid; } void SetMaxBcZ0 (Float_t Z0 ) { fMaxBcZ0 = Z0; } void SetMinBcDelX (Float_t DelX ) { fMinBcDelX = DelX; } void SetMaxBcDelX (Float_t DelX ) { fMaxBcDelX = DelX; } void SetMaxBcDelZ (Float_t DelZ ) { fMaxBcDelZ = DelZ; } void SetMinLooseEt (Float_t Et ) { fMinLooseEt = Et; } void SetMinLoosePt (Float_t Pt ) { fMinLoosePt = Pt; } void SetMaxLooseEta (Float_t Eta ) { fMaxLooseEta = Eta; } void SetLooseCentral (Int_t Flag ) { fLooseCentral = Flag; } void SetMaxLooseXCes (Float_t X ) { fMaxLooseXCes = X; } void SetMinLooseZCes (Float_t Z ) { fMinLooseZCes = Z; } void SetMaxLooseZCes (Float_t Z ) { fMaxLooseZCes = Z; } void SetMaxPlugIso1 (Float_t Iso1 ) { fMaxPlugIso1 = Iso1; } void SetUseMask (Int_t mask ) { fUseMask = mask; } void SetCalcNCotSeg (Int_t Flag ) { fCalcNCotSeg = Flag; } virtual Int_t IDWord (TStnElectron* Electron); virtual Int_t TightIDWord(TStnElectron* Electron); virtual Int_t LooseIDWord(TStnElectron* Electron); virtual Int_t PlugIDWord (TStnElectron* Electron); // Mode = 1: tight electron ID, 2: loose virtual void FillHistograms(Hist_t& Hist, TStnElectron* Ele, Int_t Mode = 1); //----------------------------------------------------------------------------- // overloaded methods of TObject //----------------------------------------------------------------------------- void Print (Option_t* Option = "") const ; //----------------------------------------------------------------------------- // schema evolution //----------------------------------------------------------------------------- void ReadV1(TBuffer& R__b); ClassDef(TStnElectronID,3) }; #endif