/*-
* Copyright 2015 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.Arrays;
import uk.ac.diamond.scisoft.analysis.roi.XAxis;
public class PixelIntegrationBean {
private int nBinsAzimuthal = -1;
private int nBinsRadial = -1;
private boolean to1D = true;
private boolean azimuthalIntegration = true;
private boolean usePixelSplitting = false;
private boolean isLog = false;
private double[] azimuthalRange = null;
private double[] radialRange = null;
private XAxis xAxis = XAxis.Q;
private int[] shape = null;
public int getNumberOfBinsAzimuthal() {
return nBinsAzimuthal;
}
public void setNumberOfBinsAzimuthal(int nBinsAzimuthal) {
this.nBinsAzimuthal = nBinsAzimuthal;
}
public int getNumberOfBinsRadial() {
return nBinsRadial;
}
public void setNumberOfBinsRadial(int nBinsRadial) {
this.nBinsRadial = nBinsRadial;
}
public boolean isTo1D() {
return to1D;
}
public void setTo1D(boolean to1d) {
to1D = to1d;
}
public boolean isAzimuthalIntegration() {
return azimuthalIntegration;
}
public void setAzimuthalIntegration(boolean azimuthalIntegration) {
this.azimuthalIntegration = azimuthalIntegration;
}
public boolean isUsePixelSplitting() {
return usePixelSplitting;
}
public void setUsePixelSplitting(boolean usePixelSplitting) {
this.usePixelSplitting = usePixelSplitting;
}
public boolean isLog() {
return isLog;
}
public void setLog(boolean isLog) {
this.isLog = isLog;
}
public double[] getAzimuthalRange() {
return azimuthalRange;
}
public void setAzimuthalRange(double[] azimuthalRange) {
if (azimuthalRange == null) {
this.azimuthalRange = null;
return;
}
double[] range = azimuthalRange.clone();
if (range[0] > range[1]) {
Arrays.sort(range);
}
if (range[0] > range[1]) throw new IllegalArgumentException("Start angle must be smaller than end");
if ((range[1] - range[0]) > 360) throw new IllegalArgumentException("Range must be <= 360");
this.azimuthalRange = range;
}
public double[] getRadialRange() {
return radialRange;
}
public void setRadialRange(double[] radialRange) {
if (radialRange == null) {
this.radialRange = null;
return;
}
this.radialRange = radialRange.clone();
if (xAxis == XAxis.RESOLUTION) {
this.radialRange[0] = (2*Math.PI)/this.radialRange[0];
this.radialRange[1] = (2*Math.PI)/this.radialRange[1];
}
Arrays.sort(this.radialRange);
}
public XAxis getxAxis() {
return xAxis;
}
public void setxAxis(XAxis xAxis) {
this.xAxis = xAxis;
}
@Override
public PixelIntegrationBean clone() {
PixelIntegrationBean bean = new PixelIntegrationBean();
bean.nBinsAzimuthal = nBinsAzimuthal;
bean.nBinsRadial = nBinsRadial;
bean.to1D = to1D;
bean.azimuthalIntegration = azimuthalIntegration;
bean.usePixelSplitting = usePixelSplitting;
bean.isLog = isLog;
bean.azimuthalRange = azimuthalRange != null ? azimuthalRange.clone() : null;
bean.radialRange = radialRange != null ? radialRange.clone() : null;
bean.xAxis = xAxis;
return bean;
}
public int[] getShape() {
return shape;
}
public void setShape(int[] shape) {
this.shape = shape;
}
}