W1: Non-Fast Scan

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.

Figure 15.4: Example: W1 Pol Scan
Image w1_pol