From 66f3ba2f02d0ce26761839dc12cf51f564f84993 Mon Sep 17 00:00:00 2001 From: "Ryan@WorkStation" Date: Thu, 21 Mar 2024 16:57:34 -0400 Subject: [PATCH] when data rate > 10k/sec, histogram will only fill the latest 10k data --- SingleSpectra.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/SingleSpectra.cpp b/SingleSpectra.cpp index 4532ae5..fa62d8d 100644 --- a/SingleSpectra.cpp +++ b/SingleSpectra.cpp @@ -206,15 +206,21 @@ void SingleSpectra::FillHistograms(){ digiMTX[i].lock(); for( int ch = 0; ch < digi[i]->GetNumInputCh(); ch ++ ){ int lastIndex = digi[i]->GetData()->GetDataIndex(ch); + if( lastIndex < 0 ) continue; + int loopIndex = digi[i]->GetData()->GetLoopIndex(ch); int temp1 = lastIndex + loopIndex * digi[i]->GetData()->GetDataSize(); int temp2 = lastFilledIndex[i][ch] + loopFilledIndex[i][ch] * digi[i]->GetData()->GetDataSize(); // printf("%d |%d %d \n", ch, temp2, temp1); - if( lastIndex < 0 ) continue; - if( temp1 <= temp2 ) continue; + + if( temp1 - temp2 > digi[i]->GetData()->GetDataSize() ) { //DefaultDataSize = 10k + temp2 = temp1 - digi[i]->GetData()->GetDataSize(); + lastFilledIndex[i][ch] = lastIndex; + lastFilledIndex[i][ch] = loopIndex - 1; + } for( int j = 0 ; j <= temp1 - temp2; j ++){ lastFilledIndex[i][ch] ++; @@ -223,9 +229,7 @@ void SingleSpectra::FillHistograms(){ loopFilledIndex[i][ch] ++; } hist[i][ch]->Fill( digi[i]->GetData()->GetEnergy(ch, lastFilledIndex[i][ch])); - hist2D[i]->Fill(ch, digi[i]->GetData()->GetEnergy(ch, lastFilledIndex[i][ch])); - } if( histVisibility[i][ch] ) hist[i][ch]->UpdatePlot(); if( hist2DVisibility[i] ) hist2D[i]->UpdatePlot();