PROBLEMS AND SOLUTIONS
************ PROBLEM 1 ************
SATAN CANNOT INTERPRET LIST-MODE DATA FROM THE TAPE ROBOT
(e.g. "<E> $INPCMD: buffer type ^= 2000, probably no GOOSY list-mode
data.")
o Check the record length of the data.
o If you use FTP, specify BINARY as data type.
o To transfer list-mode data from VMS to WINDOWS/NT use FTP with
option L8 - BINARY.
************ PROBLEM 2 ************
VARIABLES IN THE ANALYSIS PROGRAM "FORGET" THEIR VALUES.
(Example: The values which you have assigned to a variable are reset
from time to time to an arbitrary value.)
o Use the option STATIC when declaring variables which should memorize
their values for the next list-mode event.
(AUTOMATIC is the default option.)
************ PROBLEM 3 ************
THE PROGRAM DOES NOT START BUT ENDS IMMEDIATELY WITH AN
"ERROR IN AUTOMATIC INITIALIZATION" (only on VMS)
o Make sure that there is no inconsistency in the extent of an array
and the number of initialized values,
e.g. "DECLARE A(3) BIN FIXED(15) INIT((2)0);"
will produce this error.
o Use "*" extend in the initialization
"DECLARE A(3) BIN FIXED(15) INIT((*)0);"
in order to avoid this problem, if possible.
************ PROBLEM 4 ************
THE ANALYSIS ENDS WITH "INVALID FLOATING-POINT OPERATION".
o Run the code with the debugger.
o Make sure that all variables appearing in the line the error occurs
are initialized with reasonable values.
************ PROBLEM 5 ************
THE ANALYSIS ENDS WITH A MESSAGE COMPLAINING ABOUT INSUFFICIENT MEMORY.
o Check the amount of memory you allocated for analyzers
(command "ASPACE *"). (The situation might be critical if you
allocated more than 50 MByte.)
o Eventually reduce the amount of memory by increasing the binsizes
(macro "$AGEN" or command "AMOD").
o Insufficient memory may also produce other errors. Therefore check
if any other run-time error disappears if you increase the binsizes
of your analyzers (command "AMOD").
o Please consider that you cannot visualize more than about
500 * 500 points on a graphics screen due to the limited resolution.
o If you are interested to see an expanded part of a large
two-dimensional analyzer, you may define this part by analyzing a
small amount of the data. With this information you may adapt a
special "zoom" analyzer on the interesting part by the command
"AMOD". However, a new analysis of the list-mode data is necessary.
************ PROBLEM 6 ************
THE COMPILATION OF THE ANALYSIS PROGRAM PRODUCES WARNINGS
"A DUMMY ARGUMENT HAS BEEN CREATED ..."
o If the corresponding variable is an input parameter to a called
procedure and you cannot solve the problem by defining the variable
with the appropriate properties, you can suppress the warning by
enclosing the parameter in brackets:
"CALL MYPROC((A),(B));"
*********** PROBLEM 7 ***********
WHEN COMPILING YOUR PROGRAM YOU OBTAIN THE ERROR MESSAGE:
"An END statement has been supplied ..." OR:
"The closure label in this statement does not match the label prefix ."
o Make sure that all DO, SELECT, BEGIN or PROCEDURE blocks are closed
properly.
o It is helpful to label all loops (see the following example) in order
to get more specific compiler error messages.
IF I_SWITCH = 3 THEN THREE: DO;
A = B**2;
C = C/2.E0;
END THREE;
************ PROBLEM 8 ************
INTERFERENCE PATTERNS APPEAR IN ANALYZERS WHICH CONTAIN THE RESULTS OF
CALCULATIONS WITH LIST-MODE DATA.
(Example: The mass spectrum, calculated from time-of-flight and energy
shows huge intensity fluctuations, although the originating data are
smooth.)
o Convert the incoming ADC data in floating numbers.
o Wobble the incoming ADC data (and o n l y those) by adding a random
number ("PRN"). (This treatment corresponds to the nature of ADC data
which code an interval of values into an integer number.)
o Use these "smoothed" values for further calculations.
************ PROBLEM 9 ************
FIND A CORRELATION BETWEEN TWO MEASURED QUANTITIES AND USE IT AS A
CALIBRATION CURVE IN THE LIST-MODE ANALYSIS.
(Example: Calibrate the response of a position-sensitive scintillation
counter with the known signals of a multiwire counter. Use this
calibration in your analysis program.)
o Define a two-dimensional analyzer of the two measured quantities
(macro "$AGEN").
o Fill it with the appropriate list-mode data (command "INPUT").
o Display the two-dimensional analyzer (command "GDISP").
o Find the ridge line of the correlation in the analyzer and fill the
result in a one-dimensional analyzer (command "ARIDGE").
o Dump this one-dimensional analyzer (command "ADUMP").
o Define this analyzer in your analysis program (macro "$AGEN"), using
the the following options ("$AGEN ... TYPE(FLOAT,PROTECT)").
o Before reading the list-mode data to be calibrated, fetch the
one-dimensional calibration analyzer (command "AFETCH").
o Read the data of this analyzer in your analysis program (macro
"$AGET") and use the returned values for calibrating the appropriate
data.
************ PROBLEM 10 ************
YOUR GRAPHICS DEVICE DOES NOT SUPPORT COLOURS
(Example: On the graphics screen part of the clusters of an analyzer
are not drawn.)
o Use the command "GDISP / PALETTE(MONO)" for the graphics screen.
o Use the command "GPLOT / PALETTE(MONO)" for the postscript output
on dataset or plotter.
************ PROBLEM 11 ************
YOU WANT TO DISPLAY SEVERAL ANALYZERS IN AN OVERLAY PICTURE
1. Simple way
----------
o Define a number of rows and columns with the command
GSET / ZONE(columns,rows).
o Define the graphic output device (screen or plotter) by
GSET / DISP or GSET / PLOT
o Plot all analyzers by the command GOVER.
o Reset this mode by GSET / ZONE(OFF).
2. More flexible way
-----------------
o First display the right most and upper most figure using
GDISP analyzer1 / XPOS(xx1) YPOS(yy1)
o Add the other analyzers using
GOVER analyzer2 / XPOS(xx2) YPOS(yy2)
GOVER analyzer3 / XPOS(xx3) YPOS(yy3)
....
(If you use integer numbers for xxi and yyi, the frames just touch.)
GOVER analyzer / XPOS(0) XPOS(0) will draw the spectrum in the
leftmost lower corner.
o You can simplify your work if you write an EXEC list (SCOM file) with
the sequence of GDISP and GOVER commands.
3. General rules to work with analyzers displayed in zones
-------------------------------------------------------
o The commands GXEXPAND, GYEXPAND and GEXPAND can directly be used to
expand each analyzer separately.
o The command GSELECT allows to "activate" a specific analyzer by the
cursor.
o The activated analyzer is marked by an orange frame.
o All other commands (e.g. WSET, FIT, ...) for analyzer handling work
on the activated analyzer.
************ PROBLEM 12 ************
THE COMMAND DECODER TRANSLATES THE COMMAND STRING INTO CAPITAL LETTERS,
BUT YOU WANT THE SMALL LETTERS TO BE PRESERVED
o Enter the string you want to be preserved in special parentheses
==> PFILE / TEXT({Calibration})
==> GWRITE {Blabla}
************ PROBLEM 13 ************
SPECTRA FILLED FROM SATAN LIST-MODE DATA LOOK STRANGE AND SEEM TO BE A
MIXTURE OF THE DATA OF DIFFERENT DETECTORS
o Make sure that the length of the data elements in the $EVENT macro
corresponds to the number of event parameters in the input file.
o An alternative solution is to set the variable $N_EVT to the number
of event parameters in the input file just before the macro $ENDEVT
in your analysis procedure. In this case the length of the data
elements in $EVENT may be longer than the number of event parameters
in the input file.
==> $N_EVT = 182;
This gives also the possibility to treat data with variable event
length.
(see also HELP LISTMODE)
*********** PROBLEM 14 ***********
YOU FIT A CURVE TO DATA DRAWN WITH LOGARITHMIC AXES AND DO NOT
UNDERSTAND THE RESULTING FIT PARAMETERS
o Please read the information in HELP FITGEN, especially the
explanation of the two options
GMODE / FIT(REPRESENTATION and GMODE / FIT(DATA) .
*********** PROBLEM 15 ***********
YOU WANT TO DISPLAY THE GRAPHIC REPRESENTATION OF AN ARITHMETIC
EXPRESSION
o Write a dataset corresponding to the following example:
==> Sinus curve over 4 pi^
H: (X = 0 TO 6.28 BY 0.02) (Y = SIN(X))
(The loop of x values determines range and stepwidth, the arithmetic
expression is evaluated and displayed.)
o Read the dataset by GREAD
o Display the curve by GDISP or plot it by GPLOT
*********** PROBLEM 16 ***********
YOU WANT TO OVERLAY A SPECTRUM ON ANOTHER ONE WITH THE SAME AXES
o GDISP A1 /*
display first spectrum */
o GSWINDOW / LAST /* save the limits (x and y) */
o GOVER A2 / WINDOW /* overlay the second spectrum */
If you detect slight differences in the limits, please use
GPRES / NOSPACE before.
*********** PROBLEM 17 ************
HOW TO USE THE DEBUGGER FOR DEBUGGING THE USER-SUPPLIED ANALYSIS
PROGRAM
o Compile the analysis program with the options
"PLI myanal.pli (GONUMBER TEST)"
o Link with the option "SLINK myanal.obj
/DEBUG"
o Start SATAN from the PLI debugger option (START - programmes -
IBM VisualAge-PL/I - debugger)
*********** PROBLEM 18 ************
HOW TO DEFINE ERROR BARS FOR ANALYZER DATA
Prepare two analyzers independently. The first one contains the data,
the second one the errors. The second analyzer can be attached to the
first one by the command
AMOD first / ATTACH(second)
In all following commands (e.g. GDISP, FIT) which handle the first
analyzer, the errors from the second analyzers are included.
*********** PROBLEM 19 ************
HOW TO ENTER DATA INTO AN ANALYZER
Lists of data can be entered into an analyzer in different ways.
Example 1:
The data are listed in ASCII format, either one value per line
or several data per line divided by commata or blanks.
It is sufficient to add 4 lines on top of the dataset and read
the data by GREAD to obtain a pseudoanalyzer.
Mass spectrum
X: Atomic mass
Y: Amplitude
A: (X = 5.03 TO 137.4 BY 0.02) Y,LT0
1.03,2.33,5.04,7.09,10.93,9.32,3,23 ...
*********** PROBLEM 20 ************
HOW TO START SATAN IN A SUBDIRECTORY
WINDOWS:
When starting SATAN, the default path variables of SATAN are set to
the path from which SATAN is started. Therefore it is recommended to
start SATAN in the path where the datasets are stored which are to
be treated. To simplify starting SATAN from
a desired path you may create a dataset $SATAN.BAT there which just
contains the command SATAN. SATAN starts from that path if you
double-click on the symbol of $SATAN.BAT in the WINDOWS EXPLORER.
Another possibility is to establish a shortcut to SATAN.EXE in the
path you want to work and to adapt the value of "Start in:" in
the "properties" menu to the current path.