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