本文整理汇总了C++中api::MatrixWorkspace_sptr::detectorInfo方法的典型用法代码示例。如果您正苦于以下问题:C++ MatrixWorkspace_sptr::detectorInfo方法的具体用法?C++ MatrixWorkspace_sptr::detectorInfo怎么用?C++ MatrixWorkspace_sptr::detectorInfo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类api::MatrixWorkspace_sptr
的用法示例。
在下文中一共展示了MatrixWorkspace_sptr::detectorInfo方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: exec
/** Execute the algorithm.
*/
void CalculateDIFC::exec() {
DataObjects::OffsetsWorkspace_const_sptr offsetsWs =
getProperty("OffsetsWorkspace");
API::ITableWorkspace_const_sptr calibWs = getProperty("CalibrationWorkspace");
API::MatrixWorkspace_sptr inputWs = getProperty("InputWorkspace");
API::MatrixWorkspace_sptr outputWs = getProperty("OutputWorkspace");
if ((!bool(inputWs == outputWs)) ||
(!bool(boost::dynamic_pointer_cast<SpecialWorkspace2D>(outputWs)))) {
outputWs = boost::dynamic_pointer_cast<MatrixWorkspace>(
boost::make_shared<SpecialWorkspace2D>(inputWs->getInstrument()));
outputWs->setTitle("DIFC workspace");
}
// convert to actual type being used
DataObjects::SpecialWorkspace2D_sptr outputSpecialWs =
boost::dynamic_pointer_cast<DataObjects::SpecialWorkspace2D>(outputWs);
API::Progress progress(this, 0.0, 1.0, inputWs->getNumberHistograms());
if (bool(calibWs)) {
calculateFromTable(progress, *outputSpecialWs, *calibWs);
} else {
// this method handles calculating from instrument geometry as well
const auto &detectorInfo = inputWs->detectorInfo();
calculateFromOffset(progress, *outputSpecialWs, offsetsWs.get(),
detectorInfo);
}
setProperty("OutputWorkspace", outputWs);
}
示例2: invalid_argument
/**
* Calculates the 1D diffractogram based on the supplied function
*
* This method takes a fit function and checks whether it implements the
* IPoldiFunction1D interface. If that's the case, it calculates the
* diffractogram based on the function.
*
* @param fitFunction :: IFunction that also implements IPoldiFunction1D.
* @param workspace :: Workspace with POLDI raw data.
* @return :: Q-based diffractogram.
*/
MatrixWorkspace_sptr PoldiFitPeaks2D::get1DSpectrum(
const IFunction_sptr &fitFunction,
const API::MatrixWorkspace_sptr &workspace) const {
// Check whether the function is of correct type
boost::shared_ptr<IPoldiFunction1D> poldiFunction =
boost::dynamic_pointer_cast<IPoldiFunction1D>(fitFunction);
if (!poldiFunction) {
throw std::invalid_argument("Can only process Poldi2DFunctions.");
}
// And that we have an instrument available
if (!m_poldiInstrument) {
throw std::runtime_error("No POLDI instrument available.");
}
PoldiAbstractDetector_sptr detector(new PoldiDeadWireDecorator(
workspace->detectorInfo(), m_poldiInstrument->detector()));
std::vector<int> indices = detector->availableElements();
// Create the grid for the diffractogram and corresponding domain/values
double lambdaMin = getProperty("LambdaMin");
double lambdaMax = getProperty("LambdaMax");
PoldiDGrid grid(detector, m_poldiInstrument->chopper(), m_deltaT,
std::make_pair(lambdaMin, lambdaMax));
FunctionDomain1DVector domain(grid.grid());
FunctionValues values(domain);
// Calculate 1D function
poldiFunction->poldiFunction1D(indices, domain, values);
// Create and return Q-based workspace with spectrum
return getQSpectrum(domain, values);
}