本文整理汇总了C++中EventWorkspace_sptr::doneAddingEventLists方法的典型用法代码示例。如果您正苦于以下问题:C++ EventWorkspace_sptr::doneAddingEventLists方法的具体用法?C++ EventWorkspace_sptr::doneAddingEventLists怎么用?C++ EventWorkspace_sptr::doneAddingEventLists使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EventWorkspace_sptr
的用法示例。
在下文中一共展示了EventWorkspace_sptr::doneAddingEventLists方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: execEvent
/** Executes the algorithm
*@param localworkspace :: the input workspace
*@param indices :: set of indices to sum up
*/
void SumSpectra::execEvent(EventWorkspace_const_sptr localworkspace, std::set<int> &indices)
{
//Make a brand new EventWorkspace
EventWorkspace_sptr outputWorkspace = boost::dynamic_pointer_cast<EventWorkspace>(
API::WorkspaceFactory::Instance().create("EventWorkspace", 1, 2, 1));
//Copy geometry over.
API::WorkspaceFactory::Instance().initializeFromParent(localworkspace, outputWorkspace, true);
Progress progress(this,0,1, indices.size());
//Get the pointer to the output event list
EventList & outEL = outputWorkspace->getEventList(0);
outEL.setSpectrumNo(m_outSpecId);
outEL.clearDetectorIDs();
// Loop over spectra
std::set<int>::iterator it;
size_t numSpectra(0);
size_t numMasked(0);
size_t numZeros(0);
//for (int i = m_MinSpec; i <= m_MaxSpec; ++i)
for (it = indices.begin(); it != indices.end(); ++it)
{
int i = *it;
//Don't go outside the range.
if ((i >= numberOfSpectra) || (i < 0))
{
g_log.error() << "Invalid index " << i << " was specified. Sum was aborted.\n";
break;
}
try
{
// Get the detector object for this spectrum
Geometry::IDetector_const_sptr det = localworkspace->getDetector(i);
// Skip monitors, if the property is set to do so
if ( !keepMonitors && det->isMonitor() ) continue;
// Skip masked detectors
if ( det->isMasked() )
{
numMasked++;
continue;
}
}
catch(...)
{
// if the detector not found just carry on
}
numSpectra++;
//Add the event lists with the operator
const EventList & tOutEL = localworkspace->getEventList(i);
if(tOutEL.empty())
numZeros++;
else
outEL += tOutEL;
progress.report();
}
//Finalize spectra map etc.
outputWorkspace->doneAddingEventLists();
//Set all X bins on the output
cow_ptr<MantidVec> XValues;
XValues.access() = localworkspace->readX(0);
outputWorkspace->setAllX(XValues);
outputWorkspace->mutableRun().addProperty("NumAllSpectra",int(numSpectra),"",true);
outputWorkspace->mutableRun().addProperty("NumMaskSpectra",int(numMasked),"",true);
outputWorkspace->mutableRun().addProperty("NumZeroSpectra",int(numZeros),"",true);
// Assign it to the output workspace property
setProperty("OutputWorkspace",boost::dynamic_pointer_cast<MatrixWorkspace>(outputWorkspace));
}