00001
00002
00003
00004
00005
00006
00007
00008 #ifndef STANDALONEID
00009 #include "DataFormats/EgammaCandidates/interface/GsfElectron.h"
00010 #include "DataFormats/EgammaCandidates/interface/ConversionFwd.h"
00011 #include "DataFormats/EgammaCandidates/interface/Conversion.h"
00012 #include "DataFormats/Common/interface/ValueMap.h"
00013 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h"
00014 #include "DataFormats/VertexReco/interface/Vertex.h"
00015 #include "DataFormats/VertexReco/interface/VertexFwd.h"
00016 #endif
00017
00018 #include <vector>
00019
00020 namespace EgammaCutBasedEleId {
00021
00022
00023
00024
00025
00026 typedef std::vector< edm::Handle< edm::ValueMap<reco::IsoDeposit> > > IsoDepositMaps;
00027 typedef std::vector< edm::Handle< edm::ValueMap<double> > > IsoDepositVals;
00028
00029
00030
00031
00032
00033 enum WorkingPoint {
00034 VETO,
00035 LOOSE,
00036 MEDIUM,
00037 TIGHT
00038 };
00039
00040 enum TriggerWorkingPoint {
00041 TRIGGERTIGHT,
00042 TRIGGERWP70
00043 };
00044
00045
00046
00047
00048
00049 enum CutType {
00050 DETAIN = (1<<0),
00051 DPHIIN = (1<<1),
00052 SIGMAIETAIETA = (1<<2),
00053 HOE = (1<<3),
00054 OOEMOOP = (1<<4),
00055 D0VTX = (1<<5),
00056 DZVTX = (1<<6),
00057 ISO = (1<<7),
00058 VTXFIT = (1<<8),
00059 MHITS = (1<<9)
00060 };
00061
00062
00063
00064
00065
00066 static const unsigned int PassAll = DETAIN | DPHIIN | SIGMAIETAIETA | HOE | OOEMOOP | D0VTX | DZVTX | ISO | VTXFIT | MHITS;
00067
00068
00069
00070
00071
00072 #ifndef STANDALONEID
00073
00074 bool PassWP(const WorkingPoint workingPoint,
00075 const reco::GsfElectronRef &ele,
00076 const edm::Handle<reco::ConversionCollection> &conversions,
00077 const reco::BeamSpot &beamspot,
00078 const edm::Handle<reco::VertexCollection> &vtxs,
00079 const double &iso_ch,
00080 const double &iso_em,
00081 const double &iso_nh,
00082 const double &rho);
00083
00084
00085 bool PassWP(const WorkingPoint workingPoint,
00086 const reco::GsfElectron &ele,
00087 const edm::Handle<reco::ConversionCollection> &conversions,
00088 const reco::BeamSpot &beamspot,
00089 const edm::Handle<reco::VertexCollection> &vtxs,
00090 const double &iso_ch,
00091 const double &iso_em,
00092 const double &iso_nh,
00093 const double &rho);
00094
00095
00096 bool PassTriggerCuts(const TriggerWorkingPoint triggerWorkingPoint, const reco::GsfElectronRef &ele);
00097
00098 bool PassTriggerCuts(const TriggerWorkingPoint triggerWorkingPoint, const reco::GsfElectron &ele);
00099
00100 bool PassEoverPCuts(const reco::GsfElectronRef &ele);
00101
00102 bool PassEoverPCuts(const reco::GsfElectron &ele);
00103
00104 unsigned int TestWP(const WorkingPoint workingPoint,
00105 const reco::GsfElectronRef &ele,
00106 const edm::Handle<reco::ConversionCollection> &conversions,
00107 const reco::BeamSpot &beamspot,
00108 const edm::Handle<reco::VertexCollection> &vtxs,
00109 const double &iso_ch,
00110 const double &iso_em,
00111 const double &iso_nh,
00112 const double &rho);
00113
00114 unsigned int TestWP(const WorkingPoint workingPoint,
00115 const reco::GsfElectron &ele,
00116 const edm::Handle<reco::ConversionCollection> &conversions,
00117 const reco::BeamSpot &beamspot,
00118 const edm::Handle<reco::VertexCollection> &vtxs,
00119 const double &iso_ch,
00120 const double &iso_em,
00121 const double &iso_nh,
00122 const double &rho);
00123
00124 #endif
00125
00126
00127
00128
00129
00130
00131
00132 bool PassWP(WorkingPoint workingPoint, const bool isEB, const float pt, const float eta,
00133 const float dEtaIn, const float dPhiIn, const float sigmaIEtaIEta, const float hoe,
00134 const float ooemoop, const float d0vtx, const float dzvtx, const float iso_ch, const float iso_em, const float iso_nh,
00135 const bool vtxFitConversion, const unsigned int mHits, const double rho);
00136
00137 bool PassTriggerCuts(const TriggerWorkingPoint triggerWorkingPoint, const bool isEB, const float pt,
00138 const float dEtaIn, const float dPhiIn, const float sigmaIEtaIEta, const float hoe,
00139 const float trackIso, const float ecalIso, const float hcalIso);
00140
00141 bool PassEoverPCuts(const float eta, const float eopin, const float fbrem);
00142
00143 unsigned int TestWP(WorkingPoint workingPoint, const bool isEB, const float pt, const float eta,
00144 const float dEtaIn, const float dPhiIn, const float sigmaIEtaIEta, const float hoe,
00145 const float ooemoop, const float d0vtx, const float dzvtx, const float iso_ch, const float iso_em, const float iso_nh,
00146 const bool vtxFitConversion, const unsigned int mHits, const double rho);
00147
00148
00149 void PrintDebug(unsigned int mask);
00150
00151 }
00152