mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-11 04:17:15 +02:00
2. Dev/add jf pedestal feature (#807)
This commit is contained in:
@ -11,6 +11,7 @@ pybind11_add_module(_slsdet
|
||||
src/current.cpp
|
||||
src/duration.cpp
|
||||
src/DurationWrapper.cpp
|
||||
src/pedestal.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(_slsdet PUBLIC
|
||||
|
12
python/examples/use_pedestalmode.py
Normal file
12
python/examples/use_pedestalmode.py
Normal file
@ -0,0 +1,12 @@
|
||||
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||
from slsdet import Detector, pedestalParameters
|
||||
|
||||
p = pedestalParameters()
|
||||
p.frames = 10
|
||||
p.loops= 20
|
||||
|
||||
|
||||
|
||||
d = Detector()
|
||||
d.pedestalmode = p
|
@ -35,6 +35,7 @@ ext_modules = [
|
||||
'src/scan.cpp',
|
||||
'src/duration.cpp',
|
||||
'src/DurationWrapper.cpp',
|
||||
'src/pedestal.cpp',
|
||||
]
|
||||
|
||||
|
||||
|
@ -27,4 +27,5 @@ IpAddr = _slsdet.IpAddr
|
||||
MacAddr = _slsdet.MacAddr
|
||||
scanParameters = _slsdet.scanParameters
|
||||
currentSrcParameters = _slsdet.currentSrcParameters
|
||||
DurationWrapper = _slsdet.DurationWrapper
|
||||
DurationWrapper = _slsdet.DurationWrapper
|
||||
pedestalParameters = _slsdet.pedestalParameters
|
@ -2866,7 +2866,27 @@ class Detector(CppDetectorApi):
|
||||
@filtercells.setter
|
||||
def filtercells(self, value):
|
||||
ut.set_using_dict(self.setNumberOfFilterCells, value)
|
||||
|
||||
@property
|
||||
@element
|
||||
def pedestalmode(self):
|
||||
"""
|
||||
[Jungfrau] Enables or disables pedestal mode. Pass in a pedestalParameters object
|
||||
see python/examples/use_pedestalmode.py
|
||||
|
||||
Note
|
||||
----
|
||||
The number of frames or triggers is overwritten by #pedestal_frames x pedestal_loops x 2. \n
|
||||
In auto timing mode or in trigger mode with #frames > 1, #frames is overwritten and #triggers = 1, else #triggers is overwritten and #frames = 1. \n
|
||||
One cannot set #frames, #triggers or timing mode in pedestal mode (exception thrown).\n
|
||||
Disabling pedestal mode will set back the normal mode values of #frames and #triggers."
|
||||
"""
|
||||
return self.getPedestalMode()
|
||||
|
||||
@pedestalmode.setter
|
||||
def pedestalmode(self, value):
|
||||
ut.set_using_dict(self.setPedestalMode, value)
|
||||
|
||||
@property
|
||||
def maxclkphaseshift(self):
|
||||
"""
|
||||
|
@ -1270,6 +1270,16 @@ void init_det(py::module &m) {
|
||||
(void (Detector::*)(int, sls::Positions)) &
|
||||
Detector::setNumberOfFilterCells,
|
||||
py::arg(), py::arg() = Positions{});
|
||||
CppDetectorApi.def(
|
||||
"getPedestalMode",
|
||||
(Result<defs::pedestalParameters>(Detector::*)(sls::Positions) const) &
|
||||
Detector::getPedestalMode,
|
||||
py::arg() = Positions{});
|
||||
CppDetectorApi.def(
|
||||
"setPedestalMode",
|
||||
(void (Detector::*)(const defs::pedestalParameters, sls::Positions)) &
|
||||
Detector::setPedestalMode,
|
||||
py::arg(), py::arg() = Positions{});
|
||||
CppDetectorApi.def("getROI",
|
||||
(Result<defs::ROI>(Detector::*)(sls::Positions) const) &
|
||||
Detector::getROI,
|
||||
|
@ -19,6 +19,8 @@ void init_pattern(py::module &);
|
||||
void init_scan(py::module &);
|
||||
void init_source(py::module &);
|
||||
void init_duration(py::module &);
|
||||
void init_pedestal(py::module &);
|
||||
|
||||
PYBIND11_MODULE(_slsdet, m) {
|
||||
m.doc() = R"pbdoc(
|
||||
C/C++ API
|
||||
@ -37,6 +39,7 @@ PYBIND11_MODULE(_slsdet, m) {
|
||||
init_scan(m);
|
||||
init_source(m);
|
||||
init_duration(m);
|
||||
init_pedestal(m);
|
||||
// init_experimental(m);
|
||||
|
||||
py::module io = m.def_submodule("io", "Submodule for io");
|
||||
|
23
python/src/pedestal.cpp
Normal file
23
python/src/pedestal.cpp
Normal file
@ -0,0 +1,23 @@
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||
|
||||
#include "py_headers.h"
|
||||
|
||||
#include "sls/ToString.h"
|
||||
#include "sls/sls_detector_defs.h"
|
||||
|
||||
namespace py = pybind11;
|
||||
void init_pedestal(py::module &m) {
|
||||
|
||||
using src = slsDetectorDefs::pedestalParameters;
|
||||
py::class_<src> pedestalParameters(m, "pedestalParameters");
|
||||
|
||||
pedestalParameters.def(py::init());
|
||||
pedestalParameters.def_readwrite("enable", &src::enable);
|
||||
pedestalParameters.def_readwrite("frames", &src::frames);
|
||||
pedestalParameters.def_readwrite("loops", &src::loops);
|
||||
pedestalParameters.def(pybind11::self == pybind11::self);
|
||||
|
||||
pedestalParameters.def("__repr__",
|
||||
[](const src &a) { return sls::ToString(a); });
|
||||
}
|
Reference in New Issue
Block a user