diff --git a/Trigger/TriggerCommon/TriggerMenu/python/combined/generateCombinedChainDefs.py b/Trigger/TriggerCommon/TriggerMenu/python/combined/generateCombinedChainDefs.py
index ef328dd377e9256010959cb560a361f3c70396f4..f5f9cc3540896e33e0afeffc5f9613e21cdb6c0a 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/combined/generateCombinedChainDefs.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/combined/generateCombinedChainDefs.py
@@ -430,7 +430,7 @@ def _addMatching(theChainDef,chainDicts,listOfChainDefs):
     maxSigCounter = theChainDef.signatureList[-1]['signature_counter']
     # =========================================================
     # muon input TE to the hypo
-    muonTE = theChainDef.signatureList[3]['listOfTriggerElements']
+    muonTE = theChainDef.signatureList[5]['listOfTriggerElements']
 
     # =========================================================
     #check if jet or bjet to be matched & find hypothreshold
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py b/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py
index ecfcb2cad03fcfb3b450b3587f436ddb6bf7d8a5..a3fa01033ef8ed6ebdb33573ba33d0620a72f4ad 100755
--- a/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py
@@ -262,30 +262,20 @@ class L2EFChain_mu(L2EFChainDef):
     else:
       log.error("Chain built with %s but so far only l2muonSA is supported." % (self.chainPart['L2SAAlg']))
       return False
-
+    
     [trkfast, trkiso, trkprec] = TrigInDetSequence("Muon", "muon", "IDTrig", "2step").getSequence()
-
     
-    #if "L2StarA" in self.chainPart['L2IDAlg']:                           # ---> this is Run1 tracking - keep it here
-    #  from TrigL2SiTrackFinder.TrigL2SiTrackFinder_Config import TrigL2SiTrackFinder_MuonA
-    #  theTrigL2SiTrackFinder_MuonA = TrigL2SiTrackFinder_MuonA()
-    #  from TrigL2SiTrackFinder.TrigL2SiTrackFinder_Config import TrigL2SiTrackFinder_muonIsoA
-    #  theTrigL2SiTrackFinder_muonIsoA = TrigL2SiTrackFinder_muonIsoA()
-    #  id_alg_output = "STRATEGY_A" #depends on id_alg
-    #else:
-    #  log.error("Chain built with %s but so far only L2StarA,B and C are supported." % (self.chainPart['L2IDAlg']))
-    #  return False    
-    #id_alg_output = "STRATEGY_A"  
+    
 
     id_alg_output = "TrigFastTrackFinder_Muon" 
     if "muComb" in self.chainPart['L2CBAlg']:
       muCombThresh = self.getMuCombThresh()
-
+      
       if "r1extr" in self.chainPart['addInfo']:
-        theL2CombinedAlg  = TrigmuCombConfig(L2AlgName, id_alg_output,"OLDextr")
+        theL2CombinedAlgr1  = TrigmuCombConfig(L2AlgName, id_alg_output,"OLDextr")
       else:
         theL2CombinedAlg  = TrigmuCombConfig(L2AlgName, id_alg_output)
-
+        
       theL2CombinedHypo = MucombHypoConfig(L2AlgName, muCombThresh)
     else:
       log.error("Chain built with %s but so far only muComb is supported." % (self.chainPart['L2CBAlg']))
@@ -305,73 +295,82 @@ class L2EFChain_mu(L2EFChainDef):
 
     #----Sequence list---
     self.L2sequenceList += [[self.L2InputTE,
-                             [theL2StandAloneAlg , theL2StandAloneHypo],
-                             'L2_mu_step1']] 
+                             [theL2StandAloneAlg],
+                             'L2_mu_step1']]
+    self.L2sequenceList += [['L2_mu_step1',
+                             [theL2StandAloneHypo],
+                             'L2_mu_hypo1']] 
 
     EFinputTE = ''
 
     if (self.doOvlpRm):
-      self.L2sequenceList += [[['L2_mu_step1'], [self.theL2OvlpRmConfig_mufast ],'L2_step1a_wOvlpRm']]
-      #self.L2sequenceList += [[['L2_muon_standalone_wOvlpRm'],           # ---> this is Run1 tracking - keep it here
-      #                         [theTrigL2SiTrackFinder_MuonA, 
-      #                          theL2CombinedAlg, theL2CombinedHypo],
-      #                         'L2_step1a_wOvlpRm']]
-      self.L2sequenceList += [[['L2_step1a_wOvlpRm'], 
-                               trkfast+[theL2CombinedAlg, theL2CombinedHypo],
-                               'L2_step1b_wOvlpRm']]
+      self.L2sequenceList += [[['L2_mu_hypo1'], [self.theL2OvlpRmConfig_mufast ],'L2_step1a_wOvlpRm']]
+      if "r1extr" in self.chainPart['addInfo']:
+        self.L2sequenceList += [[['L2_step1a_wOvlpRm'], 
+                                 trkfast+[theL2CombinedAlgr1],
+                                 'L2_step1b_wOvlpRm']]
+      else:
+        self.L2sequenceList += [[['L2_step1a_wOvlpRm'], 
+                                 trkfast+[theL2CombinedAlg],
+                                 'L2_step1b_wOvlpRm']]
+
+      self.L2sequenceList += [['L2_step1b_wOvlpRm',
+                               [theL2CombinedHypo],
+                               'L2_step1c_wOvlpRm']]
       if not "noMuCombOvlpRm" in self.chainPart['overlapRemoval']:
-        self.L2sequenceList += [[['L2_step1b_wOvlpRm'], [ self.theL2OvlpRmConfig_mucomb ], 'L2_step2_wOvlpRm']]
+        self.L2sequenceList += [[['L2_step1c_wOvlpRm'], [ self.theL2OvlpRmConfig_mucomb ], 'L2_step2_wOvlpRm']]
         EFinputTE = 'L2_step2_wOvlpRm'
       else:
-        EFinputTE = 'L2_step1b_wOvlpRm'
+        EFinputTE = 'L2_step1c_wOvlpRm'
 
     else:
-      #self.L2sequenceList += [[['L2_mu_step1'],                          # ---> this is Run1 tracking - keep it here
-      #                           [theTrigL2SiTrackFinder_MuonA, 
-      #                            theL2CombinedAlg, theL2CombinedHypo],
-      #                            #],
-      #                           'L2_mu_step2']]
-      self.L2sequenceList += [[['L2_mu_step1'],
-                               trkfast+
-                               [theL2CombinedAlg,
-                                theL2CombinedHypo],
-                               'L2_mu_step2']]
+      if "r1extr" in self.chainPart['addInfo']:
+        self.L2sequenceList += [[['L2_mu_hypo1'],
+                                 trkfast+
+                                 [theL2CombinedAlgr1],
+                                 'L2_mu_step2']]
+      else:
+        self.L2sequenceList += [[['L2_mu_hypo1'],
+                                 trkfast+
+                                 [theL2CombinedAlg],
+                                 'L2_mu_step2']]
 
+      self.L2sequenceList += [['L2_mu_step2',
+                               [theL2CombinedHypo],
+                               'L2_mu_hypo2']]
+      EFinputTE = 'L2_mu_hypo2'
 
       # Run also FTK tracking
-      if self.chainPart['trkInfo'] == "ftk":
-        print 'Configuring FTK tracking for isolation'
-        from TrigInDetConf.TrigInDetFTKSequence import TrigInDetFTKSequence
-                
-        [ftktrkfast, ftktrkprec] = TrigInDetFTKSequence("Muon","muonIso",sequenceFlavour=["PT"]).getSequence()    
- 
-        self.L2sequenceList += [[['L2_mu_step2'],
-                                 ftktrkfast+ftktrkprec,
-                                 'L2_mu_step3']]
-        from TrigMuonHypo.TrigMuonHypoConfig import MuisoHypoConfig
- 
-        theMuonFTKIsolationAlgo = TrigMuonEFTrackIsolationVarConfig("TrigMuonFTKTrackIsolationVar")
-       
-        theMuonFTKIsolationHypo = MuisoHypoConfig("TrigMuonFTKIsolationHypo")
- 
-        self.L2sequenceList += [[['L2_mu_step3'],
-                                 [theMuonFTKIsolationAlgo, theMuonFTKIsolationHypo],
-                                 'L2_mu_step4']] 
-      #we dont need the info from the FTK iso, just the rejection
-      #-> so we can still pass step2 every time
-      EFinputTE = 'L2_mu_step2'
+    if self.chainPart['trkInfo'] == "ftk":
+      print 'Configuring FTK tracking for isolation'
+      from TrigInDetConf.TrigInDetFTKSequence import TrigInDetFTKSequence
+      
+      [ftktrkfast, ftktrkprec] = TrigInDetFTKSequence("Muon","muonIso",sequenceFlavour=["PT"]).getSequence()    
+      
+      self.L2sequenceList += [[['L2_mu_step2'],
+                               ftktrkfast+ftktrkprec,
+                               'L2_mu_step3']]
+      from TrigMuonHypo.TrigMuonHypoConfig import MuisoHypoConfig
+      
+      theMuonFTKIsolationAlgo = TrigMuonEFTrackIsolationVarConfig("TrigMuonFTKTrackIsolationVar")
+      
+      theMuonFTKIsolationHypo = MuisoHypoConfig("TrigMuonFTKIsolationHypo")
+      
+      self.L2sequenceList += [[['L2_mu_step3'],
+                               [theMuonFTKIsolationAlgo],
+                               'L2_mu_step4']]
+      self.L2sequenceList += [[['L2_mu_step4'],
+                               [theMuonFTKIsolationHypo],
+                               'L2_mu_hypo3']] 
 
 
-    #self.EFsequenceList += [[[EFinputTE],                                # ---> this is Run1 tracking - keep it here
-    #                          theTrigEFIDInsideOut_Muon.getSequence(),
-    #                          'EF_mu_step1']]
     self.EFsequenceList += [[[EFinputTE],
-                              trkprec,
-                              'EF_mu_step1']]
+                             trkprec,
+                             'EF_mu_step1']]
 
     self.EFsequenceList += [[['EF_mu_step1'],
-    	  		       [theEFAlg, theTrigMuonEFCombinerHypoConfig],
-    	  		        'EF_mu_step2']]
+                             [theEFAlg,theTrigMuonEFCombinerHypoConfig],
+                             'EF_mu_step2']]
 
     if self.chainPart['flavour'] != '':
       self.EFsequenceList += [[['EF_mu_step2'],
@@ -379,23 +378,23 @@ class L2EFChain_mu(L2EFChainDef):
                                'EF_mu_step_flavour']]
        
     if '10invm30' in self.chainPart['addInfo'] and 'pt2' in self.chainPart['addInfo'] and 'z10' in self.chainPart['addInfo']:
-       theTrigMuonEFCombinerDiMuonMassPtImpactsHypoConfig = TrigMuonEFCombinerDiMuonMassPtImpactsHypoConfig("DiMuon","0")
-       self.EFsequenceList += [[['EF_mu_step2'],
-                                [theTrigMuonEFCombinerDiMuonMassPtImpactsHypoConfig],
-    	  		        'EF_mu_step3']]
+      theTrigMuonEFCombinerDiMuonMassPtImpactsHypoConfig = TrigMuonEFCombinerDiMuonMassPtImpactsHypoConfig("DiMuon","0")
+      self.EFsequenceList += [[['EF_mu_step2'],
+                               [theTrigMuonEFCombinerDiMuonMassPtImpactsHypoConfig],
+                               'EF_mu_step3']]
     if 'invm1' in self.chainPart['addInfo']:
-       theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig = TrigMuonEFCombinerDiMuonMassPtImpactsHypoConfig("HiggsinoDiMu","0")
-       theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.massThresLow = 1.0
-       theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.massThresHigh = -1
-       theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.pairptThresLow = -1
-       theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.pairptThresHigh = -1
-       theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.deltaZThres = -1
-       theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.deltaPhiThresLow = -1
-       theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.deltaPhiThresHigh = -1
-       theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.AcceptAll = False
-       self.EFsequenceList += [[['EF_mu_step2'],
-                                [theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig],
-    	  		        'EF_mu_step3']]
+      theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig = TrigMuonEFCombinerDiMuonMassPtImpactsHypoConfig("HiggsinoDiMu","0")
+      theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.massThresLow = 1.0
+      theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.massThresHigh = -1
+      theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.pairptThresLow = -1
+      theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.pairptThresHigh = -1
+      theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.deltaZThres = -1
+      theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.deltaPhiThresLow = -1
+      theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.deltaPhiThresHigh = -1
+      theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig.AcceptAll = False
+      self.EFsequenceList += [[['EF_mu_step2'],
+                               [theTrigMuonEFCombinerDiMuonMassPtImpactsHiggsinoHypoConfig],
+                               'EF_mu_step3']]
     if self.chainPart['isoInfo']:      
       if self.chainPart['isoInfo'] == "iloose":
         theTrigMuonEFTrackIsolationHypoConfig = TrigMuonEFTrackIsolationHypoConfig("Muon","RelEFOnlyMedium")
@@ -423,93 +422,70 @@ class L2EFChain_mu(L2EFChainDef):
         log.error("Isolation %s not yet supported." % (self.chainPart['isoInfo']))
         return False
 
+      inputTrk='EF_mu_step2'
       if self.chainPart['isoInfo'] != "icalo":
         isoIDseqList = trkiso+trkprec
         if "zROItest" in self.chainPart['addInfo']:
           # before running the tracking, we update the RoI based on the muon with TrigMuonEFIDTrackRoiMaker
           theTrigMuonEFIDTrackRoiMaker = TrigMuonEFIDTrackRoiMakerConfig()
-          isoIDseqList.insert(0, theTrigMuonEFIDTrackRoiMaker)
-
-        self.EFsequenceList += [[['EF_mu_step2'],
+          self.EFsequenceList += [[['EF_mu_step2'],
+                                   [theTrigMuonEFIDTrackRoiMaker],
+                                   'EF_mu_roi']]
+          inputTrk = 'EF_mu_roi'
+        self.EFsequenceList += [[[inputTrk],
                                  isoIDseqList,
                                  'EF_mu_step3']]
 
-      if self.chainPart['isoInfo'] == "iloose" or self.chainPart['isoInfo'] == "imedium":
-      	self.EFsequenceList += [[['EF_mu_step3'],
-        	                 [TrigMuonEFTrackIsolationConfig("TrigMuonEFTrackIsolation"),theTrigMuonEFTrackIsolationHypoConfig],
-                	         'EF_mu_step4']]
-      elif self.chainPart['isoInfo'] == "ivarloose" or self.chainPart['isoInfo'] == "ivarmedium":
-      	self.EFsequenceList += [[['EF_mu_step3'],
-        	                 [TrigMuonEFTrackIsolationVarConfig("TrigMuonEFTrackIsolationVar"),theTrigMuonEFTrackIsolationHypoConfig],
-                	         'EF_mu_step4']]
-      elif self.chainPart['isoInfo'] == "icalo":
-
-        # full scan topo and merging w/ RoI TEs
-        te_in=''
-        for step in self.fullScanSeqMap:
-            self.EFsequenceList += [[[te_in],self.fullScanSeqMap[step],step]]
-            te_in=step
-        self.EFsequenceList += [[ ['EF_mu_step2',te_in],[self.DummyMergerAlgo],'EF_mu_step3']]
-        
-        #self.EFsequenceList += [[['EF_mu_step2'],
-        #                         [self.trigCaloCellMaker_fullcalo,self.topologicalClusterMaker],
-        #                         'EF_mu_step3']]
-
+      if self.chainPart['isoInfo'] == "iloose" or self.chainPart['isoInfo'] == "imedium" or self.chainPart['isoInfo'] == "iloosecalo" or self.chainPart['isoInfo'] == "imediumcalo":
         self.EFsequenceList += [[['EF_mu_step3'],
-                                 [ TrigMuonEFCaloIsolationConfig("TrigMuonEFCaloIsolation"),theTrigMuonEFCaloIsolationHypoConfig ],
+                                 [TrigMuonEFTrackIsolationConfig("TrigMuonEFTrackIsolation")],
                                  'EF_mu_step4']]
-      elif self.chainPart['isoInfo'] == "iloosecalo" or self.chainPart['isoInfo'] == "imediumcalo":
-        te_in=''
-        for step in self.fullScanSeqMap:
-            self.EFsequenceList += [[[te_in],self.fullScanSeqMap[step],step]]
-            te_in=step
-        self.EFsequenceList += [[ ['EF_mu_step3',te_in],[self.DummyMergerAlgo],'EF_mu_step4']]
-        
-        #self.EFsequenceList += [[['EF_mu_step3'],
-        #                         [self.trigCaloCellMaker_fullcalo,self.topologicalClusterMaker],
-        #                         'EF_mu_step4']]
-
         self.EFsequenceList += [[['EF_mu_step4'],
-                           [TrigMuonEFTrackIsolationConfig("TrigMuonEFTrackIsolation"),theTrigMuonEFTrackIsolationHypoConfig],
-                           'EF_mu_step5']]
+                                 [theTrigMuonEFTrackIsolationHypoConfig],
+                                 'EF_mu_hypo3']]
+      elif self.chainPart['isoInfo'] == "ivarloose" or self.chainPart['isoInfo'] == "ivarmedium" or self.chainPart['isoInfo'] == "ivarloosecalo" or self.chainPart['isoInfo'] == "ivarmediumcalo":
+        self.EFsequenceList += [[['EF_mu_step3'],
+                                 [TrigMuonEFTrackIsolationVarConfig("TrigMuonEFTrackIsolationVar")],
+                                 'EF_mu_step4']]
+        self.EFsequenceList += [[['EF_mu_step4'],
+                                 [theTrigMuonEFTrackIsolationHypoConfig],
+                                 'EF_mu_hypo3']]
+      if 'calo' in self.chainPart['isoInfo']:
 
-        self.EFsequenceList += [[['EF_mu_step5'],
-                                 [ TrigMuonEFCaloIsolationConfig("TrigMuonEFCaloIsolation"),theTrigMuonEFCaloIsolationHypoConfig ],
-                                 'EF_mu_step6']]
-      elif self.chainPart['isoInfo'] == "ivarloosecalo" or self.chainPart['isoInfo'] == "ivarmediumcalo":
+        # full scan topo and merging w/ RoI TEs
         te_in=''
         for step in self.fullScanSeqMap:
-            self.EFsequenceList += [[[te_in],self.fullScanSeqMap[step],step]]
-            te_in=step
-        self.EFsequenceList += [[ ['EF_mu_step3',te_in],[self.DummyMergerAlgo],'EF_mu_step4']]
-        
-        #self.EFsequenceList += [[['EF_mu_step3'],
-        #                         [self.trigCaloCellMaker_fullcalo,self.topologicalClusterMaker],
-        #                         'EF_mu_step4']]
-
-        self.EFsequenceList += [[['EF_mu_step4'],
-                           [TrigMuonEFTrackIsolationVarConfig("TrigMuonEFTrackIsolationVar"),theTrigMuonEFTrackIsolationHypoConfig],
-                           'EF_mu_step5']]
+          self.EFsequenceList += [[[te_in],self.fullScanSeqMap[step],step]]
+          te_in=step
+        self.EFsequenceList += [[ ['EF_mu_step2',te_in],[self.DummyMergerAlgo],'EF_mu_step5']]
+          
 
         self.EFsequenceList += [[['EF_mu_step5'],
-                                 [ TrigMuonEFCaloIsolationConfig("TrigMuonEFCaloIsolation"),theTrigMuonEFCaloIsolationHypoConfig ],
+                                 [ TrigMuonEFCaloIsolationConfig("TrigMuonEFCaloIsolation")],
                                  'EF_mu_step6']]
+        self.EFsequenceList += [[['EF_mu_step6'],
+                                 [theTrigMuonEFCaloIsolationHypoConfig ],
+                                 'EF_mu_hypo4']]
 
 
 
     #--- adding signatures ----
     self.L2signatureList += [ [['L2_mu_step1']*self.mult] ]
+    self.L2signatureList += [ [['L2_mu_hypo1']*self.mult] ]
     if (self.doOvlpRm):
       self.L2signatureList += [ [['L2_step1a_wOvlpRm']*self.mult] ]
       self.L2signatureList += [ [['L2_step1b_wOvlpRm']*self.mult] ]
+      self.L2signatureList += [ [['L2_step1c_wOvlpRm']*self.mult] ]
       if not "noMuCombOvlpRm" in self.chainPart['overlapRemoval']:
         self.L2signatureList += [ [['L2_step2_wOvlpRm']*self.mult] ]
     else:
       self.L2signatureList += [ [['L2_mu_step2']*self.mult] ]
+      self.L2signatureList += [ [['L2_mu_hypo2']*self.mult] ]
      
     if self.chainPart['trkInfo'] == 'ftk':
       self.L2signatureList += [ [['L2_mu_step3']*self.mult] ]
       self.L2signatureList += [ [['L2_mu_step4']*self.mult] ] 
+      self.L2signatureList += [ [['L2_mu_hypo3']*self.mult] ] 
 
     self.EFsignatureList += [ [['EF_mu_step1']*self.mult] ]
     self.EFsignatureList += [ [['EF_mu_step2']*self.mult] ]
@@ -520,35 +496,34 @@ class L2EFChain_mu(L2EFChainDef):
     if 'invm1' in self.chainPart['addInfo']:
       self.EFsignatureList += [ [['EF_mu_step3']] ]
 
-    if (self.chainPart['isoInfo']):# == "iloose" or self.chainPart['isoInfo'] == "imedium":
-      self.EFsignatureList += [ [['EF_mu_step3']*self.mult] ]
-      self.EFsignatureList += [ [['EF_mu_step4']*self.mult] ]
-      if self.chainPart['isoInfo'] == 'icalo':
-          for step in self.fullScanSeqMap:
-              self.EFsignatureList += [ [[step]] ]
-      if self.chainPart['isoInfo'] == 'iloosecalo' or self.chainPart['isoInfo'] == 'imediumcalo' or self.chainPart['isoInfo'] == 'ivarloosecalo' or self.chainPart['isoInfo'] == 'ivarmediumcalo':
+    if self.chainPart['isoInfo']:# == "iloose" or self.chainPart['isoInfo'] == "imedium":
+      if self.chainPart['isoInfo'] != "icalo":
+        if "zROItest" in self.chainPart['addInfo']:
+          self.EFsignatureList += [ [['EF_mu_roi']*self.mult] ]
+        self.EFsignatureList += [ [['EF_mu_step3']*self.mult] ]
+        self.EFsignatureList += [ [['EF_mu_step4']*self.mult] ]
+        self.EFsignatureList += [ [['EF_mu_hypo3']*self.mult] ]
+      if 'calo' in self.chainPart['isoInfo']:
         for step in self.fullScanSeqMap:
-            self.EFsignatureList += [ [[step]] ]
+          self.EFsignatureList += [ [[step]] ]
         self.EFsignatureList += [ [['EF_mu_step5']*self.mult] ]
         self.EFsignatureList += [ [['EF_mu_step6']*self.mult] ]
-
-    if "ds" in self.chainPart['addInfo']:
-      self.EFsignatureList += [ [['EF_mu_ds']] ]
-
-    if self.chainPart['flavour'] != '':
-      self.EFsignatureList += [ [['EF_mu_step_flavour']] ]
+        self.EFsignatureList += [ [['EF_mu_hypo4']*self.mult] ]
 
 
     #--- renaming TEs ---
     self.TErenamingDict = {
       'L2_mu_step1': mergeRemovingOverlap('L2_mu_SA_', L2AlgName+muFastThresh+'_'+self.L2InputTE),
+      'L2_mu_hypo1': mergeRemovingOverlap('L2_mu_SAhyp_', L2AlgName+muFastThresh+'_'+self.L2InputTE),
       'L2_mu_step2': mergeRemovingOverlap('L2_mucomb_',  self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'], '').replace(self.chainPart['specialStream'], '')+'_'+self.L2InputTE),
+      'L2_mu_hypo2': mergeRemovingOverlap('L2_mucombhyp_',  self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'], '').replace(self.chainPart['specialStream'], '')+'_'+self.L2InputTE),
       'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', self.chainPartNameNoMult+'_'+self.L2InputTE),
       'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   self.chainPartNameNoMult+'_'+self.L2InputTE),
       }    
     if self.chainPart['trkInfo'] == "ftk":
       self.TErenamingDict.update({'L2_mu_step3': mergeRemovingOverlap('EF_ftkfex_',self.chainPartNameNoMult+'_'+self.L2InputTE),
-                                  'L2_mu_step4': mergeRemovingOverlap('EF_ftkhypo_',self.chainPartNameNoMult+'_'+self.L2InputTE),
+                                  'L2_mu_step4': mergeRemovingOverlap('EF_ftkiso_',self.chainPartNameNoMult+'_'+self.L2InputTE),
+                                  'L2_mu_hypo3': mergeRemovingOverlap('EF_ftkhypo_',self.chainPartNameNoMult+'_'+self.L2InputTE),
                                   })
       
     if (("ds1" in self.chainPart['addInfo'])):
@@ -561,7 +536,8 @@ class L2EFChain_mu(L2EFChainDef):
       chainPartNameNoMultNoDS = self.chainPartNameNoMult
 
     if 'llns' in self.chainPart['addInfo']:
-      self.TErenamingDict.update({'L2_mu_step2'   : mergeRemovingOverlap('L2_mucomb_',  L2AlgName+muCombThresh+'_'+self.L2InputTE+'_llns')}) 
+      self.TErenamingDict.update({'L2_mu_step2'   : mergeRemovingOverlap('L2_mucomb_',  L2AlgName+muCombThresh+'_'+self.L2InputTE+'_llns'),
+                                  'L2_mu_hypo2'   : mergeRemovingOverlap('L2_mucombhyp_',  L2AlgName+muCombThresh+'_'+self.L2InputTE+'_llns')}) 
     if '10invm30' in self.chainPart['addInfo'] and 'pt2' in self.chainPart['addInfo'] and 'z10' in self.chainPart['addInfo']:
       self.TErenamingDict.update({'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', chainPartNameNoMultNoDS.replace('_'+self.chainPart['isoInfo'],'')),
                                   'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   chainPartNameNoMultNoDS.replace('_'+self.chainPart['isoInfo'],'')),
@@ -576,8 +552,10 @@ class L2EFChain_mu(L2EFChainDef):
 
       self.TErenamingDict.update({'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', chainPartNameNoMultNoDS.replace('_'+self.chainPart['isoInfo'],'')),
                                   'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   chainPartNameNoMultNoDS.replace('_'+self.chainPart['isoInfo'],'')),
+                                  'EF_mu_roi': mergeRemovingOverlap('EF_SuperEFRoI_',   chainPartNameNoMultNoDS),
                                   'EF_mu_step3': mergeRemovingOverlap('EF_muI_efid_',    chainPartNameNoMultNoDS),
-                                  'EF_mu_step4': mergeRemovingOverlap('EF_trkIso_',       chainPartNameNoMultNoDS)})
+                                  'EF_mu_step4': mergeRemovingOverlap('EF_trkIso_',       chainPartNameNoMultNoDS),
+                                  'EF_mu_hypo3': mergeRemovingOverlap('EF_trkIsohyp_',       chainPartNameNoMultNoDS)})
     if (self.chainPart['isoInfo']) and ( self.chainPart['isoInfo'] == "icalo" ):
 
       self.TErenamingDict.update({'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'],'')),
@@ -586,52 +564,66 @@ class L2EFChain_mu(L2EFChainDef):
                                   'EF_full_cell':mergeRemovingOverlap('EF_', self.chainPartNameNoMult+'_fscalocell'),
                                   'EF_FSTopoClusters':mergeRemovingOverlap('EF_', self.chainPartNameNoMult+'_fscalotopo'),
                                   'EF_FSTopoClustersED':mergeRemovingOverlap('EF_', self.chainPartNameNoMult+'_fscalotopoed'),
-                                  'EF_mu_step3': mergeRemovingOverlap('EF_fullcalo_',    self.chainPartNameNoMult),
-                                  'EF_mu_step4': mergeRemovingOverlap('EF_caloIso_',       self.chainPartNameNoMult)})
+                                  'EF_mu_step5': mergeRemovingOverlap('EF_fullcalo_',    self.chainPartNameNoMult),
+                                  'EF_mu_step6': mergeRemovingOverlap('EF_caloIso_',       self.chainPartNameNoMult),
+                                  'EF_mu_hypo4': mergeRemovingOverlap('EF_caloIsohyp_',       self.chainPartNameNoMult)})
     if (self.chainPart['isoInfo']) and ( self.chainPart['isoInfo'] == "iloosecalo" or self.chainPart['isoInfo'] == "imediumcalo" or self.chainPart['isoInfo'] == "ivarloosecalo" or self.chainPart['isoInfo'] == "ivarmediumcalo"):
  
-        self.TErenamingDict.update({'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'],'')),
+      self.TErenamingDict.update({'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'],'')),
                                   'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'],'')),
+                                  'EF_mu_roi': mergeRemovingOverlap('EF_SuperEFRoI_',   self.chainPartNameNoMult),
                                   'EF_mu_step3': mergeRemovingOverlap('EF_muI_efid_',    chainPartNameNoMultNoDS),
+                                  'EF_mu_step4': mergeRemovingOverlap('EF_trkIso_',       chainPartNameNoMultNoDS),
+                                  'EF_mu_hypo3': mergeRemovingOverlap('EF_trkIsohyp_',       chainPartNameNoMultNoDS),
                                   'EF_full':mergeRemovingOverlap('EF_', self.chainPartNameNoMult+'_fs'),
                                   'EF_full_cell':mergeRemovingOverlap('EF_', self.chainPartNameNoMult+'_fscalocell'),
                                   'EF_FSTopoClusters':mergeRemovingOverlap('EF_', self.chainPartNameNoMult+'_fscalotopo'),
                                   'EF_FSTopoClustersED':mergeRemovingOverlap('EF_', self.chainPartNameNoMult+'_fscalotopoed'),
-                                  'EF_mu_step4': mergeRemovingOverlap('EF_fullcalo_',    self.chainPartNameNoMult),
-                                  'EF_mu_step5': mergeRemovingOverlap('EF_trkIso_',       self.chainPartNameNoMult),
-                                  'EF_mu_step6': mergeRemovingOverlap('EF_caloIso_',       self.chainPartNameNoMult)})
+                                  'EF_mu_step5': mergeRemovingOverlap('EF_fullcalo_',    self.chainPartNameNoMult),
+                                  'EF_mu_step6': mergeRemovingOverlap('EF_caloIso_',       self.chainPartNameNoMult),
+                                  'EF_mu_hypo4': mergeRemovingOverlap('EF_caloIsohyp_',       self.chainPartNameNoMult)})
+
 
     if self.doOvlpRm:
       if not "noMuCombOvlpRm" in self.chainPart['overlapRemoval']:
         self.TErenamingDict.update({'L2_step1a_wOvlpRm'  : mergeRemovingOverlap('L2_mu_SAOvlpRm_',    L2AlgName+muFastThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
                                     'L2_step1b_wOvlpRm'  : mergeRemovingOverlap('L2_muon_comb',       L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
+                                    'L2_step1c_wOvlpRm'  : mergeRemovingOverlap('L2_muon_combhyp',       L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
                                     'L2_step2_wOvlpRm'   : mergeRemovingOverlap('L2_mu_combOvlpRm_',  L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm'),
                                     'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', chainPartNameNoMultNoDS+'_wOvlpRm'),
                                     'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   chainPartNameNoMultNoDS+'_wOvlpRm')})
+
       else:
         self.TErenamingDict.update({'L2_step1a_wOvlpRm'  : mergeRemovingOverlap('L2_mu_SAOvlpRm_',    L2AlgName+muFastThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
                                     'L2_step1b_wOvlpRm'  : mergeRemovingOverlap('L2_muon_comb',       L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
+                                    'L2_step1c_wOvlpRm'  : mergeRemovingOverlap('L2_muon_combhyp',       L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
                                     'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', chainPartNameNoMultNoDS+'_wOvlpRm'),
                                     'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   chainPartNameNoMultNoDS+'_wOvlpRm')})
+
     if self.doOvlpRm and self.chainPart['isoInfo']:
       self.TErenamingDict.update({'L2_step1a_wOvlpRm'  : mergeRemovingOverlap('L2_mu_SAOvlpRm_',    L2AlgName+muFastThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
                                   'L2_step1b_wOvlpRm'  : mergeRemovingOverlap('L2_muon_comb',       L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
+                                  'L2_step1c_wOvlpRm'  : mergeRemovingOverlap('L2_muon_combhyp',       L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
                                   'L2_step2_wOvlpRm'   : mergeRemovingOverlap('L2_mu_combOvlpRm_',  L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm'),
                                   'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', chainPartNameNoMultNoDS+'_wOvlpRm'),
                                   'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   chainPartNameNoMultNoDS+'_wOvlpRm'),
+                                  'EF_mu_roi': mergeRemovingOverlap('EF_SuperEFRoI_',   chainPartNameNoMultNoDS+'_wOvlpRm'),
                                   'EF_mu_step3': mergeRemovingOverlap('EF_muI_efid_',    chainPartNameNoMultNoDS+'_wOvlpRm'),
-                                  'EF_mu_step4': mergeRemovingOverlap('EF_trkIso_',       chainPartNameNoMultNoDS+'_wOvlpRm')}) 
+                                  'EF_mu_step4': mergeRemovingOverlap('EF_trkIso_',       chainPartNameNoMultNoDS+'_wOvlpRm'),
+                                  'EF_mu_hypo3': mergeRemovingOverlap('EF_trkIsohyp_',       chainPartNameNoMultNoDS+'_wOvlpRm')}) 
+
     if self.doOvlpRm and '10invm30' in self.chainPart['addInfo'] and 'pt2' in self.chainPart['addInfo'] and 'z10' in self.chainPart['addInfo']:
       self.TErenamingDict.update({'L2_step1a_wOvlpRm'  : mergeRemovingOverlap('L2_mu_SAOvlpRm_',    L2AlgName+muFastThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
                                   'L2_step1b_wOvlpRm'  : mergeRemovingOverlap('L2_muon_comb',       L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
+                                  'L2_step1c_wOvlpRm'  : mergeRemovingOverlap('L2_muon_combhyp',       L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
                                   'L2_step2_wOvlpRm'   : mergeRemovingOverlap('L2_mu_combOvlpRm_',  L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm'),
                                   'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', chainPartNameNoMultNoDS+'_wOvlpRm'),
                                   'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   chainPartNameNoMultNoDS+'_wOvlpRm'),
                                   'EF_mu_step3': mergeRemovingOverlap('EF_invm_',    chainPartNameNoMultNoDS+'_wOvlpRm')}) 
-
     if self.doOvlpRm and 'invm1' in self.chainPart['addInfo']:
       self.TErenamingDict.update({'L2_step1a_wOvlpRm'  : mergeRemovingOverlap('L2_mu_SAOvlpRm_',    L2AlgName+muFastThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
                                   'L2_step1b_wOvlpRm'  : mergeRemovingOverlap('L2_muon_comb',       L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
+                                  'L2_step1c_wOvlpRm'  : mergeRemovingOverlap('L2_muon_combhyp',       L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
                                   'L2_step2_wOvlpRm'   : mergeRemovingOverlap('L2_mu_combOvlpRm_',  L2AlgName+muCombThresh+'_'+self.L2InputTE+'_wOvlpRm'),
                                   'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', chainPartNameNoMultNoDS+'_wOvlpRm'),
                                   'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   chainPartNameNoMultNoDS+'_wOvlpRm'),
@@ -671,25 +663,33 @@ class L2EFChain_mu(L2EFChainDef):
                    
     #----Sequence list---
     self.L2sequenceList += [[self.L2InputTE,
-                             [theL2StandAloneAlg , theL2StandAloneHypo],
-                             'L2_mu_step1']] 
+                             [theL2StandAloneAlg],
+                             'L2_mu_step1']]
+    self.L2sequenceList += [['L2_mu_step1',
+                             [theL2StandAloneHypo],
+                             'L2_mu_hypo1']] 
 
-    EFinputTE = ''
 
     self.L2sequenceList += [[['L2_mu_step1'],
     			      trkfast+
-    			     [theL2CombinedAlg,
-    			      theL2CombinedHypo],
-    			     'L2_mu_step2']]
+    			     [theL2CombinedAlg],
+                             'L2_mu_step2']]
+    self.L2sequenceList += [['L2_mu_step2',
+                             [theL2CombinedHypo],
+    			     'L2_mu_hypo2']]
 			     
     #--- adding signatures ----
     self.L2signatureList += [ [['L2_mu_step1']*self.mult] ]
+    self.L2signatureList += [ [['L2_mu_hypo1']*self.mult] ]
     self.L2signatureList += [ [['L2_mu_step2']*self.mult] ]
+    self.L2signatureList += [ [['L2_mu_hypo2']*self.mult] ]
       
     #--- renaming TEs ---
     self.TErenamingDict = {
       'L2_mu_step1': mergeRemovingOverlap('L2_mu_SA_', L2AlgName+muFastThresh+'_'+self.L2InputTE),
+      'L2_mu_hypo1': mergeRemovingOverlap('L2_mu_SAhyp_', L2AlgName+muFastThresh+'_'+self.L2InputTE),
       'L2_mu_step2': mergeRemovingOverlap('L2_mucomb_',   self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'], '').replace(self.chainPart['specialStream'], '')+'_'+self.L2InputTE),
+      'L2_mu_hypo2': mergeRemovingOverlap('L2_mucombhyp_',   self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'], '').replace(self.chainPart['specialStream'], '')+'_'+self.L2InputTE),
       }    
 
                                       
@@ -728,16 +728,20 @@ class L2EFChain_mu(L2EFChainDef):
 
     #----Sequence list---
     self.L2sequenceList += [[self.L2InputTE,
-                             [theL2StandAloneAlg , theL2StandAloneHypo],
-                             'L2_mu_step1']] 
+                             [theL2StandAloneAlg],
+                             'L2_mu_step1']]
+    self.L2sequenceList += [['L2_mu_step1',
+                             [theL2StandAloneHypo],
+                             'L2_mu_hypo1']] 
 
-    EFinputTE = ''
 
     self.L2sequenceList += [[['L2_mu_step1'],
     			      trkfast+
-    			     [theL2CombinedAlg,
-    			      theL2CombinedHypo],
-    			     'L2_mu_step2']]
+    			     [theL2CombinedAlg],
+                             'L2_mu_step2']]
+    self.L2sequenceList += [['L2_mu_step2',
+    			      [theL2CombinedHypo],
+    			     'L2_mu_hypo2']]
 			     
     self.L2sequenceList += [[['L2_mu_step2']*self.mult,
                              [theL2JpsimumuAlgo,theL2JpsimumuHypo],
@@ -745,13 +749,17 @@ class L2EFChain_mu(L2EFChainDef):
 
     #--- adding signatures ----
     self.L2signatureList += [ [['L2_mu_step1']*self.mult] ]
+    self.L2signatureList += [ [['L2_mu_hypo1']*self.mult] ]
     self.L2signatureList += [ [['L2_mu_step2']*self.mult] ]
+    self.L2signatureList += [ [['L2_mu_hypo2']*self.mult] ]
     self.L2signatureList += [ [['L2_mu_step3']] ]
       
     #--- renaming TEs ---
     self.TErenamingDict = {
       'L2_mu_step1': mergeRemovingOverlap('L2_mu_SA_', L2AlgName+muFastThresh+'_'+self.L2InputTE),
+      'L2_mu_hypo1': mergeRemovingOverlap('L2_mu_SAhyp_', L2AlgName+muFastThresh+'_'+self.L2InputTE),
       'L2_mu_step2': mergeRemovingOverlap('L2_mucomb_',   self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'], '').replace(self.chainPart['specialStream'], '')+'_'+self.L2InputTE),
+      'L2_mu_hypo2': mergeRemovingOverlap('L2_mucombhyp_',   self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'], '').replace(self.chainPart['specialStream'], '')+'_'+self.L2InputTE),
       'L2_mu_step3': mergeRemovingOverlap('L2_JPsimumu_',   self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'], '')+'_'+self.L2InputTE),
       }    
 
@@ -763,7 +771,6 @@ class L2EFChain_mu(L2EFChainDef):
 
     L2AlgName = self.getL2AlgName()
     muFastThresh = self.getMuFastThresh()
-    EFExtrapolatorThresh = self.getEFExtrapolatorThresh()
     EFCombinerThresh = self.getEFCombinerThresh()
 		    
     ########### L2 algos  #################
@@ -819,14 +826,15 @@ class L2EFChain_mu(L2EFChainDef):
    
     theTrigEFIDInsideOut_Muon = TrigEFIDSequence("Muon","muon")          # ---> this is Run1 tracking - keep it here
 
-    from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFExtrapolatorHypoConfig
-    theTrigMuonEFExtrapolatorHypoConfig = TrigMuonEFExtrapolatorHypoConfig(EFRecoAlgName, EFExtrapolatorThresh)
 
     ########### Sequence List ##############
 
     self.L2sequenceList += [[self.L2InputTE,
-                             [theL2StandAloneAlg , theL2StandAloneHypo],
-                             'L2_mu_step1']] 
+                             [theL2StandAloneAlg],
+                             'L2_mu_step1']]
+    self.L2sequenceList += [['L2_mu_step1',
+                             [theL2StandAloneHypo],
+                             'L2_mu_hypo1']] 
 
     EFinputTE = ''
 
@@ -835,13 +843,19 @@ class L2EFChain_mu(L2EFChainDef):
                                [theTrigL2SiTrackFinder_MuonA, 
                                 theTrigL2SiTrackFinder_MuonB,
                                 theTrigL2SiTrackFinder_MuonC, 
-                                theL2CombinedAlg, theL2CombinedHypo],
+                                theL2CombinedAlg],
                                'L2_mu_step2']]
+      self.L2sequenceList += [[['L2_mu_step2'],
+                               [theL2CombinedHypo],
+                               'L2_mu_hypo2']]
     else:
       self.L2sequenceList += [[['L2_mu_step1'],
                                trkfast+
-                               [theL2CombinedAlg,theL2CombinedHypo],
-                                'L2_mu_step2']]
+                               [theL2CombinedAlg],
+                               'L2_mu_step2']]
+      self.L2sequenceList += [[['L2_mu_step2'],
+                               [theL2CombinedHypo],
+                                'L2_mu_hypo2']]
 
     EFinputTE = 'L2_mu_step2'
 
@@ -855,37 +869,35 @@ class L2EFChain_mu(L2EFChainDef):
                                trkprec,
                                'EF_mu_step1']]
 
-    #self.EFsequenceList += [[['EF_mu_step1'],
-    #	  		      [theTrigEFIDOutsideInTRTOnly_Muon.getSequence()],
-    #	  		       'EF_mu_step2']]
 
     self.EFsequenceList += [[['EF_mu_step1'],
-    	  		     [theEFAlg, theTrigMuonEFExtrapolatorHypoConfig],
-    	  		      'EF_mu_step3']]
-
-    self.EFsequenceList += [[['EF_mu_step3'],
+                             [theEFAlg],
+                             'EF_mu_step2']]
+    self.EFsequenceList += [[['EF_mu_step2'],
     	  		     [theTrigMuonEFCombinerHypoConfig],
-    	  		      'EF_mu_step4']]
+    	  		      'EF_mu_hypo1']]
 
     ########### Signatures ###########
       
     self.L2signatureList += [ [['L2_mu_step1']*self.mult] ]
+    self.L2signatureList += [ [['L2_mu_hypo1']*self.mult] ]
     self.L2signatureList += [ [['L2_mu_step2']*self.mult] ]
+    self.L2signatureList += [ [['L2_mu_hypo2']*self.mult] ]
       
     self.EFsignatureList += [ [['EF_mu_step1']*self.mult] ]
-    #self.EFsignatureList += [ [['EF_mu_step2']*self.mult] ]
-    self.EFsignatureList += [ [['EF_mu_step3']*self.mult] ]
-    self.EFsignatureList += [ [['EF_mu_step4']*self.mult] ]
+    self.EFsignatureList += [ [['EF_mu_step2']*self.mult] ]
+    self.EFsignatureList += [ [['EF_mu_hypo1']*self.mult] ]
 
     ########### TE renaming ##########
 
     self.TErenamingDict = {
       'L2_mu_step1': mergeRemovingOverlap('L2_mu_SA_',  L2AlgName+muFastThresh+'_'+self.L2InputTE),
+      'L2_mu_hypo1': mergeRemovingOverlap('L2_mu_SAhyp_',  L2AlgName+muFastThresh+'_'+self.L2InputTE),
       'L2_mu_step2': mergeRemovingOverlap('L2_mucomb_', self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'], '')+'_'+self.L2InputTE),
+      'L2_mu_hypo2': mergeRemovingOverlap('L2_mucombhyp_', self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'], '')+'_'+self.L2InputTE),
       'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOutMerged_', self.chainPartNameNoMult),
-      #'EF_mu_step2': mergeRemovingOverlap('EF_TRT_',   self.chainPartNameNoMult),
-      'EF_mu_step3': mergeRemovingOverlap('EF_SuperEF_SAonly_',   self.chainPartNameNoMult),
-      'EF_mu_step4': mergeRemovingOverlap('EF_Comb_',   self.chainPartNameNoMult),
+      'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   self.chainPartNameNoMult),
+      'EF_mu_hypo1': mergeRemovingOverlap('EF_SuperEFhyp_',   self.chainPartNameNoMult),
      }
     
   #################################################################################################
@@ -924,13 +936,16 @@ class L2EFChain_mu(L2EFChainDef):
 
     #----Sequence list---
     self.L2sequenceList += [[self.L2InputTE,
-                             [theL2StandAloneAlg , theL2StandAloneHypo],
-                             'L2_mu_step1']] 
+                             [theL2StandAloneAlg],
+                             'L2_mu_step1']]
+    self.L2sequenceList += [['L2_mu_step1',
+                             [theL2StandAloneHypo],
+                             'L2_mu_hypo1']] 
 
     EFinputTE = ''
 
     if (self.doOvlpRm):
-      self.L2sequenceList += [[['L2_mu_step1'], [self.theL2OvlpRmConfig_mufast ],'L2_mu_step1_wOvlpRm']]
+      self.L2sequenceList += [[['L2_mu_hypo1'], [self.theL2OvlpRmConfig_mufast ],'L2_mu_step1_wOvlpRm']]
       EFinputTE = 'L2_mu_step1_wOvlpRm'
     else:
       EFinputTE = 'L2_mu_step1'
@@ -940,28 +955,36 @@ class L2EFChain_mu(L2EFChainDef):
                               'EF_mu_step1']]
 
     self.EFsequenceList += [[['EF_mu_step1'],
-    	  		       [theEFAlg, theTrigMuonEFCombinerHypoConfig],
-    	  		        'EF_mu_step2']]
+    	  		       [theEFAlg],
+                             'EF_mu_step2']]
+    self.EFsequenceList += [[['EF_mu_step2'],
+                             [theTrigMuonEFCombinerHypoConfig],
+                             'EF_mu_hypo1']]
        
     #--- adding signatures ----
     self.L2signatureList += [ [['L2_mu_step1']*self.mult] ]
+    self.L2signatureList += [ [['L2_mu_hypo1']*self.mult] ]
     if (self.doOvlpRm):
       self.L2signatureList += [ [['L2_mu_step1_wOvlpRm']*self.mult] ]
       
     self.EFsignatureList += [ [['EF_mu_step1']*self.mult] ]
     self.EFsignatureList += [ [['EF_mu_step2']*self.mult] ]
+    self.EFsignatureList += [ [['EF_mu_hypo1']*self.mult] ]
 
     #--- renaming TEs ---
     self.TErenamingDict = {
       'L2_mu_step1': mergeRemovingOverlap('L2_mu_SA_', L2AlgName+muFastThresh+'_'+self.L2InputTE),
+      'L2_mu_hypo1': mergeRemovingOverlap('L2_mu_SAhyp_', L2AlgName+muFastThresh+'_'+self.L2InputTE),
       'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', self.chainPartNameNoMult+'_'+self.L2InputTE),
       'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   self.chainPartNameNoMult+'_'+self.L2InputTE),
+      'EF_mu_hypo1': mergeRemovingOverlap('EF_SuperEFhyp_',   self.chainPartNameNoMult+'_'+self.L2InputTE),
       }    
 
     if self.doOvlpRm:
       self.TErenamingDict.update({'L2_mu_step1_wOvlpRm'  : mergeRemovingOverlap('L2_mu_SAOvlpRm_',    L2AlgName+muFastThresh+'_'+self.L2InputTE+'_wOvlpRm' ),
                                   'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', self.chainPartNameNoMult+'_wOvlpRm'),
-                                  'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   self.chainPartNameNoMult+'_wOvlpRm')})                                
+                                  'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   self.chainPartNameNoMult+'_wOvlpRm'),
+                                  'EF_mu_hypo1': mergeRemovingOverlap('EF_SuperEFhyp_',   self.chainPartNameNoMult+'_wOvlpRm')})                                
   #################################################################################################
   #################################################################################################
 
@@ -972,7 +995,6 @@ class L2EFChain_mu(L2EFChainDef):
     EFExtrapolatorThresh = self.getEFExtrapolatorThresh()
 	
     ########### L2 algos  #################
-
     if "l2muonSA" in self.chainPart['L2SAAlg']:
       from TrigL2MuonSA.TrigL2MuonSAConfig import TrigL2MuonSAConfig
       theL2StandAloneAlg  = TrigL2MuonSAConfig(L2AlgName)
@@ -981,9 +1003,7 @@ class L2EFChain_mu(L2EFChainDef):
     else:
       log.error("Chain built with %s but so far only l2muonSA is supported." % (self.chainPart['L2SAAlg']))
       return False
-
     ########### EF algos  #################
-
     if 'SuperEF' in self.chainPart['EFAlg']:
       theTrigMuSuperEF = CfgGetter.getAlgorithm("TrigMuSuperEF_SAonly")
       theEFAlg = theTrigMuSuperEF 
@@ -991,54 +1011,50 @@ class L2EFChain_mu(L2EFChainDef):
     else:
       log.error("Chain built with %s but so far only SuperEF is supported." % (self.chainPart['EFAlg']))
       return False
-
     from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFExtrapolatorHypoConfig
     theTrigMuonEFExtrapolatorHypoConfig = TrigMuonEFExtrapolatorHypoConfig(EFRecoAlgName, EFExtrapolatorThresh)
-
     [trkfast, trkiso, trkprec] = TrigInDetSequence("Muon", "muon", "IDTrig", "2step").getSequence()
-
     if "wOvlpRm" in self.chainPart['overlapRemoval']:
       from TrigMuonHypo.TrigEFMuonOverlapRemoverConfig import TrigEFMuonOverlapRemoverConfig
       theEFOvlpRmConfig = TrigEFMuonOverlapRemoverConfig('MuExtr','loose')
-
     if self.chainPart['isoInfo'] == "iloosems":
       theTrigMuonEFTrackIsolationHypoConfig = TrigMuonEFTrackIsolationHypoConfig("Muon","MSEFOnlyLooseWide")
-
     ########### Sequence List ##############
-
     self.L2sequenceList += [[self.L2InputTE,
-                             [theL2StandAloneAlg, theL2StandAloneHypo],
-                             'L2_mu_step1']] 
-
+                             [theL2StandAloneAlg],
+                             'L2_mu_step1']]
+    self.L2sequenceList += [['L2_mu_step1',
+                             [theL2StandAloneHypo],
+                             'L2_mu_hypo1']]
     EFinputTE = ''
-
     if (self.doOvlpRm):
       self.L2sequenceList += [[['L2_mu_step1'], [self.theL2OvlpRmConfig_mufast ],'L2_mu_step1_wOvlpRm']]
       EFinputTE = 'L2_mu_step1_wOvlpRm'
     else:
       EFinputTE = 'L2_mu_step1'
-
     self.EFsequenceList += [[[EFinputTE],
-    	  		       [theEFAlg, theTrigMuonEFExtrapolatorHypoConfig],
-    	  		      'EF_mu_step1']]
-
+    	  		       [theEFAlg],
+                             'EF_mu_step1']]
+    self.EFsequenceList += [[['EF_mu_step1'],
+                             [theTrigMuonEFExtrapolatorHypoConfig],
+    	  		      'EF_mu_hypo1']]
     if (self.doOvlpRm):
-      self.EFsequenceList += [[['EF_mu_step1'], [theEFOvlpRmConfig ],'EF_mu_step1_wOvlpRm']]
+      self.EFsequenceList += [[['EF_mu_hypo1'], [theEFOvlpRmConfig ],'EF_mu_step1_wOvlpRm']]
     if self.chainPart['isoInfo'] == "iloosems":
         self.EFsequenceList += [[['EF_mu_step1'],
                                  trkfast+trkiso+trkprec,
                                  'EF_mu_step2']]
-
         self.EFsequenceList += [[['EF_mu_step2'],
                                  [TrigMuonEFMSTrackIsolationConfig("TrigMuonEFMSTrackIsolation"),theTrigMuonEFTrackIsolationHypoConfig],
                 	         'EF_mu_step3']]
-
     ########### Signatures ###########
       
     self.L2signatureList += [ [['L2_mu_step1']*self.mult] ]
+    self.L2signatureList += [ [['L2_mu_hypo1']*self.mult] ]
     if (self.doOvlpRm):
       self.L2signatureList += [ [['L2_mu_step1_wOvlpRm']*self.mult] ]
     self.EFsignatureList += [ [['EF_mu_step1']*self.mult] ]
+    self.EFsignatureList += [ [['EF_mu_hypo1']*self.mult] ]
     if (self.doOvlpRm):
       self.EFsignatureList += [ [['EF_mu_step1_wOvlpRm']*self.mult] ]
     if self.chainPart['isoInfo'] == "iloosems":
@@ -1049,7 +1065,9 @@ class L2EFChain_mu(L2EFChainDef):
 
     self.TErenamingDict = {
       'L2_mu_step1': mergeRemovingOverlap('L2_mu_SA_', L2AlgName+muFastThresh+'_'+self.L2InputTE),
+      'L2_mu_hypo1': mergeRemovingOverlap('L2_mu_SAhyp_', L2AlgName+muFastThresh+'_'+self.L2InputTE),
       'EF_mu_step1': mergeRemovingOverlap('EF_SuperEF_',   self.chainPartNameNoMult+'_'+self.L2InputTE),
+      'EF_mu_hypo1': mergeRemovingOverlap('EF_SuperEFhyp_',   self.chainPartNameNoMult+'_'+self.L2InputTE),
       }
     if (self.chainPart['isoInfo']):
       self.TErenamingDict.update({'EF_mu_step2': mergeRemovingOverlap('EF_EFIDInsideOut_', self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'],'')+'_'+self.L2InputTE),
@@ -1059,6 +1077,7 @@ class L2EFChain_mu(L2EFChainDef):
     if self.doOvlpRm:
       self.TErenamingDict.update({'L2_mu_step1_wOvlpRm'  : mergeRemovingOverlap('L2_mu_SAOvlpRm_',    L2AlgName+muFastThresh+'_'+self.L2InputTE+'_wOvlpRm'+'_'+self.L2InputTE ),
                                   'EF_mu_step1': mergeRemovingOverlap('EF_SuperEF_', self.chainPartNameNoMult+'_wOvlpRm'+'_'+self.L2InputTE),
+                                  'EF_mu_hypo1': mergeRemovingOverlap('EF_SuperEFhyp_', self.chainPartNameNoMult+'_wOvlpRm'+'_'+self.L2InputTE),
 				  'EF_mu_step1_wOvlpRm': mergeRemovingOverlap('EF_SuperEFOvlpRm_', self.chainPartNameNoMult+'_wEFOvlpRm'+'_'+self.L2InputTE)})
                                           
   #################################################################################################
@@ -1153,13 +1172,19 @@ class L2EFChain_mu(L2EFChainDef):
     if 'msonly' in self.chainPart['reccalibInfo']:
 
       self.EFsequenceList += [['',
-                               [PESA__DummyUnseededAllTEAlgo("EFDummyAlgo")]+
-                               [CfgGetter.getAlgorithm("TrigMuSuperEF_FSSA"),
-                                theTrigMuonEFSA_FS_Hypo],
+                               [PESA__DummyUnseededAllTEAlgo("EFDummyAlgo")],
+                              'EF_dummy']]
+      self.EFsequenceList += [['EF_dummy',
+                               [CfgGetter.getAlgorithm("TrigMuSuperEF_FSSA")],
                                'EF_SA_FS']]
+      self.EFsequenceList += [['EF_SA_FS',
+                                [theTrigMuonEFSA_FS_Hypo],
+                               'EF_SA_FS2']]
     else:
       self.EFsequenceList += [['',
-                               [PESA__DummyUnseededAllTEAlgo("EFDummyAlgo")]+
+                               [PESA__DummyUnseededAllTEAlgo("EFDummyAlgo")],
+                               'EF_dummy']]
+      self.EFsequenceList += [['EF_dummy',
                                [CfgGetter.getAlgorithm("TrigMuSuperEF_FSSA")],
                                'EF_SA_FS']]
  
@@ -1171,38 +1196,36 @@ class L2EFChain_mu(L2EFChainDef):
                                [CfgGetter.getAlgorithm("TrigMuonEFFSRoiMaker")],
                                'EF_SAR_FS']]
       self.EFsequenceList += [['EF_SAR_FS',
-                               trkfast+trkprec,                 #theTrigEFIDInsideOut_Muon,     #a fallback - it should be replaced by the previous line if it works
+                               trkfast+trkprec,         
                                'EF_FStracksMuon']]
       self.EFsequenceList += [['EF_FStracksMuon',
                                [CfgGetter.getAlgorithm("TrigMuSuperEF_TMEFCombinerOnly")],
                                'EF_CB_FS_single']]
       self.EFsequenceList += [['EF_CB_FS_single',
-                               [TrigMuonEFRoiAggregatorConfig('TrigMuonEFFSRoiAggregator'),
-                                theTrigMuonEFCombinerMultiHypoConfig],
+                               [TrigMuonEFRoiAggregatorConfig('TrigMuonEFFSRoiAggregator')],
+                               'EF_CB_ROI']]
+      self.EFsequenceList += [['EF_CB_ROI',
+                                [theTrigMuonEFCombinerMultiHypoConfig],
                                'EF_CB_FS']]
 
     ########### Signatures ###########
       
-    #self.EFsignatureList += [ [['EF_SA_FS']*self.mult] ]
-    #self.EFsignatureList += [ [['EF_SAR_FS']*self.mult] ]
-    #self.EFsignatureList += [ [['EF_FStracksMuon']*self.mult] ]
-    #self.EFsignatureList += [ [['EF_CB_FS_single']*self.mult] ]
-    #self.EFsignatureList += [ [['EF_CB_FS']*self.mult] ]
-    if 'msonly' in self.chainPart['reccalibInfo']:
-      self.EFsignatureList += [ [['EF_SA_FS']] ]
-    else:
-      self.EFsignatureList += [ [['EF_SA_FS']] ]
-      self.EFsignatureList += [ [['EF_SA_FS2']] ]
+    self.EFsignatureList += [ [['EF_dummy']] ]
+    self.EFsignatureList += [ [['EF_SA_FS']] ]
+    self.EFsignatureList += [ [['EF_SA_FS2']] ]
+    if 'msonly' not in self.chainPart['reccalibInfo']:
       self.EFsignatureList += [ [['EF_SAR_FS']] ]
       self.EFsignatureList += [ [['EF_FStracksMuon']] ]
       self.EFsignatureList += [ [['EF_CB_FS_single']] ]
+      self.EFsignatureList += [ [['EF_CB_ROI']] ]
       self.EFsignatureList += [ [['EF_CB_FS','EF_SA_FS2']] ]
 
     ########### TE renaming ##########
 
     if 'msonly' in self.chainPart['reccalibInfo']:
       self.TErenamingDict = {
-        'EF_SA_FS': mergeRemovingOverlap('EF_SA_FS_msonly_','SAFSHypo'+hypocut),  
+        'EF_SA_FS': mergeRemovingOverlap('EF_SA_FS_msonly_','SAFSHypo'),  
+        'EF_SA_FS2': mergeRemovingOverlap('EF_SA_FS2_msonly_','SAFSHypo'+hypocut),  
          }
     else:
       self.TErenamingDict = {
@@ -1211,6 +1234,7 @@ class L2EFChain_mu(L2EFChainDef):
         'EF_SAR_FS': mergeRemovingOverlap('EF_SAR_FS_','SAFSHypo'),
         'EF_FStracksMuon': mergeRemovingOverlap('EF_FStracksMuon_', 'SAFSHypo'),
         'EF_CB_FS_single': mergeRemovingOverlap('EF_CB_FS_single_','SAFSHypo'), 
+        'EF_CB_ROI': mergeRemovingOverlap('EF_CB_ROI_','SAFSRoi'), 
         'EF_CB_FS': mergeRemovingOverlap('EF_CB_FS_', 'SAFSHypo'+hypocut+'_'+hypocutEF),
 
       }
@@ -1252,8 +1276,7 @@ class L2EFChain_mu(L2EFChainDef):
 
     from TrigMuonEF.TrigMuonEFConfig import TrigMuonEFFSRoiMaker
     FSroimaker = TrigMuonEFFSRoiMaker("TrigMuonEFFSRoiMakerFTK",CreateFSRoI=True,RoILabel="forID")
-    from TrigMuonEF.TrigMuonEFConfig import InDetTrkRoiMaker_Muon
-    from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFCombinerMultiHypoConfig
+    from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFCombinerMultiHypoConfig, TrigMuonEFCombinerDiMuonMassHypoConfig
 
     if "JpsimumuFS" in self.chainPart['FSinfo']:
       theTrigMuonEFCombinerMultiHypoConfig = TrigMuonEFCombinerDiMuonMassHypoConfig('Jpsi', "OS")
@@ -1291,9 +1314,11 @@ class L2EFChain_mu(L2EFChainDef):
                              [CfgGetter.getAlgorithm("InDetTrkRoiMaker_Muon")],#[InDetTrkRoiMaker_Muon("EFInDetTrkRoiMaker")],
                              'EF_trk_ROIFTK']]
     self.EFsequenceList += [['EF_trk_ROIFTK',
-                            [CfgGetter.getAlgorithm("TrigMuSuperEF_FSSA"),
-                             theTrigMuonEFSA_FS_Hypo],
+                            [CfgGetter.getAlgorithm("TrigMuSuperEF_SAonly")],
                              'EF_SA_FSFTK']]
+    self.EFsequenceList += [['EF_SA_FSFTK',
+                             [theTrigMuonEFSA_FS_Hypo],
+                             'EF_SA_FSFTK2']]
     self.EFsequenceList += [['EF_SA_FSFTK',
                             [CfgGetter.getAlgorithm("TrigMuonEFFSRoiMaker")],
                              'EF_SAR_FSFTK']]
@@ -1304,9 +1329,11 @@ class L2EFChain_mu(L2EFChainDef):
                              [CfgGetter.getAlgorithm("TrigMuSuperEF_TMEFCombinerOnly")],
                              'EF_CB_FS_singleFTK']]
     self.EFsequenceList += [['EF_CB_FS_singleFTK',
-                            [TrigMuonEFRoiAggregatorConfig('TrigMuonEFFSRoiAggregator'),
-                             theTrigMuonEFCombinerMultiHypoConfig],
+                            [TrigMuonEFRoiAggregatorConfig('TrigMuonEFFSRoiAggregator')],
                              'EF_CB_FSFTK']]
+    self.EFsequenceList += [['EF_CB_FSFTK',
+                             [theTrigMuonEFCombinerMultiHypoConfig],
+                             'EF_CB_FSFTK2']]
 
     ########### Signatures ###########
       
@@ -1315,10 +1342,12 @@ class L2EFChain_mu(L2EFChainDef):
     self.EFsignatureList += [ [['EF_trk_trkFTK']] ]
     self.EFsignatureList += [ [['EF_trk_ROIFTK']] ]
     self.EFsignatureList += [ [['EF_SA_FSFTK']] ]
+    self.EFsignatureList += [ [['EF_SA_FSFTK2']] ]
     self.EFsignatureList += [ [['EF_SAR_FSFTK']] ]
     self.EFsignatureList += [ [['EF_FStracksMuonFTK']] ]
     self.EFsignatureList += [ [['EF_CB_FS_singleFTK']] ]
     self.EFsignatureList += [ [['EF_CB_FSFTK']] ]
+    self.EFsignatureList += [ [['EF_CB_FSFTK2']] ]
 
     ########### TE renaming ##########
 
@@ -1326,10 +1355,12 @@ class L2EFChain_mu(L2EFChainDef):
       'EF_trk_ROIFTK': mergeRemovingOverlap('EF_trk_trkFTK_','SAFSHypo'+hypocut),
       'EF_trk_ROIbFTK': mergeRemovingOverlap('EF_trk_ROIFTK_','SAFSHypo'+hypocut),
       'EF_SA_FSFTK': mergeRemovingOverlap('EF_SA_FSFTK_','SAFSHypo'+hypocut),
+      'EF_SA_FSFTK2': mergeRemovingOverlap('EF_SA_FSFTK2_','SAFSHypo'+hypocut),
       'EF_SAR_FSFTK': mergeRemovingOverlap('EF_SAR_FSFTK_','SAFSHypo'+hypocut),
       'EF_FStracksMuonFTK': mergeRemovingOverlap('EF_FStracksMuonFTK_', 'SAFSHypo'+hypocut),
       'EF_CB_FS_singleFTK': mergeRemovingOverlap('EF_CB_FSFTK_single_','SAFSHypo'+hypocut), 
       'EF_CB_FSFTK': mergeRemovingOverlap('EF_CB_FSFTK_', 'SAFSHypo'+hypocut+'_'+hypocutEF),
+      'EF_CB_FSFTK2': mergeRemovingOverlap('EF_CB_FSFTK2_', 'SAFSHypo'+hypocut+'_'+hypocutEF),
 
       }
 
@@ -1395,43 +1426,14 @@ class L2EFChain_mu(L2EFChainDef):
                                 trkfast+trkprec,
                                'EF_CT_tracks']]
       self.EFsequenceList += [['EF_CT_tracks',
-                               [theCTAlg,
-                               theTrigMuonCT_FS_Hypo],
+                               [theCTAlg],
+                               'EF_CT_alg']]
+      self.EFsequenceList += [['EF_CT_alg',
+                               [theTrigMuonCT_FS_Hypo],
                                'EF_CT_hypo']]
     
     else:
-      from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFExtrapolatorHypoConfig
-      theTrigMuSuperEF = CfgGetter.getAlgorithm("TrigMuSuperEF")
-      theTrigMuonEFHypo = TrigMuonEFExtrapolatorHypoConfig('Muon', self.allMuThrs[0])
-      
-      from TrigMuonEF.TrigMuonEFConfig import TrigMuonEFRoiAggregatorConfig
-      from TrigMuonEF.TrigMuonEFConfig import TrigMuonEFFSRoiMakerCaloTagConfig
-      theEFRoIMaker = TrigMuonEFFSRoiMakerCaloTagConfig()
-      theEFRoiAggregator = TrigMuonEFRoiAggregatorConfig("TrigMuonCaloTagRoiAggregator", CopyTracks=True)
-    
-      inputTEfromL2 = "placeHolderTE"
-
-      self.EFsequenceList += [[inputTEfromL2,
-                               [theTrigMuSuperEF,
-                               theTrigMuonEFHypo],
-                               'EF_CT_seed']]
-      self.EFsequenceList += [['EF_CT_seed',
-                              [theEFRoIMaker],
-                               'EF_CT_roi']]
-      self.EFsequenceList += [['EF_CT_roi',
-                              [TrigCaloCellMaker_super(),
-                              TrigCaloClusterMaker_topo()],
-                               'EF_CT_calo']]
-      self.EFsequenceList += [['EF_CT_calo',
-                                trkfast+trkprec,
-                               'EF_CT_tracks']]
-      self.EFsequenceList += [['EF_CT_tracks',
-                               [theCTAlg],
-                               'EF_CT_fex']]
-      self.EFsequenceList += [['EF_CT_fex',
-                               [theEFRoiAggregator,
-                               theTrigMuonCT_FS_Hypo],
-                               'EF_CT_hypo']]
+        log.error("full scan calo tagging not supported")
 
     
     ########### Signatures ###########
@@ -1440,10 +1442,7 @@ class L2EFChain_mu(L2EFChainDef):
     self.EFsignatureList += [ [['EF_CT_roi']] ]
     self.EFsignatureList += [ [['EF_CT_calo']] ]
     self.EFsignatureList += [ [['EF_CT_tracks']] ]
-
-    if "0eta01" not in self.chainPart['etaRange'] and "0eta500" not in self.chainPart['etaRange']:
-      self.EFsignatureList += [ [['EF_CT_fex']] ]
-    
+    self.EFsignatureList += [ [['EF_CT_alg']] ]    
     self.EFsignatureList += [ [['EF_CT_hypo']] ]
 
     ########### TE renaming ##########
@@ -1453,8 +1452,8 @@ class L2EFChain_mu(L2EFChainDef):
       'EF_CT_roi': mergeRemovingOverlap('EF_CT_roi_',seed+"_"+hypocut),
       'EF_CT_calo': mergeRemovingOverlap('EF_CT_calo_', seed+"_"+hypocut),
       'EF_CT_tracks': mergeRemovingOverlap('EF_CT_tracks_',seed+"_"+hypocut),
-      'EF_CT_fex': mergeRemovingOverlap('EF_CT_fex_', seed+"_"+hypocut),
-      'EF_CT_hypo': mergeRemovingOverlap('EF_CT_hypo_',seed+"_"+ hypocut+'_CTHypo_'+hypocutEF),
+      'EF_CT_alg': mergeRemovingOverlap('EF_CT_alg_', seed+"_"+hypocut),
+      'EF_CT_hypo': mergeRemovingOverlap('EF_CT_hyp_',seed+"_"+ hypocut+'_CTHypo_'+hypocutEF),
       }
   #################################################################################################
   #################################################################################################
@@ -1811,23 +1810,32 @@ class L2EFChain_mu(L2EFChainDef):
                    
     #----Sequence list---
     self.L2sequenceList += [[self.L2InputTE,
-                             [theL2StandAloneAlg , theL2StandAloneHypo],
-                             'L2_mu_step1']] 
+                             [theL2StandAloneAlg],
+                             'L2_mu_step1']]
+    self.L2sequenceList += [['L2_mu_step1',
+                             [theL2StandAloneHypo],
+                             'L2_mu_hypo1']] 
 
     self.L2sequenceList += [[['L2_mu_step1'],
                              trkfast+
-                             [theL2CombinedAlg,
-                              theL2CombinedHypo],
+                             [theL2CombinedAlg],
                              'L2_mu_step2']]
+    self.L2sequenceList += [[['L2_mu_step2'],
+                              [theL2CombinedHypo],
+                             'L2_mu_hypo2']]
 
     #--- adding signatures ----
     self.L2signatureList += [ [['L2_mu_step1']*self.mult] ]
+    self.L2signatureList += [ [['L2_mu_hypo1']*self.mult] ]
     self.L2signatureList += [ [['L2_mu_step2']*self.mult] ]
+    self.L2signatureList += [ [['L2_mu_hypo2']*self.mult] ]
       
     #--- renaming TEs ---
     self.TErenamingDict = {
-      'L2_mu_step1': mergeRemovingOverlap('L2_mu_SA_', L2AlgName+"_"+muFastThresh+'_'+self.L2InputTE),
-      'L2_mu_step2': mergeRemovingOverlap('L2_mucomb_',   self.chainPartNameNoMult.replace('_'+self.chainPart['isoInfo'], '').replace(self.chainPart['specialStream'], '')+'_'+self.L2InputTE),
+      'L2_mu_step1': mergeRemovingOverlap('L2_mu_SA_', L2AlgName+muFastThresh+"_"+'_'+self.L2InputTE),
+      'L2_mu_hypo1': mergeRemovingOverlap('L2_mu_SAhyp_', L2AlgName+"_"+muFastThresh+'_'+self.L2InputTE),
+      'L2_mu_step2': mergeRemovingOverlap('L2_mucomb_',   self.chainPartNameNoMult.replace(self.chainPart['specialStream'], '')+'_'+self.L2InputTE),
+      'L2_mu_hypo2': mergeRemovingOverlap('L2_mucombhyp_',   self.chainPartNameNoMult.replace(self.chainPart['specialStream'], '')+'_'+self.L2InputTE),
       }    
 
 
@@ -1853,8 +1861,11 @@ class L2EFChain_mu(L2EFChainDef):
       theTrigMuonEFExtrapolatorHypoConfig = TrigMuonEFExtrapolatorHypoConfig(EFRecoAlgName, EFExtrapolatorThresh)
       ########### Sequence List ##############
       self.EFsequenceList += [[[self.L2InputTE],
-    	  		       [theEFAlg, theTrigMuonEFExtrapolatorHypoConfig],
+    	  		       [theEFAlg],
                                'EF_mu_step1']]
+      self.EFsequenceList += [[['EF_mu_step1'],
+                               [theTrigMuonEFExtrapolatorHypoConfig],
+                               'EF_mu_hypo1']]
     else:
       EFCombinerThresh = self.getEFCombinerThresh()
       
@@ -1868,31 +1879,36 @@ class L2EFChain_mu(L2EFChainDef):
       
       ########### Sequence List ##############
       self.EFsequenceList += [[[self.L2InputTE],
-                               ## old ## theTrigEFIDDataPrep_Muon+[theTrigFastTrackFinder_Muon,theTrigEFIDInsideOutMerged_Muon.getSequence()],
-                               #theTrigEFIDDataPrep_Muon+[theEFIDTracking,theTrigEFIDInsideOutMerged_Muon.getSequence()],
                                theEFIDTracking.getSequence(),
                                'EF_mu_step1']]
       
       self.EFsequenceList += [[['EF_mu_step1'],
-    	  		       [theEFAlg, theTrigMuonEFCombinerHypoConfig],
+    	  		       [theEFAlg],
                                'EF_mu_step2']]
+      self.EFsequenceList += [[['EF_mu_step2'],
+                               [theTrigMuonEFCombinerHypoConfig],
+                               'EF_mu_hypo1']]
 
 
 
     ########### Signatures ###########
     self.EFsignatureList += [ [['EF_mu_step1']*self.mult] ]
+    self.EFsignatureList += [ [['EF_mu_hypo1']*self.mult] ]
     if not (self.chainPart['reccalibInfo'] == "msonly"):
       self.EFsignatureList += [ [['EF_mu_step2']*self.mult] ]
+      self.EFsignatureList += [ [['EF_mu_hypo1']*self.mult] ]
 
     ########### TE renaming ##########
     if (self.chainPart['reccalibInfo'] == "msonly"):
       self.TErenamingDict = {
         'EF_mu_step1': mergeRemovingOverlap('EF_SuperEF_Extrapolator_', self.chainPartNameNoMult),
+        'EF_mu_hypo1': mergeRemovingOverlap('EF_SuperEF_Extrapolatorhyp_', self.chainPartNameNoMult),
         }    
     else:
       self.TErenamingDict = {
         'EF_mu_step1': mergeRemovingOverlap('EF_CosmicsN_', self.chainPartNameNoMult),
         'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   self.chainPartNameNoMult),
+        'EF_mu_hypo1': mergeRemovingOverlap('EF_SuperEFhyp_',   self.chainPartNameNoMult),
         }    
     
   ################################################################################################# 
@@ -2036,8 +2052,11 @@ class L2EFChain_mu(L2EFChainDef):
     use_muFast = 0
     if use_muFast == 1:
       self.L2sequenceList += [[self.L2InputTE,
-                               [theL2StandAloneAlg , theL2StandAloneHypo],
-                               'L2_mu_step1']] 
+                               [theL2StandAloneAlg],
+                               'L2_mu_step1']]
+      self.L2sequenceList += [['L2_mu_step1',
+                               [theL2StandAloneHypo],
+                               'L2_mu_hypo1']] 
       self.L2sequenceList += [[['L2_mu_step1'],
                                [self.theL2OvlpRmConfig_mufast ],
                                'L2_mu_step2']]
@@ -2061,8 +2080,11 @@ class L2EFChain_mu(L2EFChainDef):
                              trkprec,
                              'EF_mu_step1']]
     self.EFsequenceList += [[['EF_mu_step1'],
-                             [theEFAlg, theTrigMuonEFCombinerHypoConfig],
+                             [theEFAlg],
                              'EF_mu_step2']]
+    self.EFsequenceList += [[['EF_mu_step1']
+                             [theTrigMuonEFCombinerHypoConfig],
+                             'EF_mu_hypo1']]
 
     self.EFsequenceList += [['EF_mu_step2',
                              [theTrigMuonIDTrackMultiHypoConfig_Muon],
@@ -2071,6 +2093,7 @@ class L2EFChain_mu(L2EFChainDef):
     #--- adding signatures ----    
     if use_muFast == 1:
       self.L2signatureList += [ [['L2_mu_step1']*self.mult] ]
+      self.L2signatureList += [ [['L2_mu_hypo1']*self.mult] ]
       self.L2signatureList += [ [['L2_mu_step2']*self.mult] ]
       self.L2signatureList += [ [['L2_mu_step3']*self.mult] ]
       self.L2signatureList += [ [['L2_mu_step4']] ]
@@ -2081,17 +2104,20 @@ class L2EFChain_mu(L2EFChainDef):
 
     self.EFsignatureList += [ [['EF_mu_step1']*self.mult] ]
     self.EFsignatureList += [ [['EF_mu_step2']*self.mult] ]
+    self.EFsignatureList += [ [['EF_mu_hypo1']*self.mult] ]
     self.EFsignatureList += [ [['EF_mu_step3']] ]
 
     #--- renaming TEs ---
     if use_muFast == 1:
       self.TErenamingDict = {
         'L2_mu_step1': mergeRemovingOverlap('L2_muFast_', idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
+        'L2_mu_hypo1': mergeRemovingOverlap('L2_muFasthyp_', idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
         'L2_mu_step2': mergeRemovingOverlap('L2_muFastOvRm_', idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
         'L2_mu_step3': mergeRemovingOverlap('L2_idtrking_', idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
         'L2_mu_step4': mergeRemovingOverlap('L2_idtrkmulti_', idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
         'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
         'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
+        'EF_mu_hypo1': mergeRemovingOverlap('EF_SuperEFhyp_',   idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
         'EF_mu_step3': mergeRemovingOverlap('EF_mutrkmulti_', idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
         }
     else:
@@ -2100,6 +2126,7 @@ class L2EFChain_mu(L2EFChainDef):
         'L2_mu_step2': mergeRemovingOverlap('L2_idtrkmulti_', idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
         'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
         'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
+        'EF_mu_hypo1': mergeRemovingOverlap('EF_SuperEFhyp_',   idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
         'EF_mu_step3': mergeRemovingOverlap('EF_mutrkmulti_', idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
         }
       
@@ -2133,10 +2160,13 @@ class L2EFChain_mu(L2EFChainDef):
     theTrigMuonIDTrackMultiHypoConfig_Muon = TrigMuonIDTrackMultiHypoConfig( idmulti, "Muon" )
     
     self.L2sequenceList += [[self.L2InputTE,
-                             [theL2StandAloneAlg , theL2StandAloneHypo],
-                             'L2_mu_step1']] 
-    
+                             [theL2StandAloneAlg],
+                             'L2_mu_step1']]
     self.L2sequenceList += [['L2_mu_step1',
+                             [theL2StandAloneHypo],
+                             'L2_mu_hypo1']] 
+    
+    self.L2sequenceList += [['L2_mu_hypo1',
                              trkfast,
                              'L2_mu_step2']] 
     
@@ -2151,32 +2181,35 @@ class L2EFChain_mu(L2EFChainDef):
                              'EF_mu_step1']]
     
     self.EFsequenceList += [[['EF_mu_step1'],
-                             [theTrigMuSuperEF, theTrigMuonEFCombinerHypoConfig],
+                             [theTrigMuSuperEF],
                              'EF_mu_step2']]
-    
+    self.EFsequenceList += [[['EF_mu_step2'],
+                             [theTrigMuonEFCombinerHypoConfig],
+                             'EF_mu_hypo1']]
+  
     
     self.L2signatureList += [ [['L2_mu_step1']*self.mult] ]
+    self.L2signatureList += [ [['L2_mu_hypo1']*self.mult] ]
     self.L2signatureList += [ [['L2_mu_step2']*self.mult] ]
     self.L2signatureList += [ [['L2_mu_step3']          ] ]
     self.EFsignatureList += [ [['EF_mu_step1']*self.mult] ]
     self.EFsignatureList += [ [['EF_mu_step2']*self.mult] ]
+    self.EFsignatureList += [ [['EF_mu_hypo1']*self.mult] ]
     
     self.TErenamingDict = {
       'L2_mu_step1': mergeRemovingOverlap('L2_mu_SA_',  L2AlgName+muFastThresh+'_'+self.L2InputTE),
+      'L2_mu_hypo1': mergeRemovingOverlap('L2_mu_SAhyp_',  L2AlgName+muFastThresh+'_'+self.L2InputTE),
       'L2_mu_step2': mergeRemovingOverlap('L2_idtrking_', L2AlgName+muFastThresh+'_'+self.L2InputTE),
       'L2_mu_step3': mergeRemovingOverlap('L2_idtrkmulti_', idmulti+'_'+L2AlgName+muFastThresh+'_'+self.L2InputTE),
-      ## Following 3 lines were replaced by the ones below to cope with the problems described in ATR-14406:
-      #--> replaced 'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
-      #--> replaced 'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
-      #--> replaced 'EF_mu_step3': mergeRemovingOverlap('EF_mutrkmulti_', idmulti+'_'+self.chainPartNameNoMult+'_'+self.L2InputTE),
       'EF_mu_step1': mergeRemovingOverlap('EF_EFIDInsideOut_', idmulti+'_'+self.chainPartNameNoMult.replace(self.chainPart['specialStream'], '')+'_'+self.L2InputTE).replace('__', '_'),
       'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_',   idmulti+'_'+self.chainPartNameNoMult.replace(self.chainPart['specialStream'], '')+'_'+self.L2InputTE).replace('__', '_'),
+      'EF_mu_hypo1': mergeRemovingOverlap('EF_SuperEFhyp_',   idmulti+'_'+self.chainPartNameNoMult.replace(self.chainPart['specialStream'], '')+'_'+self.L2InputTE).replace('__', '_'),
       }
 
     # OI this makes no sense , as we already cut on good tracks at L2, there is no rejection, skip it (at least in 2017)
     from TriggerJobOpts.TriggerFlags import TriggerFlags
     if TriggerFlags.run2Config=='2016':
-      self.EFsequenceList += [[['EF_mu_step2'],
+      self.EFsequenceList += [[['EF_mu_hypo1'],
                               [theTrigMuonIDTrackMultiHypoConfig_Muon],
                               'EF_mu_step3']]
       self.EFsignatureList += [ [['EF_mu_step3']          ] ]