/** Execute the algorithm. */ void LoadCalFile::exec() { std::string CalFilename = getPropertyValue("CalFilename"); std::string WorkspaceName = getPropertyValue("WorkspaceName"); bool MakeGroupingWorkspace = getProperty("MakeGroupingWorkspace"); bool MakeOffsetsWorkspace = getProperty("MakeOffsetsWorkspace"); bool MakeMaskWorkspace = getProperty("MakeMaskWorkspace"); if (WorkspaceName.empty()) throw std::invalid_argument("Must specify WorkspaceName."); Instrument_const_sptr inst = LoadCalFile::getInstrument3Ways(this); GroupingWorkspace_sptr groupWS; OffsetsWorkspace_sptr offsetsWS; MaskWorkspace_sptr maskWS; // Title of all workspaces = the file without path std::string title = Poco::Path(CalFilename).getFileName(); // Initialize all required workspaces. if (MakeGroupingWorkspace) { groupWS = GroupingWorkspace_sptr(new GroupingWorkspace(inst)); groupWS->setTitle(title); declareProperty(new WorkspaceProperty<GroupingWorkspace>("OutputGroupingWorkspace", WorkspaceName + "_group", Direction::Output), "Set the the output GroupingWorkspace, if any."); groupWS->mutableRun().addProperty("Filename",CalFilename); setProperty("OutputGroupingWorkspace", groupWS); } if (MakeOffsetsWorkspace) { offsetsWS = OffsetsWorkspace_sptr(new OffsetsWorkspace(inst)); offsetsWS->setTitle(title); declareProperty(new WorkspaceProperty<OffsetsWorkspace>("OutputOffsetsWorkspace", WorkspaceName + "_offsets", Direction::Output), "Set the the output OffsetsWorkspace, if any."); offsetsWS->mutableRun().addProperty("Filename",CalFilename); setProperty("OutputOffsetsWorkspace", offsetsWS); } if (MakeMaskWorkspace) { maskWS = MaskWorkspace_sptr(new MaskWorkspace(inst)); maskWS->setTitle(title); declareProperty(new WorkspaceProperty<MatrixWorkspace>("OutputMaskWorkspace", WorkspaceName + "_mask", Direction::Output), "Set the the output MaskWorkspace, if any."); maskWS->mutableRun().addProperty("Filename",CalFilename); setProperty("OutputMaskWorkspace", maskWS); } LoadCalFile::readCalFile(CalFilename, groupWS, offsetsWS, maskWS); }
/** Execute the algorithm. */ void LoadCalFile::exec() { std::string CalFilename = getPropertyValue("CalFilename"); std::string WorkspaceName = getPropertyValue("WorkspaceName"); bool MakeGroupingWorkspace = getProperty("MakeGroupingWorkspace"); bool MakeOffsetsWorkspace = getProperty("MakeOffsetsWorkspace"); bool MakeMaskWorkspace = getProperty("MakeMaskWorkspace"); if (WorkspaceName.empty()) throw std::invalid_argument("Must specify WorkspaceName."); Instrument_const_sptr inst = LoadCalFile::getInstrument3Ways(this); GroupingWorkspace_sptr groupWS; OffsetsWorkspace_sptr offsetsWS; MaskWorkspace_sptr maskWS; // Title of all workspaces = the file without path std::string title = Poco::Path(CalFilename).getFileName(); // Initialize all required workspaces. if (MakeGroupingWorkspace) { groupWS = GroupingWorkspace_sptr(new GroupingWorkspace(inst)); groupWS->setTitle(title); declareProperty(Kernel::make_unique<WorkspaceProperty<GroupingWorkspace>>( "OutputGroupingWorkspace", WorkspaceName + "_group", Direction::Output), "Set the the output GroupingWorkspace, if any."); groupWS->mutableRun().addProperty("Filename", CalFilename); setProperty("OutputGroupingWorkspace", groupWS); } if (MakeOffsetsWorkspace) { offsetsWS = OffsetsWorkspace_sptr(new OffsetsWorkspace(inst)); offsetsWS->setTitle(title); declareProperty(Kernel::make_unique<WorkspaceProperty<OffsetsWorkspace>>( "OutputOffsetsWorkspace", WorkspaceName + "_offsets", Direction::Output), "Set the the output OffsetsWorkspace, if any."); offsetsWS->mutableRun().addProperty("Filename", CalFilename); setProperty("OutputOffsetsWorkspace", offsetsWS); } if (MakeMaskWorkspace) { maskWS = MaskWorkspace_sptr(new MaskWorkspace(inst)); maskWS->setTitle(title); declareProperty( Kernel::make_unique<WorkspaceProperty<MatrixWorkspace>>( "OutputMaskWorkspace", WorkspaceName + "_mask", Direction::Output), "Set the the output MaskWorkspace, if any."); maskWS->mutableRun().addProperty("Filename", CalFilename); setProperty("OutputMaskWorkspace", maskWS); } LoadCalFile::readCalFile(CalFilename, groupWS, offsetsWS, maskWS); if (MakeOffsetsWorkspace) { auto alg = createChildAlgorithm("ConvertDiffCal"); alg->setProperty("OffsetsWorkspace", offsetsWS); alg->executeAsChildAlg(); ITableWorkspace_sptr calWS = alg->getProperty("OutputWorkspace"); calWS->setTitle(title); declareProperty( Kernel::make_unique<WorkspaceProperty<ITableWorkspace>>( "OutputCalWorkspace", WorkspaceName + "_cal", Direction::Output), "Set the output Diffraction Calibration workspace, if any."); setProperty("OutputCalWorkspace", calWS); } }