Skip to content
Snippets Groups Projects
MainWindow.h 1.72 KiB
Newer Older
  • Learn to ignore specific revisions
  • mingf2's avatar
    mingf2 committed
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QCloseEvent>
    #include "qrootcanvas.h"
    #include "TH2D.h"
    #include "TGraph.h"
    #include "TText.h"
    
    #include "worker.h"
    
    #define SOURCE_X 3.6
    #define SOURCE_Y -10.0
    #define SOURCE_Z 0.0
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = nullptr);
        virtual void changeEvent(QEvent *e);
        ~MainWindow();
        // reconstruct images
        void run();
        void closeEvent (QCloseEvent *event);
        bool aborted=false;
    public slots:
    
    private:
        Ui::MainWindow *ui;
        Setup* config;
        SPSC* coneQueue;
        TH2D* hist;
        void createHist();
        ULong64_t counts=0;
        TText* countsText;
        void createCountsLabel();
        // gridlines
        std::vector<TGraph*> latitudes;
        std::vector<TGraph*> longitudes;
        void aitoff2xy(const double& l, const double& b, double &Al, double &Ab);
        void createGridlines();
        void redraw();
    //    void createSourceMarker();
        // worker thread responsible for image reconstruction
        Worker* workerThread;
        bool threadExecutionFinished=false;
        bool finished=false;
        bool stop=true;
    
    //    bool closed=false;
    //    void customClose();
        // update image
        void updateImage(std::vector<Cone>::const_iterator first,
                         std::vector<Cone>::const_iterator last,
                         const bool& normalized=true);
    
    protected:
    
    private slots:
        void handleOpen();
        void handleSave();
        void handleSaveAs();
        void handleClose();
    
        void handleStart();
        void handleStop();
        void handleClear();
    
        void handleAbout();
    
        void notifyThreadFinished();
    signals:
        void threadStopped();
    };
    
    #endif // MAINWINDOW_H