diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py
index 015d03c861f04d98cfbdc376e5eee867ef1551cf..6e545440dd3f09d68aff988528a65e79c955faa6 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py
@@ -31,9 +31,8 @@ class ConditionsToolSetterFastReduction(object):
         'hecfrac' : 'HECFrac',
     }
 
-    def __init__(self, name):
+    def __init__(self):
 
-        self.name = name
         # for simple, use TrigJetConditionConfig_etaet. Needs to be
         # completed because simple can conain any single jet condition
         self.tool_factories = {
@@ -121,7 +120,12 @@ class ConditionsToolSetterFastReduction(object):
 
             # create capacitychecked condition from elemental condition
             condition_tool =self._get_tool_instance('capacitychecked')
-            condition_tool.chainLegLabel = cpi
+
+            if cpi:
+                condition_tool.chainLegLabel = cpi
+            else:
+                condition_tool.chainLegLabel = ''
+            
             condition_tool.conditionMakers = condition_tools
             condition_tool.multiplicity = mult
             # add capacitychecked condition to list
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterHT.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterHT.py
index bc866daca9b8a002ccf706229377d0cc9007bafe..c2727f25f3f6eb1065cd5a5683d2d2e18e069edf 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterHT.py
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterHT.py
@@ -16,9 +16,8 @@ class ConditionsToolSetterHT(object):
 
     """Visitor to set instantiated AlgTools to a jet hypo tree"""
     
-    def __init__(self, name):
+    def __init__(self):
 
-        self.name = name
         # for simple, use TrigJetConditionConfig_etaet. Needs to be
         # completed because simple can conain any single jet condition
         self.tool_factories = {
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py
index e5be52b755bf1dd20bce953e4d71c5f63d19bad0..a42d9be7150845c39067d6c7b82f6331876e38cf 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py
@@ -20,9 +20,10 @@ from TrigHLTJetHypo.NodeSplitterVisitor import NodeSplitterVisitor
 from AthenaCommon.Logging import logging
 log = logging.getLogger( 'TrigJetHypoToolConfig' )
 
-def  trigJetHypoToolHelperFromDict_(chain_label,
-                                    chain_name,
-                                    toolSetter=None):
+def  trigJetHypoToolHelperFromDict_(
+        chain_label, # simple([(260et,320eta490, leg000)])
+        chain_name, # HLT_j260_320eta490_L1J75_31ETA49
+        toolSetter=None):
 
     parser = ChainLabelParser(chain_label, debug=False)
 
@@ -92,22 +93,22 @@ def  trigJetHypoToolHelperFromDict(chain_dict):
 
     toolSetter = None
     if 'agg' in chain_name:
-        toolSetter=ConditionsToolSetterHT(chain_name)
+        toolSetter=ConditionsToolSetterHT()
     else:
-        toolSetter=ConditionsToolSetterFastReduction(chain_name)
+        toolSetter=ConditionsToolSetterFastReduction()
 
     return trigJetHypoToolHelperFromDict_(chain_label,
                                           chain_name,
                                           toolSetter)
 
 
-def  trigJetHypoToolFromDict(chain_dict):
+def  trigJetHypoToolFromDict_(chain_dict, tool):
     """Produce  a jet trigger hypo tool from a chainDict"""
 
-    log.debug('trigJetHypoToolFromDict chainDict %s', str(chain_dict))
-
-    chain_name = chain_dict['chainName']
-    tool = CompFactory.TrigJetHypoToolMT(name=chain_name)
+    log.debug('trigJetHypoToolFromDict_ tool type ',
+              tool.__class__.__name__,
+              ' chainDict ',
+              str(chain_dict))
 
     # obtain  a Helper Tool (possibly a tree of tools) to
     # make the hypo decision.
@@ -115,30 +116,22 @@ def  trigJetHypoToolFromDict(chain_dict):
 
     # controls whether debug visitor is sent to helper tool
     debug = False  # SET TO False WHEN COMMITTING
+    debug = True  # SET TO False WHEN COMMITTING
     tool.visit_debug = debug
     log.debug('%s', tool)
 
     return tool
 
-def  trigJetTLAHypoToolFromDict(chain_dict):
-    """Produce  a TLA jet trigger hypo tool from a chainDict"""
-
-    log.info('trigJetTLAHypoToolFromDict chainDict %s', str(chain_dict))
 
-    chain_name = chain_dict['chainName']
-    tool = CompFactory.TrigJetTLAHypoToolMT(name=chain_name)
+def  trigJetTLAHypoToolFromDict(chain_dict):
+    tool = CompFactory.TrigJetTLAHypoToolMT(name=chain_dict['chainName'])
+    return trigJetHypoToolFromDict_(chain_dict, tool)
 
-    # obtain  a Helper Tool (possibly a tree of tools) to
-    # make the hypo decision.
-    # CD: why do we do this? Question to TJ
-    tool.helper_tool = trigJetHypoToolHelperFromDict(chain_dict)
 
-    # controls whether debug visitor is sent to helper tool
-    debug = False  # SET TO False WHEN COMMITTING
-    tool.visit_debug = debug
-    log.debug('%s', tool)
+def  trigJetHypoToolFromDict(chain_dict):
+    tool = CompFactory.TrigJetHypoToolMT(name=chain_dict['chainName'])
+    return trigJetHypoToolFromDict_(chain_dict, tool)
 
-    return tool
 
 import unittest
 class TestStringMethods(unittest.TestCase):
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/chainDict2jetLabel.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/chainDict2jetLabel.py
index 79f087124687803eb7b45aa17f888fb624f3cac9..d01c48a6395663499eab149a73489f913a6efa31 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/chainDict2jetLabel.py
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/chainDict2jetLabel.py
@@ -28,10 +28,12 @@ def _select_simple_chainparts(chain_parts):
     return True
 
 
-def _make_simple_label(chain_parts):
+def _make_simple_label(chain_parts, leg_label):
     """Marshal information deom the selected chainParts to create a
     'simple' label. NOTE: THIS IS A SPECIAL CASE - IT DOES NOT DEPEND
     SOLELY ON THE HYPO SCENARIO.
+    Argument leg_label is not used - rather the leg label is fouNd
+    from the chain parts.
     """
     
     if not _select_simple_chainparts(chain_parts):
@@ -93,7 +95,7 @@ def _cuts_from_momCuts(momCuts):
     return ''
 
 
-def _make_vbenf_label(chain_parts):
+def _make_vbenf_label(chain_parts, leg_label):
     """Marshal information from the selected chainParts to create a
     vbenf label. Use a Reducer for elimination of unusable jets
     """
@@ -146,26 +148,27 @@ def _make_vbenf_label(chain_parts):
     assert len(args) == len(arg_res)
     assert len(args) == 0
 
+    argvals['leg_label'] = leg_label
     return """
     all
     (
       []
       simple
       (
-        [(%(etlo).0fet, 500neta, leg000)(%(etlo).0fet, peta500, leg000)]
+        [(%(etlo).0fet, 500neta, leg000)(%(etlo).0fet, peta500, %(leg_label)s)]
       )
       dijet
       (
         [(%(masslo).0fdjmass, 26djdphi)]
         simple
         (
-          [(10et, 0eta320, leg000)(20et, 0eta320, leg000)]
+          [(10et, 0eta320, leg000)(20et, 0eta320, %(leg_label)s)]
         )
       )
     )""" % argvals
 
 
-def _make_dijet_label(chain_parts):
+def _make_dijet_label(chain_parts, leg_label):
     """dijet label. supports dijet cuts, and cuts on particpating jets
     Currently supported cuts:
     - dijet mass
@@ -224,14 +227,16 @@ def _make_dijet_label(chain_parts):
     assert len(args) == len(arg_res)
     assert len(args) == 0
 
+    argvals['leg_label'] = leg_label
+    
     return """
     dijet(
     [(%(djmasslo).0fdjmass)]
-    simple([(%(j1etlo).0fet, %(j1etalo).0feta%(j1etahi).0f, leg000)
-    (%(j2etlo).0fet, %(j2etalo).0feta%(j2etahi).0f, leg000)]))""" % argvals
+    simple([(%(j1etlo).0fet, %(j1etalo).0feta%(j1etahi).0f, %(leg_label)s)
+    (%(j2etlo).0fet, %(j2etalo).0feta%(j2etahi).0f, %(leg_label)s)]))""" % argvals
 
 
-def _make_agg_label(chain_parts):
+def _make_agg_label(chain_parts, leg_label):
     """agg label. cuts on aggregate quantities, and cuts on particpating jets
     Only partway migrated from pure ht to more general agg
     Currently supported cuts:
@@ -288,13 +293,13 @@ def _make_agg_label(chain_parts):
                     hi = float(defaults[key][1])
                 argvals[key+'hi'] =  hi
 
-    print (argvals)
     assert len(argvals) == 2*nargs, 'no of args: %d, expected %d' % (len(argvals), 2*nargs)
 
+    argvals['leg_label'] = leg_label
     result =  """
-    ht([(%(htlo).0fht, leg000)
-        (%(etlo).0fet, leg000)
-        (%(etalo).0feta%(etahi).0f, leg000)
+    ht([(%(htlo).0fht, %(leg_label)s)
+        (%(etlo).0fet)
+        (%(etalo).0feta%(etahi).0f)
     ])"""  % argvals
     print (result)
     return result
@@ -324,7 +329,8 @@ def chainDict2jetLabel(chain_dict):
     cp_sorter = {}
     for k in router: cp_sorter[k] = []
 
-    for cp in chain_dict['chainParts']:
+    chain_parts = chain_dict['chainParts']
+    for cp in chain_parts:
         if cp['signature'] != 'Jet' and cp['signature'] != 'Bjet': 
             continue
         for k in cp_sorter:
@@ -334,8 +340,11 @@ def chainDict2jetLabel(chain_dict):
 
     # obtain labels by scenario.
     labels = []
+
+    leg_label = 'leg%03d' % (len(chain_parts) - 1)
     for k, chain_parts in cp_sorter.items():
-        if chain_parts: labels.append(router[k](chain_parts))
+        if chain_parts:
+            labels.append(router[k](chain_parts, leg_label))
 
     assert labels
     nlabels = len(labels)
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/PartitionsGroupsMatcherMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/PartitionsGroupsMatcherMT.cxx
deleted file mode 100644
index 25f1a293e85dc775d4eb2b8b146b0e106f98de30..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/PartitionsGroupsMatcherMT.cxx
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-// ********************************************************************
-//
-// NAME:     PartitionsGroupsMatcherMT.cxx
-// PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
-//
-// AUTHOR:   P Sherwood
-//
-// ********************************************************************
-//
-
-#include "./PartitionsGroupsMatcherMT.h"
-#include "./ITrigJetHypoInfoCollector.h"
-#include "./xAODJetCollector.h"
-
-// #include <cmath>
-// #include <sstream>
-#include <algorithm>
-// #include <map>
-
-PartitionsGroupsMatcherMT::PartitionsGroupsMatcherMT(ConditionsMT&& cs):
-  m_conditions(std::move(cs)), m_nConditions(m_conditions.size()){
-  std::size_t minNjets{0};
-  for(const auto& c : m_conditions){minNjets += c->capacity();}
-  m_minNjets = minNjets;
-}
-
-std::optional<bool>
-PartitionsGroupsMatcherMT::match(const HypoJetGroupCIter& groups_b,
-				 const HypoJetGroupCIter& groups_e,
-				 xAODJetCollector& jetCollector,
-				 const std::unique_ptr<ITrigJetHypoInfoCollector>& collector,
-				 bool) const {
-  
-
-
-  // minimal input correctness checks. More detailed checking
-  // responsibility of the caller.
-
-  auto iter_diff = groups_e - groups_b;
-  if (iter_diff < 0){return std::optional<bool>();}
-  auto n_jetvecs = static_cast<std::size_t>(iter_diff);
-  auto n_conditions = m_conditions.size();
-  
-  if(n_conditions != n_jetvecs){
-    if(collector){
-      std::string msg = "Number of HypoJetVectors " +
-	std::to_string(n_jetvecs) + " !=  number of children " +
-	std::to_string(n_conditions);
-      
-      collector->collect("PartitionsGroupsMatcherMT", msg);
-    }
-    return std::optional<bool>();
-  }
-
-  for(std::size_t i = 0;  i != n_conditions; ++i){
-    // Pass each job group to its corresposonding child, check if pass.
-    // Return false any child does not pass.
-    if (!m_conditions[i]->isSatisfied(*(groups_b +i), collector)){
-      return std::make_optional<bool>(false);
-    }
-
-    // passed....
-    if(collector){
-      collector->collect("PartitionsGroupsMatcherMT", "passed");
-    }
-    for(auto iter = groups_b; iter != groups_e; ++iter){
-      jetCollector.addJets((*iter).begin(), (*iter).end());
-    }
-  }
-  
-  return std::make_optional<bool>(true);  
-} 
-
-
-std::string PartitionsGroupsMatcherMT::toString() const noexcept {
-  std::stringstream ss;
-
-  ss << "PartitionsMatcherMT. No of conditions: "
-     << m_conditions.size() << '\n';
-  for(const auto& c : m_conditions){ ss <<"  "<< c->toString() << '\n';}
-  return ss.str();
-}
-
-
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/PartitionsGroupsMatcherMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/PartitionsGroupsMatcherMT.h
deleted file mode 100644
index 3e7c7aaafdd2a523f4bf23b35b4adfe2f583de8c..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/PartitionsGroupsMatcherMT.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef TRIGHLTJETHYPO_PARTITIONSGROUPSMATCHERMT_H
-#define TRIGHLTJETHYPO_PARTITIONSGROUPSMATCHERMT_H
-
-// ********************************************************************
-//
-// NAME:     PartitionsGroupsMatcherMT.h
-// PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
-//
-// AUTHOR:  P Sherwood
-//
-// ********************************************************************
-//
-
-#include "./IGroupsMatcherMT.h"
-#include "./ConditionsDefsMT.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/HypoJetDefs.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/IJet.h"
-#include <optional>
-
-class ITrigJetHypoInfoCollector;
-class xAODJetCollector;
-
-class PartitionsGroupsMatcherMT:
-virtual public IGroupsMatcherMT {
-
-  /* Given a two equi-length containers of HypoJetVectors
-     and Conditions , associate the ith elements, and determine if,
-     for each i, the Condition is datisfoied by the HypoJetVector.
-  */
-
-public:
-  PartitionsGroupsMatcherMT(ConditionsMT&& cs);
-  ~PartitionsGroupsMatcherMT(){}
-
-  std::optional<bool> match(const HypoJetGroupCIter&,
-			    const HypoJetGroupCIter&,
-			    xAODJetCollector&,
-			    const std::unique_ptr<ITrigJetHypoInfoCollector>&,
-			    bool debug=false) const override;
-  std::string toString() const noexcept override;
-
-private:
-  ConditionsMT m_conditions;
-  std::size_t m_nConditions{0};
-  std::size_t m_minNjets{0};
-
-};
-
-#endif
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SingleConditionMatcherMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SingleConditionMatcherMT.cxx
index bd19c59ce858d9b4f64a7296919bd7d6049e1da4..448399ad38380097578432e041fa63a0b4cc1191 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SingleConditionMatcherMT.cxx
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SingleConditionMatcherMT.cxx
@@ -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
 */
 
 // ********************************************************************
@@ -32,7 +32,10 @@ SingleConditionMatcherMT::match(const HypoJetGroupCIter& jets_b,
 
   for(auto i=jets_b; i != jets_e; ++i){
     if (m_condition->isSatisfied(*i, v)){
-      jetCollector.addJets((*i).cbegin(), (*i).cend());
+      // Note that this slightly out-of-date code does not expect
+      // chains with simple and non-simple scenarios to be present in the
+      // same chain. The leg label is hard coded here.
+      jetCollector.addJets((*i).cbegin(), (*i).cend(), "leg000");
       return std::make_optional<bool>(true);
     }
   }
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.cxx
index 12e20c532fcad7afaa9e795f4bd75d2bb629e287..6ef03eaee4841d1675d8130e495ec028577dd381 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.cxx
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.cxx
@@ -1,9 +1,8 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <algorithm>
-#include "Gaudi/Property.h"
 #include "TrigJetHypoAlgMT.h"
 #include "TrigCompositeUtils/HLTIdentifier.h"
 #include "TrigCompositeUtils/TrigCompositeUtils.h"
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.cxx
index 63ab69cb60f45da312add040cdf573c1c7123e39..448bd35a3cd2635e16d4c473e3eeec9e5da2d0d3 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.cxx
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.cxx
@@ -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
 */
 
 // ********************************************************************
@@ -23,6 +23,8 @@
 #include "TrigCompositeUtils/HLTIdentifier.h"
 #include "TrigCompositeUtils/TrigCompositeUtils.h"
 
+#include <sstream>
+
 using TrigCompositeUtils::DecisionID;
 using TrigCompositeUtils::Decision;
 using TrigCompositeUtils::DecisionContainer;
@@ -120,8 +122,22 @@ TrigJetHypoToolMT::decide(const xAOD::JetContainer* jets,
       infocollector->
 	collect(name(),
 		"no of xAODJets " + std::to_string(participating_jets.size()));
+
+      auto labels = jetCollector.legLabels();
+      std::stringstream ss;
+      
+      for(const auto& label : labels){
+	auto jets = jetCollector.xAODJets(label);
+	ss << label << " [\n";
+	for(const auto& j : jets){
+	  ss << static_cast<const void*>(j) << '\n';
+	}
+	ss << "]\n";
+      }
+      infocollector->collect(name(), ss.str());
     }
 
+
     for (auto& pair : jetHypoInputs) { 
       auto it = std::find(participating_jets.begin(),
                           participating_jets.end(),
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.h
index 3eb88c784342294ca141737b865752f3067ac8bb..b16024c67da37af3ed714241892128af3d79e0d2 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.h
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.h
@@ -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
 */
 
 #ifndef TRIGJETHYPOTOOLMT_H
@@ -23,6 +23,8 @@
 #include "xAODEventInfo/EventInfo.h"
 #include "xAODJet/JetContainer.h"
 
+#include <string>
+
 struct EventSN{
   std::size_t m_id{0};
   std::size_t getSN(){return m_id++;}
@@ -60,8 +62,11 @@ public:
   ToolHandle<ITrigJetHypoToolHelperMT> m_helper {
     this, "helper_tool", {}, "Jet hypo helper AlgTool"};
   
-  Gaudi::Property<bool>
-    m_visitDebug {this, "visit_debug", false, "debug flag"};
+  Gaudi::Property<bool> m_visitDebug {
+    this, "visit_debug", false, "debug flag"};
+
+  Gaudi::Property<std::string> m_chainName {
+    this, "chain_name", {}, "chain name"};
   
   
   std::unique_ptr<EventSN> m_eventSN;
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetTLAHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetTLAHypoAlgMT.cxx
index 894cc90bcbe6a4529d4137d4db82a698f16aa1bc..950268afffe59f4485498a169323b58c7cb2b1c5 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetTLAHypoAlgMT.cxx
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetTLAHypoAlgMT.cxx
@@ -1,9 +1,8 @@
 /*
-   Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+   Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
    */
 
 #include <algorithm>
-#include "Gaudi/Property.h"
 #include "TrigJetTLAHypoAlgMT.h"
 #include "TrigCompositeUtils/HLTIdentifier.h"
 #include "TrigCompositeUtils/TrigCompositeUtils.h"
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.cxx
index 1658ea39ca8d6d3f3058252ceab07e15ec0f0844..b34ebadffb584129d617aa6e72c7055113d2bee4 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.cxx
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.cxx
@@ -3,8 +3,6 @@
 */
 
 #include "./groupsMatcherFactoryMT.h"
-#include "./MaximumBipartiteGroupsMatcherMT.h"
-#include "./PartitionsGroupsMatcherMT.h"
 #include "./SingleConditionMatcherMT.h"
 #include "./FastReductionMatcher.h"
 
@@ -18,33 +16,6 @@ groupsMatcherFactoryMT_SingleCondition (ConditionsMT&& conditions){
   return std::make_unique<SingleConditionMatcherMT>(std::move(conditions[0]));
 }
 
-std::unique_ptr<IGroupsMatcherMT> 
-groupsMatcherFactoryMT_MaxBipartite (ConditionsMT&& conditions){
-
-  if (conditions.empty()){
-    return std::make_unique<SingleConditionMatcherMT>(nullptr);
-  }
-
-  // check the number of conditions to decide the Matcher type.
-  if (conditions.size() == 1) {
-    return std::make_unique<SingleConditionMatcherMT>(std::move(conditions[0]));
-  } else {
-    return std::make_unique<MaximumBipartiteGroupsMatcherMT>(std::move(conditions));
-  }
-  
-}
-
-
-std::unique_ptr<IGroupsMatcherMT> 
-groupsMatcherFactoryMT_Partitions (ConditionsMT&& conditions){
-  
-  if (conditions.size() == 1) {
-    return std::make_unique<SingleConditionMatcherMT>(std::move(conditions[0]));
-  } else {
-    return std::make_unique<PartitionsGroupsMatcherMT>(std::move(conditions));
-  }
-}
-
 
 std::unique_ptr<IGroupsMatcherMT> 
 groupsMatcherFactoryMT_FastReduction (ConditionPtrs&& conditions,
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.h
index 366f5b7fc3f8efca039f3ac057d75de7df135212..b91b74c3df2786e801e0cf1f1c410097ed48a22b 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.h
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.h
@@ -16,10 +16,6 @@ groupsMatcherFactoryMT_SingleCondition(ConditionsMT&&);
 std::unique_ptr<IGroupsMatcherMT>
 groupsMatcherFactoryMT_MaxBipartite(ConditionsMT&&);
 
-std::unique_ptr<IGroupsMatcherMT>
-groupsMatcherFactoryMT_Partitions(ConditionsMT&&);
-
-
 std::unique_ptr<IGroupsMatcherMT>
 groupsMatcherFactoryMT_FastReduction(ConditionPtrs&&,
 				     const std::vector<std::size_t>& treeVec);
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/xAODJetCollector.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/xAODJetCollector.cxx
index 877dd64fd13caa96e59e6447332482f290d0fb11..646b1dbb682ac25fd1eb4fbde0cc2392b5fe4db2 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/xAODJetCollector.cxx
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/xAODJetCollector.cxx
@@ -53,6 +53,14 @@ HypoJetVector xAODJetCollector::hypoJets() const {
   return HypoJetVector(js.begin(), js.end());
 }
 
+  
+HypoJetVector xAODJetCollector::hypoJets(const std::string& label) const {
+  auto begin = m_jets.at(label).cbegin();
+  auto end = m_jets.at(label).cend();
+  HypoJetSet js(begin, end);
+  return HypoJetVector(js.begin(), js.end());
+}
+
 
 void xAODJetCollector::addOneJet(const pHypoJet jet,
 				 const std::string& label){
@@ -87,3 +95,14 @@ xAODJetCollector::xAODJets_(const HypoJetVector::const_iterator begin,
   std::set<const xAOD::Jet*> js(xJets.begin(), xJets.end());
   return std::vector<const xAOD::Jet*> (js.begin(), js.end());
 }
+
+
+std::vector<std::string>  xAODJetCollector::legLabels() const {
+  std::vector<std::string> labels;
+
+  for(auto it = m_jets.begin(); it != m_jets.end(); ++it){
+    labels.push_back(it->first);
+  }
+
+  return labels;
+}
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/xAODJetCollector.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/xAODJetCollector.h
index d7d3e23811fbc6d700bc8e5bc65275dedd13419f..74b03b97301b46ea8664ecd82cce1325e46d8bc3 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/xAODJetCollector.h
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/xAODJetCollector.h
@@ -15,6 +15,7 @@
 // xAODJetCollector - an object send to a (possibly recursive)
 // TrigJetHypoToolHelpers to obtain xAOD jets
 
+using CI = std::map<std::string, HypoJetVector>::const_iterator;
 
 class xAODJetCollector {
 
@@ -29,12 +30,16 @@ public:
   std::vector<const xAOD::Jet*> xAODJets(const std::string& label) const;
   
   HypoJetVector hypoJets() const;
+  HypoJetVector hypoJets(const std::string& label) const;
 
   void addOneJet(const pHypoJet jet, const std::string& label="");
 
   std::size_t size() const;
   bool empty() const;
- 
+
+
+  std::vector<std::string> legLabels() const;
+  
  private:
 
   std::map<std::string, HypoJetVector> m_jets;