Mantid
Loading...
Searching...
No Matches
ChangePulsetime2.cpp
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
4// NScD Oak Ridge National Laboratory, European Spallation Source,
5// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
6// SPDX - License - Identifier: GPL - 3.0 +
8#include "MantidAPI/Algorithm.tcc"
11#include "MantidKernel/System.h"
12
13namespace Mantid::Algorithms {
14
15// Algorithm not registered as this will be used for testing MPI
16// DECLARE_ALGORITHM(ChangePulsetime2)
17
18using namespace Mantid::Kernel;
19using namespace Mantid::API;
20using namespace Mantid::DataObjects;
21using std::size_t;
22
23//----------------------------------------------------------------------------------------------
27 declareWorkspaceInputProperties<EventWorkspace>("InputWorkspace", "An input event workspace.");
28 declareProperty(std::make_unique<PropertyWithValue<double>>("TimeOffset", Direction::Input),
29 "Number of seconds (a float) to add to each event's pulse "
30 "time. Required.");
31 declareProperty(std::make_unique<WorkspaceProperty<EventWorkspace>>("OutputWorkspace", "", Direction::Output),
32 "An output event workspace.");
33}
34
35//----------------------------------------------------------------------------------------------
40 Indexing::SpectrumIndexSet indexSet;
41
42 std::tie(in_ws, indexSet) = getWorkspaceAndIndices<EventWorkspace>("InputWorkspace");
43 EventWorkspace_sptr out_ws = getProperty("OutputWorkspace");
44 if (!out_ws) {
45 out_ws = in_ws->clone();
46 }
47
48 // Either use the given list or use all spectra
49 double timeOffset = getProperty("TimeOffset");
50
51 Progress prog(this, 0.0, 1.0, indexSet.size());
53 for (int64_t i = 0; i < static_cast<int64_t>(indexSet.size()); i++) {
54 // What workspace index?
55
56 // Call the method on the event list
57 out_ws->getSpectrum(indexSet[i]).addPulsetime(timeOffset);
58 prog.report(name());
59 }
60
61 setProperty("OutputWorkspace", out_ws);
62}
63
64} // namespace Mantid::Algorithms
#define PARALLEL_FOR_NO_WSP_CHECK()
void declareProperty(std::unique_ptr< Kernel::Property > p, const std::string &doc="") override
Add a property to the list of managed properties.
Definition: Algorithm.cpp:1913
TypedValue getProperty(const std::string &name) const override
Get the value of a property.
Definition: Algorithm.cpp:2076
Helper class for reporting progress from algorithms.
Definition: Progress.h:25
A property class for workspaces.
void exec() override
Run the algorithm.
void init() override
Initialise the properties.
const std::string name() const override
Algorithm's name for identification.
IPropertyManager * setProperty(const std::string &name, const T &value)
Templated method to set the value of a PropertyWithValue.
void report()
Increments the loop counter by 1, then sends the progress notification on behalf of its algorithm.
Definition: ProgressBase.h:51
The concrete, templated class for properties.
std::shared_ptr< const EventWorkspace > EventWorkspace_const_sptr
shared pointer to a const Workspace2D
std::shared_ptr< EventWorkspace > EventWorkspace_sptr
shared pointer to the EventWorkspace class
@ Input
An input workspace.
Definition: Property.h:53
@ Output
An output workspace.
Definition: Property.h:54