From b61e09bb097633f5c309075aa94fef4a64059848 Mon Sep 17 00:00:00 2001
From: Aleksandra Poreba <aleksandra.poreba@cern.ch>
Date: Tue, 18 Feb 2020 11:37:37 +0100
Subject: [PATCH] Add Component Accumulator MenuSequence container

---
 .../Electron/generateElectron.py              |  6 +--
 .../python/HLTMenuConfig/Jet/generateJet.py   |  4 +-
 .../HLTMenuConfig/Menu/MenuComponents.py      | 38 +++++++++++++------
 .../python/HLTMenuConfig/Muon/generateMuon.py |  6 +--
 .../HLTMenuConfig/Photon/generatePhoton.py    |  6 +--
 5 files changed, 37 insertions(+), 23 deletions(-)

diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py
index 15b447344e39..89d33701806d 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py
@@ -1,7 +1,7 @@
 # Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 from TriggerMenuMT.HLTMenuConfig.Electron.ElectronRecoSequences import l2CaloRecoCfg, l2CaloHypoCfg
-from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, \
+from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import CAMenuSequence, \
     ChainStep, Chain, getChainStepName, createStepView
 
 from TrigEgammaHypo.TrigL2CaloHypoTool import TrigL2CaloHypoToolFromDict
@@ -33,7 +33,7 @@ def generateChains( flags,  chainDict ):
 
     accCalo.addEventAlgo(l2CaloHypo, sequenceName=stepView.getName())
 
-    fastCaloSequence = MenuSequence( Sequence    = l2CaloReco.sequence(),
+    fastCaloSequence = CAMenuSequence( Sequence    = l2CaloReco.sequence(),
                                      Maker       = l2CaloReco.inputMaker(),
                                      Hypo        = l2CaloHypo,
                                      HypoToolGen = None, 
@@ -69,7 +69,7 @@ def generateChains( flags,  chainDict ):
 
     accTrk.addEventAlgo(fakeHypoAlg, sequenceName=stepView.getName())
 
-    fastInDetSequence = MenuSequence( Sequence    = fastInDetReco.sequence(),
+    fastInDetSequence = CAMenuSequence( Sequence    = fastInDetReco.sequence(),
                                       Maker       = fastInDetReco.inputMaker(),
                                       Hypo        = fakeHypoAlg,
                                       HypoToolGen = None,
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py
index 838a14d8b7f2..88a417bfeebf 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py
@@ -1,6 +1,6 @@
 # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 
-from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, ChainStep, Chain, InEventReco, getChainStepName, createStepView
+from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import CAMenuSequence, ChainStep, Chain, InEventReco, getChainStepName, createStepView
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 
 
@@ -65,7 +65,7 @@ def generateChains( flags, chainDict ):
     hypo.Jets = jetsfullname
     acc.addEventAlgo(hypo)
 
-    jetSequence = MenuSequence( Sequence    = inEventReco.sequence(),
+    jetSequence = CAMenuSequence( Sequence    = inEventReco.sequence(),
                                 Maker       = inEventReco.inputMaker(),
                                 Hypo        = hypo,
                                 HypoToolGen = trigJetHypoToolFromDict,
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
index 791722265720..dd5e9ded32ad 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
@@ -1,5 +1,5 @@
 
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon.Logging import logging
 log = logging.getLogger( __name__ )
@@ -286,12 +286,11 @@ class MenuSequence(object):
     """ Class to group reco sequences with the Hypo"""
     """ By construction it has one Hypo Only; behaviour changed to support muFastOvlpRmSequence() which has two, but this will change"""
 
-    def __init__(self, Sequence, Maker,  Hypo, HypoToolGen, CA=None ):
+    def __init__(self, Sequence, Maker,  Hypo, HypoToolGen):
         assert Maker.name().startswith("IM"), "The input maker {} name needs to start with letter: IM".format(Maker.name())
         self._sequence     = Node( Alg=Sequence)
         self._maker       = InputMakerNode( Alg = Maker )
         self._seed=''
-        self.ca = CA
 
         if isinstance(Hypo, list): # we will remove support for this and will issue error
             log.warning("Sequence %s has more than one Hypo; correct your sequence in the next development cycle", self.name)
@@ -349,23 +348,14 @@ class MenuSequence(object):
 
     @property
     def sequence(self):
-        if self.ca is not None:
-            makerAlg = self.ca.getEventAlgo(self._maker.Alg.name())
-            self._maker.Alg = makerAlg
         return self._sequence
 
     @property
     def maker(self):
-        if self.ca is not None:
-            makerAlg = self.ca.getEventAlgo(self._maker.Alg.name())
-            self._maker.Alg = makerAlg
         return self._maker
 
     @property
     def hypo(self):
-        if self.ca is not None:
-            hypoAlg = self.ca.getEventAlgo(self._hypo.Alg.name())
-            self._hypo.Alg = hypoAlg
         return self._hypo
 
     def connectToFilter(self, outfilter):
@@ -401,6 +391,30 @@ class MenuSequence(object):
            %(self.name, hyponame, self.maker.Alg.name(), self.sequence.Alg.name(), hypotool)
 
 
+class CAMenuSequence(MenuSequence):
+    ''' MenuSequence with Compoment Accumulator '''
+
+    def __init__(self, Sequence, Maker,  Hypo, HypoToolGen, CA):
+        self.ca = CA
+        MenuSequence.__init__(self, Sequence, Maker,  Hypo, HypoToolGen)
+
+    @property
+    def sequence(self):
+        makerAlg = self.ca.getEventAlgo(self._maker.Alg.name())
+        self._maker.Alg = makerAlg
+        return self._sequence
+
+    @property
+    def maker(self):
+        makerAlg = self.ca.getEventAlgo(self._maker.Alg.name())
+        self._maker.Alg = makerAlg
+        return self._maker
+
+    @property
+    def hypo(self):
+        hypoAlg = self.ca.getEventAlgo(self._hypo.Alg.name())
+        self._hypo.Alg = hypoAlg
+        return self._hypo
 
 
 #################################################
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py
index ca28955174bf..9a6dd64a406d 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py
@@ -1,6 +1,6 @@
 # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 
-from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, ChainStep, Chain, getChainStepName, createStepView
+from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import CAMenuSequence, ChainStep, Chain, getChainStepName, createStepView
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 
 from TrigL2MuonSA.TrigL2MuonSAConfig_newJO import l2MuFastRecoCfg, l2MuFastHypoCfg
@@ -30,7 +30,7 @@ def generateChains( flags, chainDict ):
 
     acc.addEventAlgo(l2muFastHypo, sequenceName=stepView.getName())
 
-    l2muFastSequence = MenuSequence( Sequence = l2muFastReco.sequence(),
+    l2muFastSequence = CAMenuSequence( Sequence = l2muFastReco.sequence(),
                                      Maker = l2muFastReco.inputMaker(),
                                      Hypo = l2muFastHypo,
                                      HypoToolGen = None,
@@ -65,7 +65,7 @@ def generateChains( flags, chainDict ):
     fakeHypoAlg.HypoTools = [ makeFakeHypoTool(chainDict['chainName'], None) ]
     accMS.addEventAlgo(fakeHypoAlg, sequenceName=stepEFMSView.getName())
 
-    efmuMSSequence = MenuSequence( Sequence = recoMS.sequence(),
+    efmuMSSequence = CAMenuSequence( Sequence = recoMS.sequence(),
                                      Maker = recoMS.inputMaker(),
                                      Hypo = fakeHypoAlg, 
                                      HypoToolGen = None,
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/generatePhoton.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/generatePhoton.py
index d43cd7ea23ad..9a68071fb951 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/generatePhoton.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/generatePhoton.py
@@ -2,7 +2,7 @@
 
 from TriggerMenuMT.HLTMenuConfig.Electron.ElectronRecoSequences import l2CaloRecoCfg, l2CaloHypoCfg
 from TriggerMenuMT.HLTMenuConfig.Photon.PhotonRecoSequences import l2PhotonRecoCfg, l2PhotonHypoCfg
-from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, \
+from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import CAMenuSequence, \
     ChainStep, Chain, getChainStepName, createStepView
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 
@@ -29,7 +29,7 @@ def generateChains(flags, chainDict):
 
     accCalo.addEventAlgo(l2CaloHypo, sequenceName=stepView.getName())
 
-    fastCaloSequence = MenuSequence( Sequence = l2CaloReco.sequence(),
+    fastCaloSequence = CAMenuSequence( Sequence = l2CaloReco.sequence(),
                                      Maker = l2CaloReco.inputMaker(),
                                      Hypo = l2CaloHypo,
                                      HypoToolGen = None,
@@ -55,7 +55,7 @@ def generateChains(flags, chainDict):
 
     accPhoton.addEventAlgo(l2PhotonHypo, sequenceName=stepView.getName())
 
-    l2PhotonSequence = MenuSequence( Sequence = l2PhotonReco.sequence(),
+    l2PhotonSequence = CAMenuSequence( Sequence = l2PhotonReco.sequence(),
                                      Maker = l2PhotonReco.inputMaker(),
                                      Hypo = l2PhotonHypo,
                                      HypoToolGen = None,
-- 
GitLab