Mantid
Loading...
Searching...
No Matches
SpecialWorkspace2D.h
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 +
7#pragma once
8
10#include "MantidDataObjects/DllConfig.h"
14
15namespace Mantid {
16namespace DataObjects {
17
29public:
30 enum e { AND, OR, XOR, NOT };
31};
32
33class MANTID_DATAOBJECTS_DLL SpecialWorkspace2D : public Workspace2D {
34public:
35 SpecialWorkspace2D() = default;
36 SpecialWorkspace2D(const Geometry::Instrument_const_sptr &inst, const bool includeMonitors = false);
38 SpecialWorkspace2D(const std::vector<detid_t> &detids);
39
41 std::unique_ptr<SpecialWorkspace2D> clone() const { return std::unique_ptr<SpecialWorkspace2D>(doClone()); }
43 std::unique_ptr<SpecialWorkspace2D> cloneEmpty() const {
44 auto workspace = std::unique_ptr<SpecialWorkspace2D>(doCloneEmpty());
45 workspace->detID_to_WI = this->detID_to_WI;
46 return workspace;
47 }
51 const std::string id() const override { return "SpecialWorkspace2D"; }
52
53 bool isDetectorIDMappingEmpty() const { return detID_to_WI.empty(); }
54 void buildDetectorIDMapping();
55 bool contains(const detid_t detectorID) const;
56 double getValue(const detid_t detectorID) const;
57 double getValue(const detid_t detectorID, const double defaultValue) const;
58
59 void setValue(const detid_t detectorID, const double value, const double error = 0.);
60 void setValue(const std::set<detid_t> &detectorIDs, const double value, const double error = 0.);
61
62 std::set<detid_t> getDetectorIDs(const std::size_t workspaceIndex) const;
63
64 void binaryOperation(const std::shared_ptr<const SpecialWorkspace2D> &ws, const unsigned int operatortype);
65 void binaryOperation(const unsigned int operatortype);
66
67 virtual void copyFrom(std::shared_ptr<const SpecialWorkspace2D> sourcews);
68
69private:
70 SpecialWorkspace2D *doClone() const override { return new SpecialWorkspace2D(*this); }
71 SpecialWorkspace2D *doCloneEmpty() const override { return new SpecialWorkspace2D(); }
72 bool isCompatible(const std::shared_ptr<const SpecialWorkspace2D> &ws);
73
74protected:
77
78 void init(const size_t &NVectors, const size_t &XLength, const size_t &YLength) override;
79 void init(const HistogramData::Histogram &histogram) override;
80
82 const std::string toString() const override;
83
84 void binaryAND(const std::shared_ptr<const SpecialWorkspace2D> &ws);
85 void binaryOR(const std::shared_ptr<const SpecialWorkspace2D> &ws);
86 void binaryXOR(const std::shared_ptr<const SpecialWorkspace2D> &ws);
87 void binaryNOT();
88
90 std::map<detid_t, std::size_t> detID_to_WI;
91};
92
94using SpecialWorkspace2D_sptr = std::shared_ptr<SpecialWorkspace2D>;
95
97using SpecialWorkspace2D_const_sptr = std::shared_ptr<const SpecialWorkspace2D>;
98
99} // namespace DataObjects
100} // namespace Mantid
101
102// Instantiated and exported by DataObjects/src/PropertyWithValue.cpp
104 Mantid::Kernel::PropertyWithValue<std::shared_ptr<Mantid::DataObjects::SpecialWorkspace2D>>);
105
106#ifndef DataObjects_EXPORTS
108namespace Mantid::API {
110extern template class MANTID_DATAOBJECTS_DLL WorkspaceProperty<DataObjects::SpecialWorkspace2D>;
112} // namespace Mantid::API
113#endif
double value
The value of the point.
Definition FitMW.cpp:51
double error
IPeaksWorkspace_sptr workspace
MANTID_DATAOBJECTS_EXTERN_TEMPLATE(Mantid::Kernel::PropertyWithValue< std::shared_ptr< Mantid::DataObjects::SpecialWorkspace2D > >)
An SpecialWorkspace2D is a specialized Workspace2D where the Y value at each pixel will be used for a...
SpecialWorkspace2D * doClone() const override
Virtual clone method. Not implemented to force implementation in children.
SpecialWorkspace2D * doCloneEmpty() const override
Virtual cloneEmpty method.
SpecialWorkspace2D(const SpecialWorkspace2D &)=default
Protected copy constructor. May be used by childs for cloning.
std::unique_ptr< SpecialWorkspace2D > clone() const
Returns a clone of the workspace.
std::map< detid_t, std::size_t > detID_to_WI
Map with key = detector ID, and value = workspace index.
const std::string id() const override
Gets the name of the workspace type.
std::unique_ptr< SpecialWorkspace2D > cloneEmpty() const
Returns a default-initialized clone of the workspace.
SpecialWorkspace2D & operator=(const SpecialWorkspace2D &)=delete
Concrete workspace implementation.
Definition Workspace2D.h:30
The concrete, templated class for properties.
std::shared_ptr< const MatrixWorkspace > MatrixWorkspace_const_sptr
shared pointer to the matrix workspace base class (const version)
std::shared_ptr< const SpecialWorkspace2D > SpecialWorkspace2D_const_sptr
shared pointer to a const SpecialWorkspace2D
std::shared_ptr< SpecialWorkspace2D > SpecialWorkspace2D_sptr
shared pointer to the SpecialWorkspace2D class
std::shared_ptr< const Instrument > Instrument_const_sptr
Shared pointer to an const instrument object.
std::string toString(const T &value)
Convert values to strings.
Helper class which provides the Collimation Length for SANS instruments.