diff --git a/script/Swiv.py b/script/Swiv.py new file mode 100644 index 0000000..033587b --- /dev/null +++ b/script/Swiv.py @@ -0,0 +1,384 @@ +#Script imported from: Swiv.xml + +numberOfExecutions = 3 +#TODO: Support to multiple iterations is partial: check if logic is ok +for iteration in range(numberOfExecutions): + +#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 +Fluo-Ketek1 = Channel('X10DA-SITORO:CNT1_R1', type = 'd') +#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()