From 75072a371e6166f85e4e9058c15cfc68d6650cbd Mon Sep 17 00:00:00 2001
From: Jens Georg <jens.georg@desy.de>
Date: Thu, 2 Jul 2020 14:40:56 +0200
Subject: [PATCH] Add flashsd4dbc3

Also split up config a bit
---
 bam/baseconfig.py             | 84 +++++++++++------------------------
 bam/hostlist                  |  2 +-
 bam/settings/FLASH.py         | 71 +++++++++++++++++++++++++++++
 bam/settings/XFEL.py          | 77 ++++++++++++++++++++++++++++++++
 bam/templates/BAM.dmap        |  2 +-
 bam/templates/bam_server.conf |  3 +-
 bam/templates/toroid.xlmap    |  2 +-
 7 files changed, 180 insertions(+), 61 deletions(-)
 create mode 100644 bam/settings/FLASH.py
 create mode 100644 bam/settings/XFEL.py

diff --git a/bam/baseconfig.py b/bam/baseconfig.py
index 43f6e83..75f506c 100644
--- a/bam/baseconfig.py
+++ b/bam/baseconfig.py
@@ -11,88 +11,58 @@ else:
 def makeDoocsArray(values: typing.Iterable) -> str:
     return "      ".join(map(str, values))
 
-TOROID_LOCATION = {
-    '203.B1' : 'TORA.203.B1'
+# Names of the properties for the different flattops on the Toroid server
+TOROID_FT = {
+    'XFEL' : ['SAMPLE.SA1', 'SAMPLE.SA2', 'SAMPLE.SA3'],
+    'FLASH' : ['SAMPLE.FLASH1', 'SAMPLE.FLASH2']
 }
+# Lab is part of XFEL but has different location
+TOROID_FT['LAB'] = TOROID_FT['XFEL']
 
-MLO_DEVICE = {
-    '203.B1' : 'LASER.LOCK.XLO'
-}
+#
+# Settings which are filled by the accelerator-specific files
+#
 
-MLO_LOCATION = {
-    '203.B1' : 'XTIN.MLO1'
-}
+TOROID_LOCATION = dict()
 
-LINK_LOCATION = {
-    '203.B1' : 'XTIN.AMC6.CONTROLLER'
-}
+MLO_DEVICE = dict()
 
-LINK_LOCK_NUMBER = {
-    '203.B1' : 1
-}
+MLO_LOCATION = dict()
 
-TOROID_FT = {
-    'XFEL' : ['SAMPLE.SA1', 'SAMPLE.SA2', 'SAMPLE.SA3'],
-    'FLASH' : ['SAMPLE.FLASH1', 'SAMPLE.FLASH2']
-}
+LINK_LOCATION = dict()
 
-# Lab is part of XFEL but has different location
-TOROID_FT['LAB'] = TOROID_FT['XFEL']
+LINK_LOCK_NUMBER = dict()
 
-TIMER_LOCATION = {
-    '203.B1' : 'SD205B1'
-}
+TIMER_LOCATION = dict()
 
-TOROID_DATA_THREESHOLD = {
-    '203.B1' : 5e-3
-}
+TOROID_DATA_THRESHOLD = dict()
 
-MOTOR_CONVERSION_FACTOR = {
-    '203.B1' : [4.981200e-01, 4.974300e-01, 4.974300e-01, 4.974300e-01],
-}
+MOTOR_CONVERSION_FACTOR = dict()
 
-MOTOR_CONVERSION_REFLECTION = {
-    '203.B1' : [1, 1, 1, 1]
-}
+MOTOR_CONVERSION_REFLECTION = dict()
 
-MOTOR_CONVERSION_TRANSLATION_OFFSET = {
-    '203.B1' : [0, 0, 0, 0]
-}
+MOTOR_CONVERSION_TRANSLATION_OFFSET = dict()
 
-DELTAT_MOTOR_SIGN = {
-    '203.B1' : [1, 1, 1]
-}
+DELTAT_MOTOR_SIGN = dict()
 
-DELTAT_SIGN = {
-    '203.B1' : [1e-3, 1e-3, 1e-3]
-}
+DELTAT_SIGN = dict()
 
-MODULATION_SIGN = {
-    '203.B1' : [-1, -1]
-}
+MODULATION_SIGN = dict()
 
-START_ARRAY_VALUE_ACCURACY = {
-    '203.B1' : 1
-}
+START_ARRAY_VALUE_ACCURACY = dict()
 
-N_SAMPLE_ACCURACY = {
-    '203.B1' : '255'
-}
+N_SAMPLE_ACCURACY = dict()
 
-FEEDBACK_THRESHOLD_CHARGE = {
-    '203.B1' : [0,0,0]
-}
+FEEDBACK_THRESHOLD_CHARGE = dict()
 
-ARRIVAL_TIME_OFFSET = {
-    '203.B1' : [-1.300000e+05, -1.300000e+05, 0.0]
-}
+ARRIVAL_TIME_OFFSET = dict()
 
 ####
 # Common hardware settings
 ####
 
 BAM_DEVNO = 3
-MOTOR_DEVNO = 8
+MOTOR_DEVNO = 'devs8'
 
 #
 # Generic configuration
diff --git a/bam/hostlist b/bam/hostlist
index 3a72d53..a59d28e 100644
--- a/bam/hostlist
+++ b/bam/hostlist
@@ -2,7 +2,7 @@
 
 # flash
 #flashcpusdbc2.desy.de       D              flash           BAM/3DBC2 BAM/1UBC2/1UBC2
-#flashcpusd4dbc3.desy.de     D              flash           BAM/4DBC3
+flashcpusd4dbc3.desy.de     D              flash           BAM/4DBC3
 #flashcpusd1sfelc.desy.de    D              flash           BAM/1SFELC
 #flashcpusd8fl2burn.desy.de  D              flash           BAM/8FL2BURN
 #flashcpusd7flfmaff.desy.de  D              flash           BAM/7FLFMAFF
diff --git a/bam/settings/FLASH.py b/bam/settings/FLASH.py
new file mode 100644
index 0000000..22a97ca
--- /dev/null
+++ b/bam/settings/FLASH.py
@@ -0,0 +1,71 @@
+MOTOR_DEVNO='unis6'
+
+TOROID_LOCATION.update({
+    '4DBC3' : '5DBC3'
+})
+
+MLO_DEVICE.update({
+    '4DBC3' : 'LASER.LOCK.XLO'
+})
+
+MLO_LOCATION.update({
+    '4DBC3' : 'FLASH.MLO1'
+})
+
+LINK_LOCATION.update({
+    '4DBC3' : 'FLASH.AMC7.CONTROLLER'
+})
+
+LINK_LOCK_NUMBER.update({
+    '4DBC3' : 3
+})
+
+TIMER_LOCATION.update({
+    '4DBC3' : 'SD4DBC3'
+})
+
+TOROID_DATA_THRESHOLD.update({
+    '4DBC3' : 1e-2
+})
+
+MOTOR_CONVERSION_FACTOR.update({
+    '4DBC3' : [1.042700e+00, 1.042700e+00, 1.042700e+00, 1.042700e+00],
+})
+
+MOTOR_CONVERSION_REFLECTION.update({
+    '4DBC3' : [1, 1, 1, 1]
+})
+
+MOTOR_CONVERSION_TRANSLATION_OFFSET.update({
+    '4DBC3' : [0, 0, 0, 0]
+})
+
+DELTAT_MOTOR_SIGN.update({
+    '4DBC3' : [1, 1, 1]
+})
+
+DELTAT_SIGN.update({
+    '4DBC3' : [1e-3, 1e-3, 1e-3]
+})
+
+MODULATION_SIGN.update({
+    '4DBC3' : [-1, -1]
+})
+
+START_ARRAY_VALUE_ACCURACY.update({
+    '4DBC3' : 1
+})
+
+N_SAMPLE_ACCURACY.update({
+    '4DBC3' : '200'
+})
+
+FEEDBACK_THRESHOLD_CHARGE.update({
+    '4DBC3' : [0,0,0]
+})
+
+ARRIVAL_TIME_OFFSET.update({
+    '4DBC3' : [-1.300000e+05, -1.300000e+05, 0.0]
+})
+
+
diff --git a/bam/settings/XFEL.py b/bam/settings/XFEL.py
new file mode 100644
index 0000000..4d6e03d
--- /dev/null
+++ b/bam/settings/XFEL.py
@@ -0,0 +1,77 @@
+TOROID_LOCATION.update({
+    '203.B1' : 'TORA.203.B1'
+})
+
+MLO_DEVICE.update({
+    '203.B1' : 'LASER.LOCK.XLO'
+})
+
+MLO_LOCATION.update({
+    '203.B1' : 'XTIN.MLO1'
+})
+
+LINK_LOCATION.update({
+    '203.B1' : 'XTIN.AMC6.CONTROLLER'
+})
+
+LINK_LOCK_NUMBER.update({
+    '203.B1' : 1
+})
+
+TOROID_FT.update({
+    'XFEL' : ['SAMPLE.SA1', 'SAMPLE.SA2', 'SAMPLE.SA3'],
+    'FLASH' : ['SAMPLE.FLASH1', 'SAMPLE.FLASH2']
+})
+
+# Lab is part of XFEL but has different location
+TOROID_FT['LAB'] = TOROID_FT['XFEL']
+
+TIMER_LOCATION.update({
+    '203.B1' : 'SD205B1'
+})
+
+TOROID_DATA_THRESHOLD.update({
+    '203.B1' : 5e-3
+})
+
+MOTOR_CONVERSION_FACTOR.update({
+    '203.B1' : [4.981200e-01, 4.974300e-01, 4.974300e-01, 4.974300e-01],
+})
+
+MOTOR_CONVERSION_REFLECTION.update({
+    '203.B1' : [1, 1, 1, 1]
+})
+
+MOTOR_CONVERSION_TRANSLATION_OFFSET.update({
+    '203.B1' : [0, 0, 0, 0]
+})
+
+DELTAT_MOTOR_SIGN.update({
+    '203.B1' : [1, 1, 1]
+})
+
+DELTAT_SIGN.update({
+    '203.B1' : [1e-3, 1e-3, 1e-3]
+})
+
+MODULATION_SIGN.update({
+    '203.B1' : [-1, -1]
+})
+
+START_ARRAY_VALUE_ACCURACY.update({
+    '203.B1' : 1
+})
+
+N_SAMPLE_ACCURACY.update({
+    '203.B1' : '255'
+})
+
+FEEDBACK_THRESHOLD_CHARGE.update({
+    '203.B1' : [0,0,0]
+})
+
+ARRIVAL_TIME_OFFSET.update({
+    '203.B1' : [-1.300000e+05, -1.300000e+05, 0.0]
+})
+
+
diff --git a/bam/templates/BAM.dmap b/bam/templates/BAM.dmap
index f0f489a..c751ecc 100644
--- a/bam/templates/BAM.dmap
+++ b/bam/templates/BAM.dmap
@@ -1,6 +1,6 @@
 ##mako
 BAM_DEVICE    (pci:pcieunis${BAM_DEVNO}?map=sdiag_bam_fmc25_${BAM_REVISION}.mapp)
-MOTOR_DEVICE  (pci:pciedevs${MOTOR_DEVNO}?map=sync_pzt4_md22_md22_fmc20_6s45_${MOTOR_REVISION}.mapp)
+MOTOR_DEVICE  (pci:pcie${MOTOR_DEVNO}?map=sync_pzt4_md22_md22_fmc20_6s45_${MOTOR_REVISION}.mapp)
 TOROID_RAW    (doocs?facility=${ACCELERATOR}.DIAG&device=TOROID&location=${TOROID_LOCATION[STATION]})
 TOROID        (logicalNameMap?map=toroid.xlmap)
 MLO_RAW       (doocs?facility=${ACCELERATOR}.SYNC&device=${MLO_DEVICE[STATION]}&location=${MLO_LOCATION[STATION]})
diff --git a/bam/templates/bam_server.conf b/bam/templates/bam_server.conf
index 0d7865a..33c66da 100644
--- a/bam/templates/bam_server.conf
+++ b/bam/templates/bam_server.conf
@@ -40,7 +40,7 @@ BUNCH_POSITION.1:
 BUNCH_POSITION.1.ZMQNAME: 	"${timer}/BUNCH_POSITION.1"
 TOROID_DATA:
 TOROID_DATA.ZMQNAME:	"${ACCELERATOR}.DIAG/TOROID/${TOROID_LOCATION[STATION]}/CHARGE.TD"
-TOROID_DATA_THREESHOLD:	${TOROID_DATA_THREESHOLD[STATION]}
+TOROID_DATA_THREESHOLD:	${TOROID_DATA_THRESHOLD[STATION]}
 TOROID_ADDRESS:	"${ACCELERATOR}.DIAG/TOROID/${TOROID_LOCATION[STATION]}"
 TIMERMQ_SERVER.ZMQNAME: "${timer}/MACRO_PULSE_NUMBER"
 SET_PEAK_BASE_LOW_CHARGE_CHANNEL:	0
@@ -53,4 +53,5 @@ DELTAT_SIGN: ${makeDoocsArray(DELTAT_SIGN[STATION])}
 MODULATION_SIGN: ${makeDoocsArray(MODULATION_SIGN[STATION])}
 START_ARRAY_VALUE_ACCURACY:	${START_ARRAY_VALUE_ACCURACY[STATION]}
 N_SAMPLE_ACCURACY:	${N_SAMPLE_ACCURACY[STATION]}
+FEEDBACK_THREESHOLD_CHARGE:	${makeDoocsArray(FEEDBACK_THRESHOLD_CHARGE[STATION])}
 }
diff --git a/bam/templates/toroid.xlmap b/bam/templates/toroid.xlmap
index 11a940f..b602032 100644
--- a/bam/templates/toroid.xlmap
+++ b/bam/templates/toroid.xlmap
@@ -13,7 +13,7 @@
 %else:
     <redirectedRegister name="SASE.${i}">
       <targetDevice>TOROID_RAW</targetDevice>
-          <targetRegister>${TOROID_FT[ACCELERATOR][i]}</targetRegister>
+      <targetRegister>${TOROID_FT[ACCELERATOR][i]}</targetRegister>
     </redirectedRegister>
 %endif
 %endfor
-- 
GitLab