3 from AthenaConfiguration.AthConfigFlags
import AthConfigFlags
4 from TrkConfig.TrackingPassFlags
import createTrackingPassFlags,createITkTrackingPassFlags
5 from ActsConfig.ActsTrackingPassFlags
import createActsTrackingPassFlags
6 from TrigEDMConfig.TriggerEDM
import recordable
8 from AthenaCommon.Logging
import logging
11 from copy
import deepcopy
12 from collections.abc
import Callable
14 log = logging.getLogger(
"__name__")
18 flags.addFlag(
"input_name",
"")
19 flags.addFlag(
"name",
"")
20 flags.addFlag(
"suffix",
"")
22 flags.addFlag(
"pTmin", 1.*Units.GeV)
23 flags.addFlag(
"TripletDoPPS",
True)
24 flags.addFlag(
"Triplet_D0Max", 4.0)
25 flags.addFlag(
"Triplet_D0_PPS_Max", 1.7)
26 flags.addFlag(
"DoPhiFiltering",
True)
27 flags.addFlag(
"doZFinder",
False)
28 flags.addFlag(
"doZFinderOnly",
False)
29 flags.addFlag(
"doResMon",
False)
30 flags.addFlag(
"doCloneRemoval",
True)
31 flags.addFlag(
"doSeedRedundancyCheck",
False)
32 flags.addFlag(
"DoubletDR_Max", 270)
33 flags.addFlag(
"SeedRadBinWidth", 2)
34 flags.addFlag(
"holeSearch_FTF",
False)
35 flags.addFlag(
"electronPID",
False)
36 flags.addFlag(
"etaHalfWidth", 0.1)
37 flags.addFlag(
"phiHalfWidth", 0.1)
38 flags.addFlag(
"zedHalfWidth", -999)
39 flags.addFlag(
"doFullScan",
False)
40 flags.addFlag(
"monPS", 1)
41 flags.addFlag(
"monPtMin", 1*Units.GeV)
42 flags.addFlag(
"doTRT",
True)
43 flags.addFlag(
"keepTrackParameters",
False)
44 flags.addFlag(
"UsePixelSpacePoints",
True)
45 flags.addFlag(
"TrackInitialD0Max", 20.0)
46 flags.addFlag(
"TrackZ0Max", 300.0)
47 flags.addFlag(
"isLRT",
False)
48 flags.addFlag(
"UseTrigSeedML", 0)
49 flags.addFlag(
"nClustersMin", 7)
50 flags.addFlag(
"roi",
"")
51 flags.addFlag(
"LRT_D0Min", 2.0)
52 flags.addFlag(
"LRT_HardPtMin", 1.0*Units.GeV)
53 flags.addFlag(
"doRecord",
True)
54 flags.addFlag(
"vertex",
"")
55 flags.addFlag(
"adaptiveVertex",
False)
56 flags.addFlag(
"addSingleTrackVertices",
False)
57 flags.addFlag(
"TracksMaxZinterval", 1)
58 flags.addFlag(
"minNSiHits_vtx", 10)
59 flags.addFlag(
"vertex_jet",
"")
60 flags.addFlag(
"adaptiveVertex_jet",
False)
61 flags.addFlag(
"dodEdxTrk",
False)
62 flags.addFlag(
"doHitDV",
False)
63 flags.addFlag(
"doDisappearingTrk",
False)
64 flags.addFlag(
"useDynamicRoiZWidth",
False)
73 flags.addFlag(
"minSiClusters", 7)
74 flags.addFlag(
"maxSiHoles", 5)
75 flags.maxPixelHoles = 5
76 flags.addFlag(
"maxSCTHoles", 5)
77 flags.maxDoubleHoles = 2
78 flags.addFlag(
"doEmCaloSeed",
False)
80 flags.useSeedFilter =
False
81 flags.doBremRecoverySi =
False
83 flags.addFlag(
"refitROT",
True)
84 flags.addFlag(
"trtExtensionType",
"xf")
85 flags.addFlag(
"doTruth",
False)
86 flags.addFlag(
"perigeeExpression",
"BeamLine")
87 flags.addFlag(
"SuperRoI",
False)
89 flags.addFlag(
"trkTracks_FTF",
"")
90 flags.addFlag(
"trkTracks_IDTrig",
"")
91 flags.addFlag(
"tracks_FTF",
"")
92 flags.addFlag(
"tracks_IDTrig",
"")
93 flags.addFlag(
"useGBTSeedingTool",
False)
100 flags.minPT = flags.pTmin
102 flags.minClusters = 7
103 flags.minSiNotShared = 5
106 flags.Xi2maxNoAdd = 25.
108 flags.nHolesGapMax = 2
109 flags.nWeightedClustersMin= 6
113 flags.maxPrimaryImpact = 10.
114 flags.maxEMImpact = 50.
115 flags.maxZImpact = 250.
120 flags.useTIDE_Ambi =
False
124 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
159 flags.minPT = [0.9*Units.GeV, 0.4*Units.GeV, 0.4*Units.GeV]
160 flags.minClusters = [9, 8, 7]
163 flags.maxShared = [2]
165 flags.maxPixelHoles = [2]
166 flags.maxSctHoles = [2]
167 flags.maxShared = [2]
168 flags.maxDoubleHoles = [1]
177 "electron" : electron,
182 "muonIsoMS" : muonIso,
194 "fullScan" : fullScan,
196 "jetSuper" : jetSuper,
198 "beamSpot" : beamSpot,
199 "BeamSpot" : beamSpot,
200 "beamSpotFS" : beamSpotFS,
206 "minBiasPixel" : minBiasPixel,
208 "electronLRT" : electronLRT,
212 "fullScanLRT" : fullScanLRT,
217 flags = AthConfigFlags()
220 category =
'Trigger.InDetTracking'
221 defaults = defaultInDetTrigTrackingFlags
223 category =
'Trigger.ITkTracking'
224 defaults = defaultITkTrigTrackingFlags
226 category =
"Trigger.ActsTracking"
227 defaults = defaultITkActsTrigTrackingFlags
229 log.error(
"Unsupported reconstruction mode %s", mode)
232 class categoryGeneratorWrapper():
233 """ wrap function which can be consumed by addFlagsCategory and provide its args """
234 def __init__(self, fun : Callable[[AthConfigFlags, str, str], AthConfigFlags],
235 flags : AthConfigFlags, signatureInstance : str, recoMode : str):
237 self.sig = signatureInstance
241 return self.fun(self.flags,self.sig,self.mode)
243 for i
in signatureSet.keys():
244 trackingflags = deepcopy(
defaults())
245 a = categoryGeneratorWrapper(signatureSet[i],trackingflags,i,mode)
246 signatureCategory =
"{}.{}".
format(category,i)
247 flags.addFlagsCategory(signatureCategory,a.run,prefix=
True)
255 """ convenience decorator to automate config steps """
256 def invokeSteps(*args, **kwargs):
257 flagsSig = func(*args, **kwargs)
265 """ use previous type of the var and convert value to it
266 for the moment just makes list of a value if needed
269 typeOfValue =
type(value)
270 if type2set == typeOfValue:
273 basic = (bool, str, int, float,
type(
None))
274 if isinstance(var,basic):
283 def electron(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
285 flags.input_name = instanceName
286 flags.name =
"electron"
287 flags.suffix =
"Electron"
288 flags.roi =
"HLT_Roi_Electron"
289 flags.etaHalfWidth = 0.05
290 flags.phiHalfWidth = 0.1
291 flags.doCloneRemoval =
True
292 flags.doSeedRedundancyCheck =
True
293 if recoMode==
"InDet":
295 flags.keepTrackParameters =
True
296 flags.electronPID =
True
300 def muon(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
302 flags.input_name = instanceName
304 flags.suffix =
"Muon"
305 flags.roi =
"HLT_Roi_L2SAMuon"
306 flags.Triplet_D0Max = 10.0
307 flags.doResMon =
True
308 flags.DoPhiFiltering =
False
309 flags.doSeedRedundancyCheck =
True
310 flags.monPtMin = 12*Units.GeV
314 def muonIso(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
316 flags.input_name = instanceName
317 flags.name =
"muonIso"
318 flags.suffix =
"MuonIso"
319 flags.roi =
"HLT_Roi_MuonIso"
320 flags.etaHalfWidth = 0.35
321 flags.phiHalfWidth = 0.35
322 flags.zedHalfWidth = 10.0
326 def tauCore(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
328 flags.input_name = instanceName
329 flags.name =
"tauCore"
330 flags.suffix =
"TauCore"
331 flags.roi =
"HLT_Roi_TauCore"
332 flags.pTmin = 0.8*Units.GeV
333 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
335 flags.holeSearch_FTF =
True
339 def tauIso(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
341 flags.input_name = instanceName
342 flags.name =
"tauIso"
343 flags.suffix =
"TauIso"
344 flags.roi =
"HLT_Roi_TauIso"
345 flags.etaHalfWidth = 0.4
346 flags.phiHalfWidth = 0.4
347 flags.zedHalfWidth = 7.0
348 flags.adaptiveVertex =
True
349 flags.addSingleTrackVertices =
True
350 flags.vertex =
"HLT_IDVertex_Tau"
351 flags.electronPID =
False
352 flags.pTmin = 0.8*Units.GeV
353 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
357 def diTau(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
359 flags.input_name = instanceName
361 flags.suffix =
"DiTau"
362 flags.roi =
"HLT_Roi_DiTau"
363 flags.etaHalfWidth = 1.0
364 flags.phiHalfWidth = 1.0
365 flags.zedHalfWidth = 7.0
366 flags.adaptiveVertex =
True
367 flags.addSingleTrackVertices =
True
368 flags.vertex =
"HLT_IDVertex_DiTau"
369 flags.electronPID =
False
370 flags.pTmin = 0.8*Units.GeV
371 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
375 def bjet(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
377 flags.input_name = instanceName
379 flags.suffix =
"Bjet"
380 flags.roi =
"HLT_Roi_Bjet"
381 flags.etaHalfWidth = 0.4
382 flags.phiHalfWidth = 0.4
383 flags.zedHalfWidth = 10.0
384 flags.pTmin = 0.8*Units.GeV
385 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
386 flags.Xi2max =
tsetter(flags.Xi2max,12.)
390 def jetSuper(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
392 flags.input_name = instanceName
393 flags.name =
"jetSuper"
394 flags.suffix =
"JetSuper"
395 flags.vertex =
"HLT_IDVertex_JetSuper"
396 flags.adaptiveVertex =
True
397 flags.addSingleTrackVertices =
True
398 flags.roi =
"HLT_Roi_JetSuper"
399 flags.etaHalfWidth = 0.3
400 flags.phiHalfWidth = 0.3
401 flags.doFullScan =
True
402 flags.pTmin = 1*Units.GeV
403 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
406 flags.DoubletDR_Max = 200
407 flags.SeedRadBinWidth = 10
408 flags.doSeedRedundancyCheck =
True
409 flags.TripletDoPPS =
False
410 flags.nClustersMin = 8
411 flags.UseTrigSeedML = 4
416 def minBias(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
418 flags.input_name = instanceName
419 flags.name =
"minBias"
420 flags.suffix =
"MinBias"
421 flags.roi =
"HLT_Roi_MinBias"
422 flags.doFullScan =
True
423 flags.pTmin = 0.1*Units.GeV
424 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
427 flags.etaHalfWidth = 3
428 flags.phiHalfWidth = math.pi
429 flags.doZFinder =
True
430 flags.doZFinderOnly =
True
432 flags.nClustersMin = 5
433 flags.useSeedFilter =
True
434 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 10.*Units.mm)
435 flags.maxZImpact =
tsetter(flags.maxZImpact, 150.*Units.mm)
437 flags.usePrdAssociationTool =
False
442 def minBiasPixel(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
444 flags.input_name = instanceName
445 flags.name =
"minBiasPixel"
446 flags.suffix =
"MinBiasPixel"
447 flags.roi =
"HLT_Roi_MinBias"
448 flags.doFullScan =
True
449 flags.pTmin = 0.1*Units.GeV
450 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
454 flags.maxPixelHoles = 0
455 flags.maxSctHoles = 0
456 flags.maxDoubleHoles = 0
457 flags.minSiNotShared = 3
460 flags.nHolesGapMax = 0
461 if recoMode==
"InDet":
463 flags.useSCTSeeding =
False
466 flags.roadWidth = 12.0
468 flags.Xi2maxNoAdd = 35.0
469 flags.nWeightedClustersMin = 6
470 flags.doBremRecoverySi =
False
471 flags.RunPixelPID =
False
474 flags.etaHalfWidth = 3
475 flags.phiHalfWidth = math.pi
476 flags.doZFinder =
False
477 flags.doZFinderOnly =
True
479 flags.minClusters = 3
480 flags.nClustersMin = 3
481 flags.useSeedFilter =
True
482 flags.maxPrimaryImpact = 10.*Units.mm
483 flags.maxZImpact = 150.*Units.mm
485 flags.usePrdAssociationTool =
False
491 def beamSpot(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
493 flags.input_name = instanceName
494 flags.name =
"beamSpot"
495 flags.suffix =
"BeamSpot"
496 flags.roi =
"HLT_Roi_FS"
497 flags.doFullScan =
True
498 flags.doZFinder =
True
499 flags.DoubletDR_Max = 200
500 flags.SeedRadBinWidth = 10
501 flags.etaHalfWidth = 3
502 flags.phiHalfWidth = math.pi
504 flags.doSeedRedundancyCheck =
True
505 flags.doRecord =
False
510 def fullScan(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
512 flags.input_name = instanceName
513 flags.name =
"fullScan"
515 flags.roi =
"HLT_Roi_FS"
516 flags.vertex =
"HLT_IDVertex_FS"
517 flags.adaptiveVertex =
True
521 flags.vertex_jet =
"HLT_IDVertex_FS"
522 flags.adaptiveVertex_jet =
True
523 flags.doFullScan =
True
524 flags.etaHalfWidth = 3.
525 flags.phiHalfWidth = math.pi
527 flags.DoubletDR_Max = 200
528 flags.SeedRadBinWidth = 10
529 flags.doSeedRedundancyCheck =
True
530 flags.TripletDoPPS =
False
531 flags.nClustersMin = 8
532 flags.UseTrigSeedML = 4
533 flags.dodEdxTrk =
True
535 flags.doDisappearingTrk =
True if recoMode==
"InDet" else False
541 def beamSpotFS(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
543 flags.input_name = instanceName
544 flags.name =
"fullScan"
546 flags.roi =
"HLT_Roi_FS"
547 flags.doFullScan =
True
548 flags.etaHalfWidth = 3.
549 flags.phiHalfWidth = math.pi
551 flags.DoubletDR_Max = 200
552 flags.SeedRadBinWidth = 10
553 flags.TripletDoPPS =
False
554 flags.nClustersMin = 8
555 flags.UseTrigSeedML = 4
556 flags.doRecord =
False
561 def cosmics(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
563 flags.input_name = instanceName
564 flags.name =
"cosmics"
565 flags.suffix =
"Cosmic"
566 flags.roi =
"HLT_Roi_Cosmics"
567 flags.Triplet_D0Max = 1000.0
568 flags.Triplet_D0_PPS_Max = 1000.0
569 flags.TrackInitialD0Max = 1000.
570 flags.TrackZ0Max = 1000.
572 flags.doFullScan =
True
573 flags.etaHalfWidth = 3
574 flags.phiHalfWidth = math.pi
576 flags.minPT =
tsetter(flags.minPT, 0.5*Units.GeV)
578 flags.nClustersMin = 4
579 flags.minSiNotShared = 3
583 flags.maxSCTHoles = 3
584 flags.maxPixelHoles =
tsetter(flags.maxPixelHoles,3)
585 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 1000.*Units.mm)
587 flags.Xi2max =
tsetter(flags.Xi2max, 60.)
588 flags.Xi2maxNoAdd =
tsetter(flags.Xi2maxNoAdd, 100.)
589 flags.maxDoubleHoles =
tsetter(flags.maxDoubleHoles,1)
591 flags.nWeightedClustersMin= 8
592 flags.useSeedFilter =
True
593 flags.usePrdAssociationTool =
False
594 flags.roadWidth = 75.
595 flags.maxZImpact=
tsetter(flags.maxZImpact, 10000.*Units.mm)
596 if recoMode==
"InDet":
597 flags.minTRTonTrk = 20
602 def bmumux(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
604 flags.input_name = instanceName
605 flags.name =
"bphysics"
606 flags.suffix =
"Bmumux"
607 flags.roi =
"HLT_Roi_Bmumux"
608 flags.Triplet_D0Max = 10.
609 flags.DoPhiFiltering =
False
610 flags.etaHalfWidth = 0.75
611 flags.phiHalfWidth = 0.75
612 flags.zedHalfWidth = 50.
613 flags.doSeedRedundancyCheck =
True
614 flags.SuperRoI =
True
618 def electronLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
620 flags.input_name = instanceName
621 flags.name =
"electronLRT"
622 flags.suffix =
"ElecLRT"
623 flags.roi =
"HLT_Roi_Electron"
624 flags.etaHalfWidth = 0.1
625 flags.phiHalfWidth = 0.4
626 flags.UsePixelSpacePoints =
False
627 flags.Triplet_D0Max = 300.
628 flags.TrackInitialD0Max = 300.
629 flags.TrackZ0Max = 500.
630 flags.zedHalfWidth = 225.
631 flags.keepTrackParameters =
True
632 flags.doSeedRedundancyCheck =
True
633 flags.nClustersMin = 8
636 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
637 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
639 flags.doEmCaloSeed =
False
644 def muonLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
646 flags.input_name = instanceName
647 flags.name =
"muonLRT"
648 flags.suffix =
"MuonLRT"
649 flags.roi =
"HLT_Roi_Muon"
650 flags.UsePixelSpacePoints =
False
651 flags.etaHalfWidth = 0.2
652 flags.phiHalfWidth = 0.4
653 flags.Triplet_D0Max = 300.
654 flags.TrackInitialD0Max = 300.
655 flags.TrackZ0Max = 500.
656 flags.zedHalfWidth = 225.
657 flags.doSeedRedundancyCheck =
True
658 flags.nClustersMin = 8
660 flags.doResMon =
True
661 flags.DoPhiFiltering =
False
663 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
664 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
666 flags.doEmCaloSeed =
False
673 def tauLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
675 flags.input_name = instanceName
676 flags.name =
"tauLRT"
677 flags.suffix =
"TauLRT"
678 flags.roi =
"HLT_Roi_TauLRT"
679 flags.vertex =
"HLT_IDVertex_Tau"
680 flags.pTmin = 0.8*Units.GeV
681 flags.minPT =
tsetter(flags.minPT, flags.pTmin)
682 flags.etaHalfWidth = 0.4
683 flags.phiHalfWidth = 0.4
684 flags.zedHalfWidth = 225.
685 flags.UsePixelSpacePoints =
False
686 flags.Triplet_D0Max = 300.
687 flags.TrackInitialD0Max = 300.
688 flags.TrackZ0Max = 500.
689 flags.nClustersMin = 8
692 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
693 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
695 flags.doEmCaloSeed =
False
696 if recoMode==
"InDet":
703 def bjetLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
705 flags.input_name = instanceName
706 flags.name =
"bjetLRT"
707 flags.suffix =
"BjetLRT"
708 flags.roi =
"HLT_Roi_Bjet"
709 flags.etaHalfWidth = 0.4
710 flags.phiHalfWidth = 0.4
711 flags.UsePixelSpacePoints =
False
712 flags.Triplet_D0Max = 300.
713 flags.TrackInitialD0Max = 300.
714 flags.TrackZ0Max = 500.
715 flags.nClustersMin = 8
718 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
719 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
721 flags.doEmCaloSeed =
False
727 def fullScanLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
729 flags.input_name = instanceName
730 flags.name =
"fullScanLRT"
731 flags.suffix =
"FSLRT"
732 flags.roi =
"HLT_Roi_FS"
733 flags.doFullScan =
True
734 flags.etaHalfWidth = 3.
735 flags.phiHalfWidth = math.pi
737 flags.doSeedRedundancyCheck =
True
738 flags.UsePixelSpacePoints =
False
739 flags.Triplet_D0Max = 300.
740 flags.TrackInitialD0Max = 300.
741 flags.TrackZ0Max = 500.
742 flags.Triplet_D0_PPS_Max = 300.
743 flags.DoubletDR_Max = 200
744 flags.nClustersMin = 8
747 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
748 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
750 flags.doEmCaloSeed =
False
756 def DJetLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
758 flags.input_name = instanceName
759 flags.name =
"DJetLRT"
760 flags.suffix =
"DJLRT"
761 flags.roi =
"HLT_Roi_DJ"
762 flags.doFullScan =
False
763 flags.etaHalfWidth = 0.4
764 flags.phiHalfWidth = 0.4
765 flags.zedHalfWidth = 225.
767 flags.doSeedRedundancyCheck =
True
768 flags.UsePixelSpacePoints =
False
769 flags.Triplet_D0Max = 300.
770 flags.TrackInitialD0Max = 300.
771 flags.TrackZ0Max = 500.
772 flags.Triplet_D0_PPS_Max = 300.
773 flags.DoubletDR_Max = 200
774 flags.nClustersMin = 8
777 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
778 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
780 flags.doEmCaloSeed =
False
786 def DVtxLRT(flags: AthConfigFlags, instanceName: str, recoMode: str) -> AthConfigFlags:
788 flags.input_name = instanceName
789 flags.name =
"DVtxLRT"
790 flags.suffix =
"DVLRT"
791 flags.roi =
"HLT_Roi_DV"
792 flags.doFullScan =
False
793 flags.etaHalfWidth = 0.35
794 flags.phiHalfWidth = 0.35
796 flags.doSeedRedundancyCheck =
True
797 flags.UsePixelSpacePoints =
False
798 flags.Triplet_D0Max = 300.
799 flags.TrackInitialD0Max = 300.
800 flags.TrackZ0Max = 500.
801 flags.Triplet_D0_PPS_Max = 300.
802 flags.DoubletDR_Max = 200
803 flags.nClustersMin = 8
806 flags.maxPrimaryImpact =
tsetter(flags.maxPrimaryImpact, 300.*Units.mm)
807 flags.maxEMImpact =
tsetter(flags.maxEMImpact, 300.*Units.mm)
809 flags.doEmCaloSeed =
False
816 flags.trkTracks_FTF = f
'HLT_IDTrkTrack_{flags.suffix}_FTF'
817 flags.trkTracks_IDTrig = f
'HLT_IDTrkTrack_{flags.suffix}_IDTrig'
818 flags.tracks_FTF =
collToRecordable(flags, f
'HLT_IDTrack_{flags.suffix}_FTF')
821 flags.tracks_IDTrig =
collToRecordable(flags,
"HLT_IDTrack_{}_IDTrig".
format(flags.suffix
if flags.input_name !=
"tauIso" else "Tau"))
823 if recoMode ==
"Acts":
824 flags.trkTracks_FTF = f
'HLT_Acts_{flags.suffix}_Tracks'
825 flags.trkTracks_IDTrig = f
'HLT_Acts_{flags.suffix}_Ambi_Tracks'
828 flags.minClusters =
tsetter(flags.minClusters , 8)
829 flags.nHolesGapMax =
tsetter(flags.nHolesGapMax , 1)
830 flags.nWeightedClustersMin=
tsetter(flags.nWeightedClustersMin, 8)
831 flags.maxSiHoles =
tsetter(flags.maxSiHoles , 2)
832 flags.maxSCTHoles =
tsetter(flags.maxSCTHoles , 1)
833 flags.maxPixelHoles =
tsetter(flags.maxPixelHoles , 1)
834 flags.maxDoubleHoles =
tsetter(flags.maxDoubleHoles , 0)
835 flags.maxZImpact =
tsetter(flags.maxZImpact , 500.)
838 if recoMode ==
"ITk":
839 flags.extension = flags.input_name
842 flags.UsePixelSpacePoints =
True
849 signature = flags.input_name
850 firstStage =
True if "FTF" in name
else False
853 if signature
in [
"minBias",
"minBiasPixel",
"bjetLRT",
854 "beamSpot",
"BeamSpot"]:
857 if signature
in [
"tauCore",
"tauIso",
"tauIsoBDT",
858 "jet",
"fullScan",
"FS",
"jetSuper",
859 "beamSpot",
"BeamSpot",
"beamSpotFS",
860 "bjetLRT",
"DJetLRT",
"DVtxLRT"]:
869 flags.addFlag(f
'{category}.RoiZedWidthDefault', 180.0 * Units.mm)
870 flags.addFlag(f
'{category}.doGPU',
False)
871 flags.addFlag(f
'{category}.UseTrigTrackFollowing',
False)
872 flags.addFlag(f
'{category}.UseTrigRoadPredictor',
False)
873 flags.addFlag(f
'{category}.UseTracklets',
False)
874 flags.addFlag(f
'{category}.trackletPoints', 1)
875 flags.addFlag(f
'{category}.PixelClusterCacheKey',
"PixelTrigClustersCache")
876 flags.addFlag(f
'{category}.SCTClusterCacheKey',
"SCT_ClustersCache")
877 flags.addFlag(f
'{category}.SpacePointCachePix',
"PixelSpacePointCache")
878 flags.addFlag(f
'{category}.SpacePointCacheSCT',
"SctSpacePointCache")
879 flags.addFlag(f
'{category}.SCTBSErrCacheKey',
"SctBSErrCache")
880 flags.addFlag(f
'{category}.SCTFlaggedCondCacheKey',
"SctFlaggedCondCache")
881 flags.addFlag(f
'{category}.SCTRDOCacheKey',
"SctRDOCache")
882 flags.addFlag(f
'{category}.PixRDOCacheKey',
"PixRDOCache")
883 flags.addFlag(f
'{category}.PixBSErrCacheKey',
"PixBSErrCache")
884 flags.addFlag(f
'{category}.TRTRDOCacheKey',
"TrtRDOCache")
885 flags.addFlag(f
'{category}.TRT_DriftCircleCacheKey',
"TRT_DriftCircleCache")
886 flags.addFlag(f
'{category}.TRT_DriftCircleKey',
"TRT_TrigDriftCircles")
887 flags.addFlag(f
'{category}.PixClustersAmbiMap',
"TrigPixelClusterAmbiguitiesMap")
888 flags.addFlag(f
'{category}.ClusterAmbiguitiesMap',
"TrigPixelClusterAmbiguitiesMap")
894 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
896 flags.Trigger.InDetTracking.electron.pTmin=3.
897 self.
newflags = flags.cloneAndReplace(
'Tracking.ActiveConfig',
'Trigger.InDetTracking.electron',
899 self.
newflags2 = flags.cloneAndReplace(
'Tracking.ActiveConfig',
'Trigger.InDetTracking.muonLRT',
903 self.assertEqual(self.
newflags.Tracking.ActiveConfig.pTmin, 3., msg=
"Preset value lost")
904 self.assertEqual(self.
newflags.Tracking.ActiveConfig.input_name,
"electron", msg=
"Incorrect config")
905 self.assertEqual(self.
newflags2.Tracking.ActiveConfig.input_name,
"muonLRT", msg=
"Incorrect config")
908 if __name__ ==
"__main__":