/* * Copyright (c) 2012 Diamond Light Source Ltd. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package uk.ac.diamond.scisoft.analysis.diffraction.powder; import java.util.List; import org.eclipse.dawnsci.analysis.api.metadata.IDiffractionMetadata; import org.eclipse.january.dataset.Dataset; import org.eclipse.january.dataset.DatasetFactory; import org.eclipse.january.dataset.DatasetUtils; import org.eclipse.january.dataset.Maths; public abstract class AbstractPixelIntegration1D extends AbstractPixelIntegration { boolean isAzimuthalIntegration = true; public AbstractPixelIntegration1D(IDiffractionMetadata metadata) { super(metadata); } public AbstractPixelIntegration1D(IDiffractionMetadata metadata, int numBins) { super(metadata, numBins); } public boolean isAzimuthalIntegration() { return isAzimuthalIntegration; } public void setAzimuthalIntegration(boolean isAzimuthalIntegration) { this.isAzimuthalIntegration = isAzimuthalIntegration; } @Override protected void processAndAddToResult(Dataset intensity, Dataset histo, List<Dataset> result, double[] binRange, String name) { Dataset error = intensity.getErrors(); if (error != null) { error.idivide(histo); DatasetUtils.makeFinite(error); } if (isAzimuthalIntegration) { super.processAndAddToResult(intensity, histo, result, binRange, name); } else { Dataset axis = null; if (binRange == null) { axis = Maths.add(binEdges.getSlice(new int[]{1}, null ,null), binEdges.getSlice(null, new int[]{-1},null)); axis.idivide(2); } else { axis = DatasetFactory.createLinearSpace(binRange[0], binRange[1], nbins, Dataset.FLOAT64); } axis.setName("azimuthal angle (degrees)"); intensity.idivide(histo); DatasetUtils.makeFinite(intensity); intensity.setName(name + "_integrated"); result.add(axis); result.add(intensity); } result.get(1).setErrors(error); } }