This section displays a realistic example of a non-fast scan. Notice that there is another example of a non-fast scan 8.1.10.
While the scan is active, only one counter is displayed (C0). After the scan is finished, some calculations are performed and some graphics are displayed and printed.
The before macro:
cls/gr ! set err off copy/nocon scan_name DETECTOR copy/nocon scan_name MONITOR copy/nocon scan_name HORI_POL copy/nocon scan_name VERT_POL copy/nocon scan_name I_DORIS copy/nocon scan_name TEMPERATURE copy/nocon scan_name POLARIZATION copy/nocon scan_name COUNTERA copy/nocon scan_name NET_MON copy/nocon scan_name PIN_MON gpib(6) = "WC"char(10) deact *.* set scan_name/v0 set scan_name.3/text="Position [Units]" set scan_name.4/text="Intensity [Counts]" act scan_name. act scan_name.3 act scan_name.4 set inter off
The during macro:
dumm = resaco()
temptemp = gpib(6)
temperature( sindex,2) = substr(temptemp,1,7)
sawft(T1) = SAMPLE_TIME
DETECTOR( sindex, 2) = gc(C0)
MONITOR( sindex, 2) = gc(C1)
HORI_POL( sindex, 2) = gc(C2)
VERT_POL( sindex, 2) = gc(C3)
I_DORIS( sindex, 2) = gc(C4)
COUNTERA( sindex, 2) = gc(C5)
NET_MON( sindex, 2) = gc(C6)
PIN_MON( sindex, 2) = gc(C7)
scan_name( sindex, 2) = DETECTOR( sindex, 2)
curr(scan_name) = sindex
auto/y scan_name
display
The after macro does some calculations, creates a display and writes the output file:
IF !(INTERRUPT_SCAN - 1)
IF YESNO(" FINISH WITHOUT SAVING ? ") THEN GOTO FINISH
ENDIF
if(search_symbol(CTRL_C_FOUND)) then goto finish
gpib(3) = "WP"char(10)
tttttt = gpib(3)
ttttt = substr(tttttt,1,7)
calc x(DETECTOR) = x(scan_name)
calc x(MONITOR) = x(scan_name)
calc x(HORI_POL) = x(scan_name)
calc x(VERT_POL) = x(scan_name)
calc x(I_DORIS) = x(scan_name)
calc x(TEMPERATURE) = x(scan_name)
calc x(POLARIZATION) = x(scan_name)
calc x(COUNTERA) = x(scan_name)
calc x(NET_MON) = x(scan_name)
calc x(PIN_MON) = x(scan_name)
calc y(POLARIZATION) = 100*(y(VERT_POL)-y(HORI_POL))
calc y(POLARIZATION) = y(POLARIZATION)/(y(HORI_POL)+y(VERT_POL)+0.01)
mean_horpol =
mean_verpol =
mean_moni =
peak_y =
midpoint =
cms =
fwhm =
scan_int =
mean_countera =
mean_I_Doris =
mean_NET_MON =
mean_PIN_MON =
user/f1 DETECTOR hallo
calc y(I_DORIS) = y(I_DORIS)/sample_time/5000
mean_pol = sum(POLARIZATION) / curr(POLARIZATION)
mean_horpol = sum(hori_pol) / curr(hori_pol)
mean_verpol = sum(vert_pol) / curr(vert_pol)
mean_temp = sum(TEMPERATURE) / curr(TEMPERATURE)
mean_moni = sum(MONITOR) / curr(MONITOR)
mean_countera = sum(countera) / curr(countera)
mean_I_DORIS = sum(I_DORIS) / curr(I_DORIS)
mean_NET_mon = sum(NET_MON) / curr(NET_MON)
mean_PIN_mon = sum(PIN_MON) / curr(PIN_MON)
!
! noplot is an external symbol
!
if noplot then goto store_label
deact *.*
cls/gra
copy/nocon 0.layout DETECTOR
set DETECTOR/v3
create/text DETECTOR.2
create/text DETECTOR.3
create/text DETECTOR.4
set DETECTOR.2/text="Detector"
set DETECTOR.3/text="Position [Units]"
set DETECTOR.4/text="Intensity [Counts]"
set DETECTOR.2/x=-0.3/y=1.2/prec=2/FONT=3/height=0.02
set DETECTOR.3/x=0.5/y=-0.2/prec=2/FONT=3/height=0.02/h_=2
set DETECTOR.4/x=-0.3/y=1.1/prec=2/FONT=3/height=0.02
set DETECTOR/colour=2
act DETECTOR.*
copy/nocon 0.layout TEMPERATURE
set TEMPERATURE/v2
set TEMPERATURE.layout/pl=0
create/text temperature.2
create/text temperature.3
create/text temperature.4
set temperature.2/text="Temperature"
set temperature.3/text="Position [Units]"
set temperature.4/text="T [K]"
set temperature.2/x=-0.3/y=1.2/prec=2/FONT=3/height=0.02
set temperature.3/x=0.5/y=-0.2/prec=2/FONT=3/height=0.02/h_=2
set temperature.4/x=-0.3/y=1.1/prec=2/FONT=3/height=0.02
set temperature/colour=2/type=2
act temperature.*
copy/nocon 0.layout pin_mon
set pin_mon/v2
create/text pin_mon.2
create/text pin_mon.3
set pin_mon.2/text="Floureszence"
set pin_mon.3/text="Intensity [Counts]"
set pin_mon.2/x=0.7/y=1.2/prec=2/FONT=3/height=0.02
set pin_mon.3/x=0.7/y=1.1/prec=2/FONT=3/height=0.02
set pin_mon.layout/pl=2/x_off=-0.6
set pin_mon/x_maj=-5
set pin_mon/colour=4
act pin_mon.*
copy/nocon 0.layout MONITOR
set MONITOR/v1
set MONITOR.layout/pl=0
create/text MONITOR.2
create/text MONITOR.3
create/text MONITOR.4
set MONITOR.2/text="Monitor"
set MONITOR.3/text="Position [Units]"
set MONITOR.4/text="Intensity [Counts]"
set MONITOR.2/x=-0.3/y=1.2/prec=2/FONT=3/height=0.02
set MONITOR.3/x=0.5/y=-0.2/prec=2/FONT=3/height=0.02/h_=2
set MONITOR.4/x=-0.3/y=1.1/prec=2/FONT=3/height=0.02
set MONITOR/colour=2/type=2
act MONITOR.*
copy/nocon 0.layout POLARIZATION
set POLARIZATION/v1
create/text POLARIZATION.2
create/text POLARIZATION.3
set POLARIZATION.2/text="Polarization"
set POLARIZATION.3/text=" P [%]"
set POLARIZATION.2/x=0.7/y=1.2/prec=2/FONT=3/height=0.02
set POLARIZATION.3/x=0.7/y=1.1/prec=2/FONT=3/height=0.02
set POLARIZATION.layout/pl=2/x_off=-0.6
set POLARIZATION/x_maj=-5
set POLARIZATION/colour=4
act POLARIZATION.*
create/text 0.2
create/text 0.3
create/text 0.4
create/text 0.5
create/text 0.6
create/text 0.7
create/text 0.8
create/text 0.9
create/text 0.95
set 0.2/text=" "scan_name
set 0.2/x=0.55/y=0.35/prec=2/height=0.02/font=3
act 0.2
set 0.3/text=" Polarization = "mean_pol
set 0.3/x=0.55/y=0.30/prec=2/height=0.02/font=3
act 0.3
set 0.4/text=" Monitor = "mean_moni
set 0.4/x=0.55/y=0.25/prec=2/height=0.02/font=3
act 0.4
set 0.5/text=" Peak Int : "peak_y
set 0.5/x=0.55/y=0.20/prec=2/height=0.02/font=3
act 0.5
set 0.6/text=" Midpoint: "midpoint
set 0.6/x=0.55/y=0.15/prec=2/height=0.02/font=3
act 0.6
set 0.7/text=" Cms : "cms
set 0.7/x=0.55/y=0.10/prec=2/height=0.02/font=3
act 0.7
set 0.8/text=" Fwhm : "fwhm
set 0.8/x=0.55/y=0.05/prec=2/height=0.02/font=3
act 0.8
set 0.9/text=" Scan type : "scan_device
set 0.9/x=0.55/y=0.00/prec=2/height=0.02/font=3
act 0.9
set 0.95/text=" Temperature = "mean_temp
set 0.95/x=0.55/y=-.05/prec=2/height=0.02/font=3
act 0.95
if nodisplay then goto laser_label
auto/y
display
set inter on
laser_label:
if nolaser then goto store_label
post/nocon scan_name".ps"
store_label:
store_zone = " "
fio_name = store_zone""scan_name".FIO"
set scan_name/com_1=" filename = "scan_name
set scan_name/com_2=" date = "date()" time = "time()
set scan_name/com_3=" scan type = "scan_device
set scan_name/x_axis="Position [units]"
set detector/y_axis="Detector [counts]"
set monitor/y_axis="Monitor [counts]"
set hori_pol/y_axis="Hori_pol [counts]"
set vert_pol/y_axis="Vert_Pol [counts]"
set i_doris/y_axis="I_Doris [mA]"
set temperature/y_axis="Temperature [K]"
set POLARIZATION/y_axis="Polarization [%]"
set COUNTERA/y_axis="CounterA [counts]"
set net_mon/y_axis="NET_MON [counts]"
set pin_mon/y_axis="PIN_MON [counts]"
actqx = fc_qx()
actqy = fc_qy()
actqz = fc_qz()
symbol( scan_name, scan_name"_actqx" ) = actqx
symbol( scan_name, scan_name"_actqy" ) = actqy
symbol( scan_name, scan_name"_actqz" ) = actqz
symbol( scan_name, scan_name"_setpoint" ) = ttttt
symbol( scan_name, scan_name"_sample_time" ) = sample_time
symbol( scan_name, scan_name"_mean_moni" ) = mean_moni
symbol( scan_name, scan_name"_mean_net_mon" ) = mean_net_mon
symbol( scan_name, scan_name"_mean_PIN_mon" ) = mean_PIN_mon
symbol( scan_name, scan_name"_mean_temp" ) = mean_temp
symbol( scan_name, scan_name"_mean_pol" ) = mean_pol
symbol( scan_name, scan_name"_mean_horpol" ) = mean_horpol
symbol( scan_name, scan_name"_mean_verpol" ) = mean_verpol
symbol( scan_name, scan_name"_mean_countera" ) = mean_countera
symbol( scan_name, scan_name"_mean_I_DORIS" ) = mean_I_DORIS
symbol( scan_name, scan_name"_start_position" ) = start
symbol( scan_name, scan_name"_stop_position" ) = stop
symbol( scan_name, scan_name"_stepwidth" ) = delta
symbol( scan_name, scan_name"_Left_BG" ) = L_back
symbol( scan_name, scan_name"_Right_BG" ) = R_back
symbol( scan_name, scan_name"_Peak_Intensity" ) = peak_y
symbol( scan_name, scan_name"_Midpoint" ) = midpoint
symbol( scan_name, scan_name"_CMS" ) = cms
symbol( scan_name, scan_name"_FWHM" ) = fwhm
symbol( scan_name, scan_name"_Integrated Intensity") = scan_int
symbol(scan_name,scan_name"_ENERGY") = energy()
write/fio/NOCONFIRM/x(scan_name)/y(DETECTOR)/y(MONITOR) -
/y(HORI_POL)/y(VERT_POL)/y(I_DORIS)/y(TEMPERATURE)/y(POLARIZATION) -
/y(COUNTERA)/y(net_mon)/y(pin_mon)/motors fio_name
cleanup
end
finish:
say " scan aborted by ^C : Scan not saved ! "
cleanup
end
The following plot displays the figure that is generated at the end of the scan.