149 lines
4.4 KiB
C++
149 lines
4.4 KiB
C++
#ifndef DATAPROCESSWORKPOOL_H
|
|
#define DATAPROCESSWORKPOOL_H
|
|
|
|
#include <QRunnable>
|
|
#include <QString>
|
|
#include <QObject>
|
|
#include "AnalysisTypeDefine.h"
|
|
#include <QMap>
|
|
#include <QVariant>
|
|
|
|
class EnergyScaleDataModel;
|
|
class MeasureAnalysisProjectModel;
|
|
|
|
namespace DataProcessWorkPool
|
|
{
|
|
class DataProcessTask : public QRunnable
|
|
{
|
|
public:
|
|
void SetFinishedNotifier(QObject* finished_notifier, const char* finished_process, const QString& project_name);
|
|
const QString& GetProjectName() const;
|
|
const char* GetFinishedNotifierProcess() const;
|
|
QObject* GetFinishedNotifier() const;
|
|
|
|
virtual bool IsValidSetWorkParameters() const;
|
|
void StartTask();
|
|
|
|
virtual void run() override final;
|
|
|
|
protected:
|
|
void updateTaskResultData(const QVariant& task_result_data);
|
|
|
|
private:
|
|
virtual bool processTask() = 0;
|
|
|
|
private:
|
|
QObject* _finished_notifier { nullptr };
|
|
const char* _finished_notifier_process { nullptr };
|
|
QString _project_name;
|
|
QVariant _task_result_data;
|
|
};
|
|
|
|
class ParticleDataTask : public DataProcessTask
|
|
{
|
|
public:
|
|
void SetAllChannelParticleDataFilename(const QString& all_channel_particle_data_filename);
|
|
const QString& GetAllChannelParticleDataFilename() const;
|
|
|
|
virtual bool IsValidSetWorkParameters() const override;
|
|
|
|
private:
|
|
virtual bool processTask() final;
|
|
virtual bool processEveryChannelParticleData() = 0;
|
|
|
|
private:
|
|
QString _all_channel_particle_data_filename;
|
|
};
|
|
|
|
class EveryChannelParticleCountDataTask : public ParticleDataTask
|
|
{
|
|
public:
|
|
void SetAllChannelCountResultDir(const QString& dir_path);
|
|
const QString& GetAllChannelCountResultDir() const;
|
|
void SetEveryChannelCountResultDir(const QString&dir_path);
|
|
const QString& GetEveryChannelCountResultDir() const;
|
|
|
|
virtual bool IsValidSetWorkParameters() const;
|
|
private:
|
|
virtual bool processEveryChannelParticleData() override;
|
|
private:
|
|
QString _all_ch_count_dir;
|
|
QString _every_ch_count_dir;
|
|
};
|
|
|
|
class ParticleDataSortTask : public ParticleDataTask
|
|
{
|
|
public:
|
|
void SetSortedResultDir(const QString& sorted_result_dir);
|
|
const QString& GetSortedResultDir() const;
|
|
|
|
virtual bool IsValidSetWorkParameters() const override;
|
|
private:
|
|
virtual bool processEveryChannelParticleData() override;
|
|
private:
|
|
QString _sorted_result_dir;
|
|
};
|
|
|
|
class ParticleDataSortByMinimysTask : public ParticleDataSortTask
|
|
{
|
|
virtual bool processEveryChannelParticleData() override;
|
|
};
|
|
|
|
class CoincidenceEventAnalysisTask : public DataProcessTask
|
|
{
|
|
private:
|
|
virtual bool processTask() override;
|
|
};
|
|
|
|
class AutoFindPeaksTask : public DataProcessTask {
|
|
public:
|
|
void SetAnalysisType(AnalysisType analysis_type);
|
|
void SetDataFileList(const QMap<QString, QVariant>& data_files_set);
|
|
void SetResultDir(const QString& result_dir);
|
|
void SetFindPeakSetpWinWidth(int step_win_width);
|
|
virtual bool IsValidSetWorkParameters() const override;
|
|
private:
|
|
virtual bool processTask() override;
|
|
private:
|
|
AnalysisType _analysis_type;
|
|
QMap<QString, QVariant> _data_files_set;
|
|
QString _result_dir;
|
|
int _step_win_width = 7;
|
|
};
|
|
|
|
class ChannelEnergyScaleFittingTask : public DataProcessTask {
|
|
public:
|
|
typedef QMap<QString, QMap<int, QList<double> > > FitDataMap;
|
|
public:
|
|
void SetData(const FitDataMap& channel_energy_scale_fit_data_map, const QMap<QString, int>& fit_degree_map);
|
|
void SetResultDir(const QString& result_dir);
|
|
virtual bool IsValidSetWorkParameters() const override;
|
|
private:
|
|
virtual bool processTask() override;
|
|
private:
|
|
QString _result_dir;
|
|
FitDataMap _channel_energy_scale_fit_data_map;
|
|
QMap<QString, int> _fit_degree_map;
|
|
};
|
|
|
|
class EnergyScaleParticleDataTask : public DataProcessTask
|
|
{
|
|
private:
|
|
virtual bool processTask() override;
|
|
};
|
|
|
|
class EnergyCountProcessTask : public DataProcessTask
|
|
{
|
|
private:
|
|
virtual bool processTask() override;
|
|
};
|
|
|
|
class EnergyScaleCoincidenceDataTask : public DataProcessTask
|
|
{
|
|
private:
|
|
virtual bool processTask() override;
|
|
};
|
|
}
|
|
|
|
#endif // DATAPROCESSWORKPOOL_H
|