3 from __future__
import print_function
6 from AthenaConfiguration.Enums
import BeamType, FlagEnum
7 from TrkConfig.TrkConfigFlags
import PrimaryPassConfig
10 LeadTracks =
'LeadTracks'
19 from AthenaConfiguration.AthConfigFlags
import AthConfigFlags
20 icf = AthConfigFlags()
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(
"useTRT" ,
lambda pcf : pcf.Detector.EnableTRT )
103 icf.addFlag(
"useSCT" ,
lambda pcf : pcf.Detector.EnableSCT )
104 icf.addFlag(
"usePixelSeeding" ,
lambda pcf : pcf.Detector.EnablePixel )
105 icf.addFlag(
"useSCTSeeding" ,
lambda pcf : pcf.Detector.EnableSCT )
108 icf.addFlag(
"RunPixelPID",
True)
109 icf.addFlag(
"RunTRTPID",
True)
114 icf.addFlag(
"storeTrackSeeds",
False)
115 icf.addFlag(
"storeSiSPSeededTracks",
False)
124 from AthenaConfiguration.AthConfigFlags
import AthConfigFlags
125 icf = AthConfigFlags()
127 icf.addFlag(
"extension",
"" )
129 icf.addFlag(
"useITkPixel" ,
lambda pcf : pcf.Detector.EnableITkPixel )
130 icf.addFlag(
"useITkStrip" ,
lambda pcf : pcf.Detector.EnableITkStrip )
131 icf.addFlag(
"useITkPixelSeeding" ,
True )
132 icf.addFlag(
"useITkStripSeeding" ,
True )
134 icf.addFlag(
"usePrdAssociationTool" ,
False)
135 icf.addFlag(
"storeSeparateContainer" ,
False)
136 icf.addFlag(
"doZBoundary" ,
True)
137 icf.addFlag(
"doAmbiguityProcessorTrackFit",
True)
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" , 2.0 * Units.mm)
154 icf.addFlag(
"maxZImpactSeed" , 200.0 * Units.mm)
155 icf.addFlag(
"useSeedFilter" ,
True)
158 icf.addFlag(
"minClusters" ,
lambda pcf :
159 [6, 5, 4]
if pcf.Tracking.doLowMu
else [9, 8, 7])
160 icf.addFlag(
"minSiNotShared" ,
lambda pcf :
161 [6, 5, 4]
if pcf.Tracking.doLowMu
else [7, 6, 5])
162 icf.addFlag(
"maxShared" , [2])
163 icf.addFlag(
"minPixel" , [1])
164 icf.addFlag(
"maxHoles" , [2])
165 icf.addFlag(
"maxPixelHoles" , [2])
166 icf.addFlag(
"maxSctHoles" , [2])
167 icf.addFlag(
"maxDoubleHoles" , [1])
168 icf.addFlag(
"maxPrimaryImpact" , [2.0 * Units.mm, 2.0 * Units.mm, 10.0 * Units.mm])
169 icf.addFlag(
"maxZImpact" , [200.0 * Units.mm])
172 icf.addFlag(
"roadWidth" , 20.)
173 icf.addFlag(
"nHolesMax" , icf.maxHoles)
174 icf.addFlag(
"nHolesGapMax" , icf.maxHoles)
176 icf.addFlag(
"Xi2max" , [9.0])
177 icf.addFlag(
"Xi2maxNoAdd" , [25.0])
178 icf.addFlag(
"nWeightedClustersMin" , [6])
181 icf.addFlag(
"maxdImpactSSSSeeds" , [20.0 * Units.mm])
182 icf.addFlag(
"radMax" , 1100. * Units.mm)
185 icf.addFlag(
"doBremRecoverySi",
lambda pcf: pcf.Tracking.doBremRecovery)
186 icf.addFlag(
"minPTBrem",
lambda pcf: (
187 [1. * Units.GeV * pcf.BField.configuredSolenoidFieldScale]))
190 icf.addFlag(
"doCaloSeededBremSi",
lambda pcf: pcf.Tracking.doCaloSeededBrem)
191 icf.addFlag(
"doCaloSeededAmbiSi",
lambda pcf: pcf.Tracking.doCaloSeededAmbi)
195 icf.addFlag(
"doAthenaCluster",
True)
196 icf.addFlag(
"doAthenaSpacePoint",
True)
197 icf.addFlag(
"doAthenaSeed",
True)
198 icf.addFlag(
"doAthenaTrack",
True)
199 icf.addFlag(
"doAthenaAmbiguityResolution",
True)
201 icf.addFlag(
"doActsCluster",
False)
202 icf.addFlag(
"doActsSpacePoint",
False)
203 icf.addFlag(
"doActsSeed",
False)
204 icf.addFlag(
"doActsTrack",
False)
205 icf.addFlag(
"doActsAmbiguityResolution",
False)
207 icf.addFlag(
"doAthenaToActsCluster",
False)
208 icf.addFlag(
"doAthenaToActsSpacePoint",
False)
209 icf.addFlag(
"doAthenaToActsTrack",
False)
211 icf.addFlag(
"doActsToAthenaCluster",
False)
212 icf.addFlag(
"doActsToAthenaSpacePoint",
False)
213 icf.addFlag(
"doActsToAthenaSeed",
False)
214 icf.addFlag(
"doActsToAthenaTrack",
False)
215 icf.addFlag(
"doActsToAthenaResolvedTrack",
False)
218 icf.addFlag(
"doGNNTrack",
False)
223 icf.addFlag(
"storeTrackSeeds",
False)
224 icf.addFlag(
"storeSiSPSeededTracks",
False)
227 icf.addFlag(
"isSecondaryPass",
False)
235 icf.extension =
"HeavyIon"
236 icf.maxPrimaryImpact = [2.0 * Units.mm]
237 icf.minPT =
lambda pcf : (
238 [0.4 *Units.GeV * pcf.BField.configuredSolenoidFieldScale])
239 icf.minPTSeed =
lambda pcf : (
240 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
241 icf.minClusters = [6]
242 icf.minSiNotShared = [6]
244 icf.Xi2maxNoAdd = [9.]
245 icf.maxPixelHoles = [1]
246 icf.maxSctHoles = [1]
247 icf.maxDoubleHoles = [0]
248 icf.doBremRecoverySi =
False
256 icf.minPT =
lambda pcf : (
257 [1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
258 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
259 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
260 icf.maxZImpact = [150.0 * Units.mm]
263 icf.nHolesGapMax = [1]
264 icf.minPTSeed =
lambda pcf: (
265 1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
266 icf.maxZImpactSeed = 150.0 * Units.mm
267 icf.useITkStripSeeding =
False
276 icf.addFlag(
"doHitDV" ,
False)
277 icf.addFlag(
"doDisappearingTrk" ,
False)
278 icf.useSeedFilter =
False
279 icf.minPT =
lambda pcf : (
280 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
281 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
282 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
283 icf.minPTSeed =
lambda pcf : (
284 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
293 icf.extension =
"LargeD0"
294 icf.usePrdAssociationTool =
True
295 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
297 icf.minPT =
lambda pcf : (
298 [1000 * Units.MeV * pcf.BField.configuredSolenoidFieldScale])
300 icf.etaBins = [-1.0, 4.0]
301 icf.maxPrimaryImpact = [300 * Units.mm]
302 icf.maxZImpact = [500 * Units.mm]
303 icf.minClusters = [8]
304 icf.minSiNotShared = [6]
308 icf.maxPixelHoles = [1]
309 icf.maxSctHoles = [1]
310 icf.maxDoubleHoles = [0]
312 icf.maxZImpactSeed = 500.0 * Units.mm
313 icf.maxPrimaryImpactSeed = 300.0 * Units.mm
314 icf.minPTSeed =
lambda pcf : (
315 1000 * Units.MeV * pcf.BField.configuredSolenoidFieldScale)
317 icf.radMax = 1100. * Units.mm
318 icf.nHolesMax = icf.maxHoles
319 icf.nHolesGapMax = icf.maxHoles
323 icf.useITkPixelSeeding =
False
324 icf.maxdImpactSSSSeeds = [300.0 * Units.mm]
326 icf.doBremRecoverySi =
False
329 icf.Xi2maxNoAdd = [25.0]
330 icf.nWeightedClustersMin = [6]
338 icf.useITkPixelSeeding =
False
339 icf.useITkStripSeeding =
True
342 icf.etaBins = [-1.0, 2.4]
343 icf.minPT =
lambda pcf : (
344 [5.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
345 icf.minPTSeed =
lambda pcf : (
346 5.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
347 icf.nWeightedClustersMin = [8]
348 icf.maxPrimaryImpact = [150 * Units.mm]
349 icf.maxPrimaryImpactSeed = 150. * Units.mm
350 icf.maxdImpactSSSSeeds = [150.0 * Units.mm]
351 icf.maxZImpact = [200 * Units.mm]
352 icf.maxZImpactSeed = 200. * Units.mm
353 icf.radMax = 400. * Units.mm
361 icf.extension =
"LowPt"
362 icf.minPT =
lambda pcf : (
363 [0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
364 icf.minPTSeed =
lambda pcf : (
365 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
366 icf.doBremRecoverySi =
False
373 icf.extension =
"HighPileup"
374 icf.minPT =
lambda pcf : (
375 0.900 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
377 icf.maxPixelHoles = 0
378 icf.doBremRecoverySi =
False
385 icf.extension =
"MinBias"
386 icf.minPT =
lambda pcf: (
387 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
388 icf.maxPrimaryImpact = 10. * Units.mm
389 icf.maxZImpact = 250. * Units.mm
391 icf.maxdImpactSSSSeeds = 20.0 * Units.mm
393 icf.doBremRecoverySi =
False
394 icf.maxSeedsPerSP_Pixels = 5
395 icf.keepAllConfirmedPixelSeeds =
False
402 icf.extension =
"UPC"
404 icf.minPTBrem =
lambda pcf: (
405 0.75 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
407 icf.doBremRecoverySi =
lambda pcf: pcf.Tracking.doBremRecovery
413 icf.extension =
"HIP"
420 icf.extension =
"LowPtRoI"
421 icf.usePrdAssociationTool =
True
422 icf.storeSeparateContainer =
True
423 icf.maxPT =
lambda pcf: (
424 0.850 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
425 icf.minPT =
lambda pcf: (
426 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
428 icf.minSiNotShared = 4
432 icf.maxPixelHoles = 1
434 icf.maxDoubleHoles = 1
435 icf.radMax = 600. * Units.mm
436 icf.nHolesMax = icf.maxHoles
437 icf.nHolesGapMax = icf.maxHoles
438 icf.doBremRecoverySi =
False
440 icf.addFlag(
"z0WindowRoI", 30.0)
441 icf.addFlag(
"doRandomSpot",
False)
442 icf.addFlag(
"RoIStrategy", RoIStrategy.LeadTracks)
443 icf.addFlag(
"inputLowPtRoIfile",
"")
451 icf.extension =
"R3LargeD0"
452 icf.usePrdAssociationTool =
True
453 icf.usePixelSeeding =
False
454 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
455 icf.maxPT =
lambda pcf : (
456 1.0 * Units.TeV * pcf.BField.configuredSolenoidFieldScale)
457 icf.minPT =
lambda pcf : (
458 1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
460 icf.maxPrimaryImpact = 300.0 * Units.mm
461 icf.maxEMImpact = 300 * Units.mm
462 icf.maxZImpact = 500 * Units.mm
464 icf.minSiNotShared = 6
468 icf.maxPixelHoles = 1
470 icf.maxDoubleHoles = 0
471 icf.radMax = 600. * Units.mm
472 icf.nHolesMax = icf.maxHoles
474 icf.maxTracksPerSharedPRD = 2
476 icf.Xi2maxNoAdd = 25.0
478 icf.nWeightedClustersMin = 8
479 icf.maxdImpactSSSSeeds = 300.0
480 icf.doZBoundary =
True
481 icf.keepAllConfirmedStripSeeds =
True
482 icf.maxSeedsPerSP_Strips = 1
483 icf.doBremRecoverySi =
False
485 icf.RunPixelPID =
False
486 icf.RunTRTPID =
False
493 icf.extension =
"LowPtLargeD0"
494 icf.usePrdAssociationTool =
True
495 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
496 icf.maxPT =
lambda pcf: (
497 1.0 * Units.TeV * pcf.BField.configuredSolenoidFieldScale)
498 icf.minPT =
lambda pcf: (
499 100 * Units.MeV * pcf.BField.configuredSolenoidFieldScale)
501 icf.maxPrimaryImpact = 300.0 * Units.mm
502 icf.maxZImpact = 1500.0 * Units.mm
504 icf.minSiNotShared = 5
508 icf.maxPixelHoles = 1
510 icf.maxDoubleHoles = 1
511 icf.radMax = 600. * Units.mm
512 icf.nHolesMax = icf.maxHoles
513 icf.nHolesGapMax = icf.maxHoles
514 icf.maxTracksPerSharedPRD = 2
515 icf.doBremRecoverySi =
False
517 icf.RunPixelPID =
False
518 icf.RunTRTPID =
False
525 icf.extension =
"LowPt"
526 icf.usePrdAssociationTool =
True
528 icf.maxPT =
lambda pcf: (
529 pcf.BField.configuredSolenoidFieldScale *
530 (1e6
if pcf.Tracking.doMinBias
else
531 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
532 icf.minPT =
lambda pcf: (
533 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
535 icf.minSiNotShared = 4
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.maxPrimaryImpact =
lambda pcf: (
546 100. * Units.mm
if pcf.Tracking.doMinBias
else 10. * Units.mm)
547 icf.doBremRecoverySi =
False
554 icf.extension =
"Conversion"
555 icf.usePrdAssociationTool =
True
557 icf.etaBins = [-1.0,4.0]
558 icf.minPT =
lambda pcf: (
559 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
560 icf.maxPrimaryImpact = [10.0 * Units.mm]
561 icf.maxZImpact = [150.0 * Units.mm]
562 icf.minClusters = [6]
563 icf.minSiNotShared = [6]
567 icf.maxPixelHoles = [1]
568 icf.maxSctHoles = [2]
569 icf.maxDoubleHoles = [1]
571 icf.nHolesMax = icf.maxHoles
572 icf.nHolesGapMax = icf.maxHoles
573 icf.nWeightedClustersMin = [6]
574 icf.maxdImpactSSSSeeds = [20.0 * Units.mm]
575 icf.radMax = 1000. * Units.mm
576 icf.doZBoundary =
False
579 icf.Xi2maxNoAdd = [25.0]
580 icf.doBremRecoverySi =
True
587 icf.extension =
"VeryLowPt"
588 icf.usePrdAssociationTool =
True
590 icf.useTRTExtension =
False
591 icf.maxPT =
lambda pcf : (
592 pcf.BField.configuredSolenoidFieldScale *
593 (1e6
if pcf.Tracking.doMinBias
else
594 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
595 icf.minPT =
lambda pcf : (
596 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
598 icf.minSiNotShared = 3
602 icf.maxPixelHoles = 1
604 icf.maxDoubleHoles = 0
607 icf.radMax = 600. * Units.mm
608 icf.doBremRecoverySi =
False
615 icf.extension =
"Forward"
616 icf.usePrdAssociationTool =
True
617 icf.useTIDE_Ambi =
False
618 icf.useTRTExtension =
False
619 icf.storeSeparateContainer =
True
622 icf.minPT =
lambda pcf: (
623 2 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
625 icf.minSiNotShared = 3
629 icf.maxPixelHoles = 1
631 icf.maxDoubleHoles = 0
632 icf.nHolesMax = icf.maxHoles
633 icf.nHolesGapMax = icf.maxHoles
634 icf.radMax = 600. * Units.mm
636 icf.doBremRecoverySi =
False
637 icf.doZBoundary =
False
639 icf.RunPixelPID =
False
640 icf.RunTRTPID =
False
647 icf.extension =
"BeamGas"
648 icf.usePrdAssociationTool =
True
649 icf.minPT =
lambda pcf: (
650 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
651 icf.maxPrimaryImpact = 300. * Units.mm
652 icf.maxZImpact = 2000. * Units.mm
655 icf.maxPixelHoles = 3
657 icf.maxDoubleHoles = 1
660 icf.doBremRecoverySi =
False
667 icf.extension =
"VtxLumi"
668 icf.minPT =
lambda pcf: (
669 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
671 icf.maxPixelHoles = 1
672 icf.radMax = 600. * Units.mm
676 icf.doBremRecoverySi =
False
683 icf.extension =
"VtxBeamSpot"
684 icf.minPT =
lambda pcf: (
685 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
687 icf.maxPixelHoles = 0
688 icf.radMax = 320. * Units.mm
692 icf.doBremRecoverySi =
False
699 icf.extension =
"Cosmics"
700 icf.minPT =
lambda pcf: (
701 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
702 icf.maxPrimaryImpact = 1000. * Units.mm
703 icf.maxZImpact = 10000. * Units.mm
705 icf.minSiNotShared = 4
707 icf.maxPixelHoles = 3
709 icf.maxDoubleHoles = 1
713 icf.Xi2maxNoAdd = 100.
714 icf.nWeightedClustersMin = 8
717 icf.maxdImpactSSSSeeds = 20. * Units.mm
718 icf.doBremRecoverySi =
False
719 icf.doZBoundary =
False
720 icf.maxSeedsPerSP_Pixels = 5
721 icf.keepAllConfirmedPixelSeeds =
False
728 icf.extension =
"HeavyIon"
729 icf.maxPrimaryImpact = 10. * Units.mm
730 icf.maxZImpact = 200. * Units.mm
732 icf.minSiNotShared = 7
738 icf.Xi2maxNoAdd = 10.
740 icf.minPT =
lambda pcf: (
741 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
743 icf.maxdImpactSSSSeeds = 20. * Units.mm
744 icf.maxdImpactPPSSeeds = 1.7
747 icf.maxPixelHoles = 1
749 icf.maxDoubleHoles = 0
751 icf.Xi2maxNoAdd = 25.
752 icf.radMax = 600. * Units.mm
755 icf.doBremRecoverySi =
False
756 icf.doZBoundary =
False
757 icf.maxSeedsPerSP_Pixels = 5
758 icf.keepAllConfirmedPixelSeeds =
False
765 icf.extension =
"Pixel"
766 icf.isLowPt =
lambda pcf : pcf.Tracking.doMinBias
769 if pcf.Beam.Type
is BeamType.Cosmics:
770 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
771 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC:
772 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
773 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HIP:
774 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
775 if pcf.Tracking.doMinBias:
776 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
777 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
782 def _pick( default, hion, cosmics):
783 def _internal( pcf ):
784 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HeavyIon:
786 if pcf.Beam.Type
is BeamType.Cosmics:
791 icf.maxHoles = _pick( default = 1, hion = 0, cosmics = 3 )
792 icf.maxPixelHoles = _pick( default = 1, hion = 0, cosmics = 3 )
794 icf.maxDoubleHoles = 0
795 icf.minSiNotShared = 3
797 icf.nHolesMax = _pick( default = 1, hion = 0, cosmics = 3 )
798 icf.nHolesGapMax = _pick( default = 1, hion = 0, cosmics = 3 )
800 icf.useSCTSeeding =
False
802 icf.maxPrimaryImpact =
lambda pcf: (
803 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
804 10. * Units.mm
if pcf.Tracking.doUPC
else
806 icf.roadWidth =
lambda pcf: (
807 60.0
if pcf.Beam.Type
is BeamType.Cosmics
else
809 icf.maxZImpact =
lambda pcf: (
810 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
811 320. * Units.mm
if pcf.Tracking.doLowMu
else
812 250. * Units.mm
if pcf.Tracking.doMinBias
else
814 icf.Xi2max =
lambda pcf: (
815 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
816 15.
if pcf.Tracking.doLowMu
else
818 icf.Xi2maxNoAdd =
lambda pcf: (
819 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
820 35.
if pcf.Tracking.doLowMu
else
822 icf.nWeightedClustersMin = 6
823 icf.doBremRecoverySi =
False
825 icf.RunPixelPID =
lambda pcf: (
826 pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC)
827 icf.RunTRTPID =
False
833 icf.extension =
"Disappearing"
834 icf.usePrdAssociationTool =
True
835 icf.storeSeparateContainer =
True
836 icf.minPT =
lambda pcf: (
837 5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
840 icf.maxPixelHoles = 0
842 icf.maxDoubleHoles = 0
843 icf.minSiNotShared = 3
849 icf.useSCTSeeding =
False
851 icf.doBremRecoverySi =
False
852 def MainPassFlags(pcf):
853 return pcf.Tracking.__getattr__(pcf.Tracking.PrimaryPassConfig.value+
'Pass')
854 icf.maxPrimaryImpact =
lambda pcf: MainPassFlags(pcf).maxPrimaryImpact
855 icf.maxZImpact =
lambda pcf: MainPassFlags(pcf).maxZImpact
856 icf.roadWidth =
lambda pcf: MainPassFlags(pcf).roadWidth
862 icf.extension =
"SCT"
864 icf.maxDoubleHoles = 1
865 icf.minSiNotShared = 5
867 icf.usePixelSeeding =
False
871 if pcf.Beam.Type
is BeamType.Cosmics:
872 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
873 if pcf.Tracking.doMinBias:
874 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
875 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
879 icf.maxPrimaryImpact =
lambda pcf: (
880 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
881 10. * Units.mm
if pcf.Tracking.doLowMu
else
883 icf.maxZImpact =
lambda pcf: (
884 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
885 320. * Units.mm
if pcf.Tracking.doLowMu
else
888 icf.maxHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
889 icf.nHolesMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
890 icf.nHolesGapMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
891 icf.maxPixelHoles =
lambda pcf: 0
if pcf.Beam.Type
is BeamType.Cosmics
else 0
892 icf.maxSctHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
894 icf.roadWidth =
lambda pcf: (
895 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
896 20.
if pcf.Tracking.doLowMu
else
898 icf.Xi2max =
lambda pcf: (
899 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
900 15.
if pcf.Tracking.doLowMu
else
902 icf.Xi2maxNoAdd =
lambda pcf: (
903 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
904 35.
if pcf.Tracking.doLowMu
else
906 icf.nWeightedClustersMin =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 6
907 icf.minClusters =
lambda pcf: (
908 4
if pcf.Beam.Type
is BeamType.Cosmics
else
909 7
if pcf.Tracking.doLowMu
else
911 icf.minSiNotShared =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 5
912 icf.doBremRecoverySi =
False
914 icf.RunPixelPID =
False
915 icf.RunTRTPID =
False
921 icf.extension =
"TRT"
922 icf.useTIDE_Ambi =
False
923 icf.usePrdAssociationTool =
True
924 icf.minPT =
lambda pcf: (
925 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
926 icf.doBremRecoverySi =
False
928 icf.RunPixelPID =
False
929 icf.RunTRTPID =
False
936 icf.extension =
"TRTStandalone"
937 icf.useTIDE_Ambi =
False
938 icf.usePrdAssociationTool =
True
939 icf.doBremRecoverySi =
False
947 print(
"************************************************************************")
949 print(
"******************** Tracking reconstruction Config ********************")
950 print(
" Active Config is",flags.Tracking.ActiveConfig.extension)
951 flags.dump(pattern=
"Tracking.ActiveConfig.*", evaluate=
True)
952 print(
"************************************************************************")
959 if __name__ ==
"__main__":
961 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
964 from AthenaConfiguration.TestDefaults
import defaultTestFiles
965 flags.Input.Files=defaultTestFiles.RAW_RUN2
967 from AthenaCommon.Logging
import logging
968 l = logging.getLogger(
'TrackingPassFlags')
972 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.MainPass")
974 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 5.0 * Units.mm,
"wrong cut value {} ".
format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
975 assert flags.Tracking.HeavyIonPass.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".
format(flags.Tracking.HeavyIonPass.maxPrimaryImpact)
976 flags.Tracking.doBLS =
True
977 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".
format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
979 assert flags.Tracking.ActiveConfig.minPT == 0.5 * Units.GeV,
"wrong cut value {} ".
format(flags.Tracking.ActiveConfig.minPT)
980 flags.BField.configuredSolenoidFieldScale = 0.1
981 assert flags.Tracking.ActiveConfig.minPT == 0.05 * Units.GeV,
"wrong cut value {} ".
format(flags.Tracking.ActiveConfig.minPT)
983 l.info(
"flags.Tracking.ActiveConfig.minPT %f", flags.Tracking.ActiveConfig.minPT * 1.0)
984 l.info(
"type(flags.Tracking.ActiveConfig.minPT) " +
str(
type(flags.Tracking.ActiveConfig.minPT)))