Mantid
Loading...
Searching...
No Matches
FunctionDomain1D.h
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2009 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 +
7#pragma once
8
9//----------------------------------------------------------------------
10// Includes
11//----------------------------------------------------------------------
13
14#include <span>
15#include <vector>
16
17namespace Mantid {
18namespace API {
31class MANTID_API_DLL FunctionDomain1D : public FunctionDomain {
32public:
38 size_t size() const override { return m_n; }
41 double operator[](size_t i) const { return m_data[i]; }
43 const double *getPointerAt(size_t i) const { return m_data + i; }
45 std::vector<double> toVector() const;
47 void setPeakRadius(int radius);
49 int getPeakRadius() const;
50
51protected:
54 FunctionDomain1D(const double *x, size_t n);
56 void resetData(const double *x, size_t n) {
57 m_data = x;
58 m_n = n;
59 }
60
61private:
63 const double *m_data;
65 size_t m_n;
68};
69
73class MANTID_API_DLL FunctionDomain1DVector : public FunctionDomain1D {
74public:
76 FunctionDomain1DVector(const double x);
78 FunctionDomain1DVector(const double startX, const double endX, const size_t n);
80 FunctionDomain1DVector(const std::vector<double> &xvalues);
83 FunctionDomain1DVector(std::span<double const> xvalues);
85 FunctionDomain1DVector(std::vector<double> &&xvalues);
87 FunctionDomain1DVector(std::vector<double>::const_iterator from, std::vector<double>::const_iterator to);
93 const std::vector<double> &getVector() { return m_X; }
94
95protected:
96 std::vector<double> m_X;
97};
98
102class MANTID_API_DLL FunctionDomain1DView : public FunctionDomain1D {
103public:
109 FunctionDomain1DView(const double *x, size_t n) : FunctionDomain1D(x, n) {}
110
111private:
116};
117
125public:
127 FunctionDomain1DSpectrum(size_t wi, const std::vector<double> &xvalues);
129 FunctionDomain1DSpectrum(size_t wi, std::vector<double>::const_iterator from, std::vector<double>::const_iterator to);
131 size_t getWorkspaceIndex() const { return m_workspaceIndex; }
132
133private:
136};
137
142class MANTID_API_DLL FunctionDomain1DHistogram : public FunctionDomain1D {
143public:
145 FunctionDomain1DHistogram(const std::vector<double> &bins);
147 FunctionDomain1DHistogram(std::vector<double>::const_iterator from, std::vector<double>::const_iterator to);
148
151
154
156 double leftBoundary() const;
157
158protected:
159 std::vector<double> m_bins;
160};
161
163using FunctionDomain1D_sptr = std::shared_ptr<FunctionDomain1D>;
165using FunctionDomain1D_const_sptr = std::shared_ptr<const FunctionDomain1D>;
166
167} // namespace API
168} // namespace Mantid
double right
const std::vector< Type > & m_data
Implements FunctionDomain1D as a set of bins for a histogram.
FunctionDomain1DHistogram & operator=(const FunctionDomain1DHistogram &)=delete
Disable assignment operator.
FunctionDomain1DHistogram(const FunctionDomain1DHistogram &)=delete
Disable copy operator.
std::vector< double > m_bins
vector of bin boundaries
Specialization of FunctionDomain1DVector for spectra of MatrixWorkspaces.
size_t m_workspaceIndex
The workspace index.
size_t getWorkspaceIndex() const
Get the workspace index.
Implements FunctionDomain1D with its own storage in form of a std::vector.
const std::vector< double > & getVector()
Get the underlying vector.
std::vector< double > m_X
vector of function arguments
1D domain - a wrapper around an array of doubles.
FunctionDomain1DView & operator=(const FunctionDomain1DView &)
Private copy assignment operator - copying is not allowed.
FunctionDomain1DView(const double *x, size_t n)
Creates a FunctionDomain1DView pointing to an array of doubles of size n.
FunctionDomain1DView(const FunctionDomain1DView &)
Private copy constructor - copying is not allowed.
Represent a domain for functions of one real argument.
size_t size() const override
Return the number of arguments in the domain.
FunctionDomain1D & operator=(const FunctionDomain1D &)=delete
copying is not allowed.
size_t m_n
size of the data
const double * getPointerAt(size_t i) const
Get a pointer to i-th value.
int m_peakRadius
A peak radius that IPeakFunctions should use.
const double * m_data
pointer to the start of the domain data
double operator[](size_t i) const
Get an x value.
FunctionDomain1D(const FunctionDomain1D &right)=delete
copying is not allowed.
void resetData(const double *x, size_t n)
Reset the pointer and size of the domain.
Base class that represents the domain of a function.
std::shared_ptr< const FunctionDomain1D > FunctionDomain1D_const_sptr
typedef for a shared pointer to a const FunctionDomain1D
std::shared_ptr< FunctionDomain1D > FunctionDomain1D_sptr
typedef for a shared pointer to a FunctionDomain1D
Helper class which provides the Collimation Length for SANS instruments.