Skip to content
Snippets Groups Projects
Commit 8fb73188 authored by Walter Lampl's avatar Walter Lampl
Browse files

Merge branch 'save-ESD-AOD' into 'master'

Store InDetTrackParticles in ESD/AOD new JO test job

See merge request atlas/athena!42153
parents 94d1966e e098acb1
No related branches found
No related tags found
No related merge requests found
......@@ -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
......@@ -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);
......
......@@ -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__":
......
......@@ -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:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment