mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 19:30:03 +02:00
dev:removed storage cells for moench (#603)
* removed storage cells for moench * rxr: also setting moench like jungfrau in implementation of ports
This commit is contained in:
parent
eb025b54ef
commit
276dc52196
@ -229,7 +229,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def hardwareversion(self):
|
def hardwareversion(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau][Gotthard2][Myhten3][Gotthard][Ctb][Moench] Hardware version of detector.
|
[Jungfrau][Moench][Gotthard2][Myhten3][Gotthard][Ctb] Hardware version of detector.
|
||||||
"""
|
"""
|
||||||
return ut.lhex(self.getHardwareVersion())
|
return ut.lhex(self.getHardwareVersion())
|
||||||
|
|
||||||
@ -298,7 +298,7 @@ class Detector(CppDetectorApi):
|
|||||||
-----
|
-----
|
||||||
[Eiger] Options: 4, 8, 12, 16, 32. If set to 32, also sets clkdivider to 2 (quarter speed), else to 0 (full speed)\n
|
[Eiger] Options: 4, 8, 12, 16, 32. If set to 32, also sets clkdivider to 2 (quarter speed), else to 0 (full speed)\n
|
||||||
[Mythen3] Options: 8, 16, 32 \n
|
[Mythen3] Options: 8, 16, 32 \n
|
||||||
[Jungfrau][Gotthard][Ctb][Moench][Mythen3][Gotthard2] 16
|
[Jungfrau][Moench][Gotthard][Ctb][Mythen3][Gotthard2] 16
|
||||||
"""
|
"""
|
||||||
return self.getDynamicRange()
|
return self.getDynamicRange()
|
||||||
|
|
||||||
@ -356,10 +356,9 @@ class Detector(CppDetectorApi):
|
|||||||
-----
|
-----
|
||||||
|
|
||||||
[Eiger] Use threshold command to load settings
|
[Eiger] Use threshold command to load settings
|
||||||
[Jungfrau] GAIN0, HIGHGAIN0 \n
|
[Jungfrau][Moench] GAIN0, HIGHGAIN0 \n
|
||||||
[Gotthard] DYNAMICGAIN, HIGHGAIN, LOWGAIN, MEDIUMGAIN, VERYHIGHGAIN \n
|
[Gotthard] DYNAMICGAIN, HIGHGAIN, LOWGAIN, MEDIUMGAIN, VERYHIGHGAIN \n
|
||||||
[Gotthard2] DYNAMICGAIN, FIXGAIN1, FIXGAIN2 \n
|
[Gotthard2] DYNAMICGAIN, FIXGAIN1, FIXGAIN2 \n
|
||||||
[Moench] G1_HIGHGAIN, G1_LOWGAIN, G2_HIGHCAP_HIGHGAIN, G2_HIGHCAP_LOWGAIN, G2_LOWCAP_HIGHGAIN, G2_LOWCAP_LOWGAIN, G4_HIGHGAIN, G4_LOWGAIN \n
|
|
||||||
[Eiger] settings loaded from file found in settingspath
|
[Eiger] settings loaded from file found in settingspath
|
||||||
"""
|
"""
|
||||||
return element_if_equal(self.getSettings())
|
return element_if_equal(self.getSettings())
|
||||||
@ -389,7 +388,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def framesl(self):
|
def framesl(self):
|
||||||
"""
|
"""
|
||||||
[Gotthard][Jungfrau][Mythen3][Gotthard2][CTB][Moench] Number of frames left in acquisition.\n
|
[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][CTB] Number of frames left in acquisition.\n
|
||||||
[Gotthard2] only in continuous auto mode.
|
[Gotthard2] only in continuous auto mode.
|
||||||
|
|
||||||
:setter: Not Implemented
|
:setter: Not Implemented
|
||||||
@ -400,7 +399,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def framecounter(self):
|
def framecounter(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau][Mythen3][Gotthard2][Moench][CTB] Number of frames from start run control.
|
[Jungfrau][Moench][Mythen3][Gotthard2][CTB] Number of frames from start run control.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -429,12 +428,11 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def powerchip(self):
|
def powerchip(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau][Mythen3][Gotthard2][Moench] Power the chip.
|
[Jungfrau][Moench][Mythen3][Gotthard2] Power the chip.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
[Moench] Default is disabled. \n
|
[Jungfrau][Moench] Default is disabled. Get will return power status. Can be off if temperature event occured (temperature over temp_threshold with temp_control enabled. Will configure chip (only chip v1.1).\n
|
||||||
[Jungfrau] Default is disabled. Get will return power status. Can be off if temperature event occured (temperature over temp_threshold with temp_control enabled. Will configure chip (only chip v1.1).\n
|
|
||||||
[Mythen3][Gotthard2] Default is 1. If module not connected or wrong module, powerchip will fail.
|
[Mythen3][Gotthard2] Default is 1. If module not connected or wrong module, powerchip will fail.
|
||||||
"""
|
"""
|
||||||
return self.getPowerChip()
|
return self.getPowerChip()
|
||||||
@ -560,7 +558,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def periodl(self):
|
def periodl(self):
|
||||||
"""
|
"""
|
||||||
[Gotthard][Jungfrau][CTB][Moench][Mythen3][Gotthard2] Period left for current frame.
|
[Gotthard][Jungfrau][Moench][CTB][Mythen3][Gotthard2] Period left for current frame.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -582,7 +580,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def delay(self):
|
def delay(self):
|
||||||
"""
|
"""
|
||||||
[Gotthard][Jungfrau][CTB][Moench][Mythen3][Gotthard2] Delay after trigger, accepts either a value in seconds, DurationWrapper or datetime.timedelta
|
[Gotthard][Jungfrau][Moench][CTB][Mythen3][Gotthard2] Delay after trigger, accepts either a value in seconds, DurationWrapper or datetime.timedelta
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -627,7 +625,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def delayl(self):
|
def delayl(self):
|
||||||
"""
|
"""
|
||||||
[Gotthard][Jungfrau][CTB][Moench][Mythen3][Gotthard2] Delay left after trigger during acquisition, accepts either a value in seconds, datetime.timedelta or DurationWrapper
|
[Gotthard][Jungfrau][Moench][CTB][Mythen3][Gotthard2] Delay left after trigger during acquisition, accepts either a value in seconds, datetime.timedelta or DurationWrapper
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -682,7 +680,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def txdelay(self):
|
def txdelay(self):
|
||||||
"""
|
"""
|
||||||
[Eiger][Jungfrau][Mythen3] Set transmission delay for all modules in the detector using the step size provided.
|
[Eiger][Jungfrau][Moench][Mythen3] Set transmission delay for all modules in the detector using the step size provided.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
@ -690,7 +688,7 @@ class Detector(CppDetectorApi):
|
|||||||
\t\t[Eiger] txdelay_left to (2 * mod_index * n_delay), \n
|
\t\t[Eiger] txdelay_left to (2 * mod_index * n_delay), \n
|
||||||
\t\t[Eiger] txdelay_right to ((2 * mod_index + 1) * n_delay) and \n
|
\t\t[Eiger] txdelay_right to ((2 * mod_index + 1) * n_delay) and \n
|
||||||
\t\t[Eiger] txdelay_frame to (2 *num_modules * n_delay) \n
|
\t\t[Eiger] txdelay_frame to (2 *num_modules * n_delay) \n
|
||||||
\t\t[Jungfrau][Mythen3] txdelay_frame to (num_modules * n_delay)\n\n
|
\t\t[Jungfrau][Moench][Mythen3] txdelay_frame to (num_modules * n_delay)\n\n
|
||||||
Please refer txdelay_left, txdelay_right and txdelay_frame for details.
|
Please refer txdelay_left, txdelay_right and txdelay_frame for details.
|
||||||
"""
|
"""
|
||||||
return self.getTransmissionDelay()
|
return self.getTransmissionDelay()
|
||||||
@ -703,11 +701,11 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def txdelay_frame(self):
|
def txdelay_frame(self):
|
||||||
"""
|
"""
|
||||||
[Eiger][Jungfrau][Mythen3] Transmission delay of first udp packet being streamed out of the module.\n
|
[Eiger][Jungfrau][Moench][Mythen3] Transmission delay of first udp packet being streamed out of the module.\n
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
[Jungfrau] [0-31] Each value represents 1 ms. \n
|
[Jungfrau][Moench] [0-31] Each value represents 1 ms. \n
|
||||||
[Eiger] Additional delay to txdelay_left and txdelay_right. Each value represents 10ns. Typical value is 50000. \n
|
[Eiger] Additional delay to txdelay_left and txdelay_right. Each value represents 10ns. Typical value is 50000. \n
|
||||||
[Mythen3] [0-16777215] Each value represents 8 ns (125 MHz clock), max is 134 ms.
|
[Mythen3] [0-16777215] Each value represents 8 ns (125 MHz clock), max is 134 ms.
|
||||||
"""
|
"""
|
||||||
@ -890,7 +888,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def numinterfaces(self):
|
def numinterfaces(self):
|
||||||
"""[Jungfrau][Gotthard2] Number of udp interfaces to stream data from detector. Default is 1.
|
"""[Jungfrau][Moench][Gotthard2] Number of udp interfaces to stream data from detector. Default is 1.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -1236,11 +1234,11 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def udp_dstip2(self):
|
def udp_dstip2(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau][Gotthard2] Ip address of the receiver (destination) udp interface 2.
|
[Jungfrau][Moench][Gotthard2] Ip address of the receiver (destination) udp interface 2.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
[Jungfrau] bottom half \n
|
[Jungfrau][Moench] bottom half \n
|
||||||
[Gotthard2] veto debugging \n
|
[Gotthard2] veto debugging \n
|
||||||
If 'auto' used, then ip is set to ip of rx_hostname. \n
|
If 'auto' used, then ip is set to ip of rx_hostname. \n
|
||||||
To set IPs for individual modules, use setDestinationUDPIP2.
|
To set IPs for individual modules, use setDestinationUDPIP2.
|
||||||
@ -1289,13 +1287,13 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def udp_dstmac2(self):
|
def udp_dstmac2(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau][Gotthard2] Mac address of the receiver (destination) udp interface 2.
|
[Jungfrau][Moench][Gotthard2] Mac address of the receiver (destination) udp interface 2.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
Not mandatory to set as udp_dstip2 retrieves it from slsReceiver process but must be set if you use a custom receiver (not slsReceiver). \n
|
Not mandatory to set as udp_dstip2 retrieves it from slsReceiver process but must be set if you use a custom receiver (not slsReceiver). \n
|
||||||
To set MACs for individual modules, use setDestinationUDPMAC2. \n
|
To set MACs for individual modules, use setDestinationUDPMAC2. \n
|
||||||
[Jungfrau] bottom half \n
|
[Jungfrau][Moench] bottom half \n
|
||||||
[Gotthard2] veto debugging \n
|
[Gotthard2] veto debugging \n
|
||||||
Use router mac if router between detector and receiver.
|
Use router mac if router between detector and receiver.
|
||||||
|
|
||||||
@ -1340,11 +1338,11 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def udp_srcmac2(self):
|
def udp_srcmac2(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau][Gotthard2] Mac address of the receiver (source) udp interface 2.
|
[Jungfrau][Moench][Gotthard2] Mac address of the receiver (source) udp interface 2.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
[Jungfrau] bottom half \n
|
[Jungfrau][Moench] bottom half \n
|
||||||
[Gotthard2] veto debugging \n
|
[Gotthard2] veto debugging \n
|
||||||
To set MACs for individual modules, use setSourceUDPMAC2.
|
To set MACs for individual modules, use setSourceUDPMAC2.
|
||||||
|
|
||||||
@ -1390,11 +1388,11 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def udp_srcip2(self):
|
def udp_srcip2(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau][Gotthard2] Ip address of the detector (source) udp interface 2.
|
[Jungfrau][Moench][Gotthard2] Ip address of the detector (source) udp interface 2.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
[Jungfrau] bottom half \n
|
[Jungfrau][Moench] bottom half \n
|
||||||
[Gotthard2] veto debugging \n
|
[Gotthard2] veto debugging \n
|
||||||
Must be same subnet as destination udp ip2.\n
|
Must be same subnet as destination udp ip2.\n
|
||||||
To set IPs for individual modules, use setSourceUDPIP2.
|
To set IPs for individual modules, use setSourceUDPIP2.
|
||||||
@ -1440,7 +1438,7 @@ class Detector(CppDetectorApi):
|
|||||||
----
|
----
|
||||||
Default is 50002. \n
|
Default is 50002. \n
|
||||||
[Eiger] right half \n
|
[Eiger] right half \n
|
||||||
[Jungfrau] bottom half \n
|
[Jungfrau][Moench] bottom half \n
|
||||||
[Gotthard2] veto debugging \n
|
[Gotthard2] veto debugging \n
|
||||||
Ports for each module is calculated (incremented by 2) \n
|
Ports for each module is calculated (incremented by 2) \n
|
||||||
To set ports for individual modules, use setDestinationUDPPort2.
|
To set ports for individual modules, use setDestinationUDPPort2.
|
||||||
@ -1460,7 +1458,7 @@ class Detector(CppDetectorApi):
|
|||||||
-----
|
-----
|
||||||
[Gotthard] 0, 90, 110, 120, 150, 180, 200 \n
|
[Gotthard] 0, 90, 110, 120, 150, 180, 200 \n
|
||||||
[Eiger][Mythen3][Gotthard2] 0 - 200 \n
|
[Eiger][Mythen3][Gotthard2] 0 - 200 \n
|
||||||
[Jungfrau][Ctb][Moench] 0, 60 - 200
|
[Jungfrau][Moench][Ctb] 0, 60 - 200
|
||||||
"""
|
"""
|
||||||
return self.getHighVoltage()
|
return self.getHighVoltage()
|
||||||
|
|
||||||
@ -1569,8 +1567,8 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def master(self):
|
def master(self):
|
||||||
"""
|
"""
|
||||||
[Eiger][Gotthard2][Jungfrau] Sets (half) module to master and other(s) to slaves.\n
|
[Eiger][Gotthard2][Jungfrau][Moench] Sets (half) module to master and other(s) to slaves.\n
|
||||||
[Gotthard][Gotthard2][Mythen3][Eiger][Jungfrau] Gets if the current (half) module is master.
|
[Gotthard][Gotthard2][Mythen3][Eiger][Jungfrau][Moench] Gets if the current (half) module is master.
|
||||||
"""
|
"""
|
||||||
return self.getMaster()
|
return self.getMaster()
|
||||||
|
|
||||||
@ -1582,7 +1580,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def sync(self):
|
def sync(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau] Enables or disables synchronization between modules.
|
[Jungfrau][Moench] Enables or disables synchronization between modules.
|
||||||
"""
|
"""
|
||||||
return self.getSynchronization()
|
return self.getSynchronization()
|
||||||
|
|
||||||
@ -1718,7 +1716,7 @@ class Detector(CppDetectorApi):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def adcreg(self):
|
def adcreg(self):
|
||||||
"""[Jungfrau][Ctb][Moench][Gotthard] Writes to an adc register
|
"""[Jungfrau][Moench][Ctb][Gotthard] Writes to an adc register
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -1731,7 +1729,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def adcinvert(self):
|
def adcinvert(self):
|
||||||
"""[Ctb][Moench][Jungfrau] ADC Inversion Mask.
|
"""[Ctb][Jungfrau][Moench] ADC Inversion Mask.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -1747,7 +1745,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def triggersl(self):
|
def triggersl(self):
|
||||||
"""
|
"""
|
||||||
[Gotthard][Jungfrau][Mythen3][Gotthard2][CTB][Moench] Number of triggers left in acquisition.\n
|
[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][CTB] Number of triggers left in acquisition.\n
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
@ -1760,7 +1758,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def frametime(self):
|
def frametime(self):
|
||||||
"""[Jungfrau][Mythen3][Gotthard2][Moench][CTB] Timestamp at a frame start.
|
"""[Jungfrau][Moench][Mythen3][Gotthard2][CTB] Timestamp at a frame start.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
@ -1873,10 +1871,10 @@ class Detector(CppDetectorApi):
|
|||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
[Jungfrau] FULL_SPEED, HALF_SPEED (Default), QUARTER_SPEED
|
[Jungfrau][Moench] FULL_SPEED, HALF_SPEED (Default), QUARTER_SPEED
|
||||||
[Eiger] FULL_SPEED (Default), HALF_SPEED, QUARTER_SPEED
|
[Eiger] FULL_SPEED (Default), HALF_SPEED, QUARTER_SPEED
|
||||||
[Gottthard2] G2_108MHZ (Default), G2_144MHZ
|
[Gottthard2] G2_108MHZ (Default), G2_144MHZ
|
||||||
[Jungfrau] FULL_SPEED option only available from v2.0 boards and is recommended to set number of interfaces to 2. \n
|
[Jungfrau][Moench] FULL_SPEED option only available from v2.0 boards and is recommended to set number of interfaces to 2. \n
|
||||||
Also overwrites adcphase to recommended default.
|
Also overwrites adcphase to recommended default.
|
||||||
"""
|
"""
|
||||||
return element_if_equal(self.getReadoutSpeed())
|
return element_if_equal(self.getReadoutSpeed())
|
||||||
@ -1962,7 +1960,7 @@ class Detector(CppDetectorApi):
|
|||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
Default: AUTO_TIMING \n
|
Default: AUTO_TIMING \n
|
||||||
[Jungfrau][Gotthard][Ctb][Moench][Gotthard2] AUTO_TIMING, TRIGGER_EXPOSURE \n
|
[Jungfrau][Moench][Gotthard][Ctb][Gotthard2] AUTO_TIMING, TRIGGER_EXPOSURE \n
|
||||||
[Mythen3] AUTO_TIMING, TRIGGER_EXPOSURE, GATED, TRIGGER_GATED \n
|
[Mythen3] AUTO_TIMING, TRIGGER_EXPOSURE, GATED, TRIGGER_GATED \n
|
||||||
[Eiger] AUTO_TIMING, TRIGGER_EXPOSURE, GATED, BURST_TRIGGER
|
[Eiger] AUTO_TIMING, TRIGGER_EXPOSURE, GATED, BURST_TRIGGER
|
||||||
"""
|
"""
|
||||||
@ -2121,13 +2119,13 @@ class Detector(CppDetectorApi):
|
|||||||
def readnrows(self):
|
def readnrows(self):
|
||||||
"""
|
"""
|
||||||
[Eiger] Number of rows to read out per half module starting from the centre.
|
[Eiger] Number of rows to read out per half module starting from the centre.
|
||||||
[Jungfrau] Number of rows to read per module starting from the centre.
|
[Jungfrau][Moench] Number of rows to read per module starting from the centre.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
[Eiger] Options: 1 - 256. 256 is default. \n
|
[Eiger] Options: 1 - 256. 256 is default. \n
|
||||||
[Eiger]The permissible values depend on dynamic range and 10Gbe enabled.\n\n
|
[Eiger]The permissible values depend on dynamic range and 10Gbe enabled.\n\n
|
||||||
[Jungfrau] Options: 8 - 512 (multiples of 8)
|
[Jungfrau][Moench] Options: 8 - 512 (multiples of 8)
|
||||||
"""
|
"""
|
||||||
return self.getReadNRows()
|
return self.getReadNRows()
|
||||||
|
|
||||||
@ -2218,7 +2216,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def tengiga(self):
|
def tengiga(self):
|
||||||
"""[Eiger][Ctb][Moench][Mythen3] 10GbE Enable."""
|
"""[Eiger][Ctb][Mythen3] 10GbE Enable."""
|
||||||
return self.getTenGiga()
|
return self.getTenGiga()
|
||||||
|
|
||||||
@tengiga.setter
|
@tengiga.setter
|
||||||
@ -2238,7 +2236,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def flowcontrol10g(self):
|
def flowcontrol10g(self):
|
||||||
"""[Eiger][Jungfrau] Enable or disable 10GbE Flow Control."""
|
"""[Eiger][Jungfrau][Moench] Enable or disable 10GbE Flow Control."""
|
||||||
return self.getTenGigaFlowControl()
|
return self.getTenGigaFlowControl()
|
||||||
|
|
||||||
@flowcontrol10g.setter
|
@flowcontrol10g.setter
|
||||||
@ -2258,7 +2256,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def gappixels(self):
|
def gappixels(self):
|
||||||
"""[Eiger][Jungfrau] Include Gap pixels in client data call back in Detecor api. Will not be in detector streaming, receiver file or streaming. Default is disabled. """
|
"""[Eiger][Jungfrau][Moench] Include Gap pixels in client data call back in Detecor api. Will not be in detector streaming, receiver file or streaming. Default is disabled. """
|
||||||
return self.getRxAddGapPixels()
|
return self.getRxAddGapPixels()
|
||||||
|
|
||||||
@gappixels.setter
|
@gappixels.setter
|
||||||
@ -2314,7 +2312,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def chipversion(self):
|
def chipversion(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau] Chip version of module. Can be 1.0 or 1.1.
|
[Jungfrau][Moench] Chip version of module. Can be 1.0 or 1.1.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
@ -2327,7 +2325,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def autocompdisable(self):
|
def autocompdisable(self):
|
||||||
"""[Jungfrau] Enable or disable auto comparator disable mode.
|
"""[Jungfrau][Moench] Enable or disable auto comparator disable mode.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -2343,7 +2341,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def compdisabletime(self):
|
def compdisabletime(self):
|
||||||
"""[Jungfrau] Time before end of exposure when comparator is disabled.
|
"""[Jungfrau][Moench] Time before end of exposure when comparator is disabled.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -2389,7 +2387,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def runtime(self):
|
def runtime(self):
|
||||||
"""[Jungfrau][Mythen3][Gotthard2][Moench][CTB] Time from detector start up.
|
"""[Jungfrau][Moench][Mythen3][Gotthard2][CTB] Time from detector start up.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -2482,7 +2480,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def temp_threshold(self):
|
def temp_threshold(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau] Threshold temperature in degrees.
|
[Jungfrau][Moench] Threshold temperature in degrees.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -2499,7 +2497,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def temp_event(self):
|
def temp_event(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau] 1, if a temperature event occured. \n
|
[Jungfrau][Moench] 1, if a temperature event occured. \n
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
@ -2527,7 +2525,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def temp_control(self):
|
def temp_control(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau] Temperature control enable.
|
[Jungfrau][Moench] Temperature control enable.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -2544,7 +2542,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def selinterface(self):
|
def selinterface(self):
|
||||||
"""[Jungfrau] The udp interface to stream data from detector.
|
"""[Jungfrau][Moench] The udp interface to stream data from detector.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -2564,11 +2562,11 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
def gainmode(self):
|
def gainmode(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau] Detector gain mode. Enum: gainMode
|
[Jungfrau][Moench] Detector gain mode. Enum: gainMode
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
[Jungfrau] DYNAMIC, FORCE_SWITCH_G1, FORCE_SWITCH_G2, FIX_G1, FIX_G2, FIX_G0 \n
|
[Jungfrau][Moench] DYNAMIC, FORCE_SWITCH_G1, FORCE_SWITCH_G2, FIX_G1, FIX_G2, FIX_G0 \n
|
||||||
CAUTION: Do not use FIX_G0 without caution, you can damage the detector!!!
|
CAUTION: Do not use FIX_G0 without caution, you can damage the detector!!!
|
||||||
"""
|
"""
|
||||||
return element_if_equal(self.getGainMode())
|
return element_if_equal(self.getGainMode())
|
||||||
@ -2623,14 +2621,14 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def filterresistor(self):
|
def filterresistor(self):
|
||||||
"""
|
"""
|
||||||
[Gotthard2][Jungfrau] Set filter resistor. Increasing values for increasing "
|
[Gotthard2][Jungfrau][Moench] Set filter resistor. Increasing values for increasing "
|
||||||
"resistance.
|
"resistance.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
Advanced user command.
|
Advanced user command.
|
||||||
[Gotthard2] Default is 0. Options: 0-3.
|
[Gotthard2] Default is 0. Options: 0-3.
|
||||||
[Jungfrau] Default is 1. Options: 0-1.
|
[Jungfrau][Moench] Default is 1. Options: 0-1.
|
||||||
"""
|
"""
|
||||||
return self.getFilterResistor()
|
return self.getFilterResistor()
|
||||||
|
|
||||||
@ -2642,11 +2640,11 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def filtercells(self):
|
def filtercells(self):
|
||||||
"""
|
"""
|
||||||
[Jungfrau] Set filter capacitor.
|
[Jungfrau][Moench] Set filter capacitor.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
[Jungfrau] Options: 0-12. Default: 0. Advanced user command. Only for chipv1.1.
|
[Jungfrau][Moench] Options: 0-12. Default: 0. Advanced user command. Only for chipv1.1.
|
||||||
"""
|
"""
|
||||||
return self.getNumberOfFilterCells()
|
return self.getNumberOfFilterCells()
|
||||||
|
|
||||||
@ -2982,7 +2980,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def adcenable(self):
|
def adcenable(self):
|
||||||
"""[Ctb][Moench] ADC Enable Mask for 1Gb. Enable for each 32 ADC channel."""
|
"""[Ctb] ADC Enable Mask for 1Gb. Enable for each 32 ADC channel."""
|
||||||
return self.getADCEnableMask()
|
return self.getADCEnableMask()
|
||||||
|
|
||||||
@adcenable.setter
|
@adcenable.setter
|
||||||
@ -2992,7 +2990,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def adcenable10g(self):
|
def adcenable10g(self):
|
||||||
"""[Ctb][Moench] ADC Enable Mask for 10Gb mode for each 32 ADC channel.
|
"""[Ctb] ADC Enable Mask for 10Gb mode for each 32 ADC channel.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -3009,7 +3007,6 @@ class Detector(CppDetectorApi):
|
|||||||
def samples(self):
|
def samples(self):
|
||||||
"""
|
"""
|
||||||
[CTB] Number of samples (both analog and digitial) expected. \n
|
[CTB] Number of samples (both analog and digitial) expected. \n
|
||||||
[Moench] Number of samples (analog only)
|
|
||||||
"""
|
"""
|
||||||
return self.getNumberOfAnalogSamples()
|
return self.getNumberOfAnalogSamples()
|
||||||
|
|
||||||
@ -3020,7 +3017,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def runclk(self):
|
def runclk(self):
|
||||||
"""[Ctb][Moench] Run clock in MHz."""
|
"""[Ctb] Run clock in MHz."""
|
||||||
return self.getRUNClock()
|
return self.getRUNClock()
|
||||||
|
|
||||||
@runclk.setter
|
@runclk.setter
|
||||||
@ -3053,7 +3050,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def asamples(self):
|
def asamples(self):
|
||||||
"""[Ctb][Moench] Number of analog samples expected. """
|
"""[Ctb] Number of analog samples expected. """
|
||||||
return element_if_equal(self.getNumberOfAnalogSamples())
|
return element_if_equal(self.getNumberOfAnalogSamples())
|
||||||
|
|
||||||
@asamples.setter
|
@asamples.setter
|
||||||
@ -3073,7 +3070,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def dbitphase(self):
|
def dbitphase(self):
|
||||||
"""[Ctb][Jungfrau] Phase shift of clock to latch digital bits. Absolute phase shift.
|
"""[Ctb][Jungfrau][Moench] Phase shift of clock to latch digital bits. Absolute phase shift.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -3114,7 +3111,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def maxdbitphaseshift(self):
|
def maxdbitphaseshift(self):
|
||||||
"""[CTB][Jungfrau] Absolute maximum Phase shift of of the clock to latch digital bits.
|
"""[CTB][Jungfrau][Moench] Absolute maximum Phase shift of of the clock to latch digital bits.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -3161,7 +3158,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def maxadcphaseshift(self):
|
def maxadcphaseshift(self):
|
||||||
"""[Jungfrau][CTB][Moench] Absolute maximum Phase shift of ADC clock.
|
"""[Jungfrau][Moench][CTB] Absolute maximum Phase shift of ADC clock.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -3173,12 +3170,12 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def adcphase(self):
|
def adcphase(self):
|
||||||
"""[Gotthard][Jungfrau][CTB][Moench] Sets phase shift of ADC clock.
|
"""[Gotthard][Jungfrau][Moench][CTB] Sets phase shift of ADC clock.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
[Jungfrau] Absolute phase shift. Changing Speed also resets adcphase to recommended defaults.\n
|
[Jungfrau][Moench] Absolute phase shift. Changing Speed also resets adcphase to recommended defaults.\n
|
||||||
[Ctb][Moench] Absolute phase shift. Changing adcclk also resets adcphase and sets it to previous values.\n
|
[Ctb] Absolute phase shift. Changing adcclk also resets adcphase and sets it to previous values.\n
|
||||||
[Gotthard] Relative phase shift.
|
[Gotthard] Relative phase shift.
|
||||||
|
|
||||||
:getter: Not implemented for Gotthard
|
:getter: Not implemented for Gotthard
|
||||||
@ -3192,7 +3189,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def adcpipeline(self):
|
def adcpipeline(self):
|
||||||
"""[Ctb][Moench] Sets pipeline for ADC clock. """
|
"""[Ctb] Sets pipeline for ADC clock. """
|
||||||
return self.getADCPipeline()
|
return self.getADCPipeline()
|
||||||
|
|
||||||
@adcpipeline.setter
|
@adcpipeline.setter
|
||||||
@ -3202,7 +3199,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def adcclk(self):
|
def adcclk(self):
|
||||||
"""[Ctb][Moench] Sets ADC clock frequency in MHz. """
|
"""[Ctb] Sets ADC clock frequency in MHz. """
|
||||||
return self.getADCClock()
|
return self.getADCClock()
|
||||||
|
|
||||||
@adcclk.setter
|
@adcclk.setter
|
||||||
@ -3213,7 +3210,7 @@ class Detector(CppDetectorApi):
|
|||||||
@element
|
@element
|
||||||
def syncclk(self):
|
def syncclk(self):
|
||||||
"""
|
"""
|
||||||
[Ctb][Moench] Sync clock in MHz.
|
[Ctb] Sync clock in MHz.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
@ -3224,7 +3221,7 @@ class Detector(CppDetectorApi):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def pattern(self):
|
def pattern(self):
|
||||||
"""[Mythen3][Moench][Ctb] Loads ASCII pattern file directly to server (instead of executing line by line).
|
"""[Mythen3][Ctb] Loads ASCII pattern file directly to server (instead of executing line by line).
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
@ -3246,7 +3243,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patioctrl(self):
|
def patioctrl(self):
|
||||||
"""[Ctb][Moench] 64 bit mask defining input (0) and output (1) signals.
|
"""[Ctb] 64 bit mask defining input (0) and output (1) signals.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
--------
|
--------
|
||||||
@ -3263,7 +3260,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patlimits(self):
|
def patlimits(self):
|
||||||
"""[Ctb][Moench][Mythen3] Limits (start and stop address) of complete pattern.
|
"""[Ctb][Mythen3] Limits (start and stop address) of complete pattern.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
---------
|
---------
|
||||||
@ -3283,7 +3280,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patsetbit(self):
|
def patsetbit(self):
|
||||||
"""[Ctb][Moench][Mythen3] Sets the mask applied to every pattern to the selected bits.
|
"""[Ctb][Mythen3] Sets the mask applied to every pattern to the selected bits.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
--------
|
--------
|
||||||
@ -3300,7 +3297,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patmask(self):
|
def patmask(self):
|
||||||
"""[Ctb][Moench][Mythen3] Selects the bits that will have a pattern mask applied to the selected patmask for every pattern.
|
"""[Ctb][Mythen3] Selects the bits that will have a pattern mask applied to the selected patmask for every pattern.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
--------
|
--------
|
||||||
@ -3318,7 +3315,7 @@ class Detector(CppDetectorApi):
|
|||||||
# @element
|
# @element
|
||||||
def patwait(self):
|
def patwait(self):
|
||||||
"""
|
"""
|
||||||
[Ctb][Moench][Mythen3] Wait address of loop level provided.
|
[Ctb][Mythen3] Wait address of loop level provided.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
@ -3335,7 +3332,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patwait0(self):
|
def patwait0(self):
|
||||||
"""[Ctb][Moench][Mythen3] Wait 0 address.
|
"""[Ctb][Mythen3] Wait 0 address.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
--------
|
--------
|
||||||
@ -3355,7 +3352,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patwait1(self):
|
def patwait1(self):
|
||||||
"""[Ctb][Moench][Mythen3] Wait 1 address.
|
"""[Ctb][Mythen3] Wait 1 address.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
--------
|
--------
|
||||||
@ -3375,7 +3372,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patwait2(self):
|
def patwait2(self):
|
||||||
"""[Ctb][Moench][Mythen3] Wait 2 address.
|
"""[Ctb][Mythen3] Wait 2 address.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
--------
|
--------
|
||||||
@ -3395,7 +3392,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
def patwaittime(self):
|
def patwaittime(self):
|
||||||
"""
|
"""
|
||||||
[Ctb][Moench][Mythen3] Wait time in clock cycles of loop level provided.
|
[Ctb][Mythen3] Wait time in clock cycles of loop level provided.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
@ -3412,7 +3409,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patwaittime0(self):
|
def patwaittime0(self):
|
||||||
"""[Ctb][Moench][Mythen3] Wait 0 time in clock cycles."""
|
"""[Ctb][Mythen3] Wait 0 time in clock cycles."""
|
||||||
return self.getPatternWaitTime(0)
|
return self.getPatternWaitTime(0)
|
||||||
|
|
||||||
@patwaittime0.setter
|
@patwaittime0.setter
|
||||||
@ -3423,7 +3420,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patwaittime1(self):
|
def patwaittime1(self):
|
||||||
"""[Ctb][Moench][Mythen3] Wait 1 time in clock cycles."""
|
"""[Ctb][Mythen3] Wait 1 time in clock cycles."""
|
||||||
return self.getPatternWaitTime(1)
|
return self.getPatternWaitTime(1)
|
||||||
|
|
||||||
@patwaittime1.setter
|
@patwaittime1.setter
|
||||||
@ -3434,7 +3431,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patwaittime2(self):
|
def patwaittime2(self):
|
||||||
"""[Ctb][Moench][Mythen3] Wait 2 time in clock cycles."""
|
"""[Ctb][Mythen3] Wait 2 time in clock cycles."""
|
||||||
return self.getPatternWaitTime(2)
|
return self.getPatternWaitTime(2)
|
||||||
|
|
||||||
@patwaittime2.setter
|
@patwaittime2.setter
|
||||||
@ -3446,7 +3443,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
def patloop(self):
|
def patloop(self):
|
||||||
"""
|
"""
|
||||||
[Ctb][Moench][Mythen3] Limits (start and stop address) of the loop provided.
|
[Ctb][Mythen3] Limits (start and stop address) of the loop provided.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
@ -3463,7 +3460,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patloop0(self):
|
def patloop0(self):
|
||||||
"""[Ctb][Moench][Mythen3] Limits (start and stop address) of loop 0.
|
"""[Ctb][Mythen3] Limits (start and stop address) of loop 0.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
---------
|
---------
|
||||||
@ -3483,7 +3480,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patloop1(self):
|
def patloop1(self):
|
||||||
"""[Ctb][Moench][Mythen3] Limits (start and stop address) of loop 1.
|
"""[Ctb][Mythen3] Limits (start and stop address) of loop 1.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
---------
|
---------
|
||||||
@ -3504,7 +3501,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patloop2(self):
|
def patloop2(self):
|
||||||
"""[Ctb][Moench][Mythen3] Limits (start and stop address) of loop 2.
|
"""[Ctb][Mythen3] Limits (start and stop address) of loop 2.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
---------
|
---------
|
||||||
@ -3526,7 +3523,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
def patnloop(self):
|
def patnloop(self):
|
||||||
"""
|
"""
|
||||||
[Ctb][Moench][Mythen3] Number of cycles of the loop provided.
|
[Ctb][Mythen3] Number of cycles of the loop provided.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
@ -3543,7 +3540,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patnloop0(self):
|
def patnloop0(self):
|
||||||
"""[Ctb][Moench][Mythen3] Number of cycles of loop 0."""
|
"""[Ctb][Mythen3] Number of cycles of loop 0."""
|
||||||
return self.getPatternLoopCycles(0)
|
return self.getPatternLoopCycles(0)
|
||||||
|
|
||||||
@patnloop0.setter
|
@patnloop0.setter
|
||||||
@ -3554,7 +3551,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patnloop1(self):
|
def patnloop1(self):
|
||||||
"""[Ctb][Moench][Mythen3] Number of cycles of loop 1."""
|
"""[Ctb][Mythen3] Number of cycles of loop 1."""
|
||||||
return self.getPatternLoopCycles(1)
|
return self.getPatternLoopCycles(1)
|
||||||
|
|
||||||
@patnloop1.setter
|
@patnloop1.setter
|
||||||
@ -3565,7 +3562,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def patnloop2(self):
|
def patnloop2(self):
|
||||||
"""[Ctb][Moench][Mythen3] Number of cycles of loop 2."""
|
"""[Ctb][Mythen3] Number of cycles of loop 2."""
|
||||||
return self.getPatternLoopCycles(2)
|
return self.getPatternLoopCycles(2)
|
||||||
|
|
||||||
@patnloop2.setter
|
@patnloop2.setter
|
||||||
@ -3636,7 +3633,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def v_limit(self):
|
def v_limit(self):
|
||||||
"""[Ctb][Moench] Soft limit for power supplies (ctb only) and DACS in mV."""
|
"""[Ctb] Soft limit for power supplies (ctb only) and DACS in mV."""
|
||||||
return self.getDAC(dacIndex.V_LIMIT, True)
|
return self.getDAC(dacIndex.V_LIMIT, True)
|
||||||
|
|
||||||
@v_limit.setter
|
@v_limit.setter
|
||||||
|
@ -48,6 +48,10 @@ void qTabAdvanced::SetupWidgetWindow() {
|
|||||||
lblDiscardBits->setEnabled(true);
|
lblDiscardBits->setEnabled(true);
|
||||||
spinDiscardBits->setEnabled(true);
|
spinDiscardBits->setEnabled(true);
|
||||||
break;
|
break;
|
||||||
|
case slsDetectorDefs::JUNGFRAU:
|
||||||
|
lblNumStoragecells->setEnabled(true);
|
||||||
|
spinNumStoragecells->setEnabled(true);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -104,8 +104,6 @@
|
|||||||
|
|
||||||
#define CONFIG_V11_STATUS_FLTR_CLL_OFST (0)
|
#define CONFIG_V11_STATUS_FLTR_CLL_OFST (0)
|
||||||
#define CONFIG_V11_STATUS_FLTR_CLL_MSK (0x00000FFF << CONFIG_V11_STATUS_FLTR_CLL_OFST)
|
#define CONFIG_V11_STATUS_FLTR_CLL_MSK (0x00000FFF << CONFIG_V11_STATUS_FLTR_CLL_OFST)
|
||||||
#define CONFIG_V11_STATUS_STRG_CLL_OFST (12)
|
|
||||||
#define CONFIG_V11_STATUS_STRG_CLL_MSK (0x0000000F << CONFIG_V11_STATUS_STRG_CLL_OFST)
|
|
||||||
// CSM mode = high current (100%), low current (16%)
|
// CSM mode = high current (100%), low current (16%)
|
||||||
#define CONFIG_V11_STATUS_CRRNT_SRC_LOW_OFST (19)
|
#define CONFIG_V11_STATUS_CRRNT_SRC_LOW_OFST (19)
|
||||||
#define CONFIG_V11_STATUS_CRRNT_SRC_LOW_MSK (0x00000001 << CONFIG_V11_STATUS_CRRNT_SRC_LOW_OFST)
|
#define CONFIG_V11_STATUS_CRRNT_SRC_LOW_MSK (0x00000001 << CONFIG_V11_STATUS_CRRNT_SRC_LOW_OFST)
|
||||||
@ -231,8 +229,6 @@
|
|||||||
#define CONTROL_ACQ_FIFO_CLR_MSK (0x00000001 << CONTROL_ACQ_FIFO_CLR_OFST)
|
#define CONTROL_ACQ_FIFO_CLR_MSK (0x00000001 << CONTROL_ACQ_FIFO_CLR_OFST)
|
||||||
#define CONTROL_MASTER_OFST (15)
|
#define CONTROL_MASTER_OFST (15)
|
||||||
#define CONTROL_MASTER_MSK (0x00000001 << CONTROL_MASTER_OFST)
|
#define CONTROL_MASTER_MSK (0x00000001 << CONTROL_MASTER_OFST)
|
||||||
#define CONTROL_STORAGE_CELL_NUM_OFST (16)
|
|
||||||
#define CONTROL_STORAGE_CELL_NUM_MSK (0x0000000F << CONTROL_STORAGE_CELL_NUM_OFST)
|
|
||||||
#define CONTROL_RX_ADDTNL_ENDPTS_NUM_OFST (20)
|
#define CONTROL_RX_ADDTNL_ENDPTS_NUM_OFST (20)
|
||||||
#define CONTROL_RX_ADDTNL_ENDPTS_NUM_MSK (0x0000003F << CONTROL_RX_ADDTNL_ENDPTS_NUM_OFST)
|
#define CONTROL_RX_ADDTNL_ENDPTS_NUM_MSK (0x0000003F << CONTROL_RX_ADDTNL_ENDPTS_NUM_OFST)
|
||||||
#define CONTROL_RX_ENDPTS_START_OFST (26)
|
#define CONTROL_RX_ENDPTS_START_OFST (26)
|
||||||
@ -260,8 +256,6 @@
|
|||||||
|
|
||||||
#define CONFIG_V11_FLTR_CLL_OFST (0)
|
#define CONFIG_V11_FLTR_CLL_OFST (0)
|
||||||
#define CONFIG_V11_FLTR_CLL_MSK (0x00000FFF << CONFIG_V11_FLTR_CLL_OFST)
|
#define CONFIG_V11_FLTR_CLL_MSK (0x00000FFF << CONFIG_V11_FLTR_CLL_OFST)
|
||||||
#define CONFIG_V11_STRG_CLL_OFST (12)
|
|
||||||
#define CONFIG_V11_STRG_CLL_MSK (0x0000000F << CONFIG_V11_STRG_CLL_OFST)
|
|
||||||
// CSM mode = high current (100%), low current (16%)
|
// CSM mode = high current (100%), low current (16%)
|
||||||
#define CONFIG_V11_CRRNT_SRC_LOW_OFST (19)
|
#define CONFIG_V11_CRRNT_SRC_LOW_OFST (19)
|
||||||
#define CONFIG_V11_CRRNT_SRC_LOW_MSK (0x00000001 << CONFIG_V11_CRRNT_SRC_LOW_OFST)
|
#define CONFIG_V11_CRRNT_SRC_LOW_MSK (0x00000001 << CONFIG_V11_CRRNT_SRC_LOW_OFST)
|
||||||
@ -352,8 +346,6 @@
|
|||||||
#define DAQ_CMP_RST_MSK (0x00000001 << DAQ_CMP_RST_OFST)
|
#define DAQ_CMP_RST_MSK (0x00000001 << DAQ_CMP_RST_OFST)
|
||||||
#define DAQ_CHIP11_VRSN_OFST (7)
|
#define DAQ_CHIP11_VRSN_OFST (7)
|
||||||
#define DAQ_CHIP11_VRSN_MSK (0x00000001 << DAQ_CHIP11_VRSN_OFST)
|
#define DAQ_CHIP11_VRSN_MSK (0x00000001 << DAQ_CHIP11_VRSN_OFST)
|
||||||
#define DAQ_STRG_CELL_SLCT_OFST (8)
|
|
||||||
#define DAQ_STRG_CELL_SLCT_MSK (0x0000000F << DAQ_STRG_CELL_SLCT_OFST)
|
|
||||||
#define DAQ_FRCE_SWTCH_GAIN_OFST (12)
|
#define DAQ_FRCE_SWTCH_GAIN_OFST (12)
|
||||||
#define DAQ_FRCE_SWTCH_GAIN_MSK (0x00000003 << DAQ_FRCE_SWTCH_GAIN_OFST)
|
#define DAQ_FRCE_SWTCH_GAIN_MSK (0x00000003 << DAQ_FRCE_SWTCH_GAIN_OFST)
|
||||||
#define DAQ_FRCE_GAIN_STG_0_VAL ((0x0 << DAQ_FRCE_SWTCH_GAIN_OFST) & DAQ_FRCE_SWTCH_GAIN_MSK)
|
#define DAQ_FRCE_GAIN_STG_0_VAL ((0x0 << DAQ_FRCE_SWTCH_GAIN_OFST) & DAQ_FRCE_SWTCH_GAIN_MSK)
|
||||||
@ -445,23 +437,6 @@ Time before end of exposure when comparator is disabled */
|
|||||||
#define MOD_ID_OFST (0)
|
#define MOD_ID_OFST (0)
|
||||||
#define MOD_ID_MSK (0x0000FFFF << MOD_ID_OFST)
|
#define MOD_ID_MSK (0x0000FFFF << MOD_ID_OFST)
|
||||||
|
|
||||||
/* ASIC Control Register */
|
|
||||||
#define ASIC_CTRL_REG (0x7F << MEM_MAP_SHIFT)
|
|
||||||
// tPC = (PCT + 1) * 25ns
|
|
||||||
#define ASIC_CTRL_PRCHRG_TMR_OFST (0)
|
|
||||||
#define ASIC_CTRL_PRCHRG_TMR_MSK (0x000000FF << ASIC_CTRL_PRCHRG_TMR_OFST)
|
|
||||||
#define ASIC_CTRL_PRCHRG_TMR_VAL ((0x1F << ASIC_CTRL_PRCHRG_TMR_OFST) & ASIC_CTRL_PRCHRG_TMR_MSK)
|
|
||||||
// tDS = (DST + 1) * 25ns
|
|
||||||
#define ASIC_CTRL_DS_TMR_OFST (8)
|
|
||||||
#define ASIC_CTRL_DS_TMR_MSK (0x000000FF << ASIC_CTRL_DS_TMR_OFST)
|
|
||||||
#define ASIC_CTRL_DS_TMR_VAL ((0x1F << ASIC_CTRL_DS_TMR_OFST) & ASIC_CTRL_DS_TMR_MSK)
|
|
||||||
#define ASIC_CTRL_DS_TMR_CHIP1_1_VAL ((0xFF << ASIC_CTRL_DS_TMR_OFST) & ASIC_CTRL_DS_TMR_MSK)
|
|
||||||
// tET = (ET + 1) * 25ns (increase timeout range between 2 consecutive storage
|
|
||||||
// cells)
|
|
||||||
#define ASIC_CTRL_EXPSRE_TMR_OFST (16)
|
|
||||||
#define ASIC_CTRL_EXPSRE_TMR_MSK (0x0000FFFF << ASIC_CTRL_EXPSRE_TMR_OFST)
|
|
||||||
#define ASIC_CTRL_EXPSRE_TMR_MAX_VAL (0x0000FFFF / (CLK_RUN * 1E-3))
|
|
||||||
|
|
||||||
/* ADC 0 Deserializer Control */
|
/* ADC 0 Deserializer Control */
|
||||||
#define ADC_DSRLZR_0_REG (0xF0 << MEM_MAP_SHIFT)
|
#define ADC_DSRLZR_0_REG (0xF0 << MEM_MAP_SHIFT)
|
||||||
#define ADC_DSRLZR_0_RFRSH_ALGNMNT_OFST (31) /* Refresh alignment */
|
#define ADC_DSRLZR_0_RFRSH_ALGNMNT_OFST (31) /* Refresh alignment */
|
||||||
|
Binary file not shown.
@ -518,7 +518,7 @@ void setupDetector() {
|
|||||||
resetCore();
|
resetCore();
|
||||||
|
|
||||||
alignDeserializer();
|
alignDeserializer();
|
||||||
// configureASICTimer(); ASIC_CTRL_REG to be removed along with storage cell
|
|
||||||
// delay
|
// delay
|
||||||
bus_w(ADC_PORT_INVERT_REG,
|
bus_w(ADC_PORT_INVERT_REG,
|
||||||
(isHardwareVersion_1_0() ? ADC_PORT_INVERT_BOARD2_VAL
|
(isHardwareVersion_1_0() ? ADC_PORT_INVERT_BOARD2_VAL
|
||||||
@ -536,14 +536,6 @@ void setupDetector() {
|
|||||||
setExpTime(DEFAULT_EXPTIME);
|
setExpTime(DEFAULT_EXPTIME);
|
||||||
setPeriod(DEFAULT_PERIOD);
|
setPeriod(DEFAULT_PERIOD);
|
||||||
setDelayAfterTrigger(DEFAULT_DELAY);
|
setDelayAfterTrigger(DEFAULT_DELAY);
|
||||||
if (getChipVersion() == 11) {
|
|
||||||
selectStoragecellStart(DEFAULT_STRG_CLL_STRT_CHIP11);
|
|
||||||
} else {
|
|
||||||
setNumAdditionalStorageCells(DEFAULT_NUM_STRG_CLLS);
|
|
||||||
selectStoragecellStart(DEFAULT_STRG_CLL_STRT);
|
|
||||||
// not applicable for chipv1.1
|
|
||||||
setStorageCellDelay(DEFAULT_STRG_CLL_DLY);
|
|
||||||
}
|
|
||||||
setTiming(DEFAULT_TIMING_MODE);
|
setTiming(DEFAULT_TIMING_MODE);
|
||||||
setNextFrameNumber(DEFAULT_STARTING_FRAME_NUMBER);
|
setNextFrameNumber(DEFAULT_STARTING_FRAME_NUMBER);
|
||||||
|
|
||||||
@ -891,66 +883,6 @@ uint32_t getADCInvertRegister() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* parameters - timer */
|
/* parameters - timer */
|
||||||
int selectStoragecellStart(int pos) {
|
|
||||||
int value = pos;
|
|
||||||
uint32_t addr = DAQ_REG;
|
|
||||||
uint32_t mask = DAQ_STRG_CELL_SLCT_MSK;
|
|
||||||
int offset = DAQ_STRG_CELL_SLCT_OFST;
|
|
||||||
if (getChipVersion() == 11) {
|
|
||||||
// set the bit
|
|
||||||
value = 1 << pos;
|
|
||||||
addr = CONFIG_V11_REG;
|
|
||||||
mask = CONFIG_V11_STRG_CLL_MSK;
|
|
||||||
offset = CONFIG_V11_STRG_CLL_OFST;
|
|
||||||
}
|
|
||||||
if (pos >= 0) {
|
|
||||||
LOG(logINFO, ("Setting storage cell start: %d\n", pos));
|
|
||||||
bus_w(addr, bus_r(addr) & ~mask);
|
|
||||||
bus_w(addr, bus_r(addr) | ((value << offset) & mask));
|
|
||||||
// should not do a get to verify (status register does not update
|
|
||||||
// immediately during acquisition)
|
|
||||||
if (getChipVersion() == 11) {
|
|
||||||
return pos;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// read value back
|
|
||||||
// chipv1.1, writing and reading registers are different
|
|
||||||
#ifndef VIRTUAL
|
|
||||||
if (getChipVersion() == 11) {
|
|
||||||
addr = CONFIG_V11_STATUS_REG;
|
|
||||||
mask = CONFIG_V11_STATUS_STRG_CLL_MSK;
|
|
||||||
offset = CONFIG_V11_STATUS_STRG_CLL_OFST;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
uint32_t regval = bus_r(addr);
|
|
||||||
#ifndef VIRTUAL
|
|
||||||
// flip all contents of register //TODO FIRMWARE FIX
|
|
||||||
if (getChipVersion() == 11) {
|
|
||||||
regval ^= BIT32_MASK;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
uint32_t retval = ((regval & mask) >> offset);
|
|
||||||
if (getChipVersion() == 11) {
|
|
||||||
// get which bit
|
|
||||||
int max = getMaxStoragecellStart();
|
|
||||||
for (int i = 0; i != max + 1; ++i) {
|
|
||||||
if (retval & (1 << i)) {
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// chip v1.0
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
int getMaxStoragecellStart() {
|
|
||||||
if (getChipVersion() == 11) {
|
|
||||||
return MAX_STORAGE_CELL_CHIP11_VAL;
|
|
||||||
} else {
|
|
||||||
return MAX_STORAGE_CELL_VAL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int setNextFrameNumber(uint64_t value) {
|
int setNextFrameNumber(uint64_t value) {
|
||||||
LOG(logINFO,
|
LOG(logINFO,
|
||||||
@ -1075,48 +1007,6 @@ int64_t getDelayAfterTrigger() {
|
|||||||
(1E-3 * CLK_SYNC);
|
(1E-3 * CLK_SYNC);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setNumAdditionalStorageCells(int val) {
|
|
||||||
if (val >= 0) {
|
|
||||||
LOG(logINFO, ("Setting number of addl. storage cells %d\n", val));
|
|
||||||
bus_w(CONTROL_REG,
|
|
||||||
(bus_r(CONTROL_REG) & ~CONTROL_STORAGE_CELL_NUM_MSK) |
|
|
||||||
((val << CONTROL_STORAGE_CELL_NUM_OFST) &
|
|
||||||
CONTROL_STORAGE_CELL_NUM_MSK));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int getNumAdditionalStorageCells() {
|
|
||||||
return ((bus_r(CONTROL_REG) & CONTROL_STORAGE_CELL_NUM_MSK) >>
|
|
||||||
CONTROL_STORAGE_CELL_NUM_OFST);
|
|
||||||
}
|
|
||||||
|
|
||||||
int setStorageCellDelay(int64_t val) {
|
|
||||||
if (val < 0) {
|
|
||||||
LOG(logERROR,
|
|
||||||
("Invalid delay after trigger: %lld ns\n", (long long int)val));
|
|
||||||
return FAIL;
|
|
||||||
}
|
|
||||||
LOG(logINFO, ("Setting storage cell delay %lld ns\n", (long long int)val));
|
|
||||||
val *= (1E-3 * CLK_RUN);
|
|
||||||
bus_w(ASIC_CTRL_REG,
|
|
||||||
(bus_r(ASIC_CTRL_REG) & ~ASIC_CTRL_EXPSRE_TMR_MSK) |
|
|
||||||
((val << ASIC_CTRL_EXPSRE_TMR_OFST) & ASIC_CTRL_EXPSRE_TMR_MSK));
|
|
||||||
|
|
||||||
// validate for tolerance
|
|
||||||
int64_t retval = getStorageCellDelay();
|
|
||||||
val /= (1E-3 * CLK_RUN);
|
|
||||||
if (val != retval) {
|
|
||||||
return FAIL;
|
|
||||||
}
|
|
||||||
return OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int64_t getStorageCellDelay() {
|
|
||||||
return (((int64_t)((bus_r(ASIC_CTRL_REG) & ASIC_CTRL_EXPSRE_TMR_MSK) >>
|
|
||||||
ASIC_CTRL_EXPSRE_TMR_OFST)) /
|
|
||||||
(1E-3 * CLK_RUN));
|
|
||||||
}
|
|
||||||
|
|
||||||
int64_t getNumFramesLeft() {
|
int64_t getNumFramesLeft() {
|
||||||
return get64BitReg(GET_FRAMES_LSB_REG, GET_FRAMES_MSB_REG);
|
return get64BitReg(GET_FRAMES_LSB_REG, GET_FRAMES_MSB_REG);
|
||||||
}
|
}
|
||||||
@ -1968,18 +1858,6 @@ int64_t getComparatorDisableTime() {
|
|||||||
return bus_r(COMP_DSBLE_TIME_REG) / (1E-3 * CLK_RUN);
|
return bus_r(COMP_DSBLE_TIME_REG) / (1E-3 * CLK_RUN);
|
||||||
}
|
}
|
||||||
|
|
||||||
void configureASICTimer() {
|
|
||||||
bus_w(ASIC_CTRL_REG, (bus_r(ASIC_CTRL_REG) & ~ASIC_CTRL_PRCHRG_TMR_MSK) |
|
|
||||||
ASIC_CTRL_PRCHRG_TMR_VAL);
|
|
||||||
|
|
||||||
uint32_t val = ASIC_CTRL_DS_TMR_VAL;
|
|
||||||
if (getChipVersion() == 11) {
|
|
||||||
val = ASIC_CTRL_DS_TMR_CHIP1_1_VAL;
|
|
||||||
}
|
|
||||||
bus_w(ASIC_CTRL_REG, (bus_r(ASIC_CTRL_REG) & ~ASIC_CTRL_DS_TMR_MSK) | val);
|
|
||||||
LOG(logINFO, ("Configured ASIC Timer [0x%x]\n", bus_r(ASIC_CTRL_REG)));
|
|
||||||
}
|
|
||||||
|
|
||||||
int setReadoutSpeed(int val) {
|
int setReadoutSpeed(int val) {
|
||||||
// stop state machine if running
|
// stop state machine if running
|
||||||
if (runBusy()) {
|
if (runBusy()) {
|
||||||
@ -2601,8 +2479,7 @@ void *start_timer(void *arg) {
|
|||||||
int transmissionDelayUs = getTransmissionDelayFrame() * 1000;
|
int transmissionDelayUs = getTransmissionDelayFrame() * 1000;
|
||||||
int numInterfaces = getNumberofUDPInterfaces();
|
int numInterfaces = getNumberofUDPInterfaces();
|
||||||
int64_t periodNs = getPeriod();
|
int64_t periodNs = getPeriod();
|
||||||
int numFrames = (getNumFrames() * getNumTriggers() *
|
int numFrames = getNumFrames() * getNumTriggers();
|
||||||
(getNumAdditionalStorageCells() + 1));
|
|
||||||
int64_t expUs = getExpTime() / 1000;
|
int64_t expUs = getExpTime() / 1000;
|
||||||
const int maxPacketsPerFrame = (MAX_ROWS_PER_READOUT / ROWS_PER_PACKET);
|
const int maxPacketsPerFrame = (MAX_ROWS_PER_READOUT / ROWS_PER_PACKET);
|
||||||
const int dataSize = (DATA_BYTES / maxPacketsPerFrame);
|
const int dataSize = (DATA_BYTES / maxPacketsPerFrame);
|
||||||
|
@ -44,10 +44,6 @@
|
|||||||
#define DEFAULT_GAINMODE (DYNAMIC)
|
#define DEFAULT_GAINMODE (DYNAMIC)
|
||||||
#define DEFAULT_TX_UDP_PORT (0x7e9a)
|
#define DEFAULT_TX_UDP_PORT (0x7e9a)
|
||||||
#define DEFAULT_TMP_THRSHLD (65 * 1000) // milli degree Celsius
|
#define DEFAULT_TMP_THRSHLD (65 * 1000) // milli degree Celsius
|
||||||
#define DEFAULT_NUM_STRG_CLLS (0)
|
|
||||||
#define DEFAULT_STRG_CLL_STRT (0xf)
|
|
||||||
#define DEFAULT_STRG_CLL_STRT_CHIP11 (0x3)
|
|
||||||
#define DEFAULT_STRG_CLL_DLY (0)
|
|
||||||
#define DEFAULT_FLIP_ROWS (0)
|
#define DEFAULT_FLIP_ROWS (0)
|
||||||
#define DEFAULT_FILTER_RESISTOR (1) // higher resistor
|
#define DEFAULT_FILTER_RESISTOR (1) // higher resistor
|
||||||
#define DEFAULT_FILTER_CELL (0)
|
#define DEFAULT_FILTER_CELL (0)
|
||||||
@ -66,9 +62,6 @@
|
|||||||
/* Defines in the Firmware */
|
/* Defines in the Firmware */
|
||||||
#define MAX_TIMESLOT_VAL (0x1F)
|
#define MAX_TIMESLOT_VAL (0x1F)
|
||||||
#define MAX_THRESHOLD_TEMP_VAL (127999) // millidegrees
|
#define MAX_THRESHOLD_TEMP_VAL (127999) // millidegrees
|
||||||
#define MAX_STORAGE_CELL_VAL (15) // 0xF
|
|
||||||
#define MAX_STORAGE_CELL_CHIP11_VAL (3)
|
|
||||||
#define MAX_STORAGE_CELL_DLY_NS_VAL (ASIC_CTRL_EXPSRE_TMR_MAX_VAL)
|
|
||||||
#define ACQ_TIME_MIN_CLOCK (2)
|
#define ACQ_TIME_MIN_CLOCK (2)
|
||||||
#define ASIC_FILTER_MAX_RES_VALUE (1)
|
#define ASIC_FILTER_MAX_RES_VALUE (1)
|
||||||
#define MAX_SELECT_CHIP10_VAL (63)
|
#define MAX_SELECT_CHIP10_VAL (63)
|
||||||
|
@ -222,7 +222,7 @@ int getReadoutMode();
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// parameters - timer
|
// parameters - timer
|
||||||
#if defined(JUNGFRAUD) || defined(MOENCHD)
|
#if defined(JUNGFRAUD)
|
||||||
int selectStoragecellStart(int pos);
|
int selectStoragecellStart(int pos);
|
||||||
int getMaxStoragecellStart();
|
int getMaxStoragecellStart();
|
||||||
#endif
|
#endif
|
||||||
@ -266,7 +266,7 @@ int64_t getSubDeadTime();
|
|||||||
int64_t getMeasuredPeriod();
|
int64_t getMeasuredPeriod();
|
||||||
int64_t getMeasuredSubPeriod();
|
int64_t getMeasuredSubPeriod();
|
||||||
#endif
|
#endif
|
||||||
#if defined(JUNGFRAUD) || defined(MOENCHD)
|
#if defined(JUNGFRAUD)
|
||||||
void setNumAdditionalStorageCells(int val);
|
void setNumAdditionalStorageCells(int val);
|
||||||
int getNumAdditionalStorageCells();
|
int getNumAdditionalStorageCells();
|
||||||
int setStorageCellDelay(int64_t val);
|
int setStorageCellDelay(int64_t val);
|
||||||
@ -513,7 +513,9 @@ void configureChip();
|
|||||||
int autoCompDisable(int on);
|
int autoCompDisable(int on);
|
||||||
int setComparatorDisableTime(int64_t val);
|
int setComparatorDisableTime(int64_t val);
|
||||||
int64_t getComparatorDisableTime();
|
int64_t getComparatorDisableTime();
|
||||||
|
#ifndef MOENCHD
|
||||||
void configureASICTimer();
|
void configureASICTimer();
|
||||||
|
#endif
|
||||||
int setReadoutSpeed(int val);
|
int setReadoutSpeed(int val);
|
||||||
int getReadoutSpeed(int *retval);
|
int getReadoutSpeed(int *retval);
|
||||||
int setPhase(enum CLKINDEX ind, int val, int degrees);
|
int setPhase(enum CLKINDEX ind, int val, int degrees);
|
||||||
|
@ -2158,7 +2158,7 @@ int get_num_additional_storage_cells(int file_des) {
|
|||||||
memset(mess, 0, sizeof(mess));
|
memset(mess, 0, sizeof(mess));
|
||||||
int retval = -1;
|
int retval = -1;
|
||||||
|
|
||||||
#if !defined(JUNGFRAUD) && !defined(MOENCHD)
|
#if !defined(JUNGFRAUD)
|
||||||
functionNotImplemented();
|
functionNotImplemented();
|
||||||
#else
|
#else
|
||||||
// get only
|
// get only
|
||||||
@ -2177,7 +2177,7 @@ int set_num_additional_storage_cells(int file_des) {
|
|||||||
return printSocketReadError();
|
return printSocketReadError();
|
||||||
LOG(logDEBUG1, ("Setting number of addl. storage cells %d\n", arg));
|
LOG(logDEBUG1, ("Setting number of addl. storage cells %d\n", arg));
|
||||||
|
|
||||||
#if !defined(JUNGFRAUD) && !defined(MOENCHD)
|
#if !defined(JUNGFRAUD)
|
||||||
functionNotImplemented();
|
functionNotImplemented();
|
||||||
#else
|
#else
|
||||||
// only set
|
// only set
|
||||||
@ -2620,7 +2620,7 @@ int get_storage_cell_delay(int file_des) {
|
|||||||
memset(mess, 0, sizeof(mess));
|
memset(mess, 0, sizeof(mess));
|
||||||
int64_t retval = -1;
|
int64_t retval = -1;
|
||||||
|
|
||||||
#if !defined(JUNGFRAUD) && !defined(MOENCHD)
|
#if !defined(JUNGFRAUD)
|
||||||
functionNotImplemented();
|
functionNotImplemented();
|
||||||
#else
|
#else
|
||||||
// get only
|
// get only
|
||||||
@ -2647,7 +2647,7 @@ int set_storage_cell_delay(int file_des) {
|
|||||||
LOG(logDEBUG1,
|
LOG(logDEBUG1,
|
||||||
("Setting storage cell delay %lld ns\n", (long long int)arg));
|
("Setting storage cell delay %lld ns\n", (long long int)arg));
|
||||||
|
|
||||||
#if !defined(JUNGFRAUD) && !defined(MOENCHD)
|
#if !defined(JUNGFRAUD)
|
||||||
functionNotImplemented();
|
functionNotImplemented();
|
||||||
#else
|
#else
|
||||||
// only set
|
// only set
|
||||||
@ -4015,7 +4015,7 @@ int storage_cell_start(int file_des) {
|
|||||||
return printSocketReadError();
|
return printSocketReadError();
|
||||||
LOG(logDEBUG1, ("Setting Storage cell start to %d\n", arg));
|
LOG(logDEBUG1, ("Setting Storage cell start to %d\n", arg));
|
||||||
|
|
||||||
#if !defined(JUNGFRAUD) && !defined(MOENCHD)
|
#if !defined(JUNGFRAUD)
|
||||||
functionNotImplemented();
|
functionNotImplemented();
|
||||||
#else
|
#else
|
||||||
// set & get
|
// set & get
|
||||||
@ -6958,7 +6958,7 @@ int get_receiver_parameters(int file_des) {
|
|||||||
return printSocketReadError();
|
return printSocketReadError();
|
||||||
|
|
||||||
// additional storage cells
|
// additional storage cells
|
||||||
#if defined(JUNGFRAUD) || defined(MOENCHD)
|
#if defined(JUNGFRAUD)
|
||||||
i32 = getNumAdditionalStorageCells();
|
i32 = getNumAdditionalStorageCells();
|
||||||
#else
|
#else
|
||||||
i32 = 0;
|
i32 = 0;
|
||||||
|
@ -1285,27 +1285,27 @@ class Detector {
|
|||||||
* disabled. It is only possible for chipv1.1.*/
|
* disabled. It is only possible for chipv1.1.*/
|
||||||
void setComparatorDisableTime(ns t, Positions pos = {});
|
void setComparatorDisableTime(ns t, Positions pos = {});
|
||||||
|
|
||||||
/** [Jungfrau][Moench] Advanced TODO naming */
|
/** [Jungfrau] Advanced TODO naming */
|
||||||
Result<int> getNumberOfAdditionalStorageCells(Positions pos = {}) const;
|
Result<int> getNumberOfAdditionalStorageCells(Positions pos = {}) const;
|
||||||
|
|
||||||
/** [Jungfrau][Moench] Advanced \n
|
/** [Jungfrau] Advanced \n
|
||||||
* Only for chipv1.0. Options: 0 - 15. Default: 0. \n
|
* Only for chipv1.0. Options: 0 - 15. Default: 0. \n
|
||||||
* The #images = #frames x #triggers x (#storagecells + 1) */
|
* The #images = #frames x #triggers x (#storagecells + 1) */
|
||||||
void setNumberOfAdditionalStorageCells(int value);
|
void setNumberOfAdditionalStorageCells(int value);
|
||||||
|
|
||||||
/** [Jungfrau][Moench] Advanced */
|
/** [Jungfrau] Advanced */
|
||||||
Result<int> getStorageCellStart(Positions pos = {}) const;
|
Result<int> getStorageCellStart(Positions pos = {}) const;
|
||||||
|
|
||||||
/** [Jungfrau][Moench] Advanced. Sets the storage cell storing the first
|
/** [Jungfrau] Advanced. Sets the storage cell storing the first
|
||||||
* acquisition of the series. Options: 0-max. max is 15 (default) for
|
* acquisition of the series. Options: 0-max. max is 15 (default) for
|
||||||
* chipv1.0 and 3 (default) for chipv1.1.
|
* chipv1.0 and 3 (default) for chipv1.1.
|
||||||
*/
|
*/
|
||||||
void setStorageCellStart(int cell, Positions pos = {});
|
void setStorageCellStart(int cell, Positions pos = {});
|
||||||
|
|
||||||
/** [Jungfrau][Moench] Advanced*/
|
/** [Jungfrau] Advanced*/
|
||||||
Result<ns> getStorageCellDelay(Positions pos = {}) const;
|
Result<ns> getStorageCellDelay(Positions pos = {}) const;
|
||||||
|
|
||||||
/** [Jungfrau][Moench] Advanced \n Additional time delay between 2
|
/** [Jungfrau] Advanced \n Additional time delay between 2
|
||||||
* consecutive exposures in burst mode. \n Options: (0-1638375 ns
|
* consecutive exposures in burst mode. \n Options: (0-1638375 ns
|
||||||
* (resolution of 25ns)\n Only applicable for chipv1.0.
|
* (resolution of 25ns)\n Only applicable for chipv1.0.
|
||||||
*/
|
*/
|
||||||
|
@ -2000,27 +2000,22 @@ class CmdProxy {
|
|||||||
INTEGER_COMMAND_SET_NOID_GET_ID(
|
INTEGER_COMMAND_SET_NOID_GET_ID(
|
||||||
extrastoragecells, getNumberOfAdditionalStorageCells,
|
extrastoragecells, getNumberOfAdditionalStorageCells,
|
||||||
setNumberOfAdditionalStorageCells, StringTo<int>,
|
setNumberOfAdditionalStorageCells, StringTo<int>,
|
||||||
"[0-15]\n\t[Jungfrau][Moench] Only for chipv1.0. Number of additional "
|
"[0-15]\n\t[Jungfrau] Only for chipv1.0. Number of additional storage "
|
||||||
"storage "
|
"cells. Default is 0. For advanced users only. \n\tThe #images = "
|
||||||
"cells. Default is "
|
"#frames x #triggers x (#extrastoragecells + 1).");
|
||||||
"0. For advanced users only. \n\tThe #images = #frames x #triggers x "
|
|
||||||
"(#extrastoragecells + 1).");
|
|
||||||
|
|
||||||
INTEGER_COMMAND_VEC_ID(
|
INTEGER_COMMAND_VEC_ID(
|
||||||
storagecell_start, getStorageCellStart, setStorageCellStart,
|
storagecell_start, getStorageCellStart, setStorageCellStart,
|
||||||
StringTo<int>,
|
StringTo<int>,
|
||||||
"[0-max]\n\t[Jungfrau][Moench] Storage cell that stores the first "
|
"[0-max]\n\t[Jungfrau] Storage cell that stores the first acquisition "
|
||||||
"acquisition "
|
|
||||||
"of the series. max is 15 (default) for chipv1.0 and 3 (default) for "
|
"of the series. max is 15 (default) for chipv1.0 and 3 (default) for "
|
||||||
"chipv1.1. For advanced users only.");
|
"chipv1.1. For advanced users only.");
|
||||||
|
|
||||||
TIME_COMMAND(
|
TIME_COMMAND(storagecell_delay, getStorageCellDelay, setStorageCellDelay,
|
||||||
storagecell_delay, getStorageCellDelay, setStorageCellDelay,
|
|
||||||
"[duration (0-1638375 ns)] [(optional unit) "
|
"[duration (0-1638375 ns)] [(optional unit) "
|
||||||
"ns|us|ms|s]\n\t[Jungfrau][Moench] "
|
"ns|us|ms|s]\n\t[Jungfrau] Additional time delay between 2 "
|
||||||
"Additional time delay between 2 consecutive exposures in burst mode "
|
"consecutive exposures in burst mode (resolution of 25ns). "
|
||||||
"(resolution of 25ns). Only applicable for chipv1.0. For advanced "
|
"Only applicable for chipv1.0. For advanced users only.");
|
||||||
"users only.");
|
|
||||||
|
|
||||||
INTEGER_COMMAND_VEC_ID(
|
INTEGER_COMMAND_VEC_ID(
|
||||||
gainmode, getGainMode, setGainMode, StringTo<slsDetectorDefs::gainMode>,
|
gainmode, getGainMode, setGainMode, StringTo<slsDetectorDefs::gainMode>,
|
||||||
|
@ -287,7 +287,7 @@ TEST_CASE("extrastoragecells", "[.cmd]") {
|
|||||||
Detector det;
|
Detector det;
|
||||||
CmdProxy proxy(&det);
|
CmdProxy proxy(&det);
|
||||||
auto det_type = det.getDetectorType().squash();
|
auto det_type = det.getDetectorType().squash();
|
||||||
if (det_type == defs::JUNGFRAU || det_type == defs::MOENCH) {
|
if (det_type == defs::JUNGFRAU) {
|
||||||
// chip version 1.0
|
// chip version 1.0
|
||||||
if (det.getChipVersion().squash() * 10 == 10) {
|
if (det.getChipVersion().squash() * 10 == 10) {
|
||||||
auto prev_val = det.getNumberOfAdditionalStorageCells().tsquash(
|
auto prev_val = det.getNumberOfAdditionalStorageCells().tsquash(
|
||||||
@ -330,7 +330,7 @@ TEST_CASE("storagecell_start", "[.cmd]") {
|
|||||||
Detector det;
|
Detector det;
|
||||||
CmdProxy proxy(&det);
|
CmdProxy proxy(&det);
|
||||||
auto det_type = det.getDetectorType().squash();
|
auto det_type = det.getDetectorType().squash();
|
||||||
if (det_type == defs::JUNGFRAU || det_type == defs::MOENCH) {
|
if (det_type == defs::JUNGFRAU) {
|
||||||
auto prev_val = det.getStorageCellStart();
|
auto prev_val = det.getStorageCellStart();
|
||||||
{
|
{
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
@ -375,7 +375,7 @@ TEST_CASE("storagecell_delay", "[.cmd]") {
|
|||||||
Detector det;
|
Detector det;
|
||||||
CmdProxy proxy(&det);
|
CmdProxy proxy(&det);
|
||||||
auto det_type = det.getDetectorType().squash();
|
auto det_type = det.getDetectorType().squash();
|
||||||
if (det_type == defs::JUNGFRAU || det_type == defs::MOENCH) {
|
if (det_type == defs::JUNGFRAU) {
|
||||||
// chip version 1.0
|
// chip version 1.0
|
||||||
if (det.getChipVersion().squash() * 10 == 10) {
|
if (det.getChipVersion().squash() * 10 == 10) {
|
||||||
auto prev_val = det.getStorageCellDelay();
|
auto prev_val = det.getStorageCellDelay();
|
||||||
|
@ -367,7 +367,7 @@ int ClientInterface::setup_receiver(Interface &socket) {
|
|||||||
if (detType == GOTTHARD2) {
|
if (detType == GOTTHARD2) {
|
||||||
impl()->setNumberOfBursts(arg.bursts);
|
impl()->setNumberOfBursts(arg.bursts);
|
||||||
}
|
}
|
||||||
if (detType == JUNGFRAU || detType == MOENCH) {
|
if (detType == JUNGFRAU) {
|
||||||
impl()->setNumberOfAdditionalStorageCells(arg.additionalStorageCells);
|
impl()->setNumberOfAdditionalStorageCells(arg.additionalStorageCells);
|
||||||
}
|
}
|
||||||
if (detType == CHIPTESTBOARD) {
|
if (detType == CHIPTESTBOARD) {
|
||||||
|
@ -226,7 +226,7 @@ const slsDetectorDefs::xy Implementation::GetPortGeometry() const {
|
|||||||
xy portGeometry{1, 1};
|
xy portGeometry{1, 1};
|
||||||
if (generalData->detType == EIGER)
|
if (generalData->detType == EIGER)
|
||||||
portGeometry.x = generalData->numUDPInterfaces;
|
portGeometry.x = generalData->numUDPInterfaces;
|
||||||
else if (generalData->detType == JUNGFRAU)
|
else if (generalData->detType == JUNGFRAU || generalData->detType == MOENCH)
|
||||||
portGeometry.y = generalData->numUDPInterfaces;
|
portGeometry.y = generalData->numUDPInterfaces;
|
||||||
return portGeometry;
|
return portGeometry;
|
||||||
}
|
}
|
||||||
@ -413,7 +413,7 @@ void Implementation::setReceiverROI(const slsDetectorDefs::ROI arg) {
|
|||||||
portFullRoi.xmin += nPortDim.x;
|
portFullRoi.xmin += nPortDim.x;
|
||||||
portFullRoi.xmax += nPortDim.x;
|
portFullRoi.xmax += nPortDim.x;
|
||||||
}
|
}
|
||||||
// top bottom (jungfrau)
|
// top bottom (jungfrau or moench)
|
||||||
else {
|
else {
|
||||||
portFullRoi.ymin += nPortDim.y;
|
portFullRoi.ymin += nPortDim.y;
|
||||||
portFullRoi.ymax += nPortDim.y;
|
portFullRoi.ymax += nPortDim.y;
|
||||||
@ -1127,7 +1127,7 @@ int Implementation::getUDPSocketBufferSize() const {
|
|||||||
|
|
||||||
void Implementation::setUDPSocketBufferSize(const int s) {
|
void Implementation::setUDPSocketBufferSize(const int s) {
|
||||||
size_t listSize = listener.size();
|
size_t listSize = listener.size();
|
||||||
if ((generalData->detType == JUNGFRAU ||
|
if ((generalData->detType == JUNGFRAU || generalData->detType == MOENCH ||
|
||||||
generalData->detType == GOTTHARD2) &&
|
generalData->detType == GOTTHARD2) &&
|
||||||
(int)listSize != generalData->numUDPInterfaces) {
|
(int)listSize != generalData->numUDPInterfaces) {
|
||||||
throw RuntimeError("Number of Interfaces " +
|
throw RuntimeError("Number of Interfaces " +
|
||||||
|
@ -7,8 +7,7 @@
|
|||||||
#define APICTB "developer 0x221213"
|
#define APICTB "developer 0x221213"
|
||||||
#define APIGOTTHARD2 "developer 0x221213"
|
#define APIGOTTHARD2 "developer 0x221213"
|
||||||
#define APIJUNGFRAU "developer 0x221213"
|
#define APIJUNGFRAU "developer 0x221213"
|
||||||
#define APIMOENCH "developer 0x221213"
|
|
||||||
#define APIEIGER "developer 0x221213"
|
#define APIEIGER "developer 0x221213"
|
||||||
|
#define APIMOENCH "developer 0x221215"
|
||||||
#define APIGOTTHARD "developer 0x230117"
|
#define APIGOTTHARD "developer 0x230117"
|
||||||
#define APIMYTHEN3 "developer 0x230117"
|
#define APIMYTHEN3 "developer 0x230117"
|
Loading…
x
Reference in New Issue
Block a user