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.