package uk.ac.diamond.scisoft.analysis.processing.operations.expressions;
import org.eclipse.dawnsci.analysis.api.expressions.IExpressionEngine;
import org.eclipse.dawnsci.analysis.api.processing.OperationException;
import org.eclipse.january.dataset.IDataset;
import org.eclipse.dawnsci.analysis.api.metadata.IDiffractionMetadata;
import uk.ac.diamond.scisoft.analysis.diffraction.powder.PixelIntegrationUtils;
public class Expression2DDiffractionOperation extends Expression2DOperation<Expression2DModel> {
@Override
public String getId() {
return "uk.ac.diamond.scisoft.analysis.processing.operations.expressions.Expression2DDiffractionOperation";
}
IDiffractionMetadata meta = null;
IDataset q = null;
IDataset tth = null;
IDataset az = null;
protected void addAdditionalValues(IDataset input, IExpressionEngine engine) throws OperationException {
IDiffractionMetadata md = getFirstDiffractionMetadata(input);
if (md == null) throw new OperationException(this, "No detector calibration information!");
if (!md.equals(meta)) {
meta = md;
q = PixelIntegrationUtils.generateQArray(meta);
tth = PixelIntegrationUtils.generate2ThetaArrayRadians(meta);
az = PixelIntegrationUtils.generateAzimuthalArray(input.getShape(), md, true);
}
if (meta == null) throw new OperationException(this, "No detector calibration information!");
engine.addLoadedVariable("q", q);
engine.addLoadedVariable("tth", tth);
engine.addLoadedVariable("azimuth", az);
engine.addLoadedVariable("energy", 1/(meta.getDiffractionCrystalEnvironment().getWavelength()*0.0806554465));
}
}