SusyNtuple
|
00001 // -*- c++ -*- 00002 #ifndef SUSYNTUPLE_MUONSELECTOR_H 00003 #define SUSYNTUPLE_MUONSELECTOR_H 00004 00005 #include "SusyNtuple/SusyNtSys.h" 00006 #include "SusyNtuple/AnalysisType.h" 00007 #include "SusyNtuple/Isolation.h" 00008 #include "SusyNtuple/MuonId.h" 00009 00010 00011 namespace Susy { 00012 00013 class Muon; 00014 00016 00031 class MuonSelector 00032 { 00033 public : 00035 00039 static MuonSelector* build(const AnalysisType &a, bool verbose); 00040 MuonSelector(); 00041 virtual ~MuonSelector() {}; 00042 virtual bool isBaseline(const Muon* mu); 00043 00044 00047 virtual bool isSignal(const Muon* mu); 00049 virtual bool passIpCut(const Muon* mu); 00051 virtual float effSF(const Muon& mu); 00053 virtual float effSF(const Muon* mu) { return effSF(*mu); } 00055 virtual float errEffSF(const Muon& mu, const NtSys::SusyNtSys sys); 00057 virtual float errEffSF(const Muon* mu, 00058 const NtSys::SusyNtSys sys) 00059 { return errEffSF(*mu, sys); } 00061 Isolation signalIsolation() const { return m_signalIsolation; } 00063 00067 MuonSelector& setSignalIsolation(const Isolation &v) { m_signalIsolation = v; return *this; } 00069 MuonId signalId() const { return m_signalId; } 00074 MuonSelector& setSignalId(const MuonId &v) { m_signalId = v; return *this; } 00075 MuonSelector& setVerbose(const bool &v) { m_verbose = v; return *this; } 00076 bool verbose() const { return m_verbose; } 00077 protected : 00078 MuonId m_signalId; 00079 Isolation m_signalIsolation; 00080 bool m_verbose; 00081 00082 }; // end MuonSelector 00083 00084 //---------------------------------------------------------- 00085 // 00086 // End generic selector, begin analysis-specific ones 00087 // 00088 //---------------------------------------------------------- 00089 00091 class MuonSelector_2Lep : public MuonSelector 00092 { 00093 }; 00094 00096 class MuonSelector_3Lep : public MuonSelector 00097 { 00098 virtual bool isSignal(const Muon* mu); 00099 }; 00100 00102 class MuonSelector_2LepWH : public MuonSelector 00103 { 00104 virtual bool isSignal(const Muon* mu); 00105 }; 00106 00108 class MuonSelector_SS3L : public MuonSelector 00109 { 00110 virtual bool passIpCut(const Muon* mu); 00111 virtual bool isBaseline(const Muon* mu); 00112 virtual bool isSignal(const Muon* mu); 00113 }; 00114 00116 class MuonSelector_Stop2L : public MuonSelector 00117 { 00118 virtual bool passIpCut(const Muon* mu); 00119 virtual bool isBaseline(const Muon* mu); 00120 virtual bool isSignal(const Muon* mu); 00121 }; 00122 00123 } // end namespace 00124 00125 #endif 00126