From 6ff12aae85aa837ec5f0aaf5923c1ffff630ca2d Mon Sep 17 00:00:00 2001
From: Udo Eisenbarth <u.eisenbarth@gsi.de>
Date: Fri, 28 Jul 2023 17:04:28 +0200
Subject: [PATCH] Improve group example.

Add beam splitter to group. Analysis is still Ok.
Graph display still wrong.
---
 examples/group_test.rs | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/examples/group_test.rs b/examples/group_test.rs
index f79b2ef2..83e5fc39 100644
--- a/examples/group_test.rs
+++ b/examples/group_test.rs
@@ -5,7 +5,7 @@ use opossum::{
     analyzer::AnalyzerEnergy,
     error::OpossumError,
     lightdata::{DataEnergy, LightData},
-    nodes::{Detector, Dummy, NodeGroup, Source},
+    nodes::{BeamSplitter, Detector, Dummy, NodeGroup, Source},
     optic_node::OpticNode,
     optic_scenery::OpticScenery,
     spectrum::create_he_ne_spectrum,
@@ -21,19 +21,20 @@ fn main() -> Result<(), OpossumError> {
             spectrum: create_he_ne_spectrum(1.0),
         })),
     );
-    let i_d = scenery.add_element("Detector", Detector::default());
-
+    let i_d1 = scenery.add_element("Detector1", Detector::default());
+    let i_d2 = scenery.add_element("Detector2", Detector::default());
     let mut group = NodeGroup::new();
-    let i_g_d1 = group.add_node(OpticNode::new("dummy1", Dummy));
-    let i_g_d2 = group.add_node(OpticNode::new("dummy2", Dummy));
-    group.connect_nodes(i_g_d1, "rear", i_g_d2, "front")?;
-    group.map_input_port(i_g_d1, "front", "input")?;
-    group.map_output_port(i_g_d2, "rear", "output")?;
+    let i_g_d = group.add_node(OpticNode::new("dummy1", Dummy));
+    let i_g_bs = group.add_node(OpticNode::new("bs", BeamSplitter::new(0.6)));
+    group.connect_nodes(i_g_d, "rear", i_g_bs, "input1")?;
+    group.map_input_port(i_g_d, "front", "input")?;
+    group.map_output_port(i_g_bs, "out1_trans1_refl2", "output1")?;
+    group.map_output_port(i_g_bs, "out2_trans2_refl1", "output2")?;
     let i_g = scenery.add_element("test group", group);
 
     scenery.connect_nodes(i_s, "out1", i_g, "input")?;
-    scenery.connect_nodes(i_g, "output", i_d, "in1")?;
-
+    scenery.connect_nodes(i_g, "output1", i_d1, "in1")?;
+    scenery.connect_nodes(i_g, "output2", i_d2, "in1")?;
     let path = "group_test.dot";
     let mut output = File::create(path).unwrap();
     write!(output, "{}", scenery.to_dot()).unwrap();
-- 
GitLab