42#include "MantidHistogramData/HistogramBuilder.h"
43#include "MantidHistogramData/HistogramDx.h"
44#include "MantidHistogramData/LinearGenerator.h"
45#include "MantidIndexing/IndexInfo.h"
67using Mantid::Types::Core::DateAndTime;
68using Mantid::Types::Event::TofEvent;
72 return baseComponentInfo.
componentID(baseComponentInfo.root());
79 : peakCentre(peakCentre_),
sigma(sigma_),
height(height_), fitStatus(fitStatus_) {}
83 : workspaceIndex(
index), peakCentre(peakCentre_),
sigma(sigma_),
height(height_), fitStatus(fitStatus_) {}
89void removeWS(
const std::string &
name) { Mantid::API::AnalysisDataService::Instance().remove(
name); }
103template <
typename YType,
typename EType> Histogram
createHisto(
bool isHistogram, YType &&yAxis, EType &&eAxis) {
106 const size_t yValsSize = yAxis.size();
108 BinEdges xAxis(yValsSize + 1, LinearGenerator(1, 1));
109 Histogram histo{std::move(xAxis), std::forward<YType>(yAxis), std::forward<EType>(eAxis)};
112 Points xAxis(yValsSize, LinearGenerator(1, 1));
113 Histogram pointsHisto{std::move(xAxis), std::forward<YType>(yAxis), std::forward<EType>(eAxis)};
120 MersenneTwister randomGen(DateAndTime::getCurrentTime().nanoseconds(), 0, std::numeric_limits<int>::max());
122 auto randFunc = [&randomGen] {
return randomGen.
nextValue(); };
123 Counts counts(size, randFunc);
124 CountStandardDeviations errorVals(size, randFunc);
126 auto retVal = std::make_shared<Workspace2D>();
127 retVal->initialize(1,
createHisto(isHisto, counts, errorVals));
132 Counts yVals(size,
value);
133 CountStandardDeviations errVals(size,
error);
135 auto retVal = std::make_shared<Workspace2D>();
136 retVal->initialize(1,
createHisto(isHisto, yVals, errVals));
143 auto dx1 = Kernel::make_cow<HistogramData::HistogramDx>(size, xError);
144 ws->setSharedDx(0, dx1);
149 BinEdges xVals(size + 1, LinearGenerator(1, 1));
151 CountStandardDeviations errVals(size);
153 auto retVal = std::make_shared<Workspace2D>();
154 retVal->initialize(1,
createHisto(isHisto, yVals, errVals));
170 for (
int workspaceIndex = 0; workspaceIndex < nhist; workspaceIndex++) {
171 std::vector<double> yValues(numBoundaries,
static_cast<double>(workspaceIndex));
172 out->mutableY(workspaceIndex) = yValues;
181 auto newAxis = std::make_unique<NumericAxis>(nHist);
182 auto newAxisRaw = newAxis.get();
183 outputWS->replaceAxis(1, std::move(newAxis));
184 newAxisRaw->unit() = std::make_shared<Units::Degrees>();
185 for (
int i = 0; i < nHist; ++i) {
186 newAxisRaw->setValue(i, i + 1);
207 const std::set<int64_t> &maskedWorkspaceIndices,
double xVal,
double yVal,
208 double eVal,
bool hasDx =
false) {
209 auto x1 = Kernel::make_cow<HistogramData::HistogramX>(isHist ? nBins + 1 : nBins, LinearGenerator(xVal, 1.0));
210 Counts y1(nBins, yVal);
211 CountStandardDeviations e1(nBins, eVal);
212 auto dx = Kernel::make_cow<HistogramData::HistogramDx>(nBins, yVal);
213 auto retVal = std::make_shared<Workspace2D>();
214 retVal->initialize(nHist,
createHisto(isHist, y1, e1));
215 for (
int i = 0; i < nHist; i++) {
216 retVal->setSharedX(i, x1);
218 retVal->setSharedDx(i, dx);
219 retVal->getSpectrum(i).setDetectorID(i);
220 retVal->getSpectrum(i).setSpectrumNo(i);
222 if (maskedWorkspaceIndices.size() > 0) {
223 retVal =
maskSpectra(retVal, maskedWorkspaceIndices);
229 double yVal,
double eVal,
double dxVal,
230 const std::set<int64_t> &maskedWorkspaceIndices) {
232 PointStandardDeviations dx1(nBins, dxVal);
233 for (
int i = 0; i < nHist; i++) {
234 ws->setPointStandardDeviations(i, dx1);
240 const std::set<int64_t> &maskedWorkspaceIndices,
bool hasDx) {
245 const std::set<int64_t> &maskedWorkspaceIndices,
bool hasDx) {
250 const auto nhist =
static_cast<int>(
workspace->getNumberHistograms());
251 if (
workspace->getInstrument()->nelements() == 0) {
253 auto instrument = std::make_shared<Instrument>();
256 std::string xmlShape =
"<sphere id=\"shape\"> ";
257 xmlShape += R
"(<centre x="0.0" y="0.0" z="0.0" /> )";
258 xmlShape += "<radius val=\"0.05\" /> ";
259 xmlShape +=
"</sphere>";
260 xmlShape +=
"<algebra val=\"shape\" /> ";
264 for (
int i = 0; i < nhist; ++i) {
267 instrument->add(det);
268 instrument->markAsDetector(det);
273 workspace->setIndexInfo(Indexing::IndexInfo(nhist));
276 auto &spectrumInfo =
workspace->mutableSpectrumInfo();
277 for (
const auto index : maskedWorkspaceIndices)
278 spectrumInfo.setMasked(
index,
true);
286 auto group = std::make_shared<WorkspaceGroup>();
287 AnalysisDataService::Instance().add(stem,
group);
288 for (
int i = 0; i < nEntries; ++i) {
290 std::ostringstream os;
291 os << stem <<
"_" << i;
292 AnalysisDataService::Instance().add(os.str(), ws);
293 group->add(os.str());
306 MantidVec x_data{100., 200., 300., 400.};
317 x_data2 = {200., 400.};
320 }
else if (version == 2) {
323 }
else if (version == 3) {
325 x_data2 = {200., 500., 600.};
326 }
else if (version == 4) {
328 y_data = {2., 2., 2.};
329 e_data = {2., 2., 2.};
334 Mantid::HistogramData::HistogramBuilder builder;
335 builder.setX(x_data);
336 builder.setY(y_data);
337 builder.setE(e_data);
338 raggedWS->setHistogram(0, builder.build());
340 Mantid::HistogramData::HistogramBuilder builder2;
341 builder2.setX(x_data2);
342 builder2.setY(y_data2);
343 builder2.setE(e_data2);
344 raggedWS->setHistogram(1, builder2.build());
353 BinEdges
x(numVals + 1, LinearGenerator(x0, deltax));
354 Counts
y(numVals, 2);
355 CountStandardDeviations e(numVals, M_SQRT2);
356 return create<Workspace2D>(nhist, Histogram(
x,
y, e));
363 Points
x(numVals, LinearGenerator(x0, deltax));
364 Counts
y(numVals, 2);
365 CountStandardDeviations e(numVals, M_SQRT2);
366 return create<Workspace2D>(nhist, Histogram(
x,
y, e));
377 BinEdges
x(xBoundaries, xBoundaries + numBoundaries);
378 const int numBins = numBoundaries - 1;
379 Counts
y(numBins, 2);
380 CountStandardDeviations e(numBins, M_SQRT2);
381 auto dx = Kernel::make_cow<HistogramData::HistogramDx>(numBins, LinearGenerator(0.1, .1));
382 auto retVal = std::make_shared<Workspace2D>();
384 for (
int i = 0; i < nhist; i++) {
385 retVal->setBinEdges(i,
x);
387 retVal->setSharedDx(i, dx);
400 const size_t seed(12345);
402 for (
size_t iSpec = 0; iSpec < ws->getNumberHistograms(); iSpec++) {
403 auto &mutableY = ws->mutableY(iSpec);
404 auto &mutableE = ws->mutableE(iSpec);
405 for (
size_t i = 0; i < mutableY.size(); i++) {
406 mutableY[i] += noise * randGen.
nextValue();
407 mutableE[i] += noise;
419 bool isHistogram,
const std::string &instrumentName,
bool hasDx) {
420 if (includeMonitors && nhist < 2) {
421 throw std::invalid_argument(
"Attempting to 2 include monitors for a "
422 "workspace with fewer than 2 histograms");
432 space->setTitle(
"Test histogram");
433 space->getAxis(0)->setUnit(
"TOF");
434 space->setYUnit(
"Counts");
446 size_t startTime,
size_t firstInterval,
447 bool includeMonitors,
bool startYNegative,
449 const std::string &instrumentName) {
456 std::vector<double> timeRanges;
457 for (
size_t i = 0; i < nTimeIndexes; ++i) {
458 timeRanges.emplace_back(
double(i + firstInterval));
461 builder.setTimeRanges(DateAndTime(
int(startTime), 0), timeRanges);
463 return builder.buildWorkspace();
473 const int nbins,
const double x0,
const double deltax,
474 const std::string &instrumentName,
475 const std::string &xunit) {
477 inputWorkspace->getAxis(0)->unit() = UnitFactory::Instance().create(xunit);
482 return inputWorkspace;
498 const std::string &instrumentName) {
502 ws->setInstrument(inst);
503 ws->getAxis(0)->setUnit(
"dSpacing");
504 for (
size_t wi = 0; wi < ws->getNumberHistograms(); wi++) {
505 ws->getSpectrum(wi).setDetectorID(
detid_t(numPixels * numPixels + wi));
506 ws->getSpectrum(wi).setSpectrumNo(
specnum_t(wi));
527 ws->setInstrument(inst);
530 const auto &xVals = ws->x(0);
531 const size_t xSize = xVals.size();
532 auto ax0 = std::make_unique<NumericAxis>(xSize);
533 ax0->setUnit(
"dSpacing");
534 for (
size_t i = 0; i < xSize; i++) {
535 ax0->setValue(i, xVals[i]);
537 ws->replaceAxis(0, std::move(ax0));
540 const auto detIds = inst->getDetectorIDs();
541 for (
int wi = 0; wi < static_cast<int>(ws->getNumberHistograms()); ++wi) {
542 ws->getSpectrum(wi).clearDetectorIDs();
544 ws->getSpectrum(wi).clear(
true);
545 ws->getSpectrum(wi).setDetectorID(detIds[wi]);
564 ws->setInstrument(inst);
567 const auto &xVals = ws->x(0);
568 const size_t xSize = xVals.size();
569 auto ax0 = std::make_unique<NumericAxis>(xSize);
570 ax0->setUnit(
"dSpacing");
571 for (
size_t i = 0; i < xSize; i++) {
572 ax0->setValue(i, xVals[i]);
574 ws->replaceAxis(0, std::move(ax0));
577 const auto detIds = inst->getDetectorIDs();
578 for (
int wi = 0; wi < static_cast<int>(ws->getNumberHistograms()); ++wi) {
579 ws->getSpectrum(wi).clearDetectorIDs();
581 ws->getSpectrum(wi).clear(
true);
582 ws->getSpectrum(wi).setDetectorID(detIds[wi]);
589 const int DETECTORS_PER_BANK(9);
591 V3D srcPos(0., 0., -10.), samplePos;
595 ws->setInstrument(inst);
597 std::vector<detid_t> detectorIds = inst->getDetectorIDs();
600 assert(detectorIds.size() == ws->getNumberHistograms());
603 for (
size_t wi = 0; wi < ws->getNumberHistograms(); wi++) {
604 ws->getSpectrum(wi).clearDetectorIDs();
606 ws->getSpectrum(wi).clear(
true);
607 ws->getSpectrum(wi).setDetectorID(detectorIds[wi]);
622 const double deltaX) {
648 const V3D &slit2Pos,
const double vg1,
649 const double vg2,
const V3D &sourcePos,
650 const V3D &monitorPos,
const V3D &samplePos,
651 const V3D &detectorPos,
const int nBins,
652 const double deltaX) {
654 instrument->setReferenceFrame(
655 std::make_shared<ReferenceFrame>(PointingAlong::Y, PointingAlong::X, Handedness::Left,
"0,0,0"));
668 pmap.addDouble(slit1,
"vertical gap", vg1);
669 pmap.addDouble(slit2,
"vertical gap", vg2);
671 workspace->getSpectrum(0).setDetectorID(2);
672 workspace->getSpectrum(1).setDetectorID(1);
696 const double startX,
const double detSize,
const V3D &slit1Pos,
const V3D &slit2Pos,
const double vg1,
697 const double vg2,
const V3D &sourcePos,
const V3D &monitorPos,
const V3D &samplePos,
const V3D &detectorCenterPos,
698 const int nSpectra,
const int nBins,
const double deltaX) {
700 instrument->setReferenceFrame(
701 std::make_shared<ReferenceFrame>(PointingAlong::Y , PointingAlong::X , Handedness::Left,
"0,0,0"));
708 const double minY = detectorCenterPos.
Y() - detSize * (nDet - 1) / 2.;
709 for (
int i = 0; i < nDet; ++i) {
710 const double y = minY + i * detSize;
711 const V3D pos{detectorCenterPos.
X(),
y, detectorCenterPos.
Z()};
720 pmap.addDouble(slit1,
"vertical gap", vg1);
721 pmap.addDouble(slit2,
"vertical gap", vg2);
722 for (
int i = 0; i <
nSpectra; ++i) {
723 workspace->getSpectrum(i).setDetectorID(i + 1);
729 const V3D &sourcePosition,
const std::vector<V3D> &detectorPositions) {
731 instrument->setReferenceFrame(std::make_shared<ReferenceFrame>(
Y,
X,
Left,
"0,0,0"));
736 for (
int i = 0; i < static_cast<int>(detectorPositions.size()); ++i) {
737 std::stringstream buffer;
738 buffer <<
"detector_" << i;
742 workspace->getSpectrum(i).addDetectorID(i);
749 return std::make_shared<WorkspaceSingleValue>(
value, sqrt(
value));
753 return std::make_shared<WorkspaceSingleValue>(
value,
error);
759 ew->mutableRun().integrateProtonCharge();
781 int eventPattern,
int start_at_pixelID) {
783 DateAndTime(
"2010-01-01T00:00:00"));
790 double binDelta,
int eventPattern,
int start_at_pixelID,
791 DateAndTime run_start) {
796 auto retVal = std::make_shared<EventWorkspace>();
797 retVal->initialize(numPixels, 1, 1);
799 MersenneTwister randomGen(DateAndTime::getCurrentTime().nanoseconds(), 0, std::numeric_limits<int>::max());
803 size_t workspaceIndex = 0;
804 for (
int pix = start_at_pixelID + 0; pix < start_at_pixelID + numPixels; pix++) {
805 EventList &el = retVal->getSpectrum(workspaceIndex);
810 if (eventPattern == 1)
811 el += TofEvent((pix + i + 0.5) * binDelta, run_start +
double(i));
812 else if (eventPattern == 2)
814 el += TofEvent((i + 0.5) * binDelta, run_start +
double(i));
815 el += TofEvent((i + 0.5) * binDelta, run_start +
double(i));
816 }
else if (eventPattern == 3)
818 el += TofEvent((i + 0.5) * binDelta, run_start +
double(i));
819 }
else if (eventPattern == 4)
822 for (
int q = 0; q < pix; q++)
823 el += TofEvent((i + 0.5) * binDelta, run_start +
double(i));
824 }
else if (eventPattern == 5)
826 el += TofEvent(
static_cast<double>(randomGen.
nextValue()), run_start +
double(i));
833 retVal->setAllX(BinEdges(numBins, LinearGenerator(x0, binDelta)));
842 double binDelta,
double xOffset) {
844 auto retVal = std::make_shared<EventWorkspace>();
845 retVal->initialize(groups.size(), 2, 1);
847 for (
size_t g = 0; g < groups.size(); g++) {
848 retVal->getSpectrum(g).clearDetectorIDs();
849 std::vector<int> dets = groups[g];
850 for (
auto det : dets) {
851 for (
int i = 0; i < numBins; i++)
852 retVal->getSpectrum(g) += TofEvent((i + 0.5) * binDelta, 1);
853 retVal->getSpectrum(g).addDetectorID(det);
858 retVal->setAllX(BinEdges(numBins, LinearGenerator(0.0, binDelta)));
860 for (
size_t g = 0; g < groups.size(); g++) {
862 const double x0 = xOffset *
static_cast<double>(g);
863 retVal->setSharedX(g, make_cow<HistogramX>(numBins, LinearGenerator(x0, binDelta)));
879 auto retVal = std::make_shared<EventWorkspace>();
880 retVal->initialize(numpixels, numbins, numbins - 1);
883 auto pAxis0 = std::make_unique<NumericAxis>(numbins);
886 HistogramData::BinEdges axis(numbins, LinearGenerator(0.0, bin_delta));
887 for (
int i = 0; i < static_cast<int>(numbins); ++i) {
888 pAxis0->setValue(i, axis[i]);
890 pAxis0->setUnit(
"TOF");
892 MersenneTwister randomGen(DateAndTime::getCurrentTime().nanoseconds(), 0, std::numeric_limits<int>::max());
894 for (
size_t i = 0; i < numpixels; i++) {
897 for (std::size_t ie = 0; ie < numbins; ie++) {
899 events += TofEvent(
static_cast<double>(randomGen.
nextValue()),
static_cast<int64_t
>(randomGen.
nextValue()));
903 retVal->setAllX(axis);
904 retVal->replaceAxis(0, std::move(pAxis0));
917 for (
int g = 0; g < static_cast<int>(numHist); g++) {
918 auto &spec = retVal->getSpectrum(g);
919 for (
int i = 1; i <= 9; i++)
920 spec.addDetectorID(g * 9 + i);
921 spec.setSpectrumNo(g + 1);
923 return std::dynamic_pointer_cast<MatrixWorkspace>(retVal);
929 size_t numHist = RootOfNumHist * RootOfNumHist;
932 for (
int g = 0; g < static_cast<int>(numHist); g++) {
933 auto &spec = retVal->getSpectrum(g);
934 spec.addDetectorID(g + 1);
935 for (
int i = 1; i <= 9; i++)
936 spec.addDetectorID(g * 9 + i);
937 spec.setSpectrumNo(g + 1);
939 return std::dynamic_pointer_cast<MatrixWorkspace>(retVal);
945 const size_t numHists = ws->getNumberHistograms();
946 for (
size_t i = 0; i < numHists; ++i) {
947 std::cout <<
"Histogram " << i <<
" = ";
948 const auto &
y = ws->y(i);
949 for (
size_t j = 0; j <
y.size(); ++j) {
950 std::cout <<
y[j] <<
" ";
960 const size_t numHists = ws->getNumberHistograms();
961 for (
size_t i = 0; i < numHists; ++i) {
962 std::cout <<
"Histogram " << i <<
" = ";
963 const auto &
x = ws->x(i);
964 for (
size_t j = 0; j <
x.size(); ++j) {
965 std::cout <<
x[j] <<
" ";
974 const size_t numHists = ws->getNumberHistograms();
975 for (
size_t i = 0; i < numHists; ++i) {
976 std::cout <<
"Histogram " << i <<
" = ";
977 const auto &e = ws->e(i);
978 for (
size_t j = 0; j < e.size(); ++j) {
979 std::cout << e[j] <<
" ";
995 tsp->
addValue(
"2011-05-24T00:00:00", val);
1009 ws->mutableSample().setOrientedLattice(std::make_unique<OrientedLattice>(a, b, c, 90., 90., 90.));
1026 ws->mutableRun().setGoniometer(gm,
true);
1031 bool has_oriented_lattice) {
1032 auto rHist =
static_cast<size_t>(std::sqrt(
static_cast<double>(numPixels)));
1033 while (rHist * rHist < numPixels)
1037 auto pAxis0 = std::make_unique<NumericAxis>(numBins);
1038 for (
size_t i = 0; i < numBins; i++) {
1039 double dE = -1.0 +
static_cast<double>(i) * 0.8;
1040 pAxis0->setValue(i, dE);
1042 pAxis0->setUnit(
"DeltaE");
1043 ws->replaceAxis(0, std::move(pAxis0));
1044 if (has_oriented_lattice) {
1045 ws->mutableSample().setOrientedLattice(std::make_unique<OrientedLattice>(1, 1, 1, 90., 90., 90.));
1052 ws->mutableRun().setGoniometer(gm,
true);
1068 const std::vector<double> &polar,
1069 const std::vector<double> &azimutal,
size_t numBins,
1070 double Emin,
double Emax,
double Ei) {
1072 std::set<int64_t> maskedWorkspaceIndices;
1073 size_t numPixels = L2.size();
1081 for (
int g = 0; g < static_cast<int>(numPixels); g++) {
1082 auto &spec = ws->getSpectrum(g);
1085 spec.setDetectorID(g + 1);
1088 spec.setSpectrumNo(g + 1);
1094 const double dE = (Emax - Emin) /
static_cast<double>(numBins);
1095 for (
size_t j = 0; j < numPixels; j++) {
1096 std::vector<double> E_transfer;
1097 E_transfer.reserve(numBins);
1098 for (
size_t i = 0; i <= numBins; i++) {
1099 E_transfer.emplace_back(Emin +
static_cast<double>(i) * dE);
1101 ws->mutableX(j) = E_transfer;
1105 auto pAxis0 = std::make_unique<NumericAxis>(numBins);
1106 const auto &E_transfer = ws->x(0);
1107 for (
size_t i = 0; i < numBins; i++) {
1108 double E = 0.5 * (E_transfer[i] + E_transfer[i + 1]);
1109 pAxis0->setValue(i, E);
1112 pAxis0->setUnit(
"DeltaE");
1114 ws->replaceAxis(0, std::move(pAxis0));
1117 ws->mutableSample().setOrientedLattice(std::make_unique<OrientedLattice>(1, 1, 1, 90., 90., 90.));
1128 ws->mutableRun().setGoniometer(gm,
true);
1146 outputWS->initialize(sourceWS->getInstrument()->getDetectorIDs(
true).size(), 1, 1);
1149 outputWS->getAxis(0)->unit() = UnitFactory::Instance().create(
"TOF");
1150 outputWS->setYUnit(
"Counts");
1151 outputWS->setTitle(
"Empty_Title");
1154 int runnumber = sourceWS->getRunNumber();
1155 outputWS->mutableRun().addProperty(
"run_number", runnumber);
1157 std::string runstartstr = sourceWS->run().getProperty(
"run_start")->value();
1158 outputWS->mutableRun().addProperty(
"run_start", runstartstr);
1163 loadInst->setPropertyValue(
"InstrumentName", sourceWS->getInstrumentName());
1166 loadInst->executeAsChildAlg();
1169 outputWS->populateInstrumentParameters();
1174 outputWS->getInstrument()->getDetectors(detector_map);
1177 size_t workspaceIndex = 0;
1178 const auto &detectorInfo = outputWS->detectorInfo();
1179 for (
auto it = detector_map.begin(); it != detector_map.end(); ++it) {
1180 if (!detectorInfo.isMonitor(detectorInfo.indexOf(it->first))) {
1181 auto &spec = outputWS->getSpectrum(workspaceIndex);
1182 spec.addDetectorID(it->first);
1184 spec.setSpectrumNo(
specnum_t(workspaceIndex + 1));
1185 workspaceIndex += 1;
1195 Mantid::API::AnalysisDataService::Instance().add(
"rebinTest", outputWS);
1198 std::vector<double> qbins{0.0, 1.0, 4.0};
1199 std::vector<double> qaxis;
1203 const size_t numHist = numY - 1;
1204 const size_t numX = 7;
1205 outputWS->initialize(numHist, numX, numX - 1);
1208 outputWS->getAxis(0)->unit() = UnitFactory::Instance().create(
"DeltaE");
1209 outputWS->setYUnit(
"Counts");
1210 outputWS->setTitle(
"Empty_Title");
1213 HistogramData::BinEdges x1{-3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0};
1216 auto verticalAxis = std::make_unique<NumericAxis>(numY);
1219 for (
size_t i = 0; i < numHist; ++i) {
1220 outputWS->setBinEdges(i, x1);
1221 verticalAxis->setValue(i, qaxis[i]);
1224 verticalAxis->setValue(numHist, qaxis[numHist]);
1227 verticalAxis->unit() = UnitFactory::Instance().create(
"MomentumTransfer");
1228 verticalAxis->title() =
"|Q|";
1229 outputWS->replaceAxis(1, std::move(verticalAxis));
1232 outputWS->getAxis(0)->title() =
"Energy transfer";
1260 outputWS->finalize();
1263 for (
size_t i = 0; i < numHist; ++i) {
1264 auto &mutableE = outputWS->mutableE(i);
1265 for (
size_t j = 0; j < numX - 1; ++j) {
1266 mutableE[j] = std::sqrt(mutableE[j]);
1269 outputWS->setSqrdErrors(
false);
1286template <
typename T>
1289 for (
const double val : values) {
1290 destination[startingIndex +
index] = val;
1296 auto peaksWS = std::make_shared<PeaksWorkspace>();
1298 peaksWS->setInstrument(inst);
1300 for (
int i = 0; i < numPeaks; ++i) {
1301 Peak peak(inst, i, i + 0.5);
1302 peaksWS->addPeak(peak);
1305 if (createOrientedLattice) {
1306 peaksWS->mutableSample().setOrientedLattice(std::make_unique<OrientedLattice>());
1314 throw std::invalid_argument(
"UB matrix is not 3x3");
1318 peaksWS->mutableSample().getOrientedLattice().setUB(ubMat);
1323 const bool createOrientedLattice) {
1324 auto peaksWS = std::make_shared<LeanElasticPeaksWorkspace>();
1326 for (
int i = 0; i < numPeaks; ++i) {
1327 Peak peak(inst, i, i + 0.5);
1329 peaksWS->addPeak(lpeak);
1332 if (createOrientedLattice) {
1333 peaksWS->mutableSample().setOrientedLattice(std::make_unique<OrientedLattice>());
1341 throw std::invalid_argument(
"UB matrix is not 3x3");
1345 peaksWS->mutableSample().getOrientedLattice().setUB(ubMat);
1349void create2DAngles(std::vector<double> &L2, std::vector<double> &polar, std::vector<double> &azim,
size_t nPolar,
1350 size_t nAzim,
double polStart,
double polEnd,
double azimStart,
double azimEnd) {
1351 size_t nDet = nPolar * nAzim;
1352 L2.resize(nDet, 10);
1356 double dPolar = (polEnd - polStart) /
static_cast<double>(nDet - 1);
1357 double dAzim = (azimEnd - azimEnd) /
static_cast<double>(nDet - 1);
1358 for (
size_t i = 0; i < nPolar; i++) {
1359 for (
size_t j = 0; j < nAzim; j++) {
1360 polar[i * nPolar + j] = polStart + dPolar *
static_cast<double>(i);
1361 azim[i * nPolar + j] = azimStart + dAzim *
static_cast<double>(j);
1368 auto wsIndexColumn = ws->addColumn(
"int",
"WorkspaceIndex");
1369 auto centreColumn = ws->addColumn(
"double",
"PeakCentre");
1370 auto centreErrorColumn = ws->addColumn(
"double",
"PeakCentreError");
1371 auto sigmaColumn = ws->addColumn(
"double",
"Sigma");
1372 auto sigmaErrorColumn = ws->addColumn(
"double",
"SigmaError");
1373 auto heightColumn = ws->addColumn(
"double",
"Height");
1374 auto heightErrorColumn = ws->addColumn(
"double",
"HeightError");
1375 auto chiSqColumn = ws->addColumn(
"double",
"chiSq");
1376 auto statusColumn = ws->addColumn(
"str",
"FitStatus");
1377 for (
size_t i = 0; i != rows.size(); ++i) {
1378 const auto &row = rows[i];
1379 if (row.workspaceIndex < 0) {
1380 wsIndexColumn->cell<
int>(i) =
static_cast<int>(i);
1382 wsIndexColumn->cell<
int>(i) = row.workspaceIndex;
1384 centreColumn->cell<
double>(i) = row.peakCentre;
1385 centreErrorColumn->cell<
double>(i) = row.peakCentreError;
1386 sigmaColumn->cell<
double>(i) = row.sigma;
1387 sigmaErrorColumn->cell<
double>(i) = row.sigmaError;
1388 heightColumn->cell<
double>(i) = row.height;
1389 heightErrorColumn->cell<
double>(i) = row.heightError;
1390 chiSqColumn->cell<
double>(i) = row.chiSq;
1396 int maskedWorkspaceIndex,
int maskedBinIndex) {
1398 ws->flagMasked(maskedWorkspaceIndex, maskedBinIndex);
1404 const std::string IDF_FILE(
"SNAPLite_Definition.xml");
1407 auto loadEmptyInstr = AlgorithmManager::Instance().createUnmanaged(
"LoadEmptyInstrument");
1408 loadEmptyInstr->initialize();
1409 loadEmptyInstr->setProperty(
"Filename", IDF_FILE);
1410 loadEmptyInstr->setProperty(
"OutputWorkspace", wkspName);
1412 loadEmptyInstr->execute();
1413 if (!loadEmptyInstr->isExecuted())
1414 throw std::runtime_error(
"Failed to execute LoadEmptyInstrument");
1419 ang1Prop->
addValue(DateAndTime(0), ang1);
1421 ang2Prop->
addValue(DateAndTime(0), ang2);
1423 len1Prop->
addValue(DateAndTime(0), 0.045);
1425 len2Prop->
addValue(DateAndTime(0), 0.043);
1428 std::dynamic_pointer_cast<MatrixWorkspace>(AnalysisDataService::Instance().retrieve(wkspName));
1429 wsIn->mutableRun().addProperty(ang1Prop);
1430 wsIn->mutableRun().addProperty(ang2Prop);
1431 wsIn->mutableRun().addProperty(len1Prop);
1432 wsIn->mutableRun().addProperty(len2Prop);
1435 auto loadInstr = AlgorithmManager::Instance().createUnmanaged(
"LoadInstrument");
1436 loadInstr->initialize();
1437 loadInstr->setProperty(
"Workspace", wkspName);
1438 loadInstr->setProperty(
"Filename", IDF_FILE);
1439 loadInstr->setProperty(
"RewriteSpectraMap",
"False");
1440 loadInstr->execute();
1441 if (!loadInstr->isExecuted())
1442 throw std::runtime_error(
"Failed to execute LoadInstrument");
1445 auto xAxis = wsIn->getAxis(0);
1446 xAxis->unit() = Mantid::Kernel::UnitFactory::Instance().create(
"dSpacing");
1451 const std::string &groupingDescr,
const double ang1,
1452 const double ang2) {
1453 const std::string GROUP_WS_NAME =
"tmpGroupingWorkspace_" + groupingAlg +
"_" + groupingDescr;
1459 auto createGroupingAlg = AlgorithmManager::Instance().createUnmanaged(groupingAlg);
1460 createGroupingAlg->initialize();
1461 createGroupingAlg->setProperty(
"OutputWorkspace", GROUP_WS_NAME);
1462 if (groupingAlg ==
"CreateGroupingWorkspace") {
1463 createGroupingAlg->setProperty(
"InputWorkspace", ws);
1464 createGroupingAlg->setProperty(
"GroupDetectorsBy", groupingDescr);
1465 }
else if (groupingAlg ==
"LoadDetectorsGroupingFile") {
1466 createGroupingAlg->setProperty(
"InputWorkspace", ws);
1467 createGroupingAlg->setProperty(
"InputFile", groupingDescr);
1469 throw std::runtime_error(
"Do not know how to create grouping using \"" + groupingAlg +
"\" algorithm");
1471 createGroupingAlg->execute();
1472 if (!createGroupingAlg->isExecuted())
1473 throw std::runtime_error(
"Failed to execute CreateGroupingWorkspace");
1476 auto focusAlg = AlgorithmManager::Instance().createUnmanaged(
"DiffractionFocussing");
1477 focusAlg->initialize();
1478 focusAlg->setProperty(
"InputWorkspace", wkspName);
1479 focusAlg->setProperty(
"OutputWorkspace", wkspName);
1480 focusAlg->setProperty(
"GroupingWorkspace", GROUP_WS_NAME);
1481 focusAlg->execute();
1482 AnalysisDataService::Instance().remove(GROUP_WS_NAME);
1483 if (!focusAlg->isExecuted())
1484 throw std::runtime_error(
"Failed to execute DiffractionFocussing");
1486 return std::dynamic_pointer_cast<MatrixWorkspace>(AnalysisDataService::Instance().retrieve(wkspName));
double value
The value of the point.
IPeaksWorkspace_sptr workspace
std::map< DeltaEMode::Type, std::string > index
#define UNUSED_ARG(x)
Function arguments are sometimes unused in certain implmentations but are required for documentation ...
double lower
lower and upper bounds on the multiplier, if known
Base class from which all concrete algorithm classes should be derived.
virtual std::shared_ptr< Algorithm > createChildAlgorithm(const std::string &name, const double startProgress=-1., const double endProgress=-1., const bool enableLogging=true, const int &version=-1)
Create a Child Algorithm.
This class is shared by a few Workspace types and holds information related to a particular experimen...
Geometry::ComponentInfo const & baseComponentInfo() const
Returns a ComponentInfo for the base (unparametrized) instrument, i.e.
void addDetectorID(const detid_t detID)
Add a detector ID to the set of detector IDs.
void setDetectorID(const detid_t detID)
Clear the list of detector IDs, then add one.
void setSpectrumNo(specnum_t num)
Sets the spectrum number of this spectrum.
void addProperty(Kernel::Property *prop, bool overwrite=false)
Add data to the object in the form of a property.
Helper class for reporting progress from algorithms.
This class stores information regarding an experimental run as a series of log entries.
This class is intended to fulfill the design specified in <https://github.com/mantidproject/documents...
Structure describing a single-crystal peak.
Structure describing a single-crystal peak.
ScanningWorkspaceBuilder : This is a helper class to make it easy to build a scanning workspace (a wo...
const IComponent * componentID(const size_t componentIndex) const
void setPos(double, double, double) override
Set the IComponent position, x, y, z respective to parent (if present)
This class represents a detector - i.e.
Class to represent a particular goniometer setting, which is described by the rotation matrix.
void makeUniversalGoniometer()
Make a default universal goniometer with phi,chi,omega angles according to SNS convention.
base class for Geometric IComponent
Parameter map iterator typedef.
Class originally intended to be used with the DataHandling 'LoadInstrument' algorithm.
std::shared_ptr< CSGObject > createShape(Poco::XML::Element *pElem)
Creates a geometric object from a DOM-element-node pointing to an element whose child nodes contain t...
size_t numRows() const
Return the number of rows in the matrix.
size_t numCols() const
Return the number of columns in the matrix.
This implements the Mersenne Twister 19937 pseudo-random number generator algorithm as a specialzatio...
double nextValue() override
Generate the next random number in the sequence within the given range default range.
OptionalBool : Tri-state bool.
The concrete, templated class for properties.
A specialised Property class for holding a series of time-value pairs.
void addValue(const Types::Core::DateAndTime &time, const TYPE &value)
Add a value to the map using a DateAndTime object.
constexpr double X() const noexcept
Get x.
constexpr double Y() const noexcept
Get y.
constexpr double Z() const noexcept
Get z.
Implements a copy on write data template.
StubAlgorithm(size_t nSteps=100)
Mantid::Geometry::Instrument_sptr createCylInstrumentWithDetInGivenPositions(const std::vector< double > &L2, const std::vector< double > &polar, const std::vector< double > &azim)
create instrument with cylindrical detectors located in specific angular positions
Mantid::Geometry::Instrument_sptr createTestInstrumentCylindrical(int num_banks, const Mantid::Kernel::V3D &sourcePos=Mantid::Kernel::V3D(0.0, 0.0, -10.), const Mantid::Kernel::V3D &samplePos=Mantid::Kernel::V3D(), const double cylRadius=0.004, const double cylHeight=0.0002)
Create an test instrument with n panels of 9 cylindrical detectors, a source and a sample position.
Mantid::Geometry::Instrument_sptr createTestInstrumentRectangular2(int num_banks, int pixels, double pixelSpacing=0.008)
Create an test instrument with n panels of rectangular detectors, pixels*pixels in size,...
Mantid::Geometry::Instrument_sptr createTestInstrumentRectangular(int num_banks, int pixels, double pixelSpacing=0.008, double bankDistanceFromSample=5.0, bool addMonitor=false, const std::string &instrumentName="basic_rect")
Create a test instrument with n panels of rectangular detectors, pixels*pixels in size,...
void addMonitor(Mantid::Geometry::Instrument_sptr &instrument, const Mantid::Kernel::V3D &position, const int ID, const std::string &name)
Adds a monitor to an instrument.
void addSource(Mantid::Geometry::Instrument_sptr &instrument, const Mantid::Kernel::V3D &position, const std::string &name)
Adds a source to an instrument.
void addFullInstrumentToWorkspace(Mantid::API::MatrixWorkspace &workspace, bool includeMonitors, bool startYNegative, const std::string &instrumentName)
void addInstrumentWithGeographicalDetectorsToWorkspace(Mantid::API::MatrixWorkspace &workspace, const int nlat, const int nlong, const double anginc, const std::string &instrumentName)
void addSample(Mantid::Geometry::Instrument_sptr &instrument, const Mantid::Kernel::V3D &position, const std::string &name)
Adds a sample to an instrument.
Mantid::Geometry::Component * addComponent(Mantid::Geometry::Instrument_sptr &instrument, const Mantid::Kernel::V3D &position, const std::string &name)
Adds a component to an instrument.
void addDetector(Mantid::Geometry::Instrument_sptr &instrument, const Mantid::Kernel::V3D &position, const int ID, const std::string &name, Mantid::Geometry::ObjCompAssembly *compAss=nullptr)
Adds a detector to an instrument.
std::shared_ptr< WorkspaceGroup > WorkspaceGroup_sptr
shared pointer to Mantid::API::WorkspaceGroup
std::shared_ptr< ITableWorkspace > ITableWorkspace_sptr
shared pointer to Mantid::API::ITableWorkspace
std::shared_ptr< const MatrixWorkspace > MatrixWorkspace_const_sptr
shared pointer to the matrix workspace base class (const version)
std::shared_ptr< Algorithm > Algorithm_sptr
Typedef for a shared pointer to an Algorithm.
static MatrixWorkspace_sptr createWorkspaceSingleValue(const double &rhsValue)
Creates a temporary single value workspace the error is set to zero.
std::shared_ptr< MatrixWorkspace > MatrixWorkspace_sptr
shared pointer to the matrix workspace base class
std::size_t numEvents(Nexus::File &file, bool &hasTotalCounts, bool &oldNeXusFileNames, const std::string &prefix)
Get the number of events in the currently opened group.
std::shared_ptr< PeaksWorkspace > PeaksWorkspace_sptr
Typedef for a shared pointer to a peaks workspace.
std::shared_ptr< LeanElasticPeaksWorkspace > LeanElasticPeaksWorkspace_sptr
Typedef for a shared pointer to a peaks workspace.
std::shared_ptr< WorkspaceSingleValue > WorkspaceSingleValue_sptr
shared pointer to the WorkspaceSingleValue class
std::shared_ptr< const EventWorkspace > EventWorkspace_const_sptr
shared pointer to a const Workspace2D
std::shared_ptr< Workspace2D > Workspace2D_sptr
shared pointer to Mantid::DataObjects::Workspace2D
std::shared_ptr< RebinnedOutput > RebinnedOutput_sptr
shared pointer to the RebinnedOutput class
std::shared_ptr< EventWorkspace > EventWorkspace_sptr
shared pointer to the EventWorkspace class
std::shared_ptr< Instrument > Instrument_sptr
Shared pointer to an instrument object.
std::size_t MANTID_KERNEL_DLL createAxisFromRebinParams(const std::vector< double > ¶ms, std::vector< double > &xnew, const bool resize_xnew=true, const bool full_bins_only=false, const double xMinHint=std::nan(""), const double xMaxHint=std::nan(""), const bool useReverseLogarithmic=false, const double power=-1)
Creates a new output X array given a 'standard' set of rebinning parameters.
Helper class which provides the Collimation Length for SANS instruments.
int32_t detid_t
Typedef for a detector ID.
std::map< detid_t, Geometry::IDetector_const_sptr > detid2det_map
Typedef of a map from detector ID to detector shared pointer.
std::vector< double > MantidVec
typedef for the data storage used in Mantid matrix workspaces
int32_t specnum_t
Typedef for a spectrum Number.
Mantid::DataObjects::Workspace2D_sptr create2DWorkspaceWhereYIsWorkspaceIndex(int nhist, int numBoundaries)
Create a Workspace2D where the Y value at each bin is == to the workspace index.
Mantid::DataObjects::Workspace2D_sptr create1DWorkspaceConstant(int size, double value, double error, bool isHisto)
void setOrientedLattice(const Mantid::API::MatrixWorkspace_sptr &ws, double a, double b, double c)
Sets the OrientedLattice in the crystal as an crystal with given lattice lengths, angles of 90 deg.
void createInstrumentForWorkspaceWithDistances(const Mantid::API::MatrixWorkspace_sptr &workspace, const Mantid::Kernel::V3D &samplePosition, const Mantid::Kernel::V3D &sourcePosition, const std::vector< Mantid::Kernel::V3D > &detectorPositions)
Mantid::DataObjects::Workspace2D_sptr create2DWorkspaceWithGeographicalDetectors(const int nlat, const int nlong, const double anginc, int nbins, const double x0=0.5, const double deltax=1.0, const std::string &instrumentName=std::string("testInst"), const std::string &xunit=std::string("Momentum"))
Create an Workspace2D with an instrument that contains detectors arranged at even latitude/longitude ...
Mantid::API::MatrixWorkspace_sptr create2DWorkspaceWithReflectometryInstrumentMultiDetector(const double startX=0.0, const double detSize=0.0, const Mantid::Kernel::V3D &slit1Pos=Mantid::Kernel::V3D(0, 0, 0), const Mantid::Kernel::V3D &slit2Pos=Mantid::Kernel::V3D(0, 0, 1), const double vg1=0.5, const double vg2=1.0, const Mantid::Kernel::V3D &sourcePos=Mantid::Kernel::V3D(0, 0, 0), const Mantid::Kernel::V3D &monitorPos=Mantid::Kernel::V3D(14, 0, 0), const Mantid::Kernel::V3D &samplePos=Mantid::Kernel::V3D(15, 0, 0), const Mantid::Kernel::V3D &detectorCenterPos=Mantid::Kernel::V3D(20,(20 - 15), 0), const int nSpectra=4, const int nBins=20, const double deltaX=5000.0)
Create a 2D workspace with one monitor and three detectors based around a virtual reflectometry instr...
void displayData(const Mantid::API::MatrixWorkspace_const_sptr &ws)
Mantid::API::MatrixWorkspace_sptr createProcessedInelasticWS(const std::vector< double > &L2, const std::vector< double > &polar, const std::vector< double > &azimutal, size_t numBins=4, double Emin=-10, double Emax=10, double Ei=11)
Create a workspace with all components needed for inelastic analysis and 3 detectors in specific plac...
Mantid::API::ITableWorkspace_sptr createEPPTableWorkspace(const std::vector< EPPTableRow > &rows={})
Create a table workspace corresponding to what the FindEPP algorithm gives.
void displayDataY(const Mantid::API::MatrixWorkspace_const_sptr &ws)
Mantid::DataObjects::WorkspaceSingleValue_sptr createWorkspaceSingleValueWithError(double value, double error)
void create2DAngles(std::vector< double > &L2, std::vector< double > &polar, std::vector< double > &azim, size_t nPolar=10, size_t nAzim=10, double polStart=0, double polEnd=90, double azimStart=-30, double azimEnd=30)
Mantid::DataObjects::Workspace2D_sptr create1DWorkspaceConstantWithXerror(int size, double value, double error, double xError, bool isHisto=true)
Mantid::API::MatrixWorkspace_sptr create2DWorkspaceRagged(int version=0)
Create a 2D ragged workspace.
Mantid::DataObjects::Workspace2D_sptr create2DWorkspaceBinned(size_t nhist, size_t numVals, double x0=0.0, double deltax=1.0)
Create a 2D workspace with this many histograms and bins.
Mantid::DataObjects::Workspace2D_sptr create2DWorkspaceWithRectangularInstrument(int numBanks, int numPixels, int numBins, const std::string &instrumentName="basic_rect")
Create an Workspace2D with an instrument that contains RectangularDetector's.
void populateWsWithInitList(T &destination, size_t startingIndex, const std::initializer_list< double > &values)
Populates a mutable reference from initializer list starting at user specified index.
Mantid::DataObjects::Workspace2D_sptr create2DWorkspaceNonUniformlyBinned(int nhist, const int numBoundaries, const double xBoundaries[], bool hasDx=false)
Create a 2D workspace with this many histograms and bins.
Mantid::DataObjects::EventWorkspace_sptr createEventWorkspaceWithFullInstrument(int numBanks, int numPixels, bool clearEvents=true)
Create an Eventworkspace with an instrument that contains RectangularDetector's.
Mantid::DataObjects::Workspace2D_sptr create1DWorkspaceFib(int size, bool isHisto)
std::shared_ptr< Mantid::DataObjects::PeaksWorkspace > createPeaksWorkspace(const int numPeaks, const bool createOrientedLattice=false)
Create a simple peaks workspace containing the given number of peaks.
void addNoise(const Mantid::API::MatrixWorkspace_sptr &ws, double noise, const double lower=-0.5, const double upper=0.5)
Add random noise to a 2D workspace.
Mantid::DataObjects::EventWorkspace_sptr createGroupedEventWorkspace(std::vector< std::vector< int > > const &groups, int numBins, double binDelta=1., double xOffset=0.)
Create event workspace, with several detector IDs in one event list.
void removeWS(const std::string &name)
Deletes a workspace.
void displayDataE(const Mantid::API::MatrixWorkspace_const_sptr &ws)
Mantid::HistogramData::Histogram createHisto(bool isHistogram, YType &&yAxis, EType &&eAxis)
Creates and returns point or bin based histograms with the data specified in parameters.
Mantid::DataObjects::Workspace2D_sptr create2DWorkspaceWithValuesAndXerror(int64_t nHist, int64_t nBins, bool isHist, double xVal, double yVal, double eVal, double dxVal, const std::set< int64_t > &maskedWorkspaceIndices=std::set< int64_t >())
Mantid::API::WorkspaceGroup_sptr createWorkspaceGroup(int nEntries, int nHist, int nBins, const std::string &stem)
Create a WorkspaceGroup with N workspaces and the specified parameters.
Mantid::DataObjects::Workspace2D_sptr create2DWorkspace154(int64_t nHist, int64_t nBins, bool isHist=false, const std::set< int64_t > &maskedWorkspaceIndices=std::set< int64_t >(), bool hasDx=false)
std::shared_ptr< Mantid::DataObjects::LeanElasticPeaksWorkspace > createLeanPeaksWorkspace(const int numPeaks, const bool createOrientedLattice=false)
Create a simple lean peaks workspace containing the given number of peaks.
Mantid::DataObjects::EventWorkspace_sptr createRandomEventWorkspace(size_t numbins, size_t numpixels, double bin_delta=1.0)
Create an event workspace with randomized TOF and pulsetimes.
Mantid::API::MatrixWorkspace_sptr create2DWorkspaceWithReflectometryInstrument(const double startX=0.0, const Mantid::Kernel::V3D &slit1Pos=Mantid::Kernel::V3D(0, 0, 0), const Mantid::Kernel::V3D &slit2Pos=Mantid::Kernel::V3D(0, 0, 1), const double vg1=0.5, const double vg2=1.0, const Mantid::Kernel::V3D &sourcePos=Mantid::Kernel::V3D(0, 0, 0), const Mantid::Kernel::V3D &monitorPos=Mantid::Kernel::V3D(14, 0, 0), const Mantid::Kernel::V3D &samplePos=Mantid::Kernel::V3D(15, 0, 0), const Mantid::Kernel::V3D &detectorPos=Mantid::Kernel::V3D(20,(20 - 15), 0), const int nBins=100, const double deltaX=2000.0)
Create a 2D workspace with one detector and one monitor based around a virtual reflectometry instrume...
Mantid::DataObjects::EventWorkspace_sptr createEventWorkspaceWithStartTime(int numPixels, int numBins, int numEvents=100, double x0=0.0, double binDelta=1.0, int eventPattern=1, int start_at_pixelID=0, Mantid::Types::Core::DateAndTime run_start=Mantid::Types::Core::DateAndTime("2010-01-01T00:00:00"))
void addTSPEntry(Mantid::API::Run &runInfo, const std::string &name, double val)
Utility function to add a TimeSeriesProperty with a name and value.
Mantid::DataObjects::EventWorkspace_sptr createEventWorkspace()
Create event workspace with: 500 pixels 1000 histogrammed bins.
Mantid::API::MatrixWorkspace_sptr createFocusedSNAPLiteInstrument(const std::string &wkspName, const std::string &groupingAlg, const std::string &groupingDescr, const double ang1=-65.3, const double ang2=104.95)
Mantid::DataObjects::EventWorkspace_sptr createEventWorkspace3(const Mantid::DataObjects::EventWorkspace_const_sptr &sourceWS, const std::string &wsname, Mantid::API::Algorithm *alg)
Mantid::API::MatrixWorkspace_sptr create2DDetectorScanWorkspaceWithFullInstrument(int nhist, int nbins, size_t nTimeIndexes, size_t startTime=0, size_t firstInterval=1, bool includeMonitors=false, bool startYNegative=false, bool isHistogram=true, const std::string &instrumentName=std::string("testInst"))
Create a workspace as for create2DWorkspaceWithFullInstrument, but including time indexing,...
Mantid::API::MatrixWorkspace_sptr createSNAPLiteInstrument(const std::string &wkspName, const double ang1=-65.3, const double ang2=104.95)
Create a copy of the SNAP "lite" instrument.
Mantid::API::MatrixWorkspace_sptr createProcessedWorkspaceWithCylComplexInstrument(size_t numPixels=100, size_t numBins=20, bool has_oriented_lattice=true)
Mantid::DataObjects::Workspace2D_sptr create2DWorkspace123(int64_t nHist, int64_t nBins, bool isHist=false, const std::set< int64_t > &maskedWorkspaceIndices=std::set< int64_t >(), bool hasDx=false)
Mantid::DataObjects::Workspace2D_sptr maskSpectra(Mantid::DataObjects::Workspace2D_sptr workspace, const std::set< int64_t > &maskedWorkspaceIndices)
Workspace2D_sptr create2DWorkspaceWithValues(int64_t nHist, int64_t nBins, bool isHist, const std::set< int64_t > &maskedWorkspaceIndices, double xVal, double yVal, double eVal, bool hasDx=false)
create2DWorkspaceWithValues
DataObjects::Workspace2D_sptr reflectometryWorkspace(const double startX, const int nSpectra, const int nBins, const double deltaX)
Creates a binned 2DWorkspace with title and TOF x-axis and counts y-axis.
Mantid::DataObjects::RebinnedOutput_sptr createRebinnedOutputWorkspace()
Function to create a fixed RebinnedOutput workspace.
Mantid::DataObjects::Workspace2D_sptr create2DWorkspaceThetaVsTOF(int nHist, int nBins)
Create a test workspace with a Theta numeric axis instead of a spectrum axis the values run from 1 to...
void displayDataX(const Mantid::API::MatrixWorkspace_const_sptr &ws)
Mantid::DataObjects::Workspace2D_sptr create1DWorkspaceRand(int size, bool isHisto)
Mantid::API::MatrixWorkspace_sptr createGroupedWorkspace2DWithRingsAndBoxes(size_t RootOfNumHist=10, int numBins=10, double binDelta=1.0)
Mantid::DataObjects::Workspace2D_sptr create2DWorkspace123WithMaskedBin(int numHist, int numBins, int maskedWorkspaceIndex, int maskedBinIndex)
void setGoniometer(const Mantid::API::MatrixWorkspace_sptr &ws, double phi, double chi, double omega)
Create a default universal goniometer and set its angles.
Mantid::DataObjects::EventWorkspace_sptr createEventWorkspaceWithNonUniformInstrument(int numBanks, bool clearEvents)
Creates an event workspace with instrument which consists of cylindrical detectors.
const Mantid::Geometry::IComponent * baseInstrumentID(const Mantid::API::ExperimentInfo &expInfo)
The base instrument a workspace was built from, as identified by the root of its base ComponentInfo.
Mantid::DataObjects::Workspace2D_sptr create2DWorkspaceWithFullInstrument(int nhist, int nbins, bool includeMonitors=false, bool startYNegative=false, bool isHistogram=true, const std::string &instrumentName=std::string("testInst"), bool hasDx=false)
Create a test workspace with a fully defined instrument.
Mantid::DataObjects::EventWorkspace_sptr createEventWorkspaceWithFullInstrument2(int numBanks, int numPixels, bool clearEvents=true)
Create an Eventworkspace with instrument 2.0 that contains RectangularDetector's.
Mantid::DataObjects::EventWorkspace_sptr createEventWorkspace2(int numPixels=50, int numBins=100)
Create event workspace with: 50 pixels 100 histogrammed bins from 0.0 in steps of 1....
Mantid::DataObjects::Workspace2D_sptr create2DWorkspace(size_t nhist, size_t numBoundaries)
Mantid::API::MatrixWorkspace_sptr createGroupedWorkspace2D(size_t numHist, int numBins, double binDelta)
Create Workspace2d, with numHist spectra, each with 9 detectors, with IDs 1-9, 10-18,...
void eventWorkspace_Finalize(const Mantid::DataObjects::EventWorkspace_sptr &ew)
Perform some finalization on event workspace stuff.
Mantid::DataObjects::Workspace2D_sptr create2DWorkspacePoints(size_t nhist, size_t numVals, double x0=0.0, double deltax=1.0)
Create a 2D workspace with this many point-histograms and bins.
Generate a tableworkspace to store the calibration results.
EPPTableRow()=default
Construct a row with the default values.
FitStatus
FindEPP algorithm fitting success status.
Create a Fibonacci series.