本文整理汇总了C++中mantid::api::MatrixWorkspace_sptr::getInstrument方法的典型用法代码示例。如果您正苦于以下问题:C++ MatrixWorkspace_sptr::getInstrument方法的具体用法?C++ MatrixWorkspace_sptr::getInstrument怎么用?C++ MatrixWorkspace_sptr::getInstrument使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mantid::api::MatrixWorkspace_sptr
的用法示例。
在下文中一共展示了MatrixWorkspace_sptr::getInstrument方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: provideCollimationLength
/**
* Provide the collimation length which is associated with the instrument
* @param workspace: the input workspace
* @returns the collimation length
*/
double SANSCollimationLengthEstimator::provideCollimationLength(
Mantid::API::MatrixWorkspace_sptr workspace) {
// If the instrument does not have a correction specified then set the length
// to 4
const double defaultLColim = 4.0;
auto collimationLengthID = "collimation-length-correction";
if (!workspace->getInstrument()->hasParameter(collimationLengthID)) {
g_log.error("Error in SANSCollimtionLengthEstimator: The instrument "
"parameter file does not contain a collimation length "
"correction,"
"a default of 4 is provided. Please update the instrument "
"parameter file.");
return defaultLColim;
}
// Get the L1 length
const V3D samplePos = workspace->getInstrument()->getSample()->getPos();
const V3D sourcePos = workspace->getInstrument()->getSource()->getPos();
const V3D SSD = samplePos - sourcePos;
const double L1 = SSD.norm();
auto collimationLengthCorrection =
workspace->getInstrument()->getNumberParameter(collimationLengthID);
if (workspace->getInstrument()->hasParameter(
"special-default-collimation-length-method")) {
auto specialCollimationMethod =
workspace->getInstrument()->getStringParameter(
"special-default-collimation-length-method");
if (specialCollimationMethod[0] == "guide") {
try {
return getCollimationLengthWithGuides(workspace, L1,
collimationLengthCorrection[0]);
} catch (std::invalid_argument &ex) {
g_log.notice() << ex.what();
g_log.notice()
<< "SANSCollimationLengthEstimator: Not using any guides";
return L1 - collimationLengthCorrection[0];
}
} else {
throw std::invalid_argument("Error in SANSCollimationLengthEstimator: "
"Unknown special collimation method.");
}
}
return L1 - collimationLengthCorrection[0];
}
示例2: checkInput
/**
* Check the input workspace
* @param inWS: the input workspace
*/
void TOFSANSResolutionByPixel::checkInput(
Mantid::API::MatrixWorkspace_sptr inWS) {
// Make sure that input workspace has an instrument as we rely heavily on
// thisa
auto inst = inWS->getInstrument();
if (inst->getName().empty()) {
throw std::invalid_argument("TOFSANSResolutionByPixel: The input workspace "
"does not contain an instrument");
}
}
示例3: getEFixed
/**
* 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");
}
示例4: getIDFfromWorkspace
std::string getIDFfromWorkspace(Mantid::API::MatrixWorkspace_sptr workspace) {
auto instrument = workspace->getInstrument();
auto name = instrument->getFullName();
auto date = workspace->getWorkspaceStartDate();
return workspace->getInstrumentFilename(name, date);
}