 |
ATLAS Offline Software
|
Go to the documentation of this file.
7 #ifndef INDETTRACKSELECTIONTOOL_INDETTRACKSELECTIONTOOL_H
8 #define INDETTRACKSELECTIONTOOL_INDETTRACKSELECTIONTOOL_H
17 #include "GaudiKernel/ToolHandle.h"
18 #include "GaudiKernel/ServiceHandle.h"
27 #include <unordered_map>
127 #ifndef XAOD_ANALYSIS
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;}
142 Gaudi::Property<double>
m_minPt{
this,
"minPt", -1.,
"Minimum transverse momentum"};
143 Gaudi::Property<double>
m_minP{
this,
"minP", -1.,
"Minimum momentum"};
146 {
this,
"maxAbsEta",
LOCAL_MAX_DOUBLE,
"Maximum magnitude of pseudorapidity"};
158 {
this,
"maxSigmaZ0SinTheta",
LOCAL_MAX_DOUBLE,
"Maximum error on z0*sin(theta)"};
165 "Significance cut on |z0*sin(theta)|"};
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"};
174 {
this,
"minNBothInnermostLayersHits", -1,
175 "Required hits on two innermost pixel layers"};
178 "Maximum shared hits in innermost pixel layer"};
180 {
this,
"useMinBiasInnermostLayersCut", 0,
181 "IBL hit if expected, otherwise next layer hit if expected"};
183 {
this,
"minNSiHits", -1,
"Minimum silicon (pixel + SCT) hits"};
186 "Maximum silicon (pixel + SCT) sensors shared with other track"};
188 {
this,
"minNSiHitsIfSiSharedHits", -1,
189 "Minimum number of silicon hits if there are any shared silicon hits"};
191 {
this,
"maxNSiHoles",
LOCAL_MAX_INT,
"Maximum silicon (pixel + SCT) holes"};
193 {
this,
"minNPixelHits", -1,
"Required pixel hits"};
196 "Maximum pixels shared with other tracks"};
199 "Maximum number of missed layers in pixel"};
203 "Eta cutoff for strict silicon hits cut"};
205 {
this,
"minNSiHitsAboveEtaCutoff", -1,
206 "Minimum silicon hits at large pseudorapidity"};
208 {
this,
"maxOneSharedModule",
false,
209 "Allow only 1 shared pixel hit or 2 shared SCT hits, not both"};
211 {
this,
"useEtaDependentMaxChiSq",
false,
212 "Whether or not to use the eta-dependent chi squared per degree of freedom cut"};
215 {
this,
"minNSiHitsPhysical", -1,
216 "Minimum physical silicon hits (i.e. dead sensors do not count)"};
218 {
this,
"minNPixelHitsPhysical", -1,
"Minimum physical pixel hits"};
220 {
this,
"minNSctHitsPhysical", -1,
"Minimum physical SCT hits"};
222 {
this,
"minNSctHits", -1,
"Minimum SCT hits"};
225 "Maximum SCT hits shared with other track"};
229 {
this,
"maxNSctDoubleHoles",
LOCAL_MAX_INT,
"Maximum SCT double holes"};
233 "Maximum eta that ignores TRT hit cuts"};
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"};
239 {
this,
"minNTrtHitsPlusOutliers", -1,
"Minimum TRT hits including outliers"};
241 {
this,
"minNTrtHighThresholdHits", -1,
"Minimum high E TRT hits"};
243 {
this,
"minNTrtHighThresholdHitsPlusOutliers", -1,
244 "Minimum high E TRT hits including outliers"};
247 "Maximum TRT hits that are above high energy threshold"};
250 "Maximum TRT hits that are above high energy threshold including outliers"};
253 "Maximum fraction of TRT outliers over TRT hits plus outliers"};
259 "Maximum chi squared per degree of freedom"};
260 Gaudi::Property<double>
m_minProb{
this,
"minProb", -1.,
"Minimum p(chi^2, Ndof)"};
263 "Minimum pt for chi-sq probability cut"};
265 {
this,
"minProbAbovePtCutoff", -1.,
266 "Minimum chi-sq probability above a pt cutoff"};
269 {
this,
"minNUsedHitsdEdx", -1,
"Minimum hits used for dEdx"};
271 {
this,
"minNOverflowHitsdEdx", -1,
"Minimum overflow hits in IBL for dEdx"};
273 {
this,
"eProbHTonlyForXe",
false,
274 "Flag whether to apply the eProbabilityHT cut only when all TRT hits are Xenon"};
276 {
this,
"minEProbabilityHT", -1.,
277 "Minimum High Threshold electron probability"};
280 {
this,
"useExperimentalInnermostLayersCut",
false,
281 "Use the experimental cut on pixel holes"};
283 #ifndef XAOD_ANALYSIS
285 {
this,
"minNSiHitsMod", -1,
286 "Minimum number of Si hits, with pixel hits counting twice"};
288 {
this,
"minNSiHitsModTop", -1,
289 "Min number of Si hits on top half (pixel counting twice)"};
291 {
this,
"minNSiHitsModBottom", -1,
292 "Min number of Si hits on bottom half (pixel counting twice)"};
296 {
this,
"vecEtaCutoffsForSiHitsCut", {},
297 "Minimum eta cutoffs for each Silicon hit cut"};
299 {
this,
"vecMinNSiHitsAboveEta", {},
300 "Minimum Silicon hits above each eta cutoff"};
302 {
this,
"vecEtaCutoffsForPtCut", {},
"Minimum eta cutoffs for each pT cut"};
304 {
this,
"vecMinPtAboveEta", {},
305 "Minimum transverse momentum above each eta cutoff"};
308 {
this,
"vecPtCutoffsForSctHitsCut", {},
309 "Minimum pt cutoffs for each SCT hits"};
311 {
this,
"vecMinNSctHitsAbovePt", {},
312 "Minimum SCT hits above each pt cutoff"};
315 {
this,
"vecEtaCutoffsForZ0SinThetaCut", {},
316 "Minimum eta cutoffs for each Z0SinTheta value"};
318 {
this,
"vecPtCutoffsForZ0SinThetaCut", {},
319 "Minimum pt cutoffs for each Z0SinTheta value"};
321 {
this,
"vecvecMaxZ0SinThetaAboveEtaPt", {},
322 "Maximum Z0SinTheta value above each eta and pT cutoff"};
325 {
this,
"vecEtaCutoffsForD0Cut", {},
"Minimum eta cutoffs for each D0 value"};
327 {
this,
"vecPtCutoffsForD0Cut", {},
"Minimum pt cutoffs for each D0 value"};
329 {
this,
"vecvecMaxD0AboveEtaPt", {},
330 "Maximum D0 value above each eta and pT cutoff"};
333 {
this,
"vecEtaCutoffsForSctHolesCut", {},
334 "Minimum eta cutoffs for each SctHoles value"};
336 {
this,
"vecPtCutoffsForSctHolesCut", {},
337 "Minimum pt cutoffs for each SctHoles value"};
339 {
this,
"vecvecMaxSctHolesAboveEtaPt", {},
340 "Maximum SctHoles value above each eta and pT cutoff"};
343 {
this,
"vecEtaCutoffsForSctHitsPlusDeadCut", {},
344 "Minimum eta cutoffs for each SctHitsPlusDead value"};
346 {
this,
"vecPtCutoffsForSctHitsPlusDeadCut", {},
347 "Minimum pt cutoffs for each SctHitsPlusDead value"};
349 {
this,
"vecvecMinSctHitsPlusDeadAboveEtaPt", {},
350 "Minimum SctHitsPlusDead value above each eta and pT cutoff"};
357 Gaudi::Property<std::string>
m_cutLevel{
this,
"CutLevel",
""};
362 #ifndef XAOD_ANALYSIS
363 Gaudi::Property<bool>
m_initTrkTools{
this,
"UseTrkTrackTools",
false,
"Whether to initialize the Trk::Track tools"};
366 {
this,
"TrackSummaryTool",
"Trk::TrackSummaryTool/TrackSummaryTool"};
368 {
this,
"Extrapolator",
"Trk::Extrapolator/Extrapolator"};
370 #endif // XAOD_ANALYSIS
376 #endif // INDETTRACKSELECTIONTOOL_INDETTRACKSELECTIONTOOL_H
bool const RAWDATA *ch2 const
Class providing the definition of the 4-vector interface.
::StatusCode StatusCode
StatusCode definition for legacy code.
cut
This script demonstrates how to call a C++ class from Python Also how to use PyROOT is shown.
def best(iterable, priorities=[3, 2, 1, -1, 0])
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Class mimicking the AthMessaging class from the offline software.
Class describing a Vertex.
Object to encode the result of several cuts.
Class describing a TrackParticle.
AccessorTemplate< ContainerId::track, CT, ColumnAccessMode::input, CM > TrackAccessor
setBGCode setTAP setLVL2ErrorBits bool