From 2dc0f494b38b60f4a8cb67508f30b6375a032f0b Mon Sep 17 00:00:00 2001 From: splitPoleDAQ Date: Mon, 12 Jun 2023 15:45:16 -0400 Subject: [PATCH] it seems that all bugs are fixed for online analyzser --- Analyser.cpp | 25 +++++++------------- ClassData.h | 2 +- Histogram2D.h | 56 +++++++++++++++++++++++++++----------------- OnlineEventBuilder.h | 2 +- 4 files changed, 45 insertions(+), 40 deletions(-) diff --git a/Analyser.cpp b/Analyser.cpp index 6442207..e43497d 100644 --- a/Analyser.cpp +++ b/Analyser.cpp @@ -8,6 +8,9 @@ Analyzer::Analyzer(Digitizer ** digi, unsigned int nDigi, QMainWindow * parent ) this->digi = digi; this->nDigi = nDigi; + setWindowTitle("Online Analyzer"); + setGeometry(0, 0, 1000, 800); + oeb = new OnlineEventBuilder * [nDigi]; for( unsigned int i = 0; i < nDigi; i++ ) oeb[i] = new OnlineEventBuilder(digi[i]); @@ -15,9 +18,6 @@ Analyzer::Analyzer(Digitizer ** digi, unsigned int nDigi, QMainWindow * parent ) buildTimerThread->SetWaitTimeinSec(1.0); //^Set event build interval connect( buildTimerThread, &TimingThread::timeUp, this, &Analyzer::UpdateHistograms); - setWindowTitle("Online Analyzer"); - setGeometry(0, 0, 1000, 800); - QWidget * layoutWidget = new QWidget(this); setCentralWidget(layoutWidget); layout = new QGridLayout(layoutWidget); @@ -35,18 +35,20 @@ Analyzer::~Analyzer(){ } void Analyzer::StartThread(){ + // printf("%s\n", __func__); for( unsigned int i = 0; i < nDigi; i++) oeb[i]->ClearEvents(); buildTimerThread->start(); } void Analyzer::StopThread(){ - + // printf("%s\n", __func__); buildTimerThread->Stop(); buildTimerThread->quit(); buildTimerThread->wait(); - } +//^####################################### below are open to customization + void Analyzer::SetUpCanvas(){ setGeometry(0, 0, 1600, 800); @@ -57,17 +59,6 @@ void Analyzer::SetUpCanvas(){ h1 = new Histogram1D("testing", "x", 400, 0, 10000, this); layout->addWidget(h1, 0, 1); - // std::random_device rd; - // std::mt19937 gen(rd()); - // std::normal_distribution distribution(2000.0, 1000); - // for( int i = 0; i < 1000 ; i++ ){ - // double x = distribution(gen); - // double y = distribution(gen); - // h2->Fill(x, y); - // h1->Fill(x); - // } - // h1->UpdatePlot(); - } void Analyzer::UpdateHistograms(){ @@ -77,7 +68,7 @@ void Analyzer::UpdateHistograms(){ oeb[0]->BuildEvents(100, false); digiMTX[0].unlock(); - oeb[0]->PrintStat(); + //oeb[0]->PrintStat(); //============ Get events, and do analysis long eventBuilt = oeb[0]->eventBuilt; diff --git a/ClassData.h b/ClassData.h index 3f6b3bb..258621e 100644 --- a/ClassData.h +++ b/ClassData.h @@ -14,7 +14,7 @@ #include "CAENDigitizerType.h" #include "macro.h" -#define MaxNData 50 /// store 10k events per channels +#define MaxNData 10000 /// store 10k events per channels class Data{ diff --git a/Histogram2D.h b/Histogram2D.h index bd4331d..e9bfd8b 100644 --- a/Histogram2D.h +++ b/Histogram2D.h @@ -47,9 +47,12 @@ public: QCPColorGradient color; color.clearColorStops(); color.setColorStopAt( 0.0, QColor("white" )); - color.setColorStopAt( 0.3, QColor("blue")); - color.setColorStopAt( 0.4, QColor("green")); - color.setColorStopAt( 1.0, QColor("yellow")); + color.setColorStopAt( 0.0001, QColor("purple" )); + color.setColorStopAt( 0.2, QColor("blue")); + color.setColorStopAt( 0.4, QColor("cyan")); + color.setColorStopAt( 0.6, QColor("green")); + color.setColorStopAt( 0.8, QColor("yellow")); + color.setColorStopAt( 1.0, QColor("red")); colorMap->setGradient(color); double xPosStart = 0.02; @@ -165,11 +168,13 @@ public: yAxis->setRangeUpper(yMax); replot(); usingMenu = false; + return; } if( selectedAction == a2 ) { Clear(); usingMenu = false; + return; } if( selectedAction == a3 ){ @@ -181,11 +186,13 @@ public: } replot(); usingMenu = false; + return; } if( selectedAction == a4){ rightMouseClickRebin(); usingMenu = false; + return; } if( selectedAction == a5 ){ @@ -194,6 +201,7 @@ public: isDrawCut= true; usingMenu = false; numCut ++; + return; } if( selectedAction && numCut > 0 && selectedAction->text().contains("Delete ") ){ @@ -230,27 +238,12 @@ public: cutNameList.clear(); cutEntryList.clear(); } - + return; } if( selectedAction && numCut > 0 && selectedAction->text().contains("Clear all Cuts") ){ - numCut = 0; - tempCutID = -1; - lastPlottableID = -1; - cutList.clear(); - cutIDList.clear(); - for( int i = cutTextIDList.count() - 1; i >= 0 ; i--){ - if( cutTextIDList[i] < 0 ) continue; - removeItem(cutTextIDList[i]); - removePlottable(plottableIDList[i]); - } - replot(); - - cutTextIDList.clear(); - plottableIDList.clear(); - cutNameList.clear(); - cutEntryList.clear(); - + ClearAllCuts(); + return; } if( selectedAction && numCut > 0 && selectedAction->text().contains("Add/Edit names to Cuts") ){ @@ -276,6 +269,7 @@ public: }); } dialog.exec(); + return; } }///================= end of right click @@ -357,6 +351,7 @@ public: txt[i][j]->setText("0"); } } + colorMap->data()->clear(); UpdatePlot(); } @@ -414,6 +409,25 @@ public: //qDebug() << "Plottable count : " << plottableCount() << ", cutList.count :" << cutList.count() << ", cutID :" << lastPlottableID; } + void ClearAllCuts(){ + numCut = 0; + tempCutID = -1; + lastPlottableID = -1; + cutList.clear(); + cutIDList.clear(); + for( int i = cutTextIDList.count() - 1; i >= 0 ; i--){ + if( cutTextIDList[i] < 0 ) continue; + removeItem(cutTextIDList[i]); + removePlottable(plottableIDList[i]); + } + replot(); + + cutTextIDList.clear(); + plottableIDList.clear(); + cutNameList.clear(); + cutEntryList.clear(); + } + QList GetCutList() const{return cutList;} // this list may contain empty element QList GetCutEntryList() const{ return cutEntryList;} void PrintCutEntry() const{ diff --git a/OnlineEventBuilder.h b/OnlineEventBuilder.h index 567a0ce..23e5455 100644 --- a/OnlineEventBuilder.h +++ b/OnlineEventBuilder.h @@ -14,7 +14,7 @@ Use another class to hold the event data and methods. #include "macro.h" #include "ClassDigitizer.h" -#define MaxNEvent 30 +#define MaxNEvent 5000 struct dataPoint{ unsigned short ch;