ATLAS Offline Software
Loading...
Searching...
No Matches
python.VertexFindingFlags Namespace Reference

Classes

class  VertexSortingSetup
class  VertexSetup

Functions

 createPriVertexingFlags ()

Function Documentation

◆ createPriVertexingFlags()

createPriVertexingFlags ( )

Definition at line 25 of file VertexFindingFlags.py.

25def createPriVertexingFlags():
26 from AthenaConfiguration.AthConfigFlags import AthConfigFlags
27 flags = AthConfigFlags()
28
29 flags.addFlag("maxAbsEta", 9999.0)
30 flags.addFlag("minNTrtHits", 0)
31 flags.addFlag("maxNPixelHoles", 1)
32 flags.addFlag("maxZ0", 1000.0 * Units.mm)
33 flags.addFlag("maxZ0SinTheta", 1000.0 * Units.mm)
34 flags.addFlag("minNInnermostLayerHits", 0)
35 # MaxTracks cuts are specific to the IterativeFinding config
36 flags.addFlag("doMaxTracksCut", lambda pcf:
37 not(pcf.Tracking.PriVertex.useBeamConstraint or
38 pcf.Tracking.PrimaryPassConfig is (
39 PrimaryPassConfig.HeavyIon)))
40 flags.addFlag("maxTracks", 3000)
41 flags.addFlag("maxVertices", lambda pcf:
42 1 if pcf.Tracking.PrimaryPassConfig in [
43 PrimaryPassConfig.HeavyIon, PrimaryPassConfig.VtxLumiHeavyIon]
44 else 200)
45
46 # string to store the setup for primary vertexing.
47
48 def vertexSetup(pcf):
49 if pcf.Reco.EnableHI:
50 return VertexSetup.FastIVF
51 elif pcf.Tracking.PrimaryPassConfig is PrimaryPassConfig.VtxLumiHeavyIon:
52 return VertexSetup.FastIVF
53 elif (pcf.Tracking.doMinBias or
54 pcf.Tracking.doLowMu or
55 pcf.Tracking.PrimaryPassConfig in [
56 PrimaryPassConfig.VtxLumi,
57 PrimaryPassConfig.VtxBeamSpot,
58 PrimaryPassConfig.HighPileup]):
59 return VertexSetup.IVF
60 else: # Default
61 return VertexSetup.ActsGaussAMVF
62
63 flags.addFlag("setup", vertexSetup, type=VertexSetup)
64
65 # string to store the type of sorting algorithm to separate signal and pile-up vertices.
66 flags.addFlag("sortingSetup", VertexSortingSetup.SumPt2Sorting, type=VertexSortingSetup)
67 flags.addFlag("PVNN.nnFile", "InDetGNNHardScatterSelection/v2.0/network.onnx")
68 flags.addFlag("useBeamConstraint", lambda pcf:
69 not(pcf.Tracking.PrimaryPassConfig in [
70 PrimaryPassConfig.VtxLumi,
71 PrimaryPassConfig.VtxBeamSpot]))
72
73 def maxD0(pcf):
74 if pcf.Detector.GeometryITk:
75 return 1.0 * Units.mm
76 else:
77 if not pcf.Tracking.PriVertex.useBeamConstraint:
78 return 10.0 * Units.mm
79 elif pcf.Tracking.PrimaryPassConfig is PrimaryPassConfig.VtxLumiHeavyIon:
80 return 10.0 * Units.mm
81 else: # Default ID
82 return 4.0 * Units.mm
83
84 flags.addFlag("maxD0", maxD0)
85
86 def minPt(pcf):
87 if pcf.Detector.GeometryITk:
88 return 900.0 * Units.MeV
89 else:
90 if pcf.Tracking.doMinBias or pcf.Tracking.doLowPt:
91 return 100.0 * Units.MeV
92 elif pcf.Reco.EnableHI or pcf.Tracking.doLowMu \
93 or pcf.Tracking.PrimaryPassConfig is PrimaryPassConfig.VtxLumiHeavyIon:
94 return 400.0 * Units.MeV
95 else: # Default ID
96 return 500.0 * Units.MeV
97
98 flags.addFlag("minPt", minPt)
99
100 def maxSigmaD0(pcf):
101 if pcf.Detector.GeometryITk:
102 return 0.35 * Units.mm
103 else:
104 if pcf.Tracking.doLowPt:
105 return 0.9 * Units.mm
106 else: # Default ID
107 return 5.0 * Units.mm
108
109 flags.addFlag("maxSigmaD0", maxSigmaD0)
110
111 idflags = { "maxSigmaZ0SinTheta" : 10.0 * Units.mm,
112 "minNPixelHits" : 1,
113 "minNSctHits" : 4,
114 "minNSiHits" : 6,
115 "maxZinterval" : 3}
116
117 itkflags = {"maxSigmaZ0SinTheta" : 2.5 * Units.mm,
118 "minNPixelHits" : 3,
119 "minNSctHits" : 0,
120 "minNSiHits" : 7,
121 "maxZinterval" : 0.5}
122
123 for k in idflags:
124 # Need to use default arguments in lambda function to keep them set
125 # despite the loop
126 flags.addFlag(k, lambda pcf, a=idflags[k], b=itkflags[k]:
127 a if pcf.Detector.GeometryID else b)
128
129 flags.addFlag("gridMainGridSize", 20)
130 flags.addFlag("gridTrkGridSize", 10)
131 flags.addFlag("gridUseHighestSumZPosition", False)
132 flags.addFlag("gridMaxD0Significance", 3.5)
133 flags.addFlag("gridMaxZ0Significance", 12.0)
134
135 return flags
136
137