@Override protected OperationData process(IDataset input, IMonitor monitor) { double theta = 0; try { theta = ScanMetadata.getTheta(input); } catch (Exception e) { } NormalDistribution beamfootprint = new NormalDistribution( 0, (1e-3 * model.getBeamHeight() / 2 * Math.sqrt(2 * Math.log(2) - 0.5))); double areaCorrection = 2 * (beamfootprint.cumulativeProbability( (model.getFootprint() * Math.sin((theta + model.getAngularFudgeFactor()) * Math.PI / 180)))); Dataset output = DatasetUtils.cast(input, Dataset.FLOAT64); output = Maths.multiply(input, areaCorrection); Dataset outputSum = DatasetFactory.createFromObject((DatasetUtils.cast(output, Dataset.FLOAT64)).sum()); return new OperationData(output, outputSum); }