4import AthenaCommon.SystemOfUnits
as Units
5from AthenaConfiguration.Enums
import BeamType, FlagEnum
6from TrkConfig.TrkConfigFlags
import PrimaryPassConfig
9 LeadTracks =
'LeadTracks'
18 from AthenaConfiguration.AthConfigFlags
import AthConfigFlags
19 icf = AthConfigFlags()
21 icf.addFlag(
"extension",
"" )
23 icf.addFlag(
"usePrdAssociationTool",
False)
24 icf.addFlag(
"isLowPt",
False)
25 icf.addFlag(
"useTIDE_Ambi",
lambda pcf: pcf.Tracking.doTIDE_Ambi)
26 icf.addFlag(
"useTRTExtension",
lambda pcf: pcf.Tracking.doTRTExtension)
27 icf.addFlag(
"storeSeparateContainer",
False)
28 icf.addFlag(
"doAmbiguityProcessorTrackFit",
True)
31 icf.addFlag(
"minPT",
lambda pcf: (pcf.BField.configuredSolenoidFieldScale *
32 (0.4 * Units.GeV
if pcf.Tracking.doLowMu
else
34 icf.addFlag(
"maxPT", 1000.0 * Units.TeV)
35 icf.addFlag(
"minEta", -1)
36 icf.addFlag(
"maxEta", 2.7)
40 icf.addFlag(
"minClusters",
lambda pcf:
41 3
if (pcf.Detector.EnablePixel
and not pcf.Detector.EnableSCT)
else
42 6
if (pcf.Detector.EnableSCT
and not pcf.Detector.EnablePixel)
else
43 7
if pcf.Tracking.doLowMu
else
46 icf.addFlag(
"minSiNotShared", 6)
48 icf.addFlag(
"maxShared", 1)
49 icf.addFlag(
"minPixel", 0)
50 icf.addFlag(
"maxHoles",
lambda pcf: 3
if pcf.Tracking.doLowMu
else 2)
51 icf.addFlag(
"maxPixelHoles",
lambda pcf: 2
if pcf.Tracking.doLowMu
else 1)
52 icf.addFlag(
"maxSctHoles", 2)
53 icf.addFlag(
"maxDoubleHoles", 1)
55 icf.addFlag(
"maxPrimaryImpact",
lambda pcf:
56 10.0 * Units.mm
if (pcf.Tracking.doBLS
or pcf.Tracking.doLowMu)
else
58 icf.addFlag(
"maxEMImpact", 50.0 * Units.mm)
59 icf.addFlag(
"maxZImpact",
lambda pcf:
60 320.0 * Units.mm
if pcf.Tracking.doLowMu
else
64 icf.addFlag(
"minTRTonTrk", 9)
65 icf.addFlag(
"minTRTPrecFrac", 0.3)
70 icf.addFlag(
"radMax", 600.0 * Units.mm)
71 icf.addFlag(
"roadWidth",
lambda pcf: 20.
if pcf.Tracking.doLowMu
else 12.)
72 icf.addFlag(
"nHolesMax",
lambda pcf: 3
if pcf.Tracking.doLowMu
else 2)
73 icf.addFlag(
"nHolesGapMax",
lambda pcf: 3
if pcf.Tracking.doLowMu
else 2)
74 icf.addFlag(
"Xi2max",
lambda pcf: 15.
if pcf.Tracking.doLowMu
else 9.)
75 icf.addFlag(
"Xi2maxNoAdd",
lambda pcf: 35.
if pcf.Tracking.doLowMu
else 25.)
76 icf.addFlag(
"nWeightedClustersMin", 6)
79 icf.addFlag(
"useSeedFilter",
True)
80 icf.addFlag(
"maxTracksPerSharedPRD", 0)
81 icf.addFlag(
"maxdImpactPPSSeeds",
lambda pcf: 1.7
if pcf.Tracking.doLowMu
else 2.)
82 icf.addFlag(
"maxdImpactSSSSeeds",
lambda pcf:
83 1000. * Units.mm
if pcf.Tracking.doLowMu
else
84 10. * Units.mm
if pcf.Tracking.doBLS
else
86 icf.addFlag(
"maxSeedsPerSP_Pixels",
lambda pcf: 5
if pcf.Tracking.doLowMu
else 1)
87 icf.addFlag(
"maxSeedsPerSP_Strips", 5)
88 icf.addFlag(
"keepAllConfirmedPixelSeeds",
lambda pcf:
not pcf.Tracking.doLowMu)
89 icf.addFlag(
"keepAllConfirmedStripSeeds",
False)
92 icf.addFlag(
"doBremRecoverySi",
lambda pcf: pcf.Tracking.doBremRecovery)
93 icf.addFlag(
"minPTBrem",
lambda pcf: (
94 1. * Units.GeV * pcf.BField.configuredSolenoidFieldScale))
97 icf.addFlag(
"doZBoundary",
lambda pcf:
98 not (pcf.Beam.Type
is BeamType.Cosmics
or pcf.Tracking.doLowMu))
100 icf.addFlag(
"usePixel" ,
lambda pcf : pcf.Detector.EnablePixel )
101 icf.addFlag(
"useSCT" ,
lambda pcf : pcf.Detector.EnableSCT )
102 icf.addFlag(
"usePixelSeeding" ,
lambda pcf : pcf.Detector.EnablePixel )
103 icf.addFlag(
"useSCTSeeding" ,
lambda pcf : pcf.Detector.EnableSCT )
106 icf.addFlag(
"RunPixelPID",
True)
107 icf.addFlag(
"RunTRTPID",
True)
112 icf.addFlag(
"storeTrackSeeds",
False)
113 icf.addFlag(
"storeSiSPSeededTracks",
False)
122 from AthenaConfiguration.AthConfigFlags
import AthConfigFlags
123 icf = AthConfigFlags()
125 icf.addFlag(
"extension",
"" )
127 icf.addFlag(
"useITkPixel" ,
lambda pcf : pcf.Detector.EnableITkPixel )
128 icf.addFlag(
"useITkStrip" ,
lambda pcf : pcf.Detector.EnableITkStrip )
129 icf.addFlag(
"useITkPixelSeeding" ,
True )
130 icf.addFlag(
"useITkStripSeeding" ,
True )
132 icf.addFlag(
"usePrdAssociationTool" ,
False)
133 icf.addFlag(
"storeSeparateContainer" ,
False)
134 icf.addFlag(
"doZBoundary" ,
True)
135 icf.addFlag(
"doAmbiguityProcessorTrackFit",
True)
137 icf.addFlag(
"useTIDE_Ambi",
lambda pcf: pcf.Tracking.doTIDE_Ambi)
140 icf.addFlag(
"etaBins" , [-1.0, 2.0, 2.6, 9999.0])
141 icf.addFlag(
"maxEta" , 4.0)
142 icf.addFlag(
"minPT" ,
lambda pcf :
143 [0.2 * Units.GeV * pcf.BField.configuredSolenoidFieldScale]
144 if pcf.Tracking.doLowMu
else
145 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
146 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
147 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
149 icf.addFlag(
"minPTSeed" ,
lambda pcf : (
150 pcf.BField.configuredSolenoidFieldScale *
151 (0.2 * Units.GeV
if pcf.Tracking.doLowMu
152 else 0.9 * Units.GeV)))
153 icf.addFlag(
"maxPrimaryImpactSeed" , 5.0 * Units.mm)
154 icf.addFlag(
"maxZImpactSeed" , 200.0 * Units.mm)
155 icf.addFlag(
"useSeedFilter" ,
True)
156 icf.addFlag(
"useHoughVertexFilter" ,
False)
159 icf.addFlag(
"minClusters" ,
lambda pcf :
160 [6, 5, 4]
if pcf.Tracking.doLowMu
else [9, 8, 7])
161 icf.addFlag(
"minSiNotShared" ,
lambda pcf :
162 [6, 5, 4]
if pcf.Tracking.doLowMu
else [7, 6, 5])
163 icf.addFlag(
"maxShared" , [2])
164 icf.addFlag(
"minPixel" , [1])
165 icf.addFlag(
"maxHoles" , [2])
166 icf.addFlag(
"maxPixelHoles" , [2])
167 icf.addFlag(
"maxSctHoles" , [2])
168 icf.addFlag(
"maxDoubleHoles" , [1])
169 icf.addFlag(
"maxPrimaryImpact" , [5.0 * Units.mm, 5.0 * Units.mm, 10.0 * Units.mm])
170 icf.addFlag(
"maxEMImpact" , [50.0 * Units.mm])
171 icf.addFlag(
"maxZImpact" , [200.0 * Units.mm])
174 icf.addFlag(
"roadWidth" , 20.)
175 icf.addFlag(
"nHolesMax" , icf.maxHoles)
176 icf.addFlag(
"nHolesGapMax" , icf.maxHoles)
178 icf.addFlag(
"Xi2max" , [9.0])
179 icf.addFlag(
"Xi2maxNoAdd" , [25.0])
180 icf.addFlag(
"nWeightedClustersMin" , [6])
183 icf.addFlag(
"maxdImpactSSSSeeds" , [20.0 * Units.mm])
184 icf.addFlag(
"radMax" , 1100. * Units.mm)
187 icf.addFlag(
"doBremRecoverySi",
lambda pcf: pcf.Tracking.doBremRecovery)
188 icf.addFlag(
"minPTBrem",
lambda pcf: (
189 [1. * Units.GeV * pcf.BField.configuredSolenoidFieldScale]))
192 icf.addFlag(
"doCaloSeededBremSi",
lambda pcf: pcf.Tracking.doCaloSeededBrem)
193 icf.addFlag(
"doCaloSeededAmbiSi",
lambda pcf: pcf.Tracking.doCaloSeededAmbi)
197 icf.addFlag(
"doAthenaCluster",
True)
198 icf.addFlag(
"doAthenaSpacePoint",
True)
199 icf.addFlag(
"doAthenaSeed",
True)
200 icf.addFlag(
"doAthenaTrack",
True)
201 icf.addFlag(
"doAthenaAmbiguityResolution",
True)
203 icf.addFlag(
"doActsCluster",
False)
204 icf.addFlag(
"doActsSpacePoint",
False)
205 icf.addFlag(
"doActsSeed",
False)
206 icf.addFlag(
"doActsTrack",
False)
207 icf.addFlag(
"doActsAmbiguityResolution",
False)
209 icf.addFlag(
"doAthenaToActsCluster",
False)
210 icf.addFlag(
"doAthenaToActsSpacePoint",
False)
211 icf.addFlag(
"doAthenaToActsTrack",
False)
213 icf.addFlag(
"doActsToAthenaCluster",
False)
214 icf.addFlag(
"doActsToAthenaSpacePoint",
False)
215 icf.addFlag(
"doActsToAthenaTrack",
False)
216 icf.addFlag(
"doActsToAthenaResolvedTrack",
False)
219 icf.addFlag(
"doGNNTrack",
False)
222 icf.addFlag(
"doFPGASpacePoint",
False)
223 icf.addFlag(
"doFPGACluster",
False)
224 icf.addFlag(
"doFPGASeed",
False)
225 icf.addFlag(
"doFPGATrackSim",
False)
230 icf.addFlag(
"storeTrackSeeds",
False)
231 icf.addFlag(
"storeSiSPSeededTracks",
False)
240 icf.extension =
"HeavyIon"
241 icf.maxPrimaryImpact = [5.0 * Units.mm]
242 icf.minPT =
lambda pcf : (
243 [0.4 *Units.GeV * pcf.BField.configuredSolenoidFieldScale])
244 icf.minPTSeed =
lambda pcf : (
245 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
246 icf.minClusters = [6]
247 icf.minSiNotShared = [6]
249 icf.Xi2maxNoAdd = [9.]
250 icf.maxPixelHoles = [1]
251 icf.maxSctHoles = [1]
252 icf.maxDoubleHoles = [0]
253 icf.doBremRecoverySi =
False
261 icf.minPT =
lambda pcf : (
262 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
263 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
264 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
265 icf.maxZImpact = [150.0 * Units.mm]
268 icf.nHolesMax = icf.maxHoles
269 icf.nHolesGapMax = [1]
270 icf.minPTSeed =
lambda pcf: (
271 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
272 icf.maxZImpactSeed = 150.0 * Units.mm
273 icf.useITkStripSeeding =
False
282 icf.addFlag(
"doHitDV" ,
False)
283 icf.addFlag(
"doDisappearingTrk" ,
False)
284 icf.addFlag(
"useTrigTrackFollowing",
False)
285 icf.addFlag(
"useTrigRoadPredictor",
False)
286 icf.addFlag(
"useTracklets",
False)
287 icf.useSeedFilter =
False
288 icf.minPT =
lambda pcf : (
289 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
290 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
291 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
292 icf.minPTSeed =
lambda pcf : (
293 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
299 icf.addFlag(
"doHitDV" ,
False)
300 icf.addFlag(
"doDisappearingTrk" ,
False)
301 icf.addFlag(
"useTrigTrackFollowing",
False)
302 icf.addFlag(
"useTrigRoadPredictor",
False)
303 icf.addFlag(
"useTracklets",
False)
304 icf.useSeedFilter =
False
305 icf.minPT =
lambda pcf : (
306 [1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
308 icf.maxPrimaryImpact = [400.0 * Units.mm]
309 icf.maxPrimaryImpactSeed = 400.0 * Units.mm
310 icf.maxdImpactSSSSeeds = [400.0 * Units.mm]
320 icf.extension =
"LargeD0"
321 icf.usePrdAssociationTool =
True
322 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
324 icf.minPT =
lambda pcf : (
325 [1000 * Units.MeV * pcf.BField.configuredSolenoidFieldScale])
327 icf.etaBins = [-1.0, 4.0]
328 icf.maxPrimaryImpact = [300 * Units.mm]
329 icf.maxZImpact = [500 * Units.mm]
330 icf.minClusters = [8]
331 icf.minSiNotShared = [6]
335 icf.maxPixelHoles = [1]
336 icf.maxSctHoles = [1]
337 icf.maxDoubleHoles = [0]
339 icf.maxZImpactSeed = 500.0 * Units.mm
340 icf.maxPrimaryImpactSeed = 300.0 * Units.mm
341 icf.minPTSeed =
lambda pcf : (
342 1000 * Units.MeV * pcf.BField.configuredSolenoidFieldScale)
344 icf.radMax = 1100. * Units.mm
345 icf.nHolesMax = icf.maxHoles
346 icf.nHolesGapMax = icf.maxHoles
350 icf.useITkPixelSeeding =
False
351 icf.maxdImpactSSSSeeds = [300.0 * Units.mm]
353 icf.doBremRecoverySi =
False
356 icf.Xi2maxNoAdd = [25.0]
357 icf.nWeightedClustersMin = [6]
365 icf.useITkPixelSeeding =
False
366 icf.useITkStripSeeding =
True
369 icf.etaBins = [-1.0, 2.4]
370 icf.minPT =
lambda pcf : (
371 [5.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
372 icf.minPTSeed =
lambda pcf : (
373 5.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
374 icf.nWeightedClustersMin = [8]
375 icf.maxPrimaryImpact = [150 * Units.mm]
376 icf.maxPrimaryImpactSeed = 150. * Units.mm
377 icf.maxdImpactSSSSeeds = [150.0 * Units.mm]
378 icf.maxZImpact = [200 * Units.mm]
379 icf.maxZImpactSeed = 200. * Units.mm
380 icf.radMax = 400. * Units.mm
388 icf.extension =
"LowPt"
389 icf.minPT =
lambda pcf : (
390 [0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
391 icf.minPTSeed =
lambda pcf : (
392 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
393 icf.doBremRecoverySi =
False
400 icf.extension =
"HighPileup"
401 icf.minPT =
lambda pcf : (
402 0.900 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
404 icf.maxPixelHoles = 0
405 icf.doBremRecoverySi =
False
412 icf.extension =
"MinBias"
413 icf.minPT =
lambda pcf: (
414 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
415 icf.maxPrimaryImpact = 10. * Units.mm
416 icf.maxZImpact = 250. * Units.mm
418 icf.maxdImpactSSSSeeds = 20.0 * Units.mm
420 icf.doBremRecoverySi =
False
421 icf.maxSeedsPerSP_Pixels = 5
422 icf.keepAllConfirmedPixelSeeds =
False
429 icf.extension =
"UPC"
431 icf.minPTBrem =
lambda pcf: (
432 0.75 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
434 icf.doBremRecoverySi =
lambda pcf: pcf.Tracking.doBremRecovery
440 icf.extension =
"HIP"
447 icf.extension =
"LowPtRoI"
448 icf.usePrdAssociationTool =
True
449 icf.storeSeparateContainer =
True
450 icf.maxPT =
lambda pcf: (
451 0.850 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
452 icf.minPT =
lambda pcf: (
453 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
455 icf.minSiNotShared = 4
459 icf.maxPixelHoles = 1
461 icf.maxDoubleHoles = 1
462 icf.radMax = 600. * Units.mm
463 icf.nHolesMax = icf.maxHoles
464 icf.nHolesGapMax = icf.maxHoles
465 icf.doBremRecoverySi =
False
467 icf.addFlag(
"z0WindowRoI", 30.0)
468 icf.addFlag(
"doRandomSpot",
False)
469 icf.addFlag(
"RoIStrategy", RoIStrategy.LeadTracks)
470 icf.addFlag(
"inputLowPtRoIfile",
"")
478 icf.extension =
"R3LargeD0"
479 icf.usePrdAssociationTool =
True
480 icf.usePixelSeeding =
False
481 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
482 icf.maxPT =
lambda pcf : (
483 1.0 * Units.TeV * pcf.BField.configuredSolenoidFieldScale)
484 icf.minPT =
lambda pcf : (
485 1.0 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
487 icf.maxPrimaryImpact = 300.0 * Units.mm
488 icf.maxEMImpact = 300 * Units.mm
489 icf.maxZImpact = 500 * Units.mm
491 icf.minSiNotShared = 6
495 icf.maxPixelHoles = 1
497 icf.maxDoubleHoles = 0
498 icf.radMax = 600. * Units.mm
499 icf.nHolesMax = icf.maxHoles
501 icf.maxTracksPerSharedPRD = 2
503 icf.Xi2maxNoAdd = 25.0
505 icf.nWeightedClustersMin = 8
506 icf.maxdImpactSSSSeeds = 300.0
507 icf.doZBoundary =
True
508 icf.keepAllConfirmedStripSeeds =
True
509 icf.maxSeedsPerSP_Strips = 1
510 icf.doBremRecoverySi =
False
512 icf.RunPixelPID =
False
513 icf.RunTRTPID =
False
520 icf.extension =
"LowPtLargeD0"
521 icf.usePrdAssociationTool =
True
522 icf.storeSeparateContainer =
lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
523 icf.maxPT =
lambda pcf: (
524 1.0 * Units.TeV * pcf.BField.configuredSolenoidFieldScale)
525 icf.minPT =
lambda pcf: (
526 100 * Units.MeV * pcf.BField.configuredSolenoidFieldScale)
528 icf.maxPrimaryImpact = 300.0 * Units.mm
529 icf.maxZImpact = 1500.0 * Units.mm
531 icf.minSiNotShared = 5
535 icf.maxPixelHoles = 1
537 icf.maxDoubleHoles = 1
538 icf.radMax = 600. * Units.mm
539 icf.nHolesMax = icf.maxHoles
540 icf.nHolesGapMax = icf.maxHoles
541 icf.maxTracksPerSharedPRD = 2
542 icf.doBremRecoverySi =
False
544 icf.RunPixelPID =
False
545 icf.RunTRTPID =
False
552 icf.extension =
"LowPt"
553 icf.usePrdAssociationTool =
True
555 icf.maxPT =
lambda pcf: (
556 pcf.BField.configuredSolenoidFieldScale *
557 (1e6
if pcf.Tracking.doMinBias
else
558 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
559 icf.minPT =
lambda pcf: (
560 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
562 icf.minSiNotShared = 4
566 icf.maxPixelHoles = 1
568 icf.maxDoubleHoles = 1
569 icf.radMax = 600. * Units.mm
570 icf.nHolesMax = icf.maxHoles
571 icf.nHolesGapMax = icf.maxHoles
572 icf.maxPrimaryImpact =
lambda pcf: (
573 100. * Units.mm
if pcf.Tracking.doMinBias
else 10. * Units.mm)
574 icf.doBremRecoverySi =
False
581 icf.extension =
"Conversion"
582 icf.usePrdAssociationTool =
True
584 icf.etaBins = [-1.0,4.0]
585 icf.minPT =
lambda pcf: (
586 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
587 icf.maxPrimaryImpact = [10.0 * Units.mm]
588 icf.maxPrimaryImpactSeed = 10.0 * Units.mm
589 icf.maxZImpact = [150.0 * Units.mm]
590 icf.minClusters = [6]
591 icf.minSiNotShared = [6]
595 icf.maxPixelHoles = [1]
596 icf.maxSctHoles = [2]
597 icf.maxDoubleHoles = [1]
599 icf.nHolesMax = icf.maxHoles
600 icf.nHolesGapMax = icf.maxHoles
601 icf.nWeightedClustersMin = [6]
602 icf.maxdImpactSSSSeeds = [20.0 * Units.mm]
603 icf.radMax = 1100. * Units.mm
604 icf.doZBoundary =
False
607 icf.Xi2maxNoAdd = [25.0]
608 icf.doBremRecoverySi =
True
615 icf.extension =
"VeryLowPt"
616 icf.usePrdAssociationTool =
True
618 icf.useTRTExtension =
False
619 icf.maxPT =
lambda pcf : (
620 pcf.BField.configuredSolenoidFieldScale *
621 (1e6
if pcf.Tracking.doMinBias
else
622 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
623 icf.minPT =
lambda pcf : (
624 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
626 icf.minSiNotShared = 3
630 icf.maxPixelHoles = 1
632 icf.maxDoubleHoles = 0
635 icf.radMax = 600. * Units.mm
636 icf.doBremRecoverySi =
False
643 icf.extension =
"Forward"
644 icf.usePrdAssociationTool =
True
645 icf.useTIDE_Ambi =
False
646 icf.useTRTExtension =
False
647 icf.storeSeparateContainer =
True
650 icf.minPT =
lambda pcf: (
651 2 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
653 icf.minSiNotShared = 3
657 icf.maxPixelHoles = 1
659 icf.maxDoubleHoles = 0
660 icf.nHolesMax = icf.maxHoles
661 icf.nHolesGapMax = icf.maxHoles
662 icf.radMax = 600. * Units.mm
663 icf.doBremRecoverySi =
False
664 icf.doZBoundary =
False
666 icf.RunPixelPID =
False
667 icf.RunTRTPID =
False
674 icf.extension =
"BeamGas"
675 icf.usePrdAssociationTool =
True
676 icf.minPT =
lambda pcf: (
677 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
678 icf.maxPrimaryImpact = 300. * Units.mm
679 icf.maxZImpact = 2000. * Units.mm
682 icf.maxPixelHoles = 3
684 icf.maxDoubleHoles = 1
687 icf.doBremRecoverySi =
False
694 icf.extension =
"VtxLumi"
695 icf.minPT =
lambda pcf: (
696 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
698 icf.maxPixelHoles = 1
699 icf.radMax = 600. * Units.mm
702 icf.doBremRecoverySi =
False
709 icf.extension =
"VtxLumiHeavyIon"
710 icf.minPT =
lambda pcf: (
711 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
712 icf.maxPrimaryImpact = 10. * Units.mm
713 icf.maxZImpact = 250.0 * Units.mm
715 icf.maxPixelHoles = 1
716 icf.radMax = 600. * Units.mm
719 icf.maxdImpactSSSSeeds = 20.
721 icf.keepAllConfirmedPixelSeeds =
False
722 icf.maxSeedsPerSP_Pixels = 5
723 icf.doBremRecoverySi =
False
730 icf.extension =
"VtxBeamSpot"
731 icf.minPT =
lambda pcf: (
732 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
734 icf.maxPixelHoles = 0
735 icf.radMax = 320. * Units.mm
738 icf.doBremRecoverySi =
False
745 icf.extension =
"Cosmics"
746 icf.minPT =
lambda pcf: (
747 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
748 icf.maxPrimaryImpact = 1000. * Units.mm
749 icf.maxZImpact = 10000. * Units.mm
751 icf.minSiNotShared = 4
753 icf.maxPixelHoles = 3
755 icf.maxDoubleHoles = 1
759 icf.Xi2maxNoAdd = 100.
760 icf.nWeightedClustersMin = 8
763 icf.maxdImpactSSSSeeds = 20. * Units.mm
764 icf.doBremRecoverySi =
False
765 icf.doZBoundary =
False
766 icf.maxSeedsPerSP_Pixels = 5
767 icf.keepAllConfirmedPixelSeeds =
False
774 icf.extension =
"HeavyIon"
775 icf.maxPrimaryImpact = 10. * Units.mm
776 icf.maxZImpact = 200. * Units.mm
778 icf.minSiNotShared = 7
784 icf.Xi2maxNoAdd = 10.
786 icf.minPT =
lambda pcf: (
787 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
789 icf.maxdImpactSSSSeeds = 20. * Units.mm
790 icf.maxdImpactPPSSeeds = 1.7
793 icf.maxPixelHoles = 1
795 icf.maxDoubleHoles = 0
797 icf.Xi2maxNoAdd = 25.
798 icf.radMax = 600. * Units.mm
800 icf.doBremRecoverySi =
False
801 icf.doZBoundary =
False
802 icf.maxSeedsPerSP_Pixels = 5
803 icf.keepAllConfirmedPixelSeeds =
False
810 icf.extension =
"Pixel"
811 icf.isLowPt =
lambda pcf : pcf.Tracking.doMinBias
814 if pcf.Beam.Type
is BeamType.Cosmics:
815 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
816 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC:
817 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
818 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HIP:
819 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
820 if pcf.Tracking.doMinBias:
821 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
822 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
827 def _pick( default, hion, cosmics):
828 def _internal( pcf ):
829 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HeavyIon:
831 if pcf.Beam.Type
is BeamType.Cosmics:
836 icf.maxHoles = _pick( default = 1, hion = 0, cosmics = 3 )
837 icf.maxPixelHoles = _pick( default = 1, hion = 0, cosmics = 3 )
839 icf.maxDoubleHoles = 0
840 icf.minSiNotShared = 3
842 icf.nHolesMax = _pick( default = 1, hion = 0, cosmics = 3 )
843 icf.nHolesGapMax = _pick( default = 1, hion = 0, cosmics = 3 )
845 icf.useSCTSeeding =
False
846 icf.maxPrimaryImpact =
lambda pcf: (
847 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
848 10. * Units.mm
if pcf.Tracking.doUPC
else
850 icf.roadWidth =
lambda pcf: (
851 60.0
if pcf.Beam.Type
is BeamType.Cosmics
else
853 icf.maxZImpact =
lambda pcf: (
854 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
855 320. * Units.mm
if pcf.Tracking.doLowMu
else
856 250. * Units.mm
if pcf.Tracking.doMinBias
else
858 icf.Xi2max =
lambda pcf: (
859 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
860 15.
if pcf.Tracking.doLowMu
else
862 icf.Xi2maxNoAdd =
lambda pcf: (
863 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
864 35.
if pcf.Tracking.doLowMu
else
866 icf.nWeightedClustersMin = 6
867 icf.doBremRecoverySi =
False
869 icf.RunPixelPID =
lambda pcf: (
870 pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC)
871 icf.RunTRTPID =
False
877 icf.extension =
"Disappearing"
878 icf.usePrdAssociationTool =
True
879 icf.storeSeparateContainer =
True
880 icf.minPT =
lambda pcf: (
881 5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
884 icf.maxPixelHoles = 0
886 icf.maxDoubleHoles = 0
887 icf.minSiNotShared = 3
892 icf.useSCTSeeding =
False
894 icf.doBremRecoverySi =
False
895 def MainPassFlags(pcf):
896 return pcf.Tracking.__getattr__(pcf.Tracking.PrimaryPassConfig.value+
'Pass')
897 icf.maxPrimaryImpact =
lambda pcf: MainPassFlags(pcf).maxPrimaryImpact
898 icf.maxZImpact =
lambda pcf: MainPassFlags(pcf).maxZImpact
899 icf.roadWidth =
lambda pcf: MainPassFlags(pcf).roadWidth
905 icf.extension =
"SCT"
907 icf.maxDoubleHoles = 1
908 icf.minSiNotShared = 5
910 icf.usePixelSeeding =
False
913 if pcf.Beam.Type
is BeamType.Cosmics:
914 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
915 if pcf.Tracking.doMinBias:
916 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
917 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
921 icf.maxPrimaryImpact =
lambda pcf: (
922 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
923 10. * Units.mm
if pcf.Tracking.doLowMu
else
925 icf.maxZImpact =
lambda pcf: (
926 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
927 320. * Units.mm
if pcf.Tracking.doLowMu
else
930 icf.maxHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
931 icf.nHolesMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
932 icf.nHolesGapMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
933 icf.maxPixelHoles =
lambda pcf: 0
if pcf.Beam.Type
is BeamType.Cosmics
else 0
934 icf.maxSctHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
936 icf.roadWidth =
lambda pcf: (
937 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
938 20.
if pcf.Tracking.doLowMu
else
940 icf.Xi2max =
lambda pcf: (
941 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
942 15.
if pcf.Tracking.doLowMu
else
944 icf.Xi2maxNoAdd =
lambda pcf: (
945 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
946 35.
if pcf.Tracking.doLowMu
else
948 icf.nWeightedClustersMin =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 6
949 icf.minClusters =
lambda pcf: (
950 4
if pcf.Beam.Type
is BeamType.Cosmics
else
951 7
if pcf.Tracking.doLowMu
else
953 icf.minSiNotShared =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 5
954 icf.doBremRecoverySi =
False
956 icf.RunPixelPID =
False
957 icf.RunTRTPID =
False
963 icf.extension =
"TRT"
964 icf.useTIDE_Ambi =
False
965 icf.usePrdAssociationTool =
True
966 icf.minPT =
lambda pcf: (
967 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
968 icf.doBremRecoverySi =
False
970 icf.RunPixelPID =
False
971 icf.RunTRTPID =
False
978 icf.extension =
"TRTStandalone"
979 icf.useTIDE_Ambi =
False
980 icf.usePrdAssociationTool =
True
981 icf.doBremRecoverySi =
False
990 print(
"************************************************************************")
992 print(
"******************** Tracking reconstruction Config ********************")
993 print(
" Primary Config is",flags.Tracking[flags.Tracking.PrimaryPassConfig.value+
"Pass"].extension)
994 flags.dump(pattern=
"Tracking."+flags.Tracking.PrimaryPassConfig.value+
"Pass.*", evaluate=
True)
995 print(
"************************************************************************")
1001 print(
"************************************************************************")
1003 print(
"******************** Tracking reconstruction Config ********************")
1004 print(
" Active Config is",flags.Tracking.ActiveConfig.extension)
1005 flags.dump(pattern=
"Tracking.ActiveConfig.*", evaluate=
True)
1006 print(
"************************************************************************")
1013if __name__ ==
"__main__":
1015 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
1016 flags = initConfigFlags()
1018 from AthenaConfiguration.TestDefaults
import defaultTestFiles
1019 flags.Input.Files=defaultTestFiles.RAW_RUN2
1021 from AthenaCommon.Logging
import logging
1022 l = logging.getLogger(
'TrackingPassFlags')
1026 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.MainPass")
1028 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 5.0 * Units.mm,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
1029 assert flags.Tracking.HeavyIonPass.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".format(flags.Tracking.HeavyIonPass.maxPrimaryImpact)
1030 flags.Tracking.doBLS =
True
1031 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
1033 assert flags.Tracking.ActiveConfig.minPT == 0.5 * Units.GeV,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.minPT)
1034 flags.BField.configuredSolenoidFieldScale = 0.1
1035 assert flags.Tracking.ActiveConfig.minPT == 0.05 * Units.GeV,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.minPT)
1037 l.info(
"flags.Tracking.ActiveConfig.minPT %f", flags.Tracking.ActiveConfig.minPT * 1.0)
1038 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 ########################.
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)
createCosmicsTrackingPassFlags()
Cosmics mode ########################.
createLowPtRoITrackingPassFlags()
LowPtRoI mode ########################.
createLowPtLargeD0TrackingPassFlags()
LowPtLargeD0 mode ########################.
createLowPtTrackingPassFlags()
LowPt mode ########################.
createITkFTFLargeD0PassFlags()
createBeamGasTrackingPassFlags()
BeamGas mode ########################.
createITkTrackingPassFlags()
ITk mode ####################.
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 ################.