/** * This function either shows or hides the given QCheckBox, based on the named property * inside the instrument param file. When hidden, the default state will be used to * reset to the "unused" state of the checkbox. * * @param parameterName :: The name of the property to look for inside the current inst param file. * @param checkBox :: The checkbox to set the state of, and to either hide or show based on the current inst. * @param defaultState :: The state to which the checkbox will be set upon hiding it. */ void IndirectDataReduction::setInstSpecificWidget(const std::string & parameterName, QCheckBox * checkBox, QCheckBox::ToggleState defaultState) { // Get access to instrument specific parameters via the loaded empty workspace. std::string instName = m_uiForm.cbInst->currentText().toStdString(); Mantid::API::MatrixWorkspace_sptr input = boost::dynamic_pointer_cast<Mantid::API::MatrixWorkspace>(Mantid::API::AnalysisDataService::Instance().retrieve("__empty_" + instName)); if(input == NULL) return; Mantid::Geometry::Instrument_const_sptr instr = input->getInstrument(); // See if the instrument params file requests that the checkbox be shown to the user. std::vector<std::string> showParams = instr->getStringParameter(parameterName); std::string show = ""; if(!showParams.empty()) show = showParams[0]; if(show == "Show") checkBox->setHidden(false); else { checkBox->setHidden(true); checkBox->setState(defaultState); } }
/** * 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; }
/** * 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"); }