Skip to content

Commit

Permalink
Define instrument before masking. Refs #11427
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreiSavici committed Apr 8, 2015
1 parent 5e65b4a commit ce48e2e
Showing 1 changed file with 26 additions and 22 deletions.
48 changes: 26 additions & 22 deletions Code/Mantid/Framework/DataHandling/src/LoadNXSPE.cpp
Expand Up @@ -18,6 +18,7 @@
#include <string>
#include <vector>
#include <boost/regex.hpp>
#include <cmath>

namespace Mantid {
namespace DataHandling {
Expand Down Expand Up @@ -245,28 +246,6 @@ void LoadNXSPE::exec() {
outputWS->getAxis(0)->unit() = UnitFactory::Instance().create("DeltaE");
outputWS->setYUnit("SpectraNumber");

std::vector<double>::iterator itdata = data.begin(), iterror = error.begin(),
itdataend, iterrorend;
API::Progress prog = API::Progress(this, 0.0, 0.9, numSpectra);
for (std::size_t i = 0; i < numSpectra; ++i) {
itdataend = itdata + numBins;
iterrorend = iterror + numBins;
outputWS->dataX(i) = energies;
if (((*itdata) == std::numeric_limits<double>::quiet_NaN()) ||
(*itdata <= -1e10)) // masked bin
{
outputWS->dataY(i) = std::vector<double>(numBins, 0);
outputWS->dataE(i) = std::vector<double>(numBins, 0);
pmap.addBool(outputWS->getDetector(i).get(), "masked", true);
} else {
outputWS->dataY(i) = std::vector<double>(itdata, itdataend);
outputWS->dataE(i) = std::vector<double>(iterror, iterrorend);
}
itdata = (itdataend);
iterror = (iterrorend);
prog.report();
}

// add logs
outputWS->mutableRun().addLogData(
new PropertyWithValue<double>("Ei", fixed_energy));
Expand Down Expand Up @@ -311,6 +290,31 @@ void LoadNXSPE::exec() {
instrument->markAsDetector(det);
}

std::vector<double>::iterator itdata = data.begin(), iterror = error.begin(),
itdataend, iterrorend;
API::Progress prog = API::Progress(this, 0.0, 0.9, numSpectra);
for (std::size_t i = 0; i < numSpectra; ++i) {
itdataend = itdata + numBins;
iterrorend = iterror + numBins;
outputWS->dataX(i) = energies;
if ((std::isnan(*itdata)) ||
((*itdata) == std::numeric_limits<double>::infinity()) ||
((*itdata) == -std::numeric_limits<double>::infinity()) ||
(*itdata <= -1e10)) // masked bin
{
outputWS->dataY(i) = std::vector<double>(numBins, 0);
outputWS->dataE(i) = std::vector<double>(numBins, 0);
pmap.addBool(outputWS->getDetector(i).get(), "masked", true);
} else {
outputWS->dataY(i) = std::vector<double>(itdata, itdataend);
outputWS->dataE(i) = std::vector<double>(iterror, iterrorend);
}
itdata = (itdataend);
iterror = (iterrorend);
prog.report();
}


setProperty("OutputWorkspace", outputWS);
}

Expand Down

0 comments on commit ce48e2e

Please sign in to comment.