diff --git a/inc/TRestRawFFT.h b/inc/TRestRawFFT.h index 5ffd3bfb..6d399b0e 100644 --- a/inc/TRestRawFFT.h +++ b/inc/TRestRawFFT.h @@ -42,7 +42,7 @@ class TRestRawFFT : public TObject { inline Int_t GetNfft() const { return fNfft; } - void GetSignal(TRestRawSignal* sgnl); + void GetSignal(TRestRawSignal* signal); // Setters void SetNfft(Int_t n); @@ -56,7 +56,7 @@ class TRestRawFFT : public TObject { void GaussianSecondOrderResponse(Double_t f1, Double_t f2, Double_t Ao, Double_t sigma); // FFT processing - void ForwardSignalFFT(TRestRawSignal* sgnl, Int_t fNStart = 0, Int_t fNEnd = 0); + void ForwardSignalFFT(TRestRawSignal* signal, Int_t fNStart = 0, Int_t fNEnd = 0); void BackwardFFT(); void RenormalizeNode(Int_t n, Double_t factor); diff --git a/inc/TRestRawSignal.h b/inc/TRestRawSignal.h index 85b4a524..9ae1654c 100644 --- a/inc/TRestRawSignal.h +++ b/inc/TRestRawSignal.h @@ -30,6 +30,7 @@ #include #include +#include #include //! It defines a Short_t array with a physical parameter that evolves in time using a fixed time bin. @@ -87,7 +88,7 @@ class TRestRawSignal { inline Int_t GetID() const { return fSignalID; } /// Returns the actual number of points, or size of the signal - inline Int_t GetNumberOfPoints() const { return fSignalData.size(); } + inline size_t GetNumberOfPoints() const { return fSignalData.size(); } /// Returns a std::vector containing the indexes of data points over threshold inline std::vector GetPointsOverThreshold() const { return fPointsOverThreshold; } @@ -118,11 +119,16 @@ class TRestRawSignal { /// Returns false if the baseline and its baseline fluctuation was not initialized. inline Bool_t isBaseLineInitialized() const { return !(fBaseLineSigma == 0 && fBaseLine == 0); } + /// Returns the (time, amplitude) of the peaks in the signal. + /// Peaks are defined as the points that are above the threshold and are separated by a minimum distance + /// in time bin units. The threshold must be set in absolute value (regardless of the baseline) + std::vector> GetPeaks(double threshold, UShort_t distance = 5) const; + Double_t GetData(Int_t n) const; Double_t GetRawData(Int_t n) const; - Short_t operator[](Int_t n); + Short_t operator[](size_t n); /// It sets the id number of the signal inline void SetSignalID(Int_t sID) { fSignalID = sID; } diff --git a/inc/TRestRawSignalEvent.h b/inc/TRestRawSignalEvent.h index e03eaf9e..b8608524 100644 --- a/inc/TRestRawSignalEvent.h +++ b/inc/TRestRawSignalEvent.h @@ -66,7 +66,7 @@ class TRestRawSignalEvent : public TRestEvent { void RemoveSignalWithId(Int_t sId); - void AddChargeToSignal(Int_t sgnlID, Int_t bin, Short_t value); + void AddChargeToSignal(Int_t signalID, Int_t bin, Short_t value); void SetTailPoints(Int_t p) { for (int n = 0; n < GetNumberOfSignals(); n++) fSignal[n].SetTailPoints(p); @@ -146,8 +146,8 @@ class TRestRawSignalEvent : public TRestEvent { Double_t GetMaxValue(); Double_t GetMinValue(); - Double_t GetMinTime(); - Double_t GetMaxTime(); + Double_t GetMinTime() const; + Double_t GetMaxTime() const; // Default void Initialize(); diff --git a/inc/TRestRawUSTCToSignalProcess.h b/inc/TRestRawUSTCToSignalProcess.h index 9e3dfd4a..6c1e4631 100644 --- a/inc/TRestRawUSTCToSignalProcess.h +++ b/inc/TRestRawUSTCToSignalProcess.h @@ -84,7 +84,7 @@ struct USTCDataFrame { class TRestRawUSTCToSignalProcess : public TRestRawToSignalProcess { private: #ifndef __CINT__ - TRestRawSignal sgnl; //! + TRestRawSignal signal; //! UChar_t fHeader[64]; UChar_t fEnding[32]; diff --git a/inc/TRestRawVetoAnalysisProcess.h b/inc/TRestRawVetoAnalysisProcess.h index 4a280bf9..16a390ce 100644 --- a/inc/TRestRawVetoAnalysisProcess.h +++ b/inc/TRestRawVetoAnalysisProcess.h @@ -105,8 +105,8 @@ class TRestRawVetoAnalysisProcess : public TRestEventProcess { return output; } - Int_t GetGroupIndex(std::string groupName); - std::string GetGroupIds(std::string groupName); + Int_t GetGroupIndex(const std::string& groupName); + std::string GetGroupIds(const std::string& groupName); TRestRawVetoAnalysisProcess(); TRestRawVetoAnalysisProcess(const char* configFilename); diff --git a/pipeline/processes/commonNoise/commonNoise.C b/pipeline/processes/commonNoise/commonNoise.C index b411ff9a..530b3cde 100755 --- a/pipeline/processes/commonNoise/commonNoise.C +++ b/pipeline/processes/commonNoise/commonNoise.C @@ -1,12 +1,12 @@ Int_t commonNoise() { TRestRawSignalEvent* ev = new TRestRawSignalEvent(); - TRestRawSignal* sgnl = new TRestRawSignal(); - for (int n = 0; n < 512; n++) sgnl->AddPoint((Short_t)(50 * TMath::Sin(2 * TMath::Pi() * n / 200))); + TRestRawSignal* signal = new TRestRawSignal(); + for (int n = 0; n < 512; n++) signal->AddPoint((Short_t)(50 * TMath::Sin(2 * TMath::Pi() * n / 200))); for (int n = 0; n < 205; n++) { - sgnl->SetID(n); - ev->AddSignal(*sgnl); + signal->SetID(n); + ev->AddSignal(*signal); } string cfgFile = "metadata.rml"; diff --git a/pipeline/processes/fit/GeneralFit.C b/pipeline/processes/fit/GeneralFit.C index f6f3147a..5c2d53ea 100644 --- a/pipeline/processes/fit/GeneralFit.C +++ b/pipeline/processes/fit/GeneralFit.C @@ -10,12 +10,12 @@ using namespace std; Int_t GeneralFit(Bool_t draw = false) { TRestRawSignalEvent* ev = new TRestRawSignalEvent(); - TRestRawSignal* sgnl = new TRestRawSignal(); + TRestRawSignal* signal = new TRestRawSignal(); for (int n = 0; n < 512; n++) { - sgnl->AddPoint((Double_t)0); + signal->AddPoint((Double_t)0); } - sgnl->IncreaseBinBy(70, 100); - ev->AddSignal(*sgnl); + signal->IncreaseBinBy(70, 100); + ev->AddSignal(*signal); ///// Initializing processes through metadata definition string cfgFile = "metadata.rml"; diff --git a/pipeline/processes/fit/fit.C b/pipeline/processes/fit/fit.C index 4254d822..ba206d32 100755 --- a/pipeline/processes/fit/fit.C +++ b/pipeline/processes/fit/fit.C @@ -10,10 +10,10 @@ using namespace std; Int_t fit(Bool_t draw = false) { TRestRawSignalEvent* ev = new TRestRawSignalEvent(); - TRestRawSignal* sgnl = new TRestRawSignal(); - for (int n = 0; n < 512; n++) sgnl->AddPoint(0); - sgnl->IncreaseBinBy(70, 100); - ev->AddSignal(*sgnl); + TRestRawSignal* signal = new TRestRawSignal(); + for (int n = 0; n < 512; n++) signal->AddPoint(0); + signal->IncreaseBinBy(70, 100); + ev->AddSignal(*signal); ///// Initializing processes through metadata definition string cfgFile = "metadata.rml"; diff --git a/pipeline/processes/noise/addNoise.py b/pipeline/processes/noise/addNoise.py index 91cf535d..2ac83540 100755 --- a/pipeline/processes/noise/addNoise.py +++ b/pipeline/processes/noise/addNoise.py @@ -7,12 +7,12 @@ rawEv = ROOT.TRestRawSignalEvent() -sgnl = ROOT.TRestRawSignal() +signal = ROOT.TRestRawSignal() for x in range(0, 512): - sgnl.AddPoint(0) + signal.AddPoint(0) -rawEv.AddSignal(sgnl) +rawEv.AddSignal(signal) addNoiseProcess = ROOT.TRestRawSignalAddNoiseProcess("metadata.rml") diff --git a/pipeline/processes/shaping/shaping.C b/pipeline/processes/shaping/shaping.C index b1fc4f9c..c273a39a 100755 --- a/pipeline/processes/shaping/shaping.C +++ b/pipeline/processes/shaping/shaping.C @@ -1,12 +1,12 @@ Int_t shaping(Bool_t draw = false) { TRestRawSignalEvent* ev = new TRestRawSignalEvent(); - TRestRawSignal* sgnl = new TRestRawSignal(512); + TRestRawSignal* signal = new TRestRawSignal(512); - sgnl->IncreaseBinBy(170, 100); - sgnl->IncreaseBinBy(250, 250); + signal->IncreaseBinBy(170, 100); + signal->IncreaseBinBy(250, 250); - ev->AddSignal(*sgnl); + ev->AddSignal(*signal); // Initializing processes string cfgFile1 = "gaus.rml"; @@ -37,17 +37,17 @@ Int_t shaping(Bool_t draw = false) { if (draw) { TRestRawSignalEvent* combinedEv = new TRestRawSignalEvent(); - TRestRawSignal sgnl1 = *ev->GetSignal(0); - sgnl1.SetID(0); - combinedEv->AddSignal(sgnl1); + TRestRawSignal signal1 = *ev->GetSignal(0); + signal1.SetID(0); + combinedEv->AddSignal(signal1); - TRestRawSignal sgnl2 = *gausEvent->GetSignal(0); - sgnl2.SetID(1); - combinedEv->AddSignal(sgnl2); + TRestRawSignal signal2 = *gausEvent->GetSignal(0); + signal2.SetID(1); + combinedEv->AddSignal(signal2); - TRestRawSignal sgnl3 = *agetEvent->GetSignal(0); - sgnl3.SetID(2); - combinedEv->AddSignal(sgnl3); + TRestRawSignal signal3 = *agetEvent->GetSignal(0); + signal3.SetID(2); + combinedEv->AddSignal(signal3); TCanvas* c = new TCanvas("c0", "", 800, 600); combinedEv->DrawEvent(); @@ -75,7 +75,7 @@ Int_t shaping(Bool_t draw = false) { } delete shaper1, shaper2; - delete sgnl; + delete signal; delete ev; cout << "[\033[92m OK \x1b[0m]" << endl; diff --git a/pipeline/processes/veto/vetoValidation.py b/pipeline/processes/veto/vetoValidation.py index 43fc4707..4a3306c4 100755 --- a/pipeline/processes/veto/vetoValidation.py +++ b/pipeline/processes/veto/vetoValidation.py @@ -7,25 +7,25 @@ rawEv = ROOT.TRestRawSignalEvent() -sgnl1 = ROOT.TRestRawSignal() -sgnl1.SetID(4688) -sgnl2 = ROOT.TRestRawSignal() -sgnl2.SetID(4705) -sgnl3 = ROOT.TRestRawSignal() -sgnl3.SetID(4676) -sgnl4 = ROOT.TRestRawSignal() -sgnl4.SetID(4) +signal1 = ROOT.TRestRawSignal() +signal1.SetID(4688) +signal2 = ROOT.TRestRawSignal() +signal2.SetID(4705) +signal3 = ROOT.TRestRawSignal() +signal3.SetID(4676) +signal4 = ROOT.TRestRawSignal() +signal4.SetID(4) for x in range(0, 512): - sgnl1.AddPoint(0) - sgnl2.AddPoint(0) - sgnl3.AddPoint(0) - sgnl4.AddPoint(0) - -rawEv.AddSignal(sgnl1) -rawEv.AddSignal(sgnl2) -rawEv.AddSignal(sgnl3) -rawEv.AddSignal(sgnl4) + signal1.AddPoint(0) + signal2.AddPoint(0) + signal3.AddPoint(0) + signal4.AddPoint(0) + +rawEv.AddSignal(signal1) +rawEv.AddSignal(signal2) +rawEv.AddSignal(signal3) +rawEv.AddSignal(signal4) addVetoProcess = ROOT.TRestRawVetoAnalysisProcess("veto.rml") diff --git a/src/TRestRawBaseLineCorrectionProcess.cxx b/src/TRestRawBaseLineCorrectionProcess.cxx index 55442ebc..3c0751a5 100644 --- a/src/TRestRawBaseLineCorrectionProcess.cxx +++ b/src/TRestRawBaseLineCorrectionProcess.cxx @@ -92,17 +92,17 @@ TRestEvent* TRestRawBaseLineCorrectionProcess::ProcessEvent(TRestEvent* evInput) fInputEvent = (TRestRawSignalEvent*)evInput; for (int s = 0; s < fInputEvent->GetNumberOfSignals(); s++) { - TRestRawSignal* sgnl = fInputEvent->GetSignal(s); + TRestRawSignal* signal = fInputEvent->GetSignal(s); - if (fRangeEnabled && (sgnl->GetID() < fSignalsRange.X() || sgnl->GetID() > fSignalsRange.Y())) { - fOutputEvent->AddSignal(*sgnl); + if (fRangeEnabled && (signal->GetID() < fSignalsRange.X() || signal->GetID() > fSignalsRange.Y())) { + fOutputEvent->AddSignal(*signal); continue; } - TRestRawSignal sgnl2; - sgnl->GetBaseLineCorrected(&sgnl2, fSmoothingWindow); - sgnl2.SetID(sgnl->GetID()); - fOutputEvent->AddSignal(sgnl2); + TRestRawSignal signal2; + signal->GetBaseLineCorrected(&signal2, fSmoothingWindow); + signal2.SetID(signal->GetID()); + fOutputEvent->AddSignal(signal2); } return fOutputEvent; diff --git a/src/TRestRawBiPoToSignalProcess.cxx b/src/TRestRawBiPoToSignalProcess.cxx index ffa92cfd..dc786bbd 100644 --- a/src/TRestRawBiPoToSignalProcess.cxx +++ b/src/TRestRawBiPoToSignalProcess.cxx @@ -179,9 +179,9 @@ TRestEvent* TRestRawBiPoToSignalProcess::ProcessEvent(TRestEvent* inputEvent) { RESTDebug << "Number of channels : " << fMatacqBoard[bIndex].nChannels << RESTendl; for (int nch = 0; nch < fMatacqBoard[bIndex].nChannels; nch++) { - TRestRawSignal sgnl; - sgnl.Initialize(); - sgnl.SetSignalID(100 * boardAddress + nch); + TRestRawSignal signal; + signal.Initialize(); + signal.SetSignalID(100 * boardAddress + nch); Int_t nBins = fBiPoSettings[bIndex].t1_window + fBiPoSettings[bIndex].t2_window; @@ -195,12 +195,12 @@ TRestEvent* TRestRawBiPoToSignalProcess::ProcessEvent(TRestEvent* inputEvent) { v = TMath::Power(2, 12); } - if (sgnl.GetSignalID() >= 0) sgnl.AddPoint(v); + if (signal.GetSignalID() >= 0) signal.AddPoint(v); } - RESTDebug << "Adding signal with id : " << sgnl.GetID() << RESTendl; - RESTDebug << "Number of points: " << sgnl.GetNumberOfPoints() << RESTendl; - fSignalEvent->AddSignal(sgnl); + RESTDebug << "Adding signal with id : " << signal.GetID() << RESTendl; + RESTDebug << "Number of points: " << signal.GetNumberOfPoints() << RESTendl; + fSignalEvent->AddSignal(signal); } return fSignalEvent; diff --git a/src/TRestRawCommonNoiseReductionProcess.cxx b/src/TRestRawCommonNoiseReductionProcess.cxx index c1386101..8753f835 100644 --- a/src/TRestRawCommonNoiseReductionProcess.cxx +++ b/src/TRestRawCommonNoiseReductionProcess.cxx @@ -169,17 +169,17 @@ TRestEvent* TRestRawCommonNoiseReductionProcess::ProcessEvent(TRestEvent* inputE fInputEvent = (TRestRawSignalEvent*)inputEvent; if (fInputEvent->GetNumberOfSignals() < fMinSignalsRequired) { - for (int sgnl = 0; sgnl < fInputEvent->GetNumberOfSignals(); sgnl++) { - fOutputEvent->AddSignal(*fInputEvent->GetSignal(sgnl)); + for (int signal = 0; signal < fInputEvent->GetNumberOfSignals(); signal++) { + fOutputEvent->AddSignal(*fInputEvent->GetSignal(signal)); } return fOutputEvent; } // Event base line determination. Double_t baseLineMean = 0; - for (int sgnl = 0; sgnl < fInputEvent->GetNumberOfSignals(); sgnl++) { - fInputEvent->GetSignal(sgnl)->CalculateBaseLine(20, 150); - Double_t baseline = fInputEvent->GetSignal(sgnl)->GetBaseLine(); + for (int signal = 0; signal < fInputEvent->GetNumberOfSignals(); signal++) { + fInputEvent->GetSignal(signal)->CalculateBaseLine(20, 150); + Double_t baseline = fInputEvent->GetSignal(signal)->GetBaseLine(); baseLineMean += baseline; } Double_t Baseline = baseLineMean / fInputEvent->GetNumberOfSignals(); @@ -188,19 +188,19 @@ TRestEvent* TRestRawCommonNoiseReductionProcess::ProcessEvent(TRestEvent* inputE Int_t N = fInputEvent->GetNumberOfSignals(); // if (GetVerboseLevel() >= REST_Debug) N = 1; - for (int sgnl = 0; sgnl < N; sgnl++) { - fOutputEvent->AddSignal(*fInputEvent->GetSignal(sgnl)); + for (int signal = 0; signal < N; signal++) { + fOutputEvent->AddSignal(*fInputEvent->GetSignal(signal)); } Int_t nBins = fInputEvent->GetSignal(0)->GetNumberOfPoints(); - vector sgnlValues(N, 0.0); + vector signalValues(N, 0.0); for (Int_t bin = 0; bin < nBins; bin++) { - for (Int_t sgnl = 0; sgnl < N; sgnl++) { - sgnlValues[sgnl] = fOutputEvent->GetSignal(sgnl)->GetRawData(bin); + for (Int_t signal = 0; signal < N; signal++) { + signalValues[signal] = fOutputEvent->GetSignal(signal)->GetRawData(bin); } - std::sort(sgnlValues.begin(), sgnlValues.end()); + std::sort(signalValues.begin(), signalValues.end()); // Sorting the different methods Int_t begin = 0, middle = 0, end = 0; @@ -221,13 +221,13 @@ TRestEvent* TRestRawCommonNoiseReductionProcess::ProcessEvent(TRestEvent* inputE // Calculation of the correction to be made to each TRestRawSignal Double_t binCorrection = 0.0; - for (Int_t i = begin; i <= end; i++) binCorrection += sgnlValues[i]; + for (Int_t i = begin; i <= end; i++) binCorrection += signalValues[i]; binCorrection = binCorrection / norm; // Correction applied. - for (Int_t sgnl = 0; sgnl < N; sgnl++) - fOutputEvent->GetSignal(sgnl)->IncreaseBinBy(bin, Baseline - binCorrection); + for (Int_t signal = 0; signal < N; signal++) + fOutputEvent->GetSignal(signal)->IncreaseBinBy(bin, Baseline - binCorrection); } return fOutputEvent; @@ -246,8 +246,8 @@ TRestEvent* TRestRawCommonNoiseReductionProcess::ProcessEvent(TRestEvent* inputE nSign = 0; // if (GetVerboseLevel() >= REST_Debug) N = 1; - for (Int_t sgnl = 0; sgnl < N; sgnl++) { - sigID = firstInBlock + sgnl; + for (Int_t signal = 0; signal < N; signal++) { + sigID = firstInBlock + signal; fInputEvent->GetSignalById(sigID)->CalculateBaseLine(20, 500); if (fInputEvent->GetSignalById(sigID)->GetBaseLineSigma() >= 3.3) { // debug << "Baseline1: " << @@ -259,26 +259,26 @@ TRestEvent* TRestRawCommonNoiseReductionProcess::ProcessEvent(TRestEvent* inputE } Int_t nBins = fInputEvent->GetSignal(0)->GetNumberOfPoints(); - vector sgnlValues(nSign, 0.0); + vector signalValues(nSign, 0.0); // debug << "nSign: " << nSign << endl; for (Int_t bin = 0; bin < nBins; bin++) { int i = 0; - for (Int_t sgnl = 0; sgnl < N; sgnl++) { - sigID = firstInBlock + sgnl; + for (Int_t signal = 0; signal < N; signal++) { + sigID = firstInBlock + signal; if (fInputEvent->GetSignalById(sigID)->GetBaseLineSigma() >= 3.3) { // debug << "Baseline2: " << // fInputEvent->GetSignalById(sigID)->GetBaseLineSigma() << // endl; // debug << fOutputEvent->GetSignalById(sigID)->GetRawData(bin) << // endl; - sgnlValues[i] = fOutputEvent->GetSignalById(sigID)->GetRawData(bin); + signalValues[i] = fOutputEvent->GetSignalById(sigID)->GetRawData(bin); i++; } } - std::sort(sgnlValues.begin(), sgnlValues.end()); + std::sort(signalValues.begin(), signalValues.end()); // Sorting the different methods Int_t begin = 0, middle = 0, end = 0; @@ -299,21 +299,21 @@ TRestEvent* TRestRawCommonNoiseReductionProcess::ProcessEvent(TRestEvent* inputE // Calculation of the correction to be made to each TRestRawSignal Double_t binCorrection = 0.0; - for (Int_t i = begin; i <= end; i++) binCorrection += sgnlValues[i]; + for (Int_t i = begin; i <= end; i++) binCorrection += signalValues[i]; binCorrection = binCorrection / norm; // Correction applied. - for (Int_t sgnl = 0; sgnl < N; sgnl++) { - if (fInputEvent->GetSignalById(firstInBlock + sgnl)->GetBaseLineSigma() >= 3.3) { - fOutputEvent->GetSignalById(firstInBlock + sgnl) + for (Int_t signal = 0; signal < N; signal++) { + if (fInputEvent->GetSignalById(firstInBlock + signal)->GetBaseLineSigma() >= 3.3) { + fOutputEvent->GetSignalById(firstInBlock + signal) ->IncreaseBinBy(bin, Baseline - binCorrection); } } } - for (int sgnl = 0; sgnl < N; sgnl++) { - if (fInputEvent->GetSignalById(firstInBlock + sgnl)->GetBaseLineSigma() < 3.3) { - fOutputEvent->AddSignal(*fInputEvent->GetSignalById(firstInBlock + sgnl)); + for (int signal = 0; signal < N; signal++) { + if (fInputEvent->GetSignalById(firstInBlock + signal)->GetBaseLineSigma() < 3.3) { + fOutputEvent->AddSignal(*fInputEvent->GetSignalById(firstInBlock + signal)); } } } diff --git a/src/TRestRawFEUDreamToSignalProcess.cxx b/src/TRestRawFEUDreamToSignalProcess.cxx index 3027411b..679c5d56 100644 --- a/src/TRestRawFEUDreamToSignalProcess.cxx +++ b/src/TRestRawFEUDreamToSignalProcess.cxx @@ -416,12 +416,12 @@ bool TRestRawFEUDreamToSignalProcess::ReadDreamData(FeuReadOut& Feu) { // loop on samples if (Feu.physChannel < MaxPhysChannel) { - Int_t sgnlIndex = fSignalEvent->GetSignalIndex(Feu.physChannel); - if (sgnlIndex == -1) { - sgnlIndex = fSignalEvent->GetNumberOfSignals(); - TRestRawSignal sgnl(fMinPoints); - sgnl.SetSignalID(Feu.physChannel); - fSignalEvent->AddSignal(sgnl); + Int_t signalIndex = fSignalEvent->GetSignalIndex(Feu.physChannel); + if (signalIndex == -1) { + signalIndex = fSignalEvent->GetNumberOfSignals(); + TRestRawSignal signal(fMinPoints); + signal.SetSignalID(Feu.physChannel); + fSignalEvent->AddSignal(signal); } fSignalEvent->AddChargeToSignal(Feu.physChannel, Feu.isample, Feu.current_data.get_data()); @@ -472,12 +472,12 @@ bool TRestRawFEUDreamToSignalProcess::ReadDreamData(FeuReadOut& Feu) { } if (Feu.physChannel < MaxPhysChannel) { - Int_t sgnlIndex = fSignalEvent->GetSignalIndex(Feu.physChannel); - if (sgnlIndex == -1) { - sgnlIndex = fSignalEvent->GetNumberOfSignals(); - TRestRawSignal sgnl(fMinPoints); - sgnl.SetSignalID(Feu.physChannel); - fSignalEvent->AddSignal(sgnl); + Int_t signalIndex = fSignalEvent->GetSignalIndex(Feu.physChannel); + if (signalIndex == -1) { + signalIndex = fSignalEvent->GetNumberOfSignals(); + TRestRawSignal signal(fMinPoints); + signal.SetSignalID(Feu.physChannel); + fSignalEvent->AddSignal(signal); } fSignalEvent->AddChargeToSignal(Feu.physChannel, Feu.isample, Feu.channel_data); } else diff --git a/src/TRestRawFFT.cxx b/src/TRestRawFFT.cxx index 3d1e4ff9..65b55608 100644 --- a/src/TRestRawFFT.cxx +++ b/src/TRestRawFFT.cxx @@ -48,12 +48,12 @@ Double_t TRestRawFFT::GetFrequencyNorm2(Int_t n) { return norm2; } -void TRestRawFFT::ForwardSignalFFT(TRestRawSignal* sgnl, Int_t fNStart, Int_t fNEnd) { - Int_t n = sgnl->GetNumberOfPoints() - fNStart - fNEnd; +void TRestRawFFT::ForwardSignalFFT(TRestRawSignal* signal, Int_t fNStart, Int_t fNEnd) { + Int_t n = signal->GetNumberOfPoints() - fNStart - fNEnd; SetNfft(n); - for (int i = fNStart; i < sgnl->GetNumberOfPoints() - fNEnd; i++) { - fTimeReal[i - fNStart] = sgnl->GetData(i); + for (size_t i = fNStart; i < signal->GetNumberOfPoints() - fNEnd; i++) { + fTimeReal[i - fNStart] = signal->GetData(i); fTimeImg[i - fNStart] = 0; } @@ -101,9 +101,9 @@ void TRestRawFFT::ProduceDelta(Int_t t_o, Int_t Nfft) { delete forward; } -void TRestRawFFT::GetSignal(TRestRawSignal* sgnl) { - sgnl->Reset(); - for (int i = 0; i < fNfft; i++) sgnl->AddPoint(fTimeReal.GetArray()[i]); +void TRestRawFFT::GetSignal(TRestRawSignal* signal) { + signal->Reset(); + for (int i = 0; i < fNfft; i++) signal->AddPoint(fTimeReal.GetArray()[i]); } void TRestRawFFT::MultiplyBy(TRestRawFFT* fftInput, Int_t from, Int_t to) { diff --git a/src/TRestRawFindResponseSignalProcess.cxx b/src/TRestRawFindResponseSignalProcess.cxx index f2d370fe..8f4aaae7 100644 --- a/src/TRestRawFindResponseSignalProcess.cxx +++ b/src/TRestRawFindResponseSignalProcess.cxx @@ -169,10 +169,10 @@ TRestEvent* TRestRawFindResponseSignalProcess::ProcessEvent(TRestEvent* inputEve if (maxPeak < 400 || maxPeak > 600) return nullptr; - TRestRawSignal* sgnl = fInputSignalEvent->GetSignal(dominantSignal); - sgnl->Scale(1000. / maxPeak); + TRestRawSignal* signal = fInputSignalEvent->GetSignal(dominantSignal); + signal->Scale(1000. / maxPeak); - fOutputSignalEvent->AddSignal(*sgnl); + fOutputSignalEvent->AddSignal(*signal); return fOutputSignalEvent; } diff --git a/src/TRestRawMultiFEMINOSToSignalProcess.cxx b/src/TRestRawMultiFEMINOSToSignalProcess.cxx index 2bc43693..7d10f432 100644 --- a/src/TRestRawMultiFEMINOSToSignalProcess.cxx +++ b/src/TRestRawMultiFEMINOSToSignalProcess.cxx @@ -429,13 +429,13 @@ Bool_t TRestRawMultiFEMINOSToSignalProcess::ReadFrame(void* fr, int fr_sz) { Int_t showSamples = fShowSamples; - TRestRawSignal sgnl; - sgnl.SetSignalID(-1); + TRestRawSignal signal; + signal.SetSignalID(-1); while (!done) { // Is it a prefix for 14-bit content? if ((*p & PFX_14_BIT_CONTENT_MASK) == PFX_CARD_CHIP_CHAN_HIT_IX) { - if (sgnl.GetSignalID() >= 0 && sgnl.GetNumberOfPoints() >= fMinPoints) - fSignalEvent->AddSignal(sgnl); + if (signal.GetSignalID() >= 0 && int(signal.GetNumberOfPoints()) >= fMinPoints) + fSignalEvent->AddSignal(signal); cardNumber = GET_CARD_IX(*p); chipNumber = GET_CHIP_IX(*p); @@ -452,8 +452,8 @@ Bool_t TRestRawMultiFEMINOSToSignalProcess::ReadFrame(void* fr, int fr_sz) { p++; si = 0; - sgnl.Initialize(); - sgnl.SetSignalID(daqChannel); + signal.Initialize(); + signal.SetSignalID(daqChannel); } // Is it a prefix for 12-bit content? @@ -463,7 +463,7 @@ Bool_t TRestRawMultiFEMINOSToSignalProcess::ReadFrame(void* fr, int fr_sz) { if (showSamples > 0) printf("ReadFrame: %03d 0x%04x (%4d)\n", si, r0, r0); showSamples--; } - if (sgnl.GetSignalID() >= 0) sgnl.AddPoint((Short_t)r0); + if (signal.GetSignalID() >= 0) signal.AddPoint((Short_t)r0); p++; si++; } @@ -549,8 +549,8 @@ Bool_t TRestRawMultiFEMINOSToSignalProcess::ReadFrame(void* fr, int fr_sz) { // Is it a prefix for 0-bit content? else if ((*p & PFX_0_BIT_CONTENT_MASK) == PFX_END_OF_FRAME) { - if (sgnl.GetSignalID() >= 0 && sgnl.GetNumberOfPoints() >= fMinPoints) - fSignalEvent->AddSignal(sgnl); + if (signal.GetSignalID() >= 0 && int(signal.GetNumberOfPoints()) >= fMinPoints) + fSignalEvent->AddSignal(signal); if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Debug) printf("ReadFrame: ----- End of Frame -----\n"); diff --git a/src/TRestRawSignal.cxx b/src/TRestRawSignal.cxx index c01163e6..4f1e484f 100644 --- a/src/TRestRawSignal.cxx +++ b/src/TRestRawSignal.cxx @@ -145,7 +145,7 @@ void TRestRawSignal::AddPoint(Double_t value) { /// point *n* in the form /// rawSignal[n]. /// -Short_t TRestRawSignal::operator[](Int_t n) { +Short_t TRestRawSignal::operator[](size_t n) { if (n >= GetNumberOfPoints()) { if (fShowWarnings) { std::cout << "TRestRawSignal::GetSignalData: outside limits" << endl; @@ -178,7 +178,7 @@ Double_t TRestRawSignal::GetRawData(Int_t n) const { return (Double_t)fSignalDat /// \brief It adds the content of data to fSignalData[bin]. /// void TRestRawSignal::IncreaseBinBy(Int_t bin, Double_t data) { - if (bin >= GetNumberOfPoints()) { + if (bin >= Int_t(GetNumberOfPoints())) { if (fShowWarnings) { std::cout << "TRestRawSignal::IncreaseBinBy: outside limits" << endl; std::cout << "Warnings at TRestRawSignal have been disabled" << endl; @@ -313,8 +313,12 @@ Double_t TRestRawSignal::GetIntegral() { /// by (startBin,endBin). /// Double_t TRestRawSignal::GetIntegralInRange(Int_t startBin, Int_t endBin) { - if (startBin < 0) startBin = 0; - if (endBin <= 0 || endBin > GetNumberOfPoints()) endBin = GetNumberOfPoints(); + if (startBin < 0) { + startBin = 0; + } + if (endBin <= 0 || endBin > Int_t(GetNumberOfPoints())) { + endBin = GetNumberOfPoints(); + } Double_t sum = 0; for (int i = startBin; i < endBin; i++) sum += GetRawData(i); @@ -429,7 +433,9 @@ Double_t TRestRawSignal::GetTripleMaxIntegral() { Int_t cBin = GetMaxPeakBin(); - if (cBin + 1 >= GetNumberOfPoints()) return 0; + if (cBin + 1 >= Int_t(GetNumberOfPoints())) { + return 0; + } Double_t a1 = GetData(cBin); Double_t a2 = GetData(cBin - 1); @@ -444,7 +450,9 @@ Double_t TRestRawSignal::GetTripleMaxIntegral() { /// Double_t TRestRawSignal::GetAverageInRange(Int_t startBin, Int_t endBin) { if (startBin < 0) startBin = 0; - if (endBin <= 0 || endBin > GetNumberOfPoints()) endBin = GetNumberOfPoints(); + if (endBin <= 0 || endBin > Int_t(GetNumberOfPoints())) { + endBin = GetNumberOfPoints(); + } Double_t sum = 0; for (int i = startBin; i <= endBin; i++) sum += this->GetData(i); @@ -572,13 +580,13 @@ void TRestRawSignal::GetDifferentialSignal(TRestRawSignal* diffSignal, Int_t sme diffSignal->AddPoint((Short_t)0); } - for (int i = smearPoints; i < this->GetNumberOfPoints() - smearPoints; i++) { + for (int i = smearPoints; i < Int_t(this->GetNumberOfPoints()) - smearPoints; i++) { Double_t value = 0.5 * (this->GetData(i + smearPoints) - GetData(i - smearPoints)) / smearPoints; diffSignal->AddPoint((Short_t)value); } - for (int i = GetNumberOfPoints() - smearPoints; i < GetNumberOfPoints(); i++) { + for (int i = GetNumberOfPoints() - smearPoints; i < int(GetNumberOfPoints()); i++) { diffSignal->AddPoint((Short_t)0); } } @@ -594,7 +602,7 @@ void TRestRawSignal::GetDifferentialSignal(TRestRawSignal* diffSignal, Int_t sme void TRestRawSignal::GetWhiteNoiseSignal(TRestRawSignal* noiseSignal, Double_t noiseLevel) { TRandom3 random(fSeed); - for (int i = 0; i < GetNumberOfPoints(); i++) { + for (int i = 0; i < int(GetNumberOfPoints()); i++) { Double_t value = this->GetData(i) + random.Gaus(0, noiseLevel); // do not cast as short so that there are no problems with overflows // (https://github.com/rest-for-physics/rawlib/issues/113) @@ -618,13 +626,13 @@ void TRestRawSignal::GetSignalSmoothed(TRestRawSignal* smoothedSignal, Int_t ave for (int i = 0; i <= averagingPoints / 2; i++) smoothedSignal->AddPoint((Short_t)sumAvg); - for (int i = averagingPoints / 2 + 1; i < GetNumberOfPoints() - averagingPoints / 2; i++) { + for (int i = averagingPoints / 2 + 1; i < int(GetNumberOfPoints()) - averagingPoints / 2; i++) { sumAvg -= this->GetRawData(i - (averagingPoints / 2 + 1)) / averagingPoints; sumAvg += this->GetRawData(i + averagingPoints / 2) / averagingPoints; smoothedSignal->AddPoint((Short_t)sumAvg); } - for (int i = GetNumberOfPoints() - averagingPoints / 2; i < GetNumberOfPoints(); i++) + for (int i = GetNumberOfPoints() - averagingPoints / 2; i < int(GetNumberOfPoints()); i++) smoothedSignal->AddPoint(sumAvg); } @@ -649,13 +657,13 @@ std::vector TRestRawSignal::GetSignalSmoothed(Int_t averagingPoints, st for (int i = 0; i <= averagingPoints / 2; i++) result[i] = sumAvg; - for (int i = averagingPoints / 2 + 1; i < GetNumberOfPoints() - averagingPoints / 2; i++) { + for (int i = averagingPoints / 2 + 1; i < int(GetNumberOfPoints()) - averagingPoints / 2; i++) { sumAvg -= this->GetRawData(i - (averagingPoints / 2 + 1)) / averagingPoints; sumAvg += this->GetRawData(i + averagingPoints / 2) / averagingPoints; result[i] = sumAvg; } - for (int i = GetNumberOfPoints() - averagingPoints / 2; i < GetNumberOfPoints(); i++) + for (int i = GetNumberOfPoints() - averagingPoints / 2; i < int(GetNumberOfPoints()); i++) result[i] = sumAvg; } else if (ToUpper(option) == "EXCLUDE OUTLIERS") { result = GetSignalSmoothed_ExcludeOutliers(averagingPoints); @@ -688,7 +696,7 @@ std::vector TRestRawSignal::GetSignalSmoothed_ExcludeOutliers(Int_t ave // Points in the middle float_t amplitude; - for (int i = averagingPoints / 2 + 1; i < GetNumberOfPoints() - averagingPoints / 2; i++) { + for (int i = averagingPoints / 2 + 1; i < int(GetNumberOfPoints()) - averagingPoints / 2; i++) { amplitude = this->GetRawData(i - (averagingPoints / 2 + 1)); sumAvg -= (std::abs(amplitude - fBaseLine) > 3 * fBaseLineSigma) ? fBaseLine / averagingPoints : amplitude / averagingPoints; @@ -699,7 +707,8 @@ std::vector TRestRawSignal::GetSignalSmoothed_ExcludeOutliers(Int_t ave } // Points at the end, where we can calculate a moving average - for (int i = GetNumberOfPoints() - averagingPoints / 2; i < GetNumberOfPoints(); i++) result[i] = sumAvg; + for (int i = GetNumberOfPoints() - averagingPoints / 2; i < int(GetNumberOfPoints()); i++) + result[i] = sumAvg; return result; } @@ -718,7 +727,7 @@ void TRestRawSignal::GetBaseLineCorrected(TRestRawSignal* smoothedSignal, Int_t std::vector averagedSignal = GetSignalSmoothed(averagingPoints, "EXCLUDE OUTLIERS"); - for (int i = 0; i < GetNumberOfPoints(); i++) { + for (int i = 0; i < int(GetNumberOfPoints()); i++) { smoothedSignal->AddPoint(GetRawData(i) - averagedSignal[i]); } } @@ -826,14 +835,14 @@ void TRestRawSignal::CalculateBaseLineSigmaIQR(Int_t startBin, Int_t endBin) { /// void TRestRawSignal::AddOffset(Short_t offset) { if (fBaseLine != 0 || fBaseLineSigma != 0) fBaseLineSigma += (Double_t)offset; - for (int i = 0; i < GetNumberOfPoints(); i++) fSignalData[i] = fSignalData[i] + offset; + for (int i = 0; i < int(GetNumberOfPoints()); i++) fSignalData[i] = fSignalData[i] + offset; } /////////////////////////////////////////////// /// \brief This method scales the signal by a given value /// void TRestRawSignal::Scale(Double_t value) { - for (int i = 0; i < GetNumberOfPoints(); i++) { + for (int i = 0; i < int(GetNumberOfPoints()); i++) { Double_t scaledValue = value * fSignalData[i]; fSignalData[i] = (Short_t)scaledValue; } @@ -850,7 +859,7 @@ void TRestRawSignal::SignalAddition(const TRestRawSignal& signal) { return; } - for (int i = 0; i < GetNumberOfPoints(); i++) { + for (int i = 0; i < int(GetNumberOfPoints()); i++) { fSignalData[i] += signal.GetData(i); } } @@ -861,7 +870,7 @@ void TRestRawSignal::SignalAddition(const TRestRawSignal& signal) { void TRestRawSignal::WriteSignalToTextFile(const TString& filename) { // We should check it is writable FILE* file = fopen(filename.Data(), "w"); - for (int i = 0; i < GetNumberOfPoints(); i++) fprintf(file, "%d\t%lf\n", i, GetData(i)); + for (int i = 0; i < int(GetNumberOfPoints()); i++) fprintf(file, "%d\t%lf\n", i, GetData(i)); fclose(file); } @@ -874,7 +883,7 @@ void TRestRawSignal::Print() const { cout << "Baseline : " << fBaseLine << endl; cout << "Baseline sigma : " << fBaseLineSigma << endl; cout << "+++++++++++++++++++++" << endl; - for (int i = 0; i < GetNumberOfPoints(); i++) + for (int i = 0; i < int(GetNumberOfPoints()); i++) cout << "Bin : " << i << " amplitude : " << GetRawData(i) << endl; cout << "---------------------" << endl; } @@ -890,7 +899,7 @@ TGraph* TRestRawSignal::GetGraph(Int_t color) { fGraph->SetLineColor(color % 8 + 1); fGraph->SetMarkerStyle(7); - for (int i = 0; i < GetNumberOfPoints(); i++) { + for (int i = 0; i < int(GetNumberOfPoints()); i++) { fGraph->SetPoint(i, i, GetData(i)); } @@ -908,3 +917,23 @@ TGraph* TRestRawSignal::GetGraph(Int_t color) { return fGraph; } + +vector> TRestRawSignal::GetPeaks(double threshold, UShort_t distance) const { + vector> peaks; + + for (UShort_t i = 0; i < GetNumberOfPoints(); i++) { + const double point = GetRawData(i); + if (i > 0 && i < GetNumberOfPoints() - 1) { + double prevPoint = GetRawData(i - 1); + double nextPoint = GetRawData(i + 1); + + if (point > threshold && point >= prevPoint && point >= nextPoint) { + // Check if the peak is spaced far enough from the previous peak + if (peaks.empty() || i - peaks.back().first >= distance) { + peaks.push_back(std::make_pair(i, point)); + } + } + } + } + return peaks; +} diff --git a/src/TRestRawSignalAnalysisProcess.cxx b/src/TRestRawSignalAnalysisProcess.cxx index cdd6c004..efab4e7a 100644 --- a/src/TRestRawSignalAnalysisProcess.cxx +++ b/src/TRestRawSignalAnalysisProcess.cxx @@ -321,31 +321,31 @@ TRestEvent* TRestRawSignalAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) fSignalEvent->SetRange(fIntegralRange); for (int s = 0; s < fSignalEvent->GetNumberOfSignals(); s++) { - TRestRawSignal* sgnl = fSignalEvent->GetSignal(s); + TRestRawSignal* signal = fSignalEvent->GetSignal(s); /// Important call we need to initialize the points over threshold in a TRestRawSignal - sgnl->InitializePointsOverThreshold(TVector2(fPointThreshold, fSignalThreshold), - fPointsOverThreshold); + signal->InitializePointsOverThreshold(TVector2(fPointThreshold, fSignalThreshold), + fPointsOverThreshold); - if (fRangeEnabled && (sgnl->GetID() < fSignalsRange.X() || sgnl->GetID() > fSignalsRange.Y())) + if (fRangeEnabled && (signal->GetID() < fSignalsRange.X() || signal->GetID() > fSignalsRange.Y())) continue; // We do not want that signals that are not identified as such contribute to // define our observables // nkx: we still need to store all the signals in baseline/rise time maps in // case for noise analysis - // if (sgnl->GetPointsOverThreshold().size() < 2) continue; - if (sgnl->GetPointsOverThreshold().size() >= 2) nGoodSignals++; + // if (signal->GetPointsOverThreshold().size() < 2) continue; + if (signal->GetPointsOverThreshold().size() >= 2) nGoodSignals++; // Now TRestRawSignal returns directly baseline subtracted values - baseline[sgnl->GetID()] = sgnl->GetBaseLine(); - baselinesigma[sgnl->GetID()] = sgnl->GetBaseLineSigma(); - ampsgn_intmethod[sgnl->GetID()] = sgnl->GetThresholdIntegral(); - ampsgn_maxmethod[sgnl->GetID()] = sgnl->GetMaxPeakValue(); - risetime[sgnl->GetID()] = sgnl->GetRiseTime(); - peak_time[sgnl->GetID()] = sgnl->GetMaxPeakBin(); - npointsot[sgnl->GetID()] = sgnl->GetPointsOverThreshold().size(); - if (sgnl->IsADCSaturation()) saturatedchnId.push_back(sgnl->GetID()); + baseline[signal->GetID()] = signal->GetBaseLine(); + baselinesigma[signal->GetID()] = signal->GetBaseLineSigma(); + ampsgn_intmethod[signal->GetID()] = signal->GetThresholdIntegral(); + ampsgn_maxmethod[signal->GetID()] = signal->GetMaxPeakValue(); + risetime[signal->GetID()] = signal->GetRiseTime(); + peak_time[signal->GetID()] = signal->GetMaxPeakBin(); + npointsot[signal->GetID()] = signal->GetPointsOverThreshold().size(); + if (signal->IsADCSaturation()) saturatedchnId.push_back(signal->GetID()); } SetObservableValue("pointsoverthres_map", npointsot); @@ -438,19 +438,19 @@ TRestEvent* TRestRawSignalAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) Double_t peakTimeAverage = 0; for (int s = 0; s < fSignalEvent->GetNumberOfSignals(); s++) { - TRestRawSignal* sgnl = fSignalEvent->GetSignal(s); + TRestRawSignal* signal = fSignalEvent->GetSignal(s); - if (fRangeEnabled && (sgnl->GetID() < fSignalsRange.X() || sgnl->GetID() > fSignalsRange.Y())) + if (fRangeEnabled && (signal->GetID() < fSignalsRange.X() || signal->GetID() > fSignalsRange.Y())) continue; - if (sgnl->GetPointsOverThreshold().size() > 1) { + if (signal->GetPointsOverThreshold().size() > 1) { Double_t value = fSignalEvent->GetSignal(s)->GetMaxValue(); maxValueIntegral += value; if (value > maxValue) maxValue = value; if (value < minValue) minValue = value; - Double_t peakBin = sgnl->GetMaxPeakBin(); + Double_t peakBin = signal->GetMaxPeakBin(); peakTimeAverage += peakBin; if (minPeakTime > peakBin) minPeakTime = peakBin; diff --git a/src/TRestRawSignalChannelActivityProcess.cxx b/src/TRestRawSignalChannelActivityProcess.cxx index 12bb615f..90a6de80 100644 --- a/src/TRestRawSignalChannelActivityProcess.cxx +++ b/src/TRestRawSignalChannelActivityProcess.cxx @@ -148,9 +148,9 @@ TRestEvent* TRestRawSignalChannelActivityProcess::ProcessEvent(TRestEvent* input Int_t Nlow = 0; Int_t Nhigh = 0; for (int s = 0; s < fSignalEvent->GetNumberOfSignals(); s++) { - TRestRawSignal* sgnl = fSignalEvent->GetSignal(s); - if (sgnl->GetMaxValue() > fHighThreshold) Nhigh++; - if (sgnl->GetMaxValue() > fLowThreshold) Nlow++; + TRestRawSignal* signal = fSignalEvent->GetSignal(s); + if (signal->GetMaxValue() > fHighThreshold) Nhigh++; + if (signal->GetMaxValue() > fLowThreshold) Nlow++; } for (int s = 0; s < fSignalEvent->GetNumberOfSignals(); s++) { diff --git a/src/TRestRawSignalConvolutionFittingProcess.cxx b/src/TRestRawSignalConvolutionFittingProcess.cxx index 261dff10..9339d32e 100644 --- a/src/TRestRawSignalConvolutionFittingProcess.cxx +++ b/src/TRestRawSignalConvolutionFittingProcess.cxx @@ -323,11 +323,11 @@ TRestEvent* TRestRawSignalConvolutionFittingProcess::ProcessEvent(TRestEvent* in * Then, we might need to initialize points over threshold * for (int s = 0; s < fRawSignalEvent->GetNumberOfSignals(); s++) { - TRestRawSignal* sgnl = fRawSignalEvent->GetSignal(s); + TRestRawSignal* signal = fRawSignalEvent->GetSignal(s); /// Important call we need to initialize the points over threshold in a TRestRawSignal - sgnl->InitializePointsOverThreshold(TVector2(fPointThreshold, + signal->InitializePointsOverThreshold(TVector2(fPointThreshold, fSignalThreshold), fNPointsOverThreshold); diff --git a/src/TRestRawSignalEvent.cxx b/src/TRestRawSignalEvent.cxx index 84b31a46..890afccb 100644 --- a/src/TRestRawSignalEvent.cxx +++ b/src/TRestRawSignalEvent.cxx @@ -246,7 +246,7 @@ Double_t TRestRawSignalEvent::GetAverageWidth(Double_t minPeakAmplitude) { } Double_t TRestRawSignalEvent::GetLowAverageWidth(Int_t nSignals, Double_t minPeakAmplitude) { - std::vector widths; + vector widths; for (int signal = 0; signal < GetNumberOfSignals(); signal++) if (GetSignal(signal)->GetMaxPeakValue() > minPeakAmplitude) @@ -254,7 +254,7 @@ Double_t TRestRawSignalEvent::GetLowAverageWidth(Int_t nSignals, Double_t minPea if (widths.size() == 0) return 0; - std::sort(widths.begin(), widths.end()); + sort(widths.begin(), widths.end()); Int_t nMax = nSignals; if (widths.size() < (unsigned int)nSignals) nMax = widths.size(); @@ -338,12 +338,14 @@ Double_t TRestRawSignalEvent::GetMinValue() { return fMinValue; } -Double_t TRestRawSignalEvent::GetMinTime() { return 0; } +Double_t TRestRawSignalEvent::GetMinTime() const { return 0; } -Double_t TRestRawSignalEvent::GetMaxTime() { +Double_t TRestRawSignalEvent::GetMaxTime() const { Double_t maxTime = 512; - if (GetNumberOfSignals() > 0) maxTime = fSignal[0].GetNumberOfPoints(); + if (GetNumberOfSignals() > 0) { + maxTime = fSignal[0].GetNumberOfPoints(); + } return maxTime; } @@ -435,7 +437,7 @@ TPad* TRestRawSignalEvent::DrawEvent(const TString& option) { int sRangeInit = 0, sRangeEnd = 0; for (const auto& opt : optList) { - std::string str = (std::string)opt; + string str = (string)opt; // Read threshold option if (str.find("onlyGoodSignals[") != string::npos) { size_t startPos = str.find('['); @@ -489,7 +491,7 @@ TPad* TRestRawSignalEvent::DrawEvent(const TString& option) { } } - std::vector signalIDs; // Signal IDs to print + vector signalIDs; // Signal IDs to print ///// No specific signal selection //// if ((optList.empty()) || !(isANumber((string)optList[0]))) { @@ -606,7 +608,7 @@ TPad* TRestRawSignalEvent::DrawEvent(const TString& option) { /// \brief This method draws selected signal IDs, given by the vector /// passed as reference /// -void TRestRawSignalEvent::DrawSignals(TPad* pad, const std::vector& signals) { +void TRestRawSignalEvent::DrawSignals(TPad* pad, const vector& signals) { int maxSID = -1; int max = numeric_limits::min(); int graphIndex = 1; @@ -632,9 +634,9 @@ void TRestRawSignalEvent::DrawSignals(TPad* pad, const std::vector& signa } TRestRawSignal* signalMaxID = GetSignalById(maxSID); - std::string title = "Event ID " + std::to_string(GetID()); + string title = "Event ID " + to_string(GetID()); if (signals.size() == 1) { - title += " Signal ID " + std::to_string(maxSID); + title += " Signal ID " + to_string(maxSID); } signalMaxID->fGraph->SetTitle(title.c_str()); @@ -744,7 +746,7 @@ TPad* TRestRawSignalEvent::DrawSignal(Int_t signalID, TString option) { RESTInfo << "Drawing signalID. Event ID : " << this->GetID() << " Signal ID : " << signal->GetID() << RESTendl; - for (int n = 0; n < signal->GetNumberOfPoints(); n++) gr->SetPoint(n, n, signal->GetData(n)); + for (int n = 0; n < int(signal->GetNumberOfPoints()); n++) gr->SetPoint(n, n, signal->GetData(n)); gr->Draw("AC*"); diff --git a/src/TRestRawSignalFittingProcess.cxx b/src/TRestRawSignalFittingProcess.cxx index e8abe611..d08bbb29 100644 --- a/src/TRestRawSignalFittingProcess.cxx +++ b/src/TRestRawSignalFittingProcess.cxx @@ -302,11 +302,11 @@ TRestEvent* TRestRawSignalFittingProcess::ProcessEvent(TRestEvent* inputEvent) { * Then, we might need to initialize points over threshold * for (int s = 0; s < fRawSignalEvent->GetNumberOfSignals(); s++) { - TRestRawSignal* sgnl = fRawSignalEvent->GetSignal(s); + TRestRawSignal* signal = fRawSignalEvent->GetSignal(s); /// Important call we need to initialize the points over threshold in a TRestRawSignal - sgnl->InitializePointsOverThreshold(TVector2(fPointThreshold, + signal->InitializePointsOverThreshold(TVector2(fPointThreshold, fSignalThreshold), fNPointsOverThreshold); diff --git a/src/TRestRawSignalGeneralFitProcess.cxx b/src/TRestRawSignalGeneralFitProcess.cxx index ad5afc1f..74c813c1 100644 --- a/src/TRestRawSignalGeneralFitProcess.cxx +++ b/src/TRestRawSignalGeneralFitProcess.cxx @@ -288,11 +288,11 @@ TRestEvent* TRestRawSignalGeneralFitProcess::ProcessEvent(TRestEvent* inputEvent * Then, we might need to initialize points over threshold * for (int s = 0; s < fRawSignalEvent->GetNumberOfSignals(); s++) { - TRestRawSignal* sgnl = fRawSignalEvent->GetSignal(s); + TRestRawSignal* signal = fRawSignalEvent->GetSignal(s); /// Important call we need to initialize the points over threshold in a TRestRawSignal - sgnl->InitializePointsOverThreshold(TVector2(fPointThreshold, + signal->InitializePointsOverThreshold(TVector2(fPointThreshold, fSignalThreshold), fNPointsOverThreshold); diff --git a/src/TRestRawSignalRangeReductionProcess.cxx b/src/TRestRawSignalRangeReductionProcess.cxx index 8415690c..4ebe3bb0 100644 --- a/src/TRestRawSignalRangeReductionProcess.cxx +++ b/src/TRestRawSignalRangeReductionProcess.cxx @@ -83,8 +83,8 @@ TRestEvent* TRestRawSignalRangeReductionProcess::ProcessEvent(TRestEvent* inputE TRestRawSignal signal; signal.SetSignalID(inputSignal->GetSignalID()); - for (int i = 0; i < inputSignal->GetNumberOfPoints(); i++) { - const Double_t value = (Double_t)inputSignal->GetData(i); + for (int i = 0; i < int(inputSignal->GetNumberOfPoints()); i++) { + const auto value = (Double_t)inputSignal->GetData(i); Double_t newValue = fDigitizationOutputRange.X() + (value - fDigitizationInputRange.X()) * conversionFactor; if (newValue < fDigitizationOutputRange.X()) { diff --git a/src/TRestRawSignalRemoveChannelsProcess.cxx b/src/TRestRawSignalRemoveChannelsProcess.cxx index c0962fab..14c45f09 100644 --- a/src/TRestRawSignalRemoveChannelsProcess.cxx +++ b/src/TRestRawSignalRemoveChannelsProcess.cxx @@ -145,19 +145,19 @@ TRestEvent* TRestRawSignalRemoveChannelsProcess::ProcessEvent(TRestEvent* inputE fInputSignalEvent = (TRestRawSignalEvent*)inputEvent; for (int n = 0; n < fInputSignalEvent->GetNumberOfSignals(); n++) { - TRestRawSignal* sgnl = fInputSignalEvent->GetSignal(n); + TRestRawSignal* signal = fInputSignalEvent->GetSignal(n); Bool_t removeChannel = false; for (unsigned int x = 0; x < fChannelIds.size() && !removeChannel; x++) - if (sgnl->GetID() == fChannelIds[x]) removeChannel = true; + if (signal->GetID() == fChannelIds[x]) removeChannel = true; - if (!removeChannel) fOutputSignalEvent->AddSignal(*sgnl); + if (!removeChannel) fOutputSignalEvent->AddSignal(*signal); if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Extreme) - cout << "Channel ID : " << sgnl->GetID() << endl; + cout << "Channel ID : " << signal->GetID() << endl; if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Debug && removeChannel) - cout << "Removing channel id : " << sgnl->GetID() << endl; + cout << "Removing channel id : " << signal->GetID() << endl; } if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Extreme) GetChar(); diff --git a/src/TRestRawSignalViewerProcess.cxx b/src/TRestRawSignalViewerProcess.cxx index 5705e341..7065e0c8 100644 --- a/src/TRestRawSignalViewerProcess.cxx +++ b/src/TRestRawSignalViewerProcess.cxx @@ -226,7 +226,7 @@ void TRestRawSignalViewerProcess::EndProcess() { /////////////////////////////////////////////// /// \brief A helper method to draw signals in a pad /// -TPad* TRestRawSignalViewerProcess::DrawSignal(Int_t signal) { +TPad* TRestRawSignalViewerProcess::DrawSignal(Int_t signalID) { TPad* pad = new TPad(this->GetName(), this->GetTitle(), 0, 0, 1, 1); pad->cd(); @@ -236,12 +236,12 @@ TPad* TRestRawSignalViewerProcess::DrawSignal(Int_t signal) { TGraph* gr = new TGraph(); fDrawingObjects.push_back((TObject*)gr); - TRestRawSignal* sgnl = fSignalEvent->GetSignal(signal); + TRestRawSignal* signal = fSignalEvent->GetSignal(signalID); - RESTInfo << "Drawing signal. Event ID : " << fSignalEvent->GetID() << " Signal ID : " << sgnl->GetID() + RESTInfo << "Drawing signal. Event ID : " << fSignalEvent->GetID() << " Signal ID : " << signal->GetID() << RESTendl; - for (int n = 0; n < sgnl->GetNumberOfPoints(); n++) gr->SetPoint(n, n, sgnl->GetData(n)); + for (int n = 0; n < int(signal->GetNumberOfPoints()); n++) gr->SetPoint(n, n, signal->GetData(n)); gr->Draw("AC*"); @@ -252,11 +252,11 @@ TPad* TRestRawSignalViewerProcess::DrawSignal(Int_t signal) { gr2->SetLineColor(2); for (int n = fBaseLineRange.X(); n < fBaseLineRange.Y(); n++) - gr2->SetPoint(n - fBaseLineRange.X(), n, sgnl->GetData(n)); + gr2->SetPoint(n - fBaseLineRange.X(), n, signal->GetData(n)); gr2->Draw("CP"); - vector pOver = sgnl->GetPointsOverThreshold(); + vector pOver = signal->GetPointsOverThreshold(); TGraph* gr3[5]; Int_t nGraphs = 0; @@ -267,7 +267,7 @@ TPad* TRestRawSignalViewerProcess::DrawSignal(Int_t signal) { Int_t point = 0; Int_t nPoints = pOver.size(); for (int n = 0; n < nPoints; n++) { - gr3[nGraphs]->SetPoint(point, pOver[n], sgnl->GetData(pOver[n])); + gr3[nGraphs]->SetPoint(point, pOver[n], signal->GetData(pOver[n])); point++; if (n + 1 < nPoints && pOver[n + 1] - pOver[n] > 1) { gr3[nGraphs]->Draw("CP"); diff --git a/src/TRestRawTDSToSignalProcess.cxx b/src/TRestRawTDSToSignalProcess.cxx index 9ec743d1..69ed809b 100644 --- a/src/TRestRawTDSToSignalProcess.cxx +++ b/src/TRestRawTDSToSignalProcess.cxx @@ -124,12 +124,12 @@ TRestEvent* TRestRawTDSToSignalProcess::ProcessEvent(TRestEvent* evInput) { fSignalEvent->SetID(nEvents); fSignalEvent->SetTime(tNow + static_cast(eventhead.clockTicksLT) * 1E-6); // Need to initialize TRestRawSignal with the proper data length - TRestRawSignal sgnl(pulseDepth); + TRestRawSignal signal(pulseDepth); // We loop over the recorded channels, we have one data frame per channel for (int i = 0; i < nChannels; i++) { - sgnl.SetSignalID(i); - fSignalEvent->AddSignal(sgnl); + signal.SetSignalID(i); + fSignalEvent->AddSignal(signal); // Read data frame and store in buffer if (fread((char*)&buffer[0], pulseDepth, 1, fInputBinFile) != 1) return nullptr; totalBytesReaded += pulseDepth; diff --git a/src/TRestRawUSTCToSignalProcess.cxx b/src/TRestRawUSTCToSignalProcess.cxx index b2d17a04..d1e0a564 100644 --- a/src/TRestRawUSTCToSignalProcess.cxx +++ b/src/TRestRawUSTCToSignalProcess.cxx @@ -162,15 +162,15 @@ TRestEvent* TRestRawUSTCToSignalProcess::ProcessEvent(TRestEvent* inputEvent) { for (unsigned int i = 0; i < fEventBuffer[fCurrentBuffer].size(); i++) { USTCDataFrame* frame = &fEventBuffer[fCurrentBuffer][i]; if (frame->evId == fCurrentEvent && frame->eventTime == evtTime) { - sgnl.Initialize(); - sgnl.SetSignalID(frame->signalId); + signal.Initialize(); + signal.SetSignalID(frame->signalId); for (int j = 0; j < 512; j++) { - sgnl.AddPoint((Short_t)frame->dataPoint[j]); + signal.AddPoint((Short_t)frame->dataPoint[j]); } - fSignalEvent->AddSignal(sgnl); + fSignalEvent->AddSignal(signal); RESTDebug << "AsAdId, AgetId, chnId, max value: " << frame->boardId << ", " << frame->chipId - << ", " << frame->channelId << ", " << sgnl.GetMaxValue() << RESTendl; + << ", " << frame->channelId << ", " << signal.GetMaxValue() << RESTendl; } else { RESTWarning << "TRestRawUSTCToSignalProcess : unmatched signal frame!" << RESTendl; diff --git a/src/TRestRawVetoAnalysisProcess.cxx b/src/TRestRawVetoAnalysisProcess.cxx index 73b7605f..f8e8b168 100644 --- a/src/TRestRawVetoAnalysisProcess.cxx +++ b/src/TRestRawVetoAnalysisProcess.cxx @@ -90,12 +90,12 @@ /// which returns a std::pair,vector>, which contains in the first entry the name of /// the veto group, /// and in the second the comma separated string of the corresponding signal IDs. The signal IDs can -/// susequently be converted +/// subsequently be converted /// into a vector by using the TRestStringHelper::StringToElements() method. /// ///
/// -/// \warning **⚠ REST is under continous development.** This documentation +/// \warning **⚠ REST is under continuous development.** This documentation /// is offered to you by the REST community. Your HELP is needed to keep this code /// up to date. Your feedback will be worth to support this software, please report /// any problems/suggestions you may find while using it at [The REST Framework @@ -220,8 +220,8 @@ void TRestRawVetoAnalysisProcess::Initialize() { TRestEvent* TRestRawVetoAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) { fSignalEvent = (TRestRawSignalEvent*)inputEvent; - map VetoMaxPeakAmplitude_map; - map VetoPeakTime_map; + map VetoMaxPeakAmplitudeMap; + map VetoPeakTimeMap; Int_t VetoAboveThreshold = 0; Int_t NVetoAboveThreshold = 0; @@ -230,8 +230,8 @@ TRestEvent* TRestRawVetoAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) { fSignalEvent->SetRange(fRange); - VetoMaxPeakAmplitude_map.clear(); - VetoPeakTime_map.clear(); + VetoMaxPeakAmplitudeMap.clear(); + VetoPeakTimeMap.clear(); // ************************************************************** // if list of veto Ids without groups is given ****************** @@ -244,40 +244,39 @@ TRestEvent* TRestRawVetoAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) { // is -1 if (fSignalEvent->GetSignalIndex(fVetoSignalId[i]) != -1) { // We extract the parameters from the veto signal - TRestRawSignal* sgnl = fSignalEvent->GetSignalById(fVetoSignalId[i]); + TRestRawSignal* signal = fSignalEvent->GetSignalById(fVetoSignalId[i]); // Deal with noise - sgnl->CalculateBaseLine(fBaseLineRange.X(), fBaseLineRange.Y(), "ROBUST"); - sgnl->InitializePointsOverThreshold(TVector2(fPointThreshold, fSignalThreshold), - fPointsOverThreshold); + signal->CalculateBaseLine(fBaseLineRange.X(), fBaseLineRange.Y(), "ROBUST"); + signal->InitializePointsOverThreshold(TVector2(fPointThreshold, fSignalThreshold), + fPointsOverThreshold); - // Save two maps with (veto panel ID, max amplitude) and (veto panel ID, - // peak time) - if (sgnl->GetPointsOverThreshold().size() >= (unsigned int)fPointsOverThreshold) { + // Save two maps with (veto panel ID, max amplitude) and (veto panel ID, peak time) + if (signal->GetPointsOverThreshold().size() >= (unsigned int)fPointsOverThreshold) { // signal is not noise - VetoMaxPeakAmplitude_map[fVetoSignalId[i]] = sgnl->GetMaxPeakValue(); + VetoMaxPeakAmplitudeMap[fVetoSignalId[i]] = signal->GetMaxPeakValue(); } else { // signal is noise - VetoMaxPeakAmplitude_map[fVetoSignalId[i]] = 0; + VetoMaxPeakAmplitudeMap[fVetoSignalId[i]] = 0; } - VetoPeakTime_map[fVetoSignalId[i]] = sgnl->GetMaxPeakBin(); + VetoPeakTimeMap[fVetoSignalId[i]] = signal->GetMaxPeakBin(); // We remove the signal from the event fSignalEvent->RemoveSignalWithId(fVetoSignalId[i]); // check if signal is above threshold - if (sgnl->GetMaxPeakValue() > fThreshold) { + if (signal->GetMaxPeakValue() > fThreshold) { VetoAboveThreshold = 1; NVetoAboveThreshold += 1; } // check if signal is in time window - if (sgnl->GetMaxPeakBin() > fTimeWindow[0] && sgnl->GetMaxPeakBin() < fTimeWindow[1]) { + if (signal->GetMaxPeakBin() > fTimeWindow[0] && signal->GetMaxPeakBin() < fTimeWindow[1]) { VetoInTimeWindow = 1; NVetoInTimeWindow += 1; } } } - SetObservableValue("PeakTime", VetoPeakTime_map); - SetObservableValue("MaxPeakAmplitude", VetoMaxPeakAmplitude_map); + SetObservableValue("PeakTime", VetoPeakTimeMap); + SetObservableValue("MaxPeakAmplitude", VetoMaxPeakAmplitudeMap); if (fThreshold != -1) { SetObservableValue("VetoAboveThreshold", VetoAboveThreshold); SetObservableValue("NvetoAboveThreshold", NVetoAboveThreshold); @@ -304,45 +303,44 @@ TRestEvent* TRestRawVetoAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) { // iterate over vetoes in each group vector groupIds = StringToElements(fVetoGroupIds[i], ","); for (unsigned int j = 0; j < groupIds.size(); j++) { - // Checks if channel (groupIds) participated in the event. If not, - // it is -1 + // Checks if channel (groupIds) participated in the event. If not it is -1 if (fSignalEvent->GetSignalIndex(groupIds[j]) != -1) { // We extract the parameters from the veto signal - TRestRawSignal* sgnl = fSignalEvent->GetSignalById(groupIds[j]); + TRestRawSignal* signal = fSignalEvent->GetSignalById(groupIds[j]); // Deal with noise - sgnl->CalculateBaseLine(fBaseLineRange.X(), fBaseLineRange.Y(), "ROBUST"); - sgnl->InitializePointsOverThreshold(TVector2(fPointThreshold, fSignalThreshold), - fPointsOverThreshold); - // Save two maps with (veto panel ID, max amplitude) and (veto panel - // ID, peak time) - if (sgnl->GetPointsOverThreshold().size() >= (unsigned int)fPointsOverThreshold) { + signal->CalculateBaseLine(fBaseLineRange.X(), fBaseLineRange.Y(), "ROBUST"); + signal->InitializePointsOverThreshold(TVector2(fPointThreshold, fSignalThreshold), + fPointsOverThreshold); + // Save two maps with (veto panel ID, max amplitude) and (veto panel ID, peak time) + if (signal->GetPointsOverThreshold().size() >= (unsigned int)fPointsOverThreshold) { // signal is not noise - VetoMaxPeakAmplitude_map[groupIds[j]] = sgnl->GetMaxPeakValue(); + VetoMaxPeakAmplitudeMap[groupIds[j]] = signal->GetMaxPeakValue(); } else { // signal is noise - VetoMaxPeakAmplitude_map[groupIds[j]] = 0; + VetoMaxPeakAmplitudeMap[groupIds[j]] = 0; } - VetoPeakTime_map[groupIds[j]] = sgnl->GetMaxPeakBin(); + VetoPeakTimeMap[groupIds[j]] = signal->GetMaxPeakBin(); // We remove the signal from the event fSignalEvent->RemoveSignalWithId(groupIds[j]); // check if signal is above threshold - if (sgnl->GetMaxPeakValue() > fThreshold) { + if (signal->GetMaxPeakValue() > fThreshold) { VetoAboveThreshold = 1; NVetoAboveThreshold += 1; } // check if signal is in time window - if (sgnl->GetMaxPeakBin() > fTimeWindow[0] && sgnl->GetMaxPeakBin() < fTimeWindow[1]) { + if (signal->GetMaxPeakBin() > fTimeWindow[0] && + signal->GetMaxPeakBin() < fTimeWindow[1]) { VetoInTimeWindow = 1; NVetoInTimeWindow += 1; } } } - SetObservableValue(fPeakTime[i], VetoPeakTime_map); - SetObservableValue(fPeakAmp[i], VetoMaxPeakAmplitude_map); + SetObservableValue(fPeakTime[i], VetoPeakTimeMap); + SetObservableValue(fPeakAmp[i], VetoMaxPeakAmplitudeMap); - VetoMaxPeakAmplitude_map.clear(); - VetoPeakTime_map.clear(); + VetoMaxPeakAmplitudeMap.clear(); + VetoPeakTimeMap.clear(); } if (fThreshold != -1) { @@ -358,7 +356,9 @@ TRestEvent* TRestRawVetoAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) { if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Debug) { fSignalEvent->PrintEvent(); - if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Extreme) GetChar(); + if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Extreme) { + GetChar(); + } } return fSignalEvent; @@ -366,17 +366,21 @@ TRestEvent* TRestRawVetoAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) { /// \brief Function that returns the index of a specified veto group within the group name vector and ID /// vector -Int_t TRestRawVetoAnalysisProcess::GetGroupIndex(string groupName) { +Int_t TRestRawVetoAnalysisProcess::GetGroupIndex(const string& groupName) { auto it = find(fVetoGroupNames.begin(), fVetoGroupNames.end(), groupName); - if (it != fVetoGroupNames.end()) return it - fVetoGroupNames.begin(); + if (it != fVetoGroupNames.end()) { + return it - fVetoGroupNames.begin(); + } return -1; } /// \brief Function that returns a string of the signal IDs for the specified veto group -string TRestRawVetoAnalysisProcess::GetGroupIds(string groupName) { +string TRestRawVetoAnalysisProcess::GetGroupIds(const string& groupName) { Int_t index = GetGroupIndex(groupName); - if (index != -1) return fVetoGroupIds[index]; - return std::string("-1"); + if (index != -1) { + return fVetoGroupIds[index]; + } + return "-1"; } ///////////////////////////////////////////////