diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/Fitting.java @ 3096:d7b0f52d6d04

FixA: Calculate Delta W(t) for reference points, too. flys-artifacts/trunk@4695 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 18 Jun 2012 16:00:19 +0000
parents 0ace00c0c12a
children cbf308f5c41b
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/Fitting.java	Mon Jun 18 14:37:10 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/Fitting.java	Mon Jun 18 16:00:19 2012 +0000
@@ -25,26 +25,26 @@
     private static Logger log = Logger.getLogger(Fitting.class);
 
     /** Use instance of this factory to find meta infos for outliers. */
-    public interface QWFactory {
+    public interface QWDFactory {
 
-        QW create(double q, double w);
+        QWD create(double q, double w);
 
     } // interface QWFactory
 
-    public static final QWFactory QW_FACTORY = new QWFactory() {
+    public static final QWDFactory QWD_FACTORY = new QWDFactory() {
         @Override
-        public QW create(double q, double w) {
-            return new QW(q, w);
+        public QWD create(double q, double w) {
+            return new QWD(q, w);
         }
     };
 
     protected boolean       checkOutliers;
     protected Function      function;
-    protected QWFactory     qwFactory;
+    protected QWDFactory    qwdFactory;
     protected double        chiSqr;
     protected double []     parameters;
     protected ArrayList<QW> removed;
-    protected QW []         referenced;
+    protected QWD []        referenced;
 
 
     public Fitting() {
@@ -52,21 +52,21 @@
     }
 
     public Fitting(Function function) {
-        this(function, QW_FACTORY);
+        this(function, QWD_FACTORY);
     }
 
-    public Fitting(Function function, QWFactory qwFactory) {
-        this(function, qwFactory, false);
+    public Fitting(Function function, QWDFactory qwdFactory) {
+        this(function, qwdFactory, false);
     }
 
     public Fitting(
-        Function  function,
-        QWFactory qwFactory,
-        boolean   checkOutliers
+        Function   function,
+        QWDFactory qwdFactory,
+        boolean    checkOutliers
     ) {
         this();
         this.function      = function;
-        this.qwFactory     = qwFactory;
+        this.qwdFactory    = qwdFactory;
         this.checkOutliers = checkOutliers;
     }
 
@@ -109,8 +109,8 @@
         return removed.toArray(new QW[removed.size()]);
     }
 
-    public QW [] referencedToArray() {
-        return referenced != null ? (QW [])referenced.clone() : null;
+    public QWD [] referencedToArray() {
+        return referenced != null ? (QWD [])referenced.clone() : null;
     }
 
     public double getMaxQ() {
@@ -153,6 +153,8 @@
 
         List<IndexedValue> inputs = new ArrayList<IndexedValue>(xs.size());
 
+        de.intevation.flys.artifacts.math.Function instance = null;
+
         for (;;) {
             CurveFitter cf = new CurveFitter(lmo);
 
@@ -175,8 +177,7 @@
             inputs.clear();
 
             // This is the paraterized function for a given km.
-            de.intevation.flys.artifacts.math.Function instance =
-                function.instantiate(parameters);
+            instance = function.instantiate(parameters);
 
             for (int i = 0, N = xs.size(); i < N; ++i) {
                 double y = instance.value(xs.getQuick(i));
@@ -197,22 +198,24 @@
             for (int i = rem.size()-1; i >= 0; --i) {
                 int idx = rem.get(i).getIndex();
                 removed.add(
-                    qwFactory.create(
+                    qwdFactory.create(
                         xs.getQuick(idx), ys.getQuick(idx)));
                 xs.remove(idx);
                 ys.remove(idx);
             }
         }
 
-        referenced = new QW[xs.size()];
+        referenced = new QWD[xs.size()];
         for (int i = 0; i < referenced.length; ++i) {
-            QW qw = qwFactory.create(xs.getQuick(i), ys.getQuick(i));
+            QWD qwd = qwdFactory.create(xs.getQuick(i), ys.getQuick(i));
 
-            if (qw == null) {
+            if (qwd == null) {
                 log.warn("QW creation failed!");
             }
             else {
-                referenced[i] = qw;
+                referenced[i] = qwd;
+                double dw = (qwd.getW() - instance.value(qwd.getQ()))*100.0;
+                qwd.setDeltaW(dw);
             }
         }
 

http://dive4elements.wald.intevation.org