mirror of
https://github.com/gwm17/Specter.git
synced 2024-11-22 10:18:50 -05:00
Update some style, comments. Prepare for new round of testing
This commit is contained in:
parent
7abe92582c
commit
c12bcd9f0e
|
@ -25,14 +25,14 @@ namespace Specter {
|
||||||
|
|
||||||
void OnUpdate() override;
|
void OnUpdate() override;
|
||||||
|
|
||||||
inline void SetEventCallback(const EventCallbackFunc& function) override { m_data.event_callback_func = function; }
|
void SetEventCallback(const EventCallbackFunc& function) override { m_data.event_callback_func = function; }
|
||||||
inline unsigned int GetWidth() const override { return m_data.width; }
|
unsigned int GetWidth() const override { return m_data.width; }
|
||||||
inline unsigned int GetHeight() const override { return m_data.height; }
|
unsigned int GetHeight() const override { return m_data.height; }
|
||||||
inline std::string GetName() const override { return m_data.name; }
|
std::string GetName() const override { return m_data.name; }
|
||||||
void SetVSync(bool enabled) override;
|
void SetVSync(bool enabled) override;
|
||||||
bool IsVSync() const override;
|
bool IsVSync() const override;
|
||||||
|
|
||||||
inline virtual void* GetNativeWindow() const override { return m_window; }
|
virtual void* GetNativeWindow() const override { return m_window; }
|
||||||
private:
|
private:
|
||||||
virtual void Init(const WindowProperties& props);
|
virtual void Init(const WindowProperties& props);
|
||||||
virtual void Shutdown();
|
virtual void Shutdown();
|
||||||
|
|
|
@ -38,23 +38,22 @@ namespace Specter {
|
||||||
virtual ~Application();
|
virtual ~Application();
|
||||||
|
|
||||||
void Run();
|
void Run();
|
||||||
inline void Close() { m_runFlag = false; }
|
void Close() { m_runFlag = false; }
|
||||||
|
|
||||||
void OnEvent(Event& event);
|
void OnEvent(Event& event);
|
||||||
void PushLayer(Layer* layer);
|
void PushLayer(Layer* layer);
|
||||||
inline void PushAnalysisStage(AnalysisStage* stage) { m_physicsLayer->PushStage(stage); }
|
void PushAnalysisStage(AnalysisStage* stage) { m_physicsLayer->PushStage(stage); }
|
||||||
void PushOverlay(Layer* layer);
|
void PushOverlay(Layer* layer);
|
||||||
|
|
||||||
|
|
||||||
inline static Application& Get() { return *s_instance; }
|
static Application& Get() { return *s_instance; }
|
||||||
|
|
||||||
inline Window& GetWindow() { return *m_window; }
|
Window& GetWindow() { return *m_window; }
|
||||||
|
|
||||||
inline const ApplicationArgs& GetArgs() { return m_args; }
|
const ApplicationArgs& GetArgs() { return m_args; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool OnWindowCloseEvent(WindowCloseEvent& event);
|
bool OnWindowCloseEvent(WindowCloseEvent& event);
|
||||||
bool OnManagerBindEvent(const std::shared_ptr<SpectrumManager>& manager);
|
|
||||||
|
|
||||||
ApplicationArgs m_args;
|
ApplicationArgs m_args;
|
||||||
|
|
||||||
|
@ -75,8 +74,7 @@ namespace Specter {
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This function is left to be defined by the user. In principle we don't need to do this, as the Specter library doesn't handle creation of the application,
|
This function must be defined by the user. It is called in by the entry point function in EntryPoint.h
|
||||||
but I like it and might be useful for changing to a system with a pre-defined entry point.
|
|
||||||
*/
|
*/
|
||||||
Application* CreateApplication(const ApplicationArgs& args);
|
Application* CreateApplication(const ApplicationArgs& args);
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,13 +64,13 @@ namespace Specter {
|
||||||
virtual std::vector<double> GetXValues() const = 0;
|
virtual std::vector<double> GetXValues() const = 0;
|
||||||
virtual std::vector<double> GetYValues() const = 0;
|
virtual std::vector<double> GetYValues() const = 0;
|
||||||
|
|
||||||
inline const bool IsValid() const { return m_isValid; }
|
const bool IsValid() const { return m_isValid; }
|
||||||
inline void ResetValidity() { m_isValid = false; }
|
void ResetValidity() { m_isValid = false; }
|
||||||
inline CutType GetType() const { return m_params.type; }
|
CutType GetType() const { return m_params.type; }
|
||||||
inline const std::string& GetName() const { return m_params.name; }
|
const std::string& GetName() const { return m_params.name; }
|
||||||
inline const std::string& GetXParameter() const { return m_params.x_par; }
|
const std::string& GetXParameter() const { return m_params.x_par; }
|
||||||
inline const std::string& GetYParameter() const { return m_params.y_par; }
|
const std::string& GetYParameter() const { return m_params.y_par; }
|
||||||
inline const CutArgs& GetCutArgs() const { return m_params; }
|
const CutArgs& GetCutArgs() const { return m_params; }
|
||||||
protected:
|
protected:
|
||||||
CutArgs m_params;
|
CutArgs m_params;
|
||||||
bool m_isValid;
|
bool m_isValid;
|
||||||
|
@ -115,7 +115,7 @@ namespace Specter {
|
||||||
virtual std::vector<double> GetXValues() const override { return std::vector<double>({ m_minVal, m_maxVal }); }
|
virtual std::vector<double> GetXValues() const override { return std::vector<double>({ m_minVal, m_maxVal }); }
|
||||||
virtual std::vector<double> GetYValues() const override { return std::vector<double>(); }
|
virtual std::vector<double> GetYValues() const override { return std::vector<double>(); }
|
||||||
|
|
||||||
inline const std::vector<std::string>& GetSubHistograms() const { return m_subhistos; }
|
const std::vector<std::string>& GetSubHistograms() const { return m_subhistos; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
double m_minVal, m_maxVal;
|
double m_minVal, m_maxVal;
|
||||||
|
|
|
@ -8,9 +8,7 @@
|
||||||
HistogramArgs are the underlying data which define a histogram. This is grouped in a struct to easily pass these around for use in contexts like the Editor.
|
HistogramArgs are the underlying data which define a histogram. This is grouped in a struct to easily pass these around for use in contexts like the Editor.
|
||||||
Every histogram has a set of histogram parameters.
|
Every histogram has a set of histogram parameters.
|
||||||
|
|
||||||
Histogram is the base class of all histograms. Should not be used in practice. Every histogram contains functions to query what type of underlying histogram it is. If one has
|
Histogram is the base class of all histograms. Should not be used in practice. In the histogram args is an enum SpectrumType which indicates if it is a 1D, 2D, or Summary spectrum.
|
||||||
the Histogram object, Is1D() or Is2D() can be called. If one only has the HistogramArgs, the values of x_par and y_par can be inspected. In particular, a 1D histogram will have
|
|
||||||
y_par set to "None", while a 2D histogram should have a valid parameter name for y_par.
|
|
||||||
|
|
||||||
Histogram1D is a one dimensional (single parameter) histogram. Histogram2D is a two dimensional (two parameter) histogram. The only real difference between these in practice, other than
|
Histogram1D is a one dimensional (single parameter) histogram. Histogram2D is a two dimensional (two parameter) histogram. The only real difference between these in practice, other than
|
||||||
the obvious two vs. one parameter thing, is that a Histogram2D contains methods to set the z-axis range (color scale) which ImPlot does not provide intrinsic access to from the plot itself.
|
the obvious two vs. one parameter thing, is that a Histogram2D contains methods to set the z-axis range (color scale) which ImPlot does not provide intrinsic access to from the plot itself.
|
||||||
|
@ -19,6 +17,8 @@
|
||||||
|
|
||||||
StatResults is a struct containing statistical information about a region of a histogram.
|
StatResults is a struct containing statistical information about a region of a histogram.
|
||||||
|
|
||||||
|
A HistogramSummary is a 2D display of many 1D histograms. That is, a summary back-links to other Histogram1D's already created. It is important to note that the linked sub-histograms should all have the same binning.
|
||||||
|
|
||||||
GWM -- Feb 2022
|
GWM -- Feb 2022
|
||||||
*/
|
*/
|
||||||
#include "Histogram.h"
|
#include "Histogram.h"
|
||||||
|
|
|
@ -8,9 +8,7 @@
|
||||||
HistogramArgs are the underlying data which define a histogram. This is grouped in a struct to easily pass these around for use in contexts like the Editor.
|
HistogramArgs are the underlying data which define a histogram. This is grouped in a struct to easily pass these around for use in contexts like the Editor.
|
||||||
Every histogram has a set of histogram parameters.
|
Every histogram has a set of histogram parameters.
|
||||||
|
|
||||||
Histogram is the base class of all histograms. Should not be used in practice. Every histogram contains functions to query what type of underlying histogram it is. If one has
|
Histogram is the base class of all histograms. Should not be used in practice. In the histogram args is an enum SpectrumType which indicates if it is a 1D, 2D, or Summary spectrum.
|
||||||
the Histogram object, Is1D() or Is2D() can be called. If one only has the HistogramArgs, the values of x_par and y_par can be inspected. In particular, a 1D histogram will have
|
|
||||||
y_par set to "None", while a 2D histogram should have a valid parameter name for y_par.
|
|
||||||
|
|
||||||
Histogram1D is a one dimensional (single parameter) histogram. Histogram2D is a two dimensional (two parameter) histogram. The only real difference between these in practice, other than
|
Histogram1D is a one dimensional (single parameter) histogram. Histogram2D is a two dimensional (two parameter) histogram. The only real difference between these in practice, other than
|
||||||
the obvious two vs. one parameter thing, is that a Histogram2D contains methods to set the z-axis range (color scale) which ImPlot does not provide intrinsic access to from the plot itself.
|
the obvious two vs. one parameter thing, is that a Histogram2D contains methods to set the z-axis range (color scale) which ImPlot does not provide intrinsic access to from the plot itself.
|
||||||
|
@ -19,6 +17,8 @@
|
||||||
|
|
||||||
StatResults is a struct containing statistical information about a region of a histogram.
|
StatResults is a struct containing statistical information about a region of a histogram.
|
||||||
|
|
||||||
|
A HistogramSummary is a 2D display of many 1D histograms. That is, a summary back-links to other Histogram1D's already created. It is important to note that the linked sub-histograms should all have the same binning.
|
||||||
|
|
||||||
GWM -- Feb 2022
|
GWM -- Feb 2022
|
||||||
*/
|
*/
|
||||||
#ifndef HISTOGRAM_H
|
#ifndef HISTOGRAM_H
|
||||||
|
@ -93,15 +93,16 @@ namespace Specter {
|
||||||
virtual void Draw() {}
|
virtual void Draw() {}
|
||||||
virtual void ClearData() {}
|
virtual void ClearData() {}
|
||||||
virtual StatResults AnalyzeRegion(double x_min, double x_max, double y_min = 0.0, double y_max = 0.0) { return StatResults(); }
|
virtual StatResults AnalyzeRegion(double x_min, double x_max, double y_min = 0.0, double y_max = 0.0) { return StatResults(); }
|
||||||
inline virtual float* GetColorScaleRange() { return nullptr; }
|
virtual float* GetColorScaleRange() { return nullptr; }
|
||||||
inline virtual std::vector<double> GetBinData() { return std::vector<double>(); }
|
virtual std::vector<double> GetBinData() { return std::vector<double>(); }
|
||||||
inline HistogramArgs& GetParameters() { return m_params; }
|
|
||||||
inline SpectrumType GetType() { return m_params.type; }
|
HistogramArgs& GetParameters() { return m_params; }
|
||||||
inline const std::string& GetXParam() const { return m_params.x_par; };
|
SpectrumType GetType() { return m_params.type; }
|
||||||
inline const std::string& GetYParam() const { return m_params.y_par; };
|
const std::string& GetXParam() const { return m_params.x_par; };
|
||||||
inline const std::string& GetName() const { return m_params.name; }
|
const std::string& GetYParam() const { return m_params.y_par; };
|
||||||
inline void AddCutToBeDrawn(const std::string& name) { m_params.cutsDrawnUpon.push_back(name); }
|
const std::string& GetName() const { return m_params.name; }
|
||||||
inline void AddCutToBeApplied(const std::string& name) { m_params.cutsAppliedTo.push_back(name); }
|
void AddCutToBeDrawn(const std::string& name) { m_params.cutsDrawnUpon.push_back(name); }
|
||||||
|
void AddCutToBeApplied(const std::string& name) { m_params.cutsAppliedTo.push_back(name); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
HistogramArgs m_params;
|
HistogramArgs m_params;
|
||||||
|
@ -117,7 +118,7 @@ namespace Specter {
|
||||||
virtual void Draw() override;
|
virtual void Draw() override;
|
||||||
virtual void ClearData() override;
|
virtual void ClearData() override;
|
||||||
virtual StatResults AnalyzeRegion(double x_min, double x_max, double y_min = 0.0, double y_max = 0.0) override;
|
virtual StatResults AnalyzeRegion(double x_min, double x_max, double y_min = 0.0, double y_max = 0.0) override;
|
||||||
inline virtual std::vector<double> GetBinData() override { return m_binCounts; }
|
virtual std::vector<double> GetBinData() override { return m_binCounts; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void InitBins();
|
void InitBins();
|
||||||
|
@ -137,9 +138,9 @@ namespace Specter {
|
||||||
virtual void Draw() override;
|
virtual void Draw() override;
|
||||||
virtual void ClearData() override;
|
virtual void ClearData() override;
|
||||||
virtual StatResults AnalyzeRegion(double x_min, double x_max, double y_min = 0.0, double y_max = 0.0) override;
|
virtual StatResults AnalyzeRegion(double x_min, double x_max, double y_min = 0.0, double y_max = 0.0) override;
|
||||||
inline virtual std::vector<double> GetBinData() override { return m_binCounts; }
|
virtual std::vector<double> GetBinData() override { return m_binCounts; }
|
||||||
|
|
||||||
inline virtual float* GetColorScaleRange() override { return m_colorScaleRange; }
|
virtual float* GetColorScaleRange() override { return m_colorScaleRange; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void InitBins();
|
void InitBins();
|
||||||
|
@ -158,14 +159,14 @@ namespace Specter {
|
||||||
HistogramSummary(const HistogramArgs& params, const std::vector<std::string>& subhistos);
|
HistogramSummary(const HistogramArgs& params, const std::vector<std::string>& subhistos);
|
||||||
~HistogramSummary();
|
~HistogramSummary();
|
||||||
|
|
||||||
inline const std::vector<std::string>& GetSubHistograms() const { return m_subhistos; }
|
const std::vector<std::string>& GetSubHistograms() const { return m_subhistos; }
|
||||||
|
|
||||||
virtual void FillData(double x, double y) override;
|
virtual void FillData(double x, double y) override;
|
||||||
virtual void ClearData() override;
|
virtual void ClearData() override;
|
||||||
virtual void Draw() override;
|
virtual void Draw() override;
|
||||||
inline virtual float* GetColorScaleRange() override { return m_colorScaleRange; }
|
virtual float* GetColorScaleRange() override { return m_colorScaleRange; }
|
||||||
virtual StatResults AnalyzeRegion(double x_min, double x_max, double y_min = 0.0, double y_max = 0.0) override;
|
virtual StatResults AnalyzeRegion(double x_min, double x_max, double y_min = 0.0, double y_max = 0.0) override;
|
||||||
inline virtual std::vector<double> GetBinData() override { return m_binCounts; }
|
virtual std::vector<double> GetBinData() override { return m_binCounts; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void InitBins();
|
void InitBins();
|
||||||
|
|
|
@ -25,7 +25,7 @@ namespace Specter {
|
||||||
virtual void OnUpdate(Timestep& step) {}
|
virtual void OnUpdate(Timestep& step) {}
|
||||||
virtual void OnEvent(Event& event) {}
|
virtual void OnEvent(Event& event) {}
|
||||||
|
|
||||||
inline const std::string& GetName() { return m_name; }
|
const std::string& GetName() { return m_name; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string m_name;
|
std::string m_name;
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace Specter {
|
||||||
public:
|
public:
|
||||||
static void Init();
|
static void Init();
|
||||||
|
|
||||||
inline static std::shared_ptr<spdlog::logger> GetLogger() { return s_logger; }
|
static std::shared_ptr<spdlog::logger> GetLogger() { return s_logger; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static std::shared_ptr<spdlog::logger> s_logger;
|
static std::shared_ptr<spdlog::logger> s_logger;
|
||||||
|
|
|
@ -21,6 +21,10 @@
|
||||||
Credit to nscldaq and in particular NSCLSpecTcl which provided the inspiration for this parameter model.
|
Credit to nscldaq and in particular NSCLSpecTcl which provided the inspiration for this parameter model.
|
||||||
|
|
||||||
GWM -- Feb 2022
|
GWM -- Feb 2022
|
||||||
|
|
||||||
|
Variables added; similar to Parameters, but intend to be an interface with UI feedback. See SpecProject for examples. -- GWM April 2023
|
||||||
|
|
||||||
|
Scalers added. In nuclear phyiscs, scalers refer to time counters of data, to track the rate of different detector components. -- GWM April 2023
|
||||||
*/
|
*/
|
||||||
#include "Parameter.h"
|
#include "Parameter.h"
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,10 @@
|
||||||
Credit to nscldaq and in particular NSCLSpecTcl which provided the inspiration for this parameter model.
|
Credit to nscldaq and in particular NSCLSpecTcl which provided the inspiration for this parameter model.
|
||||||
|
|
||||||
GWM -- Feb 2022
|
GWM -- Feb 2022
|
||||||
|
|
||||||
|
Variables added; similar to Parameters, but intend to be an interface with UI feedback. See SpecProject for examples. -- GWM April 2023
|
||||||
|
|
||||||
|
Scalers added. In nuclear phyiscs, scalers refer to time counters of data, to track the rate of different detector components. -- GWM April 2023
|
||||||
*/
|
*/
|
||||||
#ifndef PARAMETER_H
|
#ifndef PARAMETER_H
|
||||||
#define PARAMETER_H
|
#define PARAMETER_H
|
||||||
|
@ -45,11 +49,11 @@ namespace Specter {
|
||||||
Parameter(const std::string& name);
|
Parameter(const std::string& name);
|
||||||
~Parameter();
|
~Parameter();
|
||||||
|
|
||||||
inline bool IsValid() const { return m_pdata->validFlag; }
|
bool IsValid() const { return m_pdata->validFlag; }
|
||||||
inline void Invalidate() { m_pdata->validFlag = false; }
|
void Invalidate() { m_pdata->validFlag = false; }
|
||||||
inline void SetValue(double value) { m_pdata->validFlag = true; m_pdata->value = value; }
|
void SetValue(double value) { m_pdata->validFlag = true; m_pdata->value = value; }
|
||||||
inline double GetValue() const { return m_pdata->value; }
|
double GetValue() const { return m_pdata->value; }
|
||||||
inline const std::string& GetName() const { return m_name; }
|
const std::string& GetName() const { return m_name; }
|
||||||
void SetName(const std::string& name);
|
void SetName(const std::string& name);
|
||||||
|
|
||||||
friend class SpectrumManager;
|
friend class SpectrumManager;
|
||||||
|
@ -77,9 +81,9 @@ namespace Specter {
|
||||||
Variable(const std::string& name);
|
Variable(const std::string& name);
|
||||||
~Variable();
|
~Variable();
|
||||||
|
|
||||||
inline void SetValue(double value) { m_pdata->value = value; }
|
void SetValue(double value) { m_pdata->value = value; }
|
||||||
inline double GetValue() { return m_pdata->value; }
|
double GetValue() { return m_pdata->value; }
|
||||||
inline const std::string& GetName() { return m_name; }
|
const std::string& GetName() { return m_name; }
|
||||||
void SetName(const std::string& name);
|
void SetName(const std::string& name);
|
||||||
|
|
||||||
friend class SpectrumManager;
|
friend class SpectrumManager;
|
||||||
|
@ -106,10 +110,9 @@ namespace Specter {
|
||||||
Scaler(const std::string& name);
|
Scaler(const std::string& name);
|
||||||
~Scaler();
|
~Scaler();
|
||||||
|
|
||||||
inline void Increment() { ++(m_pdata->value); }
|
void Increment() { ++(m_pdata->value); }
|
||||||
|
const std::string& GetName() { return m_name; }
|
||||||
inline const std::string& GetName() { return m_name; }
|
uint64_t GetCounts() { return m_pdata->value; }
|
||||||
inline uint64_t GetCounts() { return m_pdata->value; }
|
|
||||||
void SetName(const std::string& name);
|
void SetName(const std::string& name);
|
||||||
|
|
||||||
friend class SpectrumManager;
|
friend class SpectrumManager;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
SpectrumSerializer.h
|
SpectrumSerializer.h
|
||||||
SpectrumSerializer class providing method to write/read spectra (histograms and cuts) to/from a .spec file. These are formated text files.
|
SpectrumSerializer class providing method to write/read spectra (histograms and cuts) to/from a .yaml file. These are YAML files.
|
||||||
Note that by virtue of the way that cuts work, they are written first.
|
Note that by virtue of the way that cuts work, they are written first.
|
||||||
|
|
||||||
A couple of notes:
|
A couple of notes:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
SpectrumSerializer.h
|
SpectrumSerializer.h
|
||||||
SpectrumSerializer class providing method to write/read spectra (histograms and cuts) to/from a .nav file. These are formated text files.
|
SpectrumSerializer class providing method to write/read spectra (histograms and cuts) to/from a .yaml file. These are YAML files.
|
||||||
Note that by virtue of the way that cuts work, they are written first.
|
Note that by virtue of the way that cuts work, they are written first.
|
||||||
|
|
||||||
A couple of notes:
|
A couple of notes:
|
||||||
|
|
|
@ -34,7 +34,7 @@ namespace Specter {
|
||||||
FileDialog();
|
FileDialog();
|
||||||
~FileDialog();
|
~FileDialog();
|
||||||
|
|
||||||
inline void OpenDialog(Type type) { m_type = type; m_openDialogFlag = true; }
|
void OpenDialog(Type type) { m_type = type; m_openDialogFlag = true; }
|
||||||
std::pair<std::string, Type> RenderFileDialog(const std::string& ext = "");
|
std::pair<std::string, Type> RenderFileDialog(const std::string& ext = "");
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -21,9 +21,9 @@ namespace Specter {
|
||||||
|
|
||||||
bool ImGuiRenderSourceDialog();
|
bool ImGuiRenderSourceDialog();
|
||||||
|
|
||||||
inline const SourceArgs& GetArgs() const { return m_args; }
|
const SourceArgs& GetArgs() const { return m_args; }
|
||||||
|
|
||||||
inline void OpenSourceDialog() { m_openFlag = true; }
|
void OpenSourceDialog() { m_openFlag = true; }
|
||||||
private:
|
private:
|
||||||
bool m_openFlag;
|
bool m_openFlag;
|
||||||
SourceArgs m_args;
|
SourceArgs m_args;
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace Specter {
|
||||||
|
|
||||||
bool ImGuiRenderSpectrumDialog(const SpectrumManager::Ref& manager, const std::vector<HistogramArgs>& histoList, const std::vector<CutArgs>& cutList, const std::vector<std::string>& paramList);
|
bool ImGuiRenderSpectrumDialog(const SpectrumManager::Ref& manager, const std::vector<HistogramArgs>& histoList, const std::vector<CutArgs>& cutList, const std::vector<std::string>& paramList);
|
||||||
|
|
||||||
inline void SetSpectrumDialog() { m_openFlag = true; }
|
void SetSpectrumDialog() { m_openFlag = true; }
|
||||||
private:
|
private:
|
||||||
void RenderDialog1D(const std::vector<std::string>& paramList);
|
void RenderDialog1D(const std::vector<std::string>& paramList);
|
||||||
void RenderDialog2D(const std::vector<std::string>& paramList);
|
void RenderDialog2D(const std::vector<std::string>& paramList);
|
||||||
|
|
|
@ -35,8 +35,8 @@ namespace Specter {
|
||||||
~SpectrumPanel();
|
~SpectrumPanel();
|
||||||
|
|
||||||
bool OnImGuiRender(const SpectrumManager::Ref& manager, const std::vector<HistogramArgs>& histoList, const std::vector<CutArgs>& cutList, const std::vector<std::string>& paramList);
|
bool OnImGuiRender(const SpectrumManager::Ref& manager, const std::vector<HistogramArgs>& histoList, const std::vector<CutArgs>& cutList, const std::vector<std::string>& paramList);
|
||||||
inline const std::string& GetZoomedOnHistogram() { return m_zoomedGram.name; }
|
const std::string& GetZoomedOnHistogram() { return m_zoomedGram.name; }
|
||||||
inline const bool IsZoomed() { return m_zoomedFlag; }
|
const bool IsZoomed() { return m_zoomedFlag; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void HandleCutMode();
|
void HandleCutMode();
|
||||||
|
|
|
@ -29,8 +29,8 @@ namespace Specter {
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int GetXSize() { return m_xSize; }
|
int GetXSize() { return m_xSize; }
|
||||||
inline int GetYSize() { return m_ySize; }
|
int GetYSize() { return m_ySize; }
|
||||||
std::string ToString() const override
|
std::string ToString() const override
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
|
|
|
@ -49,7 +49,7 @@ namespace Specter {
|
||||||
virtual const char* GetName() const = 0;
|
virtual const char* GetName() const = 0;
|
||||||
virtual int GetCategoryFlags() const = 0;
|
virtual int GetCategoryFlags() const = 0;
|
||||||
virtual std::string ToString() const { return GetName(); }
|
virtual std::string ToString() const { return GetName(); }
|
||||||
inline bool IsCategory(EventCategory cat) const { return GetCategoryFlags() & cat; }
|
bool IsCategory(EventCategory cat) const { return GetCategoryFlags() & cat; }
|
||||||
bool handledFlag = false;
|
bool handledFlag = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ namespace Specter {
|
||||||
class KeyEvent : public Event
|
class KeyEvent : public Event
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
inline int GetKeycode() const { return m_keycode; }
|
int GetKeycode() const { return m_keycode; }
|
||||||
EVENT_CATEGORY_SETUP(EventCategoryKey | EventCategoryInput)
|
EVENT_CATEGORY_SETUP(EventCategoryKey | EventCategoryInput)
|
||||||
protected:
|
protected:
|
||||||
KeyEvent(int code) :
|
KeyEvent(int code) :
|
||||||
|
@ -37,7 +37,7 @@ namespace Specter {
|
||||||
|
|
||||||
EVENT_TYPE_SETUP(KeyPressed)
|
EVENT_TYPE_SETUP(KeyPressed)
|
||||||
|
|
||||||
inline int GetRepeatCount() const { return m_repeatCount; }
|
int GetRepeatCount() const { return m_repeatCount; }
|
||||||
|
|
||||||
std::string ToString() const override
|
std::string ToString() const override
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,8 +19,8 @@ namespace Specter {
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline float GetXPosition() { return m_xPos; }
|
float GetXPosition() { return m_xPos; }
|
||||||
inline float GetYPosition() { return m_yPos; }
|
float GetYPosition() { return m_yPos; }
|
||||||
std::string ToString() const override
|
std::string ToString() const override
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
|
@ -43,8 +43,8 @@ namespace Specter {
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline float GetXOffset() { return m_xOffset; }
|
float GetXOffset() { return m_xOffset; }
|
||||||
inline float GetYOffset() { return m_yOffset; }
|
float GetYOffset() { return m_yOffset; }
|
||||||
std::string ToString() const override
|
std::string ToString() const override
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
|
@ -67,7 +67,7 @@ namespace Specter {
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int GetButtonCode() { return m_buttonCode; }
|
int GetButtonCode() { return m_buttonCode; }
|
||||||
std::string ToString() const override
|
std::string ToString() const override
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
|
@ -90,7 +90,7 @@ namespace Specter {
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int GetButtonCode() { return m_buttonCode; }
|
int GetButtonCode() { return m_buttonCode; }
|
||||||
std::string ToString() const override
|
std::string ToString() const override
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
|
|
|
@ -46,8 +46,6 @@ namespace Specter {
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
|
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
|
||||||
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
|
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
|
||||||
//Viewports are real wonky on Linux and sometimes on MacOS
|
|
||||||
//Can currently cause assertion failure on checking number of monitors in ImGui sanity checks.
|
|
||||||
io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable;
|
io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable;
|
||||||
|
|
||||||
ImGui::StyleColorsDark(); //Hacker mode
|
ImGui::StyleColorsDark(); //Hacker mode
|
||||||
|
@ -62,9 +60,7 @@ namespace Specter {
|
||||||
}
|
}
|
||||||
|
|
||||||
//Setup our fonts. We have Roboto for text and FontAwesome for our icons.
|
//Setup our fonts. We have Roboto for text and FontAwesome for our icons.
|
||||||
//Note the .ttf files are found in NavProject, or in the bin dir. This is because
|
//These fonts are embedded in the application for better resource management. Found in FA-Solid.h, Roboto-Regular.h
|
||||||
//the actual program (NavProject) is launched from either the bin/ ... /NaProject or the NavProject directory
|
|
||||||
//io.Fonts->AddFontDefault();
|
|
||||||
ImFontConfig latin_config;
|
ImFontConfig latin_config;
|
||||||
latin_config.RasterizerMultiply = 1.3f;
|
latin_config.RasterizerMultiply = 1.3f;
|
||||||
ImFontConfig config;
|
ImFontConfig config;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
AnalysisStage.h
|
AnalysisStage.h
|
||||||
Represents a step in a chain of analyses that are run on a NavEvent. These stages are where NavParameters are set and validated. Users should use this base class
|
Represents a step in a chain of analyses that are run on a SpecEvent. These stages are where Parameters are set and validated. Users should use this base class
|
||||||
to create their own analyses and inject them into their project. See template NavProject for an example of use.
|
to create their own analyses and inject them into their project. See template SpecProject for an example of use.
|
||||||
|
|
||||||
GWM -- Feb 2022
|
GWM -- Feb 2022
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
AnalysisStage.h
|
AnalysisStage.h
|
||||||
Represents a step in a chain of analyses that are run on a NavEvent. These stages are where Parameters are set and validated. Users should use this base class
|
Represents a step in a chain of analyses that are run on a SpecEvent. These stages are where Parameters are set and validated. Users should use this base class
|
||||||
to create their own analyses and inject them into their project. See template NavProject for an example of use.
|
to create their own analyses and inject them into their project. See template SpecProject for an example of use.
|
||||||
|
|
||||||
GWM -- Feb 2022
|
GWM -- Feb 2022
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
/*
|
/*
|
||||||
PhysicsEventBuilder.h
|
PhysicsEventBuilder.h
|
||||||
Class for taking in raw NavData and converting into a NavEvent. NavEvent is just a std::vector of NavData, where
|
Class for taking in raw SpecData and converting into a SpecEvent. SpecEvent is just a std::vector of SpecData, where
|
||||||
the held NavData all falls within a time window called the coincidence window. As soon as a NavData is given that falls outside
|
the held SpecData all falls within a time window called the coincidence window. As soon as a SpecData is given that falls outside
|
||||||
of this window, the current event is shifted to the ready event and the AddDatumToEvent function returns true. The ready event can
|
of this window, the current event is shifted to the ready event vector. The ready event can then be retrieved. The hit that triggered the end of
|
||||||
then be retrieved. The hit that triggered the end of event then is used to start the new event. The current pattern is strongly associated
|
event then is used to start the new event. The current pattern is strongly associated with digital electronics concepts
|
||||||
with digital electronics concepts for nuclear data aquisition systems.
|
for nuclear data aquisition systems.
|
||||||
|
|
||||||
GWM -- Feb 2022
|
GWM -- Feb 2022
|
||||||
|
|
||||||
|
Added data time sorting, make event building model more compatible with different data sources. -- GWM April 2023
|
||||||
*/
|
*/
|
||||||
#include "PhysicsEventBuilder.h"
|
#include "PhysicsEventBuilder.h"
|
||||||
|
|
||||||
|
@ -36,7 +38,7 @@ namespace Specter {
|
||||||
m_bufferIndex++;
|
m_bufferIndex++;
|
||||||
if (m_bufferIndex < s_maxDataBuffer) //If we haven't filled the buffer keep going
|
if (m_bufferIndex < s_maxDataBuffer) //If we haven't filled the buffer keep going
|
||||||
return;
|
return;
|
||||||
else if (m_sortFlag)
|
else if (m_sortFlag) //do time sorting if needed
|
||||||
std::sort(m_dataBuffer.begin(), m_dataBuffer.end(), [](SpecData& i, SpecData& j) { return i.timestamp < j.timestamp; });
|
std::sort(m_dataBuffer.begin(), m_dataBuffer.end(), [](SpecData& i, SpecData& j) { return i.timestamp < j.timestamp; });
|
||||||
|
|
||||||
//Generate our ready events
|
//Generate our ready events
|
||||||
|
@ -58,7 +60,7 @@ namespace Specter {
|
||||||
event.push_back(data);
|
event.push_back(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_bufferIndex = 0;
|
m_bufferIndex = 0; //Reset the buffer without reallocating
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<SpecEvent> PhysicsEventBuilder::GetReadyEvents() const
|
std::vector<SpecEvent> PhysicsEventBuilder::GetReadyEvents() const
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
/*
|
/*
|
||||||
PhysicsEventBuilder.h
|
PhysicsEventBuilder.h
|
||||||
Class for taking in raw NavData and converting into a NavEvent. NavEvent is just a std::vector of NavData, where
|
Class for taking in raw SpecData and converting into a SpecEvent. SpecEvent is just a std::vector of SpecData, where
|
||||||
the held NavData all falls within a time window called the coincidence window. As soon as a NavData is given that falls outside
|
the held SpecData all falls within a time window called the coincidence window. As soon as a SpecData is given that falls outside
|
||||||
of this window, the current event is shifted to the ready event and the AddDatumToEvent function returns true. The ready event can
|
of this window, the current event is shifted to the ready event vector. The ready event can then be retrieved. The hit that triggered the end of
|
||||||
then be retrieved. The hit that triggered the end of event then is used to start the new event. The current pattern is strongly associated
|
event then is used to start the new event. The current pattern is strongly associated with digital electronics concepts
|
||||||
with digital electronics concepts for nuclear data aquisition systems.
|
for nuclear data aquisition systems.
|
||||||
|
|
||||||
GWM -- Feb 2022
|
GWM -- Feb 2022
|
||||||
|
|
||||||
|
Added data time sorting, make event building model more compatible with different data sources. -- GWM April 2023
|
||||||
*/
|
*/
|
||||||
#ifndef PHYSICS_EVENT_BUILDER_H
|
#ifndef PHYSICS_EVENT_BUILDER_H
|
||||||
#define PHYSICS_EVENT_BUILDER_H
|
#define PHYSICS_EVENT_BUILDER_H
|
||||||
|
|
|
@ -24,8 +24,8 @@ namespace Specter {
|
||||||
ShiftMap(const std::string& filename);
|
ShiftMap(const std::string& filename);
|
||||||
~ShiftMap();
|
~ShiftMap();
|
||||||
void SetFile(const std::string& filename);
|
void SetFile(const std::string& filename);
|
||||||
inline bool IsValid() { return m_validFlag; }
|
bool IsValid() { return m_validFlag; }
|
||||||
inline std::string GetFilename() { return m_filename; }
|
std::string GetFilename() { return m_filename; }
|
||||||
uint64_t GetShift(int gchan);
|
uint64_t GetShift(int gchan);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -16,9 +16,9 @@ namespace Specter {
|
||||||
class RenderCommand
|
class RenderCommand
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
inline static void SetClearColor(const glm::vec4& color_array) { s_api->SetClearColor(color_array); }
|
static void SetClearColor(const glm::vec4& color_array) { s_api->SetClearColor(color_array); }
|
||||||
inline static void Clear() { s_api->Clear(); }
|
static void Clear() { s_api->Clear(); }
|
||||||
inline static float GetFrameTime() { return s_api->GetFrameTime(); }
|
static float GetFrameTime() { return s_api->GetFrameTime(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static RendererAPI* s_api;
|
static RendererAPI* s_api;
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace Specter {
|
||||||
virtual void SetClearColor(const glm::vec4& color) = 0;
|
virtual void SetClearColor(const glm::vec4& color) = 0;
|
||||||
virtual float GetFrameTime() = 0;
|
virtual float GetFrameTime() = 0;
|
||||||
|
|
||||||
inline static API GetAPI() { return s_api; }
|
static API GetAPI() { return s_api; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static API s_api;
|
static API s_api;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user