/*
* 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.DoubleDataset;
import org.eclipse.january.dataset.Maths;
public abstract class AbstractPixelIntegration2D extends AbstractPixelIntegration {
int nBinsChi;
DoubleDataset binsChi;
public AbstractPixelIntegration2D(IDiffractionMetadata metadata) {
super(metadata);
this.nBinsChi = nbins;
}
public AbstractPixelIntegration2D(IDiffractionMetadata metadata, int nBins, int nBinsAzimuthal) {
super(metadata, nBins);
this.nBinsChi = nBinsAzimuthal;
}
public AbstractPixelIntegration2D(IDiffractionMetadata metadata, Integer nBins, Integer nBinsAzimuthal) {
super(metadata);
if (nBins != null) this.nbins = nBins;
if (nBinsAzimuthal != null) this.nBinsChi = nBinsAzimuthal;
}
public void setNumberOfAzimuthalBins(int nBins) {
if (nBins < 1) throw new IllegalArgumentException("Must be 1 or more");
this.nBinsChi = nBins;
binsChi = null;
}
@Override
protected void processAndAddToResult(Dataset intensity, Dataset histo, List<Dataset> result,
double[] range, String name) {
super.processAndAddToResult(intensity, histo, result,range, name);
Dataset axis = null;
if (azimuthalRange == null) {
axis = Maths.add(binsChi.getSlice(new int[]{1}, null ,null), binsChi.getSlice(null, new int[]{-1},null));
axis.idivide(2);
} else {
axis = DatasetFactory.createLinearSpace(azimuthalRange[0], azimuthalRange[1], nBinsChi, Dataset.FLOAT64);
}
axis.setName("azimuth");
result.add(axis);
}
}