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(
"useVertexPositionDuringSeeding",
False)
22 icf.addFlag(
"extension",
"" )
24 icf.addFlag(
"usePrdAssociationTool",
False)
25 icf.addFlag(
"isLowPt",
False)
26 icf.addFlag(
"useTIDE_Ambi",
lambda pcf: pcf.Tracking.doTIDE_Ambi)
27 icf.addFlag(
"useTRTExtension",
lambda pcf: pcf.Tracking.doTRTExtension)
28 icf.addFlag(
"storeSeparateContainer",
False)
29 icf.addFlag(
"doAmbiguityProcessorTrackFit",
True)
32 icf.addFlag(
"minPT",
lambda pcf: (pcf.BField.configuredSolenoidFieldScale *
33 (0.4 * Units.GeV
if pcf.Tracking.doLowMu
else
35 icf.addFlag(
"maxPT", 1000.0 * Units.TeV)
36 icf.addFlag(
"minEta", -1)
37 icf.addFlag(
"maxEta", 2.7)
41 icf.addFlag(
"minClusters",
lambda pcf:
42 3
if (pcf.Detector.EnablePixel
and not pcf.Detector.EnableSCT)
else
43 6
if (pcf.Detector.EnableSCT
and not pcf.Detector.EnablePixel)
else
44 7
if pcf.Tracking.doLowMu
else
47 icf.addFlag(
"minSiNotShared", 6)
49 icf.addFlag(
"maxShared", 1)
50 icf.addFlag(
"minPixel", 0)
51 icf.addFlag(
"maxHoles",
lambda pcf: 3
if pcf.Tracking.doLowMu
else 2)
52 icf.addFlag(
"maxPixelHoles",
lambda pcf: 2
if pcf.Tracking.doLowMu
else 1)
53 icf.addFlag(
"maxSctHoles", 2)
54 icf.addFlag(
"maxDoubleHoles", 1)
56 icf.addFlag(
"maxPrimaryImpact",
lambda pcf:
57 10.0 * Units.mm
if (pcf.Tracking.doBLS
or pcf.Tracking.doLowMu)
else
59 icf.addFlag(
"maxEMImpact", 50.0 * Units.mm)
60 icf.addFlag(
"maxZImpact",
lambda pcf:
61 320.0 * Units.mm
if pcf.Tracking.doLowMu
else
65 icf.addFlag(
"minTRTonTrk", 9)
66 icf.addFlag(
"minTRTPrecFrac", 0.3)
71 icf.addFlag(
"radMax", 600.0 * Units.mm)
72 icf.addFlag(
"roadWidth",
lambda pcf: 20.
if pcf.Tracking.doLowMu
else 12.)
73 icf.addFlag(
"nHolesMax",
lambda pcf: 3
if pcf.Tracking.doLowMu
else 2)
74 icf.addFlag(
"nHolesGapMax",
lambda pcf: 3
if pcf.Tracking.doLowMu
else 2)
75 icf.addFlag(
"Xi2max",
lambda pcf: 15.
if pcf.Tracking.doLowMu
else 9.)
76 icf.addFlag(
"Xi2maxNoAdd",
lambda pcf: 35.
if pcf.Tracking.doLowMu
else 25.)
77 icf.addFlag(
"nWeightedClustersMin", 6)
80 icf.addFlag(
"useSeedFilter",
True)
81 icf.addFlag(
"maxTracksPerSharedPRD", 0)
82 icf.addFlag(
"maxdImpactPPSSeeds",
lambda pcf: 1.7
if pcf.Tracking.doLowMu
else 2.)
83 icf.addFlag(
"maxdImpactSSSSeeds",
lambda pcf:
84 1000. * Units.mm
if pcf.Tracking.doLowMu
else
85 10. * Units.mm
if pcf.Tracking.doBLS
else
87 icf.addFlag(
"maxSeedsPerSP_Pixels",
lambda pcf: 5
if pcf.Tracking.doLowMu
else 1)
88 icf.addFlag(
"maxSeedsPerSP_Strips", 5)
89 icf.addFlag(
"keepAllConfirmedPixelSeeds",
lambda pcf:
not pcf.Tracking.doLowMu)
90 icf.addFlag(
"keepAllConfirmedStripSeeds",
False)
93 icf.addFlag(
"doBremRecoverySi",
lambda pcf: pcf.Tracking.doBremRecovery)
94 icf.addFlag(
"minPTBrem",
lambda pcf: (
95 1. * Units.GeV * pcf.BField.configuredSolenoidFieldScale))
98 icf.addFlag(
"doZBoundary",
lambda pcf:
99 not (pcf.Beam.Type
is BeamType.Cosmics
or pcf.Tracking.doLowMu))
101 icf.addFlag(
"usePixel" ,
lambda pcf : pcf.Detector.EnablePixel )
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)
122 icf.doAthenaCluster =
True
123 icf.doAthenaSpacePoint =
True
124 icf.doAthenaSeed =
True
125 icf.doAthenaTrack =
True
126 icf.doAthenaAmbiguityResolution =
True
128 icf.addFlag(
"nHolesMax", icf.maxHoles)
129 icf.addFlag(
"nHolesGapMax", icf.maxHoles)
132 icf.addFlag(
"Xi2max" , [50.])
133 icf.addFlag(
"Xi2maxNoAdd" , [100.])
136 icf.doActsCluster =
False
137 icf.doActsSpacePoint =
False
138 icf.doActsSeed =
False
139 icf.doActsTrack =
False
140 icf.doActsAmbiguityResolution =
False
143 from ActsConfig.ActsTrackingPassFlags
import createActsLegacyTrackingPassFlags
144 icf = createActsLegacyTrackingPassFlags()
150 icf.Xi2maxNoAdd = [25.]
154 from ActsConfig.ActsTrackingPassFlags
import createActsTrackingPassFlags
155 icf = createActsTrackingPassFlags()
159 icf.useITkStripSeeding =
False
161 icf.Xi2maxNoAdd = [25.]
167 from ActsConfig.ActsTrackingPassFlags
import createActsHeavyIonTrackingPassFlags
168 icf = createActsHeavyIonTrackingPassFlags()
169 icf.extension =
"HeavyIon"
177 icf.addFlag(
"doHitDV" ,
False)
178 icf.addFlag(
"doDisappearingTrk" ,
False)
179 icf.addFlag(
"useTrigTrackFollowing",
False)
180 icf.addFlag(
"useTrigRoadPredictor",
False)
181 icf.addFlag(
"useTracklets",
False)
182 icf.useSeedFilter =
False
183 icf.minPT =
lambda pcf : (
184 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
185 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
186 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
187 icf.minPTSeed =
lambda pcf : (
188 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
194 icf.addFlag(
"doHitDV" ,
False)
195 icf.addFlag(
"doDisappearingTrk" ,
False)
196 icf.addFlag(
"useTrigTrackFollowing",
False)
197 icf.addFlag(
"useTrigRoadPredictor",
False)
198 icf.addFlag(
"useTracklets",
False)
199 icf.useSeedFilter =
False
200 icf.minPT =
lambda pcf : (
201 [1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
203 icf.maxPrimaryImpact = [400.0 * Units.mm]
204 icf.maxPrimaryImpactSeed = 400.0 * Units.mm
205 icf.maxdImpactSSSSeeds = [400.0 * Units.mm]
213 from ActsConfig.ActsTrackingPassFlags
import createActsLargeRadiusTrackingPassFlags
214 icf = createActsLargeRadiusTrackingPassFlags()
217 icf.extension =
"LargeD0"
219 icf.Xi2maxNoAdd = [25.0]
224 icf.useITkPixelSeeding =
False
225 icf.useITkStripSeeding =
True
228 icf.etaBins = [-1.0, 2.4]
229 icf.minPT =
lambda pcf : (
230 [5.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
231 icf.minPTSeed =
lambda pcf : (
232 5.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
233 icf.nWeightedClustersMin = [8]
234 icf.maxPrimaryImpact = [150 * Units.mm]
235 icf.maxPrimaryImpactSeed = 150. * Units.mm
236 icf.maxdImpactSSSSeeds = [150.0 * Units.mm]
237 icf.maxZImpact = [200 * Units.mm]
238 icf.maxZImpactSeed = 200. * Units.mm
239 icf.radMax = 400. * Units.mm
244 from ActsConfig.ActsTrackingPassFlags
import createActsLowPtTrackingPassFlags
245 icf = createActsLowPtTrackingPassFlags()
248 icf.extension =
"LowPt"
254 icf.extension =
"HighPileup"
255 icf.minPT =
lambda pcf : (
256 0.900 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
258 icf.maxPixelHoles = 0
259 icf.doBremRecoverySi =
False
266 icf.extension =
"MinBias"
267 icf.minPT =
lambda pcf: (
268 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
269 icf.maxPrimaryImpact = 10. * Units.mm
270 icf.maxZImpact = 250. * Units.mm
272 icf.maxdImpactSSSSeeds = 20.0 * Units.mm
274 icf.doBremRecoverySi =
False
275 icf.maxSeedsPerSP_Pixels = 5
276 icf.keepAllConfirmedPixelSeeds =
False
283 icf.extension =
"UPC"
285 icf.minPTBrem =
lambda pcf: (
286 0.75 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
288 icf.doBremRecoverySi =
lambda pcf: pcf.Tracking.doBremRecovery
294 icf.extension =
"HIP"
301 icf.extension =
"LowPtRoI"
302 icf.usePrdAssociationTool =
True
303 icf.storeSeparateContainer =
True
304 icf.maxPT =
lambda pcf: (
305 0.850 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
306 icf.minPT =
lambda pcf: (
307 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
309 icf.minSiNotShared = 4
313 icf.maxPixelHoles = 1
315 icf.maxDoubleHoles = 1
316 icf.radMax = 600. * Units.mm
317 icf.nHolesMax = icf.maxHoles
318 icf.nHolesGapMax = icf.maxHoles
319 icf.doBremRecoverySi =
False
321 icf.addFlag(
"z0WindowRoI", 30.0)
322 icf.addFlag(
"doRandomSpot",
False)
323 icf.addFlag(
"RoIStrategy", RoIStrategy.LeadTracks)
324 icf.addFlag(
"inputLowPtRoIfile",
"")
332 icf.extension =
"R3LargeD0"
333 icf.usePrdAssociationTool =
True
334 icf.usePixelSeeding =
False
335 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
336 icf.maxPT =
lambda pcf : (
337 1.0 * Units.TeV * pcf.BField.configuredSolenoidFieldScale)
338 icf.minPT =
lambda pcf : (
339 1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
341 icf.maxPrimaryImpact = 300.0 * Units.mm
342 icf.maxEMImpact = 300 * Units.mm
343 icf.maxZImpact = 500 * Units.mm
345 icf.minSiNotShared = 6
349 icf.maxPixelHoles = 1
351 icf.maxDoubleHoles = 0
352 icf.radMax = 600. * Units.mm
353 icf.nHolesMax = icf.maxHoles
355 icf.maxTracksPerSharedPRD = 2
357 icf.Xi2maxNoAdd = 25.0
359 icf.nWeightedClustersMin = 8
360 icf.maxdImpactSSSSeeds = 300.0
361 icf.doZBoundary =
True
362 icf.keepAllConfirmedStripSeeds =
True
363 icf.maxSeedsPerSP_Strips = 1
364 icf.doBremRecoverySi =
False
366 icf.RunPixelPID =
False
367 icf.RunTRTPID =
False
374 icf.extension =
"LowPtLargeD0"
375 icf.usePrdAssociationTool =
True
376 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
377 icf.maxPT =
lambda pcf: (
378 1.0 * Units.TeV * pcf.BField.configuredSolenoidFieldScale)
379 icf.minPT =
lambda pcf: (
380 100 * Units.MeV * pcf.BField.configuredSolenoidFieldScale)
382 icf.maxPrimaryImpact = 300.0 * Units.mm
383 icf.maxZImpact = 1500.0 * Units.mm
385 icf.minSiNotShared = 5
389 icf.maxPixelHoles = 1
391 icf.maxDoubleHoles = 1
392 icf.radMax = 600. * Units.mm
393 icf.nHolesMax = icf.maxHoles
394 icf.nHolesGapMax = icf.maxHoles
395 icf.maxTracksPerSharedPRD = 2
396 icf.doBremRecoverySi =
False
398 icf.RunPixelPID =
False
399 icf.RunTRTPID =
False
406 icf.extension =
"LowPt"
407 icf.usePrdAssociationTool =
True
409 icf.maxPT =
lambda pcf: (
410 pcf.BField.configuredSolenoidFieldScale *
411 (1e6
if pcf.Tracking.doMinBias
else
412 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
413 icf.minPT =
lambda pcf: (
414 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
416 icf.minSiNotShared = 4
420 icf.maxPixelHoles = 1
422 icf.maxDoubleHoles = 1
423 icf.radMax = 600. * Units.mm
424 icf.nHolesMax = icf.maxHoles
425 icf.nHolesGapMax = icf.maxHoles
426 icf.maxPrimaryImpact =
lambda pcf: (
427 100. * Units.mm
if pcf.Tracking.doMinBias
else 10. * Units.mm)
428 icf.doBremRecoverySi =
False
434 from ActsConfig.ActsTrackingPassFlags
import createActsConversionTrackingPassFlags
435 icf = createActsConversionTrackingPassFlags()
438 icf.extension =
"Conversion"
440 icf.Xi2maxNoAdd = [25.0]
446 icf.extension =
"VeryLowPt"
447 icf.usePrdAssociationTool =
True
449 icf.useTRTExtension =
False
450 icf.maxPT =
lambda pcf : (
451 pcf.BField.configuredSolenoidFieldScale *
452 (1e6
if pcf.Tracking.doMinBias
else
453 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
454 icf.minPT =
lambda pcf : (
455 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
457 icf.minSiNotShared = 3
461 icf.maxPixelHoles = 1
463 icf.maxDoubleHoles = 0
466 icf.radMax = 600. * Units.mm
467 icf.doBremRecoverySi =
False
474 icf.extension =
"Forward"
475 icf.usePrdAssociationTool =
True
476 icf.useTIDE_Ambi =
False
477 icf.useTRTExtension =
False
478 icf.storeSeparateContainer =
True
481 icf.minPT =
lambda pcf: (
482 2 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
484 icf.minSiNotShared = 3
488 icf.maxPixelHoles = 1
490 icf.maxDoubleHoles = 0
491 icf.nHolesMax = icf.maxHoles
492 icf.nHolesGapMax = icf.maxHoles
493 icf.radMax = 600. * Units.mm
494 icf.doBremRecoverySi =
False
495 icf.doZBoundary =
False
497 icf.RunPixelPID =
False
498 icf.RunTRTPID =
False
505 icf.extension =
"BeamGas"
506 icf.usePrdAssociationTool =
True
507 icf.minPT =
lambda pcf: (
508 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
509 icf.maxPrimaryImpact = 300. * Units.mm
510 icf.maxZImpact = 2000. * Units.mm
513 icf.maxPixelHoles = 3
515 icf.maxDoubleHoles = 1
518 icf.doBremRecoverySi =
False
525 icf.extension =
"VtxLumi"
526 icf.minPT =
lambda pcf: (
527 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
529 icf.maxPixelHoles = 1
530 icf.radMax = 600. * Units.mm
533 icf.doBremRecoverySi =
False
540 icf.extension =
"VtxLumiHeavyIon"
541 icf.minPT =
lambda pcf: (
542 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
543 icf.maxPrimaryImpact = 10. * Units.mm
544 icf.maxZImpact = 250.0 * Units.mm
546 icf.maxPixelHoles = 1
547 icf.radMax = 600. * Units.mm
550 icf.maxdImpactSSSSeeds = 20.
552 icf.keepAllConfirmedPixelSeeds =
False
553 icf.maxSeedsPerSP_Pixels = 5
554 icf.doBremRecoverySi =
False
561 icf.extension =
"VtxBeamSpot"
562 icf.minPT =
lambda pcf: (
563 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
565 icf.maxPixelHoles = 0
566 icf.radMax = 320. * Units.mm
569 icf.doBremRecoverySi =
False
576 icf.extension =
"Cosmics"
577 icf.minPT =
lambda pcf: (
578 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
579 icf.maxPrimaryImpact = 1000. * Units.mm
580 icf.maxZImpact = 10000. * Units.mm
582 icf.minSiNotShared = 4
584 icf.maxPixelHoles = 3
586 icf.maxDoubleHoles = 1
590 icf.Xi2maxNoAdd = 100.
591 icf.nWeightedClustersMin = 8
594 icf.maxdImpactSSSSeeds = 20. * Units.mm
595 icf.doBremRecoverySi =
False
596 icf.doZBoundary =
False
597 icf.maxSeedsPerSP_Pixels = 5
598 icf.keepAllConfirmedPixelSeeds =
False
605 icf.extension =
"HeavyIon"
606 icf.maxPrimaryImpact = 10. * Units.mm
607 icf.maxZImpact = 200. * Units.mm
609 icf.minSiNotShared = 7
615 icf.minPT =
lambda pcf: (
616 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
618 icf.maxdImpactSSSSeeds = 20. * Units.mm
619 icf.maxdImpactPPSSeeds = 1.7
622 icf.maxPixelHoles = 1
624 icf.maxDoubleHoles = 0
626 icf.Xi2maxNoAdd = 25.
627 icf.radMax = 600. * Units.mm
629 icf.doBremRecoverySi =
False
630 icf.doZBoundary =
False
631 icf.maxSeedsPerSP_Pixels = 5
632 icf.keepAllConfirmedPixelSeeds =
False
637 icf.extension =
"HeavyIonLowPt"
638 icf.maxPT =
lambda pcf: 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
639 icf.minPT =
lambda pcf: 0.2 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
640 icf.useVertexPositionDuringSeeding =
True
641 icf.useTRTExtension =
False
644 icf.Xi2maxNoAdd = 10.
645 icf.usePrdAssociationTool =
True
648 icf.minSiNotShared = 6
653 icf.nHolesMax = icf.maxHoles - 1
654 icf.maxPixelHoles = 1
656 icf.maxDoubleHoles = 1
657 icf.radMax = 380. * Units.mm
658 icf.nHolesGapMax = icf.maxHoles
659 icf.maxPrimaryImpact = 10. * Units.mm
660 icf.maxdImpactPPSSeeds = 2. * Units.mm
661 icf.doBremRecoverySi =
False
662 icf.doZBoundary =
False
663 icf.maxSeedsPerSP_Pixels = 5
664 icf.keepAllConfirmedPixelSeeds =
False
670 icf.extension =
"Pixel"
671 icf.isLowPt =
lambda pcf : pcf.Tracking.doMinBias
674 if pcf.Beam.Type
is BeamType.Cosmics:
675 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
676 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC:
677 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
678 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HIP:
679 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
680 if pcf.Tracking.doMinBias:
681 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
682 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
687 def _pick( default, hion, cosmics):
688 def _internal( pcf ):
689 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HeavyIon:
691 if pcf.Beam.Type
is BeamType.Cosmics:
696 icf.maxHoles = _pick( default = 1, hion = 0, cosmics = 3 )
697 icf.maxPixelHoles = _pick( default = 1, hion = 0, cosmics = 3 )
699 icf.maxDoubleHoles = 0
700 icf.minSiNotShared = 3
702 icf.nHolesMax = _pick( default = 1, hion = 0, cosmics = 3 )
703 icf.nHolesGapMax = _pick( default = 1, hion = 0, cosmics = 3 )
705 icf.useSCTSeeding =
False
706 icf.maxPrimaryImpact =
lambda pcf: (
707 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
708 10. * Units.mm
if pcf.Tracking.doUPC
else
710 icf.roadWidth =
lambda pcf: (
711 60.0
if pcf.Beam.Type
is BeamType.Cosmics
else
713 icf.maxZImpact =
lambda pcf: (
714 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
715 320. * Units.mm
if pcf.Tracking.doLowMu
else
716 250. * Units.mm
if pcf.Tracking.doMinBias
else
718 icf.Xi2max =
lambda pcf: (
719 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
720 15.
if pcf.Tracking.doLowMu
else
722 icf.Xi2maxNoAdd =
lambda pcf: (
723 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
724 35.
if pcf.Tracking.doLowMu
else
726 icf.nWeightedClustersMin = 6
727 icf.doBremRecoverySi =
False
729 icf.RunPixelPID =
lambda pcf: (
730 pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC)
731 icf.RunTRTPID =
False
737 icf.extension =
"Disappearing"
738 icf.usePrdAssociationTool =
True
739 icf.storeSeparateContainer =
True
740 icf.minPT =
lambda pcf: (
741 5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
744 icf.maxPixelHoles = 0
746 icf.maxDoubleHoles = 0
747 icf.minSiNotShared = 3
752 icf.useSCTSeeding =
False
754 icf.doBremRecoverySi =
False
755 def MainPassFlags(pcf):
756 return pcf.Tracking.__getattr__(pcf.Tracking.PrimaryPassConfig.value+
'Pass')
757 icf.maxPrimaryImpact =
lambda pcf: MainPassFlags(pcf).maxPrimaryImpact
758 icf.maxZImpact =
lambda pcf: MainPassFlags(pcf).maxZImpact
759 icf.roadWidth =
lambda pcf: MainPassFlags(pcf).roadWidth
765 icf.extension =
"SCT"
767 icf.maxDoubleHoles = 1
768 icf.minSiNotShared = 5
770 icf.usePixelSeeding =
False
773 if pcf.Beam.Type
is BeamType.Cosmics:
774 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
775 if pcf.Tracking.doMinBias:
776 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
777 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
781 icf.maxPrimaryImpact =
lambda pcf: (
782 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
783 10. * Units.mm
if pcf.Tracking.doLowMu
else
785 icf.maxZImpact =
lambda pcf: (
786 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
787 320. * Units.mm
if pcf.Tracking.doLowMu
else
790 icf.maxHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
791 icf.nHolesMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
792 icf.nHolesGapMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
793 icf.maxPixelHoles =
lambda pcf: 0
if pcf.Beam.Type
is BeamType.Cosmics
else 0
794 icf.maxSctHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
796 icf.roadWidth =
lambda pcf: (
797 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
798 20.
if pcf.Tracking.doLowMu
else
800 icf.Xi2max =
lambda pcf: (
801 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
802 15.
if pcf.Tracking.doLowMu
else
804 icf.Xi2maxNoAdd =
lambda pcf: (
805 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
806 35.
if pcf.Tracking.doLowMu
else
808 icf.nWeightedClustersMin =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 6
809 icf.minClusters =
lambda pcf: (
810 4
if pcf.Beam.Type
is BeamType.Cosmics
else
811 7
if pcf.Tracking.doLowMu
else
813 icf.minSiNotShared =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 5
814 icf.doBremRecoverySi =
False
816 icf.RunPixelPID =
False
817 icf.RunTRTPID =
False
823 icf.extension =
"TRT"
824 icf.useTIDE_Ambi =
False
825 icf.usePrdAssociationTool =
True
826 icf.minPT =
lambda pcf: (
827 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
828 icf.doBremRecoverySi =
False
830 icf.RunPixelPID =
False
831 icf.RunTRTPID =
False
838 icf.extension =
"TRTStandalone"
839 icf.useTIDE_Ambi =
False
840 icf.usePrdAssociationTool =
True
841 icf.doBremRecoverySi =
False
850 print(
"************************************************************************")
852 print(
"******************** Tracking reconstruction Config ********************")
853 print(
" Primary Config is",flags.Tracking[flags.Tracking.PrimaryPassConfig.value+
"Pass"].extension)
854 flags.dump(pattern=
"Tracking."+flags.Tracking.PrimaryPassConfig.value+
"Pass.*", evaluate=
True)
855 print(
"************************************************************************")
861 print(
"************************************************************************")
863 print(
"******************** Tracking reconstruction Config ********************")
864 print(
" Active Config is",flags.Tracking.ActiveConfig.extension)
865 flags.dump(pattern=
"Tracking.ActiveConfig.*", evaluate=
True)
866 print(
"************************************************************************")
873if __name__ ==
"__main__":
875 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
876 flags = initConfigFlags()
878 from AthenaConfiguration.TestDefaults
import defaultTestFiles
879 flags.Input.Files=defaultTestFiles.RAW_RUN2
881 from AthenaCommon.Logging
import logging
882 l = logging.getLogger(
'TrackingPassFlags')
886 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.MainPass")
888 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 5.0 * Units.mm,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
889 assert flags.Tracking.HeavyIonPass.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".format(flags.Tracking.HeavyIonPass.maxPrimaryImpact)
890 flags.Tracking.doBLS =
True
891 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
893 assert flags.Tracking.ActiveConfig.minPT == 0.5 * Units.GeV,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.minPT)
894 flags.BField.configuredSolenoidFieldScale = 0.1
895 assert flags.Tracking.ActiveConfig.minPT == 0.05 * Units.GeV,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.minPT)
897 l.info(
"flags.Tracking.ActiveConfig.minPT %f", flags.Tracking.ActiveConfig.minPT * 1.0)
898 l.info(
"type(flags.Tracking.ActiveConfig.minPT) " + str(
type(flags.Tracking.ActiveConfig.minPT)))
void print(char *figname, TCanvas *c1)
createITkLowPtTrackingPassFlags()
ITk LowPt mode ####################.
createR3LargeD0TrackingPassFlags()
R3LargeD0 mode ########################.
deactivateActsComponents(icf)
createITkConversionTrackingPassFlags()
ITkConversion mode ########################.
createHeavyIonTrackingPassFlags()
Heavyion mode #######################.
createUPCTrackingPassFlags()
UPC mode ########################.
createITkFTFPassFlags()
ITk with FTF standalone mode ####.
createHIPTrackingPassFlags()
HIP mode ########################.
createITkLargeD0FastTrackingPassFlags()
createVtxBeamSpotTrackingPassFlags()
VtxBeamSpot mode ########################.
createITkLargeD0TrackingPassFlags()
ITk LRT mode ####################.
createVtxLumiTrackingPassFlags()
VtxLumi mode ########################.
createITkFastTrackingPassFlags()
printPrimaryConfig(flags)
activateAthenaComponents(icf)
ITk mode ####################.
createCosmicsTrackingPassFlags()
Cosmics mode ########################.
createLowPtRoITrackingPassFlags()
LowPtRoI mode ########################.
createLowPtLargeD0TrackingPassFlags()
LowPtLargeD0 mode ########################.
createHeavyIonLowPtTrackingPassFlags()
createLowPtTrackingPassFlags()
LowPt mode ########################.
createITkFTFLargeD0PassFlags()
createBeamGasTrackingPassFlags()
BeamGas mode ########################.
createITkTrackingPassFlags()
createSCTTrackingPassFlags()
SCT mode ######################.
createHighPileupTrackingPassFlags()
HighPileUP mode ####################.
createForwardTracksTrackingPassFlags()
ForwardTracks mode ########################.
createTrackingPassFlags()
createPixelTrackingPassFlags()
Pixel mode ###############################################.
createTRTTrackingPassFlags()
TRT subdetector tracklet cuts ##########.
createVeryLowPtTrackingPassFlags()
VeryLowPt mode ########################.
createDisappearingTrackingPassFlags()
Disappearing mode ######################.
createMinBiasTrackingPassFlags()
MinBias mode ########################.
createTRTStandaloneTrackingPassFlags()
TRT standalone tracklet cuts ##########.
createITkHeavyIonTrackingPassFlags()
Heavyion mode #######################.
createVtxLumiHeavyIonTrackingPassFlags()
VtxLumiHeavyIon mode ################.