ATLAS Offline Software
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 
34 namespace InDetAccessor {
35 
36  class TrackParticleHelper;
37 
38 #ifndef XAOD_ANALYSIS
39  class TrkTrackHelper;
40 #endif
41 }
42 
43 namespace 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 
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;
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;
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|"};
163  Gaudi::Property<double> m_maxZ0SinThetaoverSigmaZ0SinTheta
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"};
170  Gaudi::Property<int> m_minNNextToInnermostLayerHits
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"};
176  Gaudi::Property<int> m_maxNInnermostLayerSharedHits
177  {this, "maxNInnermostLayerSharedHits", LOCAL_MAX_INT,
178  "Maximum shared hits in innermost pixel layer"};
179  Gaudi::Property<int> m_useMinBiasInnermostLayersCut
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"};
364  bool m_trackSumToolAvailable = false;
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
InDet::InDetTrackSelectionTool::m_minNPixelHits
Gaudi::Property< int > m_minNPixelHits
Definition: InDetTrackSelectionTool.h:193
InDet::InDetTrackSelectionTool::m_minNSiHitsPhysical
Gaudi::Property< int > m_minNSiHitsPhysical
Definition: InDetTrackSelectionTool.h:215
InDet::InDetTrackSelectionTool::m_maxTrtHighEFraction
Gaudi::Property< double > m_maxTrtHighEFraction
Definition: InDetTrackSelectionTool.h:246
InDet::InDetTrackSelectionTool::m_maxNSctDoubleHoles
Gaudi::Property< int > m_maxNSctDoubleHoles
Definition: InDetTrackSelectionTool.h:229
InDet::InDetTrackSelectionTool::m_maxD0
Gaudi::Property< double > m_maxD0
Definition: InDetTrackSelectionTool.h:152
Trk::Vertex
Definition: Tracking/TrkEvent/VxVertex/VxVertex/Vertex.h:26
InDet::InDetTrackSelectionTool::m_minPt
Gaudi::Property< double > m_minPt
Definition: InDetTrackSelectionTool.h:142
InDetAccessor
Definition: InDetTrackSelectionTool.h:34
athena
Definition: athena.py:1
ITrackSummaryTool.h
InDet::InDetTrackSelectionTool::m_trackSumTool
ToolHandle< Trk::ITrackSummaryTool > m_trackSumTool
Definition: InDetTrackSelectionTool.h:366
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
PropertyWrapper.h
InDet::InDetTrackSelectionTool::m_maxNSiHoles
Gaudi::Property< int > m_maxNSiHoles
Definition: InDetTrackSelectionTool.h:191
InDet::InDetTrackSelectionTool::getAcceptInfo
virtual const asg::AcceptInfo & getAcceptInfo() const override
Get an object describing the "selection steps" of the tool.
Definition: InDetTrackSelectionTool.cxx:989
InDet::InDetTrackSelectionTool::m_minNSiHitsAboveEtaCutoff
Gaudi::Property< int > m_minNSiHitsAboveEtaCutoff
Definition: InDetTrackSelectionTool.h:205
InDet::InDetTrackSelectionTool::m_minNTrtHighThresholdHitsPlusOutliers
Gaudi::Property< int > m_minNTrtHighThresholdHitsPlusOutliers
Definition: InDetTrackSelectionTool.h:243
InDet::InDetTrackSelectionTool::m_maxEtaForTrtHitCuts
Gaudi::Property< double > m_maxEtaForTrtHitCuts
Definition: InDetTrackSelectionTool.h:235
InDet::InDetTrackSelectionTool::m_warnInit
std::atomic_bool m_warnInit
Definition: InDetTrackSelectionTool.h:110
InDet::InDetTrackSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *) const override
Get the decision using a generic IParticle pointer.
Definition: InDetTrackSelectionTool.cxx:1006
InDet::InDetTrackSelectionTool::m_vecEtaCutoffsForD0Cut
Gaudi::Property< std::vector< double > > m_vecEtaCutoffsForD0Cut
Definition: InDetTrackSelectionTool.h:325
InDet::InDetTrackSelectionTool::m_maxNSiSharedHits
Gaudi::Property< int > m_maxNSiSharedHits
Definition: InDetTrackSelectionTool.h:185
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
InDet::InDetTrackSelectionTool::m_initTrkTools
Gaudi::Property< bool > m_initTrkTools
Definition: InDetTrackSelectionTool.h:363
InDet::InDetTrackSelectionTool::m_trkTrackCuts
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.
Definition: InDetTrackSelectionTool.h:129
InDet::InDetTrackSelectionTool::m_minNNextToInnermostLayerHits
Gaudi::Property< int > m_minNNextToInnermostLayerHits
Definition: InDetTrackSelectionTool.h:171
InDet::InDetTrackSelectionTool::m_minNOverflowHitsdEdx
Gaudi::Property< int > m_minNOverflowHitsdEdx
Definition: InDetTrackSelectionTool.h:271
InDet::InDetTrackSelectionTool::setCutLevelPrivate
void setCutLevelPrivate(InDet::CutLevel level, bool overwrite=true)
Definition: InDetTrackSelectionTool.cxx:1166
InDet::InDetTrackSelectionTool::m_vecvecMaxZ0SinThetaAboveEtaPt
Gaudi::Property< std::vector< std::vector< double > > > m_vecvecMaxZ0SinThetaAboveEtaPt
Definition: InDetTrackSelectionTool.h:321
InDet::InDetTrackSelectionTool::m_maxTrtEtaAcceptance
Gaudi::Property< double > m_maxTrtEtaAcceptance
Definition: InDetTrackSelectionTool.h:232
InDet::InDetTrackSelectionTool::LOCAL_MAX_DOUBLE
constexpr static double LOCAL_MAX_DOUBLE
Definition: InDetTrackSelectionTool.h:139
ASG_TOOL_CLASS2
#define ASG_TOOL_CLASS2(CLASSNAME, INT1, INT2)
Definition: AsgToolMacros.h:77
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
InDet::InDetTrackSelectionTool::m_minNSiHits
Gaudi::Property< int > m_minNSiHits
Definition: InDetTrackSelectionTool.h:183
InDet
Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
InDet::InDetTrackSelectionTool::setCutLevel
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.
Definition: InDetTrackSelectionTool.cxx:1151
InDet::InDetTrackSelectionTool::m_minEProbabilityHT
Gaudi::Property< double > m_minEProbabilityHT
Definition: InDetTrackSelectionTool.h:276
InDet::InDetTrackSelectionTool::property
virtual void the cut level is best set through the CutLevel property
Definition: InDetTrackSelectionTool.h:106
InDet::InDetTrackSelectionTool::m_vecvecMaxD0AboveEtaPt
Gaudi::Property< std::vector< std::vector< double > > > m_vecvecMaxD0AboveEtaPt
Definition: InDetTrackSelectionTool.h:329
InDet::InDetTrackSelectionTool::m_maxZ0SinThetaoverSigmaZ0SinTheta
Gaudi::Property< double > m_maxZ0SinThetaoverSigmaZ0SinTheta
Definition: InDetTrackSelectionTool.h:164
taskman.template
dictionary template
Definition: taskman.py:314
asg
Definition: DataHandleTestTool.h:28
InDet::InDetTrackSelectionTool::initialize
virtual StatusCode initialize() override
Function initialising the tool.
Definition: InDetTrackSelectionTool.cxx:103
InDet::InDetTrackSelectionTool::m_maxZ0overSigmaZ0
Gaudi::Property< double > m_maxZ0overSigmaZ0
Definition: InDetTrackSelectionTool.h:162
InDetAccessor::TrackParticleHelper
Definition: InDetAccessor.h:50
InDet::InDetTrackSelectionTool::m_vecvecMaxSctHolesAboveEtaPt
Gaudi::Property< std::vector< std::vector< double > > > m_vecvecMaxSctHolesAboveEtaPt
Definition: InDetTrackSelectionTool.h:339
InDet::InDetTrackSelectionTool::m_vecPtCutoffsForZ0SinThetaCut
Gaudi::Property< std::vector< double > > m_vecPtCutoffsForZ0SinThetaCut
Definition: InDetTrackSelectionTool.h:318
InDet::InDetTrackSelectionTool::m_vecEtaCutoffsForZ0SinThetaCut
Gaudi::Property< std::vector< double > > m_vecEtaCutoffsForZ0SinThetaCut
Definition: InDetTrackSelectionTool.h:315
IExtrapolator.h
InDet::InDetTrackSelectionTool::m_maxD0overSigmaD0
Gaudi::Property< double > m_maxD0overSigmaD0
Definition: InDetTrackSelectionTool.h:160
InDet::InDetTrackSelectionTool::m_maxTrtHighEFractionWithOutliers
Gaudi::Property< double > m_maxTrtHighEFractionWithOutliers
Definition: InDetTrackSelectionTool.h:249
InDet::InDetTrackSelectionTool::m_useExperimentalInnermostLayersCut
Gaudi::Property< bool > m_useExperimentalInnermostLayersCut
Definition: InDetTrackSelectionTool.h:280
InDet::InDetTrackSelectionTool::s_mapCutLevel
static const std::unordered_map< std::string, CutLevel > s_mapCutLevel
Definition: InDetTrackSelectionTool.h:360
InDet::InDetTrackSelectionTool::m_minNSiHitsModBottom
Gaudi::Property< int > m_minNSiHitsModBottom
Definition: InDetTrackSelectionTool.h:291
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
InDet::InDetTrackSelectionTool::setupCuts
StatusCode setupCuts(std::map< std::string, std::vector< std::function< bool(Trk_Helper helper, const asg::AsgMessaging &msgHelper)> > > &trackCuts)
Definition: InDetTrackSelectionTool.cxx:180
IAsgSelectionTool
Definition: IAsgSelectionTool.h:28
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
InDet::InDetTrackSelectionTool::m_minPtForProbCut
Gaudi::Property< double > m_minPtForProbCut
Definition: InDetTrackSelectionTool.h:262
InDet::InDetTrackSelectionTool::m_minNTrtHitsPlusOutliers
Gaudi::Property< int > m_minNTrtHitsPlusOutliers
Definition: InDetTrackSelectionTool.h:239
InDet::InDetTrackSelectionTool::m_mutex
std::mutex m_mutex
Definition: InDetTrackSelectionTool.h:135
InDet::InDetTrackSelectionTool::m_minNSiHitsIfSiSharedHits
Gaudi::Property< int > m_minNSiHitsIfSiSharedHits
Definition: InDetTrackSelectionTool.h:188
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
InDet::IInDetTrackSelectionTool
Interface for track selection tool.
Definition: IInDetTrackSelectionTool.h:51
runBeamSpotCalibration.helper
helper
Definition: runBeamSpotCalibration.py:115
InDet::InDetTrackSelectionTool::m_maxChiSqperNdf
Gaudi::Property< double > m_maxChiSqperNdf
Definition: InDetTrackSelectionTool.h:258
AsgMessaging.h
InDet::InDetTrackSelectionTool::m_maxNSctSharedHits
Gaudi::Property< int > m_maxNSctSharedHits
Definition: InDetTrackSelectionTool.h:224
InDet::InDetTrackSelectionTool::m_numTracksProcessed
std::atomic< uint64_t > m_numTracksProcessed
a counter of the number of tracks proccessed
Definition: InDetTrackSelectionTool.h:132
InDet::InDetTrackSelectionTool::m_numTracksPassed
std::atomic< uint64_t > m_numTracksPassed
a counter of the number of tracks that passed all cuts
Definition: InDetTrackSelectionTool.h:133
InDet::InDetTrackSelectionTool::m_vecEtaCutoffsForPtCut
Gaudi::Property< std::vector< double > > m_vecEtaCutoffsForPtCut
Definition: InDetTrackSelectionTool.h:302
asg::AcceptInfo
Definition: AcceptInfo.h:28
InDet::InDetTrackSelectionTool::m_maxNInnermostLayerSharedHits
Gaudi::Property< int > m_maxNInnermostLayerSharedHits
Definition: InDetTrackSelectionTool.h:177
InDet::InDetTrackSelectionTool::m_maxNPixelHoles
Gaudi::Property< int > m_maxNPixelHoles
Definition: InDetTrackSelectionTool.h:198
InDet::InDetTrackSelectionTool::m_maxSigmaZ0
Gaudi::Property< double > m_maxSigmaZ0
Definition: InDetTrackSelectionTool.h:156
InDet::InDetTrackSelectionTool::m_minNInnermostLayerHits
Gaudi::Property< int > m_minNInnermostLayerHits
Definition: InDetTrackSelectionTool.h:168
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
vector
Definition: MultiHisto.h:13
InDet::InDetTrackSelectionTool::m_minNSctHits
Gaudi::Property< int > m_minNSctHits
Definition: InDetTrackSelectionTool.h:222
InDet::InDetTrackSelectionTool::m_vecMinNSiHitsAboveEta
Gaudi::Property< std::vector< int > > m_vecMinNSiHitsAboveEta
Definition: InDetTrackSelectionTool.h:299
InDet::InDetTrackSelectionTool::m_minNTrtHits
Gaudi::Property< int > m_minNTrtHits
Definition: InDetTrackSelectionTool.h:237
InDet::InDetTrackSelectionTool::m_minProb
Gaudi::Property< double > m_minProb
Definition: InDetTrackSelectionTool.h:260
InDet::InDetTrackSelectionTool::m_maxAbsEta
Gaudi::Property< double > m_maxAbsEta
Definition: InDetTrackSelectionTool.h:146
BindingsTest.cut
cut
This script demonstrates how to call a C++ class from Python Also how to use PyROOT is shown.
Definition: BindingsTest.py:13
InDet::InDetTrackSelectionTool::TrackCut
friend class TrackCut
Definition: InDetTrackSelectionTool.h:55
python.utils.best
def best(iterable, priorities=[3, 2, 1, -1, 0])
Definition: DataQuality/DQUtils/python/utils.py:49
InDet::InDetTrackSelectionTool::m_useMinBiasInnermostLayersCut
Gaudi::Property< int > m_useMinBiasInnermostLayersCut
Definition: InDetTrackSelectionTool.h:180
InDet::InDetTrackSelectionTool::m_eProbHTonlyForXe
Gaudi::Property< bool > m_eProbHTonlyForXe
Definition: InDetTrackSelectionTool.h:273
InDet::InDetTrackSelectionTool::m_cutLevel
Gaudi::Property< std::string > m_cutLevel
The string version of the cut level so that it can be set via jobOptions.
Definition: InDetTrackSelectionTool.h:357
InDet::InDetTrackSelectionTool::m_minP
Gaudi::Property< double > m_minP
Definition: InDetTrackSelectionTool.h:143
InDet::InDetTrackSelectionTool::maxIntIsSet
static bool maxIntIsSet(int cutValue)
Definition: InDetTrackSelectionTool.h:138
InDet::InDetTrackSelectionTool::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: InDetTrackSelectionTool.h:368
InDet::InDetTrackSelectionTool::m_minProbAbovePtCutoff
Gaudi::Property< double > m_minProbAbovePtCutoff
Definition: InDetTrackSelectionTool.h:265
InDet::InDetTrackSelectionTool::m_maxZ0SinTheta
Gaudi::Property< double > m_maxZ0SinTheta
Definition: InDetTrackSelectionTool.h:148
IInDetTrackSelectionTool.h
InDet::InDetTrackSelectionTool::m_vecPtCutoffsForSctHitsCut
Gaudi::Property< std::vector< double > > m_vecPtCutoffsForSctHitsCut
Definition: InDetTrackSelectionTool.h:308
CxxUtils::set
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.
Definition: bitmask.h:232
InDet::InDetTrackSelectionTool::m_isInitialized
bool m_isInitialized
Definition: InDetTrackSelectionTool.h:109
InDet::InDetTrackSelectionTool::m_minNPixelHitsPhysical
Gaudi::Property< int > m_minNPixelHitsPhysical
Definition: InDetTrackSelectionTool.h:218
InDet::InDetTrackSelectionTool::m_maxChiSq
Gaudi::Property< double > m_maxChiSq
Definition: InDetTrackSelectionTool.h:256
InDet::InDetTrackSelectionTool::m_trackAccessors
std::unordered_map< std::string, std::shared_ptr< TrackAccessor > > m_trackAccessors
list of the accessors that need to be run for each track
Definition: InDetTrackSelectionTool.h:122
InDet::InDetTrackSelectionTool::finalize
virtual StatusCode finalize() override
Function finalizing the tool.
Definition: InDetTrackSelectionTool.cxx:958
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
InDet::InDetTrackSelectionTool::m_vecMinPtAboveEta
Gaudi::Property< std::vector< double > > m_vecMinPtAboveEta
Definition: InDetTrackSelectionTool.h:304
asg::AsgMessaging
Class mimicking the AthMessaging class from the offline software.
Definition: AsgMessaging.h:40
InDet::InDetTrackSelectionTool::maxDoubleIsSet
static bool maxDoubleIsSet(double cutValue)
Definition: InDetTrackSelectionTool.h:137
InDet::InDetTrackSelectionTool::m_maxNSctHoles
Gaudi::Property< int > m_maxNSctHoles
Definition: InDetTrackSelectionTool.h:227
runJobs.deprecated
deprecated
Definition: runJobs.py:190
InDet::InDetTrackSelectionTool::m_vecPtCutoffsForD0Cut
Gaudi::Property< std::vector< double > > m_vecPtCutoffsForD0Cut
Definition: InDetTrackSelectionTool.h:327
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
InDet::InDetTrackSelectionTool::m_minNSiHitsMod
Gaudi::Property< int > m_minNSiHitsMod
Definition: InDetTrackSelectionTool.h:285
InDet::InDetTrackSelectionTool::m_minNBothInnermostLayersHits
Gaudi::Property< int > m_minNBothInnermostLayersHits
Definition: InDetTrackSelectionTool.h:174
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
InDet::InDetTrackSelectionTool::m_msgHelper
std::unique_ptr< asg::AsgMessaging > m_msgHelper
Definition: InDetTrackSelectionTool.h:124
InDet::InDetTrackSelectionTool::m_maxTrtOutlierFraction
Gaudi::Property< double > m_maxTrtOutlierFraction
Definition: InDetTrackSelectionTool.h:252
InDetAccessor::TrkTrackHelper
Definition: InDetAccessor.h:71
InDet::InDetTrackSelectionTool::m_vecMinNSctHitsAbovePt
Gaudi::Property< std::vector< int > > m_vecMinNSctHitsAbovePt
Definition: InDetTrackSelectionTool.h:311
AcceptData
Object to encode the result of several cuts.
InDet::InDetTrackSelectionTool::m_maxSigmaD0
Gaudi::Property< double > m_maxSigmaD0
Definition: InDetTrackSelectionTool.h:154
InDet::InDetTrackSelectionTool::m_minNTrtHighThresholdHits
Gaudi::Property< int > m_minNTrtHighThresholdHits
Definition: InDetTrackSelectionTool.h:241
InDet::InDetTrackSelectionTool::m_minNUsedHitsdEdx
Gaudi::Property< int > m_minNUsedHitsdEdx
Definition: InDetTrackSelectionTool.h:269
InDet::InDetTrackSelectionTool::m_trackSumToolAvailable
bool m_trackSumToolAvailable
Whether the summary tool is available.
Definition: InDetTrackSelectionTool.h:364
InDet::InDetTrackSelectionTool::m_acceptInfo
asg::AcceptInfo m_acceptInfo
Object used to store the last decision.
Definition: InDetTrackSelectionTool.h:353
InDet::InDetTrackSelectionTool
Implementation of the track selector tool.
Definition: InDetTrackSelectionTool.h:53
InDet::InDetTrackSelectionTool::m_vecEtaCutoffsForSctHolesCut
Gaudi::Property< std::vector< double > > m_vecEtaCutoffsForSctHolesCut
Definition: InDetTrackSelectionTool.h:333
InDet::InDetTrackSelectionTool::ATLAS_THREAD_SAFE
std::vector< uint64_t > m_numTracksPassedCuts ATLAS_THREAD_SAFE
tracks the number of tracks that passed each cut family.
Definition: InDetTrackSelectionTool.h:134
private
#define private
Definition: xAODTruthCnvAlg.h:20
InDet::InDetTrackSelectionTool::m_maxSigmaZ0SinTheta
Gaudi::Property< double > m_maxSigmaZ0SinTheta
Definition: InDetTrackSelectionTool.h:158
InDet::InDetTrackSelectionTool::m_vecEtaCutoffsForSiHitsCut
Gaudi::Property< std::vector< double > > m_vecEtaCutoffsForSiHitsCut
Definition: InDetTrackSelectionTool.h:296
InDet::InDetTrackSelectionTool::m_minEtaForStrictNSiHitsCut
Gaudi::Property< double > m_minEtaForStrictNSiHitsCut
Definition: InDetTrackSelectionTool.h:202
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:44
columnar::TrackAccessor
AccessorTemplate< ContainerId::track, CT, ColumnAccessMode::input, CM > TrackAccessor
Definition: TrackDef.h:48
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:13
InDet::InDetTrackSelectionTool::m_vecPtCutoffsForSctHolesCut
Gaudi::Property< std::vector< double > > m_vecPtCutoffsForSctHolesCut
Definition: InDetTrackSelectionTool.h:336
AsgTool.h
asg::AcceptData
Definition: AcceptData.h:30
InDet::InDetTrackSelectionTool::m_maxZ0
Gaudi::Property< double > m_maxZ0
Definition: InDetTrackSelectionTool.h:150
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
InDet::InDetTrackSelectionTool::m_vecEtaCutoffsForSctHitsPlusDeadCut
Gaudi::Property< std::vector< double > > m_vecEtaCutoffsForSctHitsPlusDeadCut
Definition: InDetTrackSelectionTool.h:343
InDet::InDetTrackSelectionTool::m_vecvecMinSctHitsPlusDeadAboveEtaPt
Gaudi::Property< std::vector< std::vector< double > > > m_vecvecMinSctHitsPlusDeadAboveEtaPt
Definition: InDetTrackSelectionTool.h:349
InDet::InDetTrackSelectionTool::m_trackParticleCuts
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.
Definition: InDetTrackSelectionTool.h:126
InDet::InDetTrackSelectionTool::m_maxOneSharedModule
Gaudi::Property< bool > m_maxOneSharedModule
Definition: InDetTrackSelectionTool.h:208
InDet::InDetTrackSelectionTool::m_vecPtCutoffsForSctHitsPlusDeadCut
Gaudi::Property< std::vector< double > > m_vecPtCutoffsForSctHitsPlusDeadCut
Definition: InDetTrackSelectionTool.h:346
InDet::InDetTrackSelectionTool::m_maxNPixelSharedHits
Gaudi::Property< int > m_maxNPixelSharedHits
Definition: InDetTrackSelectionTool.h:195
InDet::CutLevel
CutLevel
Definition: IInDetTrackSelectionTool.h:38
InDet::InDetTrackSelectionTool::m_minNSiHitsModTop
Gaudi::Property< int > m_minNSiHitsModTop
Definition: InDetTrackSelectionTool.h:288
InDet::InDetTrackSelectionTool::m_minNSctHitsPhysical
Gaudi::Property< int > m_minNSctHitsPhysical
Definition: InDetTrackSelectionTool.h:220
InDet::InDetTrackSelectionTool::LOCAL_MAX_INT
constexpr static int LOCAL_MAX_INT
Definition: InDetTrackSelectionTool.h:140
InDet::InDetTrackSelectionTool::m_useEtaDependentMaxChiSq
Gaudi::Property< bool > m_useEtaDependentMaxChiSq
Definition: InDetTrackSelectionTool.h:211