SusyNtuple
SusyNtuple/OverlapTools.h
00001 //  -*- c++ -*-
00002 #ifndef SUSYNTUPLE_OVERLAPTOOLS_H
00003 #define SUSYNTUPLE_OVERLAPTOOLS_H
00004 
00005 #include "SusyNtuple/SusyDefs.h"
00006 #include "SusyNtuple/SusyNt.h"
00007 #include "SusyNtuple/AnalysisType.h"
00008 #include "SusyNtuple/Isolation.h"
00009 
00010 namespace Susy {
00011 
00013 
00028 class OverlapTools
00029 {
00030 public :
00032 
00036     static OverlapTools* build(const AnalysisType &a, bool verbose);
00037     OverlapTools(); 
00038     virtual ~OverlapTools(){};  
00039     // main overlap removal function, performs all removals
00043     virtual void performOverlap(ElectronVector& electrons, MuonVector& muons,
00044                                 TauVector& taus, JetVector& jets);
00045     virtual void j_e_overlap(ElectronVector& electrons, JetVector& jets, double dR); 
00046     virtual void e_j_overlap(ElectronVector& electrons, JetVector& jets, double dR); 
00047     virtual void m_j_overlap(MuonVector& muons, JetVector& jets, double dR); 
00048     virtual void e_m_overlap(ElectronVector& electrons, MuonVector& muons, double dR); 
00049     virtual void e_e_overlap(ElectronVector& electrons, double dR); 
00050     virtual void m_m_overlap(MuonVector& muons, double dR); 
00051     virtual void t_e_overlap(TauVector& taus, ElectronVector& electrons, double dR); 
00052     virtual void t_m_overlap(TauVector& taus, MuonVector& muons, double dR); 
00053     virtual void j_t_overlap(TauVector& taus, JetVector& jets, double dR); 
00054 
00055 
00064     virtual void removeNonisolatedLeptons(ElectronVector& electrons, MuonVector& muons);
00066     OverlapTools& setElectronIsolation( Isolation eleIso ) { m_electronIsolation = eleIso; return *this; }
00068     OverlapTools& setMuonIsolation( Isolation muIso ) { m_muonIsolation = muIso; return *this; }
00070     bool leptonPassesIsolation(const Lepton* lep, const Isolation &iso);
00071 
00072 protected :
00073     Isolation m_electronIsolation;
00074     Isolation m_muonIsolation;
00075     bool m_verbose;
00076 }; // class OverlapTools
00077 
00078 //----------------------------------------------------------
00079 //
00080 // End generic selector, begin analysis-specific ones
00081 //
00082 //----------------------------------------------------------
00083 
00085 class OverlapTools_2Lep : public OverlapTools
00086 {
00087 };
00089 class OverlapTools_3Lep : public OverlapTools
00090 {
00091 };
00092 
00094 class OverlapTools_2LepWH : public OverlapTools
00095 {
00096 };
00097 
00099 class OverlapTools_SS3L: public OverlapTools {
00101     virtual void j_e_overlap(ElectronVector& electrons, JetVector& jets, double dR);
00102 };
00103 
00105 class OverlapTools_Stop2L : public OverlapTools
00106 {
00107 };
00108 
00109 
00110 
00111 }
00112 
00113 
00114 
00115 
00116 
00117 
00118 
00119 #endif
 All Classes Functions Variables Typedefs Enumerations Enumerator