From 0201b3535decefd790686bea1edd1a58ee413edf Mon Sep 17 00:00:00 2001 From: mariajmz Date: Tue, 30 Apr 2024 13:33:11 +0200 Subject: [PATCH 1/6] adding noise parameter --- inc/TRestDetectorSignalToRawSignalProcess.h | 4 ++++ src/TRestDetectorSignalToRawSignalProcess.cxx | 3 +++ 2 files changed, 7 insertions(+) diff --git a/inc/TRestDetectorSignalToRawSignalProcess.h b/inc/TRestDetectorSignalToRawSignalProcess.h index f59f6d0..43193e3 100644 --- a/inc/TRestDetectorSignalToRawSignalProcess.h +++ b/inc/TRestDetectorSignalToRawSignalProcess.h @@ -83,6 +83,9 @@ class TRestDetectorSignalToRawSignalProcess : public TRestEventProcess { /// avoid artifacts in the signal (e.g. signals not getting cut when they should) Double_t fShapingTime = 0.0; // us + //Noise level + Double_t fNoiseLevel = 0.0; + public: inline Double_t GetSampling() const { return fSampling; } @@ -118,6 +121,7 @@ class TRestDetectorSignalToRawSignalProcess : public TRestEventProcess { Double_t shapingTime = 0.0; Double_t calibrationGain = 100; Double_t calibrationOffset = 0; + Double_t noiseLevel = 0.0; TVector2 calibrationEnergy = {0, 0}; TVector2 calibrationRange = {0, 0}; }; diff --git a/src/TRestDetectorSignalToRawSignalProcess.cxx b/src/TRestDetectorSignalToRawSignalProcess.cxx index 9bedbfc..6ec8556 100644 --- a/src/TRestDetectorSignalToRawSignalProcess.cxx +++ b/src/TRestDetectorSignalToRawSignalProcess.cxx @@ -381,6 +381,7 @@ TRestEvent* TRestDetectorSignalToRawSignalProcess::ProcessEvent(TRestEvent* inpu type = ""; } + double noiseLevel = fParametersMap.at(type).noiseLevel; double sampling = fParametersMap.at(type).sampling; double shapingTime = fParametersMap.at(type).shapingTime; double calibrationGain = fParametersMap.at(type).calibrationGain; @@ -547,6 +548,8 @@ void TRestDetectorSignalToRawSignalProcess::InitFromConfigFile() { Get2DVectorParameterWithUnits("calibrationEnergy" + typeCamelCase, parameters.calibrationEnergy); parameters.calibrationRange = Get2DVectorParameterWithUnits("calibrationRange" + typeCamelCase, parameters.calibrationRange); + parameters.noiseLevel = + GetDblParameterWithUnits("noiseLevel" + typeCamelCase, parameters.noiseLevel); const bool isLinearCalibration = (parameters.calibrationEnergy.Mod() != 0 && parameters.calibrationRange.Mod() != 0); From 5c06decc8a640820454bbe5ee54d33fd00981fee Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 11:36:38 +0000 Subject: [PATCH 2/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- inc/TRestDetectorSignalToRawSignalProcess.h | 2 +- src/TRestDetectorSignalToRawSignalProcess.cxx | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/inc/TRestDetectorSignalToRawSignalProcess.h b/inc/TRestDetectorSignalToRawSignalProcess.h index 43193e3..85b62b8 100644 --- a/inc/TRestDetectorSignalToRawSignalProcess.h +++ b/inc/TRestDetectorSignalToRawSignalProcess.h @@ -83,7 +83,7 @@ class TRestDetectorSignalToRawSignalProcess : public TRestEventProcess { /// avoid artifacts in the signal (e.g. signals not getting cut when they should) Double_t fShapingTime = 0.0; // us - //Noise level + // Noise level Double_t fNoiseLevel = 0.0; public: diff --git a/src/TRestDetectorSignalToRawSignalProcess.cxx b/src/TRestDetectorSignalToRawSignalProcess.cxx index 6ec8556..6046c6b 100644 --- a/src/TRestDetectorSignalToRawSignalProcess.cxx +++ b/src/TRestDetectorSignalToRawSignalProcess.cxx @@ -548,8 +548,7 @@ void TRestDetectorSignalToRawSignalProcess::InitFromConfigFile() { Get2DVectorParameterWithUnits("calibrationEnergy" + typeCamelCase, parameters.calibrationEnergy); parameters.calibrationRange = Get2DVectorParameterWithUnits("calibrationRange" + typeCamelCase, parameters.calibrationRange); - parameters.noiseLevel = - GetDblParameterWithUnits("noiseLevel" + typeCamelCase, parameters.noiseLevel); + parameters.noiseLevel = GetDblParameterWithUnits("noiseLevel" + typeCamelCase, parameters.noiseLevel); const bool isLinearCalibration = (parameters.calibrationEnergy.Mod() != 0 && parameters.calibrationRange.Mod() != 0); From 24b4904c31f9f62d4f7f4e3f9b30aa1997e2f03f Mon Sep 17 00:00:00 2001 From: Luis Antonio Obis Aparicio Date: Mon, 6 May 2024 11:26:33 +0200 Subject: [PATCH 3/6] gauss noise --- inc/TRestDetectorSignalToRawSignalProcess.h | 8 +++----- src/TRestDetectorSignalToRawSignalProcess.cxx | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/inc/TRestDetectorSignalToRawSignalProcess.h b/inc/TRestDetectorSignalToRawSignalProcess.h index 85b62b8..6255044 100644 --- a/inc/TRestDetectorSignalToRawSignalProcess.h +++ b/inc/TRestDetectorSignalToRawSignalProcess.h @@ -141,19 +141,17 @@ class TRestDetectorSignalToRawSignalProcess : public TRestEventProcess { /// Returns the name of this process const char* GetProcessName() const override { return "signalToRawSignal"; } - // Constructor TRestDetectorSignalToRawSignalProcess(); - TRestDetectorSignalToRawSignalProcess(const char* configFilename); + explicit TRestDetectorSignalToRawSignalProcess(const char* configFilename); - // Destructor - ~TRestDetectorSignalToRawSignalProcess(); + ~TRestDetectorSignalToRawSignalProcess() override; private: std::map fParametersMap; std::set fReadoutTypes; - ClassDefOverride(TRestDetectorSignalToRawSignalProcess, 7); + ClassDefOverride(TRestDetectorSignalToRawSignalProcess, 8); }; #endif diff --git a/src/TRestDetectorSignalToRawSignalProcess.cxx b/src/TRestDetectorSignalToRawSignalProcess.cxx index 6046c6b..f0b717b 100644 --- a/src/TRestDetectorSignalToRawSignalProcess.cxx +++ b/src/TRestDetectorSignalToRawSignalProcess.cxx @@ -421,7 +421,7 @@ TRestEvent* TRestDetectorSignalToRawSignalProcess::ProcessEvent(TRestEvent* inpu if (t > timeStart && t < timeEnd) { // convert physical time (in us) to timeBin - Int_t timeBin = (Int_t)round((t - timeStart) / sampling); + auto timeBin = (Int_t)round((t - timeStart) / sampling); if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Warning) { if (timeBin < 0 || timeBin > fNPoints) { @@ -435,6 +435,13 @@ TRestEvent* TRestDetectorSignalToRawSignalProcess::ProcessEvent(TRestEvent* inpu } } + // Noise before shaping + if (noiseLevel > 0) { + for (int i = 0; i < fNPoints; i++) { + data[i] += gRandom->Gaus(0, noiseLevel); + } + } + if (shapingTime > 0) { const auto sinShaper = [](Double_t t) -> Double_t { if (t <= 0) { @@ -467,6 +474,13 @@ TRestEvent* TRestDetectorSignalToRawSignalProcess::ProcessEvent(TRestEvent* inpu } } data = dataAfterShaping; + + // Noise after shaping + if (noiseLevel > 0) { + for (int i = 0; i < fNPoints; i++) { + data[i] += gRandom->Gaus(0, noiseLevel); + } + } } TRestRawSignal rawSignal; From dba76fe14b279a2b5d721fb9eeb98b4fee3b19dd Mon Sep 17 00:00:00 2001 From: Luis Antonio Obis Aparicio Date: Mon, 6 May 2024 13:02:51 +0200 Subject: [PATCH 4/6] noise level --- src/TRestDetectorSignalToRawSignalProcess.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/TRestDetectorSignalToRawSignalProcess.cxx b/src/TRestDetectorSignalToRawSignalProcess.cxx index f0b717b..ccda2c7 100644 --- a/src/TRestDetectorSignalToRawSignalProcess.cxx +++ b/src/TRestDetectorSignalToRawSignalProcess.cxx @@ -615,6 +615,7 @@ void TRestDetectorSignalToRawSignalProcess::InitFromConfigFile() { // load default parameters (for backward compatibility) fSampling = fParametersMap.at(defaultType).sampling; fShapingTime = fParametersMap.at(defaultType).shapingTime; + fNoiseLevel = fParametersMap.at(defaultType).noiseLevel; fCalibrationGain = fParametersMap.at(defaultType).calibrationGain; fCalibrationOffset = fParametersMap.at(defaultType).calibrationOffset; fCalibrationEnergy = fParametersMap.at(defaultType).calibrationEnergy; From baaa79a665595a6759a11ede082073854524d423 Mon Sep 17 00:00:00 2001 From: mariajmz Date: Mon, 6 May 2024 17:54:41 +0200 Subject: [PATCH 5/6] print metadata --- src/TRestDetectorSignalToRawSignalProcess.cxx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/TRestDetectorSignalToRawSignalProcess.cxx b/src/TRestDetectorSignalToRawSignalProcess.cxx index ccda2c7..0d09be5 100644 --- a/src/TRestDetectorSignalToRawSignalProcess.cxx +++ b/src/TRestDetectorSignalToRawSignalProcess.cxx @@ -695,6 +695,10 @@ void TRestDetectorSignalToRawSignalProcess::PrintMetadata() { if (shapingTime > 0) { RESTMetadata << "Shaping time: " << shapingTime * 1000 << " ns" << RESTendl; } + const double noiseLevel = fParametersMap.at(readoutType).noiseLevel; + if(noiseLevel > 0){ + RESTMetadata << "Noise Level: " << noiseLevel << RESTendl; + } if (IsLinearCalibration()) { RESTMetadata << "Calibration energies: (" << fParametersMap.at(readoutType).calibrationEnergy.X() From 7df364d5c3b4503d49856bf136902c9629ae4348 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 15:55:21 +0000 Subject: [PATCH 6/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/TRestDetectorSignalToRawSignalProcess.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TRestDetectorSignalToRawSignalProcess.cxx b/src/TRestDetectorSignalToRawSignalProcess.cxx index 0d09be5..36dcd62 100644 --- a/src/TRestDetectorSignalToRawSignalProcess.cxx +++ b/src/TRestDetectorSignalToRawSignalProcess.cxx @@ -696,7 +696,7 @@ void TRestDetectorSignalToRawSignalProcess::PrintMetadata() { RESTMetadata << "Shaping time: " << shapingTime * 1000 << " ns" << RESTendl; } const double noiseLevel = fParametersMap.at(readoutType).noiseLevel; - if(noiseLevel > 0){ + if (noiseLevel > 0) { RESTMetadata << "Noise Level: " << noiseLevel << RESTendl; }