/** * Gets the eFixed value from the workspace using the instrument parameters. * * @param ws Pointer to the workspace * @return eFixed value */ double IndirectTab::getEFixed(Mantid::API::MatrixWorkspace_sptr ws) { Mantid::Geometry::Instrument_const_sptr inst = ws->getInstrument(); if (!inst) throw std::runtime_error("No instrument on workspace"); // Try to get the parameter form the base instrument if (inst->hasParameter("Efixed")) return inst->getNumberParameter("Efixed")[0]; // Try to get it form the analyser component if (inst->hasParameter("analyser")) { std::string analyserName = inst->getStringParameter("analyser")[0]; auto analyserComp = inst->getComponentByName(analyserName); if (analyserComp && analyserComp->hasParameter("Efixed")) return analyserComp->getNumberParameter("Efixed")[0]; } throw std::runtime_error("Instrument has no efixed parameter"); }
/** * Attempt to extract an instrument double parameter from a specified * instrument. * * @param instrument The instrument to extract the parameter from. * @param parameterName The name of the parameter to extract. * * @return The extracted parameter if it is found, else * boost::none. */ boost::optional<double> CalculatePaalmanPings::getInstrumentParameter( Mantid::Geometry::Instrument_const_sptr instrument, const std::string ¶meterName) { if (instrument->hasParameter(parameterName)) { const auto parameterValue = QString::fromStdString( instrument->getStringParameter(parameterName)[0]); return parameterValue.toDouble(); } return boost::none; }