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 8ea1d4a3c..ea58f4ad8 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 3cb70517b..9d1ae371d 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 c30351902..37cb7af18 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 375519e6a..3a48027d5 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 e2dd51691..b6554c337 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