diff --git a/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspace.h b/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspace.h index 567c10f6b009b1df0f485e376a91607be42a43b4..8e6eaca21128413edfb3dda1b232c9a73f2ca8a3 100644 --- a/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspace.h +++ b/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspace.h @@ -371,6 +371,8 @@ public: /// Apply masking. void setMDMasking(Mantid::Geometry::MDImplicitFunction *maskingRegion); + /// Apply masking. + void setMDMaskAt(const size_t& index, bool mask); /// Clear masking. void clearMDMasking(); diff --git a/Code/Mantid/Framework/DataObjects/src/MDHistoWorkspace.cpp b/Code/Mantid/Framework/DataObjects/src/MDHistoWorkspace.cpp index f5264363224903ad911355fe21108c6960d95b05..b1687145357598e2bc49e6c4c4822dcd663e0adc 100644 --- a/Code/Mantid/Framework/DataObjects/src/MDHistoWorkspace.cpp +++ b/Code/Mantid/Framework/DataObjects/src/MDHistoWorkspace.cpp @@ -1165,6 +1165,15 @@ void MDHistoWorkspace::setMDMasking( } } +/** + * Set the masking + * @param index : linear index to mask + * @param mask : True to mask. False to clear. + */ +void MDHistoWorkspace::setMDMaskAt(const size_t& index, bool mask){ + m_masks[index] = mask; +} + /// Clear any existing masking. void MDHistoWorkspace::clearMDMasking() { for (size_t i = 0; i < this->getNPoints(); ++i) { diff --git a/Code/Mantid/Framework/MDAlgorithms/src/TransposeMD.cpp b/Code/Mantid/Framework/MDAlgorithms/src/TransposeMD.cpp index 55c9619e4fdf79d8ca11fea6e521563f12eb93f3..179182bfc13068add75f7bd6db99d263c31bc638 100644 --- a/Code/Mantid/Framework/MDAlgorithms/src/TransposeMD.cpp +++ b/Code/Mantid/Framework/MDAlgorithms/src/TransposeMD.cpp @@ -106,15 +106,13 @@ void TransposeMD::exec() { } - std::vector<coord_t> origin; + std::vector<coord_t> origin(nDimsOutput, 0.0); std::vector<Geometry::IMDDimension_sptr> targetGeometry; for (size_t i = 0; i < nDimsOutput; ++i) { // Clone the dimension corresponding to the axis requested. auto cloneDim = Geometry::IMDDimension_sptr( new Geometry::MDHistoDimension(inWS->getDimension(axes[i]).get())); targetGeometry.push_back(cloneDim); - // Set the same origin as we have on the input workspace - origin.push_back(coord_t(cloneDim->getMinimum())); } // Make the output workspace in the right shape. @@ -134,8 +132,10 @@ void TransposeMD::exec() { size_t index = outWS->getLinearIndexAtCoord(&outcoords[0]); outWS->setSignalAt(index, inIterator->getSignal()); - outWS->setErrorSquaredAt(index, inIterator->getError()*inIterator->getError()); - // TODO more otherwise + const double error = inIterator->getError(); + outWS->setErrorSquaredAt(index, error*error); + outWS->setNumEventsAt(index, inIterator->getNumEvents()); + outWS->setMDMaskAt(index, inIterator->getIsMasked()); }while(inIterator->next());