Source code for blissoda.bm23.exafs_processor
from typing import Any
from typing import Dict
from typing import Optional
from ..exafs import scan_utils
from ..exafs.processor import ExafsProcessor
[docs]
class Bm23ExafsProcessor(ExafsProcessor):
def __init__(
self,
config: Optional[Dict[str, Any]] = None,
defaults: Optional[Dict[str, Any]] = None,
**deprecated_defaults: Dict[str, Any],
) -> None:
defaults = self._merge_defaults(deprecated_defaults, defaults)
defaults.setdefault("workflow", "/users/opd23/ewoks/online.ows")
defaults.setdefault("_scan_type", "trigscan")
counters = defaults.setdefault("_counters", dict())
counters.setdefault(
"cont",
{
"mu_name": "mu_trans",
"energy_name": "energy_cenc",
"energy_unit": "keV",
},
)
counters.setdefault(
"step",
{
"mu_name": "mu_trans",
"energy_name": "eneenc",
"energy_unit": "keV",
},
)
counters.setdefault(
"trigscan",
{
"mu_name": "mu_trans",
"energy_name": "energy_enc",
"energy_unit": "keV",
},
)
super().__init__(config=config, defaults=defaults)
def _scan_type_from_scan(self, scan: scan_utils.ScanType) -> Optional[str]:
if "exafs_step" in getattr(scan, "name", ""):
return "step"
elif "exafs_cont" in getattr(scan, "name", ""):
return "cont"
elif "trigscan" in getattr(scan, "_scan_name", ""):
return "trigscan"
def _multi_xas_scan(self, scan: scan_utils.ScanType) -> bool:
return True
# return scan_utils.is_multi_xas_scan(scan)
def _multi_xas_subscan_size(self, scan: scan_utils.ScanType) -> int:
return scan_utils.multi_xas_subscan_size(scan)