Skip to content

Commit

Permalink
Merge pull request #38777 from peterfpeterson/bugfix_sumspectra
Browse files Browse the repository at this point in the history
Fix a performance issue in SumSpectra with EventWorkspace
  • Loading branch information
rboston628 authored Feb 1, 2025
2 parents 73d3467 + 09e851a commit 3d4b9dc
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions Framework/Algorithms/src/SumSpectra.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,24 @@ void SumSpectra::execEvent(const MatrixWorkspace_sptr &outputWorkspace, Progress
outputEL.clearDetectorIDs();

const auto &spectrumInfo = inputWorkspace->spectrumInfo();

// count number of events for the output
std::size_t numOutputEvents{0};
for (const auto i : m_indices) {
if (spectrumInfo.hasDetectors(i)) {
// Skip monitors, if the property is set to do so
if (!m_keepMonitors && spectrumInfo.isMonitor(i))
continue;
// Skip masked detectors
if (spectrumInfo.isMasked(i)) {
continue;
}
}
numOutputEvents += inputWorkspace->getSpectrum(i).getNumberEvents();
}

outputEL.reserve(numOutputEvents);

// Loop over spectra
for (const auto i : m_indices) {
if (spectrumInfo.hasDetectors(i)) {
Expand Down

0 comments on commit 3d4b9dc

Please sign in to comment.