Newer
Older
// Mantid Repository : https://github.com/mantidproject/mantid
//
// Copyright © 2011 ISIS Rutherford Appleton Laboratory UKRI,
// NScD Oak Ridge National Laboratory, European Spallation Source,
// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
// SPDX - License - Identifier: GPL - 3.0 +

Zhou, Wenduo
committed
#include "MantidAPI/MatrixWorkspace_fwd.h"
#include "MantidDataObjects/MaskWorkspace.h"

Zhou, Wenduo
committed
#include <Poco/AutoPtr.h>
#include <Poco/DOM/Document.h>
namespace Poco {
namespace XML {
class Document;
class Element;
namespace Mantid {
namespace DataHandling {
/** LoadMask : Load masking file to generate a SpecialWorkspace2D object
(masking workspace).
@author
@date 2011-11-02
*/
class DLLExport LoadMask : public API::ParallelAlgorithm {
public:
/// Algorithm's name for identification
const std::string name() const override { return "LoadMask"; };
const std::string summary() const override {
return "Load file containing masking information to a SpecialWorkspace2D "
"(masking workspace).";
}
/// Algorithm's version for identification
int version() const override { return 1; };
const std::vector<std::string> seeAlso() const override {
/// Algorithm's category for identification
const std::string category() const override {
return "DataHandling\\Masking;Transforms\\Masking";
}
private:
/// Initialise the properties
/// Initialize XML parser
void initializeXMLParser(const std::string &filename);
/// Parse XML
void parseXML();
/// Initialize a Mask Workspace
void intializeMaskWorkspace();
/// Convert component to detectors
void componentToDetectors(const std::vector<std::string> &componentnames,
void bankToDetectors(const std::vector<std::string> &singlebanks,
void processMaskOnDetectors(const detid2index_map &indexmap, bool tomask,
const std::vector<detid_t> &singledetids);
std::vector<specnum_t> &maskedSpecID,
std::vector<detid_t> &singleDetIds);
std::map<std::string, std::string> validateInputs() override;
void convertSpMasksToDetIDs(const API::MatrixWorkspace &sourceWS,
const std::vector<specnum_t> &maskedSpecID,
std::vector<detid_t> &singleDetIds);
DataObjects::MaskWorkspace_sptr m_maskWS;
/// Instrument name
std::string m_instrumentPropValue;
/// optional source workspace, containing spectra-detector mapping
API::MatrixWorkspace_sptr m_sourceMapWS;
Poco::AutoPtr<Poco::XML::Document> m_pDoc;
/// Root element of the parsed XML
Poco::XML::Element *m_pRootElem{nullptr};
/// Default setup. If true, not masking, but use the pixel
// spectra unmask provided NOT IMPLEMENTED
// std::vector<specnum_t> m_unMaskSpecID;
std::vector<std::string> m_maskCompIdSingle;
std::vector<std::string> m_uMaskCompIdSingle;

Zhou, Wenduo
committed
} // namespace DataHandling
} // namespace Mantid