diff --git a/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py b/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py
index fb953b93aecd9944913a2f68433ddf62b4d7202f..9dbe634be4df94f90a14aa50db1542a002aed09a 100644
--- a/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py
+++ b/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py
@@ -1283,20 +1283,26 @@ if ( rec.doAOD() or rec.doWriteAOD()) and not rec.readAOD() :
             from tauRec.tauRecFlags import tauFlags
             if ( rec.readESD() or tauFlags.Enabled() ) and rec.doTau:                
                 from CaloRec.CaloRecConf import CaloThinCellsByClusterAlg
-                alg = CaloThinCellsByClusterAlg('CaloThinCellsByClusterAlg_TauPi0Clusters',
-                                                StreamName = 'StreamAOD',
-                                                Clusters = 'TauPi0Clusters',
-                                                Cells = 'AllCalo')
-                topSequence += alg
+                tauCellAlg1 = CaloThinCellsByClusterAlg('CaloThinCellsByClusterAlg_TauPi0Clusters',
+                                                        StreamName = 'StreamAOD',
+                                                        Clusters = 'TauPi0Clusters',
+                                                        Cells = 'AllCalo')
+                topSequence += tauCellAlg1
+
+                tauCellAlg2 = CaloThinCellsByClusterAlg('CaloThinCellsByClusterAlg_TauShotClusters',
+                                                        StreamName = 'StreamAOD',
+                                                        Clusters = 'TauShotClusters',
+                                                        Cells = 'AllCalo')
+                topSequence += tauCellAlg2
 
                 from tauRec.tauRecConf import TauCellThinningAlg
-                alg = TauCellThinningAlg('TauCellThinningAlg',
-                                         StreamName = 'StreamAOD',
-                                         Cells = 'AllCalo',
-                                         CellLinks = 'CaloCalTopoClusters_links',
-                                         Taus = "TauJets",
-                                         UseSubtractedCluster = tauFlags.useSubtractedCluster())
-                topSequence += alg
+                tauCellAlg3 = TauCellThinningAlg('TauCellThinningAlg',
+                                                 StreamName = 'StreamAOD',
+                                                 Cells = 'AllCalo',
+                                                 CellLinks = 'CaloCalTopoClusters_links',
+                                                 Taus = "TauJets",
+                                                 UseSubtractedCluster = tauFlags.useSubtractedCluster())
+                topSequence += tauCellAlg3
                 
         except Exception:
             treatException("Could not make AOD cells" )
diff --git a/Reconstruction/tauRec/share/TauAODList.py b/Reconstruction/tauRec/share/TauAODList.py
index 159bb37e0542861313dd587e51c997a6c8b7b5c8..19dea7073b01a1c1984c373f3719304f5fdd9527 100644
--- a/Reconstruction/tauRec/share/TauAODList.py
+++ b/Reconstruction/tauRec/share/TauAODList.py
@@ -36,10 +36,11 @@ TauAODList += [ "xAOD::CaloClusterAuxContainer#TauPi0ClustersAux." ]
 TauAODList += [ "CaloClusterCellLinkContainer#TauPi0Clusters_links" ]
 
 #------------------------------------------------------------------------------
-# Shot clusters
+# Shot clusters and cell links
 #------------------------------------------------------------------------------
 TauAODList += [ "xAOD::CaloClusterContainer#TauShotClusters"]
 TauAODList += [ "xAOD::CaloClusterAuxContainer#TauShotClustersAux."]
+TauAODList += [ "CaloClusterCellLinkContainer#TauShotClusters_links" ]
 
 #------------------------------------------------------------------------------
 # Final reconstructed 4-vectors of Pi0s
diff --git a/Reconstruction/tauRec/share/TauESDList.py b/Reconstruction/tauRec/share/TauESDList.py
index a8d36482330776eec404f487345765ddc6200a00..de81e842a59a1ea3485855ac7e1b2ac5cf2bc6b2 100644
--- a/Reconstruction/tauRec/share/TauESDList.py
+++ b/Reconstruction/tauRec/share/TauESDList.py
@@ -36,10 +36,11 @@ TauESDList += [ "xAOD::CaloClusterAuxContainer#TauPi0ClustersAux." ]
 TauESDList += [ "CaloClusterCellLinkContainer#TauPi0Clusters_links" ]
 
 #------------------------------------------------------------------------------
-# Shot clusters
+# Shot clusters and cell links
 #------------------------------------------------------------------------------
 TauESDList += [ "xAOD::CaloClusterContainer#TauShotClusters"]
 TauESDList += [ "xAOD::CaloClusterAuxContainer#TauShotClustersAux."]
+TauESDList += [ "CaloClusterCellLinkContainer#TauShotClusters_links" ]
 
 #------------------------------------------------------------------------------
 # Final reconstructed 4-vectors of Pi0s
diff --git a/Reconstruction/tauRec/src/TauProcessorAlg.cxx b/Reconstruction/tauRec/src/TauProcessorAlg.cxx
index d5da68149fde0b2f89a89a5a236a178e380febc9..43136600269b3124febb7536b04428feb3fdee9e 100644
--- a/Reconstruction/tauRec/src/TauProcessorAlg.cxx
+++ b/Reconstruction/tauRec/src/TauProcessorAlg.cxx
@@ -3,15 +3,11 @@
 */
 
 #include "tauRec/TauProcessorAlg.h"
-#include "xAODJet/Jet.h"
-#include "xAODJet/JetContainer.h"
 #include "xAODTau/TauJetAuxContainer.h"
-#include "xAODTau/TauDefs.h"
-#include "xAODTau/TauTrackContainer.h"
 #include "xAODTau/TauTrackAuxContainer.h"
-#include "StoreGate/ReadCondHandleKey.h"
-#include "StoreGate/ReadHandle.h"
-#include "StoreGate/WriteHandle.h"
+#include "xAODCaloEvent/CaloClusterAuxContainer.h"
+#include "xAODPFlow/PFOAuxContainer.h"
+#include "CaloUtils/CaloClusterStoreHelper.h"
 #include "NavFourMom/INavigable4MomentumCollection.h"
 #include <boost/dynamic_bitset.hpp>
 
@@ -40,6 +36,7 @@ StatusCode TauProcessorAlg::initialize() {
   ATH_CHECK( m_tauOutputContainer.initialize() );
   ATH_CHECK( m_tauTrackOutputContainer.initialize() );
   ATH_CHECK( m_tauShotClusOutputContainer.initialize() );
+  ATH_CHECK( m_tauShotClusLinkContainer.initialize() );
   ATH_CHECK( m_tauShotPFOOutputContainer.initialize() );
   ATH_CHECK( m_tauPi0CellOutputContainer.initialize(SG::AllowEmpty) );
   
@@ -189,6 +186,10 @@ StatusCode TauProcessorAlg::execute(const EventContext& ctx) const {
     } 
   }// loop through seeds
 
+  // build cell link container for shot clusters
+  SG::WriteHandle<CaloClusterCellLinkContainer> tauShotClusLinkHandle( m_tauShotClusLinkContainer, ctx );
+  ATH_CHECK(CaloClusterStoreHelper::finalizeClusters (tauShotClusLinkHandle, tauShotClusContainer));
+
   // Check this is needed for the cell container?
   if(Pi0CellContainer) {
     // symlink as INavigable4MomentumCollection (as in CaloRec/CaloCellMaker)
diff --git a/Reconstruction/tauRec/tauRec/TauProcessorAlg.h b/Reconstruction/tauRec/tauRec/TauProcessorAlg.h
index 3a4c36ad859f3a75fd54e66cd19395320f6ce3cd..a4b0a4a31b43c5e464aacb286b32215fa2b1cb3d 100644
--- a/Reconstruction/tauRec/tauRec/TauProcessorAlg.h
+++ b/Reconstruction/tauRec/tauRec/TauProcessorAlg.h
@@ -14,10 +14,11 @@
 #include "AthenaBaseComps/AthReentrantAlgorithm.h"
 
 #include "xAODTau/TauJetContainer.h"
+#include "xAODTau/TauTrackContainer.h"
+#include "xAODJet/JetContainer.h"
 #include "xAODPFlow/PFOContainer.h"
-#include "xAODPFlow/PFOAuxContainer.h"
 #include "xAODCaloEvent/CaloClusterContainer.h"
-#include "xAODCaloEvent/CaloClusterAuxContainer.h"
+#include "CaloEvent/CaloClusterCellLinkContainer.h"
 #include "InDetReadoutGeometry/SiDetectorElementCollection.h"
 #include "TRT_ReadoutGeometry/TRT_DetElementContainer.h"
 #include "CaloInterface/ICaloCellMakerTool.h"
@@ -60,6 +61,7 @@ class TauProcessorAlg: public AthReentrantAlgorithm
   SG::WriteHandleKey<xAOD::TauJetContainer> m_tauOutputContainer{this,"Key_tauOutputContainer","tmp_TauJets","output tau data key"};
   SG::WriteHandleKey<xAOD::TauTrackContainer> m_tauTrackOutputContainer{this,"Key_tauTrackOutputContainer","TauTracks","output tau tracks data key"};
   SG::WriteHandleKey<xAOD::CaloClusterContainer> m_tauShotClusOutputContainer{this,"Key_tauShotClusOutputContainer", "TauShotClusters", "tau shot clusters out key"};
+  SG::WriteHandleKey<CaloClusterCellLinkContainer> m_tauShotClusLinkContainer{this,"Key_tauShotClusLinkContainer", "TauShotClusters_links", "tau shot clusters out key"};
   SG::WriteHandleKey<xAOD::PFOContainer> m_tauShotPFOOutputContainer{this,"Key_tauShotPFOOutputContainer", "TauShotParticleFlowObjects", "tau pfo out key"};
   SG::WriteHandleKey<CaloCellContainer> m_tauPi0CellOutputContainer{this,"Key_tauPi0CellOutputContainer","TauCommonPi0Cells","output calo cell key"};