From c22c3fb49e976d83391ece7933c454c538e4c6fd Mon Sep 17 00:00:00 2001 From: Eric Torrence <eric.torrence@cern.ch> Date: Wed, 11 May 2022 11:00:39 -0700 Subject: [PATCH] Add channels to waveform digi --- Calorimeter/CaloDigiAlgs/CMakeLists.txt | 4 +++- .../CaloDigiAlgs/python/CaloDigiAlgsConfig.py | 7 ++++++- .../CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx | 2 ++ Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h | 6 ++++++ Scintillator/ScintDigiAlgs/CMakeLists.txt | 4 +++- .../ScintDigiAlgs/python/ScintDigiAlgsConfig.py | 6 +++++- .../ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx | 2 ++ .../ScintDigiAlgs/src/ScintWaveformDigiAlg.h | 6 ++++++ .../ScintSimEvent/ScintSimEvent/ScintHit.h | 2 +- .../python/FaserSCT_DigitizationConfigNew.py | 2 +- Waveform/WaveRecAlgs/python/WaveRecAlgsConfig.py | 14 -------------- .../src/PseudoSimToWaveformRecTool.cxx | 4 ---- .../WaveRecTools/src/PseudoSimToWaveformRecTool.h | 4 ---- 13 files changed, 35 insertions(+), 28 deletions(-) diff --git a/Calorimeter/CaloDigiAlgs/CMakeLists.txt b/Calorimeter/CaloDigiAlgs/CMakeLists.txt index 5a4de58a..89d20eae 100644 --- a/Calorimeter/CaloDigiAlgs/CMakeLists.txt +++ b/Calorimeter/CaloDigiAlgs/CMakeLists.txt @@ -9,7 +9,9 @@ atlas_subdir( CaloDigiAlgs ) atlas_add_component( CaloDigiAlgs src/*.cxx src/*.h src/components/*.cxx - LINK_LIBRARIES AthenaBaseComps Identifier FaserCaloIdentifier StoreGateLib WaveRawEvent FaserCaloSimEvent WaveDigiToolsLib) + LINK_LIBRARIES AthenaBaseComps Identifier FaserCaloIdentifier + WaveformConditionsToolsLib StoreGateLib WaveRawEvent + FaserCaloSimEvent WaveDigiToolsLib) atlas_install_python_modules( python/*.py ) diff --git a/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py b/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py index ce45e625..793f7340 100644 --- a/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py +++ b/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py @@ -6,6 +6,7 @@ from AthenaConfiguration.ComponentFactory import CompFactory from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg +from WaveformConditionsTools.WaveformCableMappingConfig import WaveformCableMappingCfg # One stop shopping for normal FASER data def CaloWaveformDigitizationCfg(flags): @@ -17,6 +18,8 @@ def CaloWaveformDigitizationCfg(flags): acc.merge(CaloWaveformDigiCfg(flags, "CaloWaveformDigiAlg")) acc.merge(CaloWaveformDigitizationOutputCfg(flags)) + acc.merge(WaveformCableMappingCfg(flags)) + return acc # Return configured digitization algorithm from SIM hits @@ -54,6 +57,8 @@ def CaloWaveformDigitizationOutputCfg(flags, **kwargs): ] acc.merge(OutputStreamCfg(flags, "RDO")) ostream = acc.getEventAlgo("OutputStreamRDO") - ostream.TakeItemsFromInput = True # Copies all data from input file to output + # ostream.TakeItemsFromInput = True # Copies all data from input file to output + # ostream.TakeItemsFromInput = False + # Try turning this off ostream.ItemList += ItemList return acc diff --git a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx index c54e1e37..70b81b2c 100644 --- a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx +++ b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx @@ -20,6 +20,7 @@ CaloWaveformDigiAlg::initialize() { // Initalize tools ATH_CHECK( m_digiTool.retrieve() ); + ATH_CHECK( m_mappingTool.retrieve() ); // Set key to read waveform from ATH_CHECK( m_caloHitContainerKey.initialize() ); @@ -113,6 +114,7 @@ CaloWaveformDigiAlg::execute(const EventContext& ctx) const { RawWaveform* wfm = new RawWaveform(); wfm->setWaveform(0, w.second); wfm->setIdentifier(w.first); + wfm->setChannel(m_mappingTool->getChannelMapping(w.first)); wfm->setSamples(nsamples); waveformContainerHandle->push_back(wfm); } diff --git a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h index 8eeb0a44..25111bc9 100644 --- a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h +++ b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h @@ -10,6 +10,7 @@ // Tool classes #include "WaveDigiTools/IWaveformDigitisationTool.h" +#include "WaveformConditionsTools/IWaveformCableMappingTool.h" // Handles #include "StoreGate/ReadHandleKey.h" @@ -79,6 +80,11 @@ class CaloWaveformDigiAlg : public AthReentrantAlgorithm { ToolHandle<IWaveformDigitisationTool> m_digiTool {this, "WaveformDigitisationTool", "WaveformDigitisationTool"}; + /** + * @name Mapping tool + */ + ToolHandle<IWaveformCableMappingTool> m_mappingTool + {this, "WaveformCableMappingTool", "WaveformCableMappingTool"}; /** * @name Input HITS using SG::ReadHandleKey diff --git a/Scintillator/ScintDigiAlgs/CMakeLists.txt b/Scintillator/ScintDigiAlgs/CMakeLists.txt index 3ebe3d69..5c1874e2 100644 --- a/Scintillator/ScintDigiAlgs/CMakeLists.txt +++ b/Scintillator/ScintDigiAlgs/CMakeLists.txt @@ -9,7 +9,9 @@ atlas_subdir( ScintDigiAlgs ) atlas_add_component( ScintDigiAlgs src/*.cxx src/*.h src/components/*.cxx - LINK_LIBRARIES AthenaBaseComps Identifier ScintIdentifier StoreGateLib WaveRawEvent ScintSimEvent WaveDigiToolsLib) + LINK_LIBRARIES AthenaBaseComps Identifier ScintIdentifier + WaveformConditionsToolsLib StoreGateLib WaveRawEvent + ScintSimEvent WaveDigiToolsLib) atlas_install_python_modules( python/*.py ) diff --git a/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py b/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py index 292a19c0..8ea29b33 100644 --- a/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py +++ b/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py @@ -5,6 +5,8 @@ from AthenaConfiguration.ComponentFactory import CompFactory from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg +from WaveformConditionsTools.WaveformCableMappingConfig import WaveformCableMappingCfg + # Crystallball parameter dictionary used in simulated digitized wave reconstruction. # Crystalball function Parameters estimated from Deion's slides uploaded at # https://indico.cern.ch/event/1099652/contributions/4626975/attachments/2352595/4013927/Faser-Physics-run3933-plots.pdf (20/01/2022) @@ -35,6 +37,7 @@ def ScintWaveformDigitizationCfg(flags): acc.merge(ScintWaveformDigiCfg(flags, "VetoWaveformDigiAlg", "Veto")) acc.merge(ScintWaveformDigiCfg(flags, "PreshowerWaveformDigiAlg", "Preshower")) acc.merge(ScintWaveformDigitizationOutputCfg(flags)) + acc.merge(WaveformCableMappingCfg(flags)) return acc # Return configured digitization algorithm from SIM hits @@ -72,6 +75,7 @@ def ScintWaveformDigitizationOutputCfg(flags, **kwargs): ] acc.merge(OutputStreamCfg(flags, "RDO")) ostream = acc.getEventAlgo("OutputStreamRDO") - ostream.TakeItemsFromInput = True # Copies all data from input file to output + # ostream.TakeItemsFromInput = True # Copies all data from input file to output + # ostream.TakeItemsFromInput = False ostream.ItemList += ItemList return acc diff --git a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx index d5235a92..5ad0fe1e 100644 --- a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx +++ b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx @@ -17,6 +17,7 @@ ScintWaveformDigiAlg::initialize() { // Initalize tools ATH_CHECK( m_digiTool.retrieve() ); + ATH_CHECK( m_mappingTool.retrieve() ); // Set key to read waveform from ATH_CHECK( m_scintHitContainerKey.initialize() ); @@ -118,6 +119,7 @@ ScintWaveformDigiAlg::execute(const EventContext& ctx) const { RawWaveform* wfm = new RawWaveform(); wfm->setWaveform(0, w.second); wfm->setIdentifier(w.first); + wfm->setChannel(m_mappingTool->getChannelMapping(w.first)); wfm->setSamples(nsamples); waveformContainerHandle->push_back(wfm); } diff --git a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h index de033706..363218f9 100644 --- a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h +++ b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h @@ -10,6 +10,7 @@ // Tool classes #include "WaveDigiTools/IWaveformDigitisationTool.h" +#include "WaveformConditionsTools/IWaveformCableMappingTool.h" // Handles #include "StoreGate/ReadHandleKey.h" @@ -92,6 +93,11 @@ class ScintWaveformDigiAlg : public AthReentrantAlgorithm { ToolHandle<IWaveformDigitisationTool> m_digiTool {this, "WaveformDigitisationTool", "WaveformDigitisationTool"}; + /** + * @name Mapping tool + */ + ToolHandle<IWaveformCableMappingTool> m_mappingTool + {this, "WaveformCableMappingTool", "WaveformCableMappingTool"}; /** * @name Input HITS using SG::ReadHandleKey diff --git a/Scintillator/ScintSimEvent/ScintSimEvent/ScintHit.h b/Scintillator/ScintSimEvent/ScintSimEvent/ScintHit.h index dbd77e27..eb79c2fb 100644 --- a/Scintillator/ScintSimEvent/ScintSimEvent/ScintHit.h +++ b/Scintillator/ScintSimEvent/ScintSimEvent/ScintHit.h @@ -82,7 +82,7 @@ public: // Const methods: /////////////////////////////////////////////////////////////////// - // This is the HitId, used in Geant, this is not the detector Identifier + // This is the HitId, used in Geant. This is not the detector Identifier unsigned int identify() const; // This is the detector readout Identifier (pmt Identifier) diff --git a/Tracker/TrackerDigitization/FaserSCT_Digitization/python/FaserSCT_DigitizationConfigNew.py b/Tracker/TrackerDigitization/FaserSCT_Digitization/python/FaserSCT_DigitizationConfigNew.py index c9f267da..6ae2b277 100644 --- a/Tracker/TrackerDigitization/FaserSCT_Digitization/python/FaserSCT_DigitizationConfigNew.py +++ b/Tracker/TrackerDigitization/FaserSCT_Digitization/python/FaserSCT_DigitizationConfigNew.py @@ -242,7 +242,7 @@ def FaserSCT_OutputCfg(flags): acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO")) ostream = acc.getEventAlgo("OutputStreamRDO") - ostream.TakeItemsFromInput = True + #ostream.TakeItemsFromInput = True # Don't write hits to RDO by default ostream.ItemList += ItemList return acc diff --git a/Waveform/WaveRecAlgs/python/WaveRecAlgsConfig.py b/Waveform/WaveRecAlgs/python/WaveRecAlgsConfig.py index 8bfa3255..daf5ae7c 100644 --- a/Waveform/WaveRecAlgs/python/WaveRecAlgsConfig.py +++ b/Waveform/WaveRecAlgs/python/WaveRecAlgsConfig.py @@ -19,20 +19,6 @@ def WaveformReconstructionCfg(flags): if not flags.Input.isMC: acc.merge(WaveformClockRecCfg(flags, "ClockRecAlg")) - if flags.Input.isMC: - if "TB" not in flags.GeoModel.FaserVersion: - acc.merge(PseudoScintHitToWaveformRecCfg(flags, "PseudoTriggerHitWaveformRecAlg", "Trigger")) - - acc.merge(PseudoScintHitToWaveformRecCfg(flags, "PseudoVetoHitToWaveformRecAlg", "Veto")) - acc.merge(PseudoScintHitToWaveformRecCfg(flags, "PseudoPresehowerHitWaveformRecAlg", "Preshower")) - acc.merge(PseudoCaloHitToWaveformRecCfg(flags, "PseudoCaloHitWaveformRecAlg")) - - # Also need cable mapping here - from WaveformConditionsTools.WaveformCableMappingConfig import WaveformCableMappingCfg - acc.merge(WaveformCableMappingCfg(flags)) - - return acc - acc.merge(WaveformHitRecCfg(flags, "TriggerWaveformRecAlg", "Trigger")) acc.merge(WaveformHitRecCfg(flags, "VetoWaveformRecAlg", "Veto")) acc.merge(WaveformHitRecCfg(flags, "PreshowerWaveformRecAlg", "Preshower")) diff --git a/Waveform/WaveRecTools/src/PseudoSimToWaveformRecTool.cxx b/Waveform/WaveRecTools/src/PseudoSimToWaveformRecTool.cxx index c0a2a928..93ae1397 100644 --- a/Waveform/WaveRecTools/src/PseudoSimToWaveformRecTool.cxx +++ b/Waveform/WaveRecTools/src/PseudoSimToWaveformRecTool.cxx @@ -25,7 +25,6 @@ PseudoSimToWaveformRecTool::initialize() { ATH_MSG_INFO( name() << "::initalize()" ); ATH_CHECK( m_mappingTool.retrieve() ); -// ATH_CHECK( m_timingTool.retrieve() ); return StatusCode::SUCCESS; } @@ -49,15 +48,12 @@ PseudoSimToWaveformRecTool::make_hits(const std::map<Identifier, float>& sums, xAOD::WaveformHit* hit = new xAOD::WaveformHit(); container->push_back(hit); - // offset = m_timingTool->triggerTimeOffset(hit->channel()); - hit->set_identifier(id.first); hit->set_channel(m_mappingTool->getChannelMapping(id.first)); hit->set_peak(0); hit->set_mean(0); hit->set_width(0); hit->set_integral(id.second); - // hit->set_localtime(trigger_time + offset); hit->set_localtime(0); hit->set_trigger_time(0); hit->set_raw_peak(0); diff --git a/Waveform/WaveRecTools/src/PseudoSimToWaveformRecTool.h b/Waveform/WaveRecTools/src/PseudoSimToWaveformRecTool.h index eb291106..e1174797 100644 --- a/Waveform/WaveRecTools/src/PseudoSimToWaveformRecTool.h +++ b/Waveform/WaveRecTools/src/PseudoSimToWaveformRecTool.h @@ -15,7 +15,6 @@ // Tool classes #include "WaveformConditionsTools/IWaveformCableMappingTool.h" -#include "WaveformConditionsTools/IWaveformTimingTool.h" //Gaudi #include "GaudiKernel/ToolHandle.h" @@ -39,9 +38,6 @@ class PseudoSimToWaveformRecTool: public extends<AthAlgTool, IPseudoSimToWavefor ToolHandle<IWaveformCableMappingTool> m_mappingTool {this, "WaveformCableMappingTool", "WaveformCableMappingTool"}; - //ToolHandle<IWaveformTimingTool> m_timingTool - // {this, "WaveformTimingTool", "WaveformTimingTool"}; - }; #endif // WAVERECTOOLS_PSEUDOSIMTOWAVEFORMRECTOOL_H -- GitLab