From 2679bc6b9c4ae45175113ca4a2e5a7c4eddd5f45 Mon Sep 17 00:00:00 2001
From: LabatAllee Lucie <lucie.labat-allee@c-s.fr>
Date: Fri, 10 Feb 2017 11:56:57 +0100
Subject: [PATCH] prepare to merge mutual methods from Refining and
 InterRefining

---
 .../refining/models/PleiadesViewingModel.java |   4 +-
 .../java/AffinagePleiades/InterRefining.java  | 115 ++++++++----------
 .../java/AffinagePleiades/Refining.java       |  87 +++++++++----
 3 files changed, 113 insertions(+), 93 deletions(-)

diff --git a/src/main/java/org/orekit/rugged/refining/models/PleiadesViewingModel.java b/src/main/java/org/orekit/rugged/refining/models/PleiadesViewingModel.java
index f887f0b7..62ca529f 100644
--- a/src/main/java/org/orekit/rugged/refining/models/PleiadesViewingModel.java
+++ b/src/main/java/org/orekit/rugged/refining/models/PleiadesViewingModel.java
@@ -70,8 +70,8 @@ public class PleiadesViewingModel {
      *  sensorName="line", incidenceAngle = 0.0, date = "2016-01-01T12:00:00.0"
      * </p>
      */
-    public PleiadesViewingModel() throws RuggedException, OrekitException {	
-        this("line",0.0,"2016-01-01T12:00:00.0");	
+    public PleiadesViewingModel(final String sensorName) throws RuggedException, OrekitException {	
+        this(sensorName,0.0,"2016-01-01T12:00:00.0");	
     }
     
     /** PleiadesViewingModel constructor
diff --git a/src/tutorials/java/AffinagePleiades/InterRefining.java b/src/tutorials/java/AffinagePleiades/InterRefining.java
index 479ca2ae..d55ed3ee 100644
--- a/src/tutorials/java/AffinagePleiades/InterRefining.java
+++ b/src/tutorials/java/AffinagePleiades/InterRefining.java
@@ -84,10 +84,10 @@ public class InterRefining {
     OrbitModel orbitmodelB;
     
     /** Sensor name A corresponding to viewing model A */
-    String SensorNameA;
+    String sensorNameA;
     
     /** Sensor name A corresponding to viewing model B */
-    String SensorNameB;
+    String sensorNameB;
     
 
     /** RuggedA 's instance */
@@ -96,7 +96,7 @@ public class InterRefining {
     /** RuggedB 's instance */
     Rugged ruggedB;
 
-    /** Measurements */
+    /** Inter-measurements (between both viewing models) */
     InterMeasureGenerator measures;
     
     /**
@@ -104,17 +104,17 @@ public class InterRefining {
      */
     public InterRefining() throws RuggedException, OrekitException {
     
-        SensorNameA = "SensorA";
+        sensorNameA = "SensorA";
         final double incidenceAngleA = -5.0;
         final String dateA = "2016-01-01T11:59:50.0";
         
-        pleiadesViewingModelA = new PleiadesViewingModel(SensorNameA, incidenceAngleA, dateA);
+        pleiadesViewingModelA = new PleiadesViewingModel(sensorNameA, incidenceAngleA, dateA);
        
-        SensorNameB = "SensorB";
+        sensorNameB = "SensorB";
         final double incidenceAngleB = 0.0;
         final String dateB = "2016-01-01T12:02:50.0";
 
-        pleiadesViewingModelB = new PleiadesViewingModel(SensorNameB, incidenceAngleB, dateB);
+        pleiadesViewingModelB = new PleiadesViewingModel(sensorNameB, incidenceAngleB, dateB);
         
         orbitmodelA =  new OrbitModel();
         orbitmodelB =  new OrbitModel();
@@ -308,7 +308,14 @@ public class InterRefining {
             
             // Check estimated values
             // ----------------------
-            refining.paramsEstimation(rollValueA, pitchValueA, factorValue, rollValueB, pitchValueB);
+            System.out.format("\n**** Check parameters ajustement **** %n");
+            System.out.format("Acquisition A:%n");
+            refining.paramsEstimation(refining.getRuggedA(), refining.getSensorNameA(),
+                                      rollValueA, pitchValueA, factorValue);
+            System.out.format("Acquisition B:%n");
+            refining.paramsEstimation(refining.getRuggedB(), refining.getSensorNameB(),
+                                      rollValueB, pitchValueB, factorValue);
+            //refining.paramsEstimation(rollValueA, pitchValueA, factorValue, rollValueB, pitchValueB);
              
             
             // Compute statistics
@@ -409,7 +416,7 @@ public class InterRefining {
      * @return the sensorNameA
      */
     public String getSensorNameA() {
-        return SensorNameA;
+        return sensorNameA;
     }
 
 
@@ -418,7 +425,7 @@ public class InterRefining {
      * @return the sensorNameB
      */
     public String getSensorNameB() {
-        return SensorNameB;
+        return sensorNameB;
     }
 
 
@@ -513,9 +520,11 @@ public class InterRefining {
  
 
     /** Apply disruptions on acquisition A or B
-     * @param  rollValue rotation on roll value
-     * @param  pitchValue rotation on pitch value
-     * @param  factorValue scale factor
+     * @param rugged Rugged instance
+     * @param sensorName line sensor name
+     * @param rollValue rotation on roll value
+     * @param pitchValue rotation on pitch value
+     * @param factorValue scale factor
      * @throws OrekitException 
      * @throws RuggedException 
      */
@@ -557,6 +566,7 @@ public class InterRefining {
         final double earthConstraintWeight = 0.1;   // earth constraint weight
         // TODO: faire le cas sans contraintes
 
+        /* Generate measures with constraints on Earth distance */
         InterMeasureGenerator measures = new InterMeasureGenerator(pleiadesViewingModelA,ruggedA,
                                                                   pleiadesViewingModelB,ruggedB,
                                                                   outlierValue,
@@ -613,7 +623,9 @@ public class InterRefining {
     }
 
 
-    /** Reset models
+    /** Reset a model
+     * @param rugged Rugged instance
+     * @param sensorName line sensor name
      * @throws OrekitException 
      * @throws RuggedException 
      */
@@ -674,70 +686,45 @@ public class InterRefining {
     
     
     /** Check parameters estimation
+     * @param rugged Rugged instance
+     * @param sensorName line sensor name
+     * @param rollValue rotation on roll value
+     * @param pitchValue rotation on pitch value
+     * @param factorValue scale factor
      * @throws OrekitException 
      * @throws RuggedException 
      */
-    public void paramsEstimation(double rollValueA, double pitchValueA, double factorValue,
-                                 double rollValueB, double pitchValueB) throws OrekitException, RuggedException {
+    public void paramsEstimation(Rugged rugged, String sensorName,
+                                 double rollValue, double pitchValue, double factorValue) throws OrekitException, RuggedException {
         
         final String commonFactorName = "factor";
         
-        System.out.format("\n**** Check parameters ajustement **** %n");
-        
-        // Acquisition A
-        // -------------
-        // Estimate roll 
-        double estRollA = ruggedA.getLineSensor(pleiadesViewingModelA.getSensorName()).
+        // Estimate Roll
+        double estimatedRoll = rugged.getLineSensor(sensorName).
                                       getParametersDrivers().
-                                      filter(driver -> driver.getName().equals(SensorNameA+"_roll")).
+                                      filter(driver -> driver.getName().equals(sensorName+"_roll")).
                                       findFirst().get().getValue();
-        double rollErrorA = (estRollA - rollValueA);
-        System.out.format("Estimated roll A: %3.5f\troll error: %3.6e%n", estRollA, rollErrorA);
-
-        // Estimate pitch 
-        double estPitchA = ruggedA.getLineSensor(pleiadesViewingModelA.getSensorName()).
-                                       getParametersDrivers().
-                                       filter(driver -> driver.getName().equals(SensorNameA+"_pitch")).
-                                       findFirst().get().getValue();
-        double pitchErrorA = (estPitchA - pitchValueA);
-        System.out.format("Estimated pitch A: %3.5f\tpitch error: %3.6e%n", estPitchA, pitchErrorA);
         
-        // Estimate scale factor
-        double estFactorA = ruggedA.getLineSensor(pleiadesViewingModelA.getSensorName()).
-                getParametersDrivers().
-                filter(driver -> driver.getName().equals(commonFactorName)).
-                findFirst().get().getValue();
-        double factorErrorA = (estFactorA - factorValue);
-        System.out.format("Estimated factor A: %3.5f\tfactor error: %3.6e%n", estFactorA, factorErrorA);
-
-        
-        // Acquisition B
-        // -------------
-        // Estimate roll
-        double estRollB = ruggedB.getLineSensor(pleiadesViewingModelB.getSensorName()).
-                                      getParametersDrivers().
-                                      filter(driver -> driver.getName().equals(SensorNameB+"_roll")).
-                                      findFirst().get().getValue();
-        double rollErrorB = (estRollB - rollValueB);
-        System.out.format("Estimated roll B: %3.5f\troll error: %3.6e%n", estRollB, rollErrorB);
+        double rollError = (estimatedRoll - rollValue);
+        System.out.format("Estimated roll: %3.5f\troll error: %3.6e %n", estimatedRoll, rollError);
 
         // Estimate pitch
-        double estPitchB = ruggedB.getLineSensor(pleiadesViewingModelB.getSensorName()).
+        double estimatedPitch = rugged.getLineSensor(sensorName).
                                        getParametersDrivers().
-                                       filter(driver -> driver.getName().equals(SensorNameB+"_pitch")).
+                                       filter(driver -> driver.getName().equals(sensorName+"_pitch")).
                                        findFirst().get().getValue();
-        double pitchErrorB = (estPitchB - pitchValueB);
-        System.out.format("Estimated pitch B: %3.5f\tpitch error: %3.6e%n", estPitchB, pitchErrorB);
         
-     // Estimate scale factor
-        double estFactorB = ruggedB.getLineSensor(pleiadesViewingModelB.getSensorName()).
-                getParametersDrivers().
-                filter(driver -> driver.getName().equals(commonFactorName)).
-                findFirst().get().getValue();
-        double factorErrorB = (estFactorB - factorValue);
-        System.out.format("Estimated factor B: %3.5f\tfactor error: %3.6e%n", estFactorB, factorErrorB);
-
+        double pitchError = (estimatedPitch - pitchValue);
+        System.out.format("Estimated pitch: %3.5f\tpitch error: %3.6e %n", estimatedPitch, pitchError);
+
+        // Estimate factor
+        double estimatedFactor = rugged.getLineSensor(sensorName).
+                                        getParametersDrivers().
+                                        filter(driver -> driver.getName().equals(commonFactorName)).
+                                        findFirst().get().getValue();
+        
+        double factorError = (estimatedFactor - factorValue);
+        System.out.format("Estimated factor: %3.5f\tfactor error: %3.6e %n", estimatedFactor, factorError);
     }
 
-
 }
diff --git a/src/tutorials/java/AffinagePleiades/Refining.java b/src/tutorials/java/AffinagePleiades/Refining.java
index 6ff7e7ef..783f8936 100644
--- a/src/tutorials/java/AffinagePleiades/Refining.java
+++ b/src/tutorials/java/AffinagePleiades/Refining.java
@@ -73,10 +73,13 @@ public class Refining {
     /** Orbit model */
     OrbitModel orbitmodel;
     
+    /** Sensor name */
+    String sensorName;
+    
     /** Rugged instance */
     Rugged rugged;
     
-    /** Measurements */
+    /** Ground measurements */
     GroundMeasureGenerator measures;
         
     
@@ -85,7 +88,8 @@ public class Refining {
      */
     public Refining() throws RuggedException, OrekitException {
     
-        pleiadesViewingModel = new PleiadesViewingModel();
+        sensorName = "line";
+        pleiadesViewingModel = new PleiadesViewingModel(sensorName);
         orbitmodel =  new OrbitModel();
     }
     
@@ -182,7 +186,8 @@ public class Refining {
             System.out.format("roll: %3.5f \tpitch: %3.5f \tfactor: %3.5f \n",rollValue, pitchValue, factorValue);
                         
             // Apply disruptions on physical model
-            refining.applyDisruptions(rollValue, pitchValue, factorValue);
+            refining.applyDisruptions(refining.getRugged(), refining.getSensorName(),
+                                      rollValue, pitchValue, factorValue);
                         
 
             // Generate measures (observations) from physical model disrupted
@@ -200,7 +205,7 @@ public class Refining {
             // Initialize physical model without disruptions
             // ---------------------------------------------
             System.out.format("\n**** Initialize physical model without disruptions: reset Roll/Pitch/Factor **** %n");
-            refining.resetModel();
+            refining.resetModel(refining.getRugged(), refining.getSensorName());
             
             
             // Compute initial residues
@@ -217,7 +222,9 @@ public class Refining {
             
             // Check estimated values
             // ----------------------
-            refining.paramsEstimation(rollValue, pitchValue, factorValue);
+            System.out.format("\n**** Check parameters ajustement **** %n");
+            refining.paramsEstimation(refining.getRugged(), refining.getSensorName(),
+                                      rollValue, pitchValue, factorValue);
                         
             
             // Compute statistics
@@ -272,6 +279,15 @@ public class Refining {
         this.orbitmodel = orbitmodel;
     }
 
+    
+    /**
+     * @return the sensorName
+     */
+    public String getSensorName() {
+        return sensorName;
+    }
+
+    
     /**
      * @return the rugged
      */
@@ -338,31 +354,36 @@ public class Refining {
     
     
     /** Apply disruptions
+     * @param rugged Rugged instance
+     * @param sensorName line sensor name
      * @param  rollValue rotation on roll value
      * @param  pitchValue rotation on pitch value
      * @param  factorValue scale factor
      * @throws OrekitException 
      * @throws RuggedException 
      */
-    public void applyDisruptions(double rollValue, double pitchValue, double factorValue) throws OrekitException, RuggedException {
-    
+    public void applyDisruptions(Rugged rugged, String sensorName, double rollValue, double pitchValue, double factorValue) throws OrekitException, RuggedException {
+        
+        final String commonFactorName = "factor";
+
         rugged.
-        getLineSensor("line").
+        getLineSensor(sensorName).
         getParametersDrivers().
-        filter(driver -> driver.getName().equals("line_roll")).
+        filter(driver -> driver.getName().equals(sensorName+"_roll")).
         findFirst().get().setValue(rollValue);
 
         rugged.
-        getLineSensor("line").
+        getLineSensor(sensorName).
         getParametersDrivers().
-        filter(driver -> driver.getName().equals("line_pitch")).
+        filter(driver -> driver.getName().equals(sensorName+"_pitch")).
         findFirst().get().setValue(pitchValue);
         
         rugged.
-        getLineSensor("line").
+        getLineSensor(sensorName).
         getParametersDrivers().
-        filter(driver -> driver.getName().equals("factor")).
+        filter(driver -> driver.getName().equals(commonFactorName)).
         findFirst().get().setValue(factorValue);
+ 
     }
     
     
@@ -426,16 +447,21 @@ public class Refining {
     }
     
     
-    /** Reset models
+    /** Reset a model
+     * @param rugged Rugged instance
+     * @param sensorName line sensor name
      * @throws OrekitException 
      * @throws RuggedException 
      */
-    public void resetModel() throws OrekitException, RuggedException {
+    public void resetModel(Rugged rugged, String sensorName) throws OrekitException, RuggedException {
     
+        final String commonFactorName = "factor";
+        
         rugged.
-        getLineSensor(pleiadesViewingModel.getSensorName()).
+        getLineSensor(sensorName).
         getParametersDrivers().
-        filter(driver -> driver.getName().equals("line_roll") || driver.getName().equals("line_pitch")).
+        filter(driver -> driver.getName().equals(sensorName+"_roll") 
+               || driver.getName().equals(sensorName+"_pitch")).
         forEach(driver -> {
             try {
                 driver.setSelected(true);
@@ -445,9 +471,9 @@ public class Refining {
             }
         });
         rugged.
-        getLineSensor(pleiadesViewingModel.getSensorName()).
+        getLineSensor(sensorName).
         getParametersDrivers().
-        filter(driver -> driver.getName().equals("factor")).
+        filter(driver -> driver.getName().equals(commonFactorName)).
         forEach(driver -> {
             try {
                 driver.setSelected(true);
@@ -484,34 +510,41 @@ public class Refining {
 
     
     /** Check parameters estimation
+     * @param rugged Rugged instance
+     * @param sensorName line sensor name
+     * @param  rollValue rotation on roll value
+     * @param  pitchValue rotation on pitch value
+     * @param  factorValue scale factor
      * @throws OrekitException 
      * @throws RuggedException 
      */
-    public void paramsEstimation(double rollValue, double pitchValue, double factorValue) throws OrekitException, RuggedException {
+    public void paramsEstimation(Rugged rugged, String sensorName,
+                                 double rollValue, double pitchValue, double factorValue) throws OrekitException, RuggedException {
+        
+        final String commonFactorName = "factor";
         
-        System.out.format("\n**** Check parameters ajustement **** %n");
         // Estimate Roll
-        double estimatedRoll = rugged.getLineSensor(pleiadesViewingModel.getSensorName()).
+        double estimatedRoll = rugged.getLineSensor(sensorName).
                                       getParametersDrivers().
-                                      filter(driver -> driver.getName().equals("line_roll")).
+                                      filter(driver -> driver.getName().equals(sensorName+"_roll")).
                                       findFirst().get().getValue();
         
         double rollError = (estimatedRoll - rollValue);
         System.out.format("Estimated roll: %3.5f\troll error: %3.6e %n", estimatedRoll, rollError);
 
         // Estimate pitch
-        double estimatedPitch = rugged.getLineSensor(pleiadesViewingModel.getSensorName()).
+        double estimatedPitch = rugged.getLineSensor(sensorName).
                                        getParametersDrivers().
-                                       filter(driver -> driver.getName().equals("line_pitch")).
+                                       filter(driver -> driver.getName().equals(sensorName+"_pitch")).
                                        findFirst().get().getValue();
         
         double pitchError = (estimatedPitch - pitchValue);
         System.out.format("Estimated pitch: %3.5f\tpitch error: %3.6e %n", estimatedPitch, pitchError);
 
         // Estimate factor
-        double estimatedFactor = rugged.getLineSensor(pleiadesViewingModel.getSensorName()).
+        double estimatedFactor = rugged.getLineSensor(sensorName).
                                         getParametersDrivers().
-                                        filter(driver -> driver.getName().equals("factor")).
+                                        filter(driver -> driver.getName().equals(commonFactorName)).
                                         findFirst().get().getValue();
         
         double factorError = (estimatedFactor - factorValue);
-- 
GitLab