ATLAS Offline Software
Loading...
Searching...
No Matches
TElectronIsEMSelector.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5// Dear emacs, this is -*-c++-*-
6
7#ifndef __TELECTRONISEMSELECTOR__
8#define __TELECTRONISEMSELECTOR__
9
20// Include the return object and the base class
21#include "PATCore/AcceptInfo.h"
22#include "PATCore/AcceptData.h"
26#include <vector>
27#include <string>
28
30
31namespace Root {
33 {
34
35 friend class ::AsgElectronIsEMSelector;
36
37 public:
39 TElectronIsEMSelector(const char* name="TElectronIsEMSelector");
40
43
44
45 // Main methods
47 StatusCode initialize();
48
51 // eta position in second sampling
52 float eta2,
53 // transverse energy in calorimeter (using eta position in second sampling)
54 double et,
56 // E(3*3) in 2nd sampling
57 float Reta, //e233,
58 // E(3*7) in 2nd sampling
59 float Rphi, //e237,
60 // transverse energy in 1st scintillator of hadronic calorimeter
61 float Rhad1, //ethad1,
62 // transverse energy in hadronic calorimeter
63 float Rhad, //ethad,
64 // E(7*7) in 2nd sampling
65 float e277,
66 // shower width in 3 strips in 1st sampling
67 float weta1c,
68 // shower width in 2nd sampling
69 float weta2c,
70 // fraction of energy reconstructed in the 1st sampling
71 float f1,
72 // E of 2nd max between max and min in strips
73 float emax2,
74 // E of 1st max in strips
75 float Eratio, //emax,
76 // E(min) in strips
77 float DeltaE, //emin,
78 // total shower width in 1st sampling
79 float wtot,
80 // E(+/-3)-E(+/-1)/E(+/-1)
81 float fracm,
82 // fraction of energy reconstructed in the 3rd sampling
83 float f3,
85 // is effective number of BL hits+outliers at least 1?
86 bool passBLayerRequirement,
87 // number of pixel hits + dead sensors
88 int nPixHitsPlusDeadSensors,
89 // number of silicon hits + dead sensors
90 int nSiHitsPlusDeadSensors,
91 // TRT hits
92 int nTRThigh,
93 int nTRThighOutliers,
94 int nTRT,
95 int nTRTOutliers,
96 int nTRTXenonHits,
97 float TRT_PID,
98 // transverse impact parameter
99 float trackd0,
100 // Delta eta,phi matching
101 float deltaeta,
102 float deltaphi,
103 // E/p
104 double ep) const;
105
108
109 // calculate the isEM. (Used internally by accept)
110 unsigned int calcIsEm(
111 // eta position in second sampling
112 float eta2,
113 // transverse energy in calorimeter (using eta position in second sampling)
114 double et,
116 // E(3*3) in 2nd sampling
117 float Reta, //e233,
118 // E(3*7) in 2nd sampling
119 float Rphi, //e237,
120 // transverse energy in 1st scintillator of hadronic calorimeter
121 float Rhad1, //ethad1,
122 // transverse energy in hadronic calorimeter
123 float Rhad, //ethad,
124 // E(7*7) in 2nd sampling
125 float e277,
126 // shower width in 3 strips in 1st sampling
127 float weta1c,
128 // shower width in 2nd sampling
129 float weta2c,
130 // fraction of energy reconstructed in the 1st sampling
131 float f1,
132 // E of 2nd max between max and min in strips
133 float emax2,
134 // E of 1st max in strips
135 float Eratio, //emax,
136 // E(min) in strips
137 float DeltaE, //emin,
138 // total shower width in 1st sampling
139 float wtot,
140 // E(+/-3)-E(+/-1)/E(+/-1)
141 float fracm,
142 // fraction of energy reconstructed in the 3rd sampling
143 float f3,
145 // is effective number of BL hits+outliers at least 1?
146 bool passBLayerRequirement,
147 // number of pixel hits + dead sensors
148 int nPixHitsPlusDeadSensors,
149 // number of silicon hits + dead sensors
150 int nSiHitsPlusDeadSensors,
151 // TRT hits
152 int nTRThigh,
153 int nTRThighOutliers,
154 int nTRT,
155 int nTRTOutliers,
156 int nTRTXenonHits,
157 float TRT_PID,
158 // transverse impact parameter
159 float trackd0,
160 // Delta eta,phi matching
161 float deltaeta,
162 float deltaphi,
163 // E/p
164 double ep) const;
165
166 // used internally by calcIsEm, but left public because it can be useful for users. Note that
167 // it doesn't necessarily zero all the values that pass, so make sure that the input iflag
168 // bits that you are concerned with start out with 0.
169 unsigned int calocuts_electrons(
170 // eta position in second sampling
171 float eta2,
172 // transverse energy in calorimeter (using eta position in second sampling)
173 double et,
174 // E(3*3) in 2nd sampling
175 float Reta, //e233,
176 // E(3*7) in 2nd sampling
177 float Rphi, //e237,
178 // transverse energy in 1st scintillator of hadronic calorimeter
179 float Rhad1, //ethad1,
180 // transverse energy in hadronic calorimeter
181 float Rhad, //ethad,
182 // E(7*7) in 2nd sampling
183 float e277,
184 // shower width in 3 strips in 1st sampling
185 float weta1c,
186 // shower width in 2nd sampling
187 float weta2c,
188 // fraction of energy reconstructed in the 1st sampling
189 float f1,
190 // E of 2nd max between max and min in strips
191 float emax2,
192 // E of 1st max in strips
193 float Eratio, //emax,
194 // E(min) in strips
195 float DeltaE, //emin,
196 // total shower width in 1st sampling
197 float wtot,
198 // E(+/-3)-E(+/-1)/E(+/-1)
199 float fracm,
200 // fraction of energy reconstructed in the 3rd sampling
201 float f3,
202 // the starting isEM (should be 0 if new)
203 unsigned int iflag,
204 // trigETthr : threshold in ET to apply the cuts at trigger level
205 double trigEtTh=0
206 ) const;
207
208 // used internally by calcIsEm, but left public because it can be useful for users. Note that
209 // it doesn't necessarily zero all the values that pass, so make sure that the input iflag
210 // bits that you are concerned with start out with 0.
211 unsigned int TrackCut(
212 // eta of the cluster in the 2nd sampling
213 float eta2,
214 // transverse energy in calorimeter (using eta position in second sampling)
215 double et,
216 // is effective number of BL hits+outliers at least 1?
217 bool passBLayerRequirement,
218 // number of pixel hits + dead sensors
219 int nPixHitsPlusDeadSensors,
220 // number of silicon hits + dead sensors
221 int nSiHitsPlusDeadSensors,
222 // TRT hits
223 int nTRThigh,
224 int nTRThighOutliers,
225 int nTRT,
226 int nTRTOutliers,
227 int nTRTXenonHits,
228 float TRT_PID,
229 // transverse impact parameter
230 float trackd0,
231 // Delta eta,phi matching
232 float deltaeta,
233 float deltaphi,
234 // E/p
235 double ep,
236 unsigned int iflag) const;
237
238
240 // Public members (the cut values)
242
244 unsigned int m_isEMMask;
245
250
252 std::vector<float> m_cutBinEta;
254 std::vector<float> m_cutBinET;
256 std::vector<float> m_cutF1;
258 std::vector<float> m_cutHadLeakage;
260 std::vector<float> m_cutReta37;
262 std::vector<float> m_cutRphi33;
264 std::vector<float> m_cutWeta2c;
266 std::vector<float> m_cutDeltaEmax2;
268 std::vector<float> m_cutDeltaE;
270 std::vector<float> m_cutDEmaxs1;
272 std::vector<float> m_cutWtot;
274 std::vector<float> m_cutWeta1c;
276 std::vector<float> m_cutFracm;
277
279 std::vector<float> m_cutF3;
280
282 std::vector<int> m_cutBL;
284 std::vector<int> m_cutPi;
286 std::vector<int> m_cutSi;
288 std::vector<float> m_cutA0;
290 std::vector<float> m_cutA0Tight;
292 std::vector<float> m_cutDeltaEta;
294 std::vector<float> m_cutDeltaEtaTight;
296 std::vector<float> m_cutminDeltaPhi;
298 std::vector<float> m_cutmaxDeltaPhi;
300 std::vector<float> m_cutminEp;
302 std::vector<float> m_cutmaxEp;
303
305 std::vector<float> m_cutBinEta_TRT;
307 std::vector<float> m_cutBinET_TRT;
309 std::vector<float> m_cutNumTRT;
311 std::vector<float> m_cutTRTRatio;
313 std::vector<float> m_cutTRTRatio90;
315 std::vector<float> m_cutEProbabilityHT;
316
317 const asg::AcceptInfo& getAcceptInfo() const { return m_acceptInfo; }
318
319 // Private members
320 private:
321
322 // would ideally be protected: only to be used by ARASelector
323 asg::AcceptData fillAccept(unsigned int isEM) const;
324
325 std::vector<int> FindEtEtaBin(double et, double eta2) const;
326
327 template<typename T>
328 bool CheckVar(const std::vector<T>& vec, int choice) const;
329
332
333 // the cut positions
334
337
340
351
354
367
392
398
405
406 // the cut names
407
410
413
424
427
440
448 const std::string m_cutNameTrackSi_Electron;
450 const std::string m_cutNameTrackA0_Electron;
465
471
478
479
480
481 }; // End: class definition
482
483} // End: namespace Root
484
485#endif
486
std::vector< size_t > vec
Tool to select objects.
std::vector< float > m_cutBinEta
range of eta bins for e-ID
bool CheckVar(const std::vector< T > &vec, int choice) const
int m_cutPositionTrackMatchPhi_Electron
phi difference between cluster and extrapolated track in the 2nd sampling
const std::string m_cutNameTrackTRTratio90_Electron
ratio of high to all TRT hits for non-isolated electrons (not for new ++ menus)
const std::string m_cutNameTrackPixel_Electron
number of Pixel hits
const std::string m_cutNameTrackMatchEoverP_Electron
energy-momentum match
std::vector< float > m_cutEProbabilityHT
cut on on eProbabilityHT new TRT PID tool
int m_cutPositionClusterStripsDEmaxs1_Electron
difference between max and 2nd max in strips
int m_cutPositionTrackMatchEta_Electron
eta difference between cluster and extrapolated track in the 1st sampling
std::vector< float > m_cutminEp
cut min on E/p for e-ID
std::vector< float > m_cutHadLeakage
cut on hadronic energy for e-ID
const std::string m_cutNameClusterEtaRange_Electron
cluster eta range
int m_cutPositionClusterStripsDeltaEmax2_Electron
energy of 2nd maximum in 1st sampling ~e2tsts1/(1000+const_lumi*et)
std::vector< float > m_cutNumTRT
cut on Number of TRT hits for e-ID
int m_cutPositionClusterStripsFracm_Electron
shower shape in shower core 1st sampling
int m_cutPositionClusterStripsEratio_Electron
fraction of energy found in 1st sampling (NB: not used in fact for electrons)
const std::string m_cutNameTrackMatchEta_Electron
eta difference between cluster and extrapolated track in the 1st sampling
std::vector< float > m_cutDeltaEtaTight
cut max on delta eta for Tight e-ID
const std::string m_cutNameTrackTRThits_Electron
number of TRT hits
std::vector< float > m_cutTRTRatio90
cut on Ratio of TR hits to Number of TRT hits for 10% loss due to TRT
std::vector< float > m_cutDeltaEta
cut max on delta eta for e-ID
std::vector< float > m_cutA0Tight
cut min on transverse impact parameter for Tight e-ID
std::vector< float > m_cutRphi33
cut on ratio e233/e277 for e-ID
unsigned int TrackCut(float eta2, double et, bool passBLayerRequirement, int nPixHitsPlusDeadSensors, int nSiHitsPlusDeadSensors, int nTRThigh, int nTRThighOutliers, int nTRT, int nTRTOutliers, int nTRTXenonHits, float TRT_PID, float trackd0, float deltaeta, float deltaphi, double ep, unsigned int iflag) const
std::vector< float > m_cutA0
cut min on transverse impact parameter for e-ID
const std::string m_cutNameClusterIsolation_Electron
calorimetric isolation
const asg::AcceptInfo & getAcceptInfo() const
const std::string m_cutNameClusterHadronicLeakage_Electron
cluster leakage into the hadronic calorimeter
const std::string m_cutNameTrackIsolation_Electron
tracker isolation
int m_cutPositionClusterStripsDeltaE_Electron
difference between 2nd maximum and 1st minimum in strips (e2tsts1-emins1)
std::vector< float > m_cutBinET_TRT
Et binning for cuts on TRT for e-ID.
const std::string m_cutNameTrackA0_Electron
distance of closet approach
unsigned int m_isEMMask
which subset of cuts to apply
int m_cutPositionTrackTRThits_Electron
number of TRT hits
bool m_useTRTOutliers
use of TRT outliers
int m_cutPositionClusterMiddleEnergy_Electron
Et<0 cut.
TElectronIsEMSelector(const char *name="TElectronIsEMSelector")
Standard constructor.
int m_cutPositionClusterStripsWtot_Electron
shower width in 1st sampling
const std::string m_cutNameClusterMiddleEratio33_Electron
energy ratio in 2nd sampling (e.g E233/E237)
const std::string m_cutNameClusterMiddleEnergy_Electron
energy in 2nd sampling (e.g E277>0)
std::vector< float > m_cutFracm
cut on Fside in 1st sampling for e-ID
const std::string m_cutNameTrackSi_Electron
number of Pixel and SCT hits
int m_cutPositionConversionMatch_Electron
matching to photon (not necessarily conversion–the name is historical)
std::vector< float > m_cutBinET
range of ET bins for e-ID
const std::string m_cutNameClusterStripsFracm_Electron
shower shape in shower core 1st sampling
int m_cutPositionTrackA0Tight_Electron
distance of closet approach for tight selection (not to be used in new ++ menus)
const std::string m_cutNameTrackA0Tight_Electron
distance of closet approach for tight selection (not to be used in new ++ menus)
std::vector< float > m_cutDeltaEmax2
cut on Delta Emax2 in 1st sampling for e-ID
int m_cutPositionClusterBackEnergyFraction_Electron
energy fraction in the third layer
std::vector< float > m_cutmaxEp
cut max on E/p for e-ID
int m_cutPositionTrackMatchEoverP_Electron
energy-momentum match
std::vector< float > m_cutWeta2c
cut on shower width in 2nd sampling for e-ID
unsigned int calcIsEm(float eta2, double et, float Reta, float Rphi, float Rhad1, float Rhad, float e277, float weta1c, float weta2c, float f1, float emax2, float Eratio, float DeltaE, float wtot, float fracm, float f3, bool passBLayerRequirement, int nPixHitsPlusDeadSensors, int nSiHitsPlusDeadSensors, int nTRThigh, int nTRThighOutliers, int nTRT, int nTRTOutliers, int nTRTXenonHits, float TRT_PID, float trackd0, float deltaeta, float deltaphi, double ep) const
std::vector< float > m_cutTRTRatio
cut on Ratio of TR hits to Number of TRT hits for e-ID
const std::string m_cutNameClusterMiddleWidth_Electron
width in the second sampling (e.g Weta2)
const std::string m_cutNameClusterStripsWeta1c_Electron
shower width weighted by distance from the maximum one
asg::AcceptData fillAccept(unsigned int isEM) const
int m_cutPositionClusterMiddleEratio33_Electron
energy ratio in 2nd sampling (e.g E233/E237)
bool m_useTRTXenonHits
use of TRT Xenon Hits
asg::AcceptInfo m_acceptInfo
Accept info.
int m_cutPositionClusterMiddleEratio37_Electron
energy ratio in 2nd sampling (e.g E237/E277)
const std::string m_cutNameTrackMatchEtaTight_Electron
eta difference between cluster and extrapolated track in the 1st sampling for tight selection (not to...
int m_cutPositionTrackIsolation_Electron
tracker isolation
std::vector< float > m_cutWeta1c
cut on width in 1st sampling for e-ID
int m_cutPositionTrackTRTratio_Electron
ratio of high to all TRT hits for isolated electrons
const std::string m_cutNameClusterStripsDeltaE_Electron
difference between 2nd maximum and 1st minimum in strips (e2tsts1-emins1)
const std::string m_cutNameClusterStripsWtot_Electron
shower width in 1st sampling
std::vector< float > m_cutF1
cut on fraction of energy deposited in 1st sampling for e-ID
std::vector< float > m_cutReta37
cut on ratio e237/e277 for e-ID
const std::string m_cutNameTrackTRTratio_Electron
ratio of high to all TRT hits for isolated electrons
const std::string m_cutNameConversionMatch_Electron
matching to photon (not necessarily conversion–the name is historical)
unsigned int calocuts_electrons(float eta2, double et, float Reta, float Rphi, float Rhad1, float Rhad, float e277, float weta1c, float weta2c, float f1, float emax2, float Eratio, float DeltaE, float wtot, float fracm, float f3, unsigned int iflag, double trigEtTh=0) const
std::vector< int > m_cutSi
cut min on precision hits for e-ID
std::vector< float > m_cutmaxDeltaPhi
cut max on delta phi for e-ID
int m_cutPositionTrackTRTratio90_Electron
ratio of high to all TRT hits for non-isolated electrons (not for new ++ menus)
std::vector< int > FindEtEtaBin(double et, double eta2) const
std::vector< float > m_cutWtot
cut on total width in 1st sampling for e-ID
~TElectronIsEMSelector()
Standard destructor.
const std::string m_cutNameClusterBackEnergyFraction_Electron
energy fraction in the third layer
int m_cutPositionClusterIsolation_Electron
calorimetric isolation
asg::AcceptData accept() const
Return dummy accept with only info.
const std::string m_cutNameIsolation_Electron
isolation
int m_cutPositionTrackPixel_Electron
number of Pixel hits
int m_cutPositionClusterMiddleWidth_Electron
width in the second sampling (e.g Weta2)
std::vector< float > m_cutminDeltaPhi
cut min on delta phi for e-ID (this should be negative)
std::vector< float > m_cutDeltaE
cut on Emax2 - Emin in 1st sampling for e-ID
int m_cutPositionClusterStripsWeta1c_Electron
shower width weighted by distance from the maximum one
std::vector< int > m_cutBL
cut min on b-layer hits for e-ID
std::vector< int > m_cutPi
cut min on pixel hits for e-ID
int m_cutPositionTrackBlayer_Electron
B layer hit.
const std::string m_cutNameTrackMatchPhi_Electron
phi difference between cluster and extrapolated track in the 2nd sampling
int m_cutPositionTrackMatchEtaTight_Electron
eta difference between cluster and extrapolated track in the 1st sampling for tight selection (not to...
int m_cutPositionTrackTRTeProbabilityHT_Electron
Cut on the TRT eProbabilityHT_Electron.
int m_cutPositionTrackA0_Electron
distance of closet approach
const std::string m_cutNameTrackTRTeProbabilityHT_Electron
Cut on the TRT eProbabilityHT_Electron.
const std::string m_cutNameClusterMiddleEratio37_Electron
energy ratio in 2nd sampling (e.g E237/E277)
int m_cutPositionTrackSi_Electron
number of Pixel and SCT hits
const std::string m_cutNameTrackBlayer_Electron
B layer hit.
std::vector< float > m_cutDEmaxs1
cut on (Emax1-Emax2)/(Emax1-Emax2) for e-ID
StatusCode initialize()
Initialize this class.
const std::string m_cutNameClusterStripsDEmaxs1_Electron
difference between max and 2nd max in strips
std::vector< float > m_cutBinEta_TRT
Eta binning for cuts on TRT for e-ID.
const std::string m_cutNameClusterStripsEratio_Electron
fraction of energy found in 1st sampling (NB: not used in fact for electrons)
int m_cutPositionClusterHadronicLeakage_Electron
cluster leakage into the hadronic calorimeter
const std::string m_cutNameClusterStripsDeltaEmax2_Electron
energy of 2nd maximum in 1st sampling ~e2tsts1/(1000+const_lumi*et)
int m_cutPositionClusterEtaRange_Electron
cluster eta range
std::vector< float > m_cutF3
cut values for cut on f3
Class mimicking the AthMessaging class from the offline software.
Extra patterns decribing particle interation process.