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:
Dhanya Thattil 2023-02-24 10:00:31 +01:00 committed by GitHub
parent eb025b54ef
commit 276dc52196
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 134 additions and 292 deletions

View File

@ -229,7 +229,7 @@ class Detector(CppDetectorApi):
@element
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())
@ -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
[Mythen3] Options: 8, 16, 32 \n
[Jungfrau][Gotthard][Ctb][Moench][Mythen3][Gotthard2] 16
[Jungfrau][Moench][Gotthard][Ctb][Mythen3][Gotthard2] 16
"""
return self.getDynamicRange()
@ -356,10 +356,9 @@ class Detector(CppDetectorApi):
-----
[Eiger] Use threshold command to load settings
[Jungfrau] GAIN0, HIGHGAIN0 \n
[Jungfrau][Moench] GAIN0, HIGHGAIN0 \n
[Gotthard] DYNAMICGAIN, HIGHGAIN, LOWGAIN, MEDIUMGAIN, VERYHIGHGAIN \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
"""
return element_if_equal(self.getSettings())
@ -389,7 +388,7 @@ class Detector(CppDetectorApi):
@element
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.
:setter: Not Implemented
@ -400,7 +399,7 @@ class Detector(CppDetectorApi):
@element
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
-----
@ -429,12 +428,11 @@ class Detector(CppDetectorApi):
@element
def powerchip(self):
"""
[Jungfrau][Mythen3][Gotthard2][Moench] Power the chip.
[Jungfrau][Moench][Mythen3][Gotthard2] Power the chip.
Note
----
[Moench] Default is disabled. \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
[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
[Mythen3][Gotthard2] Default is 1. If module not connected or wrong module, powerchip will fail.
"""
return self.getPowerChip()
@ -560,7 +558,7 @@ class Detector(CppDetectorApi):
@element
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
-----
@ -582,7 +580,7 @@ class Detector(CppDetectorApi):
@element
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
-----
@ -627,7 +625,7 @@ class Detector(CppDetectorApi):
@element
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
-----
@ -682,7 +680,7 @@ class Detector(CppDetectorApi):
@element
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
----
@ -690,7 +688,7 @@ class Detector(CppDetectorApi):
\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_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.
"""
return self.getTransmissionDelay()
@ -703,11 +701,11 @@ class Detector(CppDetectorApi):
@element
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
----
[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
[Mythen3] [0-16777215] Each value represents 8 ns (125 MHz clock), max is 134 ms.
"""
@ -890,7 +888,7 @@ class Detector(CppDetectorApi):
@property
@element
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
-----
@ -1236,11 +1234,11 @@ class Detector(CppDetectorApi):
@element
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
----
[Jungfrau] bottom half \n
[Jungfrau][Moench] bottom half \n
[Gotthard2] veto debugging \n
If 'auto' used, then ip is set to ip of rx_hostname. \n
To set IPs for individual modules, use setDestinationUDPIP2.
@ -1289,13 +1287,13 @@ class Detector(CppDetectorApi):
@element
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
----
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
[Jungfrau] bottom half \n
[Jungfrau][Moench] bottom half \n
[Gotthard2] veto debugging \n
Use router mac if router between detector and receiver.
@ -1340,11 +1338,11 @@ class Detector(CppDetectorApi):
@element
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
----
[Jungfrau] bottom half \n
[Jungfrau][Moench] bottom half \n
[Gotthard2] veto debugging \n
To set MACs for individual modules, use setSourceUDPMAC2.
@ -1390,11 +1388,11 @@ class Detector(CppDetectorApi):
@element
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
-----
[Jungfrau] bottom half \n
[Jungfrau][Moench] bottom half \n
[Gotthard2] veto debugging \n
Must be same subnet as destination udp ip2.\n
To set IPs for individual modules, use setSourceUDPIP2.
@ -1440,7 +1438,7 @@ class Detector(CppDetectorApi):
----
Default is 50002. \n
[Eiger] right half \n
[Jungfrau] bottom half \n
[Jungfrau][Moench] bottom half \n
[Gotthard2] veto debugging \n
Ports for each module is calculated (incremented by 2) \n
To set ports for individual modules, use setDestinationUDPPort2.
@ -1460,7 +1458,7 @@ class Detector(CppDetectorApi):
-----
[Gotthard] 0, 90, 110, 120, 150, 180, 200 \n
[Eiger][Mythen3][Gotthard2] 0 - 200 \n
[Jungfrau][Ctb][Moench] 0, 60 - 200
[Jungfrau][Moench][Ctb] 0, 60 - 200
"""
return self.getHighVoltage()
@ -1569,8 +1567,8 @@ class Detector(CppDetectorApi):
@element
def master(self):
"""
[Eiger][Gotthard2][Jungfrau] Sets (half) module to master and other(s) to slaves.\n
[Gotthard][Gotthard2][Mythen3][Eiger][Jungfrau] Gets if the current (half) module is master.
[Eiger][Gotthard2][Jungfrau][Moench] Sets (half) module to master and other(s) to slaves.\n
[Gotthard][Gotthard2][Mythen3][Eiger][Jungfrau][Moench] Gets if the current (half) module is master.
"""
return self.getMaster()
@ -1582,7 +1580,7 @@ class Detector(CppDetectorApi):
@element
def sync(self):
"""
[Jungfrau] Enables or disables synchronization between modules.
[Jungfrau][Moench] Enables or disables synchronization between modules.
"""
return self.getSynchronization()
@ -1718,7 +1716,7 @@ class Detector(CppDetectorApi):
@property
def adcreg(self):
"""[Jungfrau][Ctb][Moench][Gotthard] Writes to an adc register
"""[Jungfrau][Moench][Ctb][Gotthard] Writes to an adc register
Note
-----
@ -1731,7 +1729,7 @@ class Detector(CppDetectorApi):
@property
@element
def adcinvert(self):
"""[Ctb][Moench][Jungfrau] ADC Inversion Mask.
"""[Ctb][Jungfrau][Moench] ADC Inversion Mask.
Note
-----
@ -1747,7 +1745,7 @@ class Detector(CppDetectorApi):
@element
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
----
@ -1760,7 +1758,7 @@ class Detector(CppDetectorApi):
@property
@element
def frametime(self):
"""[Jungfrau][Mythen3][Gotthard2][Moench][CTB] Timestamp at a frame start.
"""[Jungfrau][Moench][Mythen3][Gotthard2][CTB] Timestamp at a frame start.
Note
----
@ -1873,10 +1871,10 @@ class Detector(CppDetectorApi):
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
[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.
"""
return element_if_equal(self.getReadoutSpeed())
@ -1962,7 +1960,7 @@ class Detector(CppDetectorApi):
Note
-----
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
[Eiger] AUTO_TIMING, TRIGGER_EXPOSURE, GATED, BURST_TRIGGER
"""
@ -2121,13 +2119,13 @@ class Detector(CppDetectorApi):
def readnrows(self):
"""
[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
----
[Eiger] Options: 1 - 256. 256 is default. \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()
@ -2218,7 +2216,7 @@ class Detector(CppDetectorApi):
@property
@element
def tengiga(self):
"""[Eiger][Ctb][Moench][Mythen3] 10GbE Enable."""
"""[Eiger][Ctb][Mythen3] 10GbE Enable."""
return self.getTenGiga()
@tengiga.setter
@ -2238,7 +2236,7 @@ class Detector(CppDetectorApi):
@property
@element
def flowcontrol10g(self):
"""[Eiger][Jungfrau] Enable or disable 10GbE Flow Control."""
"""[Eiger][Jungfrau][Moench] Enable or disable 10GbE Flow Control."""
return self.getTenGigaFlowControl()
@flowcontrol10g.setter
@ -2258,7 +2256,7 @@ class Detector(CppDetectorApi):
@property
@element
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()
@gappixels.setter
@ -2314,7 +2312,7 @@ class Detector(CppDetectorApi):
@element
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
-------
@ -2327,7 +2325,7 @@ class Detector(CppDetectorApi):
@property
@element
def autocompdisable(self):
"""[Jungfrau] Enable or disable auto comparator disable mode.
"""[Jungfrau][Moench] Enable or disable auto comparator disable mode.
Note
-----
@ -2343,7 +2341,7 @@ class Detector(CppDetectorApi):
@property
@element
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
-----
@ -2389,7 +2387,7 @@ class Detector(CppDetectorApi):
@property
@element
def runtime(self):
"""[Jungfrau][Mythen3][Gotthard2][Moench][CTB] Time from detector start up.
"""[Jungfrau][Moench][Mythen3][Gotthard2][CTB] Time from detector start up.
Note
-----
@ -2482,7 +2480,7 @@ class Detector(CppDetectorApi):
@element
def temp_threshold(self):
"""
[Jungfrau] Threshold temperature in degrees.
[Jungfrau][Moench] Threshold temperature in degrees.
Note
-----
@ -2499,7 +2497,7 @@ class Detector(CppDetectorApi):
@element
def temp_event(self):
"""
[Jungfrau] 1, if a temperature event occured. \n
[Jungfrau][Moench] 1, if a temperature event occured. \n
Note
----
@ -2527,7 +2525,7 @@ class Detector(CppDetectorApi):
@element
def temp_control(self):
"""
[Jungfrau] Temperature control enable.
[Jungfrau][Moench] Temperature control enable.
Note
-----
@ -2544,7 +2542,7 @@ class Detector(CppDetectorApi):
@property
@element
def selinterface(self):
"""[Jungfrau] The udp interface to stream data from detector.
"""[Jungfrau][Moench] The udp interface to stream data from detector.
Note
-----
@ -2564,11 +2562,11 @@ class Detector(CppDetectorApi):
@property
def gainmode(self):
"""
[Jungfrau] Detector gain mode. Enum: gainMode
[Jungfrau][Moench] Detector gain mode. Enum: gainMode
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!!!
"""
return element_if_equal(self.getGainMode())
@ -2623,14 +2621,14 @@ class Detector(CppDetectorApi):
@element
def filterresistor(self):
"""
[Gotthard2][Jungfrau] Set filter resistor. Increasing values for increasing "
[Gotthard2][Jungfrau][Moench] Set filter resistor. Increasing values for increasing "
"resistance.
Note
----
Advanced user command.
[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()
@ -2642,11 +2640,11 @@ class Detector(CppDetectorApi):
@element
def filtercells(self):
"""
[Jungfrau] Set filter capacitor.
[Jungfrau][Moench] Set filter capacitor.
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()
@ -2982,7 +2980,7 @@ class Detector(CppDetectorApi):
@property
@element
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()
@adcenable.setter
@ -2992,7 +2990,7 @@ class Detector(CppDetectorApi):
@property
@element
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
-----
@ -3009,7 +3007,6 @@ class Detector(CppDetectorApi):
def samples(self):
"""
[CTB] Number of samples (both analog and digitial) expected. \n
[Moench] Number of samples (analog only)
"""
return self.getNumberOfAnalogSamples()
@ -3020,7 +3017,7 @@ class Detector(CppDetectorApi):
@property
@element
def runclk(self):
"""[Ctb][Moench] Run clock in MHz."""
"""[Ctb] Run clock in MHz."""
return self.getRUNClock()
@runclk.setter
@ -3053,7 +3050,7 @@ class Detector(CppDetectorApi):
@property
@element
def asamples(self):
"""[Ctb][Moench] Number of analog samples expected. """
"""[Ctb] Number of analog samples expected. """
return element_if_equal(self.getNumberOfAnalogSamples())
@asamples.setter
@ -3073,7 +3070,7 @@ class Detector(CppDetectorApi):
@property
@element
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
-----
@ -3114,7 +3111,7 @@ class Detector(CppDetectorApi):
@property
@element
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
-----
@ -3161,7 +3158,7 @@ class Detector(CppDetectorApi):
@property
@element
def maxadcphaseshift(self):
"""[Jungfrau][CTB][Moench] Absolute maximum Phase shift of ADC clock.
"""[Jungfrau][Moench][CTB] Absolute maximum Phase shift of ADC clock.
Note
-----
@ -3173,12 +3170,12 @@ class Detector(CppDetectorApi):
@property
@element
def adcphase(self):
"""[Gotthard][Jungfrau][CTB][Moench] Sets phase shift of ADC clock.
"""[Gotthard][Jungfrau][Moench][CTB] Sets phase shift of ADC clock.
Note
-----
[Jungfrau] 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
[Jungfrau][Moench] Absolute phase shift. Changing Speed also resets adcphase to recommended defaults.\n
[Ctb] Absolute phase shift. Changing adcclk also resets adcphase and sets it to previous values.\n
[Gotthard] Relative phase shift.
:getter: Not implemented for Gotthard
@ -3192,7 +3189,7 @@ class Detector(CppDetectorApi):
@property
@element
def adcpipeline(self):
"""[Ctb][Moench] Sets pipeline for ADC clock. """
"""[Ctb] Sets pipeline for ADC clock. """
return self.getADCPipeline()
@adcpipeline.setter
@ -3202,7 +3199,7 @@ class Detector(CppDetectorApi):
@property
@element
def adcclk(self):
"""[Ctb][Moench] Sets ADC clock frequency in MHz. """
"""[Ctb] Sets ADC clock frequency in MHz. """
return self.getADCClock()
@adcclk.setter
@ -3213,7 +3210,7 @@ class Detector(CppDetectorApi):
@element
def syncclk(self):
"""
[Ctb][Moench] Sync clock in MHz.
[Ctb] Sync clock in MHz.
Note
-----
@ -3224,7 +3221,7 @@ class Detector(CppDetectorApi):
@property
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
----
@ -3246,7 +3243,7 @@ class Detector(CppDetectorApi):
@property
@element
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
--------
@ -3263,7 +3260,7 @@ class Detector(CppDetectorApi):
@property
@element
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
---------
@ -3283,7 +3280,7 @@ class Detector(CppDetectorApi):
@property
@element
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
--------
@ -3300,7 +3297,7 @@ class Detector(CppDetectorApi):
@property
@element
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
--------
@ -3318,7 +3315,7 @@ class Detector(CppDetectorApi):
# @element
def patwait(self):
"""
[Ctb][Moench][Mythen3] Wait address of loop level provided.
[Ctb][Mythen3] Wait address of loop level provided.
Example
-------
@ -3335,7 +3332,7 @@ class Detector(CppDetectorApi):
@property
@element
def patwait0(self):
"""[Ctb][Moench][Mythen3] Wait 0 address.
"""[Ctb][Mythen3] Wait 0 address.
Example
--------
@ -3355,7 +3352,7 @@ class Detector(CppDetectorApi):
@property
@element
def patwait1(self):
"""[Ctb][Moench][Mythen3] Wait 1 address.
"""[Ctb][Mythen3] Wait 1 address.
Example
--------
@ -3375,7 +3372,7 @@ class Detector(CppDetectorApi):
@property
@element
def patwait2(self):
"""[Ctb][Moench][Mythen3] Wait 2 address.
"""[Ctb][Mythen3] Wait 2 address.
Example
--------
@ -3395,7 +3392,7 @@ class Detector(CppDetectorApi):
@property
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
-------
@ -3412,7 +3409,7 @@ class Detector(CppDetectorApi):
@property
@element
def patwaittime0(self):
"""[Ctb][Moench][Mythen3] Wait 0 time in clock cycles."""
"""[Ctb][Mythen3] Wait 0 time in clock cycles."""
return self.getPatternWaitTime(0)
@patwaittime0.setter
@ -3423,7 +3420,7 @@ class Detector(CppDetectorApi):
@property
@element
def patwaittime1(self):
"""[Ctb][Moench][Mythen3] Wait 1 time in clock cycles."""
"""[Ctb][Mythen3] Wait 1 time in clock cycles."""
return self.getPatternWaitTime(1)
@patwaittime1.setter
@ -3434,7 +3431,7 @@ class Detector(CppDetectorApi):
@property
@element
def patwaittime2(self):
"""[Ctb][Moench][Mythen3] Wait 2 time in clock cycles."""
"""[Ctb][Mythen3] Wait 2 time in clock cycles."""
return self.getPatternWaitTime(2)
@patwaittime2.setter
@ -3446,7 +3443,7 @@ class Detector(CppDetectorApi):
@property
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
-------
@ -3463,7 +3460,7 @@ class Detector(CppDetectorApi):
@property
@element
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
---------
@ -3483,7 +3480,7 @@ class Detector(CppDetectorApi):
@property
@element
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
---------
@ -3504,7 +3501,7 @@ class Detector(CppDetectorApi):
@property
@element
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
---------
@ -3526,7 +3523,7 @@ class Detector(CppDetectorApi):
@property
def patnloop(self):
"""
[Ctb][Moench][Mythen3] Number of cycles of the loop provided.
[Ctb][Mythen3] Number of cycles of the loop provided.
Example
-------
@ -3543,7 +3540,7 @@ class Detector(CppDetectorApi):
@property
@element
def patnloop0(self):
"""[Ctb][Moench][Mythen3] Number of cycles of loop 0."""
"""[Ctb][Mythen3] Number of cycles of loop 0."""
return self.getPatternLoopCycles(0)
@patnloop0.setter
@ -3554,7 +3551,7 @@ class Detector(CppDetectorApi):
@property
@element
def patnloop1(self):
"""[Ctb][Moench][Mythen3] Number of cycles of loop 1."""
"""[Ctb][Mythen3] Number of cycles of loop 1."""
return self.getPatternLoopCycles(1)
@patnloop1.setter
@ -3565,7 +3562,7 @@ class Detector(CppDetectorApi):
@property
@element
def patnloop2(self):
"""[Ctb][Moench][Mythen3] Number of cycles of loop 2."""
"""[Ctb][Mythen3] Number of cycles of loop 2."""
return self.getPatternLoopCycles(2)
@patnloop2.setter
@ -3636,7 +3633,7 @@ class Detector(CppDetectorApi):
@property
@element
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)
@v_limit.setter

View File

@ -48,6 +48,10 @@ void qTabAdvanced::SetupWidgetWindow() {
lblDiscardBits->setEnabled(true);
spinDiscardBits->setEnabled(true);
break;
case slsDetectorDefs::JUNGFRAU:
lblNumStoragecells->setEnabled(true);
spinNumStoragecells->setEnabled(true);
break;
default:
break;
}

View File

@ -104,8 +104,6 @@
#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_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%)
#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)
@ -231,8 +229,6 @@
#define CONTROL_ACQ_FIFO_CLR_MSK (0x00000001 << CONTROL_ACQ_FIFO_CLR_OFST)
#define CONTROL_MASTER_OFST (15)
#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_MSK (0x0000003F << CONTROL_RX_ADDTNL_ENDPTS_NUM_OFST)
#define CONTROL_RX_ENDPTS_START_OFST (26)
@ -260,8 +256,6 @@
#define CONFIG_V11_FLTR_CLL_OFST (0)
#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%)
#define CONFIG_V11_CRRNT_SRC_LOW_OFST (19)
#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_CHIP11_VRSN_OFST (7)
#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_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)
@ -445,23 +437,6 @@ Time before end of exposure when comparator is disabled */
#define MOD_ID_OFST (0)
#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 */
#define ADC_DSRLZR_0_REG (0xF0 << MEM_MAP_SHIFT)
#define ADC_DSRLZR_0_RFRSH_ALGNMNT_OFST (31) /* Refresh alignment */

View File

@ -518,7 +518,7 @@ void setupDetector() {
resetCore();
alignDeserializer();
// configureASICTimer(); ASIC_CTRL_REG to be removed along with storage cell
// delay
bus_w(ADC_PORT_INVERT_REG,
(isHardwareVersion_1_0() ? ADC_PORT_INVERT_BOARD2_VAL
@ -536,14 +536,6 @@ void setupDetector() {
setExpTime(DEFAULT_EXPTIME);
setPeriod(DEFAULT_PERIOD);
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);
setNextFrameNumber(DEFAULT_STARTING_FRAME_NUMBER);
@ -891,66 +883,6 @@ uint32_t getADCInvertRegister() {
}
/* 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) {
LOG(logINFO,
@ -1075,48 +1007,6 @@ int64_t getDelayAfterTrigger() {
(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() {
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);
}
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) {
// stop state machine if running
if (runBusy()) {
@ -2601,8 +2479,7 @@ void *start_timer(void *arg) {
int transmissionDelayUs = getTransmissionDelayFrame() * 1000;
int numInterfaces = getNumberofUDPInterfaces();
int64_t periodNs = getPeriod();
int numFrames = (getNumFrames() * getNumTriggers() *
(getNumAdditionalStorageCells() + 1));
int numFrames = getNumFrames() * getNumTriggers();
int64_t expUs = getExpTime() / 1000;
const int maxPacketsPerFrame = (MAX_ROWS_PER_READOUT / ROWS_PER_PACKET);
const int dataSize = (DATA_BYTES / maxPacketsPerFrame);

View File

@ -44,10 +44,6 @@
#define DEFAULT_GAINMODE (DYNAMIC)
#define DEFAULT_TX_UDP_PORT (0x7e9a)
#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_FILTER_RESISTOR (1) // higher resistor
#define DEFAULT_FILTER_CELL (0)
@ -66,9 +62,6 @@
/* Defines in the Firmware */
#define MAX_TIMESLOT_VAL (0x1F)
#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 ASIC_FILTER_MAX_RES_VALUE (1)
#define MAX_SELECT_CHIP10_VAL (63)

View File

@ -222,7 +222,7 @@ int getReadoutMode();
#endif
// parameters - timer
#if defined(JUNGFRAUD) || defined(MOENCHD)
#if defined(JUNGFRAUD)
int selectStoragecellStart(int pos);
int getMaxStoragecellStart();
#endif
@ -266,7 +266,7 @@ int64_t getSubDeadTime();
int64_t getMeasuredPeriod();
int64_t getMeasuredSubPeriod();
#endif
#if defined(JUNGFRAUD) || defined(MOENCHD)
#if defined(JUNGFRAUD)
void setNumAdditionalStorageCells(int val);
int getNumAdditionalStorageCells();
int setStorageCellDelay(int64_t val);
@ -513,7 +513,9 @@ void configureChip();
int autoCompDisable(int on);
int setComparatorDisableTime(int64_t val);
int64_t getComparatorDisableTime();
#ifndef MOENCHD
void configureASICTimer();
#endif
int setReadoutSpeed(int val);
int getReadoutSpeed(int *retval);
int setPhase(enum CLKINDEX ind, int val, int degrees);

View File

@ -2158,7 +2158,7 @@ int get_num_additional_storage_cells(int file_des) {
memset(mess, 0, sizeof(mess));
int retval = -1;
#if !defined(JUNGFRAUD) && !defined(MOENCHD)
#if !defined(JUNGFRAUD)
functionNotImplemented();
#else
// get only
@ -2177,7 +2177,7 @@ int set_num_additional_storage_cells(int file_des) {
return printSocketReadError();
LOG(logDEBUG1, ("Setting number of addl. storage cells %d\n", arg));
#if !defined(JUNGFRAUD) && !defined(MOENCHD)
#if !defined(JUNGFRAUD)
functionNotImplemented();
#else
// only set
@ -2620,7 +2620,7 @@ int get_storage_cell_delay(int file_des) {
memset(mess, 0, sizeof(mess));
int64_t retval = -1;
#if !defined(JUNGFRAUD) && !defined(MOENCHD)
#if !defined(JUNGFRAUD)
functionNotImplemented();
#else
// get only
@ -2647,7 +2647,7 @@ int set_storage_cell_delay(int file_des) {
LOG(logDEBUG1,
("Setting storage cell delay %lld ns\n", (long long int)arg));
#if !defined(JUNGFRAUD) && !defined(MOENCHD)
#if !defined(JUNGFRAUD)
functionNotImplemented();
#else
// only set
@ -4015,7 +4015,7 @@ int storage_cell_start(int file_des) {
return printSocketReadError();
LOG(logDEBUG1, ("Setting Storage cell start to %d\n", arg));
#if !defined(JUNGFRAUD) && !defined(MOENCHD)
#if !defined(JUNGFRAUD)
functionNotImplemented();
#else
// set & get
@ -6958,7 +6958,7 @@ int get_receiver_parameters(int file_des) {
return printSocketReadError();
// additional storage cells
#if defined(JUNGFRAUD) || defined(MOENCHD)
#if defined(JUNGFRAUD)
i32 = getNumAdditionalStorageCells();
#else
i32 = 0;

View File

@ -1285,27 +1285,27 @@ class Detector {
* disabled. It is only possible for chipv1.1.*/
void setComparatorDisableTime(ns t, Positions pos = {});
/** [Jungfrau][Moench] Advanced TODO naming */
/** [Jungfrau] Advanced TODO naming */
Result<int> getNumberOfAdditionalStorageCells(Positions pos = {}) const;
/** [Jungfrau][Moench] Advanced \n
/** [Jungfrau] Advanced \n
* Only for chipv1.0. Options: 0 - 15. Default: 0. \n
* The #images = #frames x #triggers x (#storagecells + 1) */
void setNumberOfAdditionalStorageCells(int value);
/** [Jungfrau][Moench] Advanced */
/** [Jungfrau] Advanced */
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
* chipv1.0 and 3 (default) for chipv1.1.
*/
void setStorageCellStart(int cell, Positions pos = {});
/** [Jungfrau][Moench] Advanced*/
/** [Jungfrau] Advanced*/
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
* (resolution of 25ns)\n Only applicable for chipv1.0.
*/

View File

@ -2000,27 +2000,22 @@ class CmdProxy {
INTEGER_COMMAND_SET_NOID_GET_ID(
extrastoragecells, getNumberOfAdditionalStorageCells,
setNumberOfAdditionalStorageCells, StringTo<int>,
"[0-15]\n\t[Jungfrau][Moench] Only for chipv1.0. Number of additional "
"storage "
"cells. Default is "
"0. For advanced users only. \n\tThe #images = #frames x #triggers x "
"(#extrastoragecells + 1).");
"[0-15]\n\t[Jungfrau] Only for chipv1.0. Number of additional storage "
"cells. Default is 0. For advanced users only. \n\tThe #images = "
"#frames x #triggers x (#extrastoragecells + 1).");
INTEGER_COMMAND_VEC_ID(
storagecell_start, getStorageCellStart, setStorageCellStart,
StringTo<int>,
"[0-max]\n\t[Jungfrau][Moench] Storage cell that stores the first "
"acquisition "
"[0-max]\n\t[Jungfrau] Storage cell that stores the first acquisition "
"of the series. max is 15 (default) for chipv1.0 and 3 (default) for "
"chipv1.1. For advanced users only.");
TIME_COMMAND(
storagecell_delay, getStorageCellDelay, setStorageCellDelay,
TIME_COMMAND(storagecell_delay, getStorageCellDelay, setStorageCellDelay,
"[duration (0-1638375 ns)] [(optional unit) "
"ns|us|ms|s]\n\t[Jungfrau][Moench] "
"Additional time delay between 2 consecutive exposures in burst mode "
"(resolution of 25ns). Only applicable for chipv1.0. For advanced "
"users only.");
"ns|us|ms|s]\n\t[Jungfrau] Additional time delay between 2 "
"consecutive exposures in burst mode (resolution of 25ns). "
"Only applicable for chipv1.0. For advanced users only.");
INTEGER_COMMAND_VEC_ID(
gainmode, getGainMode, setGainMode, StringTo<slsDetectorDefs::gainMode>,

View File

@ -287,7 +287,7 @@ TEST_CASE("extrastoragecells", "[.cmd]") {
Detector det;
CmdProxy proxy(&det);
auto det_type = det.getDetectorType().squash();
if (det_type == defs::JUNGFRAU || det_type == defs::MOENCH) {
if (det_type == defs::JUNGFRAU) {
// chip version 1.0
if (det.getChipVersion().squash() * 10 == 10) {
auto prev_val = det.getNumberOfAdditionalStorageCells().tsquash(
@ -330,7 +330,7 @@ TEST_CASE("storagecell_start", "[.cmd]") {
Detector det;
CmdProxy proxy(&det);
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();
{
std::ostringstream oss;
@ -375,7 +375,7 @@ TEST_CASE("storagecell_delay", "[.cmd]") {
Detector det;
CmdProxy proxy(&det);
auto det_type = det.getDetectorType().squash();
if (det_type == defs::JUNGFRAU || det_type == defs::MOENCH) {
if (det_type == defs::JUNGFRAU) {
// chip version 1.0
if (det.getChipVersion().squash() * 10 == 10) {
auto prev_val = det.getStorageCellDelay();

View File

@ -367,7 +367,7 @@ int ClientInterface::setup_receiver(Interface &socket) {
if (detType == GOTTHARD2) {
impl()->setNumberOfBursts(arg.bursts);
}
if (detType == JUNGFRAU || detType == MOENCH) {
if (detType == JUNGFRAU) {
impl()->setNumberOfAdditionalStorageCells(arg.additionalStorageCells);
}
if (detType == CHIPTESTBOARD) {

View File

@ -226,7 +226,7 @@ const slsDetectorDefs::xy Implementation::GetPortGeometry() const {
xy portGeometry{1, 1};
if (generalData->detType == EIGER)
portGeometry.x = generalData->numUDPInterfaces;
else if (generalData->detType == JUNGFRAU)
else if (generalData->detType == JUNGFRAU || generalData->detType == MOENCH)
portGeometry.y = generalData->numUDPInterfaces;
return portGeometry;
}
@ -413,7 +413,7 @@ void Implementation::setReceiverROI(const slsDetectorDefs::ROI arg) {
portFullRoi.xmin += nPortDim.x;
portFullRoi.xmax += nPortDim.x;
}
// top bottom (jungfrau)
// top bottom (jungfrau or moench)
else {
portFullRoi.ymin += nPortDim.y;
portFullRoi.ymax += nPortDim.y;
@ -1127,7 +1127,7 @@ int Implementation::getUDPSocketBufferSize() const {
void Implementation::setUDPSocketBufferSize(const int s) {
size_t listSize = listener.size();
if ((generalData->detType == JUNGFRAU ||
if ((generalData->detType == JUNGFRAU || generalData->detType == MOENCH ||
generalData->detType == GOTTHARD2) &&
(int)listSize != generalData->numUDPInterfaces) {
throw RuntimeError("Number of Interfaces " +

View File

@ -7,8 +7,7 @@
#define APICTB "developer 0x221213"
#define APIGOTTHARD2 "developer 0x221213"
#define APIJUNGFRAU "developer 0x221213"
#define APIMOENCH "developer 0x221213"
#define APIEIGER "developer 0x221213"
#define APIMOENCH "developer 0x221215"
#define APIGOTTHARD "developer 0x230117"
#define APIMYTHEN3 "developer 0x230117"