diff --git a/src/blissoda/demo/exafs.py b/src/blissoda/demo/exafs.py index b25aee30749211c4b7b6d82509405e043628567e..e76f81bc1ac4c4b4e1d175022bf123f66d7424cb 100644 --- a/src/blissoda/demo/exafs.py +++ b/src/blissoda/demo/exafs.py @@ -1,9 +1,14 @@ import os try: + from pint import UnitRegistry from bliss import setup_globals except ImportError: + ureg = None setup_globals = None +else: + ureg = UnitRegistry() + from ..exafs.plotter import ExafsPlotter from ..resources.exafs import RESOURCE_ROOT @@ -13,12 +18,13 @@ class DemoExafsPlotter(ExafsPlotter): defaults.setdefault("workflow", os.path.join(RESOURCE_ROOT, "exafs.ows")) defaults.setdefault("_scan_type", "any") counters = defaults.setdefault("_counters", dict()) + energy_unit = setup_globals.energy.unit or "eV" counters.setdefault( "any", { "mu_name": "mu", "energy_name": "energy", - "energy_unit": "eV", + "energy_unit": energy_unit, }, ) super().__init__(**defaults) @@ -29,14 +35,20 @@ class DemoExafsPlotter(ExafsPlotter): def run(self, expo=0.003): e0 = 8800 e1 = 9600 + step_size = 0.5 + intervals = int((e1 - e0) / step_size) - 1 + + from_unit = "eV" + to_unit = self.counters["energy_unit"] + + if ureg: + e0 = (e0 * ureg(from_unit)).to(to_unit).magnitude + e1 = (e1 * ureg(from_unit)).to(to_unit).magnitude + else: + assert from_unit == to_unit, "counters energy unit is wrong" + scan = setup_globals.ascan( - setup_globals.energy, - e0, - e1, - (e1 - e0) * 2, - expo, - setup_globals.mu, - run=False, + setup_globals.energy, e0, e1, intervals, expo, setup_globals.mu, run=False ) super().run(scan)