SusyNtuple
SusyNtuple/MuonSelector.h
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 
 All Classes Functions Variables Typedefs Enumerations Enumerator