ATLAS Offline Software
Loading...
Searching...
No Matches
InDetDetailedTrackSelectorTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef InDetDetailedTrackSelectorTool_InDetDetailedTrackSelectorTool_H
6#define InDetDetailedTrackSelectorTool_InDetDetailedTrackSelectorTool_H
7
9#include "GaudiKernel/ToolHandle.h"
10#include "GaudiKernel/ServiceHandle.h"
14
15
21// MagField cache
24
25#include "CLHEP/Units/SystemOfUnits.h"
26
41
42
43
44namespace Trk
45{
46 class ITrackSummaryTool;
47 class IExtrapolator;
48 class Vertex;
49 class RecVertex;
50 class FitQuality;
51 class TrackSummary;
52 class Track;
53 class TrackParticleBase;
54}
55
56namespace InDet
57{
58 class ITrtDriftCircleCutTool;
59
61 {
62
63 public:
64
66
67 StatusCode initialize();
68
69 StatusCode finalize();
70
71 InDetDetailedTrackSelectorTool(const std::string& t, const std::string& n, const IInterface* p);
72
74
75 bool decision(const Trk::Track& track,const Trk::Vertex* vertex) const;
76
77 bool decision(const Trk::TrackParticleBase& track,const Trk::Vertex* vertex) const;
78
79 bool decision(const xAOD::TrackParticle& track,const xAOD::Vertex* vertex) const;
80
81 private:
83 uint8_t val;
84 if( !tp.summaryValue(val,type) ) return 0;
85 return val > 0 ? val : 0;
86 }
87 bool decision(const Trk::Perigee* track,const AmgSymMatrix(3)* covariancePosition) const;
88 bool decision(const Trk::FitQuality* TrkQuality) const;
89 bool decision(double chi2, int ndf ) const;
90 bool decision(const Trk::TrackSummary* summary,
91 const xAOD::TrackParticle* tp,
92 bool useSharedHitInfo,
93 bool useTrtHitInfo,
94 const Trk::Perigee* track,
95 const int nHitTrt,
96 const int nHitTrtPlusOutliers) const;
97
98 bool preselectionBeforeExtrapolation(const Trk::Perigee & myPerigee) const;
100
101 DoubleProperty m_pTMin{this, "pTMin", 1.*CLHEP::GeV, "min. pT: |pT|>pTMin"};
102 DoubleProperty m_pMin{this, "pMin", 0., "min. p = pT/cos(theta): |p| > pMin"};
103 DoubleProperty m_IPd0Max{this, "IPd0Max", 2.*CLHEP::mm, "max. d0: |d0|<d0Max"};
104 DoubleProperty m_IPz0Max{this, "IPz0Max", 1.5*CLHEP::mm, "max. z0: |z0*sin(theta)|<z0Max"};
105 DoubleProperty m_z0Max{this, "z0Max", 9999.*CLHEP::mm, "max. z0: |z0|<z0Max"};
106 DoubleProperty m_sigIPd0Max{this, "sigIPd0Max", 999.*CLHEP::mm, "max d0 error"};
107 DoubleProperty m_sigIPz0Max
108 {this, "sigIPz0Max", 999.*CLHEP::mm, "max (error only due to z0)*sin(theta)"};
109 DoubleProperty m_d0significanceMax
110 {this, "d0significanceMax", -1., "max IP significance d0 (-1 switches it off)"};
111 DoubleProperty m_z0significanceMax
112 {this, "z0significanceMax", -1., "max IP significance z0 (-1 switches it off)"};
113 DoubleProperty m_etaMax{this, "etaMax", 9999., "max. pseudo-rapidity"};
114
115 //<! if false the following cuts are ignored
116 BooleanProperty m_useTrackSummaryInfo{this, "useTrackSummaryInfo", true};
117 IntegerProperty m_nHitBLayer
118 {this, "nHitBLayer", 1, "at least n hits in Blayer"};
119 IntegerProperty m_nHitPix{this, "nHitPix", 2, "at least n hits in pixels"};
120 IntegerProperty m_nHitSct{this, "nHitSct", 0, "at least n hits in SCT"};
121 IntegerProperty m_nHitSi{this, "nHitSi", 7, "at least n hits in pixels+SCT"};
122 IntegerProperty m_nHitPixPhysical
123 {this, "nHitPixPhysical", 0, "at least n physical hits in pixel"};
124 IntegerProperty m_nHitSiPhysical
125 {this, "nHitSiPhysical", 3, "at least n physical hits in pixel+SCT"};
126 IntegerProperty m_nHitTrt{this, "nHitTrt", 0, "at least n hits in TRT"};
127 IntegerProperty m_nHitTrtPlusOutliers
128 {this, "nHitTrtPlusOutliers", 0,
129 "at least n hits in TRT (including outliers)"};
130
131 //<! for selecting electrons (soft E-ID)
132 IntegerProperty m_nHitTrtHighE
133 {this, "nHitTrtHighE", 0, "at least n high threshold hits in TRT"};
135 {this, "nHitTrtPlusOutliersHighE", 0,
136 "at least n high threshold hits in TRT (including outliers)"};
137 //<! for rejecting electrons (tau-ID)
139 {this, "nHitTrtHighEFractionMax", 999., "maximum x fraction of transition hits in TRT"};
141 {this, "nHitTrtHighEFractionWithOutliersMax", 999.,
142 "maximum x fraction of transition hits in TRT (including outliers)"};
143
145 {this, "TrtMaxEtaAcceptance", 999.,
146 "limit of eta regions where trt hits are expected"};
147
148 //<! if false the following cuts are ignored
149 BooleanProperty m_useSharedHitInfo{this, "useSharedHitInfo", false};
150 IntegerProperty m_nSharedBLayer
151 {this, "nSharedBLayer", 0, "max. number of shared hits in B layer"};
152 IntegerProperty m_nSharedPix
153 {this, "nSharedPix", 0, "max. number of shared hits in pixels"};
154 IntegerProperty m_nSharedSct
155 {this, "nSharedSct", 1, "max. number of shared hits in SCT"};
156 IntegerProperty m_nSharedSi
157 {this, "nSharedSi", 999, "max. number of shared hits in pixels+SCT"};
158
159 IntegerProperty m_nHoles
160 {this, "nHoles", 999, "max. number of holes in pixel+SCT"};
161 IntegerProperty m_nDoubleHoles
162 {this, "nDoubleHoles", 999, "max number of double-holes in SCT"};
163 IntegerProperty m_nHolesPix
164 {this, "nHolesPixel", 999, "max. number of holes in pixels"};
165 IntegerProperty m_nHolesSct
166 {this, "nHolesSct", 999, "max. number of holes in SCT"};
167
168 //<! if false the following cuts are ignored
169 BooleanProperty m_useTrackQualityInfo{this, "useTrackQualityInfo", true};
170 DoubleProperty m_fitChi2{this, "fitChi2", 99999., "max. fit chi2"};
171 DoubleProperty m_fitProb{this, "fitProb", -1., "min. fit chi2 probability"};
172 DoubleProperty m_fitChi2OnNdfMax{this, "fitChi2OnNdfMax", 999., "max. fitchi2/ndf"};
173
174 DoubleProperty m_scaleMinHitTrt
175 {this, "scaleMinHitTrt", 1.,
176 "scale the eta dependent minimum number of TRT hits; scaling is only applied if m_addToMinHitTrt==0"};
177 IntegerProperty m_addToMinHitTrt
178 {this, "addToMinHitTrt", 0,
179 "add to/subtract from eta dependent minimum nimber of TRT hits"};
181 {this, "scaleMinHitTrtWithOutliers", 1.,
182 "scale the eta dependent minimum number of TRT hits + outliers; scaling is only applied if m_addToMinHitTrtWithOutliers==0"};
184 {this, "addToMinHitTrtWithOutliers", 0,
185 "add to/subtract from eta dependent minimum nimber of TRT hits + outliers"};
186
187 BooleanProperty m_usePreselectionCuts{this, "usePreselectionCuts", false};
188 DoubleProperty m_d0MaxPreselection{this, "d0MaxPreselection", 10.};
189
191 {this, "useEtaDepententMinHitTrt", false};
193 {this, "useEtaDepententMinHitTrtWithOutliers", false};
194
195 ToolHandle<Trk::ITrackSummaryTool> m_trackSumTool
196 {this, "TrackSummaryTool", "Trk::TrackSummaryTool"};
197 ToolHandle<Trk::ITrackParticleCreatorTool> m_particleCreator
198 {this, "TrackParticleCreatorTool", ""};
199 ToolHandle<Trk::IExtrapolator> m_extrapolator
200 {this, "Extrapolator", "Trk::Extrapolator"};
202 {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"};
203 ToolHandle<ITrtDriftCircleCutTool> m_trtDCTool
204 {this, "TrtDCCutTool", "InDet::InDetTrtDriftCircleCutTool",
205 "Tool to get eta dependent cut on number of TRT hits"};
206
207 ToolHandle< InDet::IInDetTestPixelLayerTool > m_inDetTestPixelLayerTool
208 {this, "InDetTestPixelLayerTool", "",
209 "Tool to test if the track crosses a dead module on the b-layer"};
210 // Read handle for conditions object to get the field cache
212 {this, "AtlasFieldCacheCondObj", "fieldCondObj",
213 "Name of the Magnetic Field conditions object key"};
214
217
218 // changes for the pt-dependent sct cut
219 BooleanProperty m_usePtDependentCuts{this, "UsePtDependentCuts", false};
220
221 FloatArrayProperty m_ptBenchmarks{this, "PtBenchmarks", {}};
222
223 IntegerArrayProperty m_nSCTValues{this, "SCTCutValues", {}};
224
226 {this, "EventInfo", "EventInfo", "Input event information"};
227 BooleanProperty m_useEventInfoBs
228 {this, "UseEventInfoBS", false, "Access beamspot via the EvenInfo object"};
229 Trk::Vertex* getBeamSpot(const EventContext&) const;
230
231 }; //end of class definitions
232
233} //end of namespace definitions
234
235#endif //TrkMultipleVertexSeedFinders_PVFindingTrackSelectoTool_H
#define AmgSymMatrix(dim)
boost::graph_traits< boost::adjacency_list< boost::vecS, boost::vecS, boost::bidirectionalS > >::vertex_descriptor Vertex
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
ToolHandle< Trk::ITrackParticleCreatorTool > m_particleCreator
bool preselectionBeforeExtrapolation(const Trk::Perigee &myPerigee) const
InDetDetailedTrackSelectorTool(const std::string &t, const std::string &n, const IInterface *p)
ToolHandle< InDet::IInDetTestPixelLayerTool > m_inDetTestPixelLayerTool
bool decision(const Trk::Track &track, const Trk::Vertex *vertex) const
ToolHandle< ITrtDriftCircleCutTool > m_trtDCTool
Trk::Vertex * getBeamSpot(const EventContext &) const
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
int getCount(const xAOD::TrackParticle &tp, xAOD::SummaryType type) const
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo_key
ToolHandle< Trk::ITrackSummaryTool > m_trackSumTool
Amg::Vector3D getPosOrBeamSpot(const xAOD::Vertex *) const
Property holding a SG store/key/clid from which a ReadHandle is made.
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
Definition FitQuality.h:97
The abstract interface base class for track selector tools.
A summary of the information contained by a track.
This class is a simplest representation of a vertex candidate.
double chi2(TH1 *h0, TH1 *h1)
Eigen::Matrix< double, 3, 1 > Vector3D
Primary Vertex Finder.
Ensure that the ATLAS eigen extensions are properly loaded.
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Vertex_v1 Vertex
Define the latest version of the vertex class.
SummaryType
Enumerates the different types of information stored in Summary.