From 02df0db4838e65b2f3bd1475446c7df120d8d13d Mon Sep 17 00:00:00 2001
From: "y.zobus" <y.zobus@gsi.de>
Date: Thu, 17 Oct 2024 14:18:11 +0000
Subject: [PATCH] * fix: :bug: wrong description of AR coating in example.
 worked as intended

* fixed ax limit "bug" in hitmap plots
---
 opossum/examples/ghost_focus.rs               | 19 ++++++++-----------
 opossum/src/nodes/cylindric_lens/mod.rs       |  3 +++
 opossum/src/nodes/detector.rs                 |  2 ++
 opossum/src/nodes/energy_meter.rs             |  2 ++
 opossum/src/nodes/fluence_detector.rs         |  2 ++
 opossum/src/nodes/lens/mod.rs                 |  2 ++
 .../src/nodes/ray_propagation_visualizer.rs   |  3 +++
 opossum/src/nodes/spectrometer.rs             |  3 +++
 opossum/src/nodes/wavefront.rs                |  3 +++
 opossum/src/nodes/wedge/mod.rs                |  2 ++
 opossum/src/surface/hit_map.rs                |  2 +-
 11 files changed, 31 insertions(+), 12 deletions(-)

diff --git a/opossum/examples/ghost_focus.rs b/opossum/examples/ghost_focus.rs
index 338a1102..e2101731 100644
--- a/opossum/examples/ghost_focus.rs
+++ b/opossum/examples/ghost_focus.rs
@@ -4,10 +4,7 @@ use opossum::{
     degree,
     error::OpmResult,
     joule, millimeter,
-    nodes::{
-        collimated_line_ray_source, round_collimated_ray_source, Lens, NodeGroup, SpotDiagram,
-        Wedge,
-    },
+    nodes::{round_collimated_ray_source, Lens, NodeGroup, SpotDiagram, Wedge},
     optic_node::{Alignable, OpticNode},
     optic_ports::PortType,
     refractive_index::RefrIndexConst,
@@ -19,7 +16,7 @@ fn main() -> OpmResult<()> {
     let mut scenery = NodeGroup::default();
     let i_src = scenery.add_node(
         // collimated_line_ray_source(millimeter!(50.), joule!(1.), 3)?
-        round_collimated_ray_source(millimeter!(50.0), joule!(1.0), 1)?,
+        round_collimated_ray_source(millimeter!(50.0), joule!(1.0), 5)?,
     )?;
     let i_sd = scenery.add_node(SpotDiagram::default())?;
 
@@ -44,21 +41,21 @@ fn main() -> OpmResult<()> {
         degree!(10.0),
         &RefrIndexConst::new(1.5)?,
     )?
-    .with_tilt(degree!(0.0, 0.0, 0.0))?;
-    wedge.set_coating(&PortType::Input, "front", &CoatingType::Fresnel)?;
+    .with_tilt(degree!(5.0, 0.0, 0.0))?;
     wedge.set_coating(&PortType::Input, "front", &CoatingType::Fresnel)?;
+    wedge.set_coating(&PortType::Output, "rear", &CoatingType::Fresnel)?;
     let i_w = scenery.add_node(wedge)?;
 
     let i_sd2 = scenery.add_node(SpotDiagram::default())?;
     scenery.connect_nodes(i_src, "out1", i_sd, "in1", millimeter!(20.0))?;
-    scenery.connect_nodes(i_sd, "out1", i_w, "front", millimeter!(80.0))?;
-    // scenery.connect_nodes(i_sd, "out1", i_l, "front", millimeter!(80.0))?;
+    // scenery.connect_nodes(i_sd, "out1", i_w, "front", millimeter!(80.0))?;
+    scenery.connect_nodes(i_sd, "out1", i_l, "front", millimeter!(80.0))?;
     // scenery.connect_nodes(i_l, "rear", i_w, "front", millimeter!(70.0))?;
-    scenery.connect_nodes(i_w, "rear", i_sd2, "in1", millimeter!(70.0))?;
+    scenery.connect_nodes(i_l, "rear", i_sd2, "in1", millimeter!(70.0))?;
 
     let mut doc = OpmDocument::new(scenery);
     let mut config = GhostFocusConfig::default();
-    config.set_max_bounces(1);
+    config.set_max_bounces(2);
     doc.add_analyzer(AnalyzerType::GhostFocus(config));
     doc.save_to_file(Path::new("./opossum/playground/ghost_focus.opm"))
 }
diff --git a/opossum/src/nodes/cylindric_lens/mod.rs b/opossum/src/nodes/cylindric_lens/mod.rs
index 5d4157ce..e4480ca4 100644
--- a/opossum/src/nodes/cylindric_lens/mod.rs
+++ b/opossum/src/nodes/cylindric_lens/mod.rs
@@ -289,10 +289,13 @@ impl OpticNode for CylindricLens {
     fn reset_data(&mut self) {
         self.front_surf.set_backwards_rays_cache(Rays::default());
         self.front_surf.set_forward_rays_cache(Rays::default());
+        self.front_surf.reset_hit_map();
 
         self.rear_surf.set_backwards_rays_cache(Rays::default());
         self.rear_surf.set_forward_rays_cache(Rays::default());
+        self.rear_surf.reset_hit_map();
     }
+
     fn hit_maps(&self) -> HashMap<String, HitMap> {
         let mut map: HashMap<String, HitMap> = HashMap::default();
         map.insert("front".to_string(), self.front_surf.hit_map().to_owned());
diff --git a/opossum/src/nodes/detector.rs b/opossum/src/nodes/detector.rs
index 7f457954..49a90f28 100644
--- a/opossum/src/nodes/detector.rs
+++ b/opossum/src/nodes/detector.rs
@@ -76,6 +76,8 @@ impl OpticNode for Detector {
     }
     fn reset_data(&mut self) {
         self.light_data = None;
+        todo!();
+        // self.surface.reset_hit_map();
     }
 }
 
diff --git a/opossum/src/nodes/energy_meter.rs b/opossum/src/nodes/energy_meter.rs
index 29d3a498..e7cfa5fd 100644
--- a/opossum/src/nodes/energy_meter.rs
+++ b/opossum/src/nodes/energy_meter.rs
@@ -183,6 +183,8 @@ impl OpticNode for EnergyMeter {
     }
     fn reset_data(&mut self) {
         self.light_data = None;
+        todo!();
+        // self.surface.reset_hit_map();
     }
 }
 
diff --git a/opossum/src/nodes/fluence_detector.rs b/opossum/src/nodes/fluence_detector.rs
index 9de6d6e8..ecfaa697 100644
--- a/opossum/src/nodes/fluence_detector.rs
+++ b/opossum/src/nodes/fluence_detector.rs
@@ -159,6 +159,8 @@ impl OpticNode for FluenceDetector {
     }
     fn reset_data(&mut self) {
         self.light_data = None;
+        todo!();
+        // self.surface.reset_hit_map();
     }
 }
 
diff --git a/opossum/src/nodes/lens/mod.rs b/opossum/src/nodes/lens/mod.rs
index 899a0759..f709f0d2 100644
--- a/opossum/src/nodes/lens/mod.rs
+++ b/opossum/src/nodes/lens/mod.rs
@@ -374,9 +374,11 @@ impl OpticNode for Lens {
     fn reset_data(&mut self) {
         self.front_surf.set_backwards_rays_cache(Rays::default());
         self.front_surf.set_forward_rays_cache(Rays::default());
+        self.front_surf.reset_hit_map();
 
         self.rear_surf.set_backwards_rays_cache(Rays::default());
         self.rear_surf.set_forward_rays_cache(Rays::default());
+        self.rear_surf.reset_hit_map();
     }
     fn hit_maps(&self) -> HashMap<String, HitMap> {
         let mut map: HashMap<String, HitMap> = HashMap::default();
diff --git a/opossum/src/nodes/ray_propagation_visualizer.rs b/opossum/src/nodes/ray_propagation_visualizer.rs
index 2aaa6296..522cb92f 100644
--- a/opossum/src/nodes/ray_propagation_visualizer.rs
+++ b/opossum/src/nodes/ray_propagation_visualizer.rs
@@ -156,6 +156,9 @@ impl OpticNode for RayPropagationVisualizer {
     }
     fn reset_data(&mut self) {
         self.light_data = None;
+        todo!();
+
+        // self.surface.reset_hit_map();
     }
 }
 
diff --git a/opossum/src/nodes/spectrometer.rs b/opossum/src/nodes/spectrometer.rs
index df788b1d..ab92d23d 100644
--- a/opossum/src/nodes/spectrometer.rs
+++ b/opossum/src/nodes/spectrometer.rs
@@ -199,6 +199,9 @@ impl OpticNode for Spectrometer {
     }
     fn reset_data(&mut self) {
         self.light_data = None;
+        todo!();
+
+        // self.surface.reset_hit_map();
     }
 }
 
diff --git a/opossum/src/nodes/wavefront.rs b/opossum/src/nodes/wavefront.rs
index 1edbb0de..1f5de720 100644
--- a/opossum/src/nodes/wavefront.rs
+++ b/opossum/src/nodes/wavefront.rs
@@ -264,6 +264,9 @@ impl OpticNode for WaveFront {
     }
     fn reset_data(&mut self) {
         self.light_data = None;
+        todo!();
+
+        // self.surface.reset_hit_map();
     }
 }
 impl From<WaveFrontData> for Proptype {
diff --git a/opossum/src/nodes/wedge/mod.rs b/opossum/src/nodes/wedge/mod.rs
index 996d708d..6e365b29 100644
--- a/opossum/src/nodes/wedge/mod.rs
+++ b/opossum/src/nodes/wedge/mod.rs
@@ -245,9 +245,11 @@ impl OpticNode for Wedge {
     fn reset_data(&mut self) {
         self.front_surf.set_backwards_rays_cache(Rays::default());
         self.front_surf.set_forward_rays_cache(Rays::default());
+        self.front_surf.reset_hit_map();
 
         self.rear_surf.set_backwards_rays_cache(Rays::default());
         self.rear_surf.set_forward_rays_cache(Rays::default());
+        self.rear_surf.reset_hit_map();
     }
     fn hit_maps(&self) -> HashMap<String, HitMap> {
         let mut map: HashMap<String, HitMap> = HashMap::default();
diff --git a/opossum/src/surface/hit_map.rs b/opossum/src/surface/hit_map.rs
index f6636472..3e736d76 100644
--- a/opossum/src/surface/hit_map.rs
+++ b/opossum/src/surface/hit_map.rs
@@ -133,7 +133,7 @@ impl Plottable for HitMap {
         );
         let y_limits = AxLims::create_useful_axlims(
             0.1f64.mul_add(-y_diff, y_min),
-            0.1f64.mul_add(-y_diff, y_min),
+            0.1f64.mul_add(y_diff, y_max),
         );
 
         plt_type.set_plot_param(&PlotArgs::XLim(x_limits))?;
-- 
GitLab