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 <string>
30
32#include "MantidAPI/ISpectrum.h"
35#include "MantidAPI/RefAxis.h"
43
44using namespace Mantid::API;
45using namespace Mantid::Geometry;
46using Mantid::coord_t;
47using Mantid::detid_t;
52
53//===================================================================================================================
55class SpectrumTester : public ISpectrum {
56public:
57 SpectrumTester(Mantid::HistogramData::Histogram::XMode xmode, Mantid::HistogramData::Histogram::YMode ymode)
58 : ISpectrum(), m_histogram(xmode, ymode) {
60 m_histogram.setCountStandardDeviations(0);
61 }
62 SpectrumTester(const specnum_t specNo, Mantid::HistogramData::Histogram::XMode xmode,
63 Mantid::HistogramData::Histogram::YMode ymode)
64 : ISpectrum(specNo), m_histogram(xmode, ymode) {
66 m_histogram.setCountStandardDeviations(0);
67 }
68
69 void copyDataFrom(const ISpectrum &other) override { other.copyDataInto(*this); }
70
72 MantidVec &dataX() override { return m_histogram.dataX(); }
73 const MantidVec &dataX() const override { return m_histogram.dataX(); }
74 const MantidVec &readX() const override { return m_histogram.readX(); }
76
77 MantidVec &dataDx() override { return m_histogram.dataDx(); }
78 const MantidVec &dataDx() const override { return m_histogram.dataDx(); }
79 const MantidVec &readDx() const override { return m_histogram.readDx(); }
80
81 MantidVec &dataY() override { return m_histogram.dataY(); }
82 MantidVec &dataE() override { return m_histogram.dataE(); }
83
84 const MantidVec &dataY() const override { return m_histogram.dataY(); }
85 const MantidVec &dataE() const override { return m_histogram.dataE(); }
86
87 size_t getMemorySize() const override { return readY().size() * sizeof(double) * 2; }
88
90 void clearData() override {
91 // Assign the value to the data and error arrays
92 MantidVec &yValues = this->dataY();
93 std::fill(yValues.begin(), yValues.end(), 0.0);
94 MantidVec &eValues = this->dataE();
95 std::fill(eValues.begin(), eValues.end(), 0.0);
96 }
97
98protected:
99 Mantid::HistogramData::Histogram m_histogram;
100
101private:
103 void copyDataInto(SpectrumTester &other) const override { other.m_histogram = m_histogram; }
104
105 const Mantid::HistogramData::Histogram &histogramRef() const override { return m_histogram; }
106 Mantid::HistogramData::Histogram &mutableHistogramRef() override { return m_histogram; }
107};
108
109//===================================================================================================================
110
112public:
113 const std::string id() const override { return "FakeWorkspace"; }
114 Workspace *doClone() const override { return new FakeWorkspace(*this); }
115 Workspace *doCloneEmpty() const override { return new FakeWorkspace; }
116 const std::string toString() const override { return "FakeWorkspace instance"; }
117 size_t getMemorySize() const override { return 0; }
118};
119
120//===================================================================================================================
122public:
124
125 bool isRaggedWorkspace() const override {
126 if (m_vec.empty()) {
127 throw std::runtime_error("Vector data is empty, cannot check for ragged workspace.");
128 } else {
129 const auto numberOfBins = m_vec[0].dataY().size();
130 return std::any_of(m_vec.cbegin(), m_vec.cend(),
131 [&numberOfBins](const auto &spectrum) { return numberOfBins != spectrum.dataY().size(); });
132 }
133 }
134
135 // Empty overrides of virtual methods
136 size_t getNumberHistograms() const override { return m_spec; }
137 const std::string id() const override { return "AxeslessWorkspaceTester"; }
138 size_t size() const override {
139 return std::accumulate(m_vec.cbegin(), m_vec.cend(), static_cast<size_t>(0),
140 [](size_t total, const SpectrumTester &i) { return total + i.dataY().size(); });
141 }
142 size_t blocksize() const override {
143 if (m_vec.empty()) {
144 return 0;
145 }
146 size_t numY = m_vec[0].dataY().size();
147 if (std::any_of(m_vec.cbegin(), m_vec.cend(), [numY](auto it) { return it.dataY().size() != numY; })) {
148 throw std::logic_error("non-constant number of bins");
149 }
150 return numY;
151 }
152
153 std::size_t getNumberBins(const std::size_t &index) const override {
154 if (index > m_vec.size())
155 return 0;
156 return m_vec[index].dataY().size();
157 }
158
159 std::size_t getMaxNumberBins() const override {
160 if (m_vec.empty()) {
161 return 0;
162 } else {
163 const auto iter =
164 std::max_element(m_vec.cbegin(), m_vec.cend(), [](const SpectrumTester &s1, const SpectrumTester &s2) {
165 return s1.dataY().size() < s2.dataY().size();
166 });
167 return iter->dataY().size();
168 }
169 }
170
171 ISpectrum &getSpectrum(const size_t index) override {
173 m_vec[index].setMatrixWorkspace(this, index);
174 return m_vec[index];
175 }
176 const ISpectrum &getSpectrum(const size_t index) const override { return m_vec[index]; }
177 void generateHistogram(const std::size_t, const MantidVec &, MantidVec &, MantidVec &, bool) const override {}
179
180protected:
181 void init(const size_t &numspec, const size_t &j, const size_t &k) override {
182 m_spec = numspec;
183 m_vec.resize(m_spec, SpectrumTester(Mantid::HistogramData::getHistogramXMode(j, k),
184 Mantid::HistogramData::Histogram::YMode::Counts));
185 for (size_t i = 0; i < m_spec; i++) {
186 m_vec[i].setMatrixWorkspace(this, i);
187 m_vec[i].dataX().resize(j, 1.0);
188 m_vec[i].dataY().resize(k, 1.0);
189 m_vec[i].dataE().resize(k, 1.0);
190 m_vec[i].addDetectorID(detid_t(i));
191 m_vec[i].setSpectrumNo(specnum_t(i + 1));
192 }
193 }
194 void init(const Mantid::HistogramData::Histogram &histogram) override {
196 m_vec.resize(m_spec, SpectrumTester(histogram.xMode(), histogram.yMode()));
197 for (size_t i = 0; i < m_spec; i++) {
198 m_vec[i].setHistogram(histogram);
199 m_vec[i].addDetectorID(detid_t(i));
200 m_vec[i].setSpectrumNo(specnum_t(i + 1));
201 }
202 }
203
204 AxeslessWorkspaceTester *doClone() const override { return new AxeslessWorkspaceTester(*this); }
206 throw std::runtime_error("Cloning of AxeslessWorkspaceTester is not implemented.");
207 }
208
209private:
210 std::vector<SpectrumTester> m_vec;
211 size_t m_spec;
214 return m_vec[index];
215 }
216};
217
219public:
221
222 const std::string id() const override { return "WorkspaceTester"; }
223
225 std::unique_ptr<WorkspaceTester> clone() const { return std::unique_ptr<WorkspaceTester>(doClone()); }
226
228 std::unique_ptr<WorkspaceTester> cloneEmpty() const { return std::unique_ptr<WorkspaceTester>(doCloneEmpty()); }
229
230protected:
231 void init(const size_t &numspec, const size_t &j, const size_t &k) override {
232 AxeslessWorkspaceTester::init(numspec, j, k);
233
234 // Put an 'empty' axis in to test the getAxis method
235 m_axes.resize(2);
236 m_axes[0] = std::make_unique<Mantid::API::RefAxis>(this);
237 m_axes[1] = std::make_unique<Mantid::API::SpectraAxis>(this);
238 }
239 void init(const Mantid::HistogramData::Histogram &histogram) override {
241
242 // Put an 'empty' axis in to test the getAxis method
243 m_axes.resize(2);
244 m_axes[0] = std::make_unique<Mantid::API::RefAxis>(this);
245 m_axes[1] = std::make_unique<Mantid::API::SpectraAxis>(this);
246 }
247
248private:
249 WorkspaceTester *doClone() const override { return new WorkspaceTester(*this); }
250 WorkspaceTester *doCloneEmpty() const override { return new WorkspaceTester(); }
251};
252
253//===================================================================================================================
255public:
257 std::unique_ptr<TableWorkspaceTester> clone() const { return std::unique_ptr<TableWorkspaceTester>(doClone()); }
258
260 std::unique_ptr<TableWorkspaceTester> cloneEmpty() const {
261 return std::unique_ptr<TableWorkspaceTester>(doCloneEmpty());
262 }
263
264 const std::string id() const override { return "TableWorkspaceTester"; }
265
266 size_t getMemorySize() const override { throw std::runtime_error("getMemorySize not implemented"); }
267
268 Column_sptr addColumn(const std::string &, const std::string &) override {
269 throw std::runtime_error("addColumn not implemented");
270 }
271
272 LogManager_sptr logs() override { throw std::runtime_error("logs not implemented"); }
273
274 LogManager_const_sptr getLogs() const override { throw std::runtime_error("getLogs not implemented"); }
275
276 void removeColumn(const std::string &) override { throw std::runtime_error("removeColumn not implemented"); }
277
278 size_t columnCount() const override { throw std::runtime_error("columnCount not implemented"); }
279
280 Column_sptr getColumn(const std::string &) override { throw std::runtime_error("getColumn(str) not implemented"); }
281
282 Column_const_sptr getColumn(const std::string &) const override {
283 throw std::runtime_error("getColumn(str) const not implemented");
284 }
285
286 Column_sptr getColumn(size_t) override { throw std::runtime_error("getColumn(size_t) not implemented"); }
287
288 Column_const_sptr getColumn(size_t) const override {
289 throw std::runtime_error("getColumn(size_t) const not implemented");
290 }
291
292 std::vector<std::string> getColumnNames() const override {
293 throw std::runtime_error("getColumnNames not implemented");
294 }
295
296 size_t rowCount() const override { throw std::runtime_error("rowCount not implemented"); }
297
298 void setRowCount(size_t) override { throw std::runtime_error("setRowCount not implemented"); }
299
300 size_t insertRow(size_t) override { throw std::runtime_error("insertRow not implemented"); }
301
302 void removeRow(size_t) override { throw std::runtime_error("removeRow not implemented"); }
303
304 void find(size_t, size_t &, size_t) override { throw std::runtime_error("find not implemented"); }
305
306 void find(double, size_t &, size_t) override { throw std::runtime_error("find not implemented"); }
307
308 void find(float, size_t &, size_t) override { throw std::runtime_error("find not implemented"); }
309
310 void find(Boolean, size_t &, size_t) override { throw std::runtime_error("find not implemented"); }
311
312 void find(const std::string &, size_t &, size_t) override { throw std::runtime_error("find not implemented"); }
313
314 void find(const Mantid::Kernel::V3D &, size_t &, size_t) override {
315 throw std::runtime_error("find not implemented");
316 }
317
318private:
319 TableWorkspaceTester *doClone() const override {
320 throw std::runtime_error("Cloning of TableWorkspaceTester is not implemented.");
321 }
323 throw std::runtime_error("Cloning of TableWorkspaceTester is not implemented.");
324 }
325 ITableWorkspace *doCloneColumns(const std::vector<std::string> &) const override {
326 throw std::runtime_error("Cloning of TableWorkspaceTester is not implemented.");
327 }
328};
329
330//===================================================================================================================
331class ColumnTester : public Column {
332 size_t size() const override { throw std::runtime_error("size not implemented"); }
333
334 std::type_info &get_type_info() const override { throw std::runtime_error("get_type_info not implemented"); }
335
336 std::type_info &get_pointer_type_info() const override {
337 throw std::runtime_error("get_pointer_type_info not implemented");
338 }
339
340 void print(size_t, std::ostream &) const override { throw std::runtime_error("print not implemented"); }
341
342 bool isBool() const override { throw std::runtime_error("isBool not implemented"); }
343
344 bool isNumber() const override { throw std::runtime_error("isNumber not implemented"); }
345
346 long int sizeOfData() const override { throw std::runtime_error("sizeOfData not implemented"); }
347
348 Column *clone() const override { throw std::runtime_error("clone not implemented"); }
349
350 double toDouble(size_t) const override { throw std::runtime_error("toDouble not implemented"); }
351
352 void fromDouble(size_t, double) override { throw std::runtime_error("fromDouble not implemented"); }
353
354protected:
355 void resize(size_t) override { throw std::runtime_error("resize not implemented"); }
356 void insert(size_t) override { throw std::runtime_error("insert not implemented"); }
357 void remove(size_t) override { throw std::runtime_error("remove not implemented"); }
358 void *void_pointer(size_t) override { throw std::runtime_error("void_pointer not implemented"); }
359 const void *void_pointer(size_t) const override { throw std::runtime_error("void_pointer const not implemented"); }
360};
361
362//===================================================================================================================
364
365public:
366 uint64_t getNPoints() const override { throw std::runtime_error("Not Implemented"); }
367 uint64_t getNEvents() const override { throw std::runtime_error("Not Implemented"); }
368
369 std::vector<std::unique_ptr<IMDIterator>>
370 createIterators(size_t suggestedNumCores = 1,
371 Mantid::Geometry::MDImplicitFunction *function = nullptr) const override {
372 UNUSED_ARG(suggestedNumCores)
373 UNUSED_ARG(function)
374 throw std::runtime_error("Not Implemented");
375 }
376
377 signal_t getSignalAtCoord(const coord_t *coords, const Mantid::API::MDNormalization &normalization) const override {
378 UNUSED_ARG(coords);
379 UNUSED_ARG(normalization);
380 throw std::runtime_error("Not Implemented");
381 }
382
384 const Mantid::API::MDNormalization &normalization) const override {
385 UNUSED_ARG(coords);
386 UNUSED_ARG(normalization);
387 throw std::runtime_error("Not Implemented");
388 }
389
390 void setMDMasking(std::unique_ptr<Mantid::Geometry::MDImplicitFunction> maskingRegion) override {
391 UNUSED_ARG(maskingRegion);
392 throw std::runtime_error("Not Implemented");
393 }
394
395 void clearMDMasking() override { throw std::runtime_error("Not Implemented"); }
396
397 SpecialCoordinateSystem getSpecialCoordinateSystem() const override { throw std::runtime_error("Not Implemented"); }
398
399 coord_t getInverseVolume() const override { throw std::runtime_error("Not Implemented"); }
400
401 const signal_t *getSignalArray() const override { throw std::runtime_error("Not Implemented"); }
402
403 const signal_t *getErrorSquaredArray() const override { throw std::runtime_error("Not Implemented"); }
404
405 const signal_t *getNumEventsArray() const override { throw std::runtime_error("Not Implemented"); }
406
407 signal_t *mutableSignalArray() override { throw std::runtime_error("Not Implemented"); }
408
409 signal_t *mutableErrorSquaredArray() override { throw std::runtime_error("Not Implemented"); }
410
411 signal_t *mutableNumEventsArray() override { throw std::runtime_error("Not Implemented"); }
412
413 void setTo(signal_t signal, signal_t errorSquared, signal_t numEvents) override {
414 UNUSED_ARG(signal);
415 UNUSED_ARG(errorSquared);
416 UNUSED_ARG(numEvents);
417 throw std::runtime_error("Not Implemented");
418 }
419
420 Mantid::Kernel::VMD getCenter(size_t linearIndex) const override {
421 UNUSED_ARG(linearIndex);
422 throw std::runtime_error("Not Implemented");
423 }
424
425 void setSignalAt(size_t index, signal_t value) override {
428 throw std::runtime_error("Not Implemented");
429 }
430
431 void setErrorSquaredAt(size_t index, signal_t value) override {
434 throw std::runtime_error("Not Implemented");
435 }
436
437 signal_t getErrorAt(size_t index) const override {
439 throw std::runtime_error("Not Implemented");
440 }
441
442 signal_t getErrorAt(size_t index1, size_t index2) const override {
443 UNUSED_ARG(index1)
444 UNUSED_ARG(index2)
445 throw std::runtime_error("Not Implemented");
446 }
447
448 signal_t getErrorAt(size_t index1, size_t index2, size_t index3) const override {
449 UNUSED_ARG(index1)
450 UNUSED_ARG(index2)
451 UNUSED_ARG(index3)
452 throw std::runtime_error("Not Implemented");
453 }
454
455 signal_t getErrorAt(size_t index1, size_t index2, size_t index3, size_t index4) const override {
456 UNUSED_ARG(index1)
457 UNUSED_ARG(index2)
458 UNUSED_ARG(index3)
459 UNUSED_ARG(index4)
460 throw std::runtime_error("Not Implemented");
461 }
462
463 signal_t getSignalAt(size_t index) const override {
465 throw std::runtime_error("Not Implemented");
466 }
467
468 signal_t getSignalAt(size_t index1, size_t index2) const override {
469 UNUSED_ARG(index1)
470 UNUSED_ARG(index2)
471 throw std::runtime_error("Not Implemented");
472 }
473
474 signal_t getSignalAt(size_t index1, size_t index2, size_t index3) const override {
475 UNUSED_ARG(index1)
476 UNUSED_ARG(index2)
477 UNUSED_ARG(index3)
478 throw std::runtime_error("Not Implemented");
479 }
480
481 signal_t getSignalAt(size_t index1, size_t index2, size_t index3, size_t index4) const override {
482 UNUSED_ARG(index1)
483 UNUSED_ARG(index2)
484 UNUSED_ARG(index3)
485 UNUSED_ARG(index4)
486 throw std::runtime_error("Not Implemented");
487 }
488
489 signal_t getSignalNormalizedAt(size_t index) const override {
491 throw std::runtime_error("Not Implemented");
492 }
493
494 signal_t getSignalNormalizedAt(size_t index1, size_t index2) const override {
495 UNUSED_ARG(index1)
496 UNUSED_ARG(index2)
497 throw std::runtime_error("Not Implemented");
498 }
499
500 signal_t getSignalNormalizedAt(size_t index1, size_t index2, size_t index3) const override {
501 UNUSED_ARG(index1)
502 UNUSED_ARG(index2)
503 UNUSED_ARG(index3)
504 throw std::runtime_error("Not Implemented");
505 }
506
507 signal_t getSignalNormalizedAt(size_t index1, size_t index2, size_t index3, size_t index4) const override {
508 UNUSED_ARG(index1)
509 UNUSED_ARG(index2)
510 UNUSED_ARG(index3)
511 UNUSED_ARG(index4)
512 throw std::runtime_error("Not Implemented");
513 }
514
515 signal_t getErrorNormalizedAt(size_t index) const override {
517 throw std::runtime_error("Not Implemented");
518 }
519
520 signal_t getErrorNormalizedAt(size_t index1, size_t index2) const override {
521 UNUSED_ARG(index1)
522 UNUSED_ARG(index2)
523 throw std::runtime_error("Not Implemented");
524 }
525
526 signal_t getErrorNormalizedAt(size_t index1, size_t index2, size_t index3) const override {
527 UNUSED_ARG(index1)
528 UNUSED_ARG(index2)
529 UNUSED_ARG(index3)
530 throw std::runtime_error("Not Implemented");
531 }
532
533 signal_t getErrorNormalizedAt(size_t index1, size_t index2, size_t index3, size_t index4) const override {
534 UNUSED_ARG(index1)
535 UNUSED_ARG(index2)
536 UNUSED_ARG(index3)
537 UNUSED_ARG(index4)
538 throw std::runtime_error("Not Implemented");
539 }
540
541 signal_t &errorSquaredAt(size_t index) override {
543 throw std::runtime_error("Not Implemented");
544 }
545
546 signal_t &signalAt(size_t index) override {
548 throw std::runtime_error("Not Implemented");
549 }
550
551 size_t getLinearIndex(size_t index1, size_t index2) const override {
552 UNUSED_ARG(index1)
553 UNUSED_ARG(index2)
554 throw std::runtime_error("Not Implemented");
555 }
556
557 size_t getLinearIndex(size_t index1, size_t index2, size_t index3) const override {
558 UNUSED_ARG(index1)
559 UNUSED_ARG(index2)
560 UNUSED_ARG(index3)
561 throw std::runtime_error("Not Implemented");
562 }
563
564 size_t getLinearIndex(size_t index1, size_t index2, size_t index3, size_t index4) const override {
565 UNUSED_ARG(index1)
566 UNUSED_ARG(index2)
567 UNUSED_ARG(index3)
568 UNUSED_ARG(index4)
569 throw std::runtime_error("Not Implemented");
570 }
571
574 UNUSED_ARG(start)
575 UNUSED_ARG(end)
577 throw std::runtime_error("Not Implemented");
578 }
579
580 double &operator[](const size_t &index) override {
582 throw std::runtime_error("Not Implemented");
583 }
584
585 void setCoordinateSystem(const SpecialCoordinateSystem coordinateSystem) override {
586 UNUSED_ARG(coordinateSystem)
587 throw std::runtime_error("Not Implemented");
588 }
589
590 void setDisplayNormalization(const Mantid::API::MDNormalization &preferredNormalization) override {
591 UNUSED_ARG(preferredNormalization);
592 throw std::runtime_error("Not Implemented");
593 }
594
595 size_t getMemorySize() const override { throw std::runtime_error("Not Implemented"); }
596
597 const std::string id() const override { throw std::runtime_error("Not Implemented"); }
598 const std::string &getName() const override { throw std::runtime_error("Not Implemented"); }
599 bool threadSafe() const override { throw std::runtime_error("Not Implemented"); }
600 const std::string toString() const override { throw std::runtime_error("Not Implemented"); }
602 const MDHistoDimension_sptr &dimZ) {
603 std::vector<IMDDimension_sptr> dimensions{dimX, dimY, dimZ};
604 initGeometry(dimensions);
605 }
606
607private:
608 IMDHistoWorkspace *doClone() const override { throw std::runtime_error("Not Implemented"); }
609 IMDHistoWorkspace *doCloneEmpty() const override { throw std::runtime_error("Not Implemented"); }
610};
611
613 size_t blocksize() const override {
614 if (getSpectrum(0).dataY().size() == getSpectrum(1).dataY().size())
615 return getSpectrum(0).dataY().size();
616 else
617 throw std::length_error("Mismatched bins sizes");
618
619 return 0;
620 }
621};
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:48
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, const MantidVec &, 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).
virtual MantidVec & dataY()=0
virtual const MantidVec & readY() const
Deprecated, use y() instead. Returns the y data const.
Definition ISpectrum.cpp:42
void setCounts(T &&...data) &
Definition ISpectrum.h:146
virtual void copyDataInto(DataObjects::EventList &) const
Override in child classes for polymorphic copying of data.
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.
virtual MantidVec & dataY(const std::size_t index)
Deprecated, use mutableY() instead. Returns the y data.
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:55
const MantidVec & dataX() const override
Definition FakeObjects.h:73
const MantidVec & readDx() const override
Definition FakeObjects.h:79
void setX(const Mantid::Kernel::cow_ptr< Mantid::HistogramData::HistogramX > &X) override
Definition FakeObjects.h:71
MantidVec & dataX() override
Definition FakeObjects.h:72
Mantid::Kernel::cow_ptr< Mantid::HistogramData::HistogramX > ptrX() const override
Definition FakeObjects.h:75
void clearData() override
Mask the spectrum to this value.
Definition FakeObjects.h:90
MantidVec & dataE() override
Definition FakeObjects.h:82
SpectrumTester(Mantid::HistogramData::Histogram::XMode xmode, Mantid::HistogramData::Histogram::YMode ymode)
Definition FakeObjects.h:57
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:69
Mantid::HistogramData::Histogram & mutableHistogramRef() override
MantidVec & dataDx() override
Definition FakeObjects.h:77
const MantidVec & readX() const override
Definition FakeObjects.h:74
void copyDataInto(SpectrumTester &other) const override
Override in child classes for polymorphic copying of data.
Mantid::HistogramData::Histogram m_histogram
Definition FakeObjects.h:99
const MantidVec & dataE() const override
Definition FakeObjects.h:85
const MantidVec & dataDx() const override
Definition FakeObjects.h:78
SpectrumTester(const specnum_t specNo, Mantid::HistogramData::Histogram::XMode xmode, Mantid::HistogramData::Histogram::YMode ymode)
Definition FakeObjects.h:62
MantidVec & dataY() override
Definition FakeObjects.h:81
const MantidVec & dataY() const override
Definition FakeObjects.h:84
size_t getMemorySize() const override
Definition FakeObjects.h:87
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:233
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:231
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.