3 from AthenaConfiguration.AthConfigFlags
import AthConfigFlags
4 from TrkConfig.TrackingPassFlags
import createTrackingPassFlags,createITkTrackingPassFlags
5 from TrigEDMConfig.TriggerEDM
import recordable
7 from AthenaCommon.Logging
import logging
10 from copy
import deepcopy
11 from collections.abc
import Callable
13 log = logging.getLogger(
"__name__")
17 flags.addFlag(
"input_name",
"")
18 flags.addFlag(
"name",
"")
19 flags.addFlag(
"suffix",
"")
21 flags.addFlag(
"pTmin", 1.*Units.GeV)
22 flags.addFlag(
"TripletDoPPS",
True)
23 flags.addFlag(
"Triplet_D0Max", 4.0)
24 flags.addFlag(
"Triplet_D0_PPS_Max", 1.7)
25 flags.addFlag(
"DoPhiFiltering",
True)
26 flags.addFlag(
"doZFinder",
False)
27 flags.addFlag(
"doZFinderOnly",
False)
28 flags.addFlag(
"doResMon",
False)
29 flags.addFlag(
"doCloneRemoval",
True)
30 flags.addFlag(
"doSeedRedundancyCheck",
False)
31 flags.addFlag(
"DoubletDR_Max", 270)
32 flags.addFlag(
"SeedRadBinWidth", 2)
33 flags.addFlag(
"holeSearch_FTF",
False)
34 flags.addFlag(
"electronPID",
False)
35 flags.addFlag(
"etaHalfWidth", 0.1)
36 flags.addFlag(
"phiHalfWidth", 0.1)
37 flags.addFlag(
"zedHalfWidth", -999)
38 flags.addFlag(
"doFullScan",
False)
39 flags.addFlag(
"monPS", 1)
40 flags.addFlag(
"monPtMin", 1*Units.GeV)
41 flags.addFlag(
"doTRT",
True)
42 flags.addFlag(
"keepTrackParameters",
False)
43 flags.addFlag(
"UsePixelSpacePoints",
True)
44 flags.addFlag(
"TrackInitialD0Max", 20.0)
45 flags.addFlag(
"TrackZ0Max", 300.0)
46 flags.addFlag(
"isLRT",
False)
47 flags.addFlag(
"UseTrigSeedML", 0)
48 flags.addFlag(
"nClustersMin", 7)
49 flags.addFlag(
"roi",
"")
50 flags.addFlag(
"LRT_D0Min", 2.0)
51 flags.addFlag(
"LRT_HardPtMin", 1.0*Units.GeV)
52 flags.addFlag(
"doRecord",
True)
53 flags.addFlag(
"vertex",
"")
54 flags.addFlag(
"adaptiveVertex",
False)
55 flags.addFlag(
"addSingleTrackVertices",
False)
56 flags.addFlag(
"TracksMaxZinterval", 1)
57 flags.addFlag(
"minNSiHits_vtx", 10)
58 flags.addFlag(
"vertex_jet",
"")
59 flags.addFlag(
"adaptiveVertex_jet",
False)
60 flags.addFlag(
"dodEdxTrk",
False)
61 flags.addFlag(
"doHitDV",
False)
62 flags.addFlag(
"doDisappearingTrk",
False)
63 flags.addFlag(
"useDynamicRoiZWidth",
False)
72 flags.addFlag(
"minSiClusters", 7)
73 flags.addFlag(
"maxSiHoles", 5)
74 flags.maxPixelHoles = 5
75 flags.addFlag(
"maxSCTHoles", 5)
76 flags.maxDoubleHoles = 2
77 flags.addFlag(
"doEmCaloSeed",
False)
79 flags.useSeedFilter =
False
80 flags.doBremRecoverySi =
False
82 flags.addFlag(
"refitROT",
True)
83 flags.addFlag(
"trtExtensionType",
"xf")
84 flags.addFlag(
"doTruth",
False)
85 flags.addFlag(
"perigeeExpression",
"BeamLine")
86 flags.addFlag(
"SuperRoI",
False)
88 flags.addFlag(
"trkTracks_FTF",
"")
89 flags.addFlag(
"trkTracks_IDTrig",
"")
90 flags.addFlag(
"tracks_FTF",
"")
91 flags.addFlag(
"tracks_IDTrig",
"")
92 flags.addFlag(
"useGBTSeedingTool",
False)
99 flags.minPT = flags.pTmin
101 flags.minClusters = 7
102 flags.minSiNotShared = 5
105 flags.Xi2maxNoAdd = 25.
107 flags.nHolesGapMax = 2
108 flags.nWeightedClustersMin= 6
112 flags.maxPrimaryImpact = 10.
113 flags.maxEMImpact = 50.
114 flags.maxZImpact = 250.
119 flags.useTIDE_Ambi =
False
123 flags.maxSCTHoles = 5
133 flags.minPT = [1.0*Units.GeV,0.45*Units.GeV,0.45*Units.GeV]
134 flags.minClusters = [9,8,7]
136 flags.Xi2maxNoAdd = [25.]
137 flags.nHolesMax = [2]
138 flags.nHolesGapMax = [2]
139 flags.nWeightedClustersMin= [6]
140 flags.maxDoubleHoles = [2]
141 flags.maxPixelHoles = [5]
142 flags.maxZImpact = [250.0]
144 flags.doZFinder =
False
145 flags.DoPhiFiltering =
True
146 flags.UsePixelSpacePoints =
True
147 flags.doDisappearingTrk =
False
148 flags.doCaloSeededBremSi =
False
149 flags.doCaloSeededAmbiSi =
False
150 flags.DoubletDR_Max = 150.0
151 flags.useTIDE_Ambi =
False
161 "electron" : electron,
166 "muonIsoMS" : muonIso,
178 "fullScan" : fullScan,
180 "jetSuper" : jetSuper,
182 "beamSpot" : beamSpot,
183 "BeamSpot" : beamSpot,
184 "beamSpotFS" : beamSpotFS,
190 "minBiasPixel" : minBiasPixel,
192 "electronLRT" : electronLRT,
196 "fullScanLRT" : fullScanLRT,
201 flags = AthConfigFlags()
204 category =
'Trigger.InDetTracking'
205 defaults = defaultInDetTrigTrackingFlags
207 category =
'Trigger.ITkTracking'
208 defaults = defaultITkTrigTrackingFlags
210 category =
"Trigger.ActsTracking"
211 defaults = defaultITkTrigTrackingFlags
213 log.error(
"Unsupported reconstruction mode %s", mode)
216 class categoryGeneratorWrapper():
217 """ wrap function which can be consumed by addFlagsCategory and provide its args """
218 def __init__(self, fun : Callable[[AthConfigFlags, str, str], AthConfigFlags],
219 flags : AthConfigFlags, signatureInstance : str, recoMode : str):
221 self.sig = signatureInstance
225 return self.fun(self.flags,self.sig,self.mode)
227 for i
in signatureSet.keys():
228 trackingflags = deepcopy(
defaults())
229 a = categoryGeneratorWrapper(signatureSet[i],trackingflags,i,mode)
230 signatureCategory =
"{}.{}".
format(category,i)
231 flags.addFlagsCategory(signatureCategory,a.run,prefix=
True)
239 """ convenience decorator to automate config steps """
240 def invokeSteps(*args, **kwargs):
241 flagsSig = func(*args, **kwargs)
249 """ use previous type of the var and convert value to it
250 for the moment just makes list of a value if needed
253 typeOfValue =
type(value)
254 if type2set == typeOfValue:
257 basic = (bool, str, int, float,
type(
None))
258 if isinstance(var,basic):
267 def electron(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
269 flags.input_name = instanceName
270 flags.name =
"electron"
271 flags.suffix =
"Electron"
272 flags.roi =
"HLT_Roi_Electron"
273 flags.etaHalfWidth = 0.05
274 flags.phiHalfWidth = 0.1
275 flags.doCloneRemoval =
True
276 flags.doSeedRedundancyCheck =
True
277 if recoMode==
"InDet":
279 flags.keepTrackParameters =
True
280 flags.electronPID =
True
284 def muon(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
286 flags.input_name = instanceName
288 flags.suffix =
"Muon"
289 flags.roi =
"HLT_Roi_L2SAMuon"
290 flags.Triplet_D0Max = 10.0
291 flags.doResMon =
True
292 flags.DoPhiFiltering =
False
293 flags.doSeedRedundancyCheck =
True
294 flags.monPtMin = 12*Units.GeV
298 def muonIso(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
300 flags.input_name = instanceName
301 flags.name =
"muonIso"
302 flags.suffix =
"MuonIso"
303 flags.roi =
"HLT_Roi_MuonIso"
304 flags.etaHalfWidth = 0.35
305 flags.phiHalfWidth = 0.35
306 flags.zedHalfWidth = 10.0
310 def tauCore(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
312 flags.input_name = instanceName
313 flags.name =
"tauCore"
314 flags.suffix =
"TauCore"
315 flags.roi =
"HLT_Roi_TauCore"
316 flags.pTmin = 0.8*Units.GeV
317 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
319 flags.holeSearch_FTF =
True
323 def tauIso(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
325 flags.input_name = instanceName
326 flags.name =
"tauIso"
327 flags.suffix =
"TauIso"
328 flags.roi =
"HLT_Roi_TauIso"
329 flags.etaHalfWidth = 0.4
330 flags.phiHalfWidth = 0.4
331 flags.zedHalfWidth = 7.0
332 flags.adaptiveVertex =
True
333 flags.addSingleTrackVertices =
True
334 flags.vertex =
"HLT_IDVertex_Tau"
335 flags.electronPID =
False
336 flags.pTmin = 0.8*Units.GeV
337 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
341 def diTau(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
343 flags.input_name = instanceName
345 flags.suffix =
"DiTau"
346 flags.roi =
"HLT_Roi_DiTau"
347 flags.etaHalfWidth = 1.0
348 flags.phiHalfWidth = 1.0
349 flags.zedHalfWidth = 7.0
350 flags.adaptiveVertex =
True
351 flags.addSingleTrackVertices =
True
352 flags.vertex =
"HLT_IDVertex_DiTau"
353 flags.electronPID =
False
354 flags.pTmin = 0.8*Units.GeV
355 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
359 def bjet(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
361 flags.input_name = instanceName
363 flags.suffix =
"Bjet"
364 flags.roi =
"HLT_Roi_Bjet"
365 flags.etaHalfWidth = 0.4
366 flags.phiHalfWidth = 0.4
367 flags.zedHalfWidth = 10.0
368 flags.pTmin = 0.8*Units.GeV
369 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
370 flags.Xi2max =
tsetter(flags.Xi2max,12.)
374 def jetSuper(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
376 flags.input_name = instanceName
377 flags.name =
"jetSuper"
378 flags.suffix =
"JetSuper"
379 flags.vertex =
"HLT_IDVertex_JetSuper"
380 flags.adaptiveVertex =
True
381 flags.addSingleTrackVertices =
True
382 flags.roi =
"HLT_Roi_JetSuper"
383 flags.etaHalfWidth = 0.3
384 flags.phiHalfWidth = 0.3
385 flags.doFullScan =
True
386 flags.pTmin = 1*Units.GeV
387 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
390 flags.DoubletDR_Max = 200
391 flags.SeedRadBinWidth = 10
392 flags.doSeedRedundancyCheck =
True
393 flags.TripletDoPPS =
False
394 flags.nClustersMin = 8
395 flags.UseTrigSeedML = 4
400 def minBias(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
402 flags.input_name = instanceName
403 flags.name =
"minBias"
404 flags.suffix =
"MinBias"
405 flags.roi =
"HLT_Roi_MinBias"
406 flags.doFullScan =
True
407 flags.pTmin = 0.1*Units.GeV
408 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
411 flags.etaHalfWidth = 3
412 flags.phiHalfWidth = math.pi
413 flags.doZFinder =
True
414 flags.doZFinderOnly =
True
416 flags.nClustersMin = 5
417 flags.useSeedFilter =
True
418 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 10.*Units.mm)
419 flags.maxZImpact =
tsetter(flags.maxZImpact, 150.*Units.mm)
421 flags.usePrdAssociationTool =
False
426 def minBiasPixel(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
428 flags.input_name = instanceName
429 flags.name =
"minBiasPixel"
430 flags.suffix =
"MinBiasPixel"
431 flags.roi =
"HLT_Roi_MinBias"
432 flags.doFullScan =
True
433 flags.pTmin = 0.1*Units.GeV
434 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
438 flags.maxPixelHoles = 0
439 flags.maxSctHoles = 0
440 flags.maxDoubleHoles = 0
441 flags.minSiNotShared = 3
444 flags.nHolesGapMax = 0
445 if recoMode==
"InDet":
447 flags.useSCTSeeding =
False
450 flags.roadWidth = 12.0
452 flags.Xi2maxNoAdd = 35.0
453 flags.nWeightedClustersMin = 6
454 flags.doBremRecoverySi =
False
455 flags.RunPixelPID =
False
458 flags.etaHalfWidth = 3
459 flags.phiHalfWidth = math.pi
460 flags.doZFinder =
False
461 flags.doZFinderOnly =
True
463 flags.minClusters = 3
464 flags.nClustersMin = 3
465 flags.useSeedFilter =
True
466 flags.maxPrimaryImpact = 10.*Units.mm
467 flags.maxZImpact = 150.*Units.mm
469 flags.usePrdAssociationTool =
False
475 def beamSpot(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
477 flags.input_name = instanceName
478 flags.name =
"beamSpot"
479 flags.suffix =
"BeamSpot"
480 flags.roi =
"HLT_Roi_FS"
481 flags.doFullScan =
True
482 flags.doZFinder =
True
483 flags.DoubletDR_Max = 200
484 flags.SeedRadBinWidth = 10
485 flags.etaHalfWidth = 3
486 flags.phiHalfWidth = math.pi
488 flags.doSeedRedundancyCheck =
True
489 flags.doRecord =
False
494 def fullScan(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
496 flags.input_name = instanceName
497 flags.name =
"fullScan"
499 flags.roi =
"HLT_Roi_FS"
500 flags.vertex =
"HLT_IDVertex_FS"
501 flags.adaptiveVertex =
True
505 flags.vertex_jet =
"HLT_IDVertex_FS"
506 flags.adaptiveVertex_jet =
True
507 flags.doFullScan =
True
508 flags.etaHalfWidth = 3.
509 flags.phiHalfWidth = math.pi
511 flags.DoubletDR_Max = 200
512 flags.SeedRadBinWidth = 10
513 flags.doSeedRedundancyCheck =
True
514 flags.TripletDoPPS =
False
515 flags.nClustersMin = 8
516 flags.UseTrigSeedML = 4
517 flags.dodEdxTrk =
True
519 flags.doDisappearingTrk =
True if recoMode==
"InDet" else False
525 def beamSpotFS(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
527 flags.input_name = instanceName
528 flags.name =
"fullScan"
530 flags.roi =
"HLT_Roi_FS"
531 flags.doFullScan =
True
532 flags.etaHalfWidth = 3.
533 flags.phiHalfWidth = math.pi
535 flags.DoubletDR_Max = 200
536 flags.SeedRadBinWidth = 10
537 flags.TripletDoPPS =
False
538 flags.nClustersMin = 8
539 flags.UseTrigSeedML = 4
540 flags.doRecord =
False
545 def cosmics(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
547 flags.input_name = instanceName
548 flags.name =
"cosmics"
549 flags.suffix =
"Cosmic"
550 flags.roi =
"HLT_Roi_Cosmics"
551 flags.Triplet_D0Max = 1000.0
552 flags.Triplet_D0_PPS_Max = 1000.0
553 flags.TrackInitialD0Max = 1000.
554 flags.TrackZ0Max = 1000.
556 flags.doFullScan =
True
557 flags.etaHalfWidth = 3
558 flags.phiHalfWidth = math.pi
560 flags.minPT =
tsetter(flags.minPT, 0.5*Units.GeV)
562 flags.nClustersMin = 4
563 flags.minSiNotShared = 3
567 flags.maxSCTHoles = 3
568 flags.maxPixelHoles =
tsetter(flags.maxPixelHoles,3)
569 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 1000.*Units.mm)
571 flags.Xi2max =
tsetter(flags.Xi2max, 60.)
572 flags.Xi2maxNoAdd =
tsetter(flags.Xi2maxNoAdd, 100.)
573 flags.maxDoubleHoles =
tsetter(flags.maxDoubleHoles,1)
575 flags.nWeightedClustersMin= 8
576 flags.useSeedFilter =
True
577 flags.usePrdAssociationTool =
False
578 flags.roadWidth = 75.
579 flags.maxZImpact=
tsetter(flags.maxZImpact, 10000.*Units.mm)
580 if recoMode==
"InDet":
581 flags.minTRTonTrk = 20
586 def bmumux(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
588 flags.input_name = instanceName
589 flags.name =
"bphysics"
590 flags.suffix =
"Bmumux"
591 flags.roi =
"HLT_Roi_Bmumux"
592 flags.Triplet_D0Max = 10.
593 flags.DoPhiFiltering =
False
594 flags.etaHalfWidth = 0.75
595 flags.phiHalfWidth = 0.75
596 flags.zedHalfWidth = 50.
597 flags.doSeedRedundancyCheck =
True
598 flags.SuperRoI =
True
602 def electronLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
604 flags.input_name = instanceName
605 flags.name =
"electronLRT"
606 flags.suffix =
"ElecLRT"
607 flags.roi =
"HLT_Roi_Electron"
608 flags.etaHalfWidth = 0.1
609 flags.phiHalfWidth = 0.4
610 flags.UsePixelSpacePoints =
False
611 flags.Triplet_D0Max = 300.
612 flags.TrackInitialD0Max = 300.
613 flags.TrackZ0Max = 500.
614 flags.zedHalfWidth = 225.
615 flags.keepTrackParameters =
True
616 flags.doSeedRedundancyCheck =
True
617 flags.nClustersMin = 8
620 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
621 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
623 flags.doEmCaloSeed =
False
628 def muonLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
630 flags.input_name = instanceName
631 flags.name =
"muonLRT"
632 flags.suffix =
"MuonLRT"
633 flags.roi =
"HLT_Roi_Muon"
634 flags.UsePixelSpacePoints =
False
635 flags.etaHalfWidth = 0.2
636 flags.phiHalfWidth = 0.4
637 flags.Triplet_D0Max = 300.
638 flags.TrackInitialD0Max = 300.
639 flags.TrackZ0Max = 500.
640 flags.zedHalfWidth = 225.
641 flags.doSeedRedundancyCheck =
True
642 flags.nClustersMin = 8
644 flags.doResMon =
True
645 flags.DoPhiFiltering =
False
647 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
648 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
650 flags.doEmCaloSeed =
False
657 def tauLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
659 flags.input_name = instanceName
660 flags.name =
"tauLRT"
661 flags.suffix =
"TauLRT"
662 flags.roi =
"HLT_Roi_TauLRT"
663 flags.vertex =
"HLT_IDVertex_Tau"
664 flags.pTmin = 0.8*Units.GeV
665 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
666 flags.etaHalfWidth = 0.4
667 flags.phiHalfWidth = 0.4
668 flags.zedHalfWidth = 225.
669 flags.UsePixelSpacePoints =
False
670 flags.Triplet_D0Max = 300.
671 flags.TrackInitialD0Max = 300.
672 flags.TrackZ0Max = 500.
673 flags.nClustersMin = 8
676 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
677 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
679 flags.doEmCaloSeed =
False
680 if recoMode==
"InDet":
687 def bjetLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
689 flags.input_name = instanceName
690 flags.name =
"bjetLRT"
691 flags.suffix =
"BjetLRT"
692 flags.roi =
"HLT_Roi_Bjet"
693 flags.etaHalfWidth = 0.4
694 flags.phiHalfWidth = 0.4
695 flags.UsePixelSpacePoints =
False
696 flags.Triplet_D0Max = 300.
697 flags.TrackInitialD0Max = 300.
698 flags.TrackZ0Max = 500.
699 flags.nClustersMin = 8
702 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
703 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
705 flags.doEmCaloSeed =
False
711 def fullScanLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
713 flags.input_name = instanceName
714 flags.name =
"fullScanLRT"
715 flags.suffix =
"FSLRT"
716 flags.roi =
"HLT_Roi_FS"
717 flags.doFullScan =
True
718 flags.etaHalfWidth = 3.
719 flags.phiHalfWidth = math.pi
721 flags.doSeedRedundancyCheck =
True
722 flags.UsePixelSpacePoints =
False
723 flags.Triplet_D0Max = 300.
724 flags.TrackInitialD0Max = 300.
725 flags.TrackZ0Max = 500.
726 flags.Triplet_D0_PPS_Max = 300.
727 flags.DoubletDR_Max = 200
728 flags.nClustersMin = 8
731 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
732 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
734 flags.doEmCaloSeed =
False
740 def DJetLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
742 flags.input_name = instanceName
743 flags.name =
"DJetLRT"
744 flags.suffix =
"DJLRT"
745 flags.roi =
"HLT_Roi_DJ"
746 flags.doFullScan =
False
747 flags.etaHalfWidth = 0.4
748 flags.phiHalfWidth = 0.4
749 flags.zedHalfWidth = 225.
751 flags.doSeedRedundancyCheck =
True
752 flags.UsePixelSpacePoints =
False
753 flags.Triplet_D0Max = 300.
754 flags.TrackInitialD0Max = 300.
755 flags.TrackZ0Max = 500.
756 flags.Triplet_D0_PPS_Max = 300.
757 flags.DoubletDR_Max = 200
758 flags.nClustersMin = 8
761 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
762 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
764 flags.doEmCaloSeed =
False
770 def DVtxLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
772 flags.input_name = instanceName
773 flags.name =
"DVtxLRT"
774 flags.suffix =
"DVLRT"
775 flags.roi =
"HLT_Roi_DV"
776 flags.doFullScan =
False
777 flags.etaHalfWidth = 0.35
778 flags.phiHalfWidth = 0.35
780 flags.doSeedRedundancyCheck =
True
781 flags.UsePixelSpacePoints =
False
782 flags.Triplet_D0Max = 300.
783 flags.TrackInitialD0Max = 300.
784 flags.TrackZ0Max = 500.
785 flags.Triplet_D0_PPS_Max = 300.
786 flags.DoubletDR_Max = 200
787 flags.nClustersMin = 8
790 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
791 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
793 flags.doEmCaloSeed =
False
800 flags.trkTracks_FTF = f
'HLT_IDTrkTrack_{flags.suffix}_FTF'
801 flags.trkTracks_IDTrig = f
'HLT_IDTrkTrack_{flags.suffix}_IDTrig'
802 flags.tracks_FTF =
collToRecordable(flags, f
'HLT_IDTrack_{flags.suffix}_FTF')
805 flags.tracks_IDTrig =
collToRecordable(flags,
"HLT_IDTrack_{}_IDTrig".
format(flags.suffix
if flags.input_name !=
"tauIso" else "Tau"))
807 if recoMode ==
"Acts":
808 flags.trkTracks_FTF = f
'HLT_Acts_{flags.suffix}_Tracks'
809 flags.trkTracks_IDTrig = f
'HLT_Acts_{flags.suffix}_Ambi_Tracks'
812 flags.minClusters =
tsetter(flags.minClusters , 8)
813 flags.nHolesGapMax =
tsetter(flags.nHolesGapMax , 1)
814 flags.nWeightedClustersMin=
tsetter(flags.nWeightedClustersMin, 8)
815 flags.maxSiHoles =
tsetter(flags.maxSiHoles , 2)
816 flags.maxSCTHoles =
tsetter(flags.maxSCTHoles , 1)
817 flags.maxPixelHoles =
tsetter(flags.maxPixelHoles , 1)
818 flags.maxDoubleHoles =
tsetter(flags.maxDoubleHoles , 0)
819 flags.maxZImpact =
tsetter(flags.maxZImpact , 500.)
822 if recoMode ==
"ITk":
823 flags.extension = flags.input_name
826 flags.UsePixelSpacePoints =
True
833 signature = flags.input_name
834 firstStage =
True if "FTF" in name
else False
837 if signature
in [
"minBias",
"minBiasPixel",
"bjetLRT",
838 "beamSpot",
"BeamSpot"]:
841 if signature
in [
"tauCore",
"tauIso",
"tauIsoBDT",
842 "jet",
"fullScan",
"FS",
"jetSuper",
843 "beamSpot",
"BeamSpot",
"beamSpotFS",
844 "bjetLRT",
"DJetLRT",
"DVtxLRT"]:
853 flags.addFlag(f
'{category}.RoiZedWidthDefault', 180.0 * Units.mm)
854 flags.addFlag(f
'{category}.doGPU',
False)
855 flags.addFlag(f
'{category}.UseTrigTrackFollowing',
False)
856 flags.addFlag(f
'{category}.UseTrigRoadPredictor',
False)
857 flags.addFlag(f
'{category}.UseTracklets',
False)
858 flags.addFlag(f
'{category}.trackletPoints', 1)
859 flags.addFlag(f
'{category}.PixelClusterCacheKey',
"PixelTrigClustersCache")
860 flags.addFlag(f
'{category}.SCTClusterCacheKey',
"SCT_ClustersCache")
861 flags.addFlag(f
'{category}.SpacePointCachePix',
"PixelSpacePointCache")
862 flags.addFlag(f
'{category}.SpacePointCacheSCT',
"SctSpacePointCache")
863 flags.addFlag(f
'{category}.SCTBSErrCacheKey',
"SctBSErrCache")
864 flags.addFlag(f
'{category}.SCTFlaggedCondCacheKey',
"SctFlaggedCondCache")
865 flags.addFlag(f
'{category}.SCTRDOCacheKey',
"SctRDOCache")
866 flags.addFlag(f
'{category}.PixRDOCacheKey',
"PixRDOCache")
867 flags.addFlag(f
'{category}.PixBSErrCacheKey',
"PixBSErrCache")
868 flags.addFlag(f
'{category}.TRTRDOCacheKey',
"TrtRDOCache")
869 flags.addFlag(f
'{category}.TRT_DriftCircleCacheKey',
"TRT_DriftCircleCache")
870 flags.addFlag(f
'{category}.TRT_DriftCircleKey',
"TRT_TrigDriftCircles")
871 flags.addFlag(f
'{category}.PixClustersAmbiMap',
"TrigPixelClusterAmbiguitiesMap")
872 flags.addFlag(f
'{category}.ClusterAmbiguitiesMap',
"TrigPixelClusterAmbiguitiesMap")
878 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
880 flags.Trigger.InDetTracking.electron.pTmin=3.
881 self.
newflags = flags.cloneAndReplace(
'Tracking.ActiveConfig',
'Trigger.InDetTracking.electron',
883 self.
newflags2 = flags.cloneAndReplace(
'Tracking.ActiveConfig',
'Trigger.InDetTracking.muonLRT',
887 self.assertEqual(self.
newflags.Tracking.ActiveConfig.pTmin, 3., msg=
"Preset value lost")
888 self.assertEqual(self.
newflags.Tracking.ActiveConfig.input_name,
"electron", msg=
"Incorrect config")
889 self.assertEqual(self.
newflags2.Tracking.ActiveConfig.input_name,
"muonLRT", msg=
"Incorrect config")
892 if __name__ ==
"__main__":