SusyNtuple
SusyNtuple/Muon.h
00001 // Dear emacs, this is -*- c++ -*-
00002 #ifndef SUSYNTUPLE_MUON_H
00003 #define SUSYNTUPLE_MUON_H
00004 
00005 #include "SusyNtuple/Lepton.h"
00006 #include "SusyNtuple/SusyNtSys.h"
00007 #include "SusyNtuple/MuonId.h"
00008 
00009 #include <vector>
00010 
00011 namespace Susy
00012 {
00014 class Muon : public Lepton
00015 {
00016 public:
00017     Muon(){ clear(); }
00018     virtual ~Muon(){};
00019     Muon(const Muon &);
00021     Muon& operator=(const Muon &);
00022 
00023     bool isCombined;          
00024 
00025     float idTrackPt;          
00026     float idTrackEta;         
00027     float idTrackPhi;         
00028     int   idTrackQ;           
00029     float idTrackTheta;       
00030     float idTrackQoverP;      
00031 
00032     float msTrackPt;          
00033     float msTrackEta;         
00034     float msTrackPhi;         
00035     int   msTrackQ;           
00036     float msTrackTheta;       
00037     float msTrackQoverP;      
00038 
00039     // Muon quality flags
00040     bool veryLoose;           
00041     bool loose;               
00042     bool medium;              
00043     bool tight;               
00044 
00045     // efficiency SF per muon quality WP
00046     std::vector<float> muoEffSF;
00047 
00048     bool isBadMuon;           
00049     bool isCosmic;            
00050 
00051     // Systematic sf
00052     float ms_up;              
00053     float ms_dn;              
00054     float id_up;              
00055     float id_dn;              
00056     float scale_up;           
00057     float scale_dn;           
00058 
00059     // SF uncertainties
00060     std::vector<float> errEffSF_stat_up;
00061     std::vector<float> errEffSF_stat_dn;
00062     std::vector<float> errEffSF_syst_up;
00063     std::vector<float> errEffSF_syst_dn;
00064 
00065     // Polymorphism, baby!!
00066     bool isEle() const { return false; }
00067     bool isMu()  const { return true; }
00068     void setState(int sys);
00069 
00071     void print() const;
00072 
00074     void clear(){
00075       isCombined = 0;
00076       idTrackPt = idTrackEta = idTrackPhi = 0;
00077       msTrackPt = msTrackEta = msTrackPhi = 0;
00078       idTrackQ  = msTrackQ = 0;
00079       idTrackTheta = idTrackQoverP = 0;
00080       msTrackTheta = msTrackQoverP = 0;
00081       veryLoose = loose = medium = tight = false;
00082 
00083       muoEffSF.assign(MuonId::MuonIdInvalid, 1);
00084       errEffSF_stat_up.assign(MuonId::MuonIdInvalid, 0);
00085       errEffSF_stat_dn.assign(MuonId::MuonIdInvalid, 0);
00086       errEffSF_syst_up.assign(MuonId::MuonIdInvalid, 0);
00087       errEffSF_syst_dn.assign(MuonId::MuonIdInvalid, 0);
00088 
00089       isBadMuon = isCosmic = false;
00090       ms_up = ms_dn = id_up = id_dn = scale_up = scale_dn  = 0;
00091 
00092       Lepton::clear();
00093     }
00094 
00095     ClassDef(Muon, 14);
00096 };
00097 } // Susy
00098 #endif
 All Classes Functions Variables Typedefs Enumerations Enumerator