/** * Return an output workspace property dealing with the lack of connection * between of * WorkspaceProperty types * @param propName :: The name of the property * @param loader :: The loader algorithm * @returns A pointer to the OutputWorkspace property of the Child Algorithm */ API::Workspace_sptr Load::getOutputWorkspace(const std::string &propName, const API::IAlgorithm_sptr &loader) const { // @todo Need to try and find a better way using the getValue methods try { return loader->getProperty(propName); } catch (std::runtime_error &) { } // Try a MatrixWorkspace try { MatrixWorkspace_sptr childWS = loader->getProperty(propName); return childWS; } catch (std::runtime_error &) { } // EventWorkspace try { IEventWorkspace_sptr childWS = loader->getProperty(propName); return childWS; } catch (std::runtime_error &) { } // IMDEventWorkspace try { IMDEventWorkspace_sptr childWS = loader->getProperty(propName); return childWS; } catch (std::runtime_error &) { } // General IMDWorkspace try { IMDWorkspace_sptr childWS = loader->getProperty(propName); return childWS; } catch (std::runtime_error &) { } // ITableWorkspace? try { ITableWorkspace_sptr childWS = loader->getProperty(propName); return childWS; } catch (std::runtime_error &) { } // Just workspace? try { Workspace_sptr childWS = loader->getProperty(propName); return childWS; } catch (std::runtime_error &) { } g_log.debug() << "Workspace property " << propName << " did not return to MatrixWorkspace, EventWorkspace, " "IMDEventWorkspace, IMDWorkspace\n"; return Workspace_sptr(); }
/** Loads one run and applies dead-time corrections and detector grouping if * required * @param runNumber :: [input] Run number specifying run to load * @return :: Loaded workspace */ Workspace_sptr PlotAsymmetryByLogValue::doLoad(size_t runNumber) { // Get complete run name std::ostringstream fn, fnn; fnn << std::setw(m_filenameZeros) << std::setfill('0') << runNumber; fn << m_filenameBase << fnn.str() << m_filenameExt; // Check if file exists if (!Poco::File(fn.str()).exists()) { m_log.warning() << "File " << fn.str() << " not found" << std::endl; return Workspace_sptr(); } // Load run IAlgorithm_sptr load = createChildAlgorithm("LoadMuonNexus"); load->setPropertyValue("Filename", fn.str()); load->execute(); Workspace_sptr loadedWs = load->getProperty("OutputWorkspace"); // Check if dead-time corrections have to be applied if (m_dtcType != "None") { Workspace_sptr deadTimes; if (m_dtcType == "FromSpecifiedFile") { // Load corrections from file deadTimes = loadCorrectionsFromFile(m_dtcFile); } else { // Load corrections from run deadTimes = load->getProperty("DeadTimeTable"); } if (!deadTimes) { throw std::runtime_error("Couldn't load dead times"); } applyDeadtimeCorr(loadedWs, deadTimes); } // Group detectors Workspace_sptr grouping; if (m_forward_list.empty() && m_backward_list.empty()) { // Auto group grouping = load->getProperty("DetectorGroupingTable"); } else { // Custom grouping grouping = createCustomGrouping(m_forward_list, m_backward_list); } if (!grouping) throw std::runtime_error("Couldn't load detector grouping"); // Apply grouping groupDetectors(loadedWs, grouping); return loadedWs; }
/** * Retrieve workspace from the ADS. Null pointer returned if nothing was added * under the name. */ Workspace_sptr ScopedWorkspace::retrieve() const { AnalysisDataServiceImpl& ads = AnalysisDataService::Instance(); if ( ads.doesExist(m_name) ) { return ads.retrieveWS<Workspace>(m_name); } return Workspace_sptr(); }