ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitHzz4l/LeptonSelection/interface/IsolationSelection.h
Revision: 1.10
Committed: Mon May 14 17:27:29 2012 UTC (13 years ago) by khahn
Content type: text/plain
Branch: MAIN
Changes since 1.9: +18 -0 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 #include "Electron.h"
2 #include "Muon.h"
3 #include "Vertex.h"
4 #include "PFCandidate.h"
5 #include "PFCandidateCol.h"
6 #include "PileupEnergyDensity.h"
7
8 #include "MuonTools.h"
9 #include "ElectronTools.h"
10
11 #include "ParseArgs.h"
12 #include "SelectionStatus.h"
13 #include "SimpleLepton.h"
14
15 #define MUON_ISOMVA_CUT_BIN0 -0.615
16 #define MUON_ISOMVA_CUT_BIN1 0.235
17 #define MUON_ISOMVA_CUT_BIN2 -0.825
18 #define MUON_ISOMVA_CUT_BIN3 0.155
19 #define MUON_ISOMVA_CUT_BIN4 -0.965
20 #define MUON_ISOMVA_CUT_BIN5 -0.989
21
22 #define MUON_ISOMVA_FORPFID_CUT_BIN0 -0.5934
23 #define MUON_ISOMVA_FORPFID_CUT_BIN1 0.3374
24 #define MUON_ISOMVA_FORPFID_CUT_BIN2 -0.7666
25 #define MUON_ISOMVA_FORPFID_CUT_BIN3 0.4102
26 #define MUON_ISOMVA_FORPFID_CUT_BIN4 -0.989
27 #define MUON_ISOMVA_FORPFID_CUT_BIN5 -0.9946
28
29 #define MUON_ISOMVA_LOOSE_FORPFID_CUT_BIN0 -0.5934
30 #define MUON_ISOMVA_LOOSE_FORPFID_CUT_BIN1 0.3374
31 #define MUON_ISOMVA_LOOSE_FORPFID_CUT_BIN2 -0.7666
32 #define MUON_ISOMVA_LOOSE_FORPFID_CUT_BIN3 0.4102
33 #define MUON_ISOMVA_LOOSE_FORPFID_CUT_BIN4 -0.989
34 #define MUON_ISOMVA_LOOSE_FORPFID_CUT_BIN5 -0.9946
35
36 #define MUON_ISOMVA_TIGHT_FORPFID_CUT_BIN0 -0.5934
37 #define MUON_ISOMVA_TIGHT_FORPFID_CUT_BIN1 0.3374
38 #define MUON_ISOMVA_TIGHT_FORPFID_CUT_BIN2 -0.7666
39 #define MUON_ISOMVA_TIGHT_FORPFID_CUT_BIN3 0.4102
40 #define MUON_ISOMVA_TIGHT_FORPFID_CUT_BIN4 -0.989
41 #define MUON_ISOMVA_TIGHT_FORPFID_CUT_BIN5 -0.9946
42
43 #define ELECTRON_LOOSE_ISOMVA_CUT_BIN0 0.385
44 #define ELECTRON_LOOSE_ISOMVA_CUT_BIN1 -0.083
45 #define ELECTRON_LOOSE_ISOMVA_CUT_BIN2 -0.573
46 #define ELECTRON_LOOSE_ISOMVA_CUT_BIN3 0.413
47 #define ELECTRON_LOOSE_ISOMVA_CUT_BIN4 0.271
48 #define ELECTRON_LOOSE_ISOMVA_CUT_BIN5 0.135
49
50 #define ELECTRON_TIGHT_ISOMVA_CUT_BIN0 0.533
51 #define ELECTRON_TIGHT_ISOMVA_CUT_BIN1 -0.237
52 #define ELECTRON_TIGHT_ISOMVA_CUT_BIN2 -0.573
53 #define ELECTRON_TIGHT_ISOMVA_CUT_BIN3 0.521
54 #define ELECTRON_TIGHT_ISOMVA_CUT_BIN4 0.531
55 #define ELECTRON_TIGHT_ISOMVA_CUT_BIN5 0.493
56
57 #define ELECTRON_REFERENCE_PFISO_CUT 0.25
58 #define MUON_REFERENCE_PFISO_CUT 0.25
59
60 Float_t computePFMuonIso(const mithep::Muon *muon,
61 const mithep::Vertex & vtx,
62 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
63 const Double_t dRMax);
64
65 Float_t computePFEleIso(const mithep::Electron *electron,
66 const mithep::Vertex & fVertex,
67 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
68 const Double_t dRMax);
69
70 SelectionStatus electronIsoSelection(ControlFlags &, const mithep::Electron *, const mithep::Vertex &, const mithep::Array<mithep::PFCandidate> * fPFCandidateCol );
71 SelectionStatus muonIsoSelection(ControlFlags &, const mithep::Muon *, const mithep::Vertex &, const mithep::Array<mithep::PFCandidate> * fPFCandidateCol );
72 bool pairwiseIsoSelection( ControlFlags &, vector<SimpleLepton> &, float rho );
73 bool noIso(ControlFlags &, vector<SimpleLepton> &, float rho);
74
75 void initMuonIsoMVA();
76 SelectionStatus muonIsoMVASelection(ControlFlags &ctrl,
77 const mithep::Muon * mu,
78 const mithep::Vertex & vtx,
79 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
80 const mithep::Array<mithep::PileupEnergyDensity> * fPUEnergyDensity,
81 mithep::MuonTools::EMuonEffectiveAreaTarget EffectiveAreaVersion,
82 vector<const mithep::Muon*> muonsToVeto,
83 vector<const mithep::Electron*> electronsToVeto);
84 //hacked version
85 SelectionStatus muonIsoMVASelection(ControlFlags &ctrl,
86 const mithep::Muon * mu,
87 const mithep::Vertex & vtx,
88 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
89 float rho,
90 mithep::MuonTools::EMuonEffectiveAreaTarget EffectiveAreaVersion,
91 vector<const mithep::Muon*> muonsToVeto,
92 vector<const mithep::Electron*> electronsToVeto);
93 double muonPFIso04(ControlFlags &ctrl,
94 const mithep::Muon * mu,
95 const mithep::Vertex & vtx,
96 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
97 const mithep::Array<mithep::PileupEnergyDensity> * fPUEnergyDensity,
98 mithep::MuonTools::EMuonEffectiveAreaTarget EffectiveAreaVersion,
99 vector<const mithep::Muon*> muonsToVeto,
100 vector<const mithep::Electron*> electronsToVeto);
101 // hacked version
102 double muonPFIso04(ControlFlags &ctrl,
103 const mithep::Muon * mu,
104 const mithep::Vertex & vtx,
105 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
106 float rho, // the hack
107 mithep::MuonTools::EMuonEffectiveAreaTarget EffectiveAreaVersion,
108 vector<const mithep::Muon*> muonsToVeto,
109 vector<const mithep::Electron*> electronsToVeto);
110 //
111 SelectionStatus muonReferenceIsoSelection(ControlFlags &ctrl,
112 const mithep::Muon * mu,
113 const mithep::Vertex & vtx,
114 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
115 const mithep::Array<mithep::PileupEnergyDensity> * fPUEnergyDensity,
116 mithep::MuonTools::EMuonEffectiveAreaTarget EffectiveAreaVersion,
117 vector<const mithep::Muon*> muonsToVeto,
118 vector<const mithep::Electron*> electronsToVeto);
119 // hacked version
120 SelectionStatus muonReferenceIsoSelection(ControlFlags &ctrl,
121 const mithep::Muon * mu,
122 const mithep::Vertex & vtx,
123 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
124 float,
125 mithep::MuonTools::EMuonEffectiveAreaTarget EffectiveAreaVersion,
126 vector<const mithep::Muon*> muonsToVeto,
127 vector<const mithep::Electron*> electronsToVeto);
128
129 void initElectronIsoMVA();
130 SelectionStatus electronIsoMVASelection(ControlFlags &ctrl,
131 const mithep::Electron * ele,
132 const mithep::Vertex & vtx,
133 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
134 const mithep::Array<mithep::PileupEnergyDensity> * fPUEnergyDensity,
135 mithep::ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaVersion,
136 vector<const mithep::Muon*> muonsToVeto,
137 vector<const mithep::Electron*> electronsToVeto);
138 //hacked version
139 SelectionStatus electronIsoMVASelection(ControlFlags &ctrl,
140 const mithep::Electron * ele,
141 const mithep::Vertex & vtx,
142 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
143 float rho,
144 mithep::ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaVersion,
145 vector<const mithep::Muon*> muonsToVeto,
146 vector<const mithep::Electron*> electronsToVeto);
147 float electronPFIso04(ControlFlags &ctrl,
148 const mithep::Electron * ele,
149 const mithep::Vertex & vtx,
150 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
151 const mithep::Array<mithep::PileupEnergyDensity> * fPUEnergyDensity,
152 mithep::ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaVersion,
153 vector<const mithep::Muon*> muonsToVeto,
154 vector<const mithep::Electron*> electronsToVeto) ;
155 // hacked version
156 float electronPFIso04(ControlFlags &ctrl,
157 const mithep::Electron * ele,
158 const mithep::Vertex & vtx,
159 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
160 float rho, // the hack
161 mithep::ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaVersion,
162 vector<const mithep::Muon*> muonsToVeto,
163 vector<const mithep::Electron*> electronsToVeto) ;
164 //
165 SelectionStatus electronReferenceIsoSelection(ControlFlags &ctrl,
166 const mithep::Electron * ele,
167 const mithep::Vertex & vtx,
168 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
169 const mithep::Array<mithep::PileupEnergyDensity> * fPUEnergyDensity,
170 mithep::ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaVersion,
171 vector<const mithep::Muon*> muonsToVeto,
172 vector<const mithep::Electron*> electronsToVeto);
173 // hacked version
174 SelectionStatus electronReferenceIsoSelection(ControlFlags &ctrl,
175 const mithep::Electron * ele,
176 const mithep::Vertex & vtx,
177 const mithep::Array<mithep::PFCandidate> * fPFCandidates,
178 float,
179 mithep::ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaVersion,
180 vector<const mithep::Muon*> muonsToVeto,
181 vector<const mithep::Electron*> electronsToVeto);