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);
|