From 742bf48563012a721185d37cc99c8ba7d9e51b6f Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de>
Date: Tue, 17 Oct 2023 10:17:22 +0200
Subject: [PATCH] + example Resolution.py

---
 auto/Examples/scatter2d/Resolution.py     | 58 +++++++++++++++++++++++
 auto/MiniExamples/scatter2d/Resolution.py | 58 +++++++++++++++++++++++
 rawEx/scatter2d/Resolution.py             | 58 +++++++++++++++++++++++
 3 files changed, 174 insertions(+)
 create mode 100755 auto/Examples/scatter2d/Resolution.py
 create mode 100755 auto/MiniExamples/scatter2d/Resolution.py
 create mode 100755 rawEx/scatter2d/Resolution.py

diff --git a/auto/Examples/scatter2d/Resolution.py b/auto/Examples/scatter2d/Resolution.py
new file mode 100755
index 00000000000..a58f9fc8d66
--- /dev/null
+++ b/auto/Examples/scatter2d/Resolution.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python3
+"""
+Basic GISAS from oriented boxes, with different detector resolutions.
+"""
+import bornagain as ba
+from bornagain import ba_plot as bp, deg, nm
+
+
+def get_sample():
+    """
+    Dilute random assembly of oriented boxes on a substrate.
+    """
+    from bornagain import std_samples
+
+    mat = ba.RefractiveMaterial("Particle", 6e-4, 2e-08)
+    ff = ba.Box(30*nm, 30*nm, 30*nm)
+    particle = ba.Particle(mat, ff)
+
+    return std_samples.substrate_plus_particle(particle)
+
+
+if __name__ == '__main__':
+    sample = get_sample()
+
+    # Beam
+    wavelength = 0.1*nm
+    alpha_i = 0.2*deg
+    beam = ba.Beam(1, wavelength, alpha_i)
+
+    # Detector
+    nx = 142
+    ny = 200
+    detector = ba.FlatDetector(nx, ny, 107, 140, beam, ba.FlatDetector.X,
+                               2000, 0, -140/2)
+
+    results = []
+
+    simulation = ba.ScatteringSimulation(beam, sample, detector)
+    result = simulation.simulate()
+    result.setTitle("no resolution")
+    results.append(result)
+
+    detector.setResolutionFunction(
+        ba.ResolutionFunction2DGaussian(5, 1))
+    simulation = ba.ScatteringSimulation(beam, sample, detector)
+    result = simulation.simulate()
+    result.setTitle("resolution 5, 1")
+    results.append(result)
+
+    detector.setResolutionFunction(
+        ba.ResolutionFunction2DGaussian(5, 5))
+    simulation = ba.ScatteringSimulation(beam, sample, detector)
+    result = simulation.simulate()
+    result.setTitle("resolution 5, 5")
+    results.append(result)
+
+    bp.make_plot_row(results)
+    bp.show_or_export()
diff --git a/auto/MiniExamples/scatter2d/Resolution.py b/auto/MiniExamples/scatter2d/Resolution.py
new file mode 100755
index 00000000000..211f62a3d92
--- /dev/null
+++ b/auto/MiniExamples/scatter2d/Resolution.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python3
+"""
+Basic GISAS from oriented boxes, with different detector resolutions.
+"""
+import bornagain as ba
+from bornagain import ba_plot as bp, deg, nm
+
+
+def get_sample():
+    """
+    Dilute random assembly of oriented boxes on a substrate.
+    """
+    from bornagain import std_samples
+
+    mat = ba.RefractiveMaterial("Particle", 6e-4, 2e-08)
+    ff = ba.Box(30*nm, 30*nm, 30*nm)
+    particle = ba.Particle(mat, ff)
+
+    return std_samples.substrate_plus_particle(particle)
+
+
+if __name__ == '__main__':
+    sample = get_sample()
+
+    # Beam
+    wavelength = 0.1*nm
+    alpha_i = 0.2*deg
+    beam = ba.Beam(1, wavelength, alpha_i)
+
+    # Detector
+    nx = 7
+    ny = 11
+    detector = ba.FlatDetector(nx, ny, 107, 140, beam, ba.FlatDetector.X,
+                               2000, 0, -140/2)
+
+    results = []
+
+    simulation = ba.ScatteringSimulation(beam, sample, detector)
+    result = simulation.simulate()
+    result.setTitle("no resolution")
+    results.append(result)
+
+    detector.setResolutionFunction(
+        ba.ResolutionFunction2DGaussian(5, 1))
+    simulation = ba.ScatteringSimulation(beam, sample, detector)
+    result = simulation.simulate()
+    result.setTitle("resolution 5, 1")
+    results.append(result)
+
+    detector.setResolutionFunction(
+        ba.ResolutionFunction2DGaussian(5, 5))
+    simulation = ba.ScatteringSimulation(beam, sample, detector)
+    result = simulation.simulate()
+    result.setTitle("resolution 5, 5")
+    results.append(result)
+
+    bp.make_plot_row(results)
+    bp.show_or_export()
diff --git a/rawEx/scatter2d/Resolution.py b/rawEx/scatter2d/Resolution.py
new file mode 100755
index 00000000000..400c40c5ff6
--- /dev/null
+++ b/rawEx/scatter2d/Resolution.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python3
+"""
+Basic GISAS from oriented boxes, with different detector resolutions.
+"""
+import bornagain as ba
+from bornagain import ba_plot as bp, deg, nm
+
+
+def get_sample():
+    """
+    Dilute random assembly of oriented boxes on a substrate.
+    """
+    from bornagain import std_samples
+
+    mat = ba.RefractiveMaterial("Particle", 6e-4, 2e-08)
+    ff = ba.Box(30*nm, 30*nm, 30*nm)
+    particle = ba.Particle(mat, ff)
+
+    return std_samples.substrate_plus_particle(particle)
+
+
+if __name__ == '__main__':
+    sample = get_sample()
+
+    # Beam
+    wavelength = 0.1*nm
+    alpha_i = 0.2*deg
+    beam = ba.Beam(1, wavelength, alpha_i)
+
+    # Detector
+    nx = <%= sm ?  7 : 142 %>
+    ny = <%= sm ? 11 : 200 %>
+    detector = ba.FlatDetector(nx, ny, 107, 140, beam, ba.FlatDetector.X,
+                               2000, 0, -140/2)
+
+    results = []
+
+    simulation = ba.ScatteringSimulation(beam, sample, detector)
+    result = simulation.simulate()
+    result.setTitle("no resolution")
+    results.append(result)
+
+    detector.setResolutionFunction(
+        ba.ResolutionFunction2DGaussian(5, 1))
+    simulation = ba.ScatteringSimulation(beam, sample, detector)
+    result = simulation.simulate()
+    result.setTitle("resolution 5, 1")
+    results.append(result)
+
+    detector.setResolutionFunction(
+        ba.ResolutionFunction2DGaussian(5, 5))
+    simulation = ba.ScatteringSimulation(beam, sample, detector)
+    result = simulation.simulate()
+    result.setTitle("resolution 5, 5")
+    results.append(result)
+
+    bp.make_plot_row(results)
+    bp.show_or_export()
-- 
GitLab