SusyNtuple
|
00001 // -*- c++ -*- 00002 #ifndef SUSYNTUPLE_ELECTRONSELECTOR_H 00003 #define SUSYNTUPLE_ELECTRONSELECTOR_H 00004 00005 #include "SusyNtuple/SusyNtSys.h" 00006 #include "SusyNtuple/AnalysisType.h" 00007 #include "SusyNtuple/ElectronId.h" 00008 #include "SusyNtuple/Isolation.h" 00009 00010 00011 namespace Susy { 00012 class Electron; 00013 00015 00029 class ElectronSelector 00030 { 00031 public: 00032 static ElectronSelector* build(const AnalysisType &a, bool verbose); 00033 ElectronSelector(); 00034 virtual ~ElectronSelector() {}; 00035 00036 ElectronSelector& setAnalysis(const AnalysisType& analysis); 00037 00039 00042 virtual bool isBaseline(const Electron* el); 00044 00047 virtual bool isSignal(const Electron* el); 00048 00049 virtual bool passIpCut(const Electron &el); 00050 virtual bool outsideCrackRegion(const Electron &el); 00051 00053 ElectronId signalId() const { return m_signalId; } 00055 00059 ElectronSelector& setSignalId(const ElectronId &v) { m_signalId = v; return *this; } 00061 00065 Isolation signalIsolation() const { return m_signalIsolation; } 00067 00071 ElectronSelector& setSignalIsolation(const Isolation &v) { m_signalIsolation = v; return *this; } 00072 00076 float effSF(const Electron& ele); 00078 float effSF(const Electron* ele) { return effSF(*ele); } 00079 00081 float errEffSF(const Electron& ele, const NtSys::SusyNtSys sys); 00083 float errEffSF(const Electron* ele, const NtSys::SusyNtSys sys) { return errEffSF(*ele, sys); } 00084 00085 protected : 00086 ElectronId m_signalId; 00087 Isolation m_signalIsolation; 00088 bool m_verbose; 00089 00090 }; // end ElectronSelector 00091 00092 //---------------------------------------------------------- 00093 // 00094 // End generic selector, begin analysis-specific ones 00095 // 00096 //---------------------------------------------------------- 00097 00099 class ElectronSelector_2Lep : public ElectronSelector 00100 { 00101 }; 00102 00104 class ElectronSelector_3Lep : public ElectronSelector 00105 { 00106 }; 00107 00109 class ElectronSelector_2LepWH : public ElectronSelector 00110 { 00111 virtual bool passIpCut(const Electron &el); 00112 }; 00113 00115 class ElectronSelector_SS3L : public ElectronSelector 00116 { 00117 virtual bool isBaseline(const Electron* el); 00118 virtual bool isSignal(const Electron* el); 00119 }; 00120 00122 class ElectronSelector_Stop2L : public ElectronSelector 00123 { 00124 virtual bool passIpCut(const Electron &el); 00125 virtual bool isSignal(const Electron* el); 00126 }; 00127 00128 } // Susy 00129 00130 #endif 00131 00132