diff --git a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
index 2d78af8def0d58eea38c23c0750f456e4bec0419..2a59f115f4f4e91ee1e5c483b7ee5a6fbacf44f4 100644
--- a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
+++ b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
@@ -409,9 +409,7 @@ def getPi0ClusterScaler():
         return cached_instances[_name]
 
     from tauRecTools.tauRecToolsConf import TauPi0ClusterScaler
-    TauPi0ClusterScaler = TauPi0ClusterScaler(name = _name,
-                                              Key_chargedPFOOutputContainer = 'TauChargedParticleFlowObjects'
-                                              )
+    TauPi0ClusterScaler = TauPi0ClusterScaler(name = _name)
 
     cached_instances[_name] = TauPi0ClusterScaler
     return TauPi0ClusterScaler
diff --git a/Reconstruction/tauRec/python/TauRecRunConfigured.py b/Reconstruction/tauRec/python/TauRecRunConfigured.py
index b87bd17413cb4adb91c22c43879008fbbf34bd7c..f05b03889d8186e6eae6c29e2f88b7e2c2c7f9c1 100644
--- a/Reconstruction/tauRec/python/TauRecRunConfigured.py
+++ b/Reconstruction/tauRec/python/TauRecRunConfigured.py
@@ -36,7 +36,8 @@ class TauRecRunConfigured ( Configured ) :
                                                   Key_neutralPFOOutputContainer="TauPi0Clusters",
                                                   Key_pi0ClusterOutputContainer="TauNeutralParticleFlowObjects",
                                                   Key_hadronicPFOOutputContainer="TauHadronicParticleFlowObjects",
-                                                  Key_vertexOutputContainer = "TauSecondaryVertices"
+                                                  Key_vertexOutputContainer = "TauSecondaryVertices",
+                                                  Key_chargedPFOOutputContainer = 'TauChargedParticleFlowObjects'
                                                   )
                                                                                                 
         Configured.__init__(self, ignoreExistingDataObject=ignoreExistingDataObject)
diff --git a/Reconstruction/tauRec/python/TauRecRunner.py b/Reconstruction/tauRec/python/TauRecRunner.py
index e241495b3d198d35b77da7a1d956cd55d9135f9e..71a01cd184af49721cfd38a2479d8a425c22e49f 100644
--- a/Reconstruction/tauRec/python/TauRecRunner.py
+++ b/Reconstruction/tauRec/python/TauRecRunner.py
@@ -83,14 +83,14 @@ class TauRecRunner ( TauRecRunConfigured ) :
             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'))
 
diff --git a/Reconstruction/tauRec/src/TauRunnerAlg.cxx b/Reconstruction/tauRec/src/TauRunnerAlg.cxx
index 3ca5f355bb68bd9b72d94bb7dae5eaedb2ed3601..2a6f4947608a960bc6eb12c655dcb06e467a8c95 100644
--- a/Reconstruction/tauRec/src/TauRunnerAlg.cxx
+++ b/Reconstruction/tauRec/src/TauRunnerAlg.cxx
@@ -60,7 +60,7 @@ StatusCode TauRunnerAlg::initialize() {
     ATH_CHECK( m_pi0ClusterOutputContainer.initialize() );
     ATH_CHECK( m_hadronicPFOOutputContainer.initialize() );
     ATH_CHECK( m_vertexOutputContainer.initialize() );
-
+    ATH_CHECK( m_chargedPFOOutputContainer.initialize() );
     StatusCode sc;
 
     //-------------------------------------------------------------------------
@@ -171,8 +171,15 @@ StatusCode TauRunnerAlg::execute() {
     ATH_MSG_DEBUG("  write: " << vertOutHandle.key() << " = " << "..." );
     ATH_CHECK(vertOutHandle.record(std::unique_ptr<xAOD::VertexContainer>{pSecVtxContainer}, std::unique_ptr<xAOD::VertexAuxContainer>{pSecVtxAuxContainer}));
 
+    // charged PFO container
+    xAOD::PFOContainer* chargedPFOContainer = new xAOD::PFOContainer();
+    xAOD::PFOAuxContainer* chargedPFOAuxStore = new xAOD::PFOAuxContainer();
+    chargedPFOContainer->setStore(chargedPFOAuxStore);
+    SG::WriteHandle<xAOD::PFOContainer> chargedPFOHandle( m_chargedPFOOutputContainer );
+    ATH_MSG_DEBUG("  write: " << chargedPFOHandle.key() << " = " << "..." );
+    ATH_CHECK(chargedPFOHandle.record(std::unique_ptr<xAOD::PFOContainer>{chargedPFOContainer}, std::unique_ptr<xAOD::PFOAuxContainer>{chargedPFOAuxStore}));
   
-  //-------------------------------------------------------------------------                        
+    //-------------------------------------------------------------------------
     // Initialize tools for this event
     //-------------------------------------------------------------------------                                                      
     ToolHandleArray<ITauToolBase> ::iterator itT = m_tools.begin();
@@ -217,7 +224,9 @@ StatusCode TauRunnerAlg::execute() {
 	if ( (*itT)->name().find("Pi0ClusterCreator") != std::string::npos){
           sc = (*itT)->executePi0ClusterCreator(*pTau, *neutralPFOContainer, *hadronicClusterPFOContainer, *pi0CaloClusterContainer);
         }
-	else {
+	else if ( (*itT)->name().find("Pi0ClusterScaler") != std::string::npos){
+	sc = (*itT)->executePi0ClusterScaler(*pTau, *chargedPFOContainer);
+	}else {
 	  sc = (*itT)->execute(*pTau);
 	}
 	if (sc.isFailure())
diff --git a/Reconstruction/tauRec/tauRec/TauRunnerAlg.h b/Reconstruction/tauRec/tauRec/TauRunnerAlg.h
index d00ca79edaf3f7e51708b22d0029c171be8e568e..7b9fcde05185f618878961748593a93ac1abdd68 100644
--- a/Reconstruction/tauRec/tauRec/TauRunnerAlg.h
+++ b/Reconstruction/tauRec/tauRec/TauRunnerAlg.h
@@ -59,6 +59,8 @@ class TauRunnerAlg: public AthAlgorithm
 	SG::WriteHandleKey<xAOD::CaloClusterContainer> m_pi0ClusterOutputContainer{this,"Key_pi0ClusterOutputContainer", "TauPi0Clusters", "tau pi0cluster output"};
 	SG::WriteHandleKey<xAOD::PFOContainer> m_hadronicPFOOutputContainer{this,"Key_hadronicPFOOutputContainer", "TauHadronicParticleFlowObjects", "tau hadronic pfo out key"};
 	SG::WriteHandleKey<xAOD::VertexContainer> m_vertexOutputContainer{this,"Key_vertexOutputContainer", "TauSecondaryVertices", "input vertex container key"};
+	SG::WriteHandleKey<xAOD::PFOContainer> m_chargedPFOOutputContainer{this,"Key_chargedPFOOutputContainer", "TauChargedParticleFlowObjects", "tau charged pfo o\
+ut key"};
 
 	
 };
diff --git a/Reconstruction/tauRecTools/Root/TauPi0ClusterScaler.cxx b/Reconstruction/tauRecTools/Root/TauPi0ClusterScaler.cxx
index 81e657205e29720d8c880c16c343991349f7077d..8c9a59351487dcd46d63d7d5f11a5c685983f476 100644
--- a/Reconstruction/tauRecTools/Root/TauPi0ClusterScaler.cxx
+++ b/Reconstruction/tauRecTools/Root/TauPi0ClusterScaler.cxx
@@ -28,8 +28,6 @@ using std::string;
 
 TauPi0ClusterScaler::TauPi0ClusterScaler( const string& name ) :
     TauRecToolBase(name)
-    , m_chargedPFOContainer(0)
-    , m_chargedPFOAuxStore(0)
 {
 }
 
@@ -44,20 +42,10 @@ TauPi0ClusterScaler::~TauPi0ClusterScaler()
 
 StatusCode TauPi0ClusterScaler::initialize()
 {
-
-  ATH_CHECK(m_chargedPFOOutputContainer.initialize());
   return StatusCode::SUCCESS;
 }
 
-StatusCode TauPi0ClusterScaler::eventInitialize() {
-
-  //---------------------------------------------------------------------
-  // Create charged PFO container
-  //---------------------------------------------------------------------
-  m_chargedPFOContainer = new xAOD::PFOContainer();
-  m_chargedPFOAuxStore = new xAOD::PFOAuxContainer();
-  m_chargedPFOContainer->setStore(m_chargedPFOAuxStore);
-  
+StatusCode TauPi0ClusterScaler::eventInitialize() 
   return StatusCode::SUCCESS;
 }
 
@@ -67,7 +55,7 @@ StatusCode TauPi0ClusterScaler::finalize()
 }
 
 
-StatusCode TauPi0ClusterScaler::execute(xAOD::TauJet& pTau)
+StatusCode TauPi0ClusterScaler::executePi0ClusterScaler(xAOD::TauJet& pTau, xAOD::PFOContainer& chargedPFOContainer)
 {
     // Clear vector of cell-based charged PFO Links. 
     // Required when rerunning on xAOD level.
@@ -85,7 +73,7 @@ StatusCode TauPi0ClusterScaler::execute(xAOD::TauJet& pTau)
     // reset neutral PFO kinematics (incase re-run on AOD)
     resetNeutralPFOs(pTau);
     // create new proto charged PFOs, extrapolate tracks, add to tau 
-    createChargedPFOs(pTau);
+    createChargedPFOs(pTau, chargedPFOContainer);
     // associate hadronic PFOs to charged PFOs using extrapolated positions in HCal
     associateHadronicToChargedPFOs(pTau);
     // associate charged PFOs to neutral PFOs using extrapolated positions in ECal
@@ -130,7 +118,7 @@ void TauPi0ClusterScaler::resetNeutralPFOs(xAOD::TauJet& pTau)
 
 
 
-void TauPi0ClusterScaler::createChargedPFOs(xAOD::TauJet& pTau)
+void TauPi0ClusterScaler::createChargedPFOs(xAOD::TauJet& pTau, xAOD::PFOContainer& cPFOContainer)
 {
     ATH_MSG_DEBUG("Creating charged PFOs");
     for(auto tauTrackLink : pTau.tauTrackLinks(xAOD::TauJetParameters::classifiedCharged)){
@@ -141,7 +129,7 @@ void TauPi0ClusterScaler::createChargedPFOs(xAOD::TauJet& pTau)
         const xAOD::TauTrack* tauTrack = (*tauTrackLink);
         // create pfo
         xAOD::PFO* chargedPFO = new xAOD::PFO();
-        m_chargedPFOContainer->push_back(chargedPFO);
+        cPFOContainer.push_back(chargedPFO);
         // set properties
         chargedPFO->setCharge(tauTrack->track()->charge());
         chargedPFO->setP4(tauTrack->p4());
@@ -156,7 +144,7 @@ void TauPi0ClusterScaler::createChargedPFOs(xAOD::TauJet& pTau)
             ATH_MSG_WARNING("Could not add TauTrack to PFO");
         // link from tau
         pTau.addProtoChargedPFOLink(ElementLink< xAOD::PFOContainer >
-                                    (chargedPFO, *m_chargedPFOContainer));
+                                    (chargedPFO, cPFOContainer));
     }
 }
 
@@ -377,9 +365,5 @@ void TauPi0ClusterScaler::subtractChargedEnergyFromNeutralPFOs(xAOD::TauJet& pTa
 
 StatusCode TauPi0ClusterScaler::eventFinalize() {
   
-  SG::WriteHandle<xAOD::PFOContainer> chargedPFOHandle( m_chargedPFOOutputContainer );
-  ATH_MSG_DEBUG("  write: " << chargedPFOHandle.key() << " = " << "..." );
-  ATH_CHECK(chargedPFOHandle.record(std::unique_ptr<xAOD::PFOContainer>{m_chargedPFOContainer}, std::unique_ptr<xAOD::PFOAuxContainer>{m_chargedPFOAuxStore}));
-
   return StatusCode::SUCCESS;
 }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h b/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h
index 3366831afcd873e89fea883928db1d9291248089..ba8ad9c0cf76a95f501bb8dc51bf4cfe372fa445 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h
@@ -31,12 +31,12 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode eventInitialize();
     virtual StatusCode finalize();
-    virtual StatusCode execute(xAOD::TauJet& pTau);
+    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&, 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 executePi0ClusterScaler(xAOD::TauJet& pTau, xAOD::PFOContainer& pChargedPFOContainer); 
     virtual StatusCode eventFinalize();
 
     virtual void print() const { }
@@ -50,7 +50,7 @@ private:
     void resetNeutralPFOs(xAOD::TauJet& pTau);
     
     /** @brief create charged PFOs */
-    void createChargedPFOs(xAOD::TauJet& pTau);
+    void createChargedPFOs(xAOD::TauJet& pTau, xAOD::PFOContainer& pChargedPFOContainer);
 
     /** @brief extrapolate charged PFO tracks to EM and HAD layers */
     //void extrapolateChargedPFOs(xAOD::TauJet& pTau);
@@ -78,8 +78,6 @@ private:
     //xAOD::PFODetails::PFOAttributes ETAHCAL;
     //xAOD::PFODetails::PFOAttributes PHIHCAL;
 
-    SG::WriteHandleKey<xAOD::PFOContainer> m_chargedPFOOutputContainer{this,"Key_chargedPFOOutputContainer", "TauChargedParticleFlowObjects", "tau charged pfo out key"};
-
 };
 
 #endif  /* TAUPI0CLUSTERSCALER_H */