From f1fee5dee7b486e719b16d31e5ecb131b0e67cf5 Mon Sep 17 00:00:00 2001 From: Carl Gwilliam <gwilliam@hep.ph.liv.ac.uk> Date: Tue, 14 Feb 2023 16:34:37 +0000 Subject: [PATCH] fix float to int trunncation in digi --- Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx | 5 +++-- Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx | 5 +++-- .../WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.h | 2 +- Waveform/WaveDigiTools/src/WaveformDigitisationTool.cxx | 4 ++-- Waveform/WaveDigiTools/src/WaveformDigitisationTool.h | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx index 8ea1d4a3..ea58f4ad 100644 --- a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx +++ b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx @@ -6,6 +6,7 @@ #include <map> #include <utility> +#include <cmath> CaloWaveformDigiAlg::CaloWaveformDigiAlg(const std::string& name, ISvcLocator* pSvcLocator) @@ -122,8 +123,8 @@ CaloWaveformDigiAlg::execute(const EventContext& ctx) const { // Subtract count from basleine and add result to correct waveform vector for (const auto& c : counts) { - unsigned int baseline = m_digiTool->generate_baseline(m_base_mean, m_base_rms); - int value = baseline - c.second; + double baseline = m_digiTool->generate_baseline(m_base_mean, m_base_rms); + int value = std::round(baseline - c.second); if (value < 0) { ATH_MSG_WARNING("Found pulse " << c.second << " larger than baseline " << c.first); diff --git a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx index 3cb70517..9d1ae371 100644 --- a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx +++ b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx @@ -3,6 +3,7 @@ #include "ScintSimEvent/ScintHitIdHelper.h" #include <map> +#include <cmath> ScintWaveformDigiAlg::ScintWaveformDigiAlg(const std::string& name, @@ -170,8 +171,8 @@ ScintWaveformDigiAlg::execute(const EventContext& ctx) const { // Subtract count from basleine and add result to correct waveform vector for (const auto& c : counts) { - unsigned int baseline = m_digiTool->generate_baseline(m_base_mean, m_base_rms); - int value = baseline - c.second; + double baseline = m_digiTool->generate_baseline(m_base_mean, m_base_rms); + int value = std::round(baseline - c.second); if (value < 0) { ATH_MSG_WARNING("Found pulse " << c.second << " larger than baseline " << c.first); diff --git a/Waveform/WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.h b/Waveform/WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.h index c3035190..37cb7af1 100644 --- a/Waveform/WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.h +++ b/Waveform/WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.h @@ -51,7 +51,7 @@ public: virtual std::vector<float> evaluate_timekernel(TF1* kernel) const = 0; /// Generate random baseline - virtual unsigned int generate_baseline(int mean, int rms) const = 0; + virtual float generate_baseline(float mean, float rms) const = 0; /// Create structure to store pulse for each channel template <class T> diff --git a/Waveform/WaveDigiTools/src/WaveformDigitisationTool.cxx b/Waveform/WaveDigiTools/src/WaveformDigitisationTool.cxx index 375519e6..3a48027d 100644 --- a/Waveform/WaveDigiTools/src/WaveformDigitisationTool.cxx +++ b/Waveform/WaveDigiTools/src/WaveformDigitisationTool.cxx @@ -41,7 +41,7 @@ WaveformDigitisationTool::evaluate_timekernel(TF1* kernel) const { return timekernel; } -unsigned int -WaveformDigitisationTool::generate_baseline(int mean, int rms) const { +float +WaveformDigitisationTool::generate_baseline(float mean, float rms) const { return m_random->Gaus(mean, rms); } diff --git a/Waveform/WaveDigiTools/src/WaveformDigitisationTool.h b/Waveform/WaveDigiTools/src/WaveformDigitisationTool.h index e2dd5169..b6554c33 100644 --- a/Waveform/WaveDigiTools/src/WaveformDigitisationTool.h +++ b/Waveform/WaveDigiTools/src/WaveformDigitisationTool.h @@ -32,7 +32,7 @@ class WaveformDigitisationTool: public extends<AthAlgTool, IWaveformDigitisation std::vector<float> evaluate_timekernel(TF1* kernel) const; /// Generate random baseline - unsigned int generate_baseline(int mean, int rms) const; + float generate_baseline(float mean, float rms) const; private: -- GitLab