diff --git a/Headers/setup.h b/Headers/setup.h index 4063ea97f535ca2667ef1644d38f06c33ddf973e..9af31582cb49005fe86b9ccf67fe55e86a207bbe 100644 --- a/Headers/setup.h +++ b/Headers/setup.h @@ -111,7 +111,7 @@ public: // queue capacity ulong capacity=1024; // max number of cones to process - ulong maxN=1000; + ulong maxN=10000; }; class Cone diff --git a/Sources/MainWindow.cpp b/Sources/MainWindow.cpp index e99f5027161977f862356ccaf0a1ff83b1dfe1ba..64a15850aec36d51e8c204246fd36683c7920e2f 100644 --- a/Sources/MainWindow.cpp +++ b/Sources/MainWindow.cpp @@ -50,7 +50,7 @@ MainWindow::MainWindow(QWidget *parent) : // update every 0.1 second QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, this, QOverload<>::of(&MainWindow::redraw)); - timer->start(100); + timer->start(1000); setWindowTitle(tr("Back projection")); ui->canvas->Canvas()->Modified(); @@ -99,6 +99,8 @@ MainWindow::~MainWindow() delete ui; if (image) delete image; + if (countsText) + delete countsText; if (config) delete config; for (int i = 0; i < longitudes.size(); ++i) { @@ -226,12 +228,11 @@ bool MainWindow::handleSaveAs() QString fileName = QFileDialog::getSaveFileName(this, tr("Save Image"), "", tr("PNG file (*.png);;ROOT file (*.root);;C file (*.C);;text file (*.txt)")); - if (fileName.isEmpty()) - return false; - else { - if (saveCanvas(fileName)) - curFile = fileName; + if (!fileName.isEmpty() && saveCanvas(fileName)){ + curFile = fileName; + return true; } + return false; } bool MainWindow::saveCanvas(const QString& fileName) @@ -240,7 +241,7 @@ bool MainWindow::saveCanvas(const QString& fileName) QString ext=fileInfo.completeSuffix(); bool saved=false; if (ext == "root" || ext == "png" || ext == "C") { -// qDebug() << "Save as " << ext << " file."; + qDebug() << "Save as " << ext << " file."; image->mMutex.lock(); ui->canvas->Canvas()->SaveAs(fileName.toLocal8Bit().constData()); image->mMutex.unlock(); diff --git a/Sources/reconstruction.cpp b/Sources/reconstruction.cpp index 7426a88698e43c26bca12a848e8ddc4a2538cf6d..fc19ee5454c2af6aa70d93b6e4bf71852f8f1ac7 100644 --- a/Sources/reconstruction.cpp +++ b/Sources/reconstruction.cpp @@ -164,6 +164,10 @@ int RecoImage::addConesNormalized(std::vector<Cone>::const_iterator first, { for (int j = 0; j < config->phiBins; j++) { + // if (i==0&&j==0) + // { + // std::cout << omp_get_num_threads() << '\n'; + // } ray = k->apex - config->xbs[i][j]; beta = getCosAngle(ray, k->axis); sgmb2 = std::pow((ray/(ray*ray) + k->axis/(k->axis*k->axis)- diff --git a/Sources/worker.cpp b/Sources/worker.cpp index 819b09ea77d093c0d61c4f42af25d0c7f8bc0149..337b8871fe72d97ad47a2e3acc33dcb78ac2d8cf 100644 --- a/Sources/worker.cpp +++ b/Sources/worker.cpp @@ -31,10 +31,13 @@ void Worker::run() cones[i]=Cone(line); i++; } + if (exitted) + break; localCounts+=i; // update image image->updateImage(cones.cbegin(), cones.cbegin()+i, true); - if (exitted || line.isNull() || localCounts >= config->maxN) +// if (exitted || in.atEnd() || localCounts >= config->maxN) + if (exitted || localCounts >= config->maxN) break; } } diff --git a/imagerQt.pro b/imagerQt.pro index 221170b588ee0c8697dd506c695feacf58943b22..1967a8ef6f91314558b39014845140b73cb6a7a0 100644 --- a/imagerQt.pro +++ b/imagerQt.pro @@ -47,14 +47,18 @@ FORMS += \ QMAKE_LFLAGS += -fopenmp QMAKE_CXXFLAGS += -fopenmp +#QMAKE_CXXFLAGS += -fsanitize=address +#QMAKE_LFLAGS += -fsanitize=address LIBS += -fopenmp + + INCLUDEPATH += \ - $(ROOTSYS)/include \ + $$(ROOTSYS)/include \ $$PWD/Headers LIBS += \ - -L$(ROOTSYS)/lib -lCore -lImt -lRIO -lNet -lHist -lGraf \ + -L$$(ROOTSYS)/lib -lCore -lImt -lRIO -lNet -lHist -lGraf \ -lGraf3d -lGpad -lTree -lTreePlayer -lRint -lPostscript -lMatrix \ -lPhysics -lMathCore -lThread -lMultiProc -pthread -lm -ldl -rdynamic