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