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
10#include "MantidDataObjects/DllConfig.h"
15#include <vector>
16
17namespace Mantid {
18namespace DataObjects {
19
29class MANTID_DATAOBJECTS_DLL GroupingWorkspace : public SpecialWorkspace2D {
30public:
32 GroupingWorkspace() = default;
33 GroupingWorkspace(size_t numvectors);
40 inline GroupingWorkspace(const std::vector<detid_t> &detids) : SpecialWorkspace2D(detids) {}
41
43
45 std::unique_ptr<GroupingWorkspace> clone() const { return std::unique_ptr<GroupingWorkspace>(doClone()); }
46
48 std::unique_ptr<GroupingWorkspace> cloneEmpty() const { return std::unique_ptr<GroupingWorkspace>(doCloneEmpty()); }
49
52 const std::string id() const override { return "GroupingWorkspace"; }
53
54 void makeDetectorIDToGroupMap(std::map<detid_t, int> &detIDToGroup, int64_t &ngroups) const;
55 void makeDetectorIDToGroupVector(std::vector<int> &detIDToGroup, int64_t &ngroups) const;
56 int getTotalGroups() const;
57 std::vector<int> getGroupIDs(const bool includeUnsetGroup = true) const;
58 std::vector<detid_t> getDetectorIDsOfGroup(const int groupID) const;
59
60protected:
63
64private:
65 int translateToGroupID(const int n) const;
66 GroupingWorkspace *doClone() const override { return new GroupingWorkspace(*this); }
67 GroupingWorkspace *doCloneEmpty() const override { return new GroupingWorkspace(); }
68};
69
71using GroupingWorkspace_sptr = std::shared_ptr<GroupingWorkspace>;
72
74using GroupingWorkspace_const_sptr = std::shared_ptr<const GroupingWorkspace>;
75
76} // namespace DataObjects
77} // namespace Mantid
78
79// Instantiated and exported by DataObjects/src/PropertyWithValue.cpp
81 Mantid::Kernel::PropertyWithValue<std::shared_ptr<Mantid::DataObjects::GroupingWorkspace>>);
82
83#ifndef DataObjects_EXPORTS
85namespace Mantid::API {
87extern template class MANTID_DATAOBJECTS_DLL WorkspaceProperty<DataObjects::GroupingWorkspace>;
89} // namespace Mantid::API
90#endif
MANTID_DATAOBJECTS_EXTERN_TEMPLATE(Mantid::Kernel::PropertyWithValue< std::shared_ptr< Mantid::DataObjects::GroupingWorkspace > >)
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.
The concrete, templated class for properties.
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.