11#include "MantidDataObjects/DllConfig.h"
17#include "MantidNexus/NexusFile.h"
37 setNumberOfDetectorGroups(0);
47 :
IPeaksWorkspace(other), m_peaks(other.m_peaks), m_columns(), m_columnNames(), m_coordSystem(other.m_coordSystem) {
58 std::vector<ColumnAndDirection> &
criteria;
69 const auto &col =
name.first;
70 const bool ascending =
name.second;
71 bool lessThan =
false;
72 if (col ==
"BankName") {
79 lessThan = (valA < valB);
87 lessThan = (valA < valB);
128 if (peakNum >=
static_cast<int>(
m_peaks.size()) || peakNum < 0) {
129 throw std::invalid_argument(
"PeaksWorkspace::removePeak(): peakNum is out of range.");
138 if (badPeaks.empty())
142 auto it = std::remove_if(
m_peaks.begin(),
m_peaks.end(), [&ip, badPeaks](
const Peak &pk) {
145 return std::any_of(badPeaks.cbegin(), badPeaks.cend(), [ip](int badPeak) { return badPeak == ip; });
147 m_peaks.erase(it, m_peaks.end());
155 if (
dynamic_cast<const Peak *
>(&ipeak)) {
156 m_peaks.emplace_back(
static_cast<const Peak &
>(ipeak));
184 if (peakNum >=
m_peaks.size()) {
185 throw std::invalid_argument(
"PeaksWorkspace::getPeak(): peakNum is out of range.");
196 if (peakNum >=
m_peaks.size()) {
197 throw std::invalid_argument(
"PeaksWorkspace::getPeak(): peakNum is out of range.");
210 std::optional<double> detectorDistance)
const {
212 std::unique_ptr<IPeak> peak = std::make_unique<Peak>(this->
getInstrument(), QLabFrame, detectorDistance);
214 peak->setGoniometerMatrix(this->
run().getGoniometer().getR());
254 double wavelength(0);
255 if (props->hasProperty(
"wavelength")) {
256 wavelength = props->getLogAsSingleValue(
"wavelength");
257 }
else if (props->hasProperty(
"energy")) {
261 wavelength =
getInstrument()->getNumberParameter(
"wavelength").at(0);
264 if (wavelength > 0) {
267 <<
" degrees for Q sample = " <<
position <<
"\n";
294 bool labCoords)
const {
295 std::vector<std::pair<std::string, std::string>>
Result;
296 std::ostringstream oss;
297 oss << std::setw(12) << std::fixed << std::setprecision(3) << (qFrame.
norm());
298 std::pair<std::string, std::string> QMag(
"|Q|", oss.str());
299 Result.emplace_back(QMag);
303 oss << std::setw(12) << std::fixed << std::setprecision(3) << (2.0 * M_PI / qFrame.
norm());
305 std::pair<std::string, std::string> dspc(
"d-spacing", oss.str());
308 Result.emplace_back(dspc);
311 bool hasOneRunNumber =
true;
315 double minDist = 10000000;
316 for (
int i = 0; i < NPeaks; i++) {
330 else if (runNum !=
run)
331 hasOneRunNumber =
false;
346 Qsamp = InvGon * Qlab;
353 if (labCoords || seqNum >= 0)
356 std::pair<std::string, std::string> QlabStr(
"Qlab", boost::lexical_cast<std::string>(Qlab));
357 Result.emplace_back(QlabStr);
360 if (!labCoords || seqNum >= 0) {
362 std::pair<std::string, std::string> QsampStr(
"QSample", boost::lexical_cast<std::string>(Qsamp));
363 Result.emplace_back(QsampStr);
370 if (
sample().hasOrientedLattice()) {
372 peak->setGoniometerMatrix(Gon);
378 V3D hkl = UB * Qsamp / 2 / M_PI;
380 std::pair<std::string, std::string>
HKL(
"HKL", boost::lexical_cast<std::string>(hkl));
384 if (hasOneRunNumber) {
385 std::pair<std::string, std::string> runn(
"RunNumber",
" " +
std::to_string(runNum));
386 Result.emplace_back(runn);
392 Kernel::V3D PhiChiOmega(OmegaChiPhi[2], OmegaChiPhi[1], OmegaChiPhi[0]);
394 std::pair<std::string, std::string> GRead(
"Goniometer Angles", boost::lexical_cast<std::string>(PhiChiOmega));
395 Result.emplace_back(GRead);
397 std::pair<std::string, std::string> SeqNum(
"Seq Num,1st=1",
" " +
std::to_string(seqNum + 1));
398 Result.emplace_back(SeqNum);
400 oss << std::setw(12) << std::fixed << std::setprecision(3) << (peak->getWavelength());
401 std::pair<std::string, std::string> wl(
"Wavelength", oss.str());
406 if (peak->findDetector()) {
407 std::pair<std::string, std::string> detpos(
"Position(x,y,z)",
408 boost::lexical_cast<std::string>(peak->getDetPos()));
409 Result.emplace_back(detpos);
411 oss << std::setw(15) << std::fixed << std::setprecision(3) << (peak->getTOF());
412 std::pair<std::string, std::string> tof(
"TOF", oss.str());
417 oss << std::setw(12) << std::fixed << std::setprecision(3) << (peak->getFinalEnergy());
418 std::pair<std::string, std::string> Energy(
"Energy", oss.str());
419 Result.emplace_back(Energy);
423 std::pair<std::string, std::string> row(
"Row",
" " +
std::to_string(peak->getRow()));
426 std::pair<std::string, std::string> col(
"Col",
" " +
std::to_string(peak->getCol()));
429 std::pair<std::string, std::string> bank(
"Bank",
" " + peak->getBankName());
430 Result.emplace_back(bank);
432 oss << std::setw(12) << std::fixed << std::setprecision(3) << (peak->getScattering());
433 std::pair<std::string, std::string> scat(
"Scattering Angle", oss.str());
434 Result.emplace_back(scat);
459 const V3D qLabFrame = goniometer.getR() * lattice.getUB() *
HKL * 2 * M_PI;
463 std::unique_ptr<IPeak> peak = std::make_unique<Peak>(this->
getInstrument(), qLabFrame);
466 peak->setIntHKL(peak->getHKL());
468 peak->setGoniometerMatrix(goniometer.getR());
498 std::vector<std::pair<std::string, std::string>>
Result;
499 std::ostringstream oss;
500 oss << std::setw(12) << std::fixed << std::setprecision(3) << (qFrame.
norm());
501 std::pair<std::string, std::string> QMag(
"|Q|", oss.str());
502 Result.emplace_back(QMag);
506 oss << std::setw(12) << std::fixed << std::setprecision(3) << (2.0 * M_PI / qFrame.
norm());
508 std::pair<std::string, std::string> dspc(
"d-spacing", oss.str());
511 Result.emplace_back(dspc);
514 double minDist = 10000000;
542 const std::string peaksIntegrated =
"PeaksIntegrated";
543 if (this->
run().hasProperty(peaksIntegrated)) {
544 const auto value = boost::lexical_cast<int>(this->
run().getProperty(peaksIntegrated)->
value());
564 table->addColumn(
"int",
"Index");
565 table->addColumn(
"int",
"DetectorID");
567 const auto npeaks(
static_cast<int>(this->
rowCount()));
569 for (
int i = 0; i < npeaks; ++i) {
572 auto itEnd = detIDs.end();
573 for (
auto it = detIDs.begin(); it != itEnd; ++it) {
575 table->cell<
int>(
nrows, 0) = i;
576 table->cell<
int>(
nrows, 1) = *it;
630 throw std::invalid_argument(
"Column named " +
name +
" was not found in the PeaksWorkspace.");
637 throw std::invalid_argument(
"PeaksWorkspace::getColumn() called with invalid index.");
645 throw std::invalid_argument(
"PeaksWorkspace::getColumn() called with invalid index.");
652 const size_t np(
m_peaks.size());
655 std::vector<int> detectorID(np);
656 std::vector<double> H(np);
657 std::vector<double> K(np);
658 std::vector<double> L(np);
660 std::vector<double> sigmaIntensity(np);
661 std::vector<double> binCount(np);
662 std::vector<double> initialEnergy(np);
663 std::vector<double> finalEnergy(np);
664 std::vector<double> waveLength(np);
665 std::vector<double> scattering(np);
666 std::vector<double> dSpacing(np);
667 std::vector<double>
TOF(np);
668 std::vector<int> runNumber(np);
669 std::vector<int> peakNumber(np);
670 std::vector<double> tbar(np);
671 std::vector<double> intHKL(3 * np);
672 std::vector<double> intMNP(3 * np);
673 std::vector<double> goniometerMatrix(9 * np);
674 std::vector<std::string> shapes(np);
675 std::vector<double> monitorCount(np);
678 size_t maxShapeJSONLength = 0;
679 for (
size_t i = 0; i < np; i++) {
699 intHKL[3 * i + 0] = hkl[0];
700 intHKL[3 * i + 1] = hkl[1];
701 intHKL[3 * i + 2] = hkl[2];
703 intMNP[3 * i + 0] = mnp[0];
704 intMNP[3 * i + 1] = mnp[1];
705 intMNP[3 * i + 2] = mnp[2];
707 goniometerMatrix[9 * i + 0] = gm[0][0];
708 goniometerMatrix[9 * i + 1] = gm[1][0];
709 goniometerMatrix[9 * i + 2] = gm[2][0];
710 goniometerMatrix[9 * i + 3] = gm[0][1];
711 goniometerMatrix[9 * i + 4] = gm[1][1];
712 goniometerMatrix[9 * i + 5] = gm[2][1];
713 goniometerMatrix[9 * i + 6] = gm[0][2];
714 goniometerMatrix[9 * i + 7] = gm[1][2];
715 goniometerMatrix[9 * i + 8] = gm[2][2];
718 shapes[i] = shapeJSON;
719 if (shapeJSON.size() > maxShapeJSONLength) {
720 maxShapeJSONLength = shapeJSON.size();
726 const std::string specifyInteger =
"An integer";
727 const std::string specifyDouble =
"A double";
728 const std::string specifyString =
"A string";
729 file->makeGroup(
"peaks_workspace",
"NXentry",
733 file->writeData(
"coordinate_system",
static_cast<uint32_t
>(
m_coordSystem));
738 file->putAttr(
"QConvention", m_QConvention);
741 file->writeData(
"column_1", detectorID);
742 file->openData(
"column_1");
743 file->putAttr(
"name",
"Detector ID");
744 file->putAttr(
"interpret_as", specifyInteger);
745 file->putAttr(
"units",
"Not known");
749 file->writeData(
"column_2", H);
750 file->openData(
"column_2");
751 file->putAttr(
"name",
"H");
752 file->putAttr(
"interpret_as", specifyDouble);
753 file->putAttr(
"units",
"Not known");
757 file->writeData(
"column_3", K);
758 file->openData(
"column_3");
759 file->putAttr(
"name",
"K");
760 file->putAttr(
"interpret_as", specifyDouble);
761 file->putAttr(
"units",
"Not known");
765 file->writeData(
"column_4", L);
766 file->openData(
"column_4");
767 file->putAttr(
"name",
"L");
768 file->putAttr(
"interpret_as", specifyDouble);
769 file->putAttr(
"units",
"Not known");
774 file->openData(
"column_5");
775 file->putAttr(
"name",
"Intensity");
776 file->putAttr(
"interpret_as", specifyDouble);
777 file->putAttr(
"units",
"Not known");
781 file->writeData(
"column_6", sigmaIntensity);
782 file->openData(
"column_6");
783 file->putAttr(
"name",
"Sigma Intensity");
784 file->putAttr(
"interpret_as", specifyDouble);
785 file->putAttr(
"units",
"Not known");
789 file->writeData(
"column_7", binCount);
790 file->openData(
"column_7");
791 file->putAttr(
"name",
"Bin Count");
792 file->putAttr(
"interpret_as", specifyDouble);
793 file->putAttr(
"units",
"Not known");
797 file->writeData(
"column_8", initialEnergy);
798 file->openData(
"column_8");
799 file->putAttr(
"name",
"Initial Energy");
800 file->putAttr(
"interpret_as", specifyDouble);
801 file->putAttr(
"units",
"Not known");
805 file->writeData(
"column_9", finalEnergy);
806 file->openData(
"column_9");
807 file->putAttr(
"name",
"Final Energy");
808 file->putAttr(
"interpret_as", specifyDouble);
809 file->putAttr(
"units",
"Not known");
813 file->writeData(
"column_10", waveLength);
814 file->openData(
"column_10");
815 file->putAttr(
"name",
"Wave Length");
816 file->putAttr(
"interpret_as", specifyDouble);
817 file->putAttr(
"units",
"Not known");
821 file->writeData(
"column_11", scattering);
822 file->openData(
"column_11");
823 file->putAttr(
"name",
"Scattering");
824 file->putAttr(
"interpret_as", specifyDouble);
825 file->putAttr(
"units",
"Not known");
829 file->writeData(
"column_12", dSpacing);
830 file->openData(
"column_12");
831 file->putAttr(
"name",
"D Spacing");
832 file->putAttr(
"interpret_as", specifyDouble);
833 file->putAttr(
"units",
"Not known");
837 file->writeData(
"column_13",
TOF);
838 file->openData(
"column_13");
839 file->putAttr(
"name",
"TOF");
840 file->putAttr(
"interpret_as", specifyDouble);
841 file->putAttr(
"units",
"Not known");
845 file->writeData(
"column_14", runNumber);
846 file->openData(
"column_14");
847 file->putAttr(
"name",
"Run Number");
848 file->putAttr(
"interpret_as", specifyInteger);
849 file->putAttr(
"units",
"Not known");
853 file->writeData(
"column_17", peakNumber);
854 file->openData(
"column_17");
855 file->putAttr(
"name",
"Peak Number");
856 file->putAttr(
"interpret_as", specifyInteger);
857 file->putAttr(
"units",
"Not known");
861 file->writeData(
"column_18", tbar);
862 file->openData(
"column_18");
863 file->putAttr(
"name",
"TBar");
864 file->putAttr(
"interpret_as", specifyDouble);
865 file->putAttr(
"units",
"Not known");
871 file->writeData(
"column_19", intHKL, qlab_dims);
872 file->openData(
"column_19");
873 file->putAttr(
"name",
"IntHKL");
874 file->putAttr(
"interpret_as",
"A vector of 3 doubles");
875 file->putAttr(
"units",
"r.l.u.");
879 file->writeData(
"column_20", intMNP, qlab_dims);
880 file->openData(
"column_20");
881 file->putAttr(
"name",
"IntMNP");
882 file->putAttr(
"interpret_as",
"A vector of 3 doubles");
883 file->putAttr(
"units",
"r.l.u.");
887 file->writeData(
"column_21", monitorCount);
888 file->openData(
"column_21");
889 file->putAttr(
"name",
"Monitor Count");
890 file->putAttr(
"interpret_as", specifyDouble);
891 file->putAttr(
"units",
"Not known");
896 file->writeData(
"column_15", goniometerMatrix, array_dims);
897 file->openData(
"column_15");
898 file->putAttr(
"name",
"Goniometer Matrix");
899 file->putAttr(
"interpret_as",
"A matrix of 3x3 doubles");
900 file->putAttr(
"units",
"Not known");
905 dims.emplace_back(np);
906 dims.emplace_back(
static_cast<int>(maxShapeJSONLength));
907 const std::string
name =
"column_16";
909 file->openData(
name);
911 auto toNexus =
new char[maxShapeJSONLength * np];
912 for (
size_t ii = 0; ii < np; ii++) {
913 std::string rowStr = shapes[ii];
914 for (
size_t ic = 0; ic < rowStr.size(); ic++)
915 toNexus[ii * maxShapeJSONLength + ic] = rowStr[ic];
916 for (
size_t ic = rowStr.size(); ic < static_cast<size_t>(maxShapeJSONLength); ic++)
917 toNexus[ii * maxShapeJSONLength + ic] =
' ';
920 file->putData(toNexus);
923 file->putAttr(
"units",
"Not known");
924 file->putAttr(
"name",
"Shape");
925 file->putAttr(
"interpret_as", specifyString);
971IPropertyManager::getValue<Mantid::DataObjects::PeaksWorkspace_sptr>(
const std::string &
name)
const {
972 if (
const auto *prop =
976 std::string message =
977 "Attempt to assign property " +
name +
" to incorrect type. Expected shared_ptr<PeaksWorkspace>.";
978 throw std::runtime_error(message);
984IPropertyManager::getValue<Mantid::DataObjects::PeaksWorkspace_const_sptr>(
const std::string &
name)
const {
985 if (
const auto *prop =
987 return prop->operator()();
989 std::string message =
990 "Attempt to assign property " +
name +
" to incorrect type. Expected const shared_ptr<PeaksWorkspace>.";
991 throw std::runtime_error(message);
double value
The value of the point.
std::map< DeltaEMode::Type, std::string > index
#define DECLARE_WORKSPACE(classname)
Run & mutableRun()
Writable version of the run object.
const Run & run() const
Run details object access.
Geometry::Instrument_const_sptr getInstrument() const
Returns the parameterized instrument.
const Sample & sample() const
Sample accessors.
int getRunNumber() const
Utility method to get the run number.
void setNumberOfDetectorGroups(const size_t count) const
Sets the number of detector groups.
Interface to the class Mantid::DataObjects::PeaksWorkspace.
ITableWorkspace is an implementation of Workspace in which the data are organised in columns of same ...
This class contains the information about the log entries.
const Geometry::Goniometer & getGoniometer() const
Return reference to the first const Goniometer object for this run.
const Geometry::OrientedLattice & getOrientedLattice() const
Get a reference to the sample's OrientedLattice.
Mantid::Kernel::V3D getIntMNP() const override
Return the int MNP vector.
double getL() const override
Get the L index of the peak.
double getIntensity() const override
Return the integrated peak intensity.
double getAbsorptionWeightedPathLength() const override
Gets the absorption weighted path length.
double getSigmaIntensity() const override
Return the error on the integrated peak intensity.
double getK() const override
Get the K index of the peak.
int getPeakNumber() const override
Returns the unique peak number Returns -1 if it could not find it.
int getRunNumber() const override
Return the run number this peak was measured at.
double getH() const override
Get the H index of the peak.
double getBinCount() const override
Return the # of counts in the bin at its peak.
Mantid::Kernel::Matrix< double > getGoniometerMatrix() const override
Get the goniometer rotation matrix at which this peak was measured.
const Mantid::Geometry::PeakShape & getPeakShape() const override
Get the peak shape.
double getMonitorCount() const override
Return the monitor count stored in this peak.
Mantid::Kernel::V3D getIntHKL() const override
Return the int HKL vector.
PeakColumn : a Column sub-class used to display peak information as a TableWorkspace.
Comparator class for sorting peaks by one or more criteria.
bool operator()(const Peak &a, const Peak &b)
Compare two peaks using the stored criteria.
PeakComparator(std::vector< ColumnAndDirection > &criteria)
Constructor for the comparator for sorting peaks.
LeanElasticPeaksWorkspace::ColumnAndDirection ColumnAndDirection
std::vector< ColumnAndDirection > & criteria
Structure describing a single-crystal peak.
double getDSpacing() const override
Calculate the d-spacing of the peak, in 1/Angstroms
const std::set< int > & getContributingDetIDs() const
Return the set of detector IDs that contribute to this peak.
double getInitialEnergy() const override
Get the initial (incident) neutron energy in meV.
Mantid::Kernel::V3D getQLabFrame() const override
Return the Q change (of the lattice, k_i - k_f) for this peak.
int getDetectorID() const override
Get the ID of the detector at the center of the peak
double getFinalEnergy() const override
Get the final neutron energy in meV.
double getWavelength() const override
Calculate the neutron wavelength (in angstroms) at the peak (Note for inelastic scattering - it is th...
double getTOF() const override
Calculate the time of flight (in microseconds) of the neutrons for this peak, using the geometry of t...
Mantid::Kernel::V3D getQSampleFrame() const override
Return the Q change (of the lattice, k_i - k_f) for this peak.
const std::string & getBankName() const
Find the name of the bank that is the parent of the detector.
double getScattering() const override
Calculate the scattering angle of the peak
double getValueByColName(std::string colName) const override
Helper function for displaying/sorting peaks.
The class PeaksWorkspace stores information about a set of SCD peaks.
int getNumberPeaks() const override
Kernel::SpecialCoordinateSystem getSpecialCoordinateSystem() const override
Get the special coordinate system.
API::ITableWorkspace_sptr createDetectorTable() const override
Creates a new TableWorkspace giving the IDs of the detectors that contribute to the peaks within the ...
std::vector< std::shared_ptr< Mantid::DataObjects::PeakColumn< Peak > > > m_columns
Column shared pointers.
IPeak_uptr createPeak() const override
Create a Peak using default values.
std::pair< std::string, bool > ColumnAndDirection
void saveNexus(Nexus::File *file) const override
std::vector< Peak > m_peaks
Vector of Peak contained within.
ITableWorkspace * doCloneColumns(const std::vector< std::string > &colNames) const override
void removePeaks(std::vector< int > badPeaks) override
Removes multiple peaks.
void removePeak(int peakNum) override
Removes the indicated peak.
std::vector< std::string > m_columnNames
Column names.
std::vector< Peak > & getPeaks()
Return a reference to the Peaks vector.
void initColumns()
Initialize the table structure.
std::shared_ptr< Mantid::API::Column > getColumn(const std::string &name) override
Gets the shared pointer to a column by name.
virtual size_t getColumnIndex(const std::string &name) const
IPeak_uptr createPeakHKL(const Kernel::V3D &HKL) const override
Create a Peak from a HKL value provided by the client.
PeaksWorkspace()
Constructor.
void addPeakColumn(const std::string &name)
Adds a new PeakColumn of the given type.
IPeak_uptr createPeakQSample(const Kernel::V3D &position) const override
Creates an instance of a Peak BUT DOES NOT ADD IT TO THE WORKSPACE.
std::vector< std::pair< std::string, std::string > > peakInfo(const Kernel::V3D &qFrame, bool labCoords) const override
Returns selected information for a "peak" at QLabFrame.
std::string getConvention() const override
bool hasIntegratedPeaks() const override
Getter for the integration status.
void sort(std::vector< ColumnAndDirection > &criteria) override
Sort the peaks by one or more criteria.
API::LogManager_sptr logs() override
Get access to shared pointer containing workspace porperties.
int peakInfoNumber(const Kernel::V3D &qFrame, bool labCoords) const override
Returns selected information for a "peak" at QLabFrame.
API::LogManager_const_sptr getLogs() const override
Get constant access to shared pointer containing workspace porperties; Copies logs into new LogManage...
size_t getMemorySize() const override
Return the memory used in bytes.
Kernel::SpecialCoordinateSystem m_coordSystem
Coordinates.
void addPeak(const Geometry::IPeak &peak) override
Add a peak to the list.
void setCoordinateSystem(const Kernel::SpecialCoordinateSystem coordinateSystem) override
Set the special coordinate system.
Peak & getPeak(size_t const peakNum) override
Return a reference to the Peak.
size_t rowCount() const override
Number of rows in the workspace.
Class to represent a particular goniometer setting, which is described by the rotation matrix.
std::vector< double > getEulerAngles(const std::string &convention="YZX")
Return Euler angles acording to a convention.
const Kernel::DblMatrix & getR() const
Return global rotation matrix.
void calcFromQSampleAndWavelength(const Mantid::Kernel::V3D &Q, double wavelength, bool flip_x=false, bool inner=false)
Calculate goniometer for rotation around y-asix for constant wavelength from Q Sample.
Structure describing a single-crystal peak.
Class to implement UB matrix.
const Kernel::DblMatrix & getUB() const
Get the UB matrix.
virtual std::string toJSON() const =0
Serialize.
Marks code as not implemented yet.
The Logger class is in charge of the publishing messages from the framework through various channels.
void information(const std::string &msg)
Logs at information level.
T Invert()
LU inversion routine.
The concrete, templated class for properties.
static T & Instance()
Return a reference to the Singleton instance, creating it if it does not already exist Creation is do...
static double run(const std::string &src, const std::string &dest, const double srcValue, const double l1, const double l2, const double theta, const DeltaEMode::Type emode, const double efixed)
Convert a single value between the given units (as strings)
double distance(const V3D &v) const noexcept
Calculates the distance between two vectors.
double norm() const noexcept
static unsigned short constexpr CHAR
std::shared_ptr< const LogManager > LogManager_const_sptr
shared pointer to the logManager base class (const version)
std::shared_ptr< LogManager > LogManager_sptr
shared pointer to the logManager base class
std::shared_ptr< ITableWorkspace > ITableWorkspace_sptr
shared pointer to Mantid::API::ITableWorkspace
Kernel::Logger g_log("ExperimentInfo")
static logger object
std::shared_ptr< const PeaksWorkspace > PeaksWorkspace_const_sptr
Typedef for a shared pointer to a const peaks workspace.
std::shared_ptr< PeaksWorkspace > PeaksWorkspace_sptr
Typedef for a shared pointer to a peaks workspace.
std::unique_ptr< Peak > Peak_uptr
std::unique_ptr< IPeak > IPeak_uptr
SpecialCoordinateSystem
Special coordinate systems for Q3D.
std::vector< dimsize_t > DimVector
Helper class which provides the Collimation Length for SANS instruments.
std::string to_string(const wide_integer< Bits, Signed > &n)