5 from AthenaConfiguration.Enums
import BeamType, FlagEnum
6 from 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(
"useTRT" ,
lambda pcf : pcf.Detector.EnableTRT )
102 icf.addFlag(
"useSCT" ,
lambda pcf : pcf.Detector.EnableSCT )
103 icf.addFlag(
"usePixelSeeding" ,
lambda pcf : pcf.Detector.EnablePixel )
104 icf.addFlag(
"useSCTSeeding" ,
lambda pcf : pcf.Detector.EnableSCT )
107 icf.addFlag(
"RunPixelPID",
True)
108 icf.addFlag(
"RunTRTPID",
True)
113 icf.addFlag(
"storeTrackSeeds",
False)
114 icf.addFlag(
"storeSiSPSeededTracks",
False)
123 from AthenaConfiguration.AthConfigFlags
import AthConfigFlags
124 icf = AthConfigFlags()
126 icf.addFlag(
"extension",
"" )
128 icf.addFlag(
"useITkPixel" ,
lambda pcf : pcf.Detector.EnableITkPixel )
129 icf.addFlag(
"useITkStrip" ,
lambda pcf : pcf.Detector.EnableITkStrip )
130 icf.addFlag(
"useITkPixelSeeding" ,
True )
131 icf.addFlag(
"useITkStripSeeding" ,
True )
133 icf.addFlag(
"usePrdAssociationTool" ,
False)
134 icf.addFlag(
"storeSeparateContainer" ,
False)
135 icf.addFlag(
"doZBoundary" ,
True)
136 icf.addFlag(
"doAmbiguityProcessorTrackFit",
True)
138 icf.addFlag(
"useTIDE_Ambi",
lambda pcf: pcf.Tracking.doTIDE_Ambi)
141 icf.addFlag(
"etaBins" , [-1.0, 2.0, 2.6, 9999.0])
142 icf.addFlag(
"maxEta" , 4.0)
143 icf.addFlag(
"minPT" ,
lambda pcf :
144 [0.2 * Units.GeV * pcf.BField.configuredSolenoidFieldScale]
145 if pcf.Tracking.doLowMu
else
146 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
147 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
148 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
150 icf.addFlag(
"minPTSeed" ,
lambda pcf : (
151 pcf.BField.configuredSolenoidFieldScale *
152 (0.2 * Units.GeV
if pcf.Tracking.doLowMu
153 else 0.9 * Units.GeV)))
154 icf.addFlag(
"maxPrimaryImpactSeed" , 2.0 * Units.mm)
155 icf.addFlag(
"maxZImpactSeed" , 200.0 * Units.mm)
156 icf.addFlag(
"useSeedFilter" ,
True)
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" , [2.0 * Units.mm, 2.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(
"doActsToAthenaSeed",
False)
216 icf.addFlag(
"doActsToAthenaTrack",
False)
217 icf.addFlag(
"doActsToAthenaResolvedTrack",
False)
220 icf.addFlag(
"doGNNTrack",
False)
223 icf.addFlag(
"doFPGASpacePoint",
False)
224 icf.addFlag(
"doFPGACluster",
False)
225 icf.addFlag(
"doFPGATrackSim",
False)
230 icf.addFlag(
"storeTrackSeeds",
False)
231 icf.addFlag(
"storeSiSPSeededTracks",
False)
234 icf.addFlag(
"isSecondaryPass",
False)
243 icf.extension =
"HeavyIon"
244 icf.maxPrimaryImpact = [2.0 * Units.mm]
245 icf.minPT =
lambda pcf : (
246 [0.4 *Units.GeV * pcf.BField.configuredSolenoidFieldScale])
247 icf.minPTSeed =
lambda pcf : (
248 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
249 icf.minClusters = [6]
250 icf.minSiNotShared = [6]
252 icf.Xi2maxNoAdd = [9.]
253 icf.maxPixelHoles = [1]
254 icf.maxSctHoles = [1]
255 icf.maxDoubleHoles = [0]
256 icf.doBremRecoverySi =
False
264 icf.minPT =
lambda pcf : (
265 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
266 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
267 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
268 icf.maxZImpact = [150.0 * Units.mm]
271 icf.nHolesMax = icf.maxHoles
272 icf.nHolesGapMax = [1]
273 icf.minPTSeed =
lambda pcf: (
274 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
275 icf.maxZImpactSeed = 150.0 * Units.mm
276 icf.useITkStripSeeding =
False
285 icf.addFlag(
"doHitDV" ,
False)
286 icf.addFlag(
"doDisappearingTrk" ,
False)
287 icf.addFlag(
"useTrigTrackFollowing",
False)
288 icf.addFlag(
"useTrigRoadPredictor",
False)
289 icf.addFlag(
"useTracklets",
False)
290 icf.useSeedFilter =
False
291 icf.minPT =
lambda pcf : (
292 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
293 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
294 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
295 icf.minPTSeed =
lambda pcf : (
296 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
302 icf.addFlag(
"doHitDV" ,
False)
303 icf.addFlag(
"doDisappearingTrk" ,
False)
304 icf.addFlag(
"useTrigTrackFollowing",
False)
305 icf.addFlag(
"useTrigRoadPredictor",
False)
306 icf.addFlag(
"useTracklets",
False)
307 icf.useSeedFilter =
False
308 icf.minPT =
lambda pcf : (
309 [1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
311 icf.maxPrimaryImpact = [400.0 * Units.mm]
312 icf.maxPrimaryImpactSeed = 400.0 * Units.mm
313 icf.maxdImpactSSSSeeds = [400.0 * Units.mm]
323 icf.extension =
"LargeD0"
324 icf.usePrdAssociationTool =
True
325 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
327 icf.minPT =
lambda pcf : (
328 [1000 * Units.MeV * pcf.BField.configuredSolenoidFieldScale])
330 icf.etaBins = [-1.0, 4.0]
331 icf.maxPrimaryImpact = [300 * Units.mm]
332 icf.maxZImpact = [500 * Units.mm]
333 icf.minClusters = [8]
334 icf.minSiNotShared = [6]
338 icf.maxPixelHoles = [1]
339 icf.maxSctHoles = [1]
340 icf.maxDoubleHoles = [0]
342 icf.maxZImpactSeed = 500.0 * Units.mm
343 icf.maxPrimaryImpactSeed = 300.0 * Units.mm
344 icf.minPTSeed =
lambda pcf : (
345 1000 * Units.MeV * pcf.BField.configuredSolenoidFieldScale)
347 icf.radMax = 1100. * Units.mm
348 icf.nHolesMax = icf.maxHoles
349 icf.nHolesGapMax = icf.maxHoles
353 icf.useITkPixelSeeding =
False
354 icf.maxdImpactSSSSeeds = [300.0 * Units.mm]
356 icf.doBremRecoverySi =
False
359 icf.Xi2maxNoAdd = [25.0]
360 icf.nWeightedClustersMin = [6]
368 icf.useITkPixelSeeding =
False
369 icf.useITkStripSeeding =
True
372 icf.etaBins = [-1.0, 2.4]
373 icf.minPT =
lambda pcf : (
374 [5.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
375 icf.minPTSeed =
lambda pcf : (
376 5.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
377 icf.nWeightedClustersMin = [8]
378 icf.maxPrimaryImpact = [150 * Units.mm]
379 icf.maxPrimaryImpactSeed = 150. * Units.mm
380 icf.maxdImpactSSSSeeds = [150.0 * Units.mm]
381 icf.maxZImpact = [200 * Units.mm]
382 icf.maxZImpactSeed = 200. * Units.mm
383 icf.radMax = 400. * Units.mm
391 icf.extension =
"LowPt"
392 icf.minPT =
lambda pcf : (
393 [0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
394 icf.minPTSeed =
lambda pcf : (
395 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
396 icf.doBremRecoverySi =
False
403 icf.extension =
"HighPileup"
404 icf.minPT =
lambda pcf : (
405 0.900 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
407 icf.maxPixelHoles = 0
408 icf.doBremRecoverySi =
False
415 icf.extension =
"MinBias"
416 icf.minPT =
lambda pcf: (
417 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
418 icf.maxPrimaryImpact = 10. * Units.mm
419 icf.maxZImpact = 250. * Units.mm
421 icf.maxdImpactSSSSeeds = 20.0 * Units.mm
423 icf.doBremRecoverySi =
False
424 icf.maxSeedsPerSP_Pixels = 5
425 icf.keepAllConfirmedPixelSeeds =
False
432 icf.extension =
"UPC"
434 icf.minPTBrem =
lambda pcf: (
435 0.75 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
437 icf.doBremRecoverySi =
lambda pcf: pcf.Tracking.doBremRecovery
443 icf.extension =
"HIP"
450 icf.extension =
"LowPtRoI"
451 icf.usePrdAssociationTool =
True
452 icf.storeSeparateContainer =
True
453 icf.maxPT =
lambda pcf: (
454 0.850 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
455 icf.minPT =
lambda pcf: (
456 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
458 icf.minSiNotShared = 4
462 icf.maxPixelHoles = 1
464 icf.maxDoubleHoles = 1
465 icf.radMax = 600. * Units.mm
466 icf.nHolesMax = icf.maxHoles
467 icf.nHolesGapMax = icf.maxHoles
468 icf.doBremRecoverySi =
False
470 icf.addFlag(
"z0WindowRoI", 30.0)
471 icf.addFlag(
"doRandomSpot",
False)
472 icf.addFlag(
"RoIStrategy", RoIStrategy.LeadTracks)
473 icf.addFlag(
"inputLowPtRoIfile",
"")
481 icf.extension =
"R3LargeD0"
482 icf.usePrdAssociationTool =
True
483 icf.usePixelSeeding =
False
484 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
485 icf.maxPT =
lambda pcf : (
486 1.0 * Units.TeV * pcf.BField.configuredSolenoidFieldScale)
487 icf.minPT =
lambda pcf : (
488 1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
490 icf.maxPrimaryImpact = 300.0 * Units.mm
491 icf.maxEMImpact = 300 * Units.mm
492 icf.maxZImpact = 500 * Units.mm
494 icf.minSiNotShared = 6
498 icf.maxPixelHoles = 1
500 icf.maxDoubleHoles = 0
501 icf.radMax = 600. * Units.mm
502 icf.nHolesMax = icf.maxHoles
504 icf.maxTracksPerSharedPRD = 2
506 icf.Xi2maxNoAdd = 25.0
508 icf.nWeightedClustersMin = 8
509 icf.maxdImpactSSSSeeds = 300.0
510 icf.doZBoundary =
True
511 icf.keepAllConfirmedStripSeeds =
True
512 icf.maxSeedsPerSP_Strips = 1
513 icf.doBremRecoverySi =
False
515 icf.RunPixelPID =
False
516 icf.RunTRTPID =
False
523 icf.extension =
"LowPtLargeD0"
524 icf.usePrdAssociationTool =
True
525 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
526 icf.maxPT =
lambda pcf: (
527 1.0 * Units.TeV * pcf.BField.configuredSolenoidFieldScale)
528 icf.minPT =
lambda pcf: (
529 100 * Units.MeV * pcf.BField.configuredSolenoidFieldScale)
531 icf.maxPrimaryImpact = 300.0 * Units.mm
532 icf.maxZImpact = 1500.0 * Units.mm
534 icf.minSiNotShared = 5
538 icf.maxPixelHoles = 1
540 icf.maxDoubleHoles = 1
541 icf.radMax = 600. * Units.mm
542 icf.nHolesMax = icf.maxHoles
543 icf.nHolesGapMax = icf.maxHoles
544 icf.maxTracksPerSharedPRD = 2
545 icf.doBremRecoverySi =
False
547 icf.RunPixelPID =
False
548 icf.RunTRTPID =
False
555 icf.extension =
"LowPt"
556 icf.usePrdAssociationTool =
True
558 icf.maxPT =
lambda pcf: (
559 pcf.BField.configuredSolenoidFieldScale *
560 (1e6
if pcf.Tracking.doMinBias
else
561 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
562 icf.minPT =
lambda pcf: (
563 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
565 icf.minSiNotShared = 4
569 icf.maxPixelHoles = 1
571 icf.maxDoubleHoles = 1
572 icf.radMax = 600. * Units.mm
573 icf.nHolesMax = icf.maxHoles
574 icf.nHolesGapMax = icf.maxHoles
575 icf.maxPrimaryImpact =
lambda pcf: (
576 100. * Units.mm
if pcf.Tracking.doMinBias
else 10. * Units.mm)
577 icf.doBremRecoverySi =
False
584 icf.extension =
"Conversion"
585 icf.usePrdAssociationTool =
True
587 icf.etaBins = [-1.0,4.0]
588 icf.minPT =
lambda pcf: (
589 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
590 icf.maxPrimaryImpact = [10.0 * Units.mm]
591 icf.maxZImpact = [150.0 * Units.mm]
592 icf.minClusters = [6]
593 icf.minSiNotShared = [6]
597 icf.maxPixelHoles = [1]
598 icf.maxSctHoles = [2]
599 icf.maxDoubleHoles = [1]
601 icf.nHolesMax = icf.maxHoles
602 icf.nHolesGapMax = icf.maxHoles
603 icf.nWeightedClustersMin = [6]
604 icf.maxdImpactSSSSeeds = [20.0 * Units.mm]
605 icf.radMax = 1100. * Units.mm
606 icf.doZBoundary =
False
609 icf.Xi2maxNoAdd = [25.0]
610 icf.doBremRecoverySi =
True
617 icf.extension =
"VeryLowPt"
618 icf.usePrdAssociationTool =
True
620 icf.useTRTExtension =
False
621 icf.maxPT =
lambda pcf : (
622 pcf.BField.configuredSolenoidFieldScale *
623 (1e6
if pcf.Tracking.doMinBias
else
624 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
625 icf.minPT =
lambda pcf : (
626 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
628 icf.minSiNotShared = 3
632 icf.maxPixelHoles = 1
634 icf.maxDoubleHoles = 0
637 icf.radMax = 600. * Units.mm
638 icf.doBremRecoverySi =
False
645 icf.extension =
"Forward"
646 icf.usePrdAssociationTool =
True
647 icf.useTIDE_Ambi =
False
648 icf.useTRTExtension =
False
649 icf.storeSeparateContainer =
True
652 icf.minPT =
lambda pcf: (
653 2 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
655 icf.minSiNotShared = 3
659 icf.maxPixelHoles = 1
661 icf.maxDoubleHoles = 0
662 icf.nHolesMax = icf.maxHoles
663 icf.nHolesGapMax = icf.maxHoles
664 icf.radMax = 600. * Units.mm
666 icf.doBremRecoverySi =
False
667 icf.doZBoundary =
False
669 icf.RunPixelPID =
False
670 icf.RunTRTPID =
False
677 icf.extension =
"BeamGas"
678 icf.usePrdAssociationTool =
True
679 icf.minPT =
lambda pcf: (
680 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
681 icf.maxPrimaryImpact = 300. * Units.mm
682 icf.maxZImpact = 2000. * Units.mm
685 icf.maxPixelHoles = 3
687 icf.maxDoubleHoles = 1
690 icf.doBremRecoverySi =
False
697 icf.extension =
"VtxLumi"
698 icf.minPT =
lambda pcf: (
699 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
701 icf.maxPixelHoles = 1
702 icf.radMax = 600. * Units.mm
706 icf.doBremRecoverySi =
False
713 icf.extension =
"VtxLumiHeavyIon"
714 icf.minPT =
lambda pcf: (
715 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
716 icf.maxPrimaryImpact = 10. * Units.mm
717 icf.maxZImpact = 250.0 * Units.mm
719 icf.maxPixelHoles = 1
720 icf.radMax = 600. * Units.mm
723 icf.maxdImpactSSSSeeds = 20.
725 icf.keepAllConfirmedPixelSeeds =
False
726 icf.maxSeedsPerSP_Pixels = 5
728 icf.doBremRecoverySi =
False
735 icf.extension =
"VtxBeamSpot"
736 icf.minPT =
lambda pcf: (
737 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
739 icf.maxPixelHoles = 0
740 icf.radMax = 320. * Units.mm
744 icf.doBremRecoverySi =
False
751 icf.extension =
"Cosmics"
752 icf.minPT =
lambda pcf: (
753 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
754 icf.maxPrimaryImpact = 1000. * Units.mm
755 icf.maxZImpact = 10000. * Units.mm
757 icf.minSiNotShared = 4
759 icf.maxPixelHoles = 3
761 icf.maxDoubleHoles = 1
765 icf.Xi2maxNoAdd = 100.
766 icf.nWeightedClustersMin = 8
769 icf.maxdImpactSSSSeeds = 20. * Units.mm
770 icf.doBremRecoverySi =
False
771 icf.doZBoundary =
False
772 icf.maxSeedsPerSP_Pixels = 5
773 icf.keepAllConfirmedPixelSeeds =
False
780 icf.extension =
"HeavyIon"
781 icf.maxPrimaryImpact = 10. * Units.mm
782 icf.maxZImpact = 200. * Units.mm
784 icf.minSiNotShared = 7
790 icf.Xi2maxNoAdd = 10.
792 icf.minPT =
lambda pcf: (
793 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
795 icf.maxdImpactSSSSeeds = 20. * Units.mm
796 icf.maxdImpactPPSSeeds = 1.7
799 icf.maxPixelHoles = 1
801 icf.maxDoubleHoles = 0
803 icf.Xi2maxNoAdd = 25.
804 icf.radMax = 600. * Units.mm
807 icf.doBremRecoverySi =
False
808 icf.doZBoundary =
False
809 icf.maxSeedsPerSP_Pixels = 5
810 icf.keepAllConfirmedPixelSeeds =
False
817 icf.extension =
"Pixel"
818 icf.isLowPt =
lambda pcf : pcf.Tracking.doMinBias
821 if pcf.Beam.Type
is BeamType.Cosmics:
822 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
823 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC:
824 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
825 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HIP:
826 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
827 if pcf.Tracking.doMinBias:
828 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
829 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
834 def _pick( default, hion, cosmics):
835 def _internal( pcf ):
836 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HeavyIon:
838 if pcf.Beam.Type
is BeamType.Cosmics:
843 icf.maxHoles = _pick( default = 1, hion = 0, cosmics = 3 )
844 icf.maxPixelHoles = _pick( default = 1, hion = 0, cosmics = 3 )
846 icf.maxDoubleHoles = 0
847 icf.minSiNotShared = 3
849 icf.nHolesMax = _pick( default = 1, hion = 0, cosmics = 3 )
850 icf.nHolesGapMax = _pick( default = 1, hion = 0, cosmics = 3 )
852 icf.useSCTSeeding =
False
854 icf.maxPrimaryImpact =
lambda pcf: (
855 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
856 10. * Units.mm
if pcf.Tracking.doUPC
else
858 icf.roadWidth =
lambda pcf: (
859 60.0
if pcf.Beam.Type
is BeamType.Cosmics
else
861 icf.maxZImpact =
lambda pcf: (
862 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
863 320. * Units.mm
if pcf.Tracking.doLowMu
else
864 250. * Units.mm
if pcf.Tracking.doMinBias
else
866 icf.Xi2max =
lambda pcf: (
867 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
868 15.
if pcf.Tracking.doLowMu
else
870 icf.Xi2maxNoAdd =
lambda pcf: (
871 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
872 35.
if pcf.Tracking.doLowMu
else
874 icf.nWeightedClustersMin = 6
875 icf.doBremRecoverySi =
False
877 icf.RunPixelPID =
lambda pcf: (
878 pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC)
879 icf.RunTRTPID =
False
885 icf.extension =
"Disappearing"
886 icf.usePrdAssociationTool =
True
887 icf.storeSeparateContainer =
True
888 icf.minPT =
lambda pcf: (
889 5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
892 icf.maxPixelHoles = 0
894 icf.maxDoubleHoles = 0
895 icf.minSiNotShared = 3
901 icf.useSCTSeeding =
False
903 icf.doBremRecoverySi =
False
904 def MainPassFlags(pcf):
905 return pcf.Tracking.__getattr__(pcf.Tracking.PrimaryPassConfig.value+
'Pass')
906 icf.maxPrimaryImpact =
lambda pcf: MainPassFlags(pcf).maxPrimaryImpact
907 icf.maxZImpact =
lambda pcf: MainPassFlags(pcf).maxZImpact
908 icf.roadWidth =
lambda pcf: MainPassFlags(pcf).roadWidth
914 icf.extension =
"SCT"
916 icf.maxDoubleHoles = 1
917 icf.minSiNotShared = 5
919 icf.usePixelSeeding =
False
923 if pcf.Beam.Type
is BeamType.Cosmics:
924 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
925 if pcf.Tracking.doMinBias:
926 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
927 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
931 icf.maxPrimaryImpact =
lambda pcf: (
932 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
933 10. * Units.mm
if pcf.Tracking.doLowMu
else
935 icf.maxZImpact =
lambda pcf: (
936 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
937 320. * Units.mm
if pcf.Tracking.doLowMu
else
940 icf.maxHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
941 icf.nHolesMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
942 icf.nHolesGapMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
943 icf.maxPixelHoles =
lambda pcf: 0
if pcf.Beam.Type
is BeamType.Cosmics
else 0
944 icf.maxSctHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
946 icf.roadWidth =
lambda pcf: (
947 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
948 20.
if pcf.Tracking.doLowMu
else
950 icf.Xi2max =
lambda pcf: (
951 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
952 15.
if pcf.Tracking.doLowMu
else
954 icf.Xi2maxNoAdd =
lambda pcf: (
955 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
956 35.
if pcf.Tracking.doLowMu
else
958 icf.nWeightedClustersMin =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 6
959 icf.minClusters =
lambda pcf: (
960 4
if pcf.Beam.Type
is BeamType.Cosmics
else
961 7
if pcf.Tracking.doLowMu
else
963 icf.minSiNotShared =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 5
964 icf.doBremRecoverySi =
False
966 icf.RunPixelPID =
False
967 icf.RunTRTPID =
False
973 icf.extension =
"TRT"
974 icf.useTIDE_Ambi =
False
975 icf.usePrdAssociationTool =
True
976 icf.minPT =
lambda pcf: (
977 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
978 icf.doBremRecoverySi =
False
980 icf.RunPixelPID =
False
981 icf.RunTRTPID =
False
988 icf.extension =
"TRTStandalone"
989 icf.useTIDE_Ambi =
False
990 icf.usePrdAssociationTool =
True
991 icf.doBremRecoverySi =
False
999 print(
"************************************************************************")
1001 print(
"******************** Tracking reconstruction Config ********************")
1002 print(
" Primary Config is",flags.Tracking[flags.Tracking.PrimaryPassConfig.value+
"Pass"].extension)
1003 flags.dump(pattern=
"Tracking."+flags.Tracking.PrimaryPassConfig.value+
"Pass.*", evaluate=
True)
1004 print(
"************************************************************************")
1010 print(
"************************************************************************")
1012 print(
"******************** Tracking reconstruction Config ********************")
1013 print(
" Active Config is",flags.Tracking.ActiveConfig.extension)
1014 flags.dump(pattern=
"Tracking.ActiveConfig.*", evaluate=
True)
1015 print(
"************************************************************************")
1022 if __name__ ==
"__main__":
1024 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
1027 from AthenaConfiguration.TestDefaults
import defaultTestFiles
1028 flags.Input.Files=defaultTestFiles.RAW_RUN2
1030 from AthenaCommon.Logging
import logging
1031 l = logging.getLogger(
'TrackingPassFlags')
1035 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.MainPass")
1037 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 5.0 * Units.mm,
"wrong cut value {} ".
format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
1038 assert flags.Tracking.HeavyIonPass.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".
format(flags.Tracking.HeavyIonPass.maxPrimaryImpact)
1039 flags.Tracking.doBLS =
True
1040 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".
format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
1042 assert flags.Tracking.ActiveConfig.minPT == 0.5 * Units.GeV,
"wrong cut value {} ".
format(flags.Tracking.ActiveConfig.minPT)
1043 flags.BField.configuredSolenoidFieldScale = 0.1
1044 assert flags.Tracking.ActiveConfig.minPT == 0.05 * Units.GeV,
"wrong cut value {} ".
format(flags.Tracking.ActiveConfig.minPT)
1046 l.info(
"flags.Tracking.ActiveConfig.minPT %f", flags.Tracking.ActiveConfig.minPT * 1.0)
1047 l.info(
"type(flags.Tracking.ActiveConfig.minPT) " +
str(
type(flags.Tracking.ActiveConfig.minPT)))