#ifndef STNTUPLE_TStnTauID #define STNTUPLE_TStnTauID /////////////////////////////////////////////////////////////////////////////// // class representing tau ID cuts, so far dummy // Author: P. Murat (CDF/FNAL) // Date: /////////////////////////////////////////////////////////////////////////////// #include "TObject.h" #include "TString.h" class TStnTau; class TH1F; class TStnTauID: public TNamed { public: //----------------------------------------------------------------------------- // bit definition //----------------------------------------------------------------------------- enum { kDetEtaBit = 0x1 << 0, // 0x00000001 kVisEtBit = 0x1 << 1, // 0x00000002 kSeedTowerEtBit = 0x1 << 2, // 0x00000004 kSeedTrackPtBit = 0x1 << 3, // 0x00000008 kLooseElectronBit = 0x1 << 4, // 0x00100000 kNTrk1030Bit = 0x1 << 5, // 0x00000020 kNPi01030Bit = 0x1 << 6, // 0x00000040 kCalIsoBit = 0x1 << 7, // 0x00000080 kCalIso1Bit = 0x1 << 8, // 0x00000100 kTrkIsoBit = 0x1 << 9, // 0x00000200 kTrackPtBit = 0x1 << 10, // 0x00000400 kNAxSegBit = 0x1 << 11, // 0x00000800 kNStSegBit = 0x1 << 12, // 0x00001000 kSeedTrackD0Bit = 0x1 << 13, // 0x00002000 kSeedTrackZ0Bit = 0x1 << 14, // 0x00004000 kSeedTrackDzBit = 0x1 << 15, // 0x00008000 kZCesBit = 0x1 << 16, // 0x00010000 kCalMassBit = 0x1 << 17, // 0x00020000 kTrkMassBit = 0x1 << 18, // 0x00040000 kVisMassBit = 0x1 << 19, // 0x00080000 kEmfrBit = 0x1 << 20, // 0x00000010 kTightElectronBit = 0x1 << 21, // 0x00200000 unused... kTrkAngleBit = 0x1 << 22, // 0x00400000 kPi0AngleBit = 0x1 << 23, // 0x00800000 // L3'2002 cuts kCalEtBit = 0x1 << 24, // 0x01000000 kTrkEtaBit = 0x1 << 25, // 0x02000000 kNTowersBit = 0x1 << 26, // 0x04000000 kCosmicBit = 0x1 << 27, // 0x08000000 kXCesBit = 0x1 << 28, // 0x10000000 for 1-prong kCotChi2Bit = 0x1 << 29, // 0x20000000 kCotFidBit = 0x1 << 30, // 0x40000000 kHadEpBit = 0x1 << 31 }; enum { kLooseIDMask = (kDetEtaBit | kVisEtBit | kSeedTowerEtBit | kSeedTrackPtBit | kEmfrBit) }; struct Hist_t { TH1F* fDetEta [5]; TH1F* fTrkEta [5]; TH1F* fCalEt [5]; TH1F* fVisEt [5]; TH1F* fSeedTowerEt [5]; TH1F* fSeedTrackPt [5]; TH1F* fEmfr [5]; TH1F* fNTrk1030 [5]; TH1F* fNPi01030 [5]; TH1F* fCalorIso04 [5]; TH1F* fCalIso1 [5]; TH1F* fTrackIso04 [5]; TH1F* fSeedTrackNAxSeg [5]; TH1F* fSeedTrackNStSeg [5]; TH1F* fSeedTrackD0 [5]; TH1F* fSeedTrackZ0 [5]; TH1F* fSeedTrackDZ0 [5]; TH1F* fSeedTrackCotZ [5]; TH1F* fSeedTrackCotChi2[5]; TH1F* fZCes [5]; TH1F* fXCes [5]; TH1F* fCalorMass [5]; TH1F* fTrackMass [5]; TH1F* fVisMass [5]; TH1F* fMaxTrkAngle [5]; TH1F* fMaxPi0Angle [5]; TH1F* fNTowers [5]; TH1F* fTightEleBit [5]; TH1F* fLooseEleBit [5]; TH1F* fEleChi2 [5]; // electron ID chi2 TH1F* fFailedBits; TH1F* fPassed; // summary histogram }; protected: //----------------------------------------------------------------------------- // modes //----------------------------------------------------------------------------- Int_t fSelectElectrons; Int_t fSelectCosmics; Int_t fMinNAxHits; // min number of hits on a segment Int_t fMinNStHits; Int_t fMinNAxSeg; // min number of segments on a track Int_t fMinNStSeg; Int_t fMaxNTowers; // max N(towers) of the calor. cluster Int_t fUseMask; // only consider these bits Int_t fInteger[4]; // for future //----------------------------------------------------------------------------- // cut values //----------------------------------------------------------------------------- Float_t fMinVisEt; // visible Et Float_t fMinCalEt; // calor Et Float_t fMinSeedTrackPt; Float_t fMinSeedTowerEt; Float_t fMaxCalMass; Float_t fMaxTrkMass; Float_t fMaxVisMass; Float_t fMaxTrkAngle[2]; Float_t fMaxPi0Angle[2]; Float_t fMaxEmfr; Float_t fKsi[2]; Float_t fMaxDetEta; Float_t fMaxTrkEta; // unfortunately used at L3 in 2002 Float_t fMinZCes; Float_t fMaxZCes; Float_t fMaxSeedTrackD0; Float_t fMaxSeedTrackZ0; Float_t fMaxSeedTrackDz; Float_t fMaxCalIso; Float_t fMaxCalIso1; Float_t fMaxTrkIso; Float_t fMaxTrkIso1; Float_t fMaxNTrk1030; Float_t fMaxNPi01030; Float_t fMaxNMuStubs; Float_t fMaxHadEp; // added Jun 12 2008 Float_t fMinEmfr; // added Nov 19 2008, makes v5 Float_t fCalMassSlope; // added Mar 28 2009, makes v6 Float_t fVisMassSlope; // added Mar 28 2009, makes v6 Float_t fFloat[1]; // for future void* fEOR; // ! end-of-record //----------------------------------------------------------------------------- // methods //----------------------------------------------------------------------------- public: // ****** constructors and destructor TStnTauID(const char* Name="Anonymous", const char* Title = "Anonymous"); virtual ~TStnTauID(); //----------------------------------------------------------------------------- // accessors //----------------------------------------------------------------------------- Float_t MinSeedTrackPt () const { return fMinSeedTrackPt; } Float_t MinVisEt () const { return fMinVisEt; } Float_t MinCalEt () const { return fMinCalEt; } Float_t MaxTrkMass () const { return fMaxTrkMass; } Float_t MaxCalMass () const { return fMaxCalMass; } Float_t MaxVisMass () const { return fMaxVisMass; } Float_t CalMassSlope () const { return fCalMassSlope; } Float_t VisMassSlope () const { return fVisMassSlope; } Float_t MaxCalIso () const { return fMaxCalIso; } Float_t MaxCalIso1 () const { return fMaxCalIso1; } Float_t MaxTrkIso () const { return fMaxTrkIso; } Float_t MaxTrkIso1 () const { return fMaxTrkIso1; } Float_t Ksi (Int_t I) const { return fKsi[I]; } Int_t SelectElectrons () const { return fSelectElectrons; } Int_t SelectCosmics () const { return fSelectCosmics; } Int_t MinNAxHits () const { return fMinNAxHits ; } Int_t MinNStHits () const { return fMinNStHits ; } Float_t MaxTrkAngle(Int_t I) const { return fMaxTrkAngle[I]; } Float_t MaxPi0Angle(Int_t I) const { return fMaxPi0Angle[I]; } Int_t UseMask () const { return fUseMask; } Float_t MaxHadEp () const { return fMaxHadEp; } Float_t MaxEmfr () const { return fMaxEmfr; } Float_t MinEmfr () const { return fMinEmfr; } //----------------------------------------------------------------------------- // modifiers //----------------------------------------------------------------------------- void SetMinVisEt (Float_t Et ) { fMinVisEt = Et; } void SetMinCalEt (Float_t Et ) { fMinCalEt = Et; } void SetMinSeedTrackPt (Float_t Pt ) { fMinSeedTrackPt = Pt; } void SetMinSeedTowerEt (Float_t Et ) { fMinSeedTowerEt = Et; } void SetMaxDetEta (Float_t Eta ) { fMaxDetEta = Eta; } void SetMaxTrkEta (Float_t Eta ) { fMaxTrkEta = Eta; } void SetMaxTrkMass (Float_t Mass ) { fMaxTrkMass = Mass; } void SetMaxCalMass (Float_t Mass ) { fMaxCalMass = Mass; } void SetMaxVisMass (Float_t Mass ) { fMaxVisMass = Mass; } void SetCalMassSlope (Float_t Slope) { fCalMassSlope = Slope; } void SetVisMassSlope (Float_t Slope) { fVisMassSlope = Slope; } void SetMinZCes (Float_t Z ) { fMinZCes = Z; } void SetMaxZCes (Float_t Z ) { fMaxZCes = Z; } void SetMaxCalIso (Float_t Iso ) { fMaxCalIso = Iso; } void SetMaxCalIso1 (Float_t Iso ) { fMaxCalIso1 = Iso; } void SetMaxTrkIso (Float_t Iso ) { fMaxTrkIso = Iso; } void SetMaxTrkIso1 (Float_t Iso ) { fMaxTrkIso1 = Iso; } void SetKsi (Int_t I,Float_t Ksi ) { fKsi[I] = Ksi; } void SetMaxNPi01030 (Int_t N ) { fMaxNPi01030 = N; } void SetMaxNTrk1030 (Int_t N ) { fMaxNTrk1030 = N; } void SetMaxNTowers (Int_t N ) { fMaxNTowers = N; } void SetMinNAxHits (Int_t N ) { fMinNAxHits = N; } void SetMinNStHits (Int_t N ) { fMinNStHits = N; } void SetMinNAxSeg (Int_t N ) { fMinNAxSeg = N; } void SetMinNStSeg (Int_t N ) { fMinNStSeg = N; } void SetMaxSeedTrackD0 (Float_t D0 ) { fMaxSeedTrackD0 = D0; } void SetMaxSeedTrackZ0 (Float_t Z0 ) { fMaxSeedTrackZ0 = Z0; } void SetMaxSeedTrackDz (Float_t Dz ) { fMaxSeedTrackDz = Dz; } void SetMaxHadEp (Float_t Ep ) { fMaxHadEp = Ep; } void SetMinEmfr (Float_t Emfr ) { fMinEmfr = Emfr; } void SetMaxEmfr (Float_t Emfr ) { fMaxEmfr = Emfr; } void SetSelectElectrons(Int_t Flag) { fSelectElectrons = Flag; } void SetSelectCosmics (Int_t Flag) { fSelectCosmics = Flag; } void SetMaxTrkAngle (Int_t I, Double_t X) { fMaxTrkAngle[I] = X; } void SetMaxPi0Angle (Int_t I, Double_t X) { fMaxPi0Angle[I] = X; } void SetUseMask (Int_t mask) { fUseMask = mask; } //----------------------------------------------------------------------------- // other methods //----------------------------------------------------------------------------- virtual Int_t IDWord (TStnTau* Tau); virtual Int_t LooseIDWord(TStnTau* Tau); virtual Int_t IsElectron (TStnTau* Tau); static void FillHistograms(Hist_t& Hist, TStnTau* Tau); //----------------------------------------------------------------------------- // overloaded methods of TObject //----------------------------------------------------------------------------- virtual void Print (Option_t* Option = "") const ; //----------------------------------------------------------------------------- // schema evolution //----------------------------------------------------------------------------- virtual void ReadV1(TBuffer& R__b); virtual void ReadV2(TBuffer& R__b); ClassDef(TStnTauID,6) }; #endif