Mantid
Loading...
Searching...
No Matches
GroupingWorkspace.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
13#include <vector>
14
15namespace Mantid {
16namespace DataObjects {
17
27class MANTID_DATAOBJECTS_DLL GroupingWorkspace : public SpecialWorkspace2D {
28public:
30 GroupingWorkspace() = default;
31 GroupingWorkspace(size_t numvectors);
38 inline GroupingWorkspace(const std::vector<detid_t> &detids) : SpecialWorkspace2D(detids) {}
39
41
43 std::unique_ptr<GroupingWorkspace> clone() const { return std::unique_ptr<GroupingWorkspace>(doClone()); }
44
46 std::unique_ptr<GroupingWorkspace> cloneEmpty() const { return std::unique_ptr<GroupingWorkspace>(doCloneEmpty()); }
47
50 const std::string id() const override { return "GroupingWorkspace"; }
51
52 void makeDetectorIDToGroupMap(std::map<detid_t, int> &detIDToGroup, int64_t &ngroups) const;
53 void makeDetectorIDToGroupVector(std::vector<int> &detIDToGroup, int64_t &ngroups) const;
54 int getTotalGroups() const;
55 std::vector<int> getGroupIDs(const bool includeUnsetGroup = true) const;
56 std::vector<detid_t> getDetectorIDsOfGroup(const int groupID) const;
57
58protected:
61
62private:
63 int translateToGroupID(const int n) const;
64 GroupingWorkspace *doClone() const override { return new GroupingWorkspace(*this); }
65 GroupingWorkspace *doCloneEmpty() const override { return new GroupingWorkspace(); }
66};
67
69using GroupingWorkspace_sptr = std::shared_ptr<GroupingWorkspace>;
70
72using GroupingWorkspace_const_sptr = std::shared_ptr<const GroupingWorkspace>;
73
74} // namespace DataObjects
75} // namespace Mantid
76
77#ifndef DataObjects_EXPORTS
79namespace Mantid::API {
81extern template class MANTID_DATAOBJECTS_DLL WorkspaceProperty<DataObjects::GroupingWorkspace>;
83} // namespace Mantid::API
84#endif
A GroupingWorkspace is a subclass of Workspace2D where each spectrum has a single number entry,...
GroupingWorkspace(const GroupingWorkspace &)=default
Protected copy constructor. May be used by childs for cloning.
std::unique_ptr< GroupingWorkspace > cloneEmpty() const
Returns a default-initialized clone of the workspace.
std::unique_ptr< GroupingWorkspace > clone() const
Returns a clone of the workspace.
GroupingWorkspace * doCloneEmpty() const override
Virtual cloneEmpty method.
GroupingWorkspace & operator=(const GroupingWorkspace &)=delete
GroupingWorkspace(const std::vector< detid_t > &detids)
Constructor, building from a list of detector IDs.
const std::string id() const override
Gets the name of the workspace type.
GroupingWorkspace * doClone() const override
Virtual clone method. Not implemented to force implementation in children.
std::shared_ptr< const GroupingWorkspace > GroupingWorkspace_const_sptr
shared pointer to a const GroupingWorkspace
std::shared_ptr< GroupingWorkspace > GroupingWorkspace_sptr
shared pointer to the GroupingWorkspace class
std::shared_ptr< const Instrument > Instrument_const_sptr
Shared pointer to an const instrument object.
Helper class which provides the Collimation Length for SANS instruments.