diff --git a/Simulation/FastShower/FastCaloSim/CMakeLists.txt b/Simulation/FastShower/FastCaloSim/CMakeLists.txt index 9c634bd0f0366a248f3a1518b66f599d0c9e8db7..4c10890cb7d42ebc03818c3b1fadbe4858dbe41b 100644 --- a/Simulation/FastShower/FastCaloSim/CMakeLists.txt +++ b/Simulation/FastShower/FastCaloSim/CMakeLists.txt @@ -23,6 +23,8 @@ atlas_depends_on_subdirs( PUBLIC Tracking/TrkEvent/TrkEventPrimitives Tracking/TrkEvent/TrkParameters Tracking/TrkExtrapolation/TrkExInterfaces + Generators/GeneratorObjects + Simulation/FastShower/FastCaloSimAthenaPool PRIVATE Calorimeter/CaloTrackingGeometry Control/AthAllocators @@ -32,9 +34,7 @@ atlas_depends_on_subdirs( PUBLIC DetectorDescription/GeoPrimitives Event/EventKernel Event/NavFourMom - Generators/GeneratorObjects Generators/TruthUtils - Simulation/FastShower/FastCaloSimAthenaPool Tools/PathResolver Tracking/TrkDetDescr/TrkGeometry Tracking/TrkDetDescr/TrkSurfaces diff --git a/Simulation/FastShower/FastCaloSim/FastCaloSim/FastShowerCellBuilderTool.h b/Simulation/FastShower/FastCaloSim/FastCaloSim/FastShowerCellBuilderTool.h index 3fb58d5290ca063752eaa7ea37258fe828e3ee12..9a5d0d82e0d6dc39fcc362faacbdd8a4ac0fbe25 100755 --- a/Simulation/FastShower/FastCaloSim/FastCaloSim/FastShowerCellBuilderTool.h +++ b/Simulation/FastShower/FastCaloSim/FastCaloSim/FastShowerCellBuilderTool.h @@ -20,6 +20,10 @@ #include "TrkExInterfaces/ITimedExtrapolator.h" #include "TrkEventPrimitives/PdgToParticleHypothesis.h" #include "GaudiKernel/IPartPropSvc.h" +#include "StoreGate/ReadHandleKey.h" +#include "StoreGate/WriteHandleKey.h" +#include "GeneratorObjects/McEventCollection.h" +#include "FastCaloSimAthenaPool/FastShowerInfoContainer.h" /* #if FastCaloSim_project_release_v1 == 12 @@ -100,7 +104,8 @@ private: void LoadParametrizationsFromFile(TDirectory& infile,MSG::Level level=MSG::INFO); StatusCode OpenParamSource(std::string insource); - std::string m_mcLocation{"TruthEvent"}; + SG::ReadHandleKey<McEventCollection> m_mcCollectionKey + {this, "McLocation", "TruthEvent"}; std::string m_ParticleParametrizationFileName{""}; std::vector< std::string > m_AdditionalParticleParametrizationFileNames; @@ -108,7 +113,8 @@ private: std::vector< int > m_DB_channel; std::vector< std::string > m_DB_dirname; - std::string m_MuonEnergyInCaloContainer{"FatrasDepositedMuonEnergyInCalo"}; + SG::ReadHandleKey<BarcodeEnergyDepositMap> m_MuonEnergyInCaloContainerKey + { this, "MuonEnergyInCaloContainerName", "FatrasDepositedMuonEnergyInCalo"}; bool m_simul_ID_only{true}; bool m_simul_ID_v14_truth_cuts{false}; bool m_simul_EM_geant_only{false}; @@ -268,7 +274,8 @@ public: double get_d_calo_surf(int layer) const {return m_dCalo[layer];}; private: - std::string m_FastShowerInfoContainerKey{"FastShowerInfoContainer"}; + SG::WriteHandleKey<FastShowerInfoContainer> m_FastShowerInfoContainerKey + { this, "FastShowerInfoContainerKey", "FastShowerInfoContainer" }; bool m_storeFastShowerInfo{false}; FastShowerInfoContainer* m_FastShowerInfoContainer{}; Trk::PdgToParticleHypothesis m_pdgToParticleHypothesis; diff --git a/Simulation/FastShower/FastCaloSim/share/FastShowerCellBuilderTool_test.ref b/Simulation/FastShower/FastCaloSim/share/FastShowerCellBuilderTool_test.ref index 8c45af404a27ced6d68056692cb20a53ca1f1376..980c6beba37570b7e6668f578efcc10d6fd4c62f 100644 --- a/Simulation/FastShower/FastCaloSim/share/FastShowerCellBuilderTool_test.ref +++ b/Simulation/FastShower/FastCaloSim/share/FastShowerCellBuilderTool_test.ref @@ -1,4 +1,4 @@ -Mon Dec 24 16:25:50 EST 2018 +Fri Dec 28 15:03:54 EST 2018 Py:Athena INFO including file "AthenaCommon/Preparation.py" Py:Athena INFO using release [?-21.0.0] [i686-slc5-gcc43-dbg] [?/?] -- built on [?] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" @@ -22,7 +22,7 @@ Py:TileInfoConf. INFO Changing default TileCondToolNoiseSample configuration Py:TileInfoConf. INFO Changing default TileCondToolTiming configuration to COOL source Py:TileConditions_jobOptions.py INFO Adjusting TileInfo to return cell noise for Opt.Filter without iterations Py:Athena INFO Importing MagFieldServices.SetupField -Py:ConfiguredFactory INFO imported 88 confDb modules in 0.08 seconds +Py:ConfiguredFactory INFO imported 88 confDb modules in 0.02 seconds Py:Athena INFO Importing MagFieldServices.MagFieldServicesConfig Py:FastCaloSimFactory::configure: INFO now configure the non-interacting propagator... Py:FastCaloSimFactory::configure: INFO configure nono-interacting propagator finished @@ -59,13 +59,13 @@ Py:FastCaloSimFactory::configure: INFO all values: |-ExtraOutputs = [] (default: []) |-Extrapolator = PublicToolHandle('Trk::TimedExtrapolator/TimedExtrapolator') | (default: '') -|-FastShowerInfoContainerKey = 'FastShowerInfoContainer' +|-FastShowerInfoContainerKey = 'StoreGateSvc+FastShowerInfoContainer' |-ID_cut_off_r = [1070.0, 1030.0] (default: [1070.0, 1030.0]) |-ID_cut_off_z = [800.0, 3400.0] (default: [800.0, 3400.0]) |-Invisibles = [0] (default: [0]) -|-McLocation = 'TruthEvent' +|-McLocation = 'StoreGateSvc+TruthEvent' |-MonitorService = 'MonitorSvc' -|-MuonEnergyInCaloContainerName = 'FatrasDepositedMuonEnergyInCalo' +|-MuonEnergyInCaloContainerName = 'StoreGateSvc+FatrasDepositedMuonEnergyInCalo' |-OutputLevel = 0 |-PartPropSvc = ServiceHandle('PartPropSvc') |-ParticleParametrizationFileName = '/home/sss/nobackup/atlas/ReleaseData/v20/FastCaloSim/v1/ParticleEnergyParametrization.root' @@ -86,7 +86,7 @@ ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to leve ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99) - running on karma on Mon Dec 24 16:25:54 2018 + running on karma on Fri Dec 28 15:03:57 2018 ==================================================================================================================================== ApplicationMgr INFO Successfully loaded modules : AthenaServices ApplicationMgr INFO Application Manager Configured successfully @@ -345,10 +345,11 @@ TileSampleNoise... INFO Creating TileCondProxyCool(TileSampleNoiseCondAlg.Tile TileTimingCondA... INFO Creating TileCondProxyCool(TileTimingCondAlg.TileCondProxyCool_AdcOffset) for folder: "/TILE/OFL02/TIME/CHANNELOFFSET/PHY" PyComponentMgr INFO Initializing PyComponentMgr... testalg1 INFO Initializing testalg1... +ClassIDSvc INFO getRegistryEntries: read 5013 CLIDRegistry entries for module ALL ToolSvc.tool1 INFO Initialisating started CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc INFO getRegistryEntries: read 5168 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 159 CLIDRegistry entries for module ALL CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -563,11 +564,11 @@ AthenaEventLoopMgr INFO ===>>> done processing event #1, run #1 1 events pr TileInfoLoader INFO Handling EndRun incident TileInfoLoader INFO Removed TileInfo object from detector store. /home/sss/atlas... INFO Database being retired... +Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A +/home/sss/atlas... INFO Database being retired... Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] EACFEBD4-9BD2-E211-848A-02163E006B20 /home/sss/atlas... INFO Database being retired... Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] 2B8BB54A-2F81-7B49-8484-60F83666998E -/home/sss/atlas... INFO Database being retired... -Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] ApplicationMgr INFO Application Manager Stopped successfully IncidentProcAlg1 INFO Finalize @@ -583,7 +584,7 @@ IOVDbFolder INFO Folder /EXT/DCS/MAGNETS/SENSORDATA (AttrListColl) db-r IOVDbFolder INFO Folder /GLOBAL/BField/Maps (AttrListColl) db-read 1/1 objs/chan/bytes 3/3/202 (( 0.06 ))s IOVDbFolder INFO Folder /GLOBAL/TrackingGeo/LayerMaterialV2 (PoolRef) db-read 1/1 objs/chan/bytes 1/1/231 (( 0.00 ))s IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 0.06 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.07 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.06 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.00 ))s @@ -591,14 +592,14 @@ IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-r IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 0.01 ))s -IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/97884 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/97884 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.00 ))s IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 (( 0.00 ))s -IOVDbSvc INFO bytes in (( 0.32 ))s +IOVDbSvc INFO bytes in (( 0.30 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.07 ))s -IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.11 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.06 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.10 ))s IOVDbSvc INFO Connection COOLOFL_GLOBAL/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.07 ))s IOVDbSvc INFO Connection COOLOFL_DCS/OFLP200 : nConnect: 2 nFolders: 1 ReadTime: (( 0.07 ))s TileInfoLoader INFO TileInfoLoader::finalize() @@ -621,9 +622,9 @@ ToolSvc.Trackin... INFO finalize() successful *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 260 [ms] Ave/Min/Max= 86.7(+- 88.1)/ 10/ 210 [ms] #= 3 -cObj_ALL INFO Time User : Tot= 340 [ms] Ave/Min/Max= 20(+- 55.4)/ 0/ 230 [ms] #= 17 -ChronoStatSvc INFO Time User : Tot= 32.9 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 250 [ms] Ave/Min/Max= 83.3(+- 91)/ 0/ 210 [ms] #= 3 +cObj_ALL INFO Time User : Tot= 350 [ms] Ave/Min/Max= 20.6(+- 57.6)/ 0/ 240 [ms] #= 17 +ChronoStatSvc INFO Time User : Tot= 30.5 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/Simulation/FastShower/FastCaloSim/src/FastShowerCellBuilderTool.cxx b/Simulation/FastShower/FastCaloSim/src/FastShowerCellBuilderTool.cxx index a3f2c9b1b67b006b95f8ee42d6336bd72eac47bf..39b4058e5465e50d17a4128ebc18b86b1680f779 100755 --- a/Simulation/FastShower/FastCaloSim/src/FastShowerCellBuilderTool.cxx +++ b/Simulation/FastShower/FastCaloSim/src/FastShowerCellBuilderTool.cxx @@ -13,6 +13,8 @@ #include "GaudiKernel/StatusCode.h" #include "GaudiKernel/ListItem.h" #include "StoreGate/StoreGateSvc.h" +#include "StoreGate/ReadHandle.h" +#include "StoreGate/WriteHandle.h" #if FastCaloSim_project_release_v1 == 12 #include "PartPropSvc/PartPropSvc.h" #include "CLHEP/HepPDT/ParticleData.hh" @@ -131,8 +133,6 @@ FastShowerCellBuilderTool::FastShowerCellBuilderTool(const std::string& type, co for(int i=0;i<n_surfacelist;++i) m_surfacelist[i]=surfacelist[i]; m_rndm=new TRandom3(); - declareProperty("McLocation",m_mcLocation); - declareProperty("ParticleParametrizationFileName",m_ParticleParametrizationFileName); declareProperty("AdditionalParticleParametrizationFileNames",m_AdditionalParticleParametrizationFileNames); @@ -141,8 +141,6 @@ FastShowerCellBuilderTool::FastShowerCellBuilderTool(const std::string& type, co declareProperty("RandomService", m_rndmSvc, "Name of the random number service"); declareProperty("RandomStreamName", m_randomEngineName, "Name of the random number stream"); - declareProperty("MuonEnergyInCaloContainerName", m_MuonEnergyInCaloContainer); - declareProperty("DoSimulWithInnerDetectorTruthOnly",m_simul_ID_only); declareProperty("DoSimulWithInnerDetectorV14TruthCuts",m_simul_ID_v14_truth_cuts); declareProperty("DoSimulWithEMGeantInteractionsOnly",m_simul_EM_geant_only); @@ -153,7 +151,6 @@ FastShowerCellBuilderTool::FastShowerCellBuilderTool(const std::string& type, co declareProperty("CaloSurfaceHelper", m_caloSurfaceHelper ); declareProperty("CaloCoordinateTool", m_calo_tb_coord); - declareProperty("FastShowerInfoContainerKey", m_FastShowerInfoContainerKey); declareProperty("StoreFastShowerInfo", m_storeFastShowerInfo); declareProperty("DoEnergyInterpolation", m_jo_interpolate); //ATA: make interpolation optional @@ -454,7 +451,7 @@ StatusCode FastShowerCellBuilderTool::initialize() m_mcLocation = ged -> mcLocation(); } */ - ATH_MSG_INFO("McCollection="<< m_mcLocation); + ATH_MSG_INFO("McCollection="<< m_mcCollectionKey.key()); //m_gentesIO = new GenAccessIO(); @@ -515,6 +512,19 @@ StatusCode FastShowerCellBuilderTool::initialize() msg(MSG::INFO)<<endmsg; } + ATH_CHECK( m_mcCollectionKey.initialize() ); + + if (m_storeFastShowerInfo) { + ATH_CHECK( m_FastShowerInfoContainerKey.initialize() ); + } + else { + m_FastShowerInfoContainerKey = ""; + } + + if (!m_MuonEnergyInCaloContainerKey.key().empty()) { + ATH_CHECK( m_MuonEnergyInCaloContainerKey.initialize() ); + } + ATH_MSG_INFO("Initialisating finished"); return StatusCode::SUCCESS; } @@ -1592,7 +1602,7 @@ StatusCode FastShowerCellBuilderTool::process_particle(CaloCellContainer* theCel } m_letaCalo[sample]=fcx; - /* Causing to big steps!!! + /* Causing too big steps!!! if(fcx<mineta) { while(fcx<mineta){ m_letaCalo[sample]+=delta; @@ -2285,6 +2295,8 @@ void FastShowerCellBuilderTool::init_shape_correction() StatusCode FastShowerCellBuilderTool::process(CaloCellContainer* theCellContainer) { + const EventContext& ctx = Gaudi::Hive::currentContext(); + if(!m_is_init_shape_correction) { init_shape_correction(); m_is_init_shape_correction=true; @@ -2304,11 +2316,7 @@ StatusCode FastShowerCellBuilderTool::process(CaloCellContainer* theCellContaine MCparticleCollection Simulparticles; MCdo_simul_state do_simul_state; - const McEventCollection* mcCollptr; - if ( evtStore()->retrieve(mcCollptr, m_mcLocation).isFailure() ) { - ATH_MSG_ERROR("Could not retrieve McEventCollection"); - return StatusCode::FAILURE; - } + SG::ReadHandle<McEventCollection> mcCollptr (m_mcCollectionKey, ctx); // initialize a pileup type helper object //PileUpType pileupType( mcCollptr ); @@ -2339,15 +2347,16 @@ StatusCode FastShowerCellBuilderTool::process(CaloCellContainer* theCellContaine // return StatusCode::FAILURE; //} - BarcodeEnergyDepositMap* MuonEnergyMap=0; - if(evtStore()->contains<BarcodeEnergyDepositMap>(m_MuonEnergyInCaloContainer)) { - if ( evtStore()->retrieve(MuonEnergyMap,m_MuonEnergyInCaloContainer).isFailure() ) { - ATH_MSG_WARNING("Could not get "<<m_MuonEnergyInCaloContainer<<" from SG "); - } else { - ATH_MSG_DEBUG("Got "<<m_MuonEnergyInCaloContainer<<" from SG : size="<<MuonEnergyMap->size()); + const BarcodeEnergyDepositMap* MuonEnergyMap=0; + if (!m_MuonEnergyInCaloContainerKey.key().empty()) { + SG::ReadHandle<BarcodeEnergyDepositMap> h (m_MuonEnergyInCaloContainerKey, ctx); + // FIXME: Fix configuration so as not to request this object if it does not exist. + if (h.isValid()) { + MuonEnergyMap = h.cptr(); + } + else { + ATH_MSG_DEBUG("Could not find "<<m_MuonEnergyInCaloContainerKey.key()<<" in SG "); } - } else { - ATH_MSG_DEBUG("Could not find "<<m_MuonEnergyInCaloContainer<<" in SG "); } MC_init_particle_simul_state(do_simul_state,particles); @@ -2382,7 +2391,7 @@ StatusCode FastShowerCellBuilderTool::process(CaloCellContainer* theCellContaine } if(abs(par->pdg_id())==13 && MuonEnergyMap) { - std::pair<BarcodeEnergyDepositMap::iterator,BarcodeEnergyDepositMap::iterator> range=MuonEnergyMap->equal_range(par->barcode()); + std::pair<BarcodeEnergyDepositMap::const_iterator,BarcodeEnergyDepositMap::const_iterator> range=MuonEnergyMap->equal_range(par->barcode()); if(range.first==range.second) { do_simul_state[par->barcode()]=0; ATH_MSG_DEBUG("#="<<indpar<<": id="<<par->pdg_id()<<" stat="<<par->status()<<" bc="<<par->barcode() @@ -2390,7 +2399,7 @@ StatusCode FastShowerCellBuilderTool::process(CaloCellContainer* theCellContaine << " : no calo energy deposit"); } else { if(msgLvl(MSG::DEBUG)) { - for(BarcodeEnergyDepositMap::iterator i=range.first;i!=range.second;++i) { + for(BarcodeEnergyDepositMap::const_iterator i=range.first;i!=range.second;++i) { msg(MSG::DEBUG)<<"#="<<indpar<<": id="<<par->pdg_id()<<" stat="<<par->status()<<" bc="<<par->barcode() <<" pt="<<par->momentum().perp()<<" eta="<<par->momentum().eta()<<" phi="<<par->momentum().phi() <<" : layer="<<i->second.sample<<" eta="<<i->second.position.eta()<<" phi="<<i->second.position.phi() @@ -2469,12 +2478,11 @@ StatusCode FastShowerCellBuilderTool::process(CaloCellContainer* theCellContaine } ATH_MSG_DEBUG("finished finding particles"); + std::unique_ptr<FastShowerInfoContainer> fastShowerInfoContainer; if(m_storeFastShowerInfo) { - ATH_MSG_DEBUG("Creating and registering the FastShowerInfoContainer with key " << m_FastShowerInfoContainerKey); - m_FastShowerInfoContainer = new FastShowerInfoContainer(); - evtStore()->record( m_FastShowerInfoContainer, m_FastShowerInfoContainerKey); - // log << MSG::DEBUG << m_storeGate->dump() << endmsg; + fastShowerInfoContainer = std::make_unique<FastShowerInfoContainer>(); + m_FastShowerInfoContainer = fastShowerInfoContainer.get(); } MCparticleCollectionCIter fpart = Simulparticles.begin(); @@ -2530,6 +2538,13 @@ StatusCode FastShowerCellBuilderTool::process(CaloCellContainer* theCellContaine ATH_MSG_DEBUG("Executing finished calo size=" <<theCellContainer->size()<<"; "<<stat_npar<<" particle(s), "<<stat_npar_OK<<" with sc=SUCCESS"); + if(m_storeFastShowerInfo) + { + ATH_MSG_DEBUG("Registering the FastShowerInfoContainer with key " << m_FastShowerInfoContainerKey); + SG::WriteHandle<FastShowerInfoContainer> showerHandle (m_FastShowerInfoContainerKey, ctx); + ATH_CHECK( showerHandle.record (std::move (fastShowerInfoContainer)) ); + } + if(releaseEvent().isFailure() ) { ATH_MSG_ERROR("releaseEvent() failed"); return StatusCode::FAILURE;