Files
x10da/script/Swiv.py
2022-03-25 18:09:42 +01:00

384 lines
12 KiB
Python

#Script imported from: Swiv.xml
numberOfExecutions = 3
#TODO: Support to multiple iterations is partial: check if logic is ok
#for iteration in range(numberOfExecutions):
iteration=0
#Pre-actions
caput('X10DA-SITORO:CollectMode', '0')
sleep(0.1)
caput('X10DA-ES1:START-CSMPL', '0')
sleep(0.1)
caput('X10DA-OP-MO3:KohzuModeBO.VAL', 'Auto')
sleep(0.1)
caput('X10DA-SITORO:PresetReal', '0')
sleep(0.1)
#TODO: Set the diplay names of positioners and detectors
scan = ManualScan(['posX'], ['Fluo-Ketek1', 'SAI01-MEAN', 'SAI02-MEAN', 'SAI03-MEAN', 'Ring-current', 'IntegrTimeSet', 'IntegrTimeGet', 'Timestamp', 'dead_time', 'Fluo-Ketek2', 'Sca1', 'ScaICR1', 'ScaOCR1', 'ERTM1', 'Sca2', 'ScaICR2', 'ScaOCR2', 'ERTM2', 'Sca3', 'ScaICR3', 'ScaOCR3', 'ERTM3', 'Sca4', 'ScaICR4', 'ScaOCR4', 'ERTM4', 'Sca5', 'ScaICR5', 'ScaOCR5', 'ERTM5', 'TrueFluoChannel1', 'TrueFluoChannel2', 'TrueFluoChannel3', 'TrueFluoChannel4', 'TrueFluoChannel5', 'TotalFluo', 'TotalFluoXAS', 'XAS-refer'] , [0.3], [1.0], [70])
scan.start()
#Creating channels: dimension 1
#RegionPositioner posX
posX = Channel('X10DA-ES1-PP1:MOT4', type = 'd')
posXReadback = Channel('X10DA-ES1-PP1:MOT4.VAL', type = 'd')
#ScalarDetector Fluo-Ketek1
#ScalarDetector SAI01-MEAN
SAI01-MEAN = Channel('X10DA-ES1-SAI_01:MEAN', type = 'd')
#ScalarDetector SAI02-MEAN
SAI02-MEAN = Channel('X10DA-ES1-SAI_02:MEAN', type = 'd')
#ScalarDetector SAI03-MEAN
SAI03-MEAN = Channel('X10DA-ES1-SAI_03:MEAN', type = 'd')
#ScalarDetector Ring-current
Ring-current = Channel('ARIDI-PCT:CURRENT', type = 'd')
#ScalarDetector IntegrTimeSet
IntegrTimeSet = Channel('X10DA-ES1:TOTAL-CYCLES', type = 'd')
#ScalarDetector IntegrTimeGet
IntegrTimeGet = Channel('X10DA-ES1:INTR-COUNT', type = 'd')
#Timestamp Timestamp
#ScalarDetector dead_time
dead_time = Channel('X10DA-SITORO:mca1.DTIM', type = 'd')
#ScalarDetector Fluo-Ketek2
Fluo-Ketek2 = Channel('X10DA-SITORO:CNT2_R1', type = 'd')
#ScalarDetector Sca1
Sca1 = Channel('X10DA-SITORO:mca1.R1', type = 'd')
#ScalarDetector ScaICR1
ScaICR1 = Channel('X10DA-SITORO:dxp1:InputCountRate', type = 'd')
#ScalarDetector ScaOCR1
ScaOCR1 = Channel('X10DA-SITORO:dxp1:OutputCountRate', type = 'd')
#ScalarDetector ERTM1
ERTM1 = Channel('X10DA-SITORO:mca1.ERTM', type = 'd')
#ScalarDetector Sca2
Sca2 = Channel('X10DA-SITORO:mca2.R1', type = 'd')
#ScalarDetector ScaICR2
ScaICR2 = Channel('X10DA-SITORO:dxp2:InputCountRate', type = 'd')
#ScalarDetector ScaOCR2
ScaOCR2 = Channel('X10DA-SITORO:dxp2:OutputCountRate', type = 'd')
#ScalarDetector ERTM2
ERTM2 = Channel('X10DA-SITORO:mca2.ERTM', type = 'd')
#ScalarDetector Sca3
Sca3 = Channel('X10DA-SITORO:mca3.R1', type = 'd')
#ScalarDetector ScaICR3
ScaICR3 = Channel('X10DA-SITORO:dxp3:InputCountRate', type = 'd')
#ScalarDetector ScaOCR3
ScaOCR3 = Channel('X10DA-SITORO:dxp2:OutputCountRate', type = 'd')
#ScalarDetector ERTM3
ERTM3 = Channel('X10DA-SITORO:mca3.ERTM', type = 'd')
#ScalarDetector Sca4
Sca4 = Channel('X10DA-SITORO:mca4.R1', type = 'd')
#ScalarDetector ScaICR4
ScaICR4 = Channel('X10DA-SITORO:dxp4:InputCountRate', type = 'd')
#ScalarDetector ScaOCR4
ScaOCR4 = Channel('X10DA-SITORO:dxp4:OutputCountRate', type = 'd')
#ScalarDetector ERTM4
ERTM4 = Channel('X10DA-SITORO:mca4.ERTM', type = 'd')
#ScalarDetector Sca5
Sca5 = Channel('X10DA-SITORO:mca5.R1', type = 'd')
#ScalarDetector ScaICR5
ScaICR5 = Channel('X10DA-SITORO:dxp5:InputCountRate', type = 'd')
#ScalarDetector ScaOCR5
ScaOCR5 = Channel('X10DA-SITORO:dxp5:OutputCountRate', type = 'd')
#ScalarDetector ERTM5
ERTM5 = Channel('X10DA-SITORO:mca5.ERTM', type = 'd')
#Dimension 1
#RegionPositioner posX
for setpoint1 in frange(0.3, 1.0, 0.01, True):
#Region 1 pre-actions
if setpoint1 == 0.3:
caput('X10DA-ES1:TOTAL-CYCLES', 2)
posX.put(setpoint1, timeout=None) # TODO: Set appropriate timeout
readback1 = posXReadback.get()
if abs(readback1 - setpoint1) > 0.005 : # TODO: Check accuracy
raise Exception('Actor posX could not be set to the value ' + str(setpoint1))
sleep( 0.3 ) # Settling time
#Dimension Actions
caputq('X10DA-SITORO:EraseStart', '1')
sleep(0.1)
cawait('X10DA-SITORO:Acquiring', 'Acquiring', type = 's')
caput('X10DA-ES1:SMPL', '1')
sleep(0.6)
cawait('X10DA-ES1:SMPL-DONE', 1, type = 'l')
sleep(0.2)
caput('X10DA-SITORO:StopAll', '1')
sleep(0.1)
cawait('X10DA-SITORO:Acquiring', 'Done', type = 's')
#Detector Fluo-Ketek1
detector1 = Fluo-Ketek1.get()
#Detector SAI01-MEAN
detector2 = SAI01-MEAN.get()
#Detector SAI02-MEAN
detector3 = SAI02-MEAN.get()
#Detector SAI03-MEAN
detector4 = SAI03-MEAN.get()
#Detector Ring-current
detector5 = Ring-current.get()
#Detector IntegrTimeSet
detector6 = IntegrTimeSet.get()
#Detector IntegrTimeGet
detector7 = IntegrTimeGet.get()
#Detector Timestamp
detector8 = float(java.lang.System.currentTimeMillis())
#Detector dead_time
detector9 = dead_time.get()
#Detector Fluo-Ketek2
detector10 = Fluo-Ketek2.get()
#Detector Sca1
detector11 = Sca1.get()
#Detector ScaICR1
detector12 = ScaICR1.get()
#Detector ScaOCR1
detector13 = ScaOCR1.get()
#Detector ERTM1
detector14 = ERTM1.get()
#Detector Sca2
detector15 = Sca2.get()
#Detector ScaICR2
detector16 = ScaICR2.get()
#Detector ScaOCR2
detector17 = ScaOCR2.get()
#Detector ERTM2
detector18 = ERTM2.get()
#Detector Sca3
detector19 = Sca3.get()
#Detector ScaICR3
detector20 = ScaICR3.get()
#Detector ScaOCR3
detector21 = ScaOCR3.get()
#Detector ERTM3
detector22 = ERTM3.get()
#Detector Sca4
detector23 = Sca4.get()
#Detector ScaICR4
detector24 = ScaICR4.get()
#Detector ScaOCR4
detector25 = ScaOCR4.get()
#Detector ERTM4
detector26 = ERTM4.get()
#Detector Sca5
detector27 = Sca5.get()
#Detector ScaICR5
detector28 = ScaICR5.get()
#Detector ScaOCR5
detector29 = ScaOCR5.get()
#Detector ERTM5
detector30 = ERTM5.get()
#Manipulation TrueFluoChannel3
#Variable Mappings
a = detector19
b = detector20
c = detector21
d = detector22
#TODO: Move, if needed, this import to the file header: import math
DeadTime = 1.182e-7
ICR = b
OCR = c
if (OCR) == 0:
box = 0
TrueFluoChannel3 = box
if (ICR) == 0:
box = 0
TrueFluoChannel3 = box
Test = 1.e8
TestICR = ICR
n = 0
while ((Test > DeadTime) and (n < 30)):
TrueICR = ICR * math.exp(TestICR * DeadTime)
Test = (TrueICR - TestICR) / TestICR
TestICR = TrueICR
n = n + 1
if (OCR*d) <> 0:
box = a * TrueICR / OCR / d
if (OCR*d) == 0:
box=0.0
TrueFluoChannel3 = box
#Manipulation TrueFluoChannel4
#Variable Mappings
a = detector23
b = detector24
c = detector25
d = detector26
#TODO: Move, if needed, this import to the file header: import math
DeadTime = 1.182e-7
ICR = b
OCR = c
if (OCR) == 0:
box = 0
TrueFluoChannel4 = box
if (ICR) == 0:
box = 0
TrueFluoChannel4 = box
Test = 1.e8
TestICR = ICR
n = 0
while ((Test > DeadTime) and (n < 30)):
TrueICR = ICR * math.exp(TestICR * DeadTime)
Test = (TrueICR - TestICR) / TestICR
TestICR = TrueICR
n = n + 1
if (OCR*d) <> 0:
box = a * TrueICR / OCR / d
if (OCR*d) == 0:
box=0.0
TrueFluoChannel4 = box
#Manipulation TrueFluoChannel1
#Variable Mappings
a = detector11
b = detector12
c = detector13
d = detector14
#TODO: Move, if needed, this import to the file header: import math
DeadTime = 1.182e-7
ICR = b
OCR = c
if (OCR) == 0:
box = 0
TrueFluoChannel1 = box
if (ICR) == 0:
box = 0
TrueFluoChannel1 = box
Test = 1.e8
TestICR = ICR
n = 0
while ((Test > DeadTime) and (n < 30)):
TrueICR = ICR * math.exp(TestICR * DeadTime)
Test = (TrueICR - TestICR) / TestICR
TestICR = TrueICR
n = n + 1
if (OCR*d) <> 0:
box = a * TrueICR / OCR / d
if (OCR*d) == 0:
box=0.0
TrueFluoChannel1 = box
#Manipulation TrueFluoChannel2
#Variable Mappings
a = detector15
b = detector16
c = detector17
d = detector18
#TODO: Move, if needed, this import to the file header: import math
DeadTime = 1.182e-7
ICR = b
OCR = c
if (OCR) == 0:
box = 0
TrueFluoChannel2 = box
if (ICR) == 0:
box = 0
TrueFluoChannel2 = box
Test = 1.e8
TestICR = ICR
n = 0
while ((Test > DeadTime) and (n < 30)):
TrueICR = ICR * math.exp(TestICR * DeadTime)
Test = (TrueICR - TestICR) / TestICR
TestICR = TrueICR
n = n + 1
if (OCR*d) <> 0:
box = a * TrueICR / OCR / d
if (OCR*d) == 0:
box=0.0
TrueFluoChannel2 = box
#Manipulation TotalFluo
#Variable Mappings
a = TrueFluoChannel1
b = TrueFluoChannel2
c = TrueFluoChannel3
d = TrueFluoChannel4
e = TrueFluoChannel5
#TODO: Move, if needed, this import to the file header: import math
SUM_DET = 0.
SUM_DET = SUM_DET + a
SUM_DET = SUM_DET + b
SUM_DET = SUM_DET + c
SUM_DET = SUM_DET + d
SUM_DET = SUM_DET + e
TotalFluo = SUM_DET
#Manipulation TrueFluoChannel5
#Variable Mappings
a = detector27
b = detector28
c = detector29
d = detector30
#TODO: Move, if needed, this import to the file header: import math
DeadTime = 1.182e-7
ICR = b
OCR = c
if (OCR) == 0:
box = 0
TrueFluoChannel5 = box
if (ICR) == 0:
box = 0
TrueFluoChannel5 = box
Test = 1.e8
TestICR = ICR
n = 0
while ((Test > DeadTime) and (n < 30)):
TrueICR = ICR * math.exp(TestICR * DeadTime)
Test = (TrueICR - TestICR) / TestICR
TestICR = TrueICR
n = n + 1
if (OCR*d) <> 0:
box = a * TrueICR / OCR / d
if (OCR*d) == 0:
box=0.0
TrueFluoChannel5 = box
#Manipulation TotalFluoXAS
#Variable Mappings
c = TrueFluoChannel1
d = detector2
#TODO: Move, if needed, this import to the file header: import math
TotalFluoXAS = c/d
#Manipulation XAS-refer
#Variable Mappings
a = detector2
b = detector3
#TODO: Move, if needed, this import to the file header: import math
XAS-refer = math.log(math.fabs(a) /math.fabs(b))
scan.append ([setpoint1], [readback1], [detector1, detector2, detector3, detector4, detector5, detector6, detector7, detector8, detector9, detector10, detector11, detector12, detector13, detector14, detector15, detector16, detector17, detector18, detector19, detector20, detector21, detector22, detector23, detector24, detector25, detector26, detector27, detector28, detector29, detector30, TrueFluoChannel3, TrueFluoChannel4, TrueFluoChannel1, TrueFluoChannel2, TotalFluo, TrueFluoChannel5, TotalFluoXAS, XAS-refer])
#Closing channels
posX.close()
posXReadback.close()
Fluo-Ketek1.close()
SAI01-MEAN.close()
SAI02-MEAN.close()
SAI03-MEAN.close()
Ring-current.close()
IntegrTimeSet.close()
IntegrTimeGet.close()
dead_time.close()
Fluo-Ketek2.close()
Sca1.close()
ScaICR1.close()
ScaOCR1.close()
ERTM1.close()
Sca2.close()
ScaICR2.close()
ScaOCR2.close()
ERTM2.close()
Sca3.close()
ScaICR3.close()
ScaOCR3.close()
ERTM3.close()
Sca4.close()
ScaICR4.close()
ScaOCR4.close()
ERTM4.close()
Sca5.close()
ScaICR5.close()
ScaOCR5.close()
ERTM5.close()
scan.end()