From d371ade2390a6aa9d209143c261149511bcc9915 Mon Sep 17 00:00:00 2001
From: Teng Jian Khoo <teng.jian.khoo@cern.ch>
Date: Fri, 17 Feb 2017 19:54:42 +0100
Subject: [PATCH] 'apply track cleaning to cPFO jet constituents'
 (METReconstruction-00-03-30)

	* Apply track cleaning to charged PF jet constituents as well
	* Tagging as METReconstruction-00-03-30

2017-02-12 Teng Jian Khoo <khoo@cern.ch>
	* Disable core corrections in the calo isolation tools for track cleaning
	* Tagging as METReconstruction-00-03-29

2017-02-08 Teng Jian Khoo <khoo@cern.ch>
	* Lower track cleaning threshold again to 30 GeV
	* Flags for control of PFlow cleaning
	* Tagging as METReconstruction-00-03-28

2017-02-07 Teng Jian Khoo <khoo@cern.ch>
	* Require isGoodEoverP track cleaning for charged PFlow objects
	* Lower track cleaning threshold to 40 GeV
	* Tagging as METReconstruction-00-03-27

2017-02-05 Teng Jian Khoo <khoo@cern.ch>
	* Disable writing of constituent weights from METUtilities
	* Switch to loose track association for Track MET
...
(Long ChangeLog diff - truncated)


Former-commit-id: 30dac4156d14bb60fa7fe146b24bf687acf0fc7d
---
 .../METReconstruction/METAssociator.h         |  2 +-
 .../METReconstruction/METSoftAssociator.h     |  1 +
 .../METReconstruction/Root/METAssociator.cxx  | 16 ++---
 .../Root/METEgammaAssociator.cxx              |  5 +-
 .../Root/METJetAssocTool.cxx                  |  4 +-
 .../Root/METMuonAssociator.cxx                |  4 +-
 .../Root/METSoftAssociator.cxx                | 13 +++-
 .../Root/METTauAssociator.cxx                 | 66 +------------------
 .../python/METAssocConfig.py                  |  6 +-
 .../METReconstruction/python/METRecoConfig.py |  9 ++-
 ...TReconstructionOutputAODList_jobOptions.py |  2 +-
 ...TReconstructionOutputESDList_jobOptions.py |  2 +-
 12 files changed, 43 insertions(+), 87 deletions(-)

diff --git a/Reconstruction/MET/METReconstruction/METReconstruction/METAssociator.h b/Reconstruction/MET/METReconstruction/METReconstruction/METAssociator.h
index f23250ace43b..4f7d8ec1001c 100644
--- a/Reconstruction/MET/METReconstruction/METReconstruction/METAssociator.h
+++ b/Reconstruction/MET/METReconstruction/METReconstruction/METAssociator.h
@@ -85,7 +85,6 @@ namespace met {
     std::string m_pvcoll;
     std::string m_trkcoll;
     std::string m_clcoll;
-    std::string m_goodtracks_coll;
 
     bool m_pflow;
     bool m_useTracks;
@@ -93,6 +92,7 @@ namespace met {
     bool m_useIsolationTools;
     bool m_useModifiedClus;
     bool m_weight_charged_pfo;
+    bool m_cleanChargedPFO;
 
     ToolHandle<CP::IRetrievePFOTool> m_pfotool;
     ToolHandle<CP::IWeightPFOTool> m_pfoweighttool;
diff --git a/Reconstruction/MET/METReconstruction/METReconstruction/METSoftAssociator.h b/Reconstruction/MET/METReconstruction/METReconstruction/METSoftAssociator.h
index f2bf51d0f030..ffdcfc94c6ff 100644
--- a/Reconstruction/MET/METReconstruction/METReconstruction/METSoftAssociator.h
+++ b/Reconstruction/MET/METReconstruction/METReconstruction/METSoftAssociator.h
@@ -75,6 +75,7 @@ namespace met{
     bool m_decorateSoftTermConst;
     std::string m_lcmodclus_key;
     std::string m_emmodclus_key;
+    bool m_weight_soft_pfo;
 
   }; 
 
diff --git a/Reconstruction/MET/METReconstruction/Root/METAssociator.cxx b/Reconstruction/MET/METReconstruction/Root/METAssociator.cxx
index 59b3410a2204..d2ce010b0c0b 100644
--- a/Reconstruction/MET/METReconstruction/Root/METAssociator.cxx
+++ b/Reconstruction/MET/METReconstruction/Root/METAssociator.cxx
@@ -60,22 +60,22 @@ namespace met {
     declareProperty( "PrimVxColl",         m_pvcoll      = "PrimaryVertices"     );
     declareProperty( "TrkColl",            m_trkcoll     = "InDetTrackParticles" );
     declareProperty( "ClusColl",           m_clcoll      = "CaloCalTopoClusters" );
-    declareProperty( "UseModifiedClus",    m_useModifiedClus = false           );
+    declareProperty( "UseModifiedClus",    m_useModifiedClus = false             );
     declareProperty( "UseTracks",          m_useTracks   = true                  );
     declareProperty( "PFlow",              m_pflow       = false                 );
-    declareProperty( "WeightCPFO",        m_weight_charged_pfo = true         );
+    declareProperty( "WeightCPFO",         m_weight_charged_pfo = true           );
     declareProperty( "UseRapidity",        m_useRapidity = false                 );
     declareProperty( "PFOTool",            m_pfotool                             );
-    declareProperty( "PFOWeightTool",     m_pfoweighttool                     );
+    declareProperty( "PFOWeightTool",      m_pfoweighttool                       );
     declareProperty( "TrackSelectorTool",  m_trkseltool                          );
     declareProperty( "TrackIsolationTool", m_trkIsolationTool                    );
     declareProperty( "CaloIsolationTool",  m_caloIsolationTool                   );
-    declareProperty( "GoodTracksColl",     m_goodtracks_coll = "METRecoGoodTrackParticles" );
     declareProperty( "IgnoreJetConst",     m_skipconst = false                   );
-    declareProperty( "ForwardColl",        m_forcoll   = ""            );
+    declareProperty( "ForwardColl",        m_forcoll   = ""                      );
     declareProperty( "ForwardDef",         m_foreta    = 2.5                     );
-    declareProperty( "CentralTrackPtThr",  m_cenTrackPtThr = 200e+3              );
-    declareProperty( "ForwardTrackPtThr",  m_forTrackPtThr = 120e+3              );
+    declareProperty( "CentralTrackPtThr",  m_cenTrackPtThr = 30e+3               );
+    declareProperty( "ForwardTrackPtThr",  m_forTrackPtThr = 30e+3               );
+    declareProperty( "CleanCPFO",          m_cleanChargedPFO = true              );
   }
 
   // Destructor
@@ -325,7 +325,7 @@ namespace met {
       std::vector<Iso::IsolationType> caloIsoCones_coreCone; 
       caloIsoCones_coreCone.push_back(xAOD::Iso::IsolationType::etcone20); 
       xAOD::CaloCorrection caloIsoCorr_coreCone;
-      caloIsoCorr_coreCone.calobitset.set(xAOD::Iso::IsolationCaloCorrection::coreCone); 
+      caloIsoCorr_coreCone.calobitset.set(xAOD::Iso::IsolationCaloCorrection::noneCaloCorrection); 
       m_caloIsolationTool->caloTopoClusterIsolation(caloIsoResult_coreCone,
 						    *trk,
 						    caloIsoCones_coreCone,
diff --git a/Reconstruction/MET/METReconstruction/Root/METEgammaAssociator.cxx b/Reconstruction/MET/METReconstruction/Root/METEgammaAssociator.cxx
index 1ce604a194f7..a23bbd8c03c9 100644
--- a/Reconstruction/MET/METReconstruction/Root/METEgammaAssociator.cxx
+++ b/Reconstruction/MET/METReconstruction/Root/METEgammaAssociator.cxx
@@ -162,7 +162,10 @@ namespace met {
     nearbyPFO.reserve(20);
     for(const auto& pfo : *constits.pfoCont) {
       if(P4Helpers::isInDeltaR(*pfo, *swclus, 0.4, m_useRapidity)) {
-	if(fabs(pfo->charge())<FLT_MIN || acceptChargedPFO(pfo->track(0),constits.pv)) {
+	if(fabs(pfo->charge())<FLT_MIN
+	   || (acceptChargedPFO(pfo->track(0),constits.pv)
+	       && ( !m_cleanChargedPFO || isGoodEoverP(pfo->track(0)) )
+	       )) {
 	  nearbyPFO.push_back(pfo);
 	} // retain neutral PFOs and charged PFOs passing PV association
       } // DeltaR check
diff --git a/Reconstruction/MET/METReconstruction/Root/METJetAssocTool.cxx b/Reconstruction/MET/METReconstruction/Root/METJetAssocTool.cxx
index d3a56770fee2..284ae7a07161 100644
--- a/Reconstruction/MET/METReconstruction/Root/METJetAssocTool.cxx
+++ b/Reconstruction/MET/METReconstruction/Root/METJetAssocTool.cxx
@@ -103,7 +103,6 @@ namespace met {
     }
 
     // Create jet associations
-    MissingETBase::Types::constvec_t trkvec;
     for(const auto& jet : *jetCont) {
       std::vector<const IParticle*> selectedTracks;
       bool mismatchedPFlow = m_pflow && jet->rawConstituent(0)->type()!=xAOD::Type::ParticleFlow;
@@ -113,9 +112,8 @@ namespace met {
         for (size_t consti = 0; consti < jet->numConstituents(); consti++) {
           const xAOD::PFO *pfo = static_cast<const xAOD::PFO*>(jet->rawConstituent(consti));
 	  ATH_MSG_VERBOSE("Jet constituent PFO, pt " << pfo->pt());
-          if (fabs(pfo->charge())>1e-9) {
+          if (fabs(pfo->charge())>1e-9 && isGoodEoverP(pfo->track(0))) {
 	    ATH_MSG_VERBOSE("  Accepted charged PFO, pt " << pfo->pt());
-	    trkvec += *pfo;
 	    selectedTracks.push_back(pfo);
 	  }
         }
diff --git a/Reconstruction/MET/METReconstruction/Root/METMuonAssociator.cxx b/Reconstruction/MET/METReconstruction/Root/METMuonAssociator.cxx
index 1cc01c2c6b27..5b2fe4f26d5c 100644
--- a/Reconstruction/MET/METReconstruction/Root/METMuonAssociator.cxx
+++ b/Reconstruction/MET/METReconstruction/Root/METMuonAssociator.cxx
@@ -154,7 +154,9 @@ namespace met {
     for(const auto& pfo : *constits.pfoCont) {
       if(fabs(pfo->charge())>1e-9) {
 	// get charged PFOs by matching the muon ID track
-	if(idtrack && acceptChargedPFO(idtrack,constits.pv) && pfo->track(0) == idtrack) {
+	if(idtrack && pfo->track(0) == idtrack && acceptChargedPFO(idtrack,constits.pv) &&
+	   ( !m_cleanChargedPFO || isGoodEoverP(pfo->track(0)) )
+	   ) {
 	  ATH_MSG_VERBOSE("Accept muon PFO " << pfo << " px, py = " << pfo->p4().Px() << ", " << pfo->p4().Py());
 	  ATH_MSG_VERBOSE("Muon PFO index: " << pfo->index() << ", pt: " << pfo->pt() << ", eta: " << pfo->eta() << ", phi: " << pfo->phi() );
 	  ATH_MSG_VERBOSE("Muon ID Track index: " << idtrack->index() << ", pt: " << idtrack->pt() << ", eta: " << idtrack->eta() << ", phi: " << idtrack->phi() );
diff --git a/Reconstruction/MET/METReconstruction/Root/METSoftAssociator.cxx b/Reconstruction/MET/METReconstruction/Root/METSoftAssociator.cxx
index fe7e597c2ae5..116cd322739b 100644
--- a/Reconstruction/MET/METReconstruction/Root/METSoftAssociator.cxx
+++ b/Reconstruction/MET/METReconstruction/Root/METSoftAssociator.cxx
@@ -17,6 +17,8 @@
 #include "xAODCaloEvent/CaloClusterChangeSignalState.h"
 #include "xAODCaloEvent/CaloClusterContainer.h"
 
+#include "PFlowUtils/IWeightPFOTool.h"
+
 namespace met {
 
   using namespace xAOD;
@@ -31,6 +33,7 @@ namespace met {
     declareProperty("DecorateSoftConst", m_decorateSoftTermConst=false);
     declareProperty("LCModClusterKey",   m_lcmodclus_key = "LCOriginTopoClusters");
     declareProperty("EMModClusterKey",   m_emmodclus_key = "EMOriginTopoClusters");
+    declareProperty("WeightSoftPFO",     m_weight_soft_pfo = false);
   }
 
   // Destructor
@@ -96,9 +99,15 @@ namespace met {
       for(const auto& sig : *uniquePFOs) {
 	const PFO *pfo = static_cast<const PFO*>(sig);
 	if (fabs(pfo->charge())>1e-9) {
-	  if (acceptChargedPFO(pfo->track(0),constits.pv)) {
+	  if (acceptChargedPFO(pfo->track(0),constits.pv) &&
+	      ( !m_cleanChargedPFO || isGoodEoverP(pfo->track(0)) ) 
+	      ) {
 	    *metCoreTrk += sig;
-	    *metCoreCl += sig;
+	    float weight = 1.0;
+	    if(m_weight_charged_pfo && m_weight_soft_pfo) {
+	      ATH_CHECK( m_pfoweighttool->fillWeight( *pfo, weight ) );
+	    }
+	    metCoreCl->add(sig,weight);
 	    if(m_decorateSoftTermConst) {
 	      dec_softConst(*metCoreTrk).push_back(ElementLink<IParticleContainer>(*static_cast<const IParticleContainer*>(sig->container()),sig->index()));
 	      dec_softConst(*metCoreCl).push_back(ElementLink<IParticleContainer>(*static_cast<const IParticleContainer*>(sig->container()),sig->index()));
diff --git a/Reconstruction/MET/METReconstruction/Root/METTauAssociator.cxx b/Reconstruction/MET/METReconstruction/Root/METTauAssociator.cxx
index de558e9c623e..84793a007d7c 100644
--- a/Reconstruction/MET/METReconstruction/Root/METTauAssociator.cxx
+++ b/Reconstruction/MET/METReconstruction/Root/METTauAssociator.cxx
@@ -101,29 +101,6 @@ namespace met {
 				        	   const met::METAssociator::ConstitHolder& /*tcCont*/) const
   {
     const TauJet* tau = static_cast<const TauJet*>(obj);
-    /////////////////////////////////////////// TO-BE REMOVED!!!
-    /////////////////////////////////////////// TO-BE REMOVED!!!
-    ////// <<<===== OLD TAU EDM : ASM 19/4/2016
-    //const Jet* seedjet = *tau->jetLink();
-    //JetConstituentVector constit = seedjet->getConstituents();
-    //ATH_MSG_VERBOSE("Current tau has " << constit.size() << " constituents.");
-    //// test for used topoclusters, and retrieve unused ones (ok until/unless we use PFlow taus)
-    //// only use clusters for computing the overlap removal relative to other objects
-    //for(const auto& cl : constit) {
-    //  // TEMP: use jet seed axis
-    //  //       taus will provide an accessor
-    //  if(!xAOD::P4Helpers::isInDeltaR(*seedjet,*cl->rawConstituent(),0.2,m_useRapidity)) continue;
-    //  // skip cluster if dR>0.2
-    //  if(cl->rawConstituent()->type() == xAOD::Type::CaloCluster) {
-    //    const CaloCluster* pClus = static_cast<const CaloCluster*>( cl->rawConstituent() );
-    //    tclist.push_back(pClus);
-    //  } else {
-    //    ATH_MSG_WARNING("Expected an object of type CaloCluster, received one of type " << cl->rawConstituent()->type());
-    //  }
-    //} // loop over jet constituents
-    ////// <<<===== OLD TAU EDM : ASM 19/4/2016
-    /////////////////////////////////////////// TO-BE REMOVED!!!
-    /////////////////////////////////////////// TO-BE REMOVED!!!
     for( ElementLink< xAOD::IParticleContainer > cluster_link : tau->clusterLinks() ){
       const xAOD::IParticle* ipart = *cluster_link;
       if(ipart->type() != xAOD::Type::CaloCluster) {
@@ -145,32 +122,9 @@ namespace met {
 					     const met::METAssociator::ConstitHolder& constits) const
   {
     const TauJet* tau = static_cast<const TauJet*>(obj);
-    /////////////////////////////////////////// TO-BE REMOVED!!!
-    /////////////////////////////////////////// TO-BE REMOVED!!!
-    ////// <<<===== OLD TAU EDM : ASM 18/4/2016
-    //const Jet* jet = *tau->jetLink();
-    //for(size_t iTrk=0; iTrk<tau->nTracks(); ++iTrk) {
-    //  const TrackParticle* tautrk = tau->track(iTrk);
-    //  if(acceptTrack(tautrk,pv) && isGoodEoverP(tautrk,tcCont)) {
-    //  // if(acceptTrack(tautrk,pv)) {
-	//ATH_MSG_VERBOSE("Accept tau track " << tautrk << " px, py = " << tautrk->p4().Px() << ", " << tautrk->p4().Py());
-	//constlist.push_back(tautrk);
-    //  }
-    //}
-    //for(size_t iTrk=0; iTrk<tau->nOtherTracks(); ++iTrk) {
-    //  const TrackParticle* tautrk = tau->otherTrack(iTrk);
-    //  if(xAOD::P4Helpers::isInDeltaR(*jet,*tautrk,0.2,m_useRapidity) && acceptTrack(tautrk,pv) && isGoodEoverP(tautrk,tcCont)) {
-    //  // if(dR<0.2 && acceptTrack(tautrk,pv)) {
-	//ATH_MSG_VERBOSE("Accept track " << tautrk << " px, py = " << tautrk->p4().Px() << ", " << tautrk->p4().Py());
-	//constlist.push_back(tautrk);
-    //  }
-    //}
-    ////// <<<===== OLD TAU EDM : ASM 18/4/2016
-    /////////////////////////////////////////// TO-BE REMOVED!!!
-    /////////////////////////////////////////// TO-BE REMOVED!!!
     for( const xAOD::TauTrack* tauTrk : tau->tracks(xAOD::TauJetParameters::coreTrack) ){//all tracks dR<0.2 regardless of quality
       const TrackParticle* trk = tauTrk->track();
-      if(acceptTrack(trk,constits.pv) && isGoodEoverP(trk)){
+      if(acceptTrack(trk,constits.pv) && ( !m_cleanChargedPFO || isGoodEoverP(trk) ) ){
         ATH_MSG_VERBOSE("Accept tau track " << trk << " px, py = " << trk->p4().Px() << ", " << trk->p4().Py());
         constlist.push_back(trk);
       }
@@ -198,27 +152,11 @@ namespace met {
       }
       else {
         const TrackParticle* pfotrk = pfo->track(0);
-        /////////////////////////////////////////// TO-BE REMOVED!!!
-        /////////////////////////////////////////// TO-BE REMOVED!!!
-        ////// <<<===== OLD TAU EDM : ASM 18/4/2016
-        //for(size_t iTrk=0; iTrk<tau->nTracks(); ++iTrk) {
-        //  const TrackParticle* tautrk = tau->track(iTrk);
-        //  if(tautrk==pfotrk) {
-        //    if(acceptChargedPFO(tautrk,pv)) match = true;
-        //  }
-        //}
-        //for(size_t iTrk=0; iTrk<tau->nOtherTracks(); ++iTrk) {
-        //  const TrackParticle* tautrk = tau->otherTrack(iTrk);
-        //      if(tautrk==pfotrk && xAOD::P4Helpers::isInDeltaR(*seedjet,*tautrk,0.2,m_useRapidity) && acceptChargedPFO(tautrk,pv)) match = true;
-        //}
-        ////// <<<===== OLD TAU EDM : ASM 18/4/2016
-        /////////////////////////////////////////// TO-BE REMOVED!!!
-        /////////////////////////////////////////// TO-BE REMOVED!!!
         for( const xAOD::TauTrack* ttrk : tau->tracks(xAOD::TauJetParameters::coreTrack) ){//all tracks <0.2, no quality
           const TrackParticle* tautrk = ttrk->track();
           if(tautrk==pfotrk) {
 	    ATH_MSG_VERBOSE("Found cPFO with dR " << seedjet->p4().DeltaR(ttrk->p4()));
-            if(acceptChargedPFO(tautrk,constits.pv)) match = true;
+            if(acceptChargedPFO(tautrk,constits.pv) && isGoodEoverP(pfotrk)) match = true;
           }
         }
       }
diff --git a/Reconstruction/MET/METReconstruction/python/METAssocConfig.py b/Reconstruction/MET/METReconstruction/python/METAssocConfig.py
index ce54120c386a..181fb5bfd7ab 100644
--- a/Reconstruction/MET/METReconstruction/python/METAssocConfig.py
+++ b/Reconstruction/MET/METReconstruction/python/METAssocConfig.py
@@ -160,7 +160,8 @@ class METAssocConfig:
             self.trkseltool=CfgMgr.InDet__InDetTrackSelectionTool("IDTrkSel_METAssoc",
                                                                   CutLevel="TightPrimary",
                                                                   maxZ0SinTheta=3,
-                                                                  maxD0=2)
+                                                                  maxD0=2,
+                                                                  minPt=500)
             if not hasattr(ToolSvc,self.trkseltool.name()):
                 ToolSvc += self.trkseltool
 
@@ -169,7 +170,8 @@ class METAssocConfig:
         if not hasattr(ToolSvc,self.trkisotool.name()):
             ToolSvc += self.trkisotool
 
-        self.caloisotool = CfgMgr.xAOD__CaloIsolationTool("CaloIsolationTool_MET")
+        self.caloisotool = CfgMgr.xAOD__CaloIsolationTool("CaloIsolationTool_MET",
+                                                          saveOnlyRequestedCorrections=True)
         if not hasattr(ToolSvc,self.caloisotool.name()):
             ToolSvc += self.caloisotool
 
diff --git a/Reconstruction/MET/METReconstruction/python/METRecoConfig.py b/Reconstruction/MET/METReconstruction/python/METRecoConfig.py
index f9636b107f10..5218cfddd6b9 100644
--- a/Reconstruction/MET/METReconstruction/python/METRecoConfig.py
+++ b/Reconstruction/MET/METReconstruction/python/METRecoConfig.py
@@ -268,11 +268,13 @@ class METConfig:
         self.trkseltool=CfgMgr.InDet__InDetTrackSelectionTool("IDTrkSel_MET",
                                                               CutLevel="TightPrimary",
                                                               maxZ0SinTheta=3,
-                                                              maxD0=2)
+                                                              maxD0=2,
+                                                              minPt=500)
         if not hasattr(ToolSvc,self.trkseltool.name()):
             ToolSvc += self.trkseltool
         #
-        self.trkvxtool=CfgMgr.CP__TightTrackVertexAssociationTool("TightTrackVertexAssociationTool_MET", dzSinTheta_cut=1.5, doPV=False)
+        self.trkvxtool=CfgMgr.CP__LooseTrackVertexAssociationTool("LooseTrackVertexAssociationTool_MET")
+        #self.trkvxtool=CfgMgr.CP__TightTrackVertexAssociationTool("TightTrackVertexAssociationTool_MET", dzSinTheta_cut=3, doPV=False)
         if not hasattr(ToolSvc,self.trkvxtool.name()):
             ToolSvc += self.trkvxtool
         #
@@ -281,7 +283,8 @@ class METConfig:
         if not hasattr(ToolSvc,self.trkisotool.name()):
             ToolSvc += self.trkisotool
         #
-        self.caloisotool = CfgMgr.xAOD__CaloIsolationTool("CaloIsolationTool_MET")
+        self.caloisotool = CfgMgr.xAOD__CaloIsolationTool("CaloIsolationTool_MET",
+                                                          saveOnlyRequestedCorrections=True)
         if not hasattr(ToolSvc,self.caloisotool.name()):
             ToolSvc += self.caloisotool
 
diff --git a/Reconstruction/MET/METReconstruction/share/METReconstructionOutputAODList_jobOptions.py b/Reconstruction/MET/METReconstruction/share/METReconstructionOutputAODList_jobOptions.py
index eccdd0fc3ecc..7474135f61e8 100644
--- a/Reconstruction/MET/METReconstruction/share/METReconstructionOutputAODList_jobOptions.py
+++ b/Reconstruction/MET/METReconstruction/share/METReconstructionOutputAODList_jobOptions.py
@@ -26,4 +26,4 @@ for config in assocoutput:
 	MissingETAODList.append( 'xAOD::MissingETContainer#MET_Core_'+config )
 	MissingETAODList.append( 'xAOD::MissingETAuxContainer#MET_Core_'+config+'Aux.' )
 	MissingETAODList.append( 'xAOD::MissingETContainer#MET_Reference_'+config )
-	MissingETAODList.append( 'xAOD::MissingETAuxContainer#MET_Reference_'+config+'Aux.-ConstitObjectLinks' )
+	MissingETAODList.append( 'xAOD::MissingETAuxContainer#MET_Reference_'+config+'Aux.-ConstitObjectLinks.-ConstitObjectWeights' )
diff --git a/Reconstruction/MET/METReconstruction/share/METReconstructionOutputESDList_jobOptions.py b/Reconstruction/MET/METReconstruction/share/METReconstructionOutputESDList_jobOptions.py
index 3194c3b8cc56..32718a10d12e 100644
--- a/Reconstruction/MET/METReconstruction/share/METReconstructionOutputESDList_jobOptions.py
+++ b/Reconstruction/MET/METReconstruction/share/METReconstructionOutputESDList_jobOptions.py
@@ -26,4 +26,4 @@ for config in assocoutput:
 	MissingETESDList.append( 'xAOD::MissingETContainer#MET_Core_'+config )
 	MissingETESDList.append( 'xAOD::MissingETAuxContainer#MET_Core_'+config+'Aux.' )
 	MissingETESDList.append( 'xAOD::MissingETContainer#MET_Reference_'+config )
-	MissingETESDList.append( 'xAOD::MissingETAuxContainer#MET_Reference_'+config+'Aux.-ConstitObjectLinks' )
+	MissingETESDList.append( 'xAOD::MissingETAuxContainer#MET_Reference_'+config+'Aux.-ConstitObjectLinks.-ConstitObjectWeights' )
-- 
GitLab