add Toggle line display on histogram 1D
This commit is contained in:
parent
a58ddbc6d4
commit
6faeaf7c9b
|
@ -15,6 +15,8 @@ public:
|
|||
// DebugPrint("%s", "Histogram1D");
|
||||
isLogY = false;
|
||||
|
||||
for( int i = 0; i < MaxNHist; i++ ) showHist[i] = true;
|
||||
|
||||
for( int i = 0; i < 3; i ++) txt[i] = nullptr;
|
||||
nData = 1;
|
||||
Rebin(xbin, xmin, xmax);
|
||||
|
@ -86,12 +88,15 @@ public:
|
|||
|
||||
QAction * a1 = menu.addAction("UnZoom");
|
||||
QAction * a5 = menu.addAction("Set/UnSet Log-y");
|
||||
QAction * a6 = nullptr;
|
||||
if( nData > 1 ) a6 = menu.addAction("Toggle lines display");
|
||||
QAction * a2 = menu.addAction("Clear hist.");
|
||||
QAction * a3 = menu.addAction("Toggle Stat.");
|
||||
QAction * a4 = menu.addAction("Rebin (clear histogram)");
|
||||
//TODO fitGuass
|
||||
|
||||
QAction *selectedAction = menu.exec(event->globalPosition().toPoint());
|
||||
//*========================================== UnZoom
|
||||
if( selectedAction == a1 ){
|
||||
xAxis->setRangeLower(xMin);
|
||||
xAxis->setRangeUpper(xMax);
|
||||
|
@ -101,11 +106,13 @@ public:
|
|||
usingMenu = false;
|
||||
}
|
||||
|
||||
//*========================================== Clear Hist
|
||||
if( selectedAction == a2 ){
|
||||
Clear();
|
||||
usingMenu = false;
|
||||
}
|
||||
|
||||
//*========================================== Toggle Stat.
|
||||
if( selectedAction == a3 ){
|
||||
for( int i = 0; i < 3; i++){
|
||||
txt[i]->setVisible( !txt[i]->visible());
|
||||
|
@ -113,6 +120,7 @@ public:
|
|||
replot();
|
||||
usingMenu = false;
|
||||
}
|
||||
//*========================================== Rebin
|
||||
if( selectedAction == a4 ){
|
||||
QDialog dialog(this);
|
||||
dialog.setWindowTitle("Rebin histogram");
|
||||
|
@ -145,25 +153,25 @@ public:
|
|||
double number[3];
|
||||
|
||||
QObject::connect(&buttonBox, &QDialogButtonBox::accepted, [&]() {
|
||||
int OKcount = 0;
|
||||
bool conversionOk = true;
|
||||
for( int i = 0; i < 3; i++ ){
|
||||
number[i] = lineEdit[i]->text().toDouble(&conversionOk);
|
||||
if( conversionOk ){
|
||||
OKcount++;
|
||||
}else{
|
||||
msg->setText(nameList[i] + " is invalid.");
|
||||
return;
|
||||
}
|
||||
int OKcount = 0;
|
||||
bool conversionOk = true;
|
||||
for( int i = 0; i < 3; i++ ){
|
||||
number[i] = lineEdit[i]->text().toDouble(&conversionOk);
|
||||
if( conversionOk ){
|
||||
OKcount++;
|
||||
}else{
|
||||
msg->setText(nameList[i] + " is invalid.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if( OKcount == 3 ) {
|
||||
if( number[2] > number[1] ) {
|
||||
dialog.accept();
|
||||
}else{
|
||||
msg->setText(nameList[2] + " is smaller than " + nameList[1]);
|
||||
}
|
||||
if( OKcount == 3 ) {
|
||||
if( number[2] > number[1] ) {
|
||||
dialog.accept();
|
||||
}else{
|
||||
msg->setText(nameList[2] + " is smaller than " + nameList[1]);
|
||||
}
|
||||
}
|
||||
});
|
||||
QObject::connect(&buttonBox, &QDialogButtonBox::rejected, [&]() { dialog.reject();});
|
||||
|
||||
|
@ -174,8 +182,38 @@ public:
|
|||
}
|
||||
|
||||
}
|
||||
if( selectedAction == a5 ){
|
||||
|
||||
//*========================================== Toggle line Display
|
||||
if( selectedAction == a6 ){
|
||||
QDialog dialog(this);
|
||||
dialog.setWindowTitle("Toggle lines Display");
|
||||
|
||||
QFormLayout layout(&dialog);
|
||||
|
||||
QCheckBox ** cbline = new QCheckBox *[nData];
|
||||
for( int i = 0; i < nData; i++ ){
|
||||
cbline[i] = new QCheckBox(graph(i)->name(), &dialog);
|
||||
layout.addRow(cbline[i]);
|
||||
if( showHist[i] ) cbline[i]->setChecked(true);
|
||||
}
|
||||
|
||||
QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, &dialog);
|
||||
layout.addRow(&buttonBox);
|
||||
|
||||
QObject::connect(&buttonBox, &QDialogButtonBox::accepted, [&]() {
|
||||
for( int i = 0; i < nData; i++ ){
|
||||
showHist[i] = cbline[i]->isChecked();
|
||||
}
|
||||
dialog.accept();
|
||||
});
|
||||
QObject::connect(&buttonBox, &QDialogButtonBox::rejected, [&]() { dialog.reject();});
|
||||
|
||||
if( dialog.exec() == QDialog::Accepted ){
|
||||
UpdatePlot();
|
||||
}
|
||||
}
|
||||
//*========================================== Set Log y
|
||||
if( selectedAction == a5 ){
|
||||
if( !isLogY ){
|
||||
this->yAxis->setScaleType(QCPAxis::stLogarithmic);
|
||||
isLogY = true;
|
||||
|
@ -211,7 +249,10 @@ public:
|
|||
|
||||
void UpdatePlot(){
|
||||
DebugPrint("%s", "Histogram1D");
|
||||
for( int ID = 0 ; ID < nData; ID ++) graph(ID)->setData(xList, yList[ID]);
|
||||
for( int ID = 0 ; ID < nData; ID ++) {
|
||||
graph(ID)->setVisible(showHist[ID]);
|
||||
graph(ID)->setData(xList, yList[ID]);
|
||||
}
|
||||
xAxis->setRangeLower(xMin);
|
||||
xAxis->setRangeUpper(xMax);
|
||||
yAxis->setRangeLower(0);
|
||||
|
@ -324,6 +365,8 @@ private:
|
|||
|
||||
bool usingMenu;
|
||||
|
||||
bool showHist[MaxNHist];
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -212,7 +212,7 @@ SingleSpectra::SingleSpectra(Digitizer ** digi, unsigned int nDigi, QString rawD
|
|||
if( i < nDigi ) {
|
||||
hist[i][j] = new Histogram1D("Digi-" + QString::number(digi[i]->GetSerialNumber()) +", Ch-" + QString::number(j), "Raw Energy [ch]", nBin, eMin, eMax);
|
||||
if( digi[i]->GetDPPType() == DPPTypeCode::DPP_PSD_CODE ){
|
||||
hist[i][j]->AddDataList("Long Energy", Qt::green);
|
||||
hist[i][j]->AddDataList("Short Energy", Qt::green);
|
||||
}
|
||||
}else{
|
||||
hist[i][j] = nullptr;
|
||||
|
@ -367,7 +367,9 @@ void SingleSpectra::FillHistograms(){
|
|||
|
||||
hist[ID][ch]->Fill( data );
|
||||
if( digi[i]->GetDPPType() == DPPTypeCode::DPP_PSD_CODE ){
|
||||
hist[ID][ch]->Fill( digi[ID]->GetData()->GetEnergy2(ch, lastFilledIndex[ID][ch]), 1);
|
||||
uShort e2 = digi[ID]->GetData()->GetEnergy2(ch, lastFilledIndex[ID][ch]);
|
||||
// printf("%u \n", e2);
|
||||
hist[ID][ch]->Fill( e2, 1);
|
||||
}
|
||||
hist2D[ID]->Fill(ch, data);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user