From c9c546b7fa643cd044b46768ab30f6263999d943 Mon Sep 17 00:00:00 2001
From: Tomasz Bold <tomasz.bold@gmail.com>
Date: Tue, 25 May 2021 08:17:06 +0000
Subject: [PATCH] Fixed new JO flags use in the new JO ID trigger

---
 .../TrigInDetConfig/python/TrigInDetConfig.py | 18 ++------
 .../python/TrigTrackingCutFlags.py            | 44 ++++++++-----------
 .../python/HLTMenuConfig/Muon/generateMuon.py | 21 ++++-----
 3 files changed, 32 insertions(+), 51 deletions(-)

diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
index 4c14c9663c32..b7b584048c7f 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
@@ -598,9 +598,6 @@ def ftfCfg(flags, roisKey, signature, signatureName):
                                                                          ReadKey  = "PixelDetectorElementCollection",
                                                                          WriteKey = "PixelDetElementBoundaryLinks_xk") )
 
-  from TrigInDetConfig.ConfigSettings import getInDetTrigConfig
-  config = getInDetTrigConfig(signatureName)
-
   ftf = CompFactory.TrigFastTrackFinder( name = "TrigFastTrackFinder_" + signature,
                                          LayerNumberTool          = acc.getPublicTool( "TrigL2LayerNumberTool_FTF" ),
                                          SpacePointProviderTool   = acc.getPublicTool( "TrigSpacePointConversionTool" + signature ),
@@ -613,7 +610,7 @@ def ftfCfg(flags, roisKey, signature, signatureName):
                                          doZFinder                = False,
                                          SeedRadBinWidth          =  flags.InDet.Tracking.SeedRadBinWidth,
                                          TrackInitialD0Max        = 1000. if flags.InDet.Tracking.extension == 'cosmics' else 20.0,
-                                         TracksName               = config.trkTracks_FTF(),
+                                         TracksName               = flags.InDet.Tracking.trkTracks_FTF,
                                          TripletDoPSS             = False,
                                          Triplet_D0Max            = flags.InDet.Tracking.Triplet_D0Max,
                                          Triplet_D0_PPS_Max       = flags.InDet.Tracking.Triplet_D0_PPS_Max,
@@ -648,9 +645,6 @@ def TrigTrackToVertexCfg(flags, name = 'TrigTrackToVertexTool', **kwargs ):
 def trackConverterCfg(flags, signature, signatureName):
   acc = ComponentAccumulator()
 
-  from TrigInDetConfig.ConfigSettings import getInDetTrigConfig
-  config = getInDetTrigConfig(signatureName)
-
   acc.merge( TrackSummaryToolCfg(flags, name="InDetTrigFastTrackSummaryTool") )
   track_to_vertex = acc.popToolsAndMerge( TrigTrackToVertexCfg(flags) )
   creatorTool = CompFactory.Trk.TrackParticleCreatorTool( name = "InDetTrigParticleCreatorToolFTF",
@@ -661,8 +655,8 @@ def trackConverterCfg(flags, signature, signatureName):
                                                           ExtraSummaryTypes     = ['eProbabilityComb', 'eProbabilityHT', 'TRTTrackOccupancy', 'TRTdEdx', 'TRTdEdxUsedHits'])
   acc.addPublicTool(creatorTool)
   trackParticleCnv=CompFactory.InDet.TrigTrackingxAODCnvMT(name = "InDetTrigTrackParticleCreatorAlg" + signature,
-                                                          TrackName           = config.trkTracks_FTF(),
-                                                          TrackParticlesName  = config.tracks_FTF(),
+                                                          TrackName           = flags.InDet.Tracking.trkTracks_FTF,
+                                                          TrackParticlesName  = flags.InDet.Tracking.tracks_FTF,
                                                           ParticleCreatorTool = creatorTool)
 
   acc.addEventAlgo(trackParticleCnv)
@@ -672,12 +666,8 @@ def trackConverterCfg(flags, signature, signatureName):
 def trigInDetFastTrackingCfg( inflags, roisKey="EMRoIs", signatureName='' ):
 
   # redirect InDet.Tracking flags to point to a specific trigger setting
-  if 'Muon' in signatureName:
-    signatureFlags='Muon'
-  else:
-    signatureFlags = signatureName
 
-  flags = inflags.cloneAndReplace("InDet.Tracking", "Trigger.InDetTracking."+signatureFlags)
+  flags = inflags.cloneAndReplace("InDet.Tracking", "Trigger.InDetTracking."+signatureName)
 
   #If signature specified add suffix to the name of each algorithms
   signature =  ("_" + signatureName if signatureName else '').lower()
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingCutFlags.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingCutFlags.py
index fa7b304b69fc..09b2c149b396 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingCutFlags.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingCutFlags.py
@@ -4,51 +4,42 @@ from AthenaConfiguration.AthConfigFlags import AthConfigFlags
 from InDetConfig.TrackingCutsFlags import createTrackingFlags
 
 # for the time when the two config systems coexist we reuse flags 
-from TrigInDetConfig.ConfigSettings import _ConfigSettings_electron, _ConfigSettings_muon, _ConfigSettings_muonLRT
-from TrigInDetConfig.ConfigSettingsBase import _ConfigSettingsBase
+from TrigInDetConfig.ConfigSettings import _ConfigSettings_electron, _ConfigSettings_muon, _ConfigSettings_muonLRT, _ConfigSettings_muonIso
 
 
-def copyValues(flags, configClass):
-    settings = configClass
-    for setting, value in settings.__dict__.items():
-        setting = setting.lstrip("_")
-        if value is None:
-            flags._set(setting, lambda pf: None )
-        else:
-            flags._set(setting, value)
-
-def __sliceFlags():
+def __flagsFromConfigSettings(settings):
     flags = createTrackingFlags()
-    for setting, value in _ConfigSettingsBase().__dict__.items():
+    for setting, value in settings.__dict__.items():
         setting = setting.lstrip("_")
         if value is None:
             flags.addFlag(setting, lambda pf: None)
         else:
             flags.addFlag(setting, value)
-    return flags
 
-def __electronFlags():
-    flags = __sliceFlags()
-    copyValues(flags, _ConfigSettings_electron())
+    flags.addFlag("trkTracks_FTF", f'HLT_IDTrkTrack_{flags.suffix}_FTF')
+    flags.addFlag("tracks_FTF", f'HLT_IDTrack_{flags.suffix}_FTF')
     flags.minPT = flags.pTmin # hack to sync pT threshold used in offline and trigger
     return flags
 
+def __electronFlags():
+    return __flagsFromConfigSettings(_ConfigSettings_electron())
+
 def __muonFlags():
-    flags = __sliceFlags()
-    copyValues(flags, _ConfigSettings_muon())
-    flags.minPT = flags.pTmin
-    return flags
+    return __flagsFromConfigSettings(_ConfigSettings_muon())
+
+def __muonIsoFlags():
+    return __flagsFromConfigSettings(_ConfigSettings_muonIso())
 
 def _muonLRTFlags():
-    flags = __sliceFlags()
-    copyValues(flags, _ConfigSettings_muonLRT())
-    flags.minPT = flags.pTmin
-    return flags
+    return __flagsFromConfigSettings( _ConfigSettings_muonLRT())
 
 def createTrigTrackingFlags():
     flags = AthConfigFlags()
     flags.addFlagsCategory('Trigger.InDetTracking.Electron', __electronFlags, prefix=True)
     flags.addFlagsCategory('Trigger.InDetTracking.Muon', __muonFlags, prefix=True)
+    flags.addFlagsCategory('Trigger.InDetTracking.MuonIso', __muonIsoFlags, prefix=True)
+    flags.addFlagsCategory('Trigger.InDetTracking.MuonFS', __muonFlags, prefix=True)
+
     flags.addFlagsCategory('Trigger.InDetTracking.MuonLRT', _muonLRTFlags, prefix=True)
     return flags
 
@@ -61,13 +52,16 @@ class FlagsCopiedTest(unittest.TestCase):
         flags.Trigger.doID
         flags.Trigger.InDetTracking.Muon
         flags.Trigger.InDetTracking.Electron.minPT = 2.0 * Units.GeV
+        flags.loadAllDynamicFlags()
         self.newflags = flags.cloneAndReplace('InDet.Tracking', 'Trigger.InDetTracking.Electron')
+
         self.newflags.dump(".*InDet")
 
     def runTest(self):
         self.assertEqual(self.newflags.InDet.Tracking.minPT, 2.0 * Units.GeV, msg="Flags are not copied")
 
 
+
 class UnsetFlagsTest(FlagsCopiedTest):
     def runTest(self):
         self.assertEqual(self.newflags.InDet.Tracking.vertex_jet, None)
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py
index 87e142a0c2cd..65e4cf5676a3 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py
@@ -32,7 +32,6 @@ from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCombinedInDe
 from TrigMuonEF.TrigMuonEFConfig_newJO import TrigMuonEFTrackIsolationAlgCfg, MuonFilterAlgCfg, MergeEFMuonsAlgCfg
 from AthenaCommon.CFElements import seqAND, parOR, seqOR
 
-from TrigInDetConfig.ConfigSettings import getInDetTrigConfig
 
 
 import pprint
@@ -43,8 +42,7 @@ def fakeHypoAlgCfg(flags, name="FakeHypoForMuon"):
     HLTTest__TestHypoAlg=CompFactory.HLTTest.TestHypoAlg
     return HLTTest__TestHypoAlg( name, Input="" )
 
-def EFMuonCBViewDataVerifierCfg(name):
-    config = getInDetTrigConfig( "muon" )
+def EFMuonCBViewDataVerifierCfg(flags, name):
     EFMuonCBViewDataVerifier =  CompFactory.AthViews.ViewDataVerifier("VDVEFCBMuon_"+name)
     EFMuonCBViewDataVerifier.DataObjects = [( 'Muon::MdtPrepDataContainer' , 'StoreGateSvc+MDT_DriftCircles' ),  
                                             ( 'Muon::TgcPrepDataContainer' , 'StoreGateSvc+TGC_Measurements' ),
@@ -57,7 +55,7 @@ def EFMuonCBViewDataVerifierCfg(name):
         EFMuonCBViewDataVerifier.DataObjects += [( 'MuonCandidateCollection' , 'StoreGateSvc+MuonCandidates_FS' )]
     else:
         EFMuonCBViewDataVerifier.DataObjects += [( 'MuonCandidateCollection' , 'StoreGateSvc+MuonCandidates' ),
-                                                 ( 'xAOD::TrackParticleContainer' , 'StoreGateSvc+'+config.tracks_FTF() ),
+                                                 ( 'xAOD::TrackParticleContainer' , 'StoreGateSvc+'+flags.Trigger.InDetTracking.Muon.tracks_FTF ),
                                                  ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+SCT_FlaggedCondData' ),
                                                  ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+PixelByteStreamErrs' ),
                                                  ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+SCT_ByteStreamErrs' )]
@@ -393,13 +391,10 @@ def muEFCBStep(flags, chainDict, name='RoI'):
     #EF combined muons
     selAccEFCB = SelectionCA("EFCBMuon_"+name)
 
-    config = getInDetTrigConfig( "muon" )
-
     viewName = 'EFMuCBReco_'+name                                                       
-    trackName = config.tracks_FTF()
+    trackName = flags.Trigger.InDetTracking.Muon.tracks_FTF
     muonCandName = "MuonCandidates"
     if 'FS' in name:
-        config = getInDetTrigConfig( "muonFS" )
         muonCandName = "MuonCandidates_FS"
         ViewCreatorCentredOnIParticleROITool=CompFactory.ViewCreatorCentredOnIParticleROITool
         roiTool         = ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey="MuonCandidates_FS_ROIs")
@@ -417,12 +412,12 @@ def muEFCBStep(flags, chainDict, name='RoI'):
         recoCB = InViewRecoCA("EFMuCBReco_"+name, viewMaker=viewMakerAlg)
         #ID tracking
         recoCB.mergeReco(trigInDetFastTrackingCfg( flags, roisKey=recoCB.inputMaker().InViewRoIs, signatureName="MuonFS" ))
-        trackName = config.tracks_FTF()
+        trackName = flags.Trigger.InDetTracking.MuonFS.tracks_FTF
     else:
         recoCB = InViewRecoCA(viewName)
         recoCB.inputMaker().RequireParentView = True
 
-    recoCB.mergeReco(EFMuonCBViewDataVerifierCfg(name))
+    recoCB.mergeReco(EFMuonCBViewDataVerifierCfg(flags, name))
     
     indetCandCfg = MuonCombinedInDetCandidateAlgCfg(flags, name="TrigMuonCombinedInDetCandidateAlg_"+name, TrackParticleLocation=[trackName], 
                                                  InDetCandidateLocation="IndetCandidates_"+name, DoSiliconAssocForwardMuons=False, InDetForwardTrackSelector="")
@@ -495,10 +490,12 @@ def muEFIsoStep(flags, chainDict):
                                                          ViewNodeName    = viewName+"InView")
     recoIso = InViewRecoCA("EFMuIsoReco", viewMaker=viewMakerAlg)
     #ID tracking
-    config = getInDetTrigConfig( "muonIso" )
     recoIso.mergeReco(trigInDetFastTrackingCfg( flags, roisKey=recoIso.inputMaker().InViewRoIs, signatureName="MuonIso" ))
     recoIso.mergeReco(MuIsoViewDataVerifierCfg())
-    recoIso.mergeReco(TrigMuonEFTrackIsolationAlgCfg(flags, IdTrackParticles=config.tracks_FTF(), MuonEFContainer="InViewIsoMuons", ptcone02Name="InViewIsoMuons.ptcone02", ptcone03Name="InViewIsoMuons.ptcone03"))
+    recoIso.mergeReco(TrigMuonEFTrackIsolationAlgCfg(flags, IdTrackParticles=flags.Trigger.InDetTracking.MuonIso.tracks_FTF,
+                                                    MuonEFContainer="InViewIsoMuons", 
+                                                    ptcone02Name="InViewIsoMuons.ptcone02", 
+                                                    ptcone03Name="InViewIsoMuons.ptcone03"))
 
     selAccEFIso.mergeReco(recoIso)
     efmuIsoHypo = efMuIsoHypoCfg( flags,
-- 
GitLab