4import AthenaCommon.SystemOfUnits
as Units
5from AthenaConfiguration.Enums
import BeamType, FlagEnum
6from TrkConfig.TrkConfigFlags
import PrimaryPassConfig
9 LeadTracks =
'LeadTracks'
18 from AthenaConfiguration.AthConfigFlags
import AthConfigFlags
19 icf = AthConfigFlags()
21 icf.addFlag(
"extension",
"" )
23 icf.addFlag(
"usePrdAssociationTool",
False)
24 icf.addFlag(
"isLowPt",
False)
25 icf.addFlag(
"useTIDE_Ambi",
lambda pcf: pcf.Tracking.doTIDE_Ambi)
26 icf.addFlag(
"useTRTExtension",
lambda pcf: pcf.Tracking.doTRTExtension)
27 icf.addFlag(
"storeSeparateContainer",
False)
28 icf.addFlag(
"doAmbiguityProcessorTrackFit",
True)
31 icf.addFlag(
"minPT",
lambda pcf: (pcf.BField.configuredSolenoidFieldScale *
32 (0.4 * Units.GeV
if pcf.Tracking.doLowMu
else
34 icf.addFlag(
"maxPT", 1000.0 * Units.TeV)
35 icf.addFlag(
"minEta", -1)
36 icf.addFlag(
"maxEta", 2.7)
40 icf.addFlag(
"minClusters",
lambda pcf:
41 3
if (pcf.Detector.EnablePixel
and not pcf.Detector.EnableSCT)
else
42 6
if (pcf.Detector.EnableSCT
and not pcf.Detector.EnablePixel)
else
43 7
if pcf.Tracking.doLowMu
else
46 icf.addFlag(
"minSiNotShared", 6)
48 icf.addFlag(
"maxShared", 1)
49 icf.addFlag(
"minPixel", 0)
50 icf.addFlag(
"maxHoles",
lambda pcf: 3
if pcf.Tracking.doLowMu
else 2)
51 icf.addFlag(
"maxPixelHoles",
lambda pcf: 2
if pcf.Tracking.doLowMu
else 1)
52 icf.addFlag(
"maxSctHoles", 2)
53 icf.addFlag(
"maxDoubleHoles", 1)
55 icf.addFlag(
"maxPrimaryImpact",
lambda pcf:
56 10.0 * Units.mm
if (pcf.Tracking.doBLS
or pcf.Tracking.doLowMu)
else
58 icf.addFlag(
"maxEMImpact", 50.0 * Units.mm)
59 icf.addFlag(
"maxZImpact",
lambda pcf:
60 320.0 * Units.mm
if pcf.Tracking.doLowMu
else
64 icf.addFlag(
"minTRTonTrk", 9)
65 icf.addFlag(
"minTRTPrecFrac", 0.3)
70 icf.addFlag(
"radMax", 600.0 * Units.mm)
71 icf.addFlag(
"roadWidth",
lambda pcf: 20.
if pcf.Tracking.doLowMu
else 12.)
72 icf.addFlag(
"nHolesMax",
lambda pcf: 3
if pcf.Tracking.doLowMu
else 2)
73 icf.addFlag(
"nHolesGapMax",
lambda pcf: 3
if pcf.Tracking.doLowMu
else 2)
74 icf.addFlag(
"Xi2max",
lambda pcf: 15.
if pcf.Tracking.doLowMu
else 9.)
75 icf.addFlag(
"Xi2maxNoAdd",
lambda pcf: 35.
if pcf.Tracking.doLowMu
else 25.)
76 icf.addFlag(
"nWeightedClustersMin", 6)
79 icf.addFlag(
"useSeedFilter",
True)
80 icf.addFlag(
"maxTracksPerSharedPRD", 0)
81 icf.addFlag(
"maxdImpactPPSSeeds",
lambda pcf: 1.7
if pcf.Tracking.doLowMu
else 2.)
82 icf.addFlag(
"maxdImpactSSSSeeds",
lambda pcf:
83 1000. * Units.mm
if pcf.Tracking.doLowMu
else
84 10. * Units.mm
if pcf.Tracking.doBLS
else
86 icf.addFlag(
"maxSeedsPerSP_Pixels",
lambda pcf: 5
if pcf.Tracking.doLowMu
else 1)
87 icf.addFlag(
"maxSeedsPerSP_Strips", 5)
88 icf.addFlag(
"keepAllConfirmedPixelSeeds",
lambda pcf:
not pcf.Tracking.doLowMu)
89 icf.addFlag(
"keepAllConfirmedStripSeeds",
False)
92 icf.addFlag(
"doBremRecoverySi",
lambda pcf: pcf.Tracking.doBremRecovery)
93 icf.addFlag(
"minPTBrem",
lambda pcf: (
94 1. * Units.GeV * pcf.BField.configuredSolenoidFieldScale))
97 icf.addFlag(
"doZBoundary",
lambda pcf:
98 not (pcf.Beam.Type
is BeamType.Cosmics
or pcf.Tracking.doLowMu))
100 icf.addFlag(
"usePixel" ,
lambda pcf : pcf.Detector.EnablePixel )
101 icf.addFlag(
"useSCT" ,
lambda pcf : pcf.Detector.EnableSCT )
102 icf.addFlag(
"usePixelSeeding" ,
lambda pcf : pcf.Detector.EnablePixel )
103 icf.addFlag(
"useSCTSeeding" ,
lambda pcf : pcf.Detector.EnableSCT )
106 icf.addFlag(
"RunPixelPID",
True)
107 icf.addFlag(
"RunTRTPID",
True)
112 icf.addFlag(
"storeTrackSeeds",
False)
113 icf.addFlag(
"storeSiSPSeededTracks",
False)
122 from AthenaConfiguration.AthConfigFlags
import AthConfigFlags
123 icf = AthConfigFlags()
125 icf.addFlag(
"extension",
"" )
127 icf.addFlag(
"useITkPixel" ,
lambda pcf : pcf.Detector.EnableITkPixel )
128 icf.addFlag(
"useITkStrip" ,
lambda pcf : pcf.Detector.EnableITkStrip )
129 icf.addFlag(
"useITkPixelSeeding" ,
True )
130 icf.addFlag(
"useITkStripSeeding" ,
True )
132 icf.addFlag(
"usePrdAssociationTool" ,
False)
133 icf.addFlag(
"storeSeparateContainer" ,
False)
134 icf.addFlag(
"doZBoundary" ,
True)
135 icf.addFlag(
"doAmbiguityProcessorTrackFit",
True)
137 icf.addFlag(
"useTIDE_Ambi",
lambda pcf: pcf.Tracking.doTIDE_Ambi)
140 icf.addFlag(
"etaBins" , [-1.0, 2.0, 2.6, 9999.0])
141 icf.addFlag(
"maxEta" , 4.0)
142 icf.addFlag(
"minPT" ,
lambda pcf :
143 [0.2 * Units.GeV * pcf.BField.configuredSolenoidFieldScale]
144 if pcf.Tracking.doLowMu
else
145 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
146 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
147 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
149 icf.addFlag(
"minPTSeed" ,
lambda pcf : (
150 pcf.BField.configuredSolenoidFieldScale *
151 (0.2 * Units.GeV
if pcf.Tracking.doLowMu
152 else 0.9 * Units.GeV)))
153 icf.addFlag(
"maxPrimaryImpactSeed" , 5.0 * Units.mm)
154 icf.addFlag(
"maxZImpactSeed" , 200.0 * Units.mm)
155 icf.addFlag(
"useSeedFilter" ,
True)
156 icf.addFlag(
"useHoughVertexFilter" ,
False)
159 icf.addFlag(
"minClusters" ,
lambda pcf :
160 [6, 5, 4]
if pcf.Tracking.doLowMu
else [9, 8, 7])
161 icf.addFlag(
"minSiNotShared" ,
lambda pcf :
162 [6, 5, 4]
if pcf.Tracking.doLowMu
else [7, 6, 5])
163 icf.addFlag(
"maxShared" , [2])
164 icf.addFlag(
"minPixel" , [1])
165 icf.addFlag(
"maxHoles" , [2])
166 icf.addFlag(
"maxPixelHoles" , [2])
167 icf.addFlag(
"maxSctHoles" , [2])
168 icf.addFlag(
"maxDoubleHoles" , [1])
169 icf.addFlag(
"maxPrimaryImpact" , [5.0 * Units.mm, 5.0 * Units.mm, 10.0 * Units.mm])
170 icf.addFlag(
"maxEMImpact" , [50.0 * Units.mm])
171 icf.addFlag(
"maxZImpact" , [200.0 * Units.mm])
174 icf.addFlag(
"roadWidth" , 20.)
175 icf.addFlag(
"nHolesMax" , icf.maxHoles)
176 icf.addFlag(
"nHolesGapMax" , icf.maxHoles)
178 icf.addFlag(
"Xi2max" , [9.0])
179 icf.addFlag(
"Xi2maxNoAdd" , [25.0])
180 icf.addFlag(
"nWeightedClustersMin" , [6])
183 icf.addFlag(
"maxdImpactSSSSeeds" , [20.0 * Units.mm])
184 icf.addFlag(
"radMax" , 1100. * Units.mm)
187 icf.addFlag(
"doBremRecoverySi",
lambda pcf: pcf.Tracking.doBremRecovery)
188 icf.addFlag(
"minPTBrem",
lambda pcf: (
189 [1. * Units.GeV * pcf.BField.configuredSolenoidFieldScale]))
192 icf.addFlag(
"doCaloSeededBremSi",
lambda pcf: pcf.Tracking.doCaloSeededBrem)
193 icf.addFlag(
"doCaloSeededAmbiSi",
lambda pcf: pcf.Tracking.doCaloSeededAmbi)
197 icf.addFlag(
"doAthenaCluster",
True)
198 icf.addFlag(
"doAthenaSpacePoint",
True)
199 icf.addFlag(
"doAthenaSeed",
True)
200 icf.addFlag(
"doAthenaTrack",
True)
201 icf.addFlag(
"doAthenaAmbiguityResolution",
True)
203 icf.addFlag(
"doActsCluster",
False)
204 icf.addFlag(
"doActsSpacePoint",
False)
205 icf.addFlag(
"doActsSeed",
False)
206 icf.addFlag(
"doActsTrack",
False)
207 icf.addFlag(
"doActsAmbiguityResolution",
False)
209 icf.addFlag(
"doAthenaToActsCluster",
False)
210 icf.addFlag(
"doAthenaToActsSpacePoint",
False)
211 icf.addFlag(
"doAthenaToActsTrack",
False)
213 icf.addFlag(
"doActsToAthenaCluster",
False)
214 icf.addFlag(
"doActsToAthenaSpacePoint",
False)
215 icf.addFlag(
"doActsToAthenaTrack",
False)
216 icf.addFlag(
"doActsToAthenaResolvedTrack",
False)
219 icf.addFlag(
"doGNNTrack",
False)
222 icf.addFlag(
"doFPGASpacePoint",
False)
223 icf.addFlag(
"doFPGACluster",
False)
224 icf.addFlag(
"doFPGASeed",
False)
225 icf.addFlag(
"doFPGATrackSim",
False)
230 icf.addFlag(
"storeTrackSeeds",
False)
231 icf.addFlag(
"storeSiSPSeededTracks",
False)
240 icf.extension =
"HeavyIon"
241 icf.maxPrimaryImpact = [5.0 * Units.mm]
242 icf.minPT =
lambda pcf : (
243 [0.4 *Units.GeV * pcf.BField.configuredSolenoidFieldScale])
244 icf.minPTSeed =
lambda pcf : (
245 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
246 icf.minClusters = [6]
247 icf.minSiNotShared = [6]
249 icf.Xi2maxNoAdd = [9.]
250 icf.maxPixelHoles = [1]
251 icf.maxSctHoles = [1]
252 icf.maxDoubleHoles = [0]
253 icf.doBremRecoverySi =
False
261 icf.minPT =
lambda pcf : (
262 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
263 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
264 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
265 icf.maxZImpact = [150.0 * Units.mm]
268 icf.nHolesMax = icf.maxHoles
269 icf.nHolesGapMax = [1]
270 icf.minPTSeed =
lambda pcf: (
271 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
272 icf.maxZImpactSeed = 150.0 * Units.mm
273 icf.useITkStripSeeding =
False
282 icf.addFlag(
"doHitDV" ,
False)
283 icf.addFlag(
"doDisappearingTrk" ,
False)
284 icf.addFlag(
"useTrigTrackFollowing",
False)
285 icf.addFlag(
"useTrigRoadPredictor",
False)
286 icf.addFlag(
"useTracklets",
False)
287 icf.useSeedFilter =
False
288 icf.minPT =
lambda pcf : (
289 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
290 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
291 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
292 icf.minPTSeed =
lambda pcf : (
293 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
299 icf.addFlag(
"doHitDV" ,
False)
300 icf.addFlag(
"doDisappearingTrk" ,
False)
301 icf.addFlag(
"useTrigTrackFollowing",
False)
302 icf.addFlag(
"useTrigRoadPredictor",
False)
303 icf.addFlag(
"useTracklets",
False)
304 icf.useSeedFilter =
False
305 icf.minPT =
lambda pcf : (
306 [1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
308 icf.maxPrimaryImpact = [400.0 * Units.mm]
309 icf.maxPrimaryImpactSeed = 400.0 * Units.mm
310 icf.maxdImpactSSSSeeds = [400.0 * Units.mm]
320 icf.extension =
"LargeD0"
321 icf.usePrdAssociationTool =
True
322 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
324 icf.minPT =
lambda pcf : (
325 [1000 * Units.MeV * pcf.BField.configuredSolenoidFieldScale])
327 icf.etaBins = [-1.0, 4.0]
328 icf.maxPrimaryImpact = [300 * Units.mm]
329 icf.maxZImpact = [500 * Units.mm]
330 icf.minClusters = [8]
331 icf.minSiNotShared = [6]
335 icf.maxPixelHoles = [1]
336 icf.maxSctHoles = [1]
337 icf.maxDoubleHoles = [0]
339 icf.maxZImpactSeed = 500.0 * Units.mm
340 icf.maxPrimaryImpactSeed = 300.0 * Units.mm
341 icf.minPTSeed =
lambda pcf : (
342 1000 * Units.MeV * pcf.BField.configuredSolenoidFieldScale)
344 icf.radMax = 1100. * Units.mm
345 icf.nHolesMax = icf.maxHoles
346 icf.nHolesGapMax = icf.maxHoles
350 icf.useITkPixelSeeding =
False
351 icf.maxdImpactSSSSeeds = [300.0 * Units.mm]
353 icf.doBremRecoverySi =
False
356 icf.Xi2maxNoAdd = [25.0]
357 icf.nWeightedClustersMin = [6]
365 icf.useITkPixelSeeding =
False
366 icf.useITkStripSeeding =
True
369 icf.etaBins = [-1.0, 2.4]
370 icf.minPT =
lambda pcf : (
371 [5.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
372 icf.minPTSeed =
lambda pcf : (
373 5.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
374 icf.nWeightedClustersMin = [8]
375 icf.maxPrimaryImpact = [150 * Units.mm]
376 icf.maxPrimaryImpactSeed = 150. * Units.mm
377 icf.maxdImpactSSSSeeds = [150.0 * Units.mm]
378 icf.maxZImpact = [200 * Units.mm]
379 icf.maxZImpactSeed = 200. * Units.mm
380 icf.radMax = 400. * Units.mm
388 icf.extension =
"LowPt"
389 icf.minPT =
lambda pcf : (
390 [0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
391 icf.minPTSeed =
lambda pcf : (
392 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
393 icf.doBremRecoverySi =
False
400 icf.extension =
"HighPileup"
401 icf.minPT =
lambda pcf : (
402 0.900 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
404 icf.maxPixelHoles = 0
405 icf.doBremRecoverySi =
False
412 icf.extension =
"MinBias"
413 icf.minPT =
lambda pcf: (
414 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
415 icf.maxPrimaryImpact = 10. * Units.mm
416 icf.maxZImpact = 250. * Units.mm
418 icf.maxdImpactSSSSeeds = 20.0 * Units.mm
420 icf.doBremRecoverySi =
False
421 icf.maxSeedsPerSP_Pixels = 5
422 icf.keepAllConfirmedPixelSeeds =
False
429 icf.extension =
"UPC"
431 icf.minPTBrem =
lambda pcf: (
432 0.75 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
434 icf.doBremRecoverySi =
lambda pcf: pcf.Tracking.doBremRecovery
440 icf.extension =
"HIP"
447 icf.extension =
"LowPtRoI"
448 icf.usePrdAssociationTool =
True
449 icf.storeSeparateContainer =
True
450 icf.maxPT =
lambda pcf: (
451 0.850 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
452 icf.minPT =
lambda pcf: (
453 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
455 icf.minSiNotShared = 4
459 icf.maxPixelHoles = 1
461 icf.maxDoubleHoles = 1
462 icf.radMax = 600. * Units.mm
463 icf.nHolesMax = icf.maxHoles
464 icf.nHolesGapMax = icf.maxHoles
465 icf.doBremRecoverySi =
False
467 icf.addFlag(
"z0WindowRoI", 30.0)
468 icf.addFlag(
"doRandomSpot",
False)
469 icf.addFlag(
"RoIStrategy", RoIStrategy.LeadTracks)
470 icf.addFlag(
"inputLowPtRoIfile",
"")
478 icf.extension =
"R3LargeD0"
479 icf.usePrdAssociationTool =
True
480 icf.usePixelSeeding =
False
481 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
482 icf.maxPT =
lambda pcf : (
483 1.0 * Units.TeV * pcf.BField.configuredSolenoidFieldScale)
484 icf.minPT =
lambda pcf : (
485 1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
487 icf.maxPrimaryImpact = 300.0 * Units.mm
488 icf.maxEMImpact = 300 * Units.mm
489 icf.maxZImpact = 500 * Units.mm
491 icf.minSiNotShared = 6
495 icf.maxPixelHoles = 1
497 icf.maxDoubleHoles = 0
498 icf.radMax = 600. * Units.mm
499 icf.nHolesMax = icf.maxHoles
501 icf.maxTracksPerSharedPRD = 2
503 icf.Xi2maxNoAdd = 25.0
505 icf.nWeightedClustersMin = 8
506 icf.maxdImpactSSSSeeds = 300.0
507 icf.doZBoundary =
True
508 icf.keepAllConfirmedStripSeeds =
True
509 icf.maxSeedsPerSP_Strips = 1
510 icf.doBremRecoverySi =
False
512 icf.RunPixelPID =
False
513 icf.RunTRTPID =
False
520 icf.extension =
"LowPtLargeD0"
521 icf.usePrdAssociationTool =
True
522 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
523 icf.maxPT =
lambda pcf: (
524 1.0 * Units.TeV * pcf.BField.configuredSolenoidFieldScale)
525 icf.minPT =
lambda pcf: (
526 100 * Units.MeV * pcf.BField.configuredSolenoidFieldScale)
528 icf.maxPrimaryImpact = 300.0 * Units.mm
529 icf.maxZImpact = 1500.0 * Units.mm
531 icf.minSiNotShared = 5
535 icf.maxPixelHoles = 1
537 icf.maxDoubleHoles = 1
538 icf.radMax = 600. * Units.mm
539 icf.nHolesMax = icf.maxHoles
540 icf.nHolesGapMax = icf.maxHoles
541 icf.maxTracksPerSharedPRD = 2
542 icf.doBremRecoverySi =
False
544 icf.RunPixelPID =
False
545 icf.RunTRTPID =
False
552 icf.extension =
"LowPt"
553 icf.usePrdAssociationTool =
True
555 icf.maxPT =
lambda pcf: (
556 pcf.BField.configuredSolenoidFieldScale *
557 (1e6
if pcf.Tracking.doMinBias
else
558 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
559 icf.minPT =
lambda pcf: (
560 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
562 icf.minSiNotShared = 4
566 icf.maxPixelHoles = 1
568 icf.maxDoubleHoles = 1
569 icf.radMax = 600. * Units.mm
570 icf.nHolesMax = icf.maxHoles
571 icf.nHolesGapMax = icf.maxHoles
572 icf.maxPrimaryImpact =
lambda pcf: (
573 100. * Units.mm
if pcf.Tracking.doMinBias
else 10. * Units.mm)
574 icf.doBremRecoverySi =
False
581 icf.extension =
"Conversion"
582 icf.usePrdAssociationTool =
True
584 icf.etaBins = [-1.0,4.0]
585 icf.minPT =
lambda pcf: (
586 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
587 icf.maxPrimaryImpact = [10.0 * Units.mm]
588 icf.maxZImpact = [150.0 * Units.mm]
589 icf.minClusters = [6]
590 icf.minSiNotShared = [6]
594 icf.maxPixelHoles = [1]
595 icf.maxSctHoles = [2]
596 icf.maxDoubleHoles = [1]
598 icf.nHolesMax = icf.maxHoles
599 icf.nHolesGapMax = icf.maxHoles
600 icf.nWeightedClustersMin = [6]
601 icf.maxdImpactSSSSeeds = [20.0 * Units.mm]
602 icf.radMax = 1100. * Units.mm
603 icf.doZBoundary =
False
606 icf.Xi2maxNoAdd = [25.0]
607 icf.doBremRecoverySi =
True
614 icf.extension =
"VeryLowPt"
615 icf.usePrdAssociationTool =
True
617 icf.useTRTExtension =
False
618 icf.maxPT =
lambda pcf : (
619 pcf.BField.configuredSolenoidFieldScale *
620 (1e6
if pcf.Tracking.doMinBias
else
621 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
622 icf.minPT =
lambda pcf : (
623 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
625 icf.minSiNotShared = 3
629 icf.maxPixelHoles = 1
631 icf.maxDoubleHoles = 0
634 icf.radMax = 600. * Units.mm
635 icf.doBremRecoverySi =
False
642 icf.extension =
"Forward"
643 icf.usePrdAssociationTool =
True
644 icf.useTIDE_Ambi =
False
645 icf.useTRTExtension =
False
646 icf.storeSeparateContainer =
True
649 icf.minPT =
lambda pcf: (
650 2 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
652 icf.minSiNotShared = 3
656 icf.maxPixelHoles = 1
658 icf.maxDoubleHoles = 0
659 icf.nHolesMax = icf.maxHoles
660 icf.nHolesGapMax = icf.maxHoles
661 icf.radMax = 600. * Units.mm
662 icf.doBremRecoverySi =
False
663 icf.doZBoundary =
False
665 icf.RunPixelPID =
False
666 icf.RunTRTPID =
False
673 icf.extension =
"BeamGas"
674 icf.usePrdAssociationTool =
True
675 icf.minPT =
lambda pcf: (
676 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
677 icf.maxPrimaryImpact = 300. * Units.mm
678 icf.maxZImpact = 2000. * Units.mm
681 icf.maxPixelHoles = 3
683 icf.maxDoubleHoles = 1
686 icf.doBremRecoverySi =
False
693 icf.extension =
"VtxLumi"
694 icf.minPT =
lambda pcf: (
695 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
697 icf.maxPixelHoles = 1
698 icf.radMax = 600. * Units.mm
701 icf.doBremRecoverySi =
False
708 icf.extension =
"VtxLumiHeavyIon"
709 icf.minPT =
lambda pcf: (
710 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
711 icf.maxPrimaryImpact = 10. * Units.mm
712 icf.maxZImpact = 250.0 * Units.mm
714 icf.maxPixelHoles = 1
715 icf.radMax = 600. * Units.mm
718 icf.maxdImpactSSSSeeds = 20.
720 icf.keepAllConfirmedPixelSeeds =
False
721 icf.maxSeedsPerSP_Pixels = 5
722 icf.doBremRecoverySi =
False
729 icf.extension =
"VtxBeamSpot"
730 icf.minPT =
lambda pcf: (
731 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
733 icf.maxPixelHoles = 0
734 icf.radMax = 320. * Units.mm
737 icf.doBremRecoverySi =
False
744 icf.extension =
"Cosmics"
745 icf.minPT =
lambda pcf: (
746 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
747 icf.maxPrimaryImpact = 1000. * Units.mm
748 icf.maxZImpact = 10000. * Units.mm
750 icf.minSiNotShared = 4
752 icf.maxPixelHoles = 3
754 icf.maxDoubleHoles = 1
758 icf.Xi2maxNoAdd = 100.
759 icf.nWeightedClustersMin = 8
762 icf.maxdImpactSSSSeeds = 20. * Units.mm
763 icf.doBremRecoverySi =
False
764 icf.doZBoundary =
False
765 icf.maxSeedsPerSP_Pixels = 5
766 icf.keepAllConfirmedPixelSeeds =
False
773 icf.extension =
"HeavyIon"
774 icf.maxPrimaryImpact = 10. * Units.mm
775 icf.maxZImpact = 200. * Units.mm
777 icf.minSiNotShared = 7
783 icf.Xi2maxNoAdd = 10.
785 icf.minPT =
lambda pcf: (
786 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
788 icf.maxdImpactSSSSeeds = 20. * Units.mm
789 icf.maxdImpactPPSSeeds = 1.7
792 icf.maxPixelHoles = 1
794 icf.maxDoubleHoles = 0
796 icf.Xi2maxNoAdd = 25.
797 icf.radMax = 600. * Units.mm
799 icf.doBremRecoverySi =
False
800 icf.doZBoundary =
False
801 icf.maxSeedsPerSP_Pixels = 5
802 icf.keepAllConfirmedPixelSeeds =
False
809 icf.extension =
"Pixel"
810 icf.isLowPt =
lambda pcf : pcf.Tracking.doMinBias
813 if pcf.Beam.Type
is BeamType.Cosmics:
814 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
815 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC:
816 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
817 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HIP:
818 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
819 if pcf.Tracking.doMinBias:
820 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
821 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
826 def _pick( default, hion, cosmics):
827 def _internal( pcf ):
828 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HeavyIon:
830 if pcf.Beam.Type
is BeamType.Cosmics:
835 icf.maxHoles = _pick( default = 1, hion = 0, cosmics = 3 )
836 icf.maxPixelHoles = _pick( default = 1, hion = 0, cosmics = 3 )
838 icf.maxDoubleHoles = 0
839 icf.minSiNotShared = 3
841 icf.nHolesMax = _pick( default = 1, hion = 0, cosmics = 3 )
842 icf.nHolesGapMax = _pick( default = 1, hion = 0, cosmics = 3 )
844 icf.useSCTSeeding =
False
845 icf.maxPrimaryImpact =
lambda pcf: (
846 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
847 10. * Units.mm
if pcf.Tracking.doUPC
else
849 icf.roadWidth =
lambda pcf: (
850 60.0
if pcf.Beam.Type
is BeamType.Cosmics
else
852 icf.maxZImpact =
lambda pcf: (
853 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
854 320. * Units.mm
if pcf.Tracking.doLowMu
else
855 250. * Units.mm
if pcf.Tracking.doMinBias
else
857 icf.Xi2max =
lambda pcf: (
858 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
859 15.
if pcf.Tracking.doLowMu
else
861 icf.Xi2maxNoAdd =
lambda pcf: (
862 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
863 35.
if pcf.Tracking.doLowMu
else
865 icf.nWeightedClustersMin = 6
866 icf.doBremRecoverySi =
False
868 icf.RunPixelPID =
lambda pcf: (
869 pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC)
870 icf.RunTRTPID =
False
876 icf.extension =
"Disappearing"
877 icf.usePrdAssociationTool =
True
878 icf.storeSeparateContainer =
True
879 icf.minPT =
lambda pcf: (
880 5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
883 icf.maxPixelHoles = 0
885 icf.maxDoubleHoles = 0
886 icf.minSiNotShared = 3
891 icf.useSCTSeeding =
False
893 icf.doBremRecoverySi =
False
894 def MainPassFlags(pcf):
895 return pcf.Tracking.__getattr__(pcf.Tracking.PrimaryPassConfig.value+
'Pass')
896 icf.maxPrimaryImpact =
lambda pcf: MainPassFlags(pcf).maxPrimaryImpact
897 icf.maxZImpact =
lambda pcf: MainPassFlags(pcf).maxZImpact
898 icf.roadWidth =
lambda pcf: MainPassFlags(pcf).roadWidth
904 icf.extension =
"SCT"
906 icf.maxDoubleHoles = 1
907 icf.minSiNotShared = 5
909 icf.usePixelSeeding =
False
912 if pcf.Beam.Type
is BeamType.Cosmics:
913 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
914 if pcf.Tracking.doMinBias:
915 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
916 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
920 icf.maxPrimaryImpact =
lambda pcf: (
921 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
922 10. * Units.mm
if pcf.Tracking.doLowMu
else
924 icf.maxZImpact =
lambda pcf: (
925 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
926 320. * Units.mm
if pcf.Tracking.doLowMu
else
929 icf.maxHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
930 icf.nHolesMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
931 icf.nHolesGapMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
932 icf.maxPixelHoles =
lambda pcf: 0
if pcf.Beam.Type
is BeamType.Cosmics
else 0
933 icf.maxSctHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
935 icf.roadWidth =
lambda pcf: (
936 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
937 20.
if pcf.Tracking.doLowMu
else
939 icf.Xi2max =
lambda pcf: (
940 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
941 15.
if pcf.Tracking.doLowMu
else
943 icf.Xi2maxNoAdd =
lambda pcf: (
944 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
945 35.
if pcf.Tracking.doLowMu
else
947 icf.nWeightedClustersMin =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 6
948 icf.minClusters =
lambda pcf: (
949 4
if pcf.Beam.Type
is BeamType.Cosmics
else
950 7
if pcf.Tracking.doLowMu
else
952 icf.minSiNotShared =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 5
953 icf.doBremRecoverySi =
False
955 icf.RunPixelPID =
False
956 icf.RunTRTPID =
False
962 icf.extension =
"TRT"
963 icf.useTIDE_Ambi =
False
964 icf.usePrdAssociationTool =
True
965 icf.minPT =
lambda pcf: (
966 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
967 icf.doBremRecoverySi =
False
969 icf.RunPixelPID =
False
970 icf.RunTRTPID =
False
977 icf.extension =
"TRTStandalone"
978 icf.useTIDE_Ambi =
False
979 icf.usePrdAssociationTool =
True
980 icf.doBremRecoverySi =
False
989 print(
"************************************************************************")
991 print(
"******************** Tracking reconstruction Config ********************")
992 print(
" Primary Config is",flags.Tracking[flags.Tracking.PrimaryPassConfig.value+
"Pass"].extension)
993 flags.dump(pattern=
"Tracking."+flags.Tracking.PrimaryPassConfig.value+
"Pass.*", evaluate=
True)
994 print(
"************************************************************************")
1000 print(
"************************************************************************")
1002 print(
"******************** Tracking reconstruction Config ********************")
1003 print(
" Active Config is",flags.Tracking.ActiveConfig.extension)
1004 flags.dump(pattern=
"Tracking.ActiveConfig.*", evaluate=
True)
1005 print(
"************************************************************************")
1012if __name__ ==
"__main__":
1014 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
1015 flags = initConfigFlags()
1017 from AthenaConfiguration.TestDefaults
import defaultTestFiles
1018 flags.Input.Files=defaultTestFiles.RAW_RUN2
1020 from AthenaCommon.Logging
import logging
1021 l = logging.getLogger(
'TrackingPassFlags')
1025 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.MainPass")
1027 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 5.0 * Units.mm,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
1028 assert flags.Tracking.HeavyIonPass.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".format(flags.Tracking.HeavyIonPass.maxPrimaryImpact)
1029 flags.Tracking.doBLS =
True
1030 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
1032 assert flags.Tracking.ActiveConfig.minPT == 0.5 * Units.GeV,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.minPT)
1033 flags.BField.configuredSolenoidFieldScale = 0.1
1034 assert flags.Tracking.ActiveConfig.minPT == 0.05 * Units.GeV,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.minPT)
1036 l.info(
"flags.Tracking.ActiveConfig.minPT %f", flags.Tracking.ActiveConfig.minPT * 1.0)
1037 l.info(
"type(flags.Tracking.ActiveConfig.minPT) " + str(
type(flags.Tracking.ActiveConfig.minPT)))
void print(char *figname, TCanvas *c1)
createITkTrackingPassFlags()
ITk mode ####################.
createR3LargeD0TrackingPassFlags()
R3LargeD0 mode ########################.
createVtxLumiHeavyIonTrackingPassFlags()
VtxLumiHeavyIon mode ################.
createForwardTracksTrackingPassFlags()
ForwardTracks mode ########################.
createITkFastTrackingPassFlags()
createITkLargeD0TrackingPassFlags()
ITk LRT mode ####################.
createLowPtTrackingPassFlags()
LowPt mode ########################.
createTRTStandaloneTrackingPassFlags()
TRT standalone tracklet cuts ##########.
createITkFTFLargeD0PassFlags()
createSCTTrackingPassFlags()
SCT mode ######################.
createHeavyIonTrackingPassFlags()
Heavyion mode #######################.
createLowPtRoITrackingPassFlags()
LowPtRoI mode ########################.
createUPCTrackingPassFlags()
UPC mode ########################.
createHIPTrackingPassFlags()
HIP mode ########################.
createDisappearingTrackingPassFlags()
Disappearing mode ######################.
createVtxLumiTrackingPassFlags()
VtxLumi mode ########################.
createITkConversionTrackingPassFlags()
ITkConversion mode ########################.
createPixelTrackingPassFlags()
Pixel mode ###############################################.
createBeamGasTrackingPassFlags()
BeamGas mode ########################.
createTrackingPassFlags()
createVtxBeamSpotTrackingPassFlags()
VtxBeamSpot mode ########################.
createITkHeavyIonTrackingPassFlags()
Heavyion mode #######################.
createVeryLowPtTrackingPassFlags()
VeryLowPt mode ########################.
createHighPileupTrackingPassFlags()
HighPileUP mode ####################.
createTRTTrackingPassFlags()
TRT subdetector tracklet cuts ##########.
createITkLowPtTrackingPassFlags()
ITk LowPt mode ####################.
createITkFTFPassFlags()
ITk with FTF standalone mode ####.
createCosmicsTrackingPassFlags()
Cosmics mode ########################.
createMinBiasTrackingPassFlags()
MinBias mode ########################.
createLowPtLargeD0TrackingPassFlags()
LowPtLargeD0 mode ########################.
printPrimaryConfig(flags)
createITkLargeD0FastTrackingPassFlags()