From 42ffc23f86616bb55f6454a7138703b9072bd837 Mon Sep 17 00:00:00 2001 From: Dave Casper <dcasper@uci.edu> Date: Mon, 24 Jan 2022 03:43:11 -0800 Subject: [PATCH] Compatibility changes for waveform digi --- .../CaloDigiAlgs/python/CaloDigiAlgsConfig.py | 11 +++++++---- .../CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx | 10 +++++----- .../Digitization/scripts/faser_digi.py | 18 ++++++++++++------ .../python/ScintDigiAlgsConfig.py | 10 ++++++---- .../ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx | 10 +++++----- .../python/FaserSCT_DigitizationConfigNew.py | 3 ++- 6 files changed, 37 insertions(+), 25 deletions(-) diff --git a/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py b/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py index 6a0b9e35..cd0c9a45 100644 --- a/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py +++ b/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py @@ -1,5 +1,6 @@ # Copyright (C) 2020-2021 CERN for the benefit of the FASER collaboration +from re import VERBOSE from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory @@ -12,9 +13,10 @@ def CaloWaveformDigitizationCfg(flags): acc = ComponentAccumulator() if not flags.Input.isMC: - return + return acc acc.merge(CaloWaveformDigiCfg(flags, "CaloWaveformDigiAlg")) + acc.merge(CaloWaveformDigitizationOutputCfg(flags)) return acc # Return configured digitization algorithm from SIM hits @@ -46,7 +48,8 @@ def CaloWaveformDigitizationOutputCfg(flags, **kwargs): ItemList = [ "RawWaveformContainer#*" ] - acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) - # ostream = acc.getEventAlgo("OutputStreamRDO") - # ostream.TakeItemsFromInput = True # Don't know what this does + acc.merge(OutputStreamCfg(flags, "RDO")) + ostream = acc.getEventAlgo("OutputStreamRDO") + ostream.TakeItemsFromInput = True # Copies all data from input file to output + ostream.ItemList += ItemList return acc diff --git a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx index 718dcb4f..8e60aefa 100644 --- a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx +++ b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx @@ -63,17 +63,17 @@ CaloWaveformDigiAlg::execute(const EventContext& ctx) const { ATH_CHECK( caloHitHandle.isValid() ); ATH_MSG_DEBUG("Found ReadHandle for CaloHitCollection " << m_caloHitContainerKey); - if (caloHitHandle->size() == 0) { - ATH_MSG_DEBUG("CaloHitCollection found with zero length!"); - return StatusCode::SUCCESS; - } - // Find the output waveform container SG::WriteHandle<RawWaveformContainer> waveformContainerHandle(m_waveformContainerKey, ctx); ATH_CHECK( waveformContainerHandle.record( std::make_unique<RawWaveformContainer>()) ); ATH_MSG_DEBUG("WaveformsContainer '" << waveformContainerHandle.name() << "' initialized"); + if (caloHitHandle->size() == 0) { + ATH_MSG_DEBUG("CaloHitCollection found with zero length!"); + return StatusCode::SUCCESS; + } + // Digitise the hits CHECK( m_digiTool->digitise<CaloHitCollection>(caloHitHandle.ptr(), waveformContainerHandle.ptr(), m_kernel) ); diff --git a/Control/CalypsoExample/Digitization/scripts/faser_digi.py b/Control/CalypsoExample/Digitization/scripts/faser_digi.py index b9d0708b..5ef81899 100755 --- a/Control/CalypsoExample/Digitization/scripts/faser_digi.py +++ b/Control/CalypsoExample/Digitization/scripts/faser_digi.py @@ -62,7 +62,7 @@ from CalypsoConfiguration.AllConfigFlags import ConfigFlags Configurable.configurableRun3Behavior = True # Flags for this job -ConfigFlags.Input.isMC = False # Needed to bypass autoconfig +ConfigFlags.Input.isMC = True # Needed to bypass autoconfig ConfigFlags.IOVDb.DatabaseInstance = "OFLP200" # Use MC conditions for now ConfigFlags.Input.ProjectName = "mc20" @@ -126,6 +126,12 @@ acc.merge(FaserGeometryCfg(ConfigFlags)) from FaserSCT_Digitization.FaserSCT_DigitizationConfigNew import FaserSCT_DigitizationCfg acc.merge(FaserSCT_DigitizationCfg(ConfigFlags)) +from CaloDigiAlgs.CaloDigiAlgsConfig import CaloWaveformDigitizationCfg +acc.merge(CaloWaveformDigitizationCfg(ConfigFlags)) + +from ScintDigiAlgs.ScintDigiAlgsConfig import ScintWaveformDigitizationCfg +acc.merge(ScintWaveformDigitizationCfg(ConfigFlags)) + # from WaveRecAlgs.WaveRecAlgsConfig import WaveformReconstructionCfg # acc.merge(WaveformReconstructionCfg(ConfigFlags)) @@ -173,11 +179,11 @@ acc.merge(FaserSCT_DigitizationCfg(ConfigFlags)) # print( acc.getEventAlgo("OutputStreamxAOD").ItemList ) # Hack to avoid problem with our use of MC databases when isMC = False -replicaSvc = acc.getService("DBReplicaSvc") -replicaSvc.COOLSQLiteVetoPattern = "" -replicaSvc.UseCOOLSQLite = True -replicaSvc.UseCOOLFrontier = False -replicaSvc.UseGeomSQLite = True +# replicaSvc = acc.getService("DBReplicaSvc") +# replicaSvc.COOLSQLiteVetoPattern = "" +# replicaSvc.UseCOOLSQLite = True +# replicaSvc.UseCOOLFrontier = False +# replicaSvc.UseGeomSQLite = True # Configure verbosity # ConfigFlags.dump() diff --git a/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py b/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py index 7c322060..243e4493 100644 --- a/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py +++ b/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py @@ -21,12 +21,13 @@ def ScintWaveformDigitizationCfg(flags): acc = ComponentAccumulator() if not flags.Input.isMC: - return + return acc if "TB" not in flags.GeoModel.FaserVersion: acc.merge(ScintWaveformDigiCfg(flags, "TimingWaveformDigiAlg", "Trigger")) acc.merge(ScintWaveformDigiCfg(flags, "VetoWaveformDigiAlg", "Veto")) acc.merge(ScintWaveformDigiCfg(flags, "PreshowerWaveformDigiAlg", "Preshower")) + acc.merge(ScintWaveformDigitizationOutputCfg(flags)) return acc # Return configured digitization algorithm from SIM hits @@ -58,7 +59,8 @@ def ScintWaveformDigitizationOutputCfg(flags, **kwargs): ItemList = [ "RawWaveformContainer#*" ] - acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) - # ostream = acc.getEventAlgo("OutputStreamRDO") - # ostream.TakeItemsFromInput = True # Don't know what this does + acc.merge(OutputStreamCfg(flags, "RDO")) + ostream = acc.getEventAlgo("OutputStreamRDO") + ostream.TakeItemsFromInput = True # Copies all data from input file to output + ostream.ItemList += ItemList return acc diff --git a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx index 03c1873d..b2508041 100644 --- a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx +++ b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx @@ -64,17 +64,17 @@ ScintWaveformDigiAlg::execute(const EventContext& ctx) const { ATH_CHECK( scintHitHandle.isValid() ); ATH_MSG_DEBUG("Found ReadHandle for ScintHitCollection " << m_scintHitContainerKey); - if (scintHitHandle->size() == 0) { - ATH_MSG_DEBUG("ScintHitCollection found with zero length!"); - return StatusCode::SUCCESS; - } - // Find the output waveform container SG::WriteHandle<RawWaveformContainer> waveformContainerHandle(m_waveformContainerKey, ctx); ATH_CHECK( waveformContainerHandle.record( std::make_unique<RawWaveformContainer>()) ); ATH_MSG_DEBUG("WaveformsContainer '" << waveformContainerHandle.name() << "' initialized"); + if (scintHitHandle->size() == 0) { + ATH_MSG_DEBUG("ScintHitCollection found with zero length!"); + return StatusCode::SUCCESS; + } + // Digitise the hits CHECK( m_digiTool->digitise<ScintHitCollection>(scintHitHandle.ptr(), waveformContainerHandle.ptr(), m_kernel) ); diff --git a/Tracker/TrackerDigitization/FaserSCT_Digitization/python/FaserSCT_DigitizationConfigNew.py b/Tracker/TrackerDigitization/FaserSCT_Digitization/python/FaserSCT_DigitizationConfigNew.py index a4bd9fb2..c9f267da 100644 --- a/Tracker/TrackerDigitization/FaserSCT_Digitization/python/FaserSCT_DigitizationConfigNew.py +++ b/Tracker/TrackerDigitization/FaserSCT_Digitization/python/FaserSCT_DigitizationConfigNew.py @@ -240,9 +240,10 @@ def FaserSCT_OutputCfg(flags): if flags.Digitization.TruthOutput: ItemList += ["TrackerSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) - acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) + acc.merge(OutputStreamCfg(flags, "RDO")) ostream = acc.getEventAlgo("OutputStreamRDO") ostream.TakeItemsFromInput = True + ostream.ItemList += ItemList return acc -- GitLab