ATLAS Offline Software
Loading...
Searching...
No Matches
InDetTrackSelectionTool.h
Go to the documentation of this file.
1// -*- c++ -*-
2
3/*
4 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5*/
6
7#ifndef INDETTRACKSELECTIONTOOL_INDETTRACKSELECTIONTOOL_H
8#define INDETTRACKSELECTIONTOOL_INDETTRACKSELECTIONTOOL_H
9
10// Local include(s):
12// Framework include(s):
13#include "AsgTools/AsgTool.h"
16#ifndef XAOD_ANALYSIS
17#include "GaudiKernel/ToolHandle.h"
18#include "GaudiKernel/ServiceHandle.h"
21#endif
22
23#include <atomic>
24#include <limits>
25#include <map>
26#include <mutex>
27#include <unordered_map>
28#include <string>
29#include <sstream>
30#include <algorithm>
31#include <iterator>
32#include <cstdint>
33
34namespace InDetAccessor {
35
37
38#ifndef XAOD_ANALYSIS
39 class TrkTrackHelper;
40#endif
41}
42
43namespace InDet {
44
45 // forward declaration of helper classes
46 class TrackAccessor;
47 class TrackCut;
48
52 public virtual IInDetTrackSelectionTool,
53 public asg::AsgTool {
54
55 friend class TrackCut;
56
61
62 public:
64 InDetTrackSelectionTool( const std::string& name );
65
66 // The default destructor is OK but it must be defined in the
67 // implementation file in order to forward declare with unique_ptr
69
72
74 virtual StatusCode initialize() override;
76 virtual StatusCode finalize() override;
77
79
82
84 virtual const asg::AcceptInfo& getAcceptInfo() const override;
85
87 virtual asg::AcceptData accept( const xAOD::IParticle* ) const override;
88
90
93
95 virtual asg::AcceptData accept( const xAOD::TrackParticle& track,
96 const xAOD::Vertex* vertex = nullptr ) const override;
97
98#ifndef XAOD_ANALYSIS
99 virtual asg::AcceptData accept( const Trk::Track& track,
100 const Trk::Vertex* vertex = nullptr ) const override;
101#endif
102
104
105 virtual void setCutLevel( InDet::CutLevel level, bool overwrite = true ) override
106 __attribute__ ((deprecated("For consistency with the athena interface, the cut level is best set through the \"CutLevel\" property.")));
107
108 private:
109 bool m_isInitialized = false; // flag whether or not the tool has been initialized, to check erroneous use cases.
110 mutable std::atomic_bool m_warnInit = false; // flag to keep track of whether we have warned about a lack of initialization
111
112 // this is the setCutLevel function that actually does the work, so that it doesn't warn if called in athena.
113 void setCutLevelPrivate( InDet::CutLevel level, bool overwrite = true );
114
115 // helper method to setup the cut functions for TrackParticles and Trk::Tracks
116 template <int VERBOSE, class Trk_Helper>
117 StatusCode setupCuts(std::map< std::string, std::vector< std::function<bool(Trk_Helper helper, const asg::AsgMessaging &msgHelper)> > > &trackCuts);
118
119 template <class Trk_Helper>
120 asg::AcceptData accept(Trk_Helper helper, const std::map< std::string, std::vector< std::function<bool(Trk_Helper helper, const asg::AsgMessaging &msgHelper)> > > &trackCuts) const;
121
122 std::unordered_map< std::string, std::shared_ptr<TrackAccessor> > m_trackAccessors;
123
124 std::unique_ptr<asg::AsgMessaging> m_msgHelper;
125 std::map< std::string, std::vector< std::function<bool(InDetAccessor::TrackParticleHelper helper, const asg::AsgMessaging &msgHelper)> > >
127#ifndef XAOD_ANALYSIS
128 std::map< std::string, std::vector< std::function<bool(InDetAccessor::TrkTrackHelper helper, const asg::AsgMessaging &msgHelper)> > >
130#endif
131
132 mutable std::atomic<uint64_t> m_numTracksProcessed = 0;
133 mutable std::atomic<uint64_t> m_numTracksPassed = 0;
134 mutable std::vector<uint64_t> m_numTracksPassedCuts ATLAS_THREAD_SAFE;
135 mutable std::mutex m_mutex;
136
137 static inline bool maxDoubleIsSet(double cutValue) {return cutValue < InDet::InDetTrackSelectionTool::LOCAL_MAX_DOUBLE && cutValue >= 0.;}
138 static inline bool maxIntIsSet(int cutValue){return cutValue < InDet::InDetTrackSelectionTool::LOCAL_MAX_INT && cutValue >= 0;}
139 constexpr static double LOCAL_MAX_DOUBLE = 1.0e16;
140 constexpr static int LOCAL_MAX_INT = std::numeric_limits<int>::max();
141
142 Gaudi::Property<double> m_minPt{this, "minPt", -1., "Minimum transverse momentum"};
143 Gaudi::Property<double> m_minP{this, "minP", -1., "Minimum momentum"};
144
145 Gaudi::Property<double> m_maxAbsEta
146 {this, "maxAbsEta", LOCAL_MAX_DOUBLE, "Maximum magnitude of pseudorapidity"};
147 Gaudi::Property<double> m_maxZ0SinTheta
148 {this, "maxZ0SinTheta", LOCAL_MAX_DOUBLE, "Maximum |z0|*sin(theta)"};
149 Gaudi::Property<double> m_maxZ0
150 {this, "maxZ0", LOCAL_MAX_DOUBLE, "Maximum longitudinal separation"};
151 Gaudi::Property<double> m_maxD0
152 {this, "maxD0", LOCAL_MAX_DOUBLE, "Maximum transvers separation"};
153 Gaudi::Property<double> m_maxSigmaD0
154 {this, "maxSigmaD0", LOCAL_MAX_DOUBLE, "Maximum error on d0"};
155 Gaudi::Property<double> m_maxSigmaZ0
156 {this, "maxSigmaZ0", LOCAL_MAX_DOUBLE, "Maximum error on z0"};
157 Gaudi::Property<double> m_maxSigmaZ0SinTheta
158 {this, "maxSigmaZ0SinTheta", LOCAL_MAX_DOUBLE, "Maximum error on z0*sin(theta)"};
159 Gaudi::Property<double> m_maxD0overSigmaD0
160 {this, "maxD0overSigmaD0", LOCAL_MAX_DOUBLE, "Significance cut on |d0|"};
161 Gaudi::Property<double> m_maxZ0overSigmaZ0
162 {this, "maxZ0overSigmaZ0", LOCAL_MAX_DOUBLE, "Significance cut on |z0|"};
164 {this, "maxZ0SinThetaoverSigmaZ0SinTheta", LOCAL_MAX_DOUBLE,
165 "Significance cut on |z0*sin(theta)|"};
166
167 Gaudi::Property<int> m_minNInnermostLayerHits
168 {this, "minNInnermostLayerHits", -1,
169 "Required hits on the innermost pixel layer"};
171 {this, "minNNextToInnermostLayerHits", -1,
172 "Required hits on the next to innermost pixel layer"};
173 Gaudi::Property<int> m_minNBothInnermostLayersHits
174 {this, "minNBothInnermostLayersHits", -1,
175 "Required hits on two innermost pixel layers"};
177 {this, "maxNInnermostLayerSharedHits", LOCAL_MAX_INT,
178 "Maximum shared hits in innermost pixel layer"};
180 {this, "useMinBiasInnermostLayersCut", 0,
181 "IBL hit if expected, otherwise next layer hit if expected"};
182 Gaudi::Property<int> m_minNSiHits
183 {this, "minNSiHits", -1, "Minimum silicon (pixel + SCT) hits"};
184 Gaudi::Property<int> m_maxNSiSharedHits
185 {this, "maxNSiSharedHits", LOCAL_MAX_INT,
186 "Maximum silicon (pixel + SCT) sensors shared with other track"};
187 Gaudi::Property<int> m_minNSiHitsIfSiSharedHits
188 {this, "minNSiHitsIfSiSharedHits", -1,
189 "Minimum number of silicon hits if there are any shared silicon hits"};
190 Gaudi::Property<int> m_maxNSiHoles
191 {this, "maxNSiHoles", LOCAL_MAX_INT, "Maximum silicon (pixel + SCT) holes"};
192 Gaudi::Property<int> m_minNPixelHits
193 {this, "minNPixelHits", -1, "Required pixel hits"};
194 Gaudi::Property<int> m_maxNPixelSharedHits
195 {this, "maxNPixelSharedHits", LOCAL_MAX_INT,
196 "Maximum pixels shared with other tracks"};
197 Gaudi::Property<int> m_maxNPixelHoles
198 {this, "maxNPixelHoles", LOCAL_MAX_INT,
199 "Maximum number of missed layers in pixel"};
200
201 Gaudi::Property<double> m_minEtaForStrictNSiHitsCut
202 {this, "minEtaForStrictNSiHitsCut", LOCAL_MAX_DOUBLE,
203 "Eta cutoff for strict silicon hits cut"};
204 Gaudi::Property<int> m_minNSiHitsAboveEtaCutoff
205 {this, "minNSiHitsAboveEtaCutoff", -1,
206 "Minimum silicon hits at large pseudorapidity"};
207 Gaudi::Property<bool> m_maxOneSharedModule
208 {this, "maxOneSharedModule", false,
209 "Allow only 1 shared pixel hit or 2 shared SCT hits, not both"};
210 Gaudi::Property<bool> m_useEtaDependentMaxChiSq
211 {this, "useEtaDependentMaxChiSq", false,
212 "Whether or not to use the eta-dependent chi squared per degree of freedom cut"};
213
214 Gaudi::Property<int> m_minNSiHitsPhysical
215 {this, "minNSiHitsPhysical", -1,
216 "Minimum physical silicon hits (i.e. dead sensors do not count)"};
217 Gaudi::Property<int> m_minNPixelHitsPhysical
218 {this, "minNPixelHitsPhysical", -1, "Minimum physical pixel hits"};
219 Gaudi::Property<int> m_minNSctHitsPhysical
220 {this, "minNSctHitsPhysical", -1, "Minimum physical SCT hits"};
221 Gaudi::Property<int> m_minNSctHits
222 {this, "minNSctHits", -1, "Minimum SCT hits"};
223 Gaudi::Property<int> m_maxNSctSharedHits
224 {this, "maxNSctSharedHits", LOCAL_MAX_INT,
225 "Maximum SCT hits shared with other track"};
226 Gaudi::Property<int> m_maxNSctHoles
227 {this, "maxNSctHoles", LOCAL_MAX_INT, "Maximum SCT holes"};
228 Gaudi::Property<int> m_maxNSctDoubleHoles
229 {this, "maxNSctDoubleHoles", LOCAL_MAX_INT, "Maximum SCT double holes"};
230
231 Gaudi::Property<double> m_maxTrtEtaAcceptance
232 {this, "maxTrtEtaAcceptance", LOCAL_MAX_DOUBLE,
233 "Maximum eta that ignores TRT hit cuts"};
234 Gaudi::Property<double> m_maxEtaForTrtHitCuts
235 {this, "maxEtaForTrtHitCuts", -1.,
236 "Eta above which TRT hit cuts are not applied."};
237 Gaudi::Property<int> m_minNTrtHits{this, "minNTrtHits", -1, "Minimum TRT hits"};
238 Gaudi::Property<int> m_minNTrtHitsPlusOutliers
239 {this, "minNTrtHitsPlusOutliers", -1, "Minimum TRT hits including outliers"};
240 Gaudi::Property<int> m_minNTrtHighThresholdHits
241 {this, "minNTrtHighThresholdHits", -1, "Minimum high E TRT hits"};
243 {this, "minNTrtHighThresholdHitsPlusOutliers", -1,
244 "Minimum high E TRT hits including outliers"};
245 Gaudi::Property<double> m_maxTrtHighEFraction
246 {this, "maxTrtHighEFraction", LOCAL_MAX_DOUBLE,
247 "Maximum TRT hits that are above high energy threshold"};
248 Gaudi::Property<double> m_maxTrtHighEFractionWithOutliers
249 {this, "maxTrtHighEFractionWithOutliers", LOCAL_MAX_DOUBLE,
250 "Maximum TRT hits that are above high energy threshold including outliers"};
251 Gaudi::Property<double> m_maxTrtOutlierFraction
252 {this, "maxTrtOutlierFraction", LOCAL_MAX_DOUBLE,
253 "Maximum fraction of TRT outliers over TRT hits plus outliers"};
254
255 Gaudi::Property<double> m_maxChiSq
256 {this, "maxChiSq", LOCAL_MAX_DOUBLE, "Maximum chi squared"};
257 Gaudi::Property<double> m_maxChiSqperNdf
258 {this, "maxChiSqperNdf", LOCAL_MAX_DOUBLE,
259 "Maximum chi squared per degree of freedom"};
260 Gaudi::Property<double> m_minProb{this, "minProb", -1., "Minimum p(chi^2, Ndof)"};
261 Gaudi::Property<double> m_minPtForProbCut
262 {this, "minPtForProbCut", LOCAL_MAX_DOUBLE,
263 "Minimum pt for chi-sq probability cut"};
264 Gaudi::Property<double> m_minProbAbovePtCutoff
265 {this, "minProbAbovePtCutoff", -1.,
266 "Minimum chi-sq probability above a pt cutoff"};
267
268 Gaudi::Property<int> m_minNUsedHitsdEdx
269 {this, "minNUsedHitsdEdx", -1, "Minimum hits used for dEdx"};
270 Gaudi::Property<int> m_minNOverflowHitsdEdx
271 {this, "minNOverflowHitsdEdx", -1, "Minimum overflow hits in IBL for dEdx"};
272 Gaudi::Property<bool> m_eProbHTonlyForXe
273 {this, "eProbHTonlyForXe", false,
274 "Flag whether to apply the eProbabilityHT cut only when all TRT hits are Xenon"};
275 Gaudi::Property<double> m_minEProbabilityHT
276 {this, "minEProbabilityHT", -1.,
277 "Minimum High Threshold electron probability"};
278
280 {this, "useExperimentalInnermostLayersCut", false,
281 "Use the experimental cut on pixel holes"};
282
283#ifndef XAOD_ANALYSIS
284 Gaudi::Property<int> m_minNSiHitsMod
285 {this, "minNSiHitsMod", -1,
286 "Minimum number of Si hits, with pixel hits counting twice"};
287 Gaudi::Property<int> m_minNSiHitsModTop
288 {this, "minNSiHitsModTop", -1,
289 "Min number of Si hits on top half (pixel counting twice)"};
290 Gaudi::Property<int> m_minNSiHitsModBottom
291 {this, "minNSiHitsModBottom", -1,
292 "Min number of Si hits on bottom half (pixel counting twice)"};
293#endif
294
295 Gaudi::Property<std::vector<double>> m_vecEtaCutoffsForSiHitsCut
296 {this, "vecEtaCutoffsForSiHitsCut", {},
297 "Minimum eta cutoffs for each Silicon hit cut"};
298 Gaudi::Property<std::vector<int>> m_vecMinNSiHitsAboveEta
299 {this, "vecMinNSiHitsAboveEta", {},
300 "Minimum Silicon hits above each eta cutoff"};
301 Gaudi::Property<std::vector<double>> m_vecEtaCutoffsForPtCut
302 {this, "vecEtaCutoffsForPtCut", {}, "Minimum eta cutoffs for each pT cut"};
303 Gaudi::Property<std::vector<double>> m_vecMinPtAboveEta
304 {this, "vecMinPtAboveEta", {},
305 "Minimum transverse momentum above each eta cutoff"};
306
307 Gaudi::Property<std::vector<double>> m_vecPtCutoffsForSctHitsCut
308 {this, "vecPtCutoffsForSctHitsCut", {},
309 "Minimum pt cutoffs for each SCT hits"};
310 Gaudi::Property<std::vector<int>> m_vecMinNSctHitsAbovePt
311 {this, "vecMinNSctHitsAbovePt", {},
312 "Minimum SCT hits above each pt cutoff"};
313
314 Gaudi::Property<std::vector<double>> m_vecEtaCutoffsForZ0SinThetaCut
315 {this, "vecEtaCutoffsForZ0SinThetaCut", {},
316 "Minimum eta cutoffs for each Z0SinTheta value"};
317 Gaudi::Property<std::vector<double>> m_vecPtCutoffsForZ0SinThetaCut
318 {this, "vecPtCutoffsForZ0SinThetaCut", {},
319 "Minimum pt cutoffs for each Z0SinTheta value"};
320 Gaudi::Property<std::vector<std::vector<double>>> m_vecvecMaxZ0SinThetaAboveEtaPt
321 {this, "vecvecMaxZ0SinThetaAboveEtaPt", {},
322 "Maximum Z0SinTheta value above each eta and pT cutoff"};
323
324 Gaudi::Property<std::vector<double>> m_vecEtaCutoffsForD0Cut
325 {this, "vecEtaCutoffsForD0Cut", {}, "Minimum eta cutoffs for each D0 value"};
326 Gaudi::Property<std::vector<double>> m_vecPtCutoffsForD0Cut
327 {this, "vecPtCutoffsForD0Cut", {}, "Minimum pt cutoffs for each D0 value"};
328 Gaudi::Property<std::vector<std::vector<double>>> m_vecvecMaxD0AboveEtaPt
329 {this, "vecvecMaxD0AboveEtaPt", {},
330 "Maximum D0 value above each eta and pT cutoff"};
331
332 Gaudi::Property<std::vector<double>> m_vecEtaCutoffsForSctHolesCut
333 {this, "vecEtaCutoffsForSctHolesCut", {},
334 "Minimum eta cutoffs for each SctHoles value"};
335 Gaudi::Property<std::vector<double>> m_vecPtCutoffsForSctHolesCut
336 {this, "vecPtCutoffsForSctHolesCut", {},
337 "Minimum pt cutoffs for each SctHoles value"};
338 Gaudi::Property<std::vector<std::vector<double>>> m_vecvecMaxSctHolesAboveEtaPt
339 {this, "vecvecMaxSctHolesAboveEtaPt", {},
340 "Maximum SctHoles value above each eta and pT cutoff"};
341
342 Gaudi::Property<std::vector<double>> m_vecEtaCutoffsForSctHitsPlusDeadCut
343 {this, "vecEtaCutoffsForSctHitsPlusDeadCut", {},
344 "Minimum eta cutoffs for each SctHitsPlusDead value"};
345 Gaudi::Property<std::vector<double>> m_vecPtCutoffsForSctHitsPlusDeadCut
346 {this, "vecPtCutoffsForSctHitsPlusDeadCut", {},
347 "Minimum pt cutoffs for each SctHitsPlusDead value"};
348 Gaudi::Property<std::vector<std::vector<double>>> m_vecvecMinSctHitsPlusDeadAboveEtaPt
349 {this, "vecvecMinSctHitsPlusDeadAboveEtaPt", {},
350 "Minimum SctHitsPlusDead value above each eta and pT cutoff"};
351
354
355 // to set to a pre-defined cut level in Athena, we need to save the cut level
356 // as a string so we can do a soft set in initialize()
357 Gaudi::Property<std::string> m_cutLevel{this, "CutLevel", ""};
358
359 // we need a map from strings (for use in Athena) to the CutLevel enum
360 static const std::unordered_map<std::string, CutLevel> s_mapCutLevel;
361
362#ifndef XAOD_ANALYSIS
363 Gaudi::Property<bool> m_initTrkTools{this, "UseTrkTrackTools", false, "Whether to initialize the Trk::Track tools"};
365 ToolHandle<Trk::ITrackSummaryTool> m_trackSumTool
366 {this, "TrackSummaryTool", "Trk::TrackSummaryTool/TrackSummaryTool"};
367 ToolHandle<Trk::IExtrapolator> m_extrapolator
368 {this, "Extrapolator", "Trk::Extrapolator/Extrapolator"};
369
370#endif // XAOD_ANALYSIS
371
372 }; // class InDetTrackSelectionTool
373
374} // namespace InDet
375
376#endif // INDETTRACKSELECTIONTOOL_INDETTRACKSELECTIONTOOL_H
#define ASG_TOOL_CLASS2(CLASSNAME, INT1, INT2)
__attribute__((always_inline)) inline uint16_t TileCalibDrawerBase
Object to encode the result of several cuts.
Interface for track selection tool.
Implementation of the track selector tool.
Gaudi::Property< std::vector< double > > m_vecEtaCutoffsForSctHitsPlusDeadCut
Gaudi::Property< std::vector< double > > m_vecEtaCutoffsForSiHitsCut
Gaudi::Property< double > m_maxTrtHighEFraction
std::unordered_map< std::string, std::shared_ptr< TrackAccessor > > m_trackAccessors
list of the accessors that need to be run for each track
ToolHandle< Trk::ITrackSummaryTool > m_trackSumTool
Gaudi::Property< int > m_minNSiHitsAboveEtaCutoff
Gaudi::Property< bool > m_eProbHTonlyForXe
Gaudi::Property< std::vector< std::vector< double > > > m_vecvecMaxSctHolesAboveEtaPt
Gaudi::Property< double > m_minEtaForStrictNSiHitsCut
static bool maxDoubleIsSet(double cutValue)
Gaudi::Property< int > m_maxNSctDoubleHoles
std::atomic< uint64_t > m_numTracksPassed
a counter of the number of tracks that passed all cuts
virtual const asg::AcceptInfo & getAcceptInfo() const override
Get an object describing the "selection steps" of the tool.
Gaudi::Property< double > m_maxZ0SinThetaoverSigmaZ0SinTheta
Gaudi::Property< int > m_minNBothInnermostLayersHits
Gaudi::Property< std::vector< double > > m_vecEtaCutoffsForD0Cut
Gaudi::Property< double > m_maxZ0overSigmaZ0
StatusCode setupCuts(std::map< std::string, std::vector< std::function< bool(Trk_Helper helper, const asg::AsgMessaging &msgHelper)> > > &trackCuts)
Gaudi::Property< int > m_minNPixelHitsPhysical
virtual asg::AcceptData accept(const xAOD::IParticle *) const override
Get the decision using a generic IParticle pointer.
Gaudi::Property< int > m_minNSiHitsPhysical
Gaudi::Property< double > m_minPtForProbCut
Gaudi::Property< std::vector< std::vector< double > > > m_vecvecMaxZ0SinThetaAboveEtaPt
Gaudi::Property< double > m_maxSigmaZ0SinTheta
Gaudi::Property< bool > m_useExperimentalInnermostLayersCut
Gaudi::Property< double > m_maxD0overSigmaD0
Gaudi::Property< std::vector< double > > m_vecPtCutoffsForSctHitsPlusDeadCut
Gaudi::Property< std::string > m_cutLevel
The string version of the cut level so that it can be set via jobOptions.
Gaudi::Property< std::vector< double > > m_vecPtCutoffsForD0Cut
std::vector< uint64_t > m_numTracksPassedCuts ATLAS_THREAD_SAFE
tracks the number of tracks that passed each cut family.
Gaudi::Property< int > m_minNSiHitsIfSiSharedHits
std::atomic< uint64_t > m_numTracksProcessed
a counter of the number of tracks proccessed
Gaudi::Property< double > m_maxSigmaD0
Gaudi::Property< std::vector< double > > m_vecPtCutoffsForSctHitsCut
Gaudi::Property< int > m_minNInnermostLayerHits
Gaudi::Property< std::vector< std::vector< double > > > m_vecvecMinSctHitsPlusDeadAboveEtaPt
virtual StatusCode finalize() override
Function finalizing the tool.
virtual StatusCode initialize() override
Function initialising the tool.
Gaudi::Property< double > m_minEProbabilityHT
Gaudi::Property< int > m_useMinBiasInnermostLayersCut
Gaudi::Property< double > m_maxEtaForTrtHitCuts
asg::AcceptInfo m_acceptInfo
Object used to store the last decision.
Gaudi::Property< int > m_minNSiHitsModBottom
ToolHandle< Trk::IExtrapolator > m_extrapolator
std::unique_ptr< asg::AsgMessaging > m_msgHelper
Gaudi::Property< int > m_maxNInnermostLayerSharedHits
Gaudi::Property< bool > m_useEtaDependentMaxChiSq
Gaudi::Property< int > m_minNOverflowHitsdEdx
Gaudi::Property< double > m_maxAbsEta
std::map< std::string, std::vector< std::function< bool(InDetAccessor::TrackParticleHelper helper, const asg::AsgMessaging &msgHelper)> > > m_trackParticleCuts
First element is the name of the cut family, second element is the set of cuts.
Gaudi::Property< bool > m_maxOneSharedModule
bool m_trackSumToolAvailable
Whether the summary tool is available.
Gaudi::Property< std::vector< double > > m_vecEtaCutoffsForPtCut
std::map< std::string, std::vector< std::function< bool(InDetAccessor::TrkTrackHelper helper, const asg::AsgMessaging &msgHelper)> > > m_trkTrackCuts
First element is the name of the cut family, second element is the set of cuts.
Gaudi::Property< std::vector< double > > m_vecEtaCutoffsForSctHolesCut
Gaudi::Property< int > m_minNSctHitsPhysical
Gaudi::Property< double > m_minProbAbovePtCutoff
Gaudi::Property< std::vector< double > > m_vecPtCutoffsForSctHolesCut
Gaudi::Property< int > m_minNTrtHighThresholdHitsPlusOutliers
Gaudi::Property< double > m_maxChiSqperNdf
Gaudi::Property< double > m_maxTrtOutlierFraction
Gaudi::Property< int > m_minNNextToInnermostLayerHits
Gaudi::Property< int > m_maxNPixelSharedHits
Gaudi::Property< double > m_maxZ0SinTheta
Gaudi::Property< int > m_minNTrtHighThresholdHits
Gaudi::Property< std::vector< double > > m_vecMinPtAboveEta
Gaudi::Property< std::vector< int > > m_vecMinNSctHitsAbovePt
static const std::unordered_map< std::string, CutLevel > s_mapCutLevel
ASG_TOOL_CLASS2(InDetTrackSelectionTool, IAsgSelectionTool, InDet::IInDetTrackSelectionTool) public ~InDetTrackSelectionTool()
Create a proper constructor for Athena.
static bool maxIntIsSet(int cutValue)
Gaudi::Property< std::vector< int > > m_vecMinNSiHitsAboveEta
Gaudi::Property< int > m_minNTrtHitsPlusOutliers
virtual void setCutLevel(InDet::CutLevel level, bool overwrite=true) override __attribute__((deprecated("For consistency with the athena interface
Function to set the cut level within standalone ROOT.
Gaudi::Property< double > m_maxTrtEtaAcceptance
Gaudi::Property< std::vector< double > > m_vecPtCutoffsForZ0SinThetaCut
Gaudi::Property< double > m_maxTrtHighEFractionWithOutliers
void setCutLevelPrivate(InDet::CutLevel level, bool overwrite=true)
Gaudi::Property< double > m_maxSigmaZ0
Gaudi::Property< std::vector< std::vector< double > > > m_vecvecMaxD0AboveEtaPt
Gaudi::Property< std::vector< double > > m_vecEtaCutoffsForZ0SinThetaCut
This class is a simplest representation of a vertex candidate.
Class mimicking the AthMessaging class from the offline software.
Base class for the dual-use tool implementation classes.
Definition AsgTool.h:47
STL class.
STL class.
Class providing the definition of the 4-vector interface.
Primary Vertex Finder.
STL namespace.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Vertex_v1 Vertex
Define the latest version of the vertex class.
#define private