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(
"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(
"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 = [2.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.maxZImpact = [150.0 * Units.mm]
589 icf.minClusters = [6]
590 icf.minSiNotShared = [6]
594 icf.maxPixelHoles = [1]
595 icf.maxSctHoles = [2]
596 icf.maxDoubleHoles = [1]
598 icf.nHolesMax = icf.maxHoles
599 icf.nHolesGapMax = icf.maxHoles
600 icf.nWeightedClustersMin = [6]
601 icf.maxdImpactSSSSeeds = [20.0 * Units.mm]
602 icf.radMax = 1100. * Units.mm
603 icf.doZBoundary =
False
606 icf.Xi2maxNoAdd = [25.0]
607 icf.doBremRecoverySi =
True
614 icf.extension =
"VeryLowPt"
615 icf.usePrdAssociationTool =
True
617 icf.useTRTExtension =
False
618 icf.maxPT =
lambda pcf : (
619 pcf.BField.configuredSolenoidFieldScale *
620 (1e6
if pcf.Tracking.doMinBias
else
621 pcf.Tracking.MainPass.minPT + 0.3) * Units.GeV)
622 icf.minPT =
lambda pcf : (
623 0.050 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
625 icf.minSiNotShared = 3
629 icf.maxPixelHoles = 1
631 icf.maxDoubleHoles = 0
634 icf.radMax = 600. * Units.mm
635 icf.doBremRecoverySi =
False
642 icf.extension =
"Forward"
643 icf.usePrdAssociationTool =
True
644 icf.useTIDE_Ambi =
False
645 icf.useTRTExtension =
False
646 icf.storeSeparateContainer =
True
649 icf.minPT =
lambda pcf: (
650 2 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
652 icf.minSiNotShared = 3
656 icf.maxPixelHoles = 1
658 icf.maxDoubleHoles = 0
659 icf.nHolesMax = icf.maxHoles
660 icf.nHolesGapMax = icf.maxHoles
661 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
703 icf.doBremRecoverySi =
False
710 icf.extension =
"VtxLumiHeavyIon"
711 icf.minPT =
lambda pcf: (
712 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
713 icf.maxPrimaryImpact = 10. * Units.mm
714 icf.maxZImpact = 250.0 * Units.mm
716 icf.maxPixelHoles = 1
717 icf.radMax = 600. * Units.mm
720 icf.maxdImpactSSSSeeds = 20.
722 icf.keepAllConfirmedPixelSeeds =
False
723 icf.maxSeedsPerSP_Pixels = 5
725 icf.doBremRecoverySi =
False
732 icf.extension =
"VtxBeamSpot"
733 icf.minPT =
lambda pcf: (
734 0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
736 icf.maxPixelHoles = 0
737 icf.radMax = 320. * Units.mm
741 icf.doBremRecoverySi =
False
748 icf.extension =
"Cosmics"
749 icf.minPT =
lambda pcf: (
750 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
751 icf.maxPrimaryImpact = 1000. * Units.mm
752 icf.maxZImpact = 10000. * Units.mm
754 icf.minSiNotShared = 4
756 icf.maxPixelHoles = 3
758 icf.maxDoubleHoles = 1
762 icf.Xi2maxNoAdd = 100.
763 icf.nWeightedClustersMin = 8
766 icf.maxdImpactSSSSeeds = 20. * Units.mm
767 icf.doBremRecoverySi =
False
768 icf.doZBoundary =
False
769 icf.maxSeedsPerSP_Pixels = 5
770 icf.keepAllConfirmedPixelSeeds =
False
777 icf.extension =
"HeavyIon"
778 icf.maxPrimaryImpact = 10. * Units.mm
779 icf.maxZImpact = 200. * Units.mm
781 icf.minSiNotShared = 7
787 icf.Xi2maxNoAdd = 10.
789 icf.minPT =
lambda pcf: (
790 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
792 icf.maxdImpactSSSSeeds = 20. * Units.mm
793 icf.maxdImpactPPSSeeds = 1.7
796 icf.maxPixelHoles = 1
798 icf.maxDoubleHoles = 0
800 icf.Xi2maxNoAdd = 25.
801 icf.radMax = 600. * Units.mm
804 icf.doBremRecoverySi =
False
805 icf.doZBoundary =
False
806 icf.maxSeedsPerSP_Pixels = 5
807 icf.keepAllConfirmedPixelSeeds =
False
814 icf.extension =
"Pixel"
815 icf.isLowPt =
lambda pcf : pcf.Tracking.doMinBias
818 if pcf.Beam.Type
is BeamType.Cosmics:
819 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
820 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC:
821 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
822 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HIP:
823 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
824 if pcf.Tracking.doMinBias:
825 return 0.05 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
826 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
831 def _pick( default, hion, cosmics):
832 def _internal( pcf ):
833 if pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.HeavyIon:
835 if pcf.Beam.Type
is BeamType.Cosmics:
840 icf.maxHoles = _pick( default = 1, hion = 0, cosmics = 3 )
841 icf.maxPixelHoles = _pick( default = 1, hion = 0, cosmics = 3 )
843 icf.maxDoubleHoles = 0
844 icf.minSiNotShared = 3
846 icf.nHolesMax = _pick( default = 1, hion = 0, cosmics = 3 )
847 icf.nHolesGapMax = _pick( default = 1, hion = 0, cosmics = 3 )
849 icf.useSCTSeeding =
False
851 icf.maxPrimaryImpact =
lambda pcf: (
852 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
853 10. * Units.mm
if pcf.Tracking.doUPC
else
855 icf.roadWidth =
lambda pcf: (
856 60.0
if pcf.Beam.Type
is BeamType.Cosmics
else
858 icf.maxZImpact =
lambda pcf: (
859 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
860 320. * Units.mm
if pcf.Tracking.doLowMu
else
861 250. * Units.mm
if pcf.Tracking.doMinBias
else
863 icf.Xi2max =
lambda pcf: (
864 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
865 15.
if pcf.Tracking.doLowMu
else
867 icf.Xi2maxNoAdd =
lambda pcf: (
868 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
869 35.
if pcf.Tracking.doLowMu
else
871 icf.nWeightedClustersMin = 6
872 icf.doBremRecoverySi =
False
874 icf.RunPixelPID =
lambda pcf: (
875 pcf.Tracking.PrimaryPassConfig
is PrimaryPassConfig.UPC)
876 icf.RunTRTPID =
False
882 icf.extension =
"Disappearing"
883 icf.usePrdAssociationTool =
True
884 icf.storeSeparateContainer =
True
885 icf.minPT =
lambda pcf: (
886 5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
889 icf.maxPixelHoles = 0
891 icf.maxDoubleHoles = 0
892 icf.minSiNotShared = 3
898 icf.useSCTSeeding =
False
900 icf.doBremRecoverySi =
False
901 def MainPassFlags(pcf):
902 return pcf.Tracking.__getattr__(pcf.Tracking.PrimaryPassConfig.value+
'Pass')
903 icf.maxPrimaryImpact =
lambda pcf: MainPassFlags(pcf).maxPrimaryImpact
904 icf.maxZImpact =
lambda pcf: MainPassFlags(pcf).maxZImpact
905 icf.roadWidth =
lambda pcf: MainPassFlags(pcf).roadWidth
911 icf.extension =
"SCT"
913 icf.maxDoubleHoles = 1
914 icf.minSiNotShared = 5
916 icf.usePixelSeeding =
False
920 if pcf.Beam.Type
is BeamType.Cosmics:
921 return 0.5 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
922 if pcf.Tracking.doMinBias:
923 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
924 return 0.1 * Units.GeV * pcf.BField.configuredSolenoidFieldScale
928 icf.maxPrimaryImpact =
lambda pcf: (
929 1000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
930 10. * Units.mm
if pcf.Tracking.doLowMu
else
932 icf.maxZImpact =
lambda pcf: (
933 10000. * Units.mm
if pcf.Beam.Type
is BeamType.Cosmics
else
934 320. * Units.mm
if pcf.Tracking.doLowMu
else
937 icf.maxHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
938 icf.nHolesMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
939 icf.nHolesGapMax =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
940 icf.maxPixelHoles =
lambda pcf: 0
if pcf.Beam.Type
is BeamType.Cosmics
else 0
941 icf.maxSctHoles =
lambda pcf: 3
if pcf.Beam.Type
is BeamType.Cosmics
else 2
943 icf.roadWidth =
lambda pcf: (
944 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
945 20.
if pcf.Tracking.doLowMu
else
947 icf.Xi2max =
lambda pcf: (
948 60.
if pcf.Beam.Type
is BeamType.Cosmics
else
949 15.
if pcf.Tracking.doLowMu
else
951 icf.Xi2maxNoAdd =
lambda pcf: (
952 100.0
if pcf.Beam.Type
is BeamType.Cosmics
else
953 35.
if pcf.Tracking.doLowMu
else
955 icf.nWeightedClustersMin =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 6
956 icf.minClusters =
lambda pcf: (
957 4
if pcf.Beam.Type
is BeamType.Cosmics
else
958 7
if pcf.Tracking.doLowMu
else
960 icf.minSiNotShared =
lambda pcf: 4
if pcf.Beam.Type
is BeamType.Cosmics
else 5
961 icf.doBremRecoverySi =
False
963 icf.RunPixelPID =
False
964 icf.RunTRTPID =
False
970 icf.extension =
"TRT"
971 icf.useTIDE_Ambi =
False
972 icf.usePrdAssociationTool =
True
973 icf.minPT =
lambda pcf: (
974 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
975 icf.doBremRecoverySi =
False
977 icf.RunPixelPID =
False
978 icf.RunTRTPID =
False
985 icf.extension =
"TRTStandalone"
986 icf.useTIDE_Ambi =
False
987 icf.usePrdAssociationTool =
True
988 icf.doBremRecoverySi =
False
996 print(
"************************************************************************")
998 print(
"******************** Tracking reconstruction Config ********************")
999 print(
" Primary Config is",flags.Tracking[flags.Tracking.PrimaryPassConfig.value+
"Pass"].extension)
1000 flags.dump(pattern=
"Tracking."+flags.Tracking.PrimaryPassConfig.value+
"Pass.*", evaluate=
True)
1001 print(
"************************************************************************")
1007 print(
"************************************************************************")
1009 print(
"******************** Tracking reconstruction Config ********************")
1010 print(
" Active Config is",flags.Tracking.ActiveConfig.extension)
1011 flags.dump(pattern=
"Tracking.ActiveConfig.*", evaluate=
True)
1012 print(
"************************************************************************")
1019if __name__ ==
"__main__":
1021 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
1022 flags = initConfigFlags()
1024 from AthenaConfiguration.TestDefaults
import defaultTestFiles
1025 flags.Input.Files=defaultTestFiles.RAW_RUN2
1027 from AthenaCommon.Logging
import logging
1028 l = logging.getLogger(
'TrackingPassFlags')
1032 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.MainPass")
1034 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 5.0 * Units.mm,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
1035 assert flags.Tracking.HeavyIonPass.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".format(flags.Tracking.HeavyIonPass.maxPrimaryImpact)
1036 flags.Tracking.doBLS =
True
1037 assert flags.Tracking.ActiveConfig.maxPrimaryImpact == 10.0 * Units.mm,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.maxPrimaryImpact)
1039 assert flags.Tracking.ActiveConfig.minPT == 0.5 * Units.GeV,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.minPT)
1040 flags.BField.configuredSolenoidFieldScale = 0.1
1041 assert flags.Tracking.ActiveConfig.minPT == 0.05 * Units.GeV,
"wrong cut value {} ".format(flags.Tracking.ActiveConfig.minPT)
1043 l.info(
"flags.Tracking.ActiveConfig.minPT %f", flags.Tracking.ActiveConfig.minPT * 1.0)
1044 l.info(
"type(flags.Tracking.ActiveConfig.minPT) " + str(
type(flags.Tracking.ActiveConfig.minPT)))
void print(char *figname, TCanvas *c1)
createITkTrackingPassFlags()
ITk mode ####################.
createR3LargeD0TrackingPassFlags()
R3LargeD0 mode ########################.
createVtxLumiHeavyIonTrackingPassFlags()
VtxLumiHeavyIon mode ################.
createForwardTracksTrackingPassFlags()
ForwardTracks mode ########################.
createITkFastTrackingPassFlags()
createITkLargeD0TrackingPassFlags()
ITk LRT mode ####################.
createLowPtTrackingPassFlags()
LowPt mode ########################.
createTRTStandaloneTrackingPassFlags()
TRT standalone tracklet cuts ##########.
createITkFTFLargeD0PassFlags()
createSCTTrackingPassFlags()
SCT mode ######################.
createHeavyIonTrackingPassFlags()
Heavyion mode #######################.
createLowPtRoITrackingPassFlags()
LowPtRoI mode ########################.
createUPCTrackingPassFlags()
UPC mode ########################.
createHIPTrackingPassFlags()
HIP mode ########################.
createDisappearingTrackingPassFlags()
Disappearing mode ######################.
createVtxLumiTrackingPassFlags()
VtxLumi mode ########################.
createITkConversionTrackingPassFlags()
ITkConversion mode ########################.
createPixelTrackingPassFlags()
Pixel mode ###############################################.
createBeamGasTrackingPassFlags()
BeamGas mode ########################.
createTrackingPassFlags()
createVtxBeamSpotTrackingPassFlags()
VtxBeamSpot mode ########################.
createITkHeavyIonTrackingPassFlags()
Heavyion mode #######################.
createVeryLowPtTrackingPassFlags()
VeryLowPt mode ########################.
createHighPileupTrackingPassFlags()
HighPileUP mode ####################.
createTRTTrackingPassFlags()
TRT subdetector tracklet cuts ##########.
createITkLowPtTrackingPassFlags()
ITk LowPt mode ####################.
createITkFTFPassFlags()
ITk with FTF standalone mode ####.
createCosmicsTrackingPassFlags()
Cosmics mode ########################.
createMinBiasTrackingPassFlags()
MinBias mode ########################.
createLowPtLargeD0TrackingPassFlags()
LowPtLargeD0 mode ########################.
printPrimaryConfig(flags)
createITkLargeD0FastTrackingPassFlags()