 |
ATLAS Offline Software
|
Go to the documentation of this file.
7 #ifndef INDETTRACKSELECTIONTOOL_INDETTRACKSELECTIONTOOL_H
8 #define INDETTRACKSELECTIONTOOL_INDETTRACKSELECTIONTOOL_H
17 #include "GaudiKernel/ToolHandle.h"
18 #include "GaudiKernel/ServiceHandle.h"
27 #include <unordered_map>
126 #ifndef XAOD_ANALYSIS
136 static inline bool maxDoubleIsSet(Double_t cutValue) {
return cutValue < InDet::InDetTrackSelectionTool::LOCAL_MAX_DOUBLE && cutValue >= 0.;}
137 static inline bool maxIntIsSet(Int_t cutValue){
return cutValue < InDet::InDetTrackSelectionTool::LOCAL_MAX_INT && cutValue >= 0;}
141 Gaudi::Property<Double_t>
m_minPt{
this,
"minPt", -1.,
"Minimum transverse momentum"};
142 Gaudi::Property<Double_t>
m_minP{
this,
"minP", -1.,
"Minimum momentum"};
145 {
this,
"maxAbsEta",
LOCAL_MAX_DOUBLE,
"Maximum magnitude of pseudorapidity"};
157 {
this,
"maxSigmaZ0SinTheta",
LOCAL_MAX_DOUBLE,
"Maximum error on z0*sin(theta)"};
164 "Significance cut on |z0*sin(theta)|"};
167 {
this,
"minNInnermostLayerHits", -1,
168 "Required hits on the innermost pixel layer"};
170 {
this,
"minNNextToInnermostLayerHits", -1,
171 "Required hits on the next to innermost pixel layer"};
173 {
this,
"minNBothInnermostLayersHits", -1,
174 "Required hits on two innermost pixel layers"};
177 "Maximum shared hits in innermost pixel layer"};
179 {
this,
"useMinBiasInnermostLayersCut", 0,
180 "IBL hit if expected, otherwise next layer hit if expected"};
182 {
this,
"minNSiHits", -1,
"Minimum silicon (pixel + SCT) hits"};
185 "Maximum silicon (pixel + SCT) sensors shared with other track"};
187 {
this,
"minNSiHitsIfSiSharedHits", -1,
188 "Minimum number of silicon hits if there are any shared silicon hits"};
190 {
this,
"maxNSiHoles",
LOCAL_MAX_INT,
"Maximum silicon (pixel + SCT) holes"};
192 {
this,
"minNPixelHits", -1,
"Required pixel hits"};
195 "Maximum pixels shared with other tracks"};
198 "Maximum number of missed layers in pixel"};
202 "Eta cutoff for strict silicon hits cut"};
204 {
this,
"minNSiHitsAboveEtaCutoff", -1,
205 "Minimum silicon hits at large pseudorapidity"};
207 {
this,
"maxOneSharedModule",
false,
208 "Allow only 1 shared pixel hit or 2 shared SCT hits, not both"};
210 {
this,
"useEtaDependentMaxChiSq",
false,
211 "Whether or not to use the eta-dependent chi squared per degree of freedom cut"};
214 {
this,
"minNSiHitsPhysical", -1,
215 "Minimum physical silicon hits (i.e. dead sensors do not count)"};
217 {
this,
"minNPixelHitsPhysical", -1,
"Minimum physical pixel hits"};
219 {
this,
"minNSctHitsPhysical", -1,
"Minimum physical SCT hits"};
221 {
this,
"minNSctHits", -1,
"Minimum SCT hits"};
224 "Maximum SCT hits shared with other track"};
228 {
this,
"maxNSctDoubleHoles",
LOCAL_MAX_INT,
"Maximum SCT double holes"};
232 "Maximum eta that ignores TRT hit cuts"};
234 {
this,
"maxEtaForTrtHitCuts", -1.,
235 "Eta above which TRT hit cuts are not applied."};
236 Gaudi::Property<Int_t>
m_minNTrtHits{
this,
"minNTrtHits", -1,
"Minimum TRT hits"};
238 {
this,
"minNTrtHitsPlusOutliers", -1,
"Minimum TRT hits including outliers"};
240 {
this,
"minNTrtHighThresholdHits", -1,
"Minimum high E TRT hits"};
242 {
this,
"minNTrtHighThresholdHitsPlusOutliers", -1,
243 "Minimum high E TRT hits including outliers"};
246 "Maximum TRT hits that are above high energy threshold"};
249 "Maximum TRT hits that are above high energy threshold including outliers"};
252 "Maximum fraction of TRT outliers over TRT hits plus outliers"};
258 "Maximum chi squared per degree of freedom"};
259 Gaudi::Property<Double_t>
m_minProb{
this,
"minProb", -1.,
"Minimum p(chi^2, Ndof)"};
262 "Minimum pt for chi-sq probability cut"};
264 {
this,
"minProbAbovePtCutoff", -1.,
265 "Minimum chi-sq probability above a pt cutoff"};
268 {
this,
"minNUsedHitsdEdx", -1,
"Minimum hits used for dEdx"};
270 {
this,
"minNOverflowHitsdEdx", -1,
"Minimum overflow hits in IBL for dEdx"};
272 {
this,
"eProbHTonlyForXe",
false,
273 "Flag whether to apply the eProbabilityHT cut only when all TRT hits are Xenon"};
275 {
this,
"minEProbabilityHT", -1.,
276 "Minimum High Threshold electron probability"};
279 {
this,
"useExperimentalInnermostLayersCut",
false,
280 "Use the experimental cut on pixel holes"};
282 #ifndef XAOD_ANALYSIS
284 {
this,
"minNSiHitsMod", -1,
285 "Minimum number of Si hits, with pixel hits counting twice"};
287 {
this,
"minNSiHitsModTop", -1,
288 "Min number of Si hits on top half (pixel counting twice)"};
290 {
this,
"minNSiHitsModBottom", -1,
291 "Min number of Si hits on bottom half (pixel counting twice)"};
295 {
this,
"vecEtaCutoffsForSiHitsCut", {},
296 "Minimum eta cutoffs for each Silicon hit cut"};
298 {
this,
"vecMinNSiHitsAboveEta", {},
299 "Minimum Silicon hits above each eta cutoff"};
301 {
this,
"vecEtaCutoffsForPtCut", {},
"Minimum eta cutoffs for each pT cut"};
303 {
this,
"vecMinPtAboveEta", {},
304 "Minimum transverse momentum above each eta cutoff"};
307 {
this,
"vecPtCutoffsForSctHitsCut", {},
308 "Minimum pt cutoffs for each SCT hits"};
310 {
this,
"vecMinNSctHitsAbovePt", {},
311 "Minimum SCT hits above each pt cutoff"};
314 {
this,
"vecEtaCutoffsForZ0SinThetaCut", {},
315 "Minimum eta cutoffs for each Z0SinTheta value"};
317 {
this,
"vecPtCutoffsForZ0SinThetaCut", {},
318 "Minimum pt cutoffs for each Z0SinTheta value"};
320 {
this,
"vecvecMaxZ0SinThetaAboveEtaPt", {},
321 "Maximum Z0SinTheta value above each eta and pT cutoff"};
324 {
this,
"vecEtaCutoffsForD0Cut", {},
"Minimum eta cutoffs for each D0 value"};
326 {
this,
"vecPtCutoffsForD0Cut", {},
"Minimum pt cutoffs for each D0 value"};
328 {
this,
"vecvecMaxD0AboveEtaPt", {},
329 "Maximum D0 value above each eta and pT cutoff"};
332 {
this,
"vecEtaCutoffsForSctHolesCut", {},
333 "Minimum eta cutoffs for each SctHoles value"};
335 {
this,
"vecPtCutoffsForSctHolesCut", {},
336 "Minimum pt cutoffs for each SctHoles value"};
338 {
this,
"vecvecMaxSctHolesAboveEtaPt", {},
339 "Maximum SctHoles value above each eta and pT cutoff"};
342 {
this,
"vecEtaCutoffsForSctHitsPlusDeadCut", {},
343 "Minimum eta cutoffs for each SctHitsPlusDead value"};
345 {
this,
"vecPtCutoffsForSctHitsPlusDeadCut", {},
346 "Minimum pt cutoffs for each SctHitsPlusDead value"};
348 {
this,
"vecvecMinSctHitsPlusDeadAboveEtaPt", {},
349 "Minimum SctHitsPlusDead value above each eta and pT cutoff"};
356 Gaudi::Property<std::string>
m_cutLevel{
this,
"CutLevel",
""};
361 #ifndef XAOD_ANALYSIS
362 Gaudi::Property<Bool_t>
m_initTrkTools{
this,
"UseTrkTrackTools",
false,
"Whether to initialize the Trk::Track tools"};
365 {
this,
"TrackSummaryTool",
"Trk::TrackSummaryTool/TrackSummaryTool"};
367 {
this,
"Extrapolator",
"Trk::Extrapolator/Extrapolator"};
369 #endif // XAOD_ANALYSIS
375 #endif // INDETTRACKSELECTIONTOOL_INDETTRACKSELECTIONTOOL_H
bool const RAWDATA *ch2 const
Class providing the definition of the 4-vector interface.
::StatusCode StatusCode
StatusCode definition for legacy code.
cut
This script demonstrates how to call a C++ class from Python Also how to use PyROOT is shown.
def best(iterable, priorities=[3, 2, 1, -1, 0])
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Class mimicking the AthMessaging class from the offline software.
Class describing a Vertex.
Object to encode the result of several cuts.
Class describing a TrackParticle.
AccessorTemplate< ContainerId::track, CT, ColumnAccessMode::input, CM > TrackAccessor
setBGCode setTAP setLVL2ErrorBits bool