mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-13 21:37:13 +02:00
added counters to python
This commit is contained in:
@ -5,7 +5,7 @@ runStatus = slsDetectorDefs.runStatus
|
||||
speedLevel = slsDetectorDefs.speedLevel
|
||||
dacIndex = slsDetectorDefs.dacIndex
|
||||
|
||||
from .utils import element_if_equal, all_equal
|
||||
from .utils import element_if_equal, all_equal, get_set_bits, list_to_bitmask
|
||||
from .utils import Geometry, to_geo
|
||||
from .registers import Register, Adc_register
|
||||
import datetime as dt
|
||||
@ -752,6 +752,24 @@ class Detector(CppDetectorApi):
|
||||
self.setStoreInRamMode(value)
|
||||
|
||||
|
||||
"""
|
||||
Mythen3 specific
|
||||
"""
|
||||
|
||||
@property
|
||||
def counters(self):
|
||||
mask = self.getCounterMask()
|
||||
mask = element_if_equal(mask)
|
||||
if type(mask) == int:
|
||||
return get_set_bits(mask)
|
||||
else:
|
||||
return [get_set_bits(m) for m in mask]
|
||||
|
||||
|
||||
@counters.setter
|
||||
def counters(self, values):
|
||||
self.setCounterMask(list_to_bitmask(values))
|
||||
|
||||
"""
|
||||
CTB stuff
|
||||
"""
|
||||
|
@ -8,6 +8,23 @@ import functools
|
||||
|
||||
Geometry = namedtuple('Geometry', ['x', 'y'])
|
||||
|
||||
def get_set_bits(mask):
|
||||
"""
|
||||
Return a list of the set bits in a python integer
|
||||
"""
|
||||
return [i for i in range(mask.bit_length()) if (mask>>i)&1]
|
||||
|
||||
def list_to_bitmask(values):
|
||||
"""
|
||||
Convert a list of integers to a bitmask with set bits
|
||||
where the list indicates
|
||||
"""
|
||||
mask = int(0)
|
||||
values = list(set(values)) #Remove duplicates
|
||||
for v in values:
|
||||
mask += 1 << v
|
||||
return mask
|
||||
|
||||
def to_geo(value):
|
||||
if isinstance(value, _sls_detector.xy):
|
||||
return Geometry(x = value.x, y = value.y)
|
||||
|
Reference in New Issue
Block a user