diff --git a/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py b/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py index 6a0b9e35717e92eabed64b111b811ddf6283c85d..cd0c9a454139d5906dd2e01ee0d1cc09b1697f76 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 718dcb4f398aa2ad110510c622dd159e81969a54..8e60aefaf9db417d6a583b2b2ee59dd279d1f05a 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 b9d0708be4e7d8b5c443397c6df0826b3f95d2df..5ef818999634d592b21142b88ad2cee5c1a324f1 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 7c322060ab68f8580cc6b517743edf46209dee31..243e4493dd117e6758c894a7904115b3d3941ec3 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 03c1873d11d4ecd83d2d8ad22eef07a76b7338a2..b25080419ad0a7ea64f3933a0eb3acfdfe4c7eac 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 a4bd9fb2c54f97e9983106eb6743c00bb772e585..c9f267da7d9d2ba0c6bc973c3fa949b65c217ecc 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