From 1acdbcb366ea120e13b0db1ca44c2e6955a4cacd Mon Sep 17 00:00:00 2001
From: adbailey <adam.bailey@cern.ch>
Date: Fri, 6 Jul 2018 17:14:45 +0200
Subject: [PATCH] Updated scripts to include the TauRunnerAlg, allows the
 TauRecPi0EflowProcessor algorithm to be ran inbetween the two. Also moved
 write handles from TauPi0CreateROI and TauShotFinder to the TauProcessorAlg,
 required new functions and change to base class. Still need to finish adding
 tools to TauRunnerAlg

Former-commit-id: 7eafd8673e3ee268cab0e177630d7b8dcef6f00f
---
 .../PanTauAlgs/PanTauAlgs/PanTauProcessor.h   | 12 ++--
 .../tauRec/python/TauAlgorithmsHolder.py      | 15 +---
 Reconstruction/tauRec/python/TauRecBuilder.py | 70 +++++++++----------
 .../tauRec/python/TauRecConfigured.py         | 29 +++++++-
 .../tauRec/share/run_tau_standalone.py        |  6 +-
 .../tauRec/share/tauRec_jobOptions.py         |  7 +-
 Reconstruction/tauRec/src/TauProcessorAlg.cxx | 36 +++++++++-
 .../tauRec/tauRec/TauProcessorAlg.h           | 10 ++-
 .../tauRecTools/src/JetSeedBuilder.h          |  6 +-
 .../tauRecTools/src/LockTauContainers.h       |  6 +-
 .../tauRecTools/src/PhotonConversionPID.h     |  6 +-
 .../tauRecTools/src/PhotonConversionVertex.h  |  8 ++-
 .../tauRecTools/src/TauAxisSetter.h           |  9 ++-
 .../tauRecTools/src/TauCalibrateEM.h          |  6 +-
 .../tauRecTools/src/TauCellVariables.h        |  9 ++-
 .../tauRecTools/src/TauConversionFinder.h     |  7 +-
 .../tauRecTools/src/TauConversionTagger.h     |  6 +-
 .../src/TauElectronVetoVariables.h            |  6 +-
 .../tauRecTools/src/TauPi0ClusterCreator.h    |  6 +-
 .../tauRecTools/src/TauPi0CreateROI.cxx       | 35 ++--------
 .../tauRecTools/src/TauPi0CreateROI.h         | 16 ++---
 .../tauRecTools/src/TauShotFinder.cxx         | 26 ++-----
 .../tauRecTools/src/TauShotFinder.h           |  6 +-
 Reconstruction/tauRecTools/src/TauTestDump.h  |  6 +-
 .../tauRecTools/src/TauTrackFinder.h          |  6 +-
 .../tauRecTools/src/TauVertexFinder.h         |  6 +-
 .../tauRecTools/src/TauVertexVariables.h      |  6 +-
 .../tauRecTools/CombinedP4FromRecoTaus.h      |  8 ++-
 .../tauRecTools/tauRecTools/ITauToolBase.h    |  7 +-
 .../tauRecTools/tauRecTools/MvaTESEvaluator.h |  6 +-
 .../tauRecTools/MvaTESVariableDecorator.h     |  7 +-
 .../tauRecTools/tauRecTools/TauCalibrateLC.h  |  6 +-
 .../tauRecTools/TauCommonCalcVars.h           |  7 +-
 .../tauRecTools/TauEleOLRDecorator.h          |  6 +-
 .../tauRecTools/TauGenericPi0Cone.h           |  7 +-
 .../tauRecTools/TauIDPileupCorrection.h       |  7 +-
 .../tauRecTools/TauIDVarCalculator.h          |  7 +-
 .../tauRecTools/TauJetBDTEvaluator.h          |  6 +-
 .../tauRecTools/TauPi0ClusterScaler.h         |  6 +-
 .../tauRecTools/TauPi0ScoreCalculator.h       |  6 +-
 .../tauRecTools/tauRecTools/TauPi0Selector.h  |  6 +-
 .../tauRecTools/tauRecTools/TauRecToolBase.h  |  1 -
 .../tauRecTools/TauSubstructureVariables.h    |  6 +-
 .../tauRecTools/TauTrackClassifier.h          | 12 +++-
 .../tauRecTools/tauRecTools/TauTrackFilter.h  |  6 +-
 .../tauRecTools/tauRecTools/TauWPDecorator.h  |  6 +-
 46 files changed, 327 insertions(+), 163 deletions(-)

diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/PanTauProcessor.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/PanTauProcessor.h
index c878746efc7d..450a29a461a9 100644
--- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/PanTauProcessor.h
+++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/PanTauProcessor.h
@@ -54,10 +54,14 @@ namespace PanTau
        PanTauProcessor(const std::string& name);
        ~PanTauProcessor();
 
-       virtual StatusCode          initialize();
-       virtual StatusCode          finalize();
-       virtual StatusCode          execute(xAOD::TauJet& pTau);
-       virtual StatusCode          executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+       virtual StatusCode initialize();
+       virtual StatusCode finalize();
+       virtual StatusCode execute(xAOD::TauJet& pTau);
+       virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+       virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+       virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+       virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+       virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
        virtual StatusCode eventInitialize();
        virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
index 585dc25e556d..293efbb4d853 100644
--- a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
+++ b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
@@ -375,20 +375,12 @@ def getPi0ClusterFinder():
     
     if _name in cached_instances:
         return cached_instances[_name]
-    
-    from CaloRec.CaloRecConf import CaloCellContainerFinalizerTool
-    TauCellContainerFinalizer = CaloCellContainerFinalizerTool(name=sPrefix+'tauPi0CellContainerFinalizer')
-    
-    from AthenaCommon.AppMgr import ToolSvc
-    ToolSvc += TauCellContainerFinalizer
-    
+
     from tauRecTools.tauRecToolsConf import TauPi0CreateROI
     TauPi0CreateROI = TauPi0CreateROI(name = _name,
                                       #        CaloWeightTool = getCellWeightTool(),
                                       #        ExtrapolateToCaloTool = getExtrapolateToCaloTool(),
-                                      CellMakerTool = TauCellContainerFinalizer,
-                                      Key_caloCellInputContainer="AllCalo", 
-                                      Key_tauCaloOutputContainer="TauCommonPi0Cells"
+                                      Key_caloCellInputContainer="AllCalo"
                                       )
     
     cached_instances[_name] = TauPi0CreateROI
@@ -501,8 +493,7 @@ def getTauShotFinder():
                                   MinPtCut              = shotPtCut_1Photon,
                                   AutoDoubleShotCut     = shotPtCut_2Photons,
                                   MergedBDTScoreCut     = (-9999999.,-9999999.,-9999999.,-9999999.,-9999999.),
-                                  Key_caloCellInputContainer="AllCalo",
-                                  Key_tauPFOOutputContainer="TauShotParticleFlowObjects"
+                                  Key_caloCellInputContainer="AllCalo"
                                   )
     cached_instances[_name] = TauShotFinder
     return TauShotFinder
diff --git a/Reconstruction/tauRec/python/TauRecBuilder.py b/Reconstruction/tauRec/python/TauRecBuilder.py
index 1289f131d318..84155b0f1d31 100644
--- a/Reconstruction/tauRec/python/TauRecBuilder.py
+++ b/Reconstruction/tauRec/python/TauRecBuilder.py
@@ -142,53 +142,53 @@ class TauRecCoreBuilder ( TauRecConfigured ) :
                 
             ### TauRecPi0EflowProcessor ###
             # Tools in this section were originally in TauRecPi0EflowProcessor
-            if self.doPi0Clus: tools.append(taualgs.getPi0ClusterCreator())
-
+            # if self.doPi0Clus: tools.append(taualgs.getPi0ClusterCreator())
+            
             ###############################
 
             ### TauRecVariablesProcessor ###
             # Tools in this section were originally in TauRecVariablesProcessor
-            if InDetFlags.doVertexFinding():
-                tools.append(taualgs.getTauVertexVariables())
+            #if InDetFlags.doVertexFinding():
+             #   tools.append(taualgs.getTauVertexVariables())
             
-            tools.append(taualgs.getTauCommonCalcVars())
-            tools.append(taualgs.getTauSubstructure())
+            #tools.append(taualgs.getTauCommonCalcVars())
+            #tools.append(taualgs.getTauSubstructure())
 
-            if self.doPi0Clus: 
-                tools.append(taualgs.getPi0ClusterScaler())
-                tools.append(taualgs.getPi0ScoreCalculator())
+            #if self.doPi0Clus: 
+             #   tools.append(taualgs.getPi0ClusterScaler())
+              #  tools.append(taualgs.getPi0ScoreCalculator())
                 # SWITCHED OFF SELECTOR< SINCE NO CHARGED PFOS AVAILABLE ATM
-                tools.append(taualgs.getPi0Selector())
+               # tools.append(taualgs.getPi0Selector())
 
-            tools.append(taualgs.getEnergyCalibrationLC(correctEnergy=False, correctAxis=True, postfix='_onlyAxis'))
+            #tools.append(taualgs.getEnergyCalibrationLC(correctEnergy=False, correctAxis=True, postfix='_onlyAxis'))
 
             # PanTau:
-            if tauFlags.doPanTau() :
-                import PanTauAlgs.JobOptions_Main_PanTau as pantau
-                tools.append(pantau.getPanTau())
+            #if tauFlags.doPanTau() :
+             #   import PanTauAlgs.JobOptions_Main_PanTau as pantau
+              #  tools.append(pantau.getPanTau())
  
             # these tools need pantau info
-            tools.append(taualgs.getCombinedP4FromRecoTaus())
-            tools.append(taualgs.getMvaTESVariableDecorator())
-            tools.append(taualgs.getMvaTESEvaluator())
-
-            if tauFlags.doRunTauDiscriminant():
-                tools.append(taualgs.getTauIDVarCalculator())
-                tools.append(taualgs.getTauJetBDTEvaluator("TauJetBDT1P", weightsFile="vars2016_pt_gamma_1p_isofix.root", minNTracks=0, maxNTracks=1)) #update config?
-                tools.append(taualgs.getTauJetBDTEvaluator("TauJetBDT3P", weightsFile="vars2016_pt_gamma_3p_isofix.root", minNTracks=2, maxNTracks=1000)) #update config?
-                tools.append(taualgs.getTauWPDecoratorJetBDT())
-                tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_def", weightsFile="", outputVarName="BDTEleScore"))#just inits values
-                tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_bar", 
-                                                           weightsFile="EleBDT1PBar.root", minNTracks=1, maxAbsTrackEta=1.37, 
-                                                           outputVarName="BDTEleScore")) #update config?
-                tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_end1", 
-                                                           weightsFile="EleBDT1PEnd1.root", minNTracks=1, minAbsTrackEta=1.37, 
-                                                           maxAbsTrackEta=2.0, outputVarName="BDTEleScore")) #update config?
-                tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_end23", 
-                                                           weightsFile="EleBDT1PEnd23.root", minNTracks=1, minAbsTrackEta=2.0, 
-                                                           maxAbsTrackEta=3.0, outputVarName="BDTEleScore")) #update config?
-                tools.append(taualgs.getTauWPDecoratorEleBDT())
-                tools.append(taualgs.getTauEleOLRDecorator())
+            #tools.append(taualgs.getCombinedP4FromRecoTaus())
+            #tools.append(taualgs.getMvaTESVariableDecorator())
+            #tools.append(taualgs.getMvaTESEvaluator())
+
+            #if tauFlags.doRunTauDiscriminant():
+                #tools.append(taualgs.getTauIDVarCalculator())
+                #tools.append(taualgs.getTauJetBDTEvaluator("TauJetBDT1P", weightsFile="vars2016_pt_gamma_1p_isofix.root", minNTracks=0, maxNTracks=1)) #update config?
+                #tools.append(taualgs.getTauJetBDTEvaluator("TauJetBDT3P", weightsFile="vars2016_pt_gamma_3p_isofix.root", minNTracks=2, maxNTracks=1000)) #update config?
+                #tools.append(taualgs.getTauWPDecoratorJetBDT())
+                #tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_def", weightsFile="", outputVarName="BDTEleScore"))#just inits values
+                #tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_bar", 
+                 #                                          weightsFile="EleBDT1PBar.root", minNTracks=1, maxAbsTrackEta=1.37, 
+                  #                                         outputVarName="BDTEleScore")) #update config?
+                #tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_end1", 
+                 #                                          weightsFile="EleBDT1PEnd1.root", minNTracks=1, minAbsTrackEta=1.37, 
+                  #                                         maxAbsTrackEta=2.0, outputVarName="BDTEleScore")) #update config?
+                #tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_end23", 
+                 #                                          weightsFile="EleBDT1PEnd23.root", minNTracks=1, minAbsTrackEta=2.0, 
+                  #                                         maxAbsTrackEta=3.0, outputVarName="BDTEleScore")) #update config?
+                #tools.append(taualgs.getTauWPDecoratorEleBDT())
+                #tools.append(taualgs.getTauEleOLRDecorator())
                 
             
             ################################
diff --git a/Reconstruction/tauRec/python/TauRecConfigured.py b/Reconstruction/tauRec/python/TauRecConfigured.py
index a8d97758a721..2598cf77d713 100644
--- a/Reconstruction/tauRec/python/TauRecConfigured.py
+++ b/Reconstruction/tauRec/python/TauRecConfigured.py
@@ -30,33 +30,57 @@ class TauRecConfigured ( Configured ) :
         self.msglevel = msglevel
         from tauRec.tauRecConf import TauProcessorAlg 
         from tauRec.tauRecFlags import tauFlags
+        from CaloRec.CaloRecConf import CaloCellContainerFinalizerTool
+        # add calo cell finalizer tool
+        TauCellContainerFinalizer = CaloCellContainerFinalizerTool(name='tauRec_tauPi0CellContainerFinalizer')
+        from AthenaCommon.AppMgr import ToolSvc
+        ToolSvc += TauCellContainerFinalizer
+
         self._TauProcessorAlgHandle = TauProcessorAlg ( name=self.name+'Alg',
                                                         Key_jetInputContainer="AntiKt4LCTopoJets",
-                                                        Key_tauOutputContainer="TauJets",
+                                                        Key_tauOutputContainer="tmp_TauJets",
                                                         Key_tauTrackOutputContainer="TauTracks",
+                                                        Key_tauShotClusOutputContainer="TauShotClusters",
+                                                        Key_tauShotPFOOutputContainer="TauShotParticleFlowObjects",
+                                                        Key_tauPi0CellOutputContainer="TauCommonPi0Cells",
                                                         #MaxEta = 2.5,                                                                         
                                                         MaxEta = tauFlags.tauRecSeedMaxEta(),
                                                         MinPt = 10.*GeV,
-                                                        doCreateTauContainers = True)
+                                                        doCreateTauContainers = True,
+                                                        CellMakerTool = TauCellContainerFinalizer)
 
         Configured.__init__(self, ignoreExistingDataObject=ignoreExistingDataObject)
 
 
     def WrapTauRecToolExecHandle(self, tool=None ):
+        print "WrapToolsNone"
+
         self.TauProcessorAlgHandle().Tools = tool
         #self.TauProcessorAlgHandle().name = tool.name+'Alg'
         from AthenaCommon.AlgSequence import AlgSequence
 
         topSequence = AlgSequence()
 
+        from AthenaCommon.AlgScheduler import AlgScheduler
+        AlgScheduler.ShowDataDependencies(True)
+        AlgScheduler.ShowControlFlow(True)
+        
         from SGComps.SGCompsConf import SGInputLoader
         # not needed? There by default now?
         topSequence += SGInputLoader()
         topSequence.SGInputLoader.Load = [ ('xAOD::JetContainer','AntiKt4LCTopoJets'), ('xAOD::VertexContainer', 'PrimaryVertices'),
                                            ('xAOD::TrackParticleContainer','InDetTrackParticles'), ('CaloCellContainer','AllCalo') ]
+
         topSequence += self.TauProcessorAlgHandle()
 
+        # separate algorithm, from CaloRec
+        #if self.doPi0Clus:
+        #    import tauRec.Pi0ClusterMakerHolder as pi0alg
+        #    topSequence += pi0alg.getTauPi0ClusterMaker()
+
+
     def WrapTauRecToolExecHandles(self, tools=[]):
+
         self.TauProcessorAlgHandle().Tools = tools
         for tool in tools:
             self.TauProcessorAlghandle().tool.getFullName = tool
@@ -69,6 +93,7 @@ class TauRecConfigured ( Configured ) :
         topSequence += SGInputLoader(OutputLevel=INFO)
         topSequence.SGInputLoader.Load = [ ('xAOD::JetContainer','AntiKt4LCTopoJets'), ('xAOD::VertexContainer', 'PrimaryVertices'),
                                            ('xAOD::TrackParticleContainer','InDetTrackParticles'), ('CaloCellContainer','AllCalo') ]
+
         topSequence += self.TauProcessorAlgHandle()
 
 
diff --git a/Reconstruction/tauRec/share/run_tau_standalone.py b/Reconstruction/tauRec/share/run_tau_standalone.py
index 66f34c6e051c..959074d07d09 100644
--- a/Reconstruction/tauRec/share/run_tau_standalone.py
+++ b/Reconstruction/tauRec/share/run_tau_standalone.py
@@ -106,9 +106,11 @@ from tauRec.TauRecBuilder import TauRecCoreBuilder
 TauRecCoreBuilder(doPi0Clus=_doPi0Clus, doTJVA=_doTJVA)
 
 #include("tauRec/Pi0ClusterMaker_Crakow_jobOptions.py")
-#if _doPi0Clus:
-#    include("tauRec/Pi0ClusterMaker_jobOptions.py")
+if _doPi0Clus:
+   include("tauRec/Pi0ClusterMaker_jobOptions.py")
 
+from tauRec.TauRecRunner import TauRecRunner
+TauRecRunner(doPi0Clus=_doPi0Clus, doTJVA=_doTJVA)
 
 # minimal set of job options to run tau reco on an ESD file
 # uses main TauRecRunner script
diff --git a/Reconstruction/tauRec/share/tauRec_jobOptions.py b/Reconstruction/tauRec/share/tauRec_jobOptions.py
index d476ad5ea9c1..1e02637f27e5 100644
--- a/Reconstruction/tauRec/share/tauRec_jobOptions.py
+++ b/Reconstruction/tauRec/share/tauRec_jobOptions.py
@@ -32,8 +32,11 @@ TauRecCoreBuilder(doPi0Clus=_doPi0Clus, doTJVA=_doTJVA)
 if _doPi0Clus:
     include("tauRec/Pi0ClusterMaker_jobOptions.py")
 
-#from tauRec.TauRecBuilder import TauRecPi0EflowProcessor
-#TauRecPi0EflowProcessor(doPi0Clus=_doPi0Clus)
+from tauRec.TauRecBuilder import TauRecPi0EflowProcessor
+TauRecPi0EflowProcessor(doPi0Clus=_doPi0Clus)
+
+from tauRec.TauRecRunner import TauRecRunner
+TauRecRunner(doPi0Clus=_doPi0Clus, doTJVA=_doTJVA)
 
 #from tauRec.TauRecBuilder import TauRecVariablesProcessor
 #TauRecVariablesProcessor(doPi0Clus=_doPi0Clus)
diff --git a/Reconstruction/tauRec/src/TauProcessorAlg.cxx b/Reconstruction/tauRec/src/TauProcessorAlg.cxx
index 8f50e80dc3b7..ad3fb9329f17 100644
--- a/Reconstruction/tauRec/src/TauProcessorAlg.cxx
+++ b/Reconstruction/tauRec/src/TauProcessorAlg.cxx
@@ -19,6 +19,8 @@
 #include "StoreGate/ReadHandle.h"
 #include "StoreGate/WriteHandle.h"
 
+#include "CaloInterface/ICaloCellMakerTool.h"
+#include "NavFourMom/INavigable4MomentumCollection.h"
 
 //-----------------------------------------------------------------------------
 // Constructor
@@ -30,12 +32,14 @@ m_tools(this), //make tools private
 m_maxEta(2.5),
 m_minPt(10000),
 m_doCreateTauContainers(false),
-m_data()
+m_data(),
+m_cellMakerTool("")
 {
   declareProperty("Tools", m_tools);
   declareProperty("MaxEta", m_maxEta);
   declareProperty("MinPt", m_minPt);
   declareProperty("doCreateTauContainers", m_doCreateTauContainers);
+  declareProperty("CellMakerTool", m_cellMakerTool);
 }
 
 //-----------------------------------------------------------------------------
@@ -51,6 +55,7 @@ StatusCode TauProcessorAlg::initialize() {
 
 
     //ATH_MSG_INFO("FF::TauProcessorAlg :: initialize()");
+  CHECK( m_cellMakerTool.retrieve() );
 
     //-------------------------------------------------------------------------
     // No tools allocated!
@@ -99,6 +104,8 @@ StatusCode TauProcessorAlg::initialize() {
     ATH_CHECK( m_tauOutputContainer.initialize() );
     ATH_CHECK( m_tauTrackOutputContainer.initialize() );
     ATH_CHECK( m_tauShotClusOutputContainer.initialize() );
+    ATH_CHECK( m_tauShotPFOOutputContainer.initialize() );
+    ATH_CHECK( m_tauPi0CellOutputContainer.initialize() );
 
     return StatusCode::SUCCESS;
 }
@@ -163,7 +170,6 @@ StatusCode TauProcessorAlg::execute() {
       pTauTrackAuxCont = new xAOD::TauTrackAuxContainer();
       pTauTrackCont->setStore( pTauTrackAuxCont );
 
-
     } else {
       //-------------------------------------------------------------------------                                             
       // retrieve Tau Containers from StoreGate                                                                                     
@@ -208,6 +214,18 @@ StatusCode TauProcessorAlg::execute() {
     ATH_MSG_DEBUG("  write: " << tauShotClusHandle.key() << " = " << "..." );
     ATH_CHECK(tauShotClusHandle.record(std::unique_ptr<xAOD::CaloClusterContainer>{tauShotClusContainer}, std::unique_ptr<xAOD::CaloClusterAuxContainer>{tauShotClusAuxStore}));
 
+    SG::WriteHandle<xAOD::PFOContainer> tauShotPFOHandle( m_tauShotPFOOutputContainer );
+    xAOD::PFOContainer* tauShotPFOContainer = new xAOD::PFOContainer();
+    xAOD::PFOAuxContainer* tauShotPFOAuxStore = new xAOD::PFOAuxContainer();
+    tauShotPFOContainer->setStore(tauShotPFOAuxStore);
+    ATH_MSG_DEBUG("  write: " << tauShotPFOHandle.key() << " = " << "..." );
+    ATH_CHECK(tauShotPFOHandle.record(std::unique_ptr<xAOD::PFOContainer>{tauShotPFOContainer}, std::unique_ptr<xAOD::PFOAuxContainer>{tauShotPFOAuxStore}));
+
+    SG::WriteHandle<CaloCellContainer> tauPi0CellHandle( m_tauPi0CellOutputContainer );
+    CaloCellContainer* Pi0CellContainer = new CaloCellContainer();
+    ATH_MSG_DEBUG("  write: " << tauPi0CellHandle.key() << " = " << "..." );
+    ATH_CHECK(tauPi0CellHandle.record(std::unique_ptr<CaloCellContainer>(Pi0CellContainer)));
+
     //---------------------------------------------------------------------                                                        
     // Loop over seeds
     //---------------------------------------------------------------------                                                 
@@ -249,7 +267,11 @@ StatusCode TauProcessorAlg::execute() {
 	ATH_MSG_INFO("ProcessorAlg Invoking tool " << (*itT)->name());
 	
 	if ( (*itT)->name().find("ShotFinder") != std::string::npos){
-	  sc = (*itT)->executeCaloClus(*pTau, *tauShotClusContainer);
+	  sc = (*itT)->executeShotFinder(*pTau, *tauShotClusContainer, *tauShotPFOContainer);
+	}
+	else if ( (*itT)->name().find("Pi0CreateROI") != std::string::npos){
+	  ATH_MSG_INFO("EXEC PI0CREATEROI");
+	  sc = (*itT)->executePi0CreateROI(*pTau, *Pi0CellContainer);
 	}
 	else {
 	  sc = (*itT)->execute(*pTau);
@@ -292,6 +314,14 @@ StatusCode TauProcessorAlg::execute() {
 	return StatusCode::FAILURE;
     }
 
+    // Check this is needed for the cell container?
+    // symlink as INavigable4MomentumCollection (as in CaloRec/CaloCellMaker)
+    ATH_CHECK(evtStore()->symLink(Pi0CellContainer, static_cast<INavigable4MomentumCollection*> (0)));
+    //---------------------------------------------------------------------
+    // use the m_cellMakerTool to finalize the custom CaloCellContainer
+    //---------------------------------------------------------------------
+    CHECK( m_cellMakerTool->process(static_cast<CaloCellContainer*> (Pi0CellContainer)) );
+
 
   if (sc.isSuccess()) {
     ATH_MSG_VERBOSE("The tau candidate container has been modified");
diff --git a/Reconstruction/tauRec/tauRec/TauProcessorAlg.h b/Reconstruction/tauRec/tauRec/TauProcessorAlg.h
index 1145e173d4aa..e196ff416664 100644
--- a/Reconstruction/tauRec/tauRec/TauProcessorAlg.h
+++ b/Reconstruction/tauRec/tauRec/TauProcessorAlg.h
@@ -26,6 +26,8 @@
  * @brief       Main class for tau candidate processing.
  */
 
+class ICaloCellMakerTool;
+
 class TauProcessorAlg: public AthAlgorithm
 {
     public:
@@ -57,10 +59,16 @@ class TauProcessorAlg: public AthAlgorithm
         //ToolHandleArray<ITauToolExecBase>  m_tools;
 	TauEventData m_data;
 
+	/** @brief tool handles */
+	ToolHandle<ICaloCellMakerTool> m_cellMakerTool;
+
 	SG::ReadHandleKey<xAOD::JetContainer> m_jetInputContainer{this,"Key_jetInputContainer","AntiKt4LCTopoJets","input jet key"};
-	SG::WriteHandleKey<xAOD::TauJetContainer> m_tauOutputContainer{this,"Key_tauOutputContainer","TauJets","output tau data key"};
+	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<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"};
+
 	
 };
 
diff --git a/Reconstruction/tauRecTools/src/JetSeedBuilder.h b/Reconstruction/tauRecTools/src/JetSeedBuilder.h
index 204fb5836dff..7b00ba957209 100644
--- a/Reconstruction/tauRecTools/src/JetSeedBuilder.h
+++ b/Reconstruction/tauRecTools/src/JetSeedBuilder.h
@@ -41,7 +41,11 @@ public:
     virtual void print() const ;
 
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }  
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual StatusCode eventFinalize();
 
diff --git a/Reconstruction/tauRecTools/src/LockTauContainers.h b/Reconstruction/tauRecTools/src/LockTauContainers.h
index 1b2b38299322..3e3b6dc0e33c 100644
--- a/Reconstruction/tauRecTools/src/LockTauContainers.h
+++ b/Reconstruction/tauRecTools/src/LockTauContainers.h
@@ -25,7 +25,11 @@ class LockTauContainers : public TauRecToolBase
         virtual StatusCode initialize();
         virtual StatusCode finalize();  
         virtual StatusCode execute(xAOD::TauJet&)      { return StatusCode::SUCCESS; }
-	virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
         virtual StatusCode eventFinalize();
 	virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
 
diff --git a/Reconstruction/tauRecTools/src/PhotonConversionPID.h b/Reconstruction/tauRecTools/src/PhotonConversionPID.h
index 359b06219626..8150ab6d2c2c 100644
--- a/Reconstruction/tauRecTools/src/PhotonConversionPID.h
+++ b/Reconstruction/tauRecTools/src/PhotonConversionPID.h
@@ -33,7 +33,11 @@ public:
     virtual StatusCode finalize();
     virtual StatusCode eventFinalize();
     virtual StatusCode execute(xAOD::TauJet&) { return StatusCode::SUCCESS; }
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
 
     virtual void print() const { }
diff --git a/Reconstruction/tauRecTools/src/PhotonConversionVertex.h b/Reconstruction/tauRecTools/src/PhotonConversionVertex.h
index 42fcb7fc60fd..0e61a3ea3df2 100644
--- a/Reconstruction/tauRecTools/src/PhotonConversionVertex.h
+++ b/Reconstruction/tauRecTools/src/PhotonConversionVertex.h
@@ -45,10 +45,14 @@ public:
     //-------------------------------------------------------------
     virtual StatusCode initialize();
     virtual StatusCode finalize();
+    virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize();
     virtual StatusCode execute(xAOD::TauJet&) { return StatusCode::SUCCESS; }
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
-    virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual void print() const { }
 
diff --git a/Reconstruction/tauRecTools/src/TauAxisSetter.h b/Reconstruction/tauRecTools/src/TauAxisSetter.h
index d29e80bdf85a..f390b435db43 100644
--- a/Reconstruction/tauRecTools/src/TauAxisSetter.h
+++ b/Reconstruction/tauRecTools/src/TauAxisSetter.h
@@ -31,11 +31,16 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode eventInitialize();
     virtual StatusCode finalize();
+    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual void print() const { }
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
+
 
 
 private:
diff --git a/Reconstruction/tauRecTools/src/TauCalibrateEM.h b/Reconstruction/tauRecTools/src/TauCalibrateEM.h
index 44bcc86370e4..d1c2d00472e9 100644
--- a/Reconstruction/tauRecTools/src/TauCalibrateEM.h
+++ b/Reconstruction/tauRecTools/src/TauCalibrateEM.h
@@ -19,7 +19,11 @@ public:
 
     virtual StatusCode initialize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual StatusCode finalize();
 
diff --git a/Reconstruction/tauRecTools/src/TauCellVariables.h b/Reconstruction/tauRecTools/src/TauCellVariables.h
index ecc43bca64cd..7341b28caf70 100644
--- a/Reconstruction/tauRecTools/src/TauCellVariables.h
+++ b/Reconstruction/tauRecTools/src/TauCellVariables.h
@@ -26,11 +26,16 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize();
+    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual void print() const { }
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
+
 
 private:
     double m_cellEthr;  //!< EM cell E threshold
diff --git a/Reconstruction/tauRecTools/src/TauConversionFinder.h b/Reconstruction/tauRecTools/src/TauConversionFinder.h
index 9b9f93c23890..526c30d8e841 100644
--- a/Reconstruction/tauRecTools/src/TauConversionFinder.h
+++ b/Reconstruction/tauRecTools/src/TauConversionFinder.h
@@ -31,7 +31,12 @@ public:
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode execute(xAOD::TauJet&) { return StatusCode::SUCCESS; }
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+
 
     virtual void print() const { }
 
diff --git a/Reconstruction/tauRecTools/src/TauConversionTagger.h b/Reconstruction/tauRecTools/src/TauConversionTagger.h
index a144886d29ea..4fb6c76f72e9 100644
--- a/Reconstruction/tauRecTools/src/TauConversionTagger.h
+++ b/Reconstruction/tauRecTools/src/TauConversionTagger.h
@@ -32,7 +32,11 @@ public:
 
     virtual StatusCode initialize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
index deda7872167e..de9a0ffc76b8 100644
--- a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
+++ b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
@@ -28,7 +28,11 @@ public:
 
     virtual ~TauElectronVetoVariables();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize();
diff --git a/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h b/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h
index 93a88ef2302e..631dcffa3690 100644
--- a/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h
+++ b/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h
@@ -30,7 +30,11 @@ public:
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize();
 
     virtual void print() const { }
diff --git a/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx b/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx
index 1740af89d440..19e24691a079 100644
--- a/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx
+++ b/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx
@@ -17,7 +17,6 @@
 //#include "CaloEvent/CaloCellContainer.h"
 //#include "CaloIdentifier/CaloCell_ID.h"
 #include "CaloUtils/CaloCellList.h"
-#include "CaloInterface/ICaloCellMakerTool.h"
 
 //#include "AthContainers/OwnershipPolicy.h"
 #include "NavFourMom/INavigable4MomentumCollection.h"
@@ -35,12 +34,9 @@ using std::string;
 
 TauPi0CreateROI::TauPi0CreateROI(   const string& name ) :
      TauRecToolBase(name)
-    , m_cellMakerTool("")
     , m_calo_dd_man(NULL)
     , m_calo_id(NULL)
-    , m_pPi0CellContainer(NULL)
 {
-    declareProperty("CellMakerTool", m_cellMakerTool);
 }
    
 //-------------------------------------------------------------------------
@@ -54,14 +50,12 @@ StatusCode TauPi0CreateROI::initialize() {
     
     // retrieve tools
     ATH_MSG_DEBUG( "Retrieving tools" );
-    CHECK( m_cellMakerTool.retrieve() );
     
     // initialize calo cell geo
     m_calo_dd_man  = CaloDetDescrManager::instance();
     m_calo_id      = m_calo_dd_man->getCaloCell_ID();
 
     ATH_CHECK( m_caloCellInputContainer.initialize() );
-    ATH_CHECK( m_tauCaloOutputContainer.initialize() );
 
     return StatusCode::SUCCESS;
 }
@@ -85,15 +79,10 @@ StatusCode TauPi0CreateROI::eventInitialize() {
         m_addedCellsMap.push_back(NULL);
     }
 
-    //---------------------------------------------------------------------
-    // Create CustomCellContainer and register in StoreGate
-    //---------------------------------------------------------------------
-    m_pPi0CellContainer = new CaloCellContainer();
-
     return StatusCode::SUCCESS;
 }
 
-StatusCode TauPi0CreateROI::execute(xAOD::TauJet& pTau) {
+StatusCode TauPi0CreateROI::executePi0CreateROI(xAOD::TauJet& pTau, CaloCellContainer& pPi0CellContainer) {
 
     //---------------------------------------------------------------------
     // only run on 1-5 prong taus 
@@ -134,7 +123,7 @@ StatusCode TauPi0CreateROI::execute(xAOD::TauJet& pTau) {
         if(samp>7) continue;
 
         // Store cell in output container
-        storeCell(cell);
+        storeCell(cell, pPi0CellContainer);
     }
 
     return StatusCode::SUCCESS;
@@ -142,22 +131,6 @@ StatusCode TauPi0CreateROI::execute(xAOD::TauJet& pTau) {
 
 StatusCode TauPi0CreateROI::eventFinalize() {
 
-  // Declare write handle
-  SG::WriteHandle<CaloCellContainer> tauCaloHandle( m_tauCaloOutputContainer );
-  ATH_MSG_DEBUG("  write: " << tauCaloHandle.key() << " = " << "..." );
-
-  // Write completed cell container
-  ATH_CHECK(tauCaloHandle.record(std::unique_ptr<CaloCellContainer>(m_pPi0CellContainer)));
-
-  // here or event initialize?
-  // symlink as INavigable4MomentumCollection (as in CaloRec/CaloCellMaker)
-  ATH_CHECK(evtStore()->symLink(m_pPi0CellContainer, static_cast<INavigable4MomentumCollection*> (0)));
-
-  //---------------------------------------------------------------------
-  // use the m_cellMakerTool to finalize the custom CaloCellContainer
-  //---------------------------------------------------------------------
-  CHECK( m_cellMakerTool->process(static_cast<CaloCellContainer*> (m_pPi0CellContainer)) );
-
   return StatusCode::SUCCESS;
 }
 
@@ -165,7 +138,7 @@ StatusCode TauPi0CreateROI::finalize() {
     return StatusCode::SUCCESS;
 }
 
-void TauPi0CreateROI::storeCell(const CaloCell* cell){
+void TauPi0CreateROI::storeCell(const CaloCell* cell, CaloCellContainer& cellContainer){
     // Store cell in output container if it is a new cell
     // Produce a copy of the cell, in order to prevent 
     // the energy of the original cell to be changed. 
@@ -178,7 +151,7 @@ void TauPi0CreateROI::storeCell(const CaloCell* cell){
 
     if(isNewCell){
         CaloCell* copyCell = cell->clone();
-        m_pPi0CellContainer->push_back(copyCell);
+        cellContainer.push_back(copyCell);
         m_addedCellsMap[cellHash] = copyCell;
     }
 }
diff --git a/Reconstruction/tauRecTools/src/TauPi0CreateROI.h b/Reconstruction/tauRecTools/src/TauPi0CreateROI.h
index 5e037e15e63f..2680ca3c6176 100644
--- a/Reconstruction/tauRecTools/src/TauPi0CreateROI.h
+++ b/Reconstruction/tauRecTools/src/TauPi0CreateROI.h
@@ -16,8 +16,6 @@
 
 #include "xAODTau/TauJet.h"
 
-class ICaloCellMakerTool;
-
 /**
  * @brief Create ROIs for the Pi0 finder.
  * 
@@ -34,8 +32,12 @@ public:
 
     virtual StatusCode initialize();
     virtual StatusCode eventInitialize();
-    virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode execute(xAOD::TauJet&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet& pTau, CaloCellContainer& Pi0CellContainer);
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize();
     virtual StatusCode finalize();
 
@@ -45,10 +47,7 @@ public:
 private:
 
     /** @brief store cell in output container */ 
-    void storeCell(const CaloCell* /* cell*/);
-
-    /** @brief tool handles */
-    ToolHandle<ICaloCellMakerTool> m_cellMakerTool;
+    void storeCell(const CaloCell* /* cell*/, CaloCellContainer& cellContainer);
 
     /** @brief calo cell navigation */
     const CaloDetDescrManager* m_calo_dd_man;
@@ -61,7 +60,6 @@ private:
     std::vector<CaloCell*> m_addedCellsMap;
 
     SG::ReadHandleKey<CaloCellContainer> m_caloCellInputContainer{this,"Key_caloCellInputContainer", "AllCalo", "input vertex container key"};
-    SG::WriteHandleKey<CaloCellContainer> m_tauCaloOutputContainer{this,"Key_tauCaloOutputContainer","TauCommonPi0Cells","output calo cell key"};
 
 };
 
diff --git a/Reconstruction/tauRecTools/src/TauShotFinder.cxx b/Reconstruction/tauRecTools/src/TauShotFinder.cxx
index 05f3c1b5db11..4e36d847130a 100644
--- a/Reconstruction/tauRecTools/src/TauShotFinder.cxx
+++ b/Reconstruction/tauRecTools/src/TauShotFinder.cxx
@@ -42,8 +42,6 @@ using std::string;
 TauShotFinder::TauShotFinder(   const string& name ) :
     TauRecToolBase(name)
     , m_caloWeightTool("H1WeightToolCSC12Generic")
-    , m_PFOShotContainer(0)
-    , m_PFOShotAuxStore(0)
     , m_calo_dd_man(NULL)
     , m_calo_id(NULL)
     , m_pt1(0)
@@ -75,7 +73,6 @@ StatusCode TauShotFinder::initialize() {
     CHECK( m_caloWeightTool.retrieve() );
 
     ATH_CHECK( m_caloCellInputContainer.initialize() );
-    ATH_CHECK( m_tauPFOOutputContainer.initialize() );
 
     // initialize calo cell geo
     m_calo_dd_man  = CaloDetDescrManager::instance();
@@ -126,21 +123,11 @@ StatusCode TauShotFinder::finalize()
 }
 
 StatusCode TauShotFinder::eventInitialize() {
-
-  // Shot cluster container created in TauProcessorAlg    
-
-  //---------------------------------------------------------------------
-  // Create Shot PFO container
-  //---------------------------------------------------------------------
-  m_PFOShotContainer = new xAOD::PFOContainer();
-  m_PFOShotAuxStore = new xAOD::PFOAuxContainer();
-  m_PFOShotContainer->setStore(m_PFOShotAuxStore); 
-
   return StatusCode::SUCCESS;
-
 }
 
-StatusCode TauShotFinder::executeCaloClus(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotClusterContainer) {
+StatusCode TauShotFinder::executeShotFinder(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotClusterContainer,
+					    xAOD::PFOContainer& tauShotPFOContainer) {
 
     // Any tau needs to have shot PFO vectors. Set empty vectors before nTrack cut
     vector<ElementLink<xAOD::PFOContainer> > empty;
@@ -278,11 +265,11 @@ StatusCode TauShotFinder::executeCaloClus(xAOD::TauJet& pTau, xAOD::CaloClusterC
         
         // create shot PFO and store it in output container
         xAOD::PFO* shot = new xAOD::PFO();
-        m_PFOShotContainer->push_back( shot );
+        tauShotPFOContainer.push_back( shot );
 
         // Create element link from tau to shot
         ElementLink<xAOD::PFOContainer> PFOElementLink;
-        PFOElementLink.toContainedElement( *m_PFOShotContainer, shot );
+        PFOElementLink.toContainedElement( tauShotPFOContainer, shot );
         pTau.addShotPFOLink( PFOElementLink );
        
         if( mergePhi ){
@@ -415,11 +402,6 @@ StatusCode TauShotFinder::executeCaloClus(xAOD::TauJet& pTau, xAOD::CaloClusterC
 }
 
 StatusCode TauShotFinder::eventFinalize() {
-    
-  SG::WriteHandle<xAOD::PFOContainer> tauPFOHandle( m_tauPFOOutputContainer );
-  ATH_MSG_DEBUG("  write: " << tauPFOHandle.key() << " = " << "..." );
-  ATH_CHECK(tauPFOHandle.record(std::unique_ptr<xAOD::PFOContainer>{m_PFOShotContainer}, std::unique_ptr<xAOD::PFOAuxContainer>{m_PFOShotAuxStore}));
-
   return StatusCode::SUCCESS;
 }
 
diff --git a/Reconstruction/tauRecTools/src/TauShotFinder.h b/Reconstruction/tauRecTools/src/TauShotFinder.h
index 216a7fc1cfd8..6bd2914b1220 100644
--- a/Reconstruction/tauRecTools/src/TauShotFinder.h
+++ b/Reconstruction/tauRecTools/src/TauShotFinder.h
@@ -42,7 +42,11 @@ public:
 
     virtual StatusCode initialize();
     virtual StatusCode eventInitialize();
-    virtual StatusCode executeCaloClus(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotClusterContainer);
+    virtual StatusCode executeShotFinder(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotCaloClusContainer, xAOD::PFOContainer& tauShotPFOContainer);
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode execute(xAOD::TauJet&){ return StatusCode::SUCCESS; };
     virtual StatusCode eventFinalize();
     virtual StatusCode finalize();
diff --git a/Reconstruction/tauRecTools/src/TauTestDump.h b/Reconstruction/tauRecTools/src/TauTestDump.h
index 87b30667e760..81595a876842 100644
--- a/Reconstruction/tauRecTools/src/TauTestDump.h
+++ b/Reconstruction/tauRecTools/src/TauTestDump.h
@@ -27,7 +27,11 @@ public:
     
     virtual StatusCode initialize();                 
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode finalize();  
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/src/TauTrackFinder.h b/Reconstruction/tauRecTools/src/TauTrackFinder.h
index 4163bcf66c46..c63eca1ec9d3 100644
--- a/Reconstruction/tauRecTools/src/TauTrackFinder.h
+++ b/Reconstruction/tauRecTools/src/TauTrackFinder.h
@@ -62,7 +62,11 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode eventInitialize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize();
     virtual StatusCode finalize();
     
diff --git a/Reconstruction/tauRecTools/src/TauVertexFinder.h b/Reconstruction/tauRecTools/src/TauVertexFinder.h
index 1a2026e0d7dc..ef61bce8c012 100644
--- a/Reconstruction/tauRecTools/src/TauVertexFinder.h
+++ b/Reconstruction/tauRecTools/src/TauVertexFinder.h
@@ -42,7 +42,11 @@ public:
   virtual StatusCode initialize();
   virtual StatusCode eventInitialize();
   virtual StatusCode execute(xAOD::TauJet& pTau);
-  virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
   virtual StatusCode eventFinalize();
   virtual StatusCode finalize();
 
diff --git a/Reconstruction/tauRecTools/src/TauVertexVariables.h b/Reconstruction/tauRecTools/src/TauVertexVariables.h
index 924827c702ea..9a1c765c4e4b 100644
--- a/Reconstruction/tauRecTools/src/TauVertexVariables.h
+++ b/Reconstruction/tauRecTools/src/TauVertexVariables.h
@@ -36,7 +36,11 @@ public:
     
     virtual StatusCode initialize();
     virtual StatusCode execute(xAOD::TauJet&);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventInitialize();
     virtual StatusCode finalize();
     virtual StatusCode eventFinalize();
diff --git a/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h b/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h
index e94957e36918..fac9609f7c19 100644
--- a/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h
+++ b/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h
@@ -72,7 +72,13 @@ class CombinedP4FromRecoTaus
   bool GetUseCaloPtFlag(const xAOD::TauJet* tau);
 
   StatusCode execute(xAOD::TauJet& xTau); 
-  StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+
+
 
  private:
   /*std::vector< std::vector<TH1F*> >  m_resHists_tauRec;
diff --git a/Reconstruction/tauRecTools/tauRecTools/ITauToolBase.h b/Reconstruction/tauRecTools/tauRecTools/ITauToolBase.h
index 7f6337f975f2..7bf1d941e07c 100644
--- a/Reconstruction/tauRecTools/tauRecTools/ITauToolBase.h
+++ b/Reconstruction/tauRecTools/tauRecTools/ITauToolBase.h
@@ -38,7 +38,12 @@ class ITauToolBase : virtual public asg::IAsgTool
   //! Execute - called for each tau candidate
   //-----------------------------------------------------------------
   virtual StatusCode execute(xAOD::TauJet& pTau) = 0;
-  virtual StatusCode executeCaloClus(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotClusterContainer) = 0;
+  virtual StatusCode executeShotFinder(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& shotClusterContainer, xAOD::PFOContainer& PFOContainer ) = 0;
+  virtual StatusCode executePi0CreateROI(xAOD::TauJet& pTau, CaloCellContainer& caloCellContainer ) = 0;
+  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer, 
+					      xAOD::PFOContainer& hadronicPFOContainer, xAOD::CaloClusterContainer& caloClusterContainer ) = 0;
+  virtual StatusCode executeVertexVariables(xAOD::TauJet& pTau, xAOD::VertexContainer& vertexContainer ) = 0;  
+  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet& pTau, xAOD::PFOContainer& PFOContainer ) = 0;  
 
   //-----------------------------------------------------------------
   //! Event finalizer - called at the end of each event
diff --git a/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h b/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h
index 91c67d8de961..5eec1345c270 100644
--- a/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h
@@ -24,7 +24,11 @@ class MvaTESEvaluator
   StatusCode initialize();
   StatusCode eventInitialize();
   StatusCode execute(xAOD::TauJet& xTau);
-  StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
   //StatusCode finalize() { delete m_reader; return StatusCode::SUCCESS;}
   StatusCode finalize() { return StatusCode::SUCCESS; }
   
diff --git a/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h b/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
index 77e9dd63c60f..c6d89d180e9f 100644
--- a/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
@@ -24,7 +24,12 @@ class MvaTESVariableDecorator
   StatusCode initialize();
   StatusCode eventInitialize();
   StatusCode execute(xAOD::TauJet& xTau);
-  StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+
   StatusCode eventFinalize();
   
  private:
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h b/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
index dd7acb1ac780..74990d5224da 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
@@ -31,7 +31,11 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h b/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
index 20db885a4e70..ff26f0bfa49b 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
@@ -28,7 +28,12 @@ public:
     
     virtual StatusCode initialize();                 
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+
     virtual StatusCode finalize();  
 
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h b/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
index c68822ee2aee..d0eae077e93e 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
@@ -34,8 +34,12 @@ class TauEleOLRDecorator: virtual public TauRecToolBase
   virtual StatusCode initialize();
 
   virtual StatusCode execute(xAOD::TauJet&);
+  virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
-  virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
 
   virtual StatusCode finalize();
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauGenericPi0Cone.h b/Reconstruction/tauRecTools/tauRecTools/TauGenericPi0Cone.h
index 3a0b26f7b3e8..6289f1b02126 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauGenericPi0Cone.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauGenericPi0Cone.h
@@ -31,7 +31,12 @@ public:
 
     virtual StatusCode initialize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauIDPileupCorrection.h b/Reconstruction/tauRecTools/tauRecTools/TauIDPileupCorrection.h
index d56f55faf000..bdf95614d3e7 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauIDPileupCorrection.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauIDPileupCorrection.h
@@ -48,7 +48,12 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+
     
     virtual void print() const { }
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h b/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
index 798425025e86..acda823f41e1 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
@@ -31,8 +31,11 @@ class TauIDVarCalculator: public TauRecToolBase
   virtual StatusCode initialize();
 
   virtual StatusCode execute(xAOD::TauJet&);
-
-  virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
   virtual StatusCode finalize();
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h b/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
index af2d9f8a4c34..dbb45319a2f2 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
@@ -29,7 +29,11 @@ class TauJetBDTEvaluator
     
   StatusCode initialize();
   StatusCode execute(xAOD::TauJet& xTau);
-  StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
   StatusCode finalize();// { delete myBdt; delete m_outputVar; return StatusCode::SUCCESS;}
   
  private:
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h b/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h
index d892516b8167..3366831afcd8 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h
@@ -32,7 +32,11 @@ public:
     virtual StatusCode eventInitialize();
     virtual StatusCode finalize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize();
 
     virtual void print() const { }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h b/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h
index 2a75a7a3de25..4c22c3ddea35 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h
@@ -30,7 +30,11 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h b/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h
index a65e2cff4086..fa4ad2fad3c8 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h
@@ -24,7 +24,11 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauRecToolBase.h b/Reconstruction/tauRecTools/tauRecTools/TauRecToolBase.h
index 22d287bbc16b..67ddf90c3ca0 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauRecToolBase.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauRecToolBase.h
@@ -43,7 +43,6 @@ class TauRecToolBase : public asg::AsgTool, virtual public ITauToolBase {
   //! Execute - called for each tau candidate
   //-----------------------------------------------------------------
   virtual StatusCode execute(xAOD::TauJet& pTau);
-  //virtual StatusCode executeCaloClus(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotClusterContainer);
 
   //-----------------------------------------------------------------
   //! Event finalizer - called at the end of each event
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h b/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
index c774a96d21a7..db03212e9b0e 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
@@ -27,7 +27,11 @@ class TauSubstructureVariables : public TauRecToolBase
         ~TauSubstructureVariables();
 
         virtual StatusCode execute(xAOD::TauJet& pTau);
-	virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
         virtual StatusCode initialize();
         virtual StatusCode finalize();
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h b/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
index f3b9490b331a..f4f023847b88 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
@@ -45,7 +45,11 @@ public:
   virtual StatusCode initialize();
   // pass all tracks in the tau cone to all track classifier sub tools
   virtual StatusCode execute(xAOD::TauJet& pTau);
-  virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
 private:
   ToolHandleArray<TrackMVABDT> m_vClassifier;
@@ -71,7 +75,11 @@ class TrackMVABDT
   // for possible MVA inputs. Only Variables defined in the root weights file
   // are passed to the MVA object
   StatusCode initialize();
-  StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
   StatusCode finalize();
   
   // executes MVA object to get the BDT score, makes the decision and resets
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauTrackFilter.h b/Reconstruction/tauRecTools/tauRecTools/TauTrackFilter.h
index b5e066420372..322ae0dc1088 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauTrackFilter.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauTrackFilter.h
@@ -31,7 +31,11 @@ public:
 
     virtual StatusCode initialize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h b/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
index 97d151ce0935..186676bedff6 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
@@ -34,7 +34,11 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual StatusCode retrieveHistos(int nProng);
     virtual StatusCode storeLimits(int nProng);
-- 
GitLab