diff --git a/Calorimeter/CaloDigiAlgs/CMakeLists.txt b/Calorimeter/CaloDigiAlgs/CMakeLists.txt index 5a4de58a7469a2acb320de9c758ea1aef98ebcac..89d20eae8e67a52daa6a23b60825e06f43610ec3 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 ce45e6257885956f5edb6284780ff9756b51b9fc..793f73401b54c91724bdb6283fa4c6099811628c 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 c54e1e37344d963f28a12f9c9f8b5d86781f93c4..70b81b2c1ba4509a44ecd523dbed6b210bacd572 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 8eeb0a44eba0dde0ede044036b57406cfcf25efc..25111bc9655ae99d97e7ea56a98524102ce151f3 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 3ebe3d691decc51518eb6f64ecae03efd76aaf73..5c1874e2502241f919efb21ade0e7c26de7369ca 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 292a19c0890672bb3a1530b080d936c8716a2fff..8ea29b33709b195e9bfb56d9dd8e1ed03608e590 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 d5235a92ccdacbc2631e4dafc66a3f9dea48dc9d..5ad0fe1ed286c4a310895c327f4739d05ba3a05a 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 de03370698620986377c695852af07c7d8c79b18..363218f9c249bdbffac7e58b5331958d4cedbc94 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 dbd77e2758ba91a642d40c35aad79f8f5757bd14..eb79c2fb3a0a80e22783d0314a971d75a83093a6 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 c9f267da7d9d2ba0c6bc973c3fa949b65c217ecc..6ae2b277c89ed09edee634d4fdc6808faec2fa28 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 8bfa32558d6c58d9bf9eb57416ecd7c598566e8f..daf5ae7ca6ee1bd3474421ae0e1e9156c2263a40 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 c0a2a928dad2f59abb8b42c352eeae5a119cbbb1..93ae1397e3c591b2f54b3765f0138042878e25bc 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 eb2911067fc0cdecdebc30ecb79056a721cbf29f..e117479737d3dad28c1a8dfb7065ab1742d13884 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