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(
"doFPGASeed",
False)
226 icf.addFlag(
"doFPGATrackSim",
False)
231 icf.addFlag(
"storeTrackSeeds",
False)
232 icf.addFlag(
"storeSiSPSeededTracks",
False)
235 icf.addFlag(
"isSecondaryPass",
False)
244 icf.extension =
"HeavyIon"
245 icf.maxPrimaryImpact = [2.0 * Units.mm]
246 icf.minPT =
lambda pcf : (
247 [0.4 *Units.GeV * pcf.BField.configuredSolenoidFieldScale])
248 icf.minPTSeed =
lambda pcf : (
249 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
250 icf.minClusters = [6]
251 icf.minSiNotShared = [6]
253 icf.Xi2maxNoAdd = [9.]
254 icf.maxPixelHoles = [1]
255 icf.maxSctHoles = [1]
256 icf.maxDoubleHoles = [0]
257 icf.doBremRecoverySi =
False
265 icf.minPT =
lambda pcf : (
266 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
267 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
268 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
269 icf.maxZImpact = [150.0 * Units.mm]
272 icf.nHolesMax = icf.maxHoles
273 icf.nHolesGapMax = [1]
274 icf.minPTSeed =
lambda pcf: (
275 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
276 icf.maxZImpactSeed = 150.0 * Units.mm
277 icf.useITkStripSeeding =
False
286 icf.addFlag(
"doHitDV" ,
False)
287 icf.addFlag(
"doDisappearingTrk" ,
False)
288 icf.addFlag(
"useTrigTrackFollowing",
False)
289 icf.addFlag(
"useTrigRoadPredictor",
False)
290 icf.addFlag(
"useTracklets",
False)
291 icf.useSeedFilter =
False
292 icf.minPT =
lambda pcf : (
293 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
294 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
295 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
296 icf.minPTSeed =
lambda pcf : (
297 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
303 icf.addFlag(
"doHitDV" ,
False)
304 icf.addFlag(
"doDisappearingTrk" ,
False)
305 icf.addFlag(
"useTrigTrackFollowing",
False)
306 icf.addFlag(
"useTrigRoadPredictor",
False)
307 icf.addFlag(
"useTracklets",
False)
308 icf.useSeedFilter =
False
309 icf.minPT =
lambda pcf : (
310 [1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
312 icf.maxPrimaryImpact = [400.0 * Units.mm]
313 icf.maxPrimaryImpactSeed = 400.0 * Units.mm
314 icf.maxdImpactSSSSeeds = [400.0 * Units.mm]
324 icf.extension =
"LargeD0"
325 icf.usePrdAssociationTool =
True
326 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
328 icf.minPT =
lambda pcf : (
329 [1000 * Units.MeV * pcf.BField.configuredSolenoidFieldScale])
331 icf.etaBins = [-1.0, 4.0]
332 icf.maxPrimaryImpact = [300 * Units.mm]
333 icf.maxZImpact = [500 * Units.mm]
334 icf.minClusters = [8]
335 icf.minSiNotShared = [6]
339 icf.maxPixelHoles = [1]
340 icf.maxSctHoles = [1]
341 icf.maxDoubleHoles = [0]
343 icf.maxZImpactSeed = 500.0 * Units.mm
344 icf.maxPrimaryImpactSeed = 300.0 * Units.mm
345 icf.minPTSeed =
lambda pcf : (
346 1000 * Units.MeV * pcf.BField.configuredSolenoidFieldScale)
348 icf.radMax = 1100. * Units.mm
349 icf.nHolesMax = icf.maxHoles
350 icf.nHolesGapMax = icf.maxHoles
354 icf.useITkPixelSeeding =
False
355 icf.maxdImpactSSSSeeds = [300.0 * Units.mm]
357 icf.doBremRecoverySi =
False
360 icf.Xi2maxNoAdd = [25.0]
361 icf.nWeightedClustersMin = [6]
369 icf.useITkPixelSeeding =
False
370 icf.useITkStripSeeding =
True
373 icf.etaBins = [-1.0, 2.4]
374 icf.minPT =
lambda pcf : (
375 [5.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
376 icf.minPTSeed =
lambda pcf : (
377 5.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
378 icf.nWeightedClustersMin = [8]
379 icf.maxPrimaryImpact = [150 * Units.mm]
380 icf.maxPrimaryImpactSeed = 150. * Units.mm
381 icf.maxdImpactSSSSeeds = [150.0 * Units.mm]
382 icf.maxZImpact = [200 * Units.mm]
383 icf.maxZImpactSeed = 200. * Units.mm
384 icf.radMax = 400. * Units.mm
392 icf.extension =
"LowPt"
393 icf.minPT =
lambda pcf : (
394 [0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
395 icf.minPTSeed =
lambda pcf : (
396 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
397 icf.doBremRecoverySi =
False
404 icf.extension =
"HighPileup"
405 icf.minPT =
lambda pcf : (
406 0.900 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
408 icf.maxPixelHoles = 0
409 icf.doBremRecoverySi =
False
416 icf.extension =
"MinBias"
417 icf.minPT =
lambda pcf: (
418 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
419 icf.maxPrimaryImpact = 10. * Units.mm
420 icf.maxZImpact = 250. * Units.mm
422 icf.maxdImpactSSSSeeds = 20.0 * Units.mm
424 icf.doBremRecoverySi =
False
425 icf.maxSeedsPerSP_Pixels = 5
426 icf.keepAllConfirmedPixelSeeds =
False
433 icf.extension =
"UPC"
435 icf.minPTBrem =
lambda pcf: (
436 0.75 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
438 icf.doBremRecoverySi =
lambda pcf: pcf.Tracking.doBremRecovery
444 icf.extension =
"HIP"
451 icf.extension =
"LowPtRoI"
452 icf.usePrdAssociationTool =
True
453 icf.storeSeparateContainer =
True
454 icf.maxPT =
lambda pcf: (
455 0.850 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
456 icf.minPT =
lambda pcf: (
457 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
459 icf.minSiNotShared = 4
463 icf.maxPixelHoles = 1
465 icf.maxDoubleHoles = 1
466 icf.radMax = 600. * Units.mm
467 icf.nHolesMax = icf.maxHoles
468 icf.nHolesGapMax = icf.maxHoles
469 icf.doBremRecoverySi =
False
471 icf.addFlag(
"z0WindowRoI", 30.0)
472 icf.addFlag(
"doRandomSpot",
False)
473 icf.addFlag(
"RoIStrategy", RoIStrategy.LeadTracks)
474 icf.addFlag(
"inputLowPtRoIfile",
"")
482 icf.extension =
"R3LargeD0"
483 icf.usePrdAssociationTool =
True
484 icf.usePixelSeeding =
False
485 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
486 icf.maxPT =
lambda pcf : (
487 1.0 * Units.TeV * pcf.BField.configuredSolenoidFieldScale)
488 icf.minPT =
lambda pcf : (
489 1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
491 icf.maxPrimaryImpact = 300.0 * Units.mm
492 icf.maxEMImpact = 300 * Units.mm
493 icf.maxZImpact = 500 * Units.mm
495 icf.minSiNotShared = 6
499 icf.maxPixelHoles = 1
501 icf.maxDoubleHoles = 0
502 icf.radMax = 600. * Units.mm
503 icf.nHolesMax = icf.maxHoles
505 icf.maxTracksPerSharedPRD = 2
507 icf.Xi2maxNoAdd = 25.0
509 icf.nWeightedClustersMin = 8
510 icf.maxdImpactSSSSeeds = 300.0
511 icf.doZBoundary =
True
512 icf.keepAllConfirmedStripSeeds =
True
513 icf.maxSeedsPerSP_Strips = 1
514 icf.doBremRecoverySi =
False
516 icf.RunPixelPID =
False
517 icf.RunTRTPID =
False
524 icf.extension =
"LowPtLargeD0"
525 icf.usePrdAssociationTool =
True
526 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
527 icf.maxPT =
lambda pcf: (
528 1.0 * Units.TeV * pcf.BField.configuredSolenoidFieldScale)
529 icf.minPT =
lambda pcf: (
530 100 * Units.MeV * pcf.BField.configuredSolenoidFieldScale)
532 icf.maxPrimaryImpact = 300.0 * Units.mm
533 icf.maxZImpact = 1500.0 * Units.mm
535 icf.minSiNotShared = 5
539 icf.maxPixelHoles = 1
541 icf.maxDoubleHoles = 1
542 icf.radMax = 600. * Units.mm
543 icf.nHolesMax = icf.maxHoles
544 icf.nHolesGapMax = icf.maxHoles
545 icf.maxTracksPerSharedPRD = 2
546 icf.doBremRecoverySi =
False
548 icf.RunPixelPID =
False
549 icf.RunTRTPID =
False
556 icf.extension =
"LowPt"
557 icf.usePrdAssociationTool =
True
559 icf.maxPT =
lambda pcf: (
560 pcf.BField.configuredSolenoidFieldScale *
561 (1e6
if pcf.Tracking.doMinBias
else
562 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
563 icf.minPT =
lambda pcf: (
564 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
566 icf.minSiNotShared = 4
570 icf.maxPixelHoles = 1
572 icf.maxDoubleHoles = 1
573 icf.radMax = 600. * Units.mm
574 icf.nHolesMax = icf.maxHoles
575 icf.nHolesGapMax = icf.maxHoles
576 icf.maxPrimaryImpact =
lambda pcf: (
577 100. * Units.mm
if pcf.Tracking.doMinBias
else 10. * Units.mm)
578 icf.doBremRecoverySi =
False
585 icf.extension =
"Conversion"
586 icf.usePrdAssociationTool =
True
588 icf.etaBins = [-1.0,4.0]
589 icf.minPT =
lambda pcf: (
590 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
591 icf.maxPrimaryImpact = [10.0 * Units.mm]
592 icf.maxZImpact = [150.0 * Units.mm]
593 icf.minClusters = [6]
594 icf.minSiNotShared = [6]
598 icf.maxPixelHoles = [1]
599 icf.maxSctHoles = [2]
600 icf.maxDoubleHoles = [1]
602 icf.nHolesMax = icf.maxHoles
603 icf.nHolesGapMax = icf.maxHoles
604 icf.nWeightedClustersMin = [6]
605 icf.maxdImpactSSSSeeds = [20.0 * Units.mm]
606 icf.radMax = 1100. * Units.mm
607 icf.doZBoundary =
False
610 icf.Xi2maxNoAdd = [25.0]
611 icf.doBremRecoverySi =
True
618 icf.extension =
"VeryLowPt"
619 icf.usePrdAssociationTool =
True
621 icf.useTRTExtension =
False
622 icf.maxPT =
lambda pcf : (
623 pcf.BField.configuredSolenoidFieldScale *
624 (1e6
if pcf.Tracking.doMinBias
else
625 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
626 icf.minPT =
lambda pcf : (
627 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
629 icf.minSiNotShared = 3
633 icf.maxPixelHoles = 1
635 icf.maxDoubleHoles = 0
638 icf.radMax = 600. * Units.mm
639 icf.doBremRecoverySi =
False
646 icf.extension =
"Forward"
647 icf.usePrdAssociationTool =
True
648 icf.useTIDE_Ambi =
False
649 icf.useTRTExtension =
False
650 icf.storeSeparateContainer =
True
653 icf.minPT =
lambda pcf: (
654 2 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
656 icf.minSiNotShared = 3
660 icf.maxPixelHoles = 1
662 icf.maxDoubleHoles = 0
663 icf.nHolesMax = icf.maxHoles
664 icf.nHolesGapMax = icf.maxHoles
665 icf.radMax = 600. * Units.mm
667 icf.doBremRecoverySi =
False
668 icf.doZBoundary =
False
670 icf.RunPixelPID =
False
671 icf.RunTRTPID =
False
678 icf.extension =
"BeamGas"
679 icf.usePrdAssociationTool =
True
680 icf.minPT =
lambda pcf: (
681 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
682 icf.maxPrimaryImpact = 300. * Units.mm
683 icf.maxZImpact = 2000. * Units.mm
686 icf.maxPixelHoles = 3
688 icf.maxDoubleHoles = 1
691 icf.doBremRecoverySi =
False
698 icf.extension =
"VtxLumi"
699 icf.minPT =
lambda pcf: (
700 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
702 icf.maxPixelHoles = 1
703 icf.radMax = 600. * Units.mm
707 icf.doBremRecoverySi =
False
714 icf.extension =
"VtxLumiHeavyIon"
715 icf.minPT =
lambda pcf: (
716 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
717 icf.maxPrimaryImpact = 10. * Units.mm
718 icf.maxZImpact = 250.0 * Units.mm
720 icf.maxPixelHoles = 1
721 icf.radMax = 600. * Units.mm
724 icf.maxdImpactSSSSeeds = 20.
726 icf.keepAllConfirmedPixelSeeds =
False
727 icf.maxSeedsPerSP_Pixels = 5
729 icf.doBremRecoverySi =
False
736 icf.extension =
"VtxBeamSpot"
737 icf.minPT =
lambda pcf: (
738 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
740 icf.maxPixelHoles = 0
741 icf.radMax = 320. * Units.mm
745 icf.doBremRecoverySi =
False
752 icf.extension =
"Cosmics"
753 icf.minPT =
lambda pcf: (
754 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
755 icf.maxPrimaryImpact = 1000. * Units.mm
756 icf.maxZImpact = 10000. * Units.mm
758 icf.minSiNotShared = 4
760 icf.maxPixelHoles = 3
762 icf.maxDoubleHoles = 1
766 icf.Xi2maxNoAdd = 100.
767 icf.nWeightedClustersMin = 8
770 icf.maxdImpactSSSSeeds = 20. * Units.mm
771 icf.doBremRecoverySi =
False
772 icf.doZBoundary =
False
773 icf.maxSeedsPerSP_Pixels = 5
774 icf.keepAllConfirmedPixelSeeds =
False
781 icf.extension =
"HeavyIon"
782 icf.maxPrimaryImpact = 10. * Units.mm
783 icf.maxZImpact = 200. * Units.mm
785 icf.minSiNotShared = 7
791 icf.Xi2maxNoAdd = 10.
793 icf.minPT =
lambda pcf: (
794 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
796 icf.maxdImpactSSSSeeds = 20. * Units.mm
797 icf.maxdImpactPPSSeeds = 1.7
800 icf.maxPixelHoles = 1
802 icf.maxDoubleHoles = 0
804 icf.Xi2maxNoAdd = 25.
805 icf.radMax = 600. * Units.mm
808 icf.doBremRecoverySi =
False
809 icf.doZBoundary =
False
810 icf.maxSeedsPerSP_Pixels = 5
811 icf.keepAllConfirmedPixelSeeds =
False
818 icf.extension =
"Pixel"
819 icf.isLowPt =
lambda pcf : pcf.Tracking.doMinBias
822 if pcf.Beam.Type
is BeamType.Cosmics:
823 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
824 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC:
825 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
826 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HIP:
827 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
828 if pcf.Tracking.doMinBias:
829 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
830 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
835 def _pick( default, hion, cosmics):
836 def _internal( pcf ):
837 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HeavyIon:
839 if pcf.Beam.Type
is BeamType.Cosmics:
844 icf.maxHoles = _pick( default = 1, hion = 0, cosmics = 3 )
845 icf.maxPixelHoles = _pick( default = 1, hion = 0, cosmics = 3 )
847 icf.maxDoubleHoles = 0
848 icf.minSiNotShared = 3
850 icf.nHolesMax = _pick( default = 1, hion = 0, cosmics = 3 )
851 icf.nHolesGapMax = _pick( default = 1, hion = 0, cosmics = 3 )
853 icf.useSCTSeeding =
False
855 icf.maxPrimaryImpact =
lambda pcf: (
856 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
857 10. * Units.mm
if pcf.Tracking.doUPC
else
859 icf.roadWidth =
lambda pcf: (
860 60.0
if pcf.Beam.Type
is BeamType.Cosmics
else
862 icf.maxZImpact =
lambda pcf: (
863 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
864 320. * Units.mm
if pcf.Tracking.doLowMu
else
865 250. * Units.mm
if pcf.Tracking.doMinBias
else
867 icf.Xi2max =
lambda pcf: (
868 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
869 15.
if pcf.Tracking.doLowMu
else
871 icf.Xi2maxNoAdd =
lambda pcf: (
872 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
873 35.
if pcf.Tracking.doLowMu
else
875 icf.nWeightedClustersMin = 6
876 icf.doBremRecoverySi =
False
878 icf.RunPixelPID =
lambda pcf: (
879 pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC)
880 icf.RunTRTPID =
False
886 icf.extension =
"Disappearing"
887 icf.usePrdAssociationTool =
True
888 icf.storeSeparateContainer =
True
889 icf.minPT =
lambda pcf: (
890 5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
893 icf.maxPixelHoles = 0
895 icf.maxDoubleHoles = 0
896 icf.minSiNotShared = 3
902 icf.useSCTSeeding =
False
904 icf.doBremRecoverySi =
False
905 def MainPassFlags(pcf):
906 return pcf.Tracking.__getattr__(pcf.Tracking.PrimaryPassConfig.value+
'Pass')
907 icf.maxPrimaryImpact =
lambda pcf: MainPassFlags(pcf).maxPrimaryImpact
908 icf.maxZImpact =
lambda pcf: MainPassFlags(pcf).maxZImpact
909 icf.roadWidth =
lambda pcf: MainPassFlags(pcf).roadWidth
915 icf.extension =
"SCT"
917 icf.maxDoubleHoles = 1
918 icf.minSiNotShared = 5
920 icf.usePixelSeeding =
False
924 if pcf.Beam.Type
is BeamType.Cosmics:
925 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
926 if pcf.Tracking.doMinBias:
927 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
928 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
932 icf.maxPrimaryImpact =
lambda pcf: (
933 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
934 10. * Units.mm
if pcf.Tracking.doLowMu
else
936 icf.maxZImpact =
lambda pcf: (
937 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
938 320. * Units.mm
if pcf.Tracking.doLowMu
else
941 icf.maxHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
942 icf.nHolesMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
943 icf.nHolesGapMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
944 icf.maxPixelHoles =
lambda pcf: 0
if pcf.Beam.Type
is BeamType.Cosmics
else 0
945 icf.maxSctHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
947 icf.roadWidth =
lambda pcf: (
948 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
949 20.
if pcf.Tracking.doLowMu
else
951 icf.Xi2max =
lambda pcf: (
952 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
953 15.
if pcf.Tracking.doLowMu
else
955 icf.Xi2maxNoAdd =
lambda pcf: (
956 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
957 35.
if pcf.Tracking.doLowMu
else
959 icf.nWeightedClustersMin =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 6
960 icf.minClusters =
lambda pcf: (
961 4
if pcf.Beam.Type
is BeamType.Cosmics
else
962 7
if pcf.Tracking.doLowMu
else
964 icf.minSiNotShared =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 5
965 icf.doBremRecoverySi =
False
967 icf.RunPixelPID =
False
968 icf.RunTRTPID =
False
974 icf.extension =
"TRT"
975 icf.useTIDE_Ambi =
False
976 icf.usePrdAssociationTool =
True
977 icf.minPT =
lambda pcf: (
978 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
979 icf.doBremRecoverySi =
False
981 icf.RunPixelPID =
False
982 icf.RunTRTPID =
False
989 icf.extension =
"TRTStandalone"
990 icf.useTIDE_Ambi =
False
991 icf.usePrdAssociationTool =
True
992 icf.doBremRecoverySi =
False
1000 print(
"************************************************************************")
1002 print(
"******************** Tracking reconstruction Config ********************")
1003 print(
" Primary Config is",flags.Tracking[flags.Tracking.PrimaryPassConfig.value+
"Pass"].extension)
1004 flags.dump(pattern=
"Tracking."+flags.Tracking.PrimaryPassConfig.value+
"Pass.*", evaluate=
True)
1005 print(
"************************************************************************")
1011 print(
"************************************************************************")
1013 print(
"******************** Tracking reconstruction Config ********************")
1014 print(
" Active Config is",flags.Tracking.ActiveConfig.extension)
1015 flags.dump(pattern=
"Tracking.ActiveConfig.*", evaluate=
True)
1016 print(
"************************************************************************")
1023 if __name__ ==
"__main__":
1025 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
1028 from AthenaConfiguration.TestDefaults
import defaultTestFiles
1029 flags.Input.Files=defaultTestFiles.RAW_RUN2
1031 from AthenaCommon.Logging
import logging
1032 l = logging.getLogger(
'TrackingPassFlags')
1036 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.MainPass")
1038 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 5.0 * Units.mm,
"wrong cut value {} ".
format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
1039 assert flags.Tracking.HeavyIonPass.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".
format(flags.Tracking.HeavyIonPass.maxPrimaryImpact)
1040 flags.Tracking.doBLS =
True
1041 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".
format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
1043 assert flags.Tracking.ActiveConfig.minPT == 0.5 * Units.GeV,
"wrong cut value {} ".
format(flags.Tracking.ActiveConfig.minPT)
1044 flags.BField.configuredSolenoidFieldScale = 0.1
1045 assert flags.Tracking.ActiveConfig.minPT == 0.05 * Units.GeV,
"wrong cut value {} ".
format(flags.Tracking.ActiveConfig.minPT)
1047 l.info(
"flags.Tracking.ActiveConfig.minPT %f", flags.Tracking.ActiveConfig.minPT * 1.0)
1048 l.info(
"type(flags.Tracking.ActiveConfig.minPT) " +
str(
type(flags.Tracking.ActiveConfig.minPT)))