diff --git a/Database/AthenaPOOL/OutputStreamAthenaPool/python/OutputStreamConfig.py b/Database/AthenaPOOL/OutputStreamAthenaPool/python/OutputStreamConfig.py index e097435ce35128a542f9ae4094d91925ed7f3c76..8ad93126c1be83c19afea106bb22f428af9baffa 100644 --- a/Database/AthenaPOOL/OutputStreamAthenaPool/python/OutputStreamConfig.py +++ b/Database/AthenaPOOL/OutputStreamAthenaPool/python/OutputStreamConfig.py @@ -105,5 +105,4 @@ def OutputStreamCfg(configFlags, streamName, ItemList=[], MetadataItemList=[], poolcnvsvc.PoolAttributes += [ "DatabaseName = '" + fileName + "'; ContainerName = 'TTree=Aux.'; CONTAINER_SPLITLEVEL = '1'"] result.addEventAlgo(outputStream) - return result - + return result \ No newline at end of file diff --git a/Event/xAOD/xAODTrackingCnv/src/TrackParticleCnvAlg.cxx b/Event/xAOD/xAODTrackingCnv/src/TrackParticleCnvAlg.cxx index a8ba371fea76f6d7f06f72f3141b5e6ffe00ed47..2abe876d6f5a943587328ba5e927962d32e71788 100644 --- a/Event/xAOD/xAODTrackingCnv/src/TrackParticleCnvAlg.cxx +++ b/Event/xAOD/xAODTrackingCnv/src/TrackParticleCnvAlg.cxx @@ -89,50 +89,52 @@ namespace xAODMaker { StatusCode TrackParticleCnvAlg::execute(const EventContext& ctx) const { - const Rec::TrackParticleContainer *aod=nullptr; - const TrackCollection *tracks = nullptr; - const xAODTruthParticleLinkVector *truthLinks = nullptr; - const TrackParticleTruthCollection *aodTruth = nullptr; - const TrackTruthCollection *trackTruth = nullptr; + const Rec::TrackParticleContainer* aod = nullptr; + const TrackCollection* tracks = nullptr; + const xAODTruthParticleLinkVector* truthLinks = nullptr; + const TrackParticleTruthCollection* aodTruth = nullptr; + const TrackTruthCollection* trackTruth = nullptr; // Retrieve the AOD particles: - if (m_convertAODTrackParticles){ + if (m_convertAODTrackParticles) { SG::ReadHandle<Rec::TrackParticleContainer> rh_aod(m_aod, ctx); if (!rh_aod.isValid()) { - ATH_MSG_DEBUG("Error finding " << m_aod.key() << " found. Do nothing."); - return StatusCode::SUCCESS; - } else { - aod = rh_aod.cptr(); + ATH_MSG_ERROR( m_aod.key() << " not found"); + return StatusCode::FAILURE; + } + else { + aod = rh_aod.cptr(); ATH_MSG_VERBOSE("Got TrackParticleContainer with key " << m_aod.key() << " found."); } } // Retrieve the Tracks: - if (m_convertTracks){ + if (m_convertTracks) { SG::ReadHandle<TrackCollection> rh_tracks(m_tracks, ctx); if (!rh_tracks.isValid()) { - ATH_MSG_DEBUG("Error finding " << m_tracks.key() << " found. Do nothing."); + ATH_MSG_ERROR( m_tracks.key() << " not found"); return StatusCode::SUCCESS; - } else { - tracks = rh_tracks.cptr(); + } + else { + tracks = rh_tracks.cptr(); ATH_MSG_VERBOSE("Got TrackCollection with key " << m_tracks.key() << " found."); } } - if( m_addTruthLink ){ - if (m_convertAODTrackParticles){ - SG::ReadHandle<TrackParticleTruthCollection> rh_aodTruth(m_aodTruth, ctx); + if (m_addTruthLink) { + if (m_convertAODTrackParticles) { + SG::ReadHandle<TrackParticleTruthCollection> rh_aodTruth(m_aodTruth, ctx); if (!rh_aodTruth.isValid()) { ATH_MSG_WARNING("No TrackParticleTruthCollection with key " << m_aodTruth.key() << " found. Do nothing."); return StatusCode::SUCCESS; } - else aodTruth = rh_aodTruth.cptr(); + else aodTruth = rh_aodTruth.cptr(); } - if (m_convertTracks){ - SG::ReadHandle<TrackTruthCollection> rh_trackTruth(m_trackTruth, ctx); + if (m_convertTracks) { + SG::ReadHandle<TrackTruthCollection> rh_trackTruth(m_trackTruth, ctx); if (!rh_trackTruth.isValid()) { ATH_MSG_WARNING("No DetailedTrackTruthCollection with key " << m_trackTruth.key() << " found. Do nothing."); return StatusCode::SUCCESS; } - else trackTruth = rh_trackTruth.cptr(); + else trackTruth = rh_trackTruth.cptr(); } SG::ReadHandle<xAODTruthParticleLinkVector> rh_truthParticleLinkVec(m_truthParticleLinkVec, ctx); @@ -145,13 +147,13 @@ namespace xAODMaker { if (m_convertTracks) { SG::WriteHandle<xAOD::TrackParticleContainer> wh_xaodout(m_xaodout, ctx); ATH_CHECK(wh_xaodout.record(std::make_unique<xAOD::TrackParticleContainer>(), std::make_unique<xAOD::TrackParticleAuxContainer>())); - convert((*tracks), trackTruth, m_TrackCollectionCnvTool, wh_xaodout, truthLinks); + convert((*tracks), trackTruth, m_TrackCollectionCnvTool, wh_xaodout, truthLinks); //Monitor track parameters - if( m_doMonitoring) m_trackMonitoringTool->monitor_tracks( "Track", "Pass", *wh_xaodout ); + if (m_doMonitoring) m_trackMonitoringTool->monitor_tracks("Track", "Pass", *wh_xaodout); } - if (m_convertAODTrackParticles){ + if (m_convertAODTrackParticles) { SG::WriteHandle<xAOD::TrackParticleContainer> wh_xaodTrackParticlesout(m_xaodTrackParticlesout, ctx); ATH_CHECK(wh_xaodTrackParticlesout.record(std::make_unique<xAOD::TrackParticleContainer>(), std::make_unique<xAOD::TrackParticleAuxContainer>())); convert((*aod), aodTruth, m_RecTrackParticleContainerCnvTool, wh_xaodTrackParticlesout, truthLinks); diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py index 3fe4ecd42cc69a58285f873a51a7bf0a772fbe70..fca7b6ca9863d7aa8c9768245b9dbb1e75a3e8de 100644 --- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py +++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py @@ -269,6 +269,15 @@ def TrackRecoCfg(flags): result.merge(TrackingSiPatternCfg(flags, [], "ResolvedTracks", "SiSPSeededTracks")) result.merge(TrackParticleCnvAlgCfg(flags, TrackContainerName="ResolvedTracks")) + from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg + toAOD = ["xAOD::TrackParticleContainer#InDetTrackParticles", "xAOD::TrackParticleAuxContainer#InDetTrackParticlesAux."] + toESD = [] + if flags.Output.doWriteESD: + result.merge(OutputStreamCfg(flags, "ESD", ItemList=toAOD+toESD)) + + if flags.Output.doWriteAOD: + result.merge(OutputStreamCfg(flags, "AOD", ItemList=toAOD )) + return result if __name__ == "__main__": diff --git a/Reconstruction/RecJobTransforms/python/RecoSteering.py b/Reconstruction/RecJobTransforms/python/RecoSteering.py index f911cfeed1fef0d7d8fa6c10d85c6f158b09bdf2..42a46413a6537e55a93239b001dc58535e9e1a30 100644 --- a/Reconstruction/RecJobTransforms/python/RecoSteering.py +++ b/Reconstruction/RecJobTransforms/python/RecoSteering.py @@ -44,15 +44,12 @@ def RecoSteering(flags): # pflow #setup output - # TODO - decide how we collect objects that need recording (the old way was a global & external list) - itemsToRecord = ["xAOD::EventInfo#EventInfo"] - from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg if flags.Output.doWriteESD: - acc.merge(OutputStreamCfg(flags, "ESD", ItemList=itemsToRecord, disableEventTag=True)) + log.info("ESD ItemList: %s", acc.getEventAlgo("OutputStreamESD").ItemList) log.info("---------- Configured ESD writing") if flags.Output.doWriteAOD: - acc.merge(OutputStreamCfg(flags, "AOD", ItemList=itemsToRecord, disableEventTag=True)) + log.info("ESD ItemList: %s", acc.getEventAlgo("OutputStreamAOD").ItemList) log.info("---------- Configured AOD writing") return acc @@ -74,6 +71,8 @@ def _run(input): flags.Detector.RecoSCT=True flags.Detector.RecoTRT=True flags.Calo.TopoCluster.doTopoClusterLocalCalib=False + flags.Output.ESDFileName="ESD.pool.root" + flags.Output.AODFileName="AOD.pool.root" parser = flags.getArgumentParser() args = flags.fillFromArgs(parser=parser) @@ -91,7 +90,8 @@ def _run(input): acc.merge(RecoSteering(flags), sequenceName="AthAlgSeq") confStamp = datetime.datetime.now() log.info("configured in %d seconds", (confStamp-startStamp).seconds ) - + acc.getService("StoreGateSvc").Dump=True + acc.getEventAlgo("TrackParticleCnvAlg").OutputLevel=1 acc.printConfig(withDetails=True) if args.configOnly: with open(args.configOnly, "wb") as confFile: