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 */