Skip to content

Commit

Permalink
Merge pull request mantidproject#19879 from mantidproject/filter_even…
Browse files Browse the repository at this point in the history
…t_improve_split_logs_19406

Improve performance to splitting logs in FilterEvents
  • Loading branch information
martyngigg authored Jul 26, 2017
2 parents 7632bed + 253f331 commit 4b786a8
Show file tree
Hide file tree
Showing 8 changed files with 719 additions and 446 deletions.
58 changes: 40 additions & 18 deletions Framework/Algorithms/inc/MantidAlgorithms/FilterEvents.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,9 @@ class DLLExport FilterEvents : public API::Algorithm {
/// process splitters given by a MatrixWorkspace
void processMatrixSplitterWorkspace();

/// create event workspace
boost::shared_ptr<DataObjects::EventWorkspace> createEventWorkspaceNoLog();
/// create output workspaces if the splitters are given in SplittersWorkspace
void createOutputWorkspaces();
/// create output workspaces in the case of using TableWorlspace for splitters
void createOutputWorkspacesTableSplitterCase();
Expand Down Expand Up @@ -127,6 +130,43 @@ class DLLExport FilterEvents : public API::Algorithm {
/// (itarget)
void convertSplittersWorkspaceToVectors();

void splitTimeSeriesLogs(
const std::vector<Kernel::TimeSeriesProperty<int> *> &int_tsp_vector,
const std::vector<Kernel::TimeSeriesProperty<double> *> &dbl_tsp_vector,
const std::vector<Kernel::TimeSeriesProperty<bool> *> &bool_tsp_vector);

/// get the names of all the time series properties in the input workspace's
/// Run object
std::vector<std::string> getTimeSeriesLogNames();

void generateSplitterTSP(
std::vector<Kernel::TimeSeriesProperty<int> *> &split_tsp_vec);

void generateSplitterTSPalpha(
std::vector<Kernel::TimeSeriesProperty<int> *> &split_tsp_vec);

/// Add time series property 'Splitter' to each child workspace
void mapSplitterTSPtoWorkspaces(
const std::vector<Kernel::TimeSeriesProperty<int> *> &split_tsp_vec);

void copyNoneSplitLogs(
std::vector<Kernel::TimeSeriesProperty<int> *> &int_tsp_name_vector,
std::vector<Kernel::TimeSeriesProperty<double> *> &dbl_tsp_name_vector,
std::vector<Kernel::TimeSeriesProperty<bool> *> &bool_tsp_name_vector);

template <typename TYPE>
void
splitTimeSeriesProperty(Kernel::TimeSeriesProperty<TYPE> *tsp,
std::vector<Kernel::DateAndTime> &split_datetime_vec,
const int max_target_index);

void splitDoubleTimeSeriesLogs(
const std::vector<Kernel::TimeSeriesProperty<double> *> &dbl_tsp_vector,
std::vector<Kernel::DateAndTime> &split_datetime_vec,
const int max_target_index);

void groupOutputWorkspace();

DataObjects::EventWorkspace_sptr m_eventWS;
DataObjects::SplittersWorkspace_sptr m_splittersWorkspace;
DataObjects::TableWorkspace_sptr m_splitterTableWorkspace;
Expand All @@ -153,24 +193,6 @@ class DLLExport FilterEvents : public API::Algorithm {

double m_progress;

/// DOC! TODO
std::vector<std::string> getTimeSeriesLogNames();

Kernel::TimeSplitterType generateSplitters(int wsindex);

void generateSplitterTSP(
std::vector<Kernel::TimeSeriesProperty<int> *> &split_tsp_vec);

void generateSplitterTSPalpha(
std::vector<Kernel::TimeSeriesProperty<int> *> &split_tsp_vec);

///
void mapSplitterTSPtoWorkspaces(
const std::vector<Kernel::TimeSeriesProperty<int> *> &split_tsp_vec);

void splitLog(DataObjects::EventWorkspace_sptr eventws, std::string logname,
Kernel::TimeSplitterType &splitters);

/// Base of output workspace's name
std::string m_outputWSNameBase;

Expand Down
Loading

0 comments on commit 4b786a8

Please sign in to comment.