Mantid
Loading...
Searching...
No Matches
FakeObjects.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/*********************************************************************************
8 * PLEASE READ THIS!!!!!!!
9 *
10 * This header MAY NOT be included in any test from a package below API
11 * (e.g. Kernel, Geometry).
12 * Conversely, this file MAY NOT be modified to use anything from a package
13 *higher
14 * than API (e.g. any algorithm or concrete workspace), even if via the
15 *factory.
16 *********************************************************************************/
17#pragma once
18
19/*
20 * FakeObjects.h: Fake Tester objects for APITest
21 *
22 * Created on: Jul 5, 2011
23 * Author: Janik Zikovsky
24 */
25
26#include <algorithm>
27#include <fstream>
28#include <map>
29#include <span>
30#include <string>
31
33#include "MantidAPI/ISpectrum.h"
36#include "MantidAPI/RefAxis.h"
45
46using namespace Mantid::API;
47using namespace Mantid::Geometry;
48using Mantid::coord_t;
49using Mantid::detid_t;
54
55//===================================================================================================================
57class SpectrumTester : public ISpectrum {
58public:
59 SpectrumTester(Mantid::HistogramData::Histogram::XMode xmode, Mantid::HistogramData::Histogram::YMode ymode)
60 : ISpectrum(), m_histogram(xmode, ymode) {
62 m_histogram.setCountStandardDeviations(0);
63 }
64 SpectrumTester(const specnum_t specNo, Mantid::HistogramData::Histogram::XMode xmode,
65 Mantid::HistogramData::Histogram::YMode ymode)
66 : ISpectrum(specNo), m_histogram(xmode, ymode) {
68 m_histogram.setCountStandardDeviations(0);
69 }
70
71 void copyDataFrom(const ISpectrum &other) override { other.copyDataInto(*this); }
72
74 // The mutable legacy accessors below require Histogram's legacy interface
75 GNU_DIAG_OFF("deprecated-declarations")
76 MSVC_DIAG_OFF(4996)
77 MantidVec &dataX() override { return m_histogram.dataX(); }
78 MantidVec &dataDx() override { return m_histogram.dataDx(); }
79 MantidVec &dataY() override { return m_histogram.dataY(); }
80 MantidVec &dataE() override { return m_histogram.dataE(); }
81 MSVC_DIAG_ON(4996)
82 GNU_DIAG_ON("deprecated-declarations")
83
84 const MantidVec &dataX() const override { return m_histogram.x().rawData(); }
85 const MantidVec &readX() const override { return m_histogram.x().rawData(); }
87
88 const MantidVec &dataDx() const override { return m_histogram.dx().rawData(); }
89 const MantidVec &readDx() const override { return m_histogram.dx().rawData(); }
90
91 const MantidVec &dataY() const override { return m_histogram.y().rawData(); }
92 const MantidVec &dataE() const override { return m_histogram.e().rawData(); }
93
94 size_t getMemorySize() const override { return y().size() * sizeof(double) * 2; }
95
97 void clearData() override {
98 // Assign the value to the data and error arrays
99 auto &yValues = this->mutableY();
100 std::fill(yValues.begin(), yValues.end(), 0.0);
101 auto &eValues = this->mutableE();
102 std::fill(eValues.begin(), eValues.end(), 0.0);
103 }
104
105protected:
106 Mantid::HistogramData::Histogram m_histogram;
107
108private:
110 void copyDataInto(SpectrumTester &other) const override { other.m_histogram = m_histogram; }
111
112 const Mantid::HistogramData::Histogram &histogramRef() const override { return m_histogram; }
113 Mantid::HistogramData::Histogram &mutableHistogramRef() override { return m_histogram; }
114};
115
116//===================================================================================================================
117
119public:
120 const std::string id() const override { return "FakeWorkspace"; }
121 Workspace *doClone() const override { return new FakeWorkspace(*this); }
122 Workspace *doCloneEmpty() const override { return new FakeWorkspace; }
123 const std::string toString() const override { return "FakeWorkspace instance"; }
124 size_t getMemorySize() const override { return 0; }
125};
126
127//===================================================================================================================
129public:
131
132 bool isRaggedWorkspace() const override {
133 if (m_vec.empty()) {
134 throw std::runtime_error("Vector data is empty, cannot check for ragged workspace.");
135 } else {
136 const auto numberOfBins = m_vec[0].y().size();
137 return std::any_of(m_vec.cbegin(), m_vec.cend(),
138 [&numberOfBins](const auto &spectrum) { return numberOfBins != spectrum.y().size(); });
139 }
140 }
141
142 // Empty overrides of virtual methods
143 size_t getNumberHistograms() const override { return m_spec; }
144 const std::string id() const override { return "AxeslessWorkspaceTester"; }
145 size_t size() const override {
146 return std::accumulate(m_vec.cbegin(), m_vec.cend(), static_cast<size_t>(0),
147 [](size_t total, const SpectrumTester &i) { return total + i.y().size(); });
148 }
149 size_t blocksize() const override {
150 if (m_vec.empty()) {
151 return 0;
152 }
153 size_t numY = m_vec[0].y().size();
154 if (std::any_of(m_vec.cbegin(), m_vec.cend(), [numY](auto it) { return it.y().size() != numY; })) {
155 throw std::logic_error("non-constant number of bins");
156 }
157 return numY;
158 }
159
160 std::size_t getNumberBins(const std::size_t &index) const override {
161 if (index >= m_vec.size())
162 return 0;
163 return m_vec[index].y().size();
164 }
165
166 std::size_t getMaxNumberBins() const override {
167 if (m_vec.empty()) {
168 return 0;
169 } else {
170 const auto iter =
171 std::max_element(m_vec.cbegin(), m_vec.cend(), [](const SpectrumTester &s1, const SpectrumTester &s2) {
172 return s1.y().size() < s2.y().size();
173 });
174 return iter->y().size();
175 }
176 }
177
178 ISpectrum &getSpectrum(const size_t index) override {
180 m_vec[index].setMatrixWorkspace(this, index);
181 return m_vec[index];
182 }
183 const ISpectrum &getSpectrum(const size_t index) const override { return m_vec[index]; }
184 void generateHistogram(const std::size_t, std::span<double const>, MantidVec &, MantidVec &, bool) const override {}
186
187protected:
188 void init(const size_t &numspec, const size_t &j, const size_t &k) override {
189 m_spec = numspec;
190 m_vec.resize(m_spec, SpectrumTester(Mantid::HistogramData::getHistogramXMode(j, k),
191 Mantid::HistogramData::Histogram::YMode::Counts));
192 for (size_t i = 0; i < m_spec; i++) {
193 m_vec[i].setMatrixWorkspace(this, i);
194 // The data arrays cannot be resized individually, so set them all at the required lengths.
195 // getHistogramXMode() above guarantees that j is either k (points) or k + 1 (bin edges).
196 if (m_vec[i].histogram().xMode() == Mantid::HistogramData::Histogram::XMode::BinEdges) {
197 m_vec[i].setHistogram(Mantid::HistogramData::BinEdges(j, 1.0), Mantid::HistogramData::Counts(k, 1.0),
198 Mantid::HistogramData::CountStandardDeviations(k, 1.0));
199 } else {
200 m_vec[i].setHistogram(Mantid::HistogramData::Points(j, 1.0), Mantid::HistogramData::Counts(k, 1.0),
201 Mantid::HistogramData::CountStandardDeviations(k, 1.0));
202 }
203 m_vec[i].addDetectorID(detid_t(i));
204 m_vec[i].setSpectrumNo(specnum_t(i + 1));
205 }
206 }
207 void init(const Mantid::HistogramData::Histogram &histogram) override {
209 m_vec.resize(m_spec, SpectrumTester(histogram.xMode(), histogram.yMode()));
210 for (size_t i = 0; i < m_spec; i++) {
211 m_vec[i].setHistogram(histogram);
212 m_vec[i].addDetectorID(detid_t(i));
213 m_vec[i].setSpectrumNo(specnum_t(i + 1));
214 }
215 }
216
217 AxeslessWorkspaceTester *doClone() const override { return new AxeslessWorkspaceTester(*this); }
219 throw std::runtime_error("Cloning of AxeslessWorkspaceTester is not implemented.");
220 }
221
222private:
223 std::vector<SpectrumTester> m_vec;
224 size_t m_spec;
227 return m_vec[index];
228 }
229};
230
232public:
234
235 const std::string id() const override { return "WorkspaceTester"; }
236
238 std::unique_ptr<WorkspaceTester> clone() const { return std::unique_ptr<WorkspaceTester>(doClone()); }
239
241 std::unique_ptr<WorkspaceTester> cloneEmpty() const { return std::unique_ptr<WorkspaceTester>(doCloneEmpty()); }
242
243protected:
244 void init(const size_t &numspec, const size_t &j, const size_t &k) override {
245 AxeslessWorkspaceTester::init(numspec, j, k);
246
247 // Put an 'empty' axis in to test the getAxis method
248 m_axes.resize(2);
249 m_axes[0] = std::make_unique<Mantid::API::RefAxis>(this);
250 m_axes[1] = std::make_unique<Mantid::API::SpectraAxis>(this);
251 }
252 void init(const Mantid::HistogramData::Histogram &histogram) override {
254
255 // Put an 'empty' axis in to test the getAxis method
256 m_axes.resize(2);
257 m_axes[0] = std::make_unique<Mantid::API::RefAxis>(this);
258 m_axes[1] = std::make_unique<Mantid::API::SpectraAxis>(this);
259 }
260
261private:
262 WorkspaceTester *doClone() const override { return new WorkspaceTester(*this); }
263 WorkspaceTester *doCloneEmpty() const override { return new WorkspaceTester(); }
264};
265
266//===================================================================================================================
268public:
270 std::unique_ptr<TableWorkspaceTester> clone() const { return std::unique_ptr<TableWorkspaceTester>(doClone()); }
271
273 std::unique_ptr<TableWorkspaceTester> cloneEmpty() const {
274 return std::unique_ptr<TableWorkspaceTester>(doCloneEmpty());
275 }
276
277 const std::string id() const override { return "TableWorkspaceTester"; }
278
279 size_t getMemorySize() const override { throw std::runtime_error("getMemorySize not implemented"); }
280
281 Column_sptr addColumn(const std::string &, const std::string &) override {
282 throw std::runtime_error("addColumn not implemented");
283 }
284
285 LogManager_sptr logs() override { throw std::runtime_error("logs not implemented"); }
286
287 LogManager_const_sptr getLogs() const override { throw std::runtime_error("getLogs not implemented"); }
288
289 void removeColumn(const std::string &) override { throw std::runtime_error("removeColumn not implemented"); }
290
291 size_t columnCount() const override { throw std::runtime_error("columnCount not implemented"); }
292
293 Column_sptr getColumn(const std::string &) override { throw std::runtime_error("getColumn(str) not implemented"); }
294
295 Column_const_sptr getColumn(const std::string &) const override {
296 throw std::runtime_error("getColumn(str) const not implemented");
297 }
298
299 Column_sptr getColumn(size_t) override { throw std::runtime_error("getColumn(size_t) not implemented"); }
300
301 Column_const_sptr getColumn(size_t) const override {
302 throw std::runtime_error("getColumn(size_t) const not implemented");
303 }
304
305 std::vector<std::string> getColumnNames() const override {
306 throw std::runtime_error("getColumnNames not implemented");
307 }
308
309 size_t rowCount() const override { throw std::runtime_error("rowCount not implemented"); }
310
311 void setRowCount(size_t) override { throw std::runtime_error("setRowCount not implemented"); }
312
313 size_t insertRow(size_t) override { throw std::runtime_error("insertRow not implemented"); }
314
315 void removeRow(size_t) override { throw std::runtime_error("removeRow not implemented"); }
316
317 void find(size_t, size_t &, size_t) override { throw std::runtime_error("find not implemented"); }
318
319 void find(double, size_t &, size_t) override { throw std::runtime_error("find not implemented"); }
320
321 void find(float, size_t &, size_t) override { throw std::runtime_error("find not implemented"); }
322
323 void find(Boolean, size_t &, size_t) override { throw std::runtime_error("find not implemented"); }
324
325 void find(const std::string &, size_t &, size_t) override { throw std::runtime_error("find not implemented"); }
326
327 void find(const Mantid::Kernel::V3D &, size_t &, size_t) override {
328 throw std::runtime_error("find not implemented");
329 }
330
331private:
332 TableWorkspaceTester *doClone() const override {
333 throw std::runtime_error("Cloning of TableWorkspaceTester is not implemented.");
334 }
336 throw std::runtime_error("Cloning of TableWorkspaceTester is not implemented.");
337 }
338 ITableWorkspace *doCloneColumns(const std::vector<std::string> &) const override {
339 throw std::runtime_error("Cloning of TableWorkspaceTester is not implemented.");
340 }
341};
342
343//===================================================================================================================
344class ColumnTester : public Column {
345 size_t size() const override { throw std::runtime_error("size not implemented"); }
346
347 std::type_info &get_type_info() const override { throw std::runtime_error("get_type_info not implemented"); }
348
349 std::type_info &get_pointer_type_info() const override {
350 throw std::runtime_error("get_pointer_type_info not implemented");
351 }
352
353 void print(size_t, std::ostream &) const override { throw std::runtime_error("print not implemented"); }
354
355 bool isBool() const override { throw std::runtime_error("isBool not implemented"); }
356
357 bool isNumber() const override { throw std::runtime_error("isNumber not implemented"); }
358
359 long int sizeOfData() const override { throw std::runtime_error("sizeOfData not implemented"); }
360
361 Column *clone() const override { throw std::runtime_error("clone not implemented"); }
362
363 double toDouble(size_t) const override { throw std::runtime_error("toDouble not implemented"); }
364
365 void fromDouble(size_t, double) override { throw std::runtime_error("fromDouble not implemented"); }
366
367protected:
368 void resize(size_t) override { throw std::runtime_error("resize not implemented"); }
369 void insert(size_t) override { throw std::runtime_error("insert not implemented"); }
370 void remove(size_t) override { throw std::runtime_error("remove not implemented"); }
371 void *void_pointer(size_t) override { throw std::runtime_error("void_pointer not implemented"); }
372 const void *void_pointer(size_t) const override { throw std::runtime_error("void_pointer const not implemented"); }
373};
374
375//===================================================================================================================
377
378public:
379 uint64_t getNPoints() const override { throw std::runtime_error("Not Implemented"); }
380 uint64_t getNEvents() const override { throw std::runtime_error("Not Implemented"); }
381
382 std::vector<std::unique_ptr<IMDIterator>>
383 createIterators(size_t suggestedNumCores = 1,
384 Mantid::Geometry::MDImplicitFunction *function = nullptr) const override {
385 UNUSED_ARG(suggestedNumCores)
386 UNUSED_ARG(function)
387 throw std::runtime_error("Not Implemented");
388 }
389
390 signal_t getSignalAtCoord(const coord_t *coords, const Mantid::API::MDNormalization &normalization) const override {
391 UNUSED_ARG(coords);
392 UNUSED_ARG(normalization);
393 throw std::runtime_error("Not Implemented");
394 }
395
397 const Mantid::API::MDNormalization &normalization) const override {
398 UNUSED_ARG(coords);
399 UNUSED_ARG(normalization);
400 throw std::runtime_error("Not Implemented");
401 }
402
403 void setMDMasking(std::unique_ptr<Mantid::Geometry::MDImplicitFunction> maskingRegion) override {
404 UNUSED_ARG(maskingRegion);
405 throw std::runtime_error("Not Implemented");
406 }
407
408 void clearMDMasking() override { throw std::runtime_error("Not Implemented"); }
409
410 SpecialCoordinateSystem getSpecialCoordinateSystem() const override { throw std::runtime_error("Not Implemented"); }
411
412 coord_t getInverseVolume() const override { throw std::runtime_error("Not Implemented"); }
413
414 const signal_t *getSignalArray() const override { throw std::runtime_error("Not Implemented"); }
415
416 const signal_t *getErrorSquaredArray() const override { throw std::runtime_error("Not Implemented"); }
417
418 const signal_t *getNumEventsArray() const override { throw std::runtime_error("Not Implemented"); }
419
420 signal_t *mutableSignalArray() override { throw std::runtime_error("Not Implemented"); }
421
422 signal_t *mutableErrorSquaredArray() override { throw std::runtime_error("Not Implemented"); }
423
424 signal_t *mutableNumEventsArray() override { throw std::runtime_error("Not Implemented"); }
425
426 void setTo(signal_t signal, signal_t errorSquared, signal_t numEvents) override {
427 UNUSED_ARG(signal);
428 UNUSED_ARG(errorSquared);
429 UNUSED_ARG(numEvents);
430 throw std::runtime_error("Not Implemented");
431 }
432
433 Mantid::Kernel::VMD getCenter(size_t linearIndex) const override {
434 UNUSED_ARG(linearIndex);
435 throw std::runtime_error("Not Implemented");
436 }
437
438 void setSignalAt(size_t index, signal_t value) override {
441 throw std::runtime_error("Not Implemented");
442 }
443
444 void setErrorSquaredAt(size_t index, signal_t value) override {
447 throw std::runtime_error("Not Implemented");
448 }
449
450 signal_t getErrorAt(size_t index) const override {
452 throw std::runtime_error("Not Implemented");
453 }
454
455 signal_t getErrorAt(size_t index1, size_t index2) const override {
456 UNUSED_ARG(index1)
457 UNUSED_ARG(index2)
458 throw std::runtime_error("Not Implemented");
459 }
460
461 signal_t getErrorAt(size_t index1, size_t index2, size_t index3) const override {
462 UNUSED_ARG(index1)
463 UNUSED_ARG(index2)
464 UNUSED_ARG(index3)
465 throw std::runtime_error("Not Implemented");
466 }
467
468 signal_t getErrorAt(size_t index1, size_t index2, size_t index3, size_t index4) const override {
469 UNUSED_ARG(index1)
470 UNUSED_ARG(index2)
471 UNUSED_ARG(index3)
472 UNUSED_ARG(index4)
473 throw std::runtime_error("Not Implemented");
474 }
475
476 signal_t getSignalAt(size_t index) const override {
478 throw std::runtime_error("Not Implemented");
479 }
480
481 signal_t getSignalAt(size_t index1, size_t index2) const override {
482 UNUSED_ARG(index1)
483 UNUSED_ARG(index2)
484 throw std::runtime_error("Not Implemented");
485 }
486
487 signal_t getSignalAt(size_t index1, size_t index2, size_t index3) const override {
488 UNUSED_ARG(index1)
489 UNUSED_ARG(index2)
490 UNUSED_ARG(index3)
491 throw std::runtime_error("Not Implemented");
492 }
493
494 signal_t getSignalAt(size_t index1, size_t index2, size_t index3, size_t index4) const override {
495 UNUSED_ARG(index1)
496 UNUSED_ARG(index2)
497 UNUSED_ARG(index3)
498 UNUSED_ARG(index4)
499 throw std::runtime_error("Not Implemented");
500 }
501
502 signal_t getSignalNormalizedAt(size_t index) const override {
504 throw std::runtime_error("Not Implemented");
505 }
506
507 signal_t getSignalNormalizedAt(size_t index1, size_t index2) const override {
508 UNUSED_ARG(index1)
509 UNUSED_ARG(index2)
510 throw std::runtime_error("Not Implemented");
511 }
512
513 signal_t getSignalNormalizedAt(size_t index1, size_t index2, size_t index3) const override {
514 UNUSED_ARG(index1)
515 UNUSED_ARG(index2)
516 UNUSED_ARG(index3)
517 throw std::runtime_error("Not Implemented");
518 }
519
520 signal_t getSignalNormalizedAt(size_t index1, size_t index2, size_t index3, size_t index4) const override {
521 UNUSED_ARG(index1)
522 UNUSED_ARG(index2)
523 UNUSED_ARG(index3)
524 UNUSED_ARG(index4)
525 throw std::runtime_error("Not Implemented");
526 }
527
528 signal_t getErrorNormalizedAt(size_t index) const override {
530 throw std::runtime_error("Not Implemented");
531 }
532
533 signal_t getErrorNormalizedAt(size_t index1, size_t index2) const override {
534 UNUSED_ARG(index1)
535 UNUSED_ARG(index2)
536 throw std::runtime_error("Not Implemented");
537 }
538
539 signal_t getErrorNormalizedAt(size_t index1, size_t index2, size_t index3) const override {
540 UNUSED_ARG(index1)
541 UNUSED_ARG(index2)
542 UNUSED_ARG(index3)
543 throw std::runtime_error("Not Implemented");
544 }
545
546 signal_t getErrorNormalizedAt(size_t index1, size_t index2, size_t index3, size_t index4) const override {
547 UNUSED_ARG(index1)
548 UNUSED_ARG(index2)
549 UNUSED_ARG(index3)
550 UNUSED_ARG(index4)
551 throw std::runtime_error("Not Implemented");
552 }
553
554 signal_t &errorSquaredAt(size_t index) override {
556 throw std::runtime_error("Not Implemented");
557 }
558
559 signal_t &signalAt(size_t index) override {
561 throw std::runtime_error("Not Implemented");
562 }
563
564 size_t getLinearIndex(size_t index1, size_t index2) const override {
565 UNUSED_ARG(index1)
566 UNUSED_ARG(index2)
567 throw std::runtime_error("Not Implemented");
568 }
569
570 size_t getLinearIndex(size_t index1, size_t index2, size_t index3) const override {
571 UNUSED_ARG(index1)
572 UNUSED_ARG(index2)
573 UNUSED_ARG(index3)
574 throw std::runtime_error("Not Implemented");
575 }
576
577 size_t getLinearIndex(size_t index1, size_t index2, size_t index3, size_t index4) const override {
578 UNUSED_ARG(index1)
579 UNUSED_ARG(index2)
580 UNUSED_ARG(index3)
581 UNUSED_ARG(index4)
582 throw std::runtime_error("Not Implemented");
583 }
584
587 UNUSED_ARG(start)
588 UNUSED_ARG(end)
590 throw std::runtime_error("Not Implemented");
591 }
592
593 double &operator[](const size_t &index) override {
595 throw std::runtime_error("Not Implemented");
596 }
597
598 void setCoordinateSystem(const SpecialCoordinateSystem coordinateSystem) override {
599 UNUSED_ARG(coordinateSystem)
600 throw std::runtime_error("Not Implemented");
601 }
602
603 void setDisplayNormalization(const Mantid::API::MDNormalization &preferredNormalization) override {
604 UNUSED_ARG(preferredNormalization);
605 throw std::runtime_error("Not Implemented");
606 }
607
608 size_t getMemorySize() const override { throw std::runtime_error("Not Implemented"); }
609
610 const std::string id() const override { throw std::runtime_error("Not Implemented"); }
611 const std::string &getName() const override { throw std::runtime_error("Not Implemented"); }
612 bool threadSafe() const override { throw std::runtime_error("Not Implemented"); }
613 const std::string toString() const override { throw std::runtime_error("Not Implemented"); }
615 const MDHistoDimension_sptr &dimZ) {
616 std::vector<IMDDimension_sptr> dimensions{dimX, dimY, dimZ};
617 initGeometry(dimensions);
618 }
619
620private:
621 IMDHistoWorkspace *doClone() const override { throw std::runtime_error("Not Implemented"); }
622 IMDHistoWorkspace *doCloneEmpty() const override { throw std::runtime_error("Not Implemented"); }
623};
624
626 size_t blocksize() const override {
627 if (getSpectrum(0).y().size() == getSpectrum(1).y().size())
628 return getSpectrum(0).y().size();
629 else
630 throw std::length_error("Mismatched bins sizes");
631
632 return 0;
633 }
634};
double value
The value of the point.
Definition FitMW.cpp:51
std::map< DeltaEMode::Type, std::string > index
#define UNUSED_ARG(x)
Function arguments are sometimes unused in certain implmentations but are required for documentation ...
Definition System.h:44
#define MSVC_DIAG_ON(x)
#define MSVC_DIAG_OFF(x)
#define GNU_DIAG_ON(x)
#define GNU_DIAG_OFF(x)
This is a collection of macros for turning compiler warnings off in a controlled manner.
ISpectrum & getSpectrum(const size_t index) override
Return the underlying ISpectrum ptr at the given workspace index.
std::size_t getMaxNumberBins() const override
Returns the maximum number of bins in a workspace (works on ragged data).
size_t blocksize() const override
Returns the size of each block of data returned by the dataY accessors.
AxeslessWorkspaceTester * doClone() const override
Virtual clone method. Not implemented to force implementation in children.
size_t size() const override
Returns the number of single indexable items in the workspace.
ISpectrum & getSpectrumWithoutInvalidation(const size_t index) override
void init(const Mantid::HistogramData::Histogram &histogram) override
Mantid::Kernel::SpecialCoordinateSystem getSpecialCoordinateSystem() const override
void init(const size_t &numspec, const size_t &j, const size_t &k) override
std::vector< SpectrumTester > m_vec
const ISpectrum & getSpectrum(const size_t index) const override
Return the underlying ISpectrum ptr (const version) at the given workspace index.
std::size_t getNumberBins(const std::size_t &index) const override
Returns the number of bins for a given histogram index.
size_t getNumberHistograms() const override
Returns the number of histograms in the workspace.
const std::string id() const override
A string ID for the class.
void generateHistogram(const std::size_t, std::span< double const >, MantidVec &, MantidVec &, bool) const override
bool isRaggedWorkspace() const override
Returns true if the workspace is ragged (has differently sized spectra).
AxeslessWorkspaceTester * doCloneEmpty() const override
Virtual cloneEmpty method.
bool isBool() const override
Specialized type check.
double toDouble(size_t) const override
Cast an element to double if possible.
void print(size_t, std::ostream &) const override
Prints out the value to a stream.
std::type_info & get_pointer_type_info() const override
Returns typeid for the pointer type to the data element in the column.
Column * clone() const override
Virtual constructor. Fully clone any column.
void fromDouble(size_t, double) override
Assign an element from double if possible.
void * void_pointer(size_t) override
Pointer to a data element.
std::type_info & get_type_info() const override
Returns typeid for the data in the column.
long int sizeOfData() const override
Must return overall memory size taken by the column.
void insert(size_t) override
Inserts an item.
bool isNumber() const override
Are elements of the column interpretable as a number?
void resize(size_t) override
Sets the new column size.
const void * void_pointer(size_t) const override
Pointer to a data element.
void remove(size_t) override
Removes an item.
size_t size() const override
Number of individual elements in the column.
size_t getMemorySize() const override
Get the footprint in memory in bytes.
const std::string toString() const override
Serializes the object to a string.
Workspace * doCloneEmpty() const override
Virtual cloneEmpty method.
const std::string id() const override
A string ID for the class.
Workspace * doClone() const override
Virtual clone method. Not implemented to force implementation in children.
signal_t getSignalAt(size_t index1, size_t index2, size_t index3) const override
signal_t getErrorNormalizedAt(size_t index1, size_t index2) const override
void setCoordinateSystem(const SpecialCoordinateSystem coordinateSystem) override
void setTo(signal_t signal, signal_t errorSquared, signal_t numEvents) override
double & operator[](const size_t &index) override
signal_t getSignalAt(size_t index1, size_t index2) const override
signal_t getSignalAt(size_t index1, size_t index2, size_t index3, size_t index4) const override
signal_t getErrorAt(size_t index) const override
LinePlot getLineData(const Mantid::Kernel::VMD &start, const Mantid::Kernel::VMD &end, Mantid::API::MDNormalization normalize) const override
size_t getLinearIndex(size_t index1, size_t index2, size_t index3, size_t index4) const override
SpecialCoordinateSystem getSpecialCoordinateSystem() const override
uint64_t getNEvents() const override
signal_t getSignalNormalizedAt(size_t index1, size_t index2, size_t index3, size_t index4) const override
signal_t getSignalAtCoord(const coord_t *coords, const Mantid::API::MDNormalization &normalization) const override
coord_t getInverseVolume() const override
See the MDHistoWorkspace definition for descriptions of these.
signal_t & signalAt(size_t index) override
signal_t getErrorAt(size_t index1, size_t index2) const override
const std::string & getName() const override
Get the workspace name.
const signal_t * getNumEventsArray() const override
signal_t getSignalNormalizedAt(size_t index1, size_t index2, size_t index3) const override
void setErrorSquaredAt(size_t index, signal_t value) override
signal_t getSignalAt(size_t index) const override
MDHistoWorkspaceTester(const MDHistoDimension_sptr &dimX, const MDHistoDimension_sptr &dimY, const MDHistoDimension_sptr &dimZ)
IMDHistoWorkspace * doClone() const override
Virtual clone method. Not implemented to force implementation in children.
size_t getMemorySize() const override
Get the footprint in memory in bytes.
signal_t * mutableSignalArray() override
std::vector< std::unique_ptr< IMDIterator > > createIterators(size_t suggestedNumCores=1, Mantid::Geometry::MDImplicitFunction *function=nullptr) const override
Creates a new iterator pointing to the first cell in the workspace.
signal_t getErrorAt(size_t index1, size_t index2, size_t index3) const override
size_t getLinearIndex(size_t index1, size_t index2, size_t index3) const override
Mantid::Kernel::VMD getCenter(size_t linearIndex) const override
const std::string toString() const override
Serializes the object to a string.
signal_t * mutableNumEventsArray() override
signal_t getErrorNormalizedAt(size_t index) const override
uint64_t getNPoints() const override
Get the number of points associated with the workspace.
signal_t getErrorNormalizedAt(size_t index1, size_t index2, size_t index3, size_t index4) const override
size_t getLinearIndex(size_t index1, size_t index2) const override
signal_t * mutableErrorSquaredArray() override
signal_t getErrorNormalizedAt(size_t index1, size_t index2, size_t index3) const override
signal_t getErrorAt(size_t index1, size_t index2, size_t index3, size_t index4) const override
const std::string id() const override
A string ID for the class.
bool threadSafe() const override
Marks the workspace as safe for multiple threads to edit data simutaneously.
signal_t getSignalWithMaskAtCoord(const coord_t *coords, const Mantid::API::MDNormalization &normalization) const override
signal_t getSignalNormalizedAt(size_t index) const override
void clearMDMasking() override
Clear existing masks.
void setMDMasking(std::unique_ptr< Mantid::Geometry::MDImplicitFunction > maskingRegion) override
Setter for the masking region.
const signal_t * getSignalArray() const override
void setDisplayNormalization(const Mantid::API::MDNormalization &preferredNormalization) override
IMDHistoWorkspace * doCloneEmpty() const override
Virtual cloneEmpty method.
void setSignalAt(size_t index, signal_t value) override
const signal_t * getErrorSquaredArray() const override
signal_t getSignalNormalizedAt(size_t index1, size_t index2) const override
signal_t & errorSquaredAt(size_t index) override
Column is the base class for columns of TableWorkspace.
Definition Column.h:35
size_t numberOfDetectorGroups() const
Returns the number of detector groups.
Abstract interface to MDHistoWorkspace, for use in exposing to Python.
A "spectrum" is an object that holds the data for a particular spectrum, in particular:
Definition ISpectrum.h:38
void setMatrixWorkspace(MatrixWorkspace *matrixWorkspace, const size_t index)
Sets the MatrixWorkspace pointer (pointer to the owning workspace).
HistogramData::HistogramY & mutableY() &
Definition ISpectrum.h:191
virtual const HistogramData::HistogramY & y() const
Definition ISpectrum.h:186
void setCounts(T &&...data) &
Definition ISpectrum.h:160
virtual void copyDataInto(DataObjects::EventList &) const
Override in child classes for polymorphic copying of data.
HistogramData::HistogramE & mutableE() &
Definition ISpectrum.h:195
ITableWorkspace is an implementation of Workspace in which the data are organised in columns of same ...
void initGeometry(const std::vector< std::shared_ptr< Geometry::IMDDimension > > &dimensions)
Initialize the geometry.
Base MatrixWorkspace Abstract Class.
std::vector< std::unique_ptr< Axis > > m_axes
A vector of pointers to the axes for this workspace.
void invalidateCommonBinsFlag()
Invalidates the commons bins flag.
HistogramData::Histogram histogram(const size_t index) const
Returns the Histogram at the given workspace index.
Base Workspace Abstract Class.
Definition Workspace.h:29
An "ImplicitFunction" defining a hyper-cuboid-shaped region in N dimensions.
Class for 3D vectors.
Definition V3D.h:34
Implements a copy on write data template.
Definition cow_ptr.h:41
Helper class that implements ISpectrum.
Definition FakeObjects.h:57
const MantidVec & readDx() const override
Definition FakeObjects.h:89
void setX(const Mantid::Kernel::cow_ptr< Mantid::HistogramData::HistogramX > &X) override
Definition FakeObjects.h:73
MantidVec & dataX() override
Definition FakeObjects.h:77
Mantid::Kernel::cow_ptr< Mantid::HistogramData::HistogramX > ptrX() const override
Definition FakeObjects.h:86
void clearData() override
Mask the spectrum to this value.
Definition FakeObjects.h:97
MantidVec & dataE() override
Definition FakeObjects.h:80
SpectrumTester(Mantid::HistogramData::Histogram::XMode xmode, Mantid::HistogramData::Histogram::YMode ymode)
Definition FakeObjects.h:59
const Mantid::HistogramData::Histogram & histogramRef() const override
void copyDataFrom(const ISpectrum &other) override
Copy data from another ISpectrum with double-dynamic dispatch.
Definition FakeObjects.h:71
Mantid::HistogramData::Histogram & mutableHistogramRef() override
MantidVec & dataDx() override
Definition FakeObjects.h:78
const MantidVec & readX() const override
Definition FakeObjects.h:85
void copyDataInto(SpectrumTester &other) const override
Override in child classes for polymorphic copying of data.
Mantid::HistogramData::Histogram m_histogram
const MantidVec & dataE() const override
Definition FakeObjects.h:92
const MantidVec & dataDx() const override
Definition FakeObjects.h:88
SpectrumTester(const specnum_t specNo, Mantid::HistogramData::Histogram::XMode xmode, Mantid::HistogramData::Histogram::YMode ymode)
Definition FakeObjects.h:64
MantidVec & dataY() override
Definition FakeObjects.h:79
const MantidVec & dataY() const override
Definition FakeObjects.h:91
size_t getMemorySize() const override
Definition FakeObjects.h:94
std::unique_ptr< TableWorkspaceTester > cloneEmpty() const
Returns a default-initialized clone of the workspace.
LogManager_const_sptr getLogs() const override
Get constant access to shared pointer containing workspace properties.
TableWorkspaceTester * doClone() const override
Virtual clone method. Not implemented to force implementation in children.
Column_sptr getColumn(const std::string &) override
Gets the shared pointer to a column by name.
Column_const_sptr getColumn(size_t) const override
Gets the shared pointer to a column by index - return none-modifyable column.
void find(double, size_t &, size_t) override
find method to get the index of double cell value in a table workspace
void find(Boolean, size_t &, size_t) override
find method to get the index of API::Boolean value cell in a table workspace
void removeColumn(const std::string &) override
Removes a column.
Column_sptr getColumn(size_t) override
Gets the shared pointer to a column by index.
size_t insertRow(size_t) override
Inserts a row before row pointed to by index and fills it with default vales.
size_t getMemorySize() const override
Get the footprint in memory in bytes.
void removeRow(size_t) override
Delets a row if it exists.
void find(const Mantid::Kernel::V3D &, size_t &, size_t) override
find method to get the index of Mantid::Kernel::V3D cell value in a table workspace
std::unique_ptr< TableWorkspaceTester > clone() const
Returns a clone of the workspace.
void find(const std::string &, size_t &, size_t) override
find method to get the index of cellstd::string value in a table workspace
const std::string id() const override
Return the workspace typeID.
LogManager_sptr logs() override
Get access to shared pointer containing workspace properties.
size_t columnCount() const override
Number of columns in the workspace.
TableWorkspaceTester * doCloneEmpty() const override
Virtual cloneEmpty method.
void setRowCount(size_t) override
Resizes the workspace.
void find(float, size_t &, size_t) override
find method to get the index of float cell value in a table workspace
void find(size_t, size_t &, size_t) override
find method to get the index of integer cell value in a table workspace
Column_sptr addColumn(const std::string &, const std::string &) override
Creates a new column.
ITableWorkspace * doCloneColumns(const std::vector< std::string > &) const override
size_t rowCount() const override
Number of rows in the workspace.
std::vector< std::string > getColumnNames() const override
Returns a vector of all column names.
Column_const_sptr getColumn(const std::string &) const override
Gets the shared pointer to a column by name.
size_t blocksize() const override
Returns the size of each block of data returned by the dataY accessors.
void init(const Mantid::HistogramData::Histogram &histogram) override
WorkspaceTester * doCloneEmpty() const override
Virtual cloneEmpty method.
std::unique_ptr< WorkspaceTester > cloneEmpty() const
Returns a default-initialized clone of the workspace.
void init(const size_t &numspec, const size_t &j, const size_t &k) override
std::unique_ptr< WorkspaceTester > clone() const
Returns a clone of the workspace.
WorkspaceTester * doClone() const override
Virtual clone method. Not implemented to force implementation in children.
const std::string id() const override
A string ID for the class.
std::shared_ptr< const LogManager > LogManager_const_sptr
shared pointer to the logManager base class (const version)
Definition LogManager.h:228
std::shared_ptr< Column > Column_sptr
Definition Column.h:232
std::shared_ptr< LogManager > LogManager_sptr
shared pointer to the logManager base class
Definition LogManager.h:226
std::shared_ptr< const Column > Column_const_sptr
Definition Column.h:233
MDNormalization
Enum describing different ways to normalize the signal in a MDWorkspace.
Definition IMDIterator.h:25
std::shared_ptr< MDHistoDimension > MDHistoDimension_sptr
Shared pointer to a MDHistoDimension.
SpecialCoordinateSystem
Special coordinate systems for Q3D.
MANTID_KERNEL_DLL V3D normalize(V3D v)
Normalizes a V3D.
Definition V3D.h:352
float coord_t
Typedef for the data type to use for coordinate axes in MD objects such as MDBox, MDEventWorkspace,...
Definition MDTypes.h:27
int32_t detid_t
Typedef for a detector ID.
double signal_t
Typedef for the signal recorded in a MDBox, etc.
Definition MDTypes.h:36
std::vector< double > MantidVec
typedef for the data storage used in Mantid matrix workspaces
Definition cow_ptr.h:172
int32_t specnum_t
Typedef for a spectrum Number.
Definition IDTypes.h:14
As TableColumn stores its data in a std::vector bool type cannot be used in the same way as the other...
Definition Column.h:213
Holds X, Y, E for a line plot.