April 4, 1996
The PAW version 2.07/22 is part of the 96A release of CERNLIB. The source files, binaries and libraries will be available, via anonymous ftp, on the asis system:
ftp asisftp.cern.ch
The PAW team is:
Contributions from:
In the file the following subjects can be found:
The 96A CERNLIB release will be the last major PAW release, although PAW will naturally have to be supported throughout the lifetime of the LEP experiments. An essential step will be the gathering of USER REQUIREMENTs for a future data analysis tool, including requirements for the components e.g. histograming, minimization, data input.
In this release some importants points are:
The interactive analysis of high energy physics event data using HBOOK Ntuples has always been one of the major strengths of PAW. With the design and implementation of the PIAF system and the advent of Column Wise Ntuples (CWNs) the amount of event data which can be analyzed interactively has been significantly increased. Other improvements due to the use of CWNs include the support for more data types and new possibilities for structuring the data. CWNs can store boolean, bit field, integer, real, double precision and character string data types. Data can be structured in arrays of one or more dimensions, where the last dimension of each array can be of variable length. This allows for efficient storage of lists of values, lists of vectors etc. The actual length of the array in a given event is defined by an integer variable in the Ntuple.
In the following table the main commands for accessing Ntuples in PAW are listed. For all commands the arguments IDN, UWFUNC, NEVENT and IFIRST can be specified.
+------------------+--------------------------------------------------+ | Command | Arguments [ Optional Arguments ] | +------------------+--------------------------------------------------+ | LOOP | IDN UWFUNC [ NEVENT IFIRST ] | +------------------+--------------------------------------------------+ | PROJECT | IDH IDN [ UWFUNC NEVENT IFIRST ] | +------------------+--------------------------------------------------+ | PLOT | IDN [ UWFUNC NEVENT IFIRST NUPD OPTION IDH ] | +------------------+--------------------------------------------------+ | SCAN | IDN [ UWFUNC NEVENT IFIRST OPTION VARLIS ] | +------------------+--------------------------------------------------+ | DUMP | IDN [ UWFUNC NEVENT IFIRST FILENAME OPTION ] | +------------------+--------------------------------------------------+
//LUN1/10.TdcVal-Tzero%iStrip
where `//LUN1/10' is the Ntuple to be used and `TdcVal-Tzero' is plotted versus `iStrip'.
Depending on the command the values resulting from expressions are used in different ways but they are calculated in the same way.
The LOOP command is somewhat special because it just calls a user function (COMIS) to process each event.
The part of PAW which evaluates the expressions and performs the appropriate actions on the values is called the Query Processor. An important property of the Query Processor is the language in which the expressions are expressed.
The current version of the system was developed a few years ago to accommodate the features that became available with the Column Wise Ntuples as described above. It also significantly extended the language which is used to formulate the queries.
Sadly enough the software version is unstable and difficult to modify. It suffers from arbitrary limits on the size of expressions and internal tables. It only handles arrays correctly in the simplest cases. Finally it understands only two types, float and string, which makes it impossible to call COMIS functions which take integer or double arguments.
The aim of the new query processor is to have a more powerful syntax, to fully support all types available in the Column Wise Ntuples and to remove most limitations.
In this section the most important features of the new Query Processor are presented. It is maybe useful to remark that all of the old functionality is also reimplemented and that many bugs that caused erroneous input to be accepted are no longer present. It is hoped that implementation of the new processor will result in easier maintenance, and easier extensibility, and a better system for the user.
The new query processor supports all types available in column wise Ntuples: boolean, unsigned integer, signed integer, real and string. The integer and real types are available in multiple sizes, 32 and 64 bit, if the hardware support is available. This is normally only the case for type real. The numerical types can be combined in expressions, in which case automatic type conversions are applied. The new syntax is fully recursive and therefore allows expressions within expressions. It is also allowed to have indices (re)calculated for each event. The rigorous checking of the syntax and types gives predictable results. In the new system most tables are allocated dynamically and grow when needed. This will alleviate the most common problem with the old system which is the overflowing of fixed length internal tables.
A uniform principle has been adopted for the use of arrays in expressions. The operators are applied element by element, e.g. when adding two arrays they have to have the same shape, and the result is an array of the same shape where each element is the sum of the corresponding elements in the two operands. If one of the operands is a scalar, e.g. multiplying a scalar and an array then the result is again an array of the same shape as the input array with each element the product of the scalar and the corresponding element. It is important to realize how this principle works out in the case of such operators as `less-than' and boolean `and' and `or'. Following the same principle the plot expressions and the weight are processed. This allows for one weight for all plotted values but also for a specific weight for each element of an array. Typical use of these features will be shown in the examples below. The query processor checks the proper matching of shapes statically as far as possible. When variable length arrays are used or slices of arrays the proper matching is checked at runtime.
PAW > NT/PLOT 10.VADD(X) | where X is an array variable
PAW > NT/PLOT 10.VMUL(X) | where X is an array variable
PAW > NT/PLOT 10.VMIN(X) | where X is an array variable
PAW > NT/PLOT 10.VMAX(X) | where X is an array variable
PAW > NT/PLOT 10.VAND(X) | where X is an array variable
PAW > NT/PLOT 10.VOR(X) | where X is an array variable
The new query processor allows KUIP vectors to be used in expressions just like Ntuple variables.
One of the benefits is the possibility of parameterized expressions and selections.
The second benefit is an added level of indirection, an Ntuple variable can be used as an index of a KUIP array. The use of this will be illustrated in the examples.
Access to COMIS is improved in several ways:
The old query processor used cuts as a macro mechanism, a textual substitution was carried out before interpreting the expression.
In the new system cuts are treated as function calls. The cut expression is evaluated once for each event and the result is cached.
A complex sub-expression, e.g. a call to COMIS or array slice, can now be used in both the selection and the plot expressions without being evaluated more than once.
The following examples illustrate new features of the new query processor. The first example is fairly simple:
PAW > ntuple/plot 10.a%log(b) c+d>42
If we assume a, b, c and d to be scalar variables this will create a plot where for each event the point (a,log(b)) is plotted if the value of c plus d for that event is larger than 42. If a, b and c are matrices of dimension (3,4), d still scalar then effectively the following happens:
For i = 1 To 3 Do
For j = 1 To 4 Do
Ntuple/Plot 10.a(i,j)%log(b(i,j)) c(i,j)+d>42
End
End
internally this is of course executed much more efficiently. This is the mechanism by which all non scalar values are combined in expressions. It should be noted that not all built-in functions like "log" will be expanded this way. For the moment COMIS functions never expand like this. Next the use of a KUIP vector is shown:
PAW > ntuple/plot 10.tdcVal-pedestal(istrip+100*iplane)
in this example tdcVal, iStrip and iPlane are scalar Ntuple variables and pedestal is a KUIP vector. For each event the index is calculated and the right element of pedestal is subtracted from tdcVal.
A future extension mentioned below will allow this expression to work if all variables are vectors. In the following example cuts and COMIS functions are illustrated:
PAW > ntuple/cut 1 myfun.f(2*ix,sin(y))
PAW > ntuple/plot 10.x%$1 0..lt.$1.and.0.lt.x.lt.1
the first command defines a cut in which a user supplied fortran function myfun() is to be interpreted using COMIS, it is called with an integer and a real argument. The arguments are expressions using the ix and y variables. It is checked if myfun() is supposed to be called with these types of argument and what the return type is. When the second command is executed, the value of cut $1 is calculated and used in the selection expression. If the selection evaluates to non-zero a point is plotted using the cached value of $1. The type of the value of a cut need not be a scalar (as in this example) but can be any type acceptable to the query processor.
As explain in the previous paragraph, the new Ntuple queries processor is now complete (all kind of Ntuples variables are handle), has more functionnalities and do more checking on the validity of the query.
Because of that the time to complete a query can be longer than with the old system. Depending on the complexity of query, the size of the ntuple, the type of ntuple (RWN or CWN), the machine used a factor between 1 and 3 may be observed.
Note a more detailed performance comparison between the old and the new query processor has been done. It shows that used in the same conditions the new query processor is not slower.
The new query processor is largely compatible with the old one. There is some incompatibilities listed here. The incompatabilities have been introduced to improve coherence of the query processor. There is nothing which can be done before and is impossible now.
NT/PLOT 10
was allowed. In a such case the first variable of the ntuple was ploted. With the new query processor this kind of construct is not allowed ie: a variable name or an expression of variable must be specified .
NT/PLOT 10.1
It was not clear if 1 means ``the variable number 1'' or ``the value 1''. Now ntuple variables can be accessed only by name.
NT/LOOP 10.X FUNC.F
X was ignored but accessible in the VIDNx variables inside FUNC.F. Now if one want to have access to a ntuple variable in FUNC.F just do:
NT/LOOP 10 FUNC.F(X)
No expression is allowed after the dot of the ntuple identifier. Note that the number of parameter given to the function is not limited.
/NTUPLE/PLOT: Wrong number of arguments for 'SELECT.FOR' (expect 1)
NT/LOOP 10 FUNC.F(X)The loop stoped when FUNC.F was negative. This has been suppressed because it forbid negative weights. To limit the number of loop use the NEVENT parameter.
For more details see the complete description of the new query processor features.
* NTUPLE/GCUT CID IDN [ UWFUNC NEVENT IFIRST NUPD OPTION IDH WKID]
CID C 'Cut Identifier' IDN C 'Ntuple Identifier' UWFUNC C 'Selection function' D='1.' NEVENT I 'Number of events' D=99999999 IFIRST I 'First event' D=1 NUPD I 'Frequency to update histogram' D=100000000 OPTION C 'Options' D=' ' IDH I 'Identifier of histogram to fill' D=1000000 WKID I 'Workstation identifier' D=1
Possible OPTION values are:
' '
C Draw a smooth curve.
S Superimpose plot on top of existing picture.
+ Add contents of IDN to last plotted ntuple.
B Bar chart format.
L Connect channels contents by a line.
P Draw the current polymarker at each channel or cell.
* Draw a * at each channel.
U Update channels modified since last call.
E Compute (HBARX) and draw error bars with current marker.
A Axis labels and tick marks are not drawn.
' ' Draw the ntuple as an histogram.
PROF Fill a Profile histogram (mean option).
PROFS Fill a Profile histogram (spread option).
PROFI Fill a Profile histogram (integer spread option).
Define a graphical cut on a one or two dimensional plot. First Project and plot an Ntuple as a (1-Dim or 2-Dim) histogram with automatic binning (ID=1000000), possibly using a selection algorithm. See NTUPLE/PLOT for full details on what expressions can be plotted and which options can be given. Then the graphical cut is defined using the mouse.
Note that the old masks CANNOT BE USED with the new query processor. The MASK file should be re generated from the original cuts.
The new commands are:
* NTUPLE/MASK/FILE FNAME [ CHOPT ]
FNAME C 'File name' CHOPT C 'Options' D='R'
Possible CHOPT values are:
R Existing file is opened (read mode only).
N A new file is opened.
U Existing file is opened to be modified.
Open a MASK file.
* NTUPLE/MASK/CLOSE MNAME
MNAME C 'Mask name'
Close a MASK file.
* NTUPLE/MASK/LIST [ MNAME ]
MNAME C 'Mask name' D='*'
List the MASK files currently open.
* NTUPLE/MASK/RESET MNAME IBIT
MNAME C 'Mask name' IBIT I 'Number of bit to reset' D=1 R=1:32
Reset on bit in a mask file.
* HISTOGRAM/OPERATIONS/FUNCTION ID UFUNC
ID C 'Histogram Identifier' UFUNC C 'Name of the function'
Associate the function UFUNC with the histogram ID.
Example:
HIS/OP/FUN 110 X**2
H/PL 110
* GRAPHICS/PRIMITIVES/DBOX X1 X2 Y1 Y2
X1 R 'X first coordinate' X2 R 'X second coordinate' Y1 R 'Y first coordinate' Y2 R 'Y second coordinate'
Draw and fill a box with the current fill area and line attributes. Use the current Normalisation transformation taking care of logarithmic scales. The BOX attributes can be changed with the command SET.
Example:
SET * ; OPT * | Reset the defaults
OPT LOGY ; OPT LOGX | Use log scale
NULL 0 10 0 10 | Draw a frame (cf HELP NULL)
SET FAIS 0 | Fill area interior style hollow
DBOX 1 3 1 3 | Draw a box
* GRAPHICS/PRIMITIVES/ELLIPSE XC YC RX [ RY PHIMIN PHIMAX THETA ]
XC R 'X coord of centre' YC R 'Y coord of centre' RX R 'X radius of ellipse' RY R 'Y radius of ellipse' D=0. PHIMIN R 'Minimum angle (degrees)' D=0. PHIMAX R 'Maximum angle (degrees)' D=360. THETA R 'Rotation of axes of (degrees)' D=0.
Draws an ellipse in the current normalization transformation. The parameter THETA rotates the ellipse major and minor axes (RX and RY) relative to the coordinates by the given angle. The a filled area is used, so the ellipse may be filled by changing the appropriate SET parameters.
Example:
SET * ; OPT * | Reset the defaults
NULL 0 10 0 10 'AB' | Draw a frame (cf HELP NULL)
SET PLCI 2 | Line color is red
SET LWID 6 | Line width is 6
SET BORD 1 | Border on
SET FAIS 1 | Filled area
SET FACI 3 | Filled area are green
ELLIPSE 5 5 3 5 | Draw an ellipse
* NTUPLE/DUMP IDN [ UWFUNC NEVENT IFIRST FILENAME SEP1 SEP2 ]
IDN C 'Ntuple Identifier' UWFUNC C 'Selection function' D='1.' NEVENT I 'Number of events' D=99999999 IFIRST I 'First event' D=1 FILENAME C 'Output filename' D=' ' SEP1 C 'Value separator' D=',' SEP2 C 'Expression separator (on output)' D='%'
For the selected events the values of the expressions are printed to the screen (by default) or to a specified file. If the expression is non scalar (e.g. vector) the elements of the vector are sepatated by a ',' (changed with SEP1). The values of the expressions are separated by a '%' (changed with SEP2). The output of the DUMP command is meant for consumption by other computer programs, for easy inspection of an ntuple the NTUPLE/SCAN command might be more suitable.
PAW > HI/PRINT 10(1:10) | 1D histos
PAW > HI/PRINT 10(0.1:0.5) | 1D histos
PAW > HI/PRINT 20(0.1:10.,1:2) | 2D histos
PAW > H/COPY 2(0.:.5,-1.:2.) 3
PAW > pi/print paw.gif
make an "hard copy" of the window number 1 content into the file paw.gif.
PAW > FUN2 2 sin(x)/x*cos(y)*y 40 -6 6 40 -6 6 E,SURF1,Z
PAW > SET VSIZ
PAW > SET CMAP
PAW > SET CMMG
PAW > SET CWID
PAW > SET CVAL
* GRAPHICS/HPLOT/KEY X Y [ IATT TEXT DX CHOPT ]
X R 'X coordinate of comment' Y R 'Y coordinate of comment' IATT I 'Attribute value' D=24 TEXT C 'Legend' D=' ' DX R 'Box width' D=1. CHOPT C 'Options' D=' '
Possible CHOPT values are:
' ' IATT is a marker type
F IATT is a fill area color index
H IATT is a hatches type
L IATT is a line type
W IATT is a line width
Draw one legend and its explanation at a point x,y in the current normalisation transformation.
The legend can be:
Example
SET * ; OPT * | Reset the defaults
NUL 0 10 0 8 A | Draw a frame
KEY 5 2 ! 'Key 1' | Key with marker
KEY 5 3 2 'Key 2' ! F | Key with filled box
SET FACI 3 | Change color for next key
key 5 4 2 'Key 3' 2 H | Key with hatches. DX is modified
key 5 5 2 'Key 4' ! L | Key with line type
SET PLCI 4 | Change color for next key
SET CSIZ .4 | Change key size
KEY 5 6 8 'Key 5' 1.5 W | Key with line width
* GRAPHICS/HPLOT/ATITLE [ XTIT YTIT ZTIT IALGN CHOPT ]
XTIT C 'X Axis title' D=' ' YTIT C 'Y Axis title' D=' ' ZTIT C 'Z Axis title' D=' ' IALGN I 'Axis titles alignment' D=0 CHOPT C 'Options' D=' '
Possible CHOPT values are:
' ' Axis title are drawn on the left and on the bottom of the plot.
R Y axis title is drawn on the right of the plot.
T X axis title is drawn on the top of the plot.
Draw axis titles on the axes of the present plot zone. The parameter IALGN defined where the title is aligned i.e: on the beginning, the middle or at the end of the axis. The alignment parameter has 3 digits (one for each axis): xyz where x, y and z may have independently the following values:
Example:
NUL 0 10 0 10
NUL 0 100 0 100 S
ATITLE 'End of axis' 'Middle of axis on the right' ! 320 R
ATITLE 'Beginning of axis' 'End of axis' ! 130
ATITLE 'Middle of axis on the top' 'Beginning of axis' ! 210 T
* NTUPLE/READ IDN FNAME [ FORMAT OPT NEVENT MATCH ]
IDN C 'Ntuple Identifier' FNAME C 'File name' FORMAT C 'Format' D='*' OPT C 'Options' D=' ' NEVENT I 'Number of events' D=1000000 MATCH C 'Matching pattern' D=' '
Read Ntuple values from the alphanumeric file FNAME with the format specifications in FORMAT.
This command works for row wise Ntuple only.
Before executing this command, the Ntuple IDN must have been created with the command Ntuple/Create.
MATCH is used to specify a pattern string, restricting the Ntuple filling only to the records in the file which verify the pattern. The possible patterns are:
/string/ match a string (starting in column 1)
-/string/ do not match a string (starting in column 1)
/string/(n) match a string, starting in column n
/string/(*) match a string, starting at any column
Example:
H/del *
Appl Data ntmatch.dat
101. 201. 301. C
102. 202. 302.
103. 203. 303. C
104. 204. 304. C
105. 205. 305.
106. 206. 306.
107. 207. 307.
108. 208. 308.
109. 209. 309.
ntmatch.dat
Nt/Create 4 'Test of Match' 3 ! ! Xmatch Ymatch Zmatch
Nt/Read 4 ntmatch.dat ! ! ! -/C/(*)
Nt/SCAN 4
In this macro all the lines with a C at the end are not read.
PAW > H/PLOT 20(4:18,0.:0.5)
was not working on the y-axis
* HISTOGRAM/2D_PLOT/CONTOUR [ ID NLEVEL CHOPT PARAM ]
ID C 'Histogram Identifier' Loop NLEVEL I 'Number of contour lines' D=10 CHOPT C 'Options' D='1' PARAM C 'Vector of contour levels'
Possible CHOPT values are:
0 Use colour to distinguish contours.
1 Use line style to distinguish contours.
2 Line style and colour are the same for all contours.
3 The contour is drawn with filled colour levels. The levels are
equidistant. The color indices are taken in the current palette
(defined with the command PALETTE). If the number of levels (NLEVEL) is
greater than the number of entries in the current palette, the palette
is explore again from the beginning in order to reach NLEVEL.
S Superimpose plot on top of existing picture.
Draw a contour plot from a 2-Dim histogram. If PARAM is not given, contour levels are equidistant. If given, the vector PARAM may contain up to 50 values.
Example:
Fun2 2 x*y 40 0 1 40 0 1 ' ' | Create a 2D histogram
V/Cr PAR(5) R .1 .11 .3 .31 .5 | Define the contours
Contour 2 5 ! PAR | Draw the non equidistant contours
Note: The non equidistant contours are not implemented with the option '3'.
.
.
.
Note: IWKID should not be equal to 2 if a metafile is actived because the
command METAFILE use it already.
.
.
.
* GRAPHICS/VIEWING/ZONE [ NX NY IFIRST CHOPT ]
NX I 'Number of divisions along X' D=1 NY I 'Number of divisions along Y' D=1 IFIRST I 'First division number' D=1 CHOPT C 'Option' D=' '
Possible CHOPT values are:
S Redefine zones on current picture ' ' Define the zones for all subsequent pictures.
Subdivide the picture into NX by NY zones, starting at zone IFIRST (count along X first).
Note that the command ZONE doesn't define the normalisation transformations (see SWN, SVP and SELNT). They are define only when commands like H/PLOT, NULL etc .. are performed.
* GRAPHICS/VIEWING/SWN NT X1 X2 Y1 Y2
NT I 'Normalize transformation number' X1 R 'Low X of window in WC' D=0 X2 R 'High X of window in WC' D=20 Y1 R 'Low Y of window in WC' D=0 Y2 R 'High Y of window in WC' D=20
Set the window of the normalisation transformation NT in World Coordinates (WC). Note that the command SELNT should be invoke in order to validate the window parameters.
Example:
Nul 0 1 -1 1 | Draw an empty frame (0,1)x(-1,1)
Line 0 0 1 1 | Draw a line in (0,1)x(-1,1)
Swn 10 0 10 0 10 | Change the coordinates to (0,10)x(0,10)
Selnt 10 | Activate the coordinates (0,10)x(0,10)
Line 0 0 1 1 | Draw a line in (0,10)x(0,10)
This command, and also SVP, should not be used for a common PAW usage (H/PLOT, GRAPH etc ...). Commands like ZONE and SIZE should be used.
* GRAPHICS/VIEWING/SVP NT X1 X2 Y1 Y2
NT I 'Normalisation transformation number' X1 R 'Low X of viewport in NDC' D=0 R=0:1 X2 R 'High X of viewport in NDC' D=1 R=0:1 Y1 R 'Low Y of viewport in NDC' D=0 R=0:1 Y2 R 'High Y of viewport in NDC' D=1 R=0:1
Set the viewport of the normalisation transformation NT in the Normalized Device Coordinates (NDC). Note that the command SELNT should be invoke in order to validate the viewport parameters.
This command, and also SWN, should not be used for a common PAW usage (H/PLOT, GRAPH etc ...). Commands like ZONE and SIZE should be used.
* GRAPHICS/VIEWING/SELNT NT
NT I 'Normalisation transformation number'
Select a normalisation transformation number.
If ZONE 2 2 is active , then: If ZONE 1 1 is active, then:
+------------------------------+ +-----------------------------+
| | | |
| +----------+ +---------+ | | +-----------------------+ |
| | | | | | | | | |
| | NT=10 | | NT=20 | | | | | |
| | | | | | | | | |
| +----------+ +---------+ | | | | |
| | | | NT=10 | |
| +----------+ +---------+ | | | | |
| | | | | | | | | |
| | NT=30 | | NT=40 | | | | | |
| | | | | | | | | |
| +----------+ +---------+ | | | | |
| | | +-----------------------+ |
| NT=1 | | NT=1 |
+------------------------------+ +-----------------------------+
Example:
Zone 1 2 | Define 2 zones.
Nul 0 1 -1 1 | Draw an empty frame in the first zone
Nul 0 1 -1 1 | Draw an empty frame in the second zone
Line 0 0 1 1 | Draw a line in second zone
Selnt 10 | select the first zone
Line 0 0 1 1 | Draw a line in the first zone
* GRAPHICS/HPLOT/TICKS [ CHOPT XVAL YVAL ]
CHOPT C 'Options' D=' ' XVAL R 'X position' D=1.E30 YVAL R 'Y position' D=1.E30
Possible CHOPT values are:
' ' Tick marks are drawn on the edges of the picture
X Cross-wire drawn perpendicular to the X-axis
Y Cross-wire drawn perpendicular to the Y-axis
A Value drawn Above cross-wire
B Value drawn Below cross-wire
L Value drawn Left of cross-wire
R Value drawn Right of cross-wire
Draw 'cross-wires' on a picture, optionally with tick marks and values. Cross-wires are lines perpendicular to the X and/or Y axis.
The values of XVAL are always histogram coordinates.
The tick marks will be drawn on both side of the cross wire, unless the cross-wires are requested on the boundary of the box surrounding the histogram (i.e. at the extreme limits of the drawn histogram). In this case tick marks will only be drawn inside the box.
The options 'A' and 'B' (for Above and Below) refer only to the cross-wire perpendicular to the Y axis. In each case only one cross-wire will be drawn.
Similarly 'L' and 'R' (Left and Right) refer only to the cross-wires perpendicular to the X-axis.
It is possible to redefine the length of tick marks on the X or Y axis with SET XTIC or SET YTIC.
The position of the axis values may be changed with SET XVAL or SET YVAL.
The Number of divisions can be changed with SET NDVX and SET NDVY.
This command combines with the command NUL is a easy way to redraw axis on the current plot.
Example
SET * ; OPT * | Reset the defaults
Nul 0 1 0 1 | draw an empty frame with axis
Set ndvy 5 | Change number of Y divisions
Nul 0 10 0 10 ABS | Redefine the scales
Tic XR 5 ! | Axis in the new coordinates
PAW> connect node=piaf1.cern.ch
otherwise PAW will reply "*** Server does not answer".
The default NODE value in the connect command is now piaf1.cern.ch Users of the 96a release will be able to use the simple "connect" command as before.
$OPTION('option') ........... 1 if the option is on 0 otherwise (see HELP OPTION)
PAW > opt STAT
PAW > Mess $OPTION('STAT')
1
PAW > opt NSTA
PAW > Mess $OPTION('STAT')
0
$HINFO(id,'1DHISTO') ... 1 if ID is a 1D histogram or 0 otherwise $HINFO(id,'2DHISTO') ... 1 if ID is a 2D histogram or 0 otherwise $HINFO(id,'TABLE') ..... 1 if ID is a table or 0 otherwise $HINFO(id,'PROFILE') ... 1 if ID is a profile histogram or 0 otherwise $HINFO(id,'NTUPLE') .... 1 if ID is a Ntuple or 0 otherwise $HINFO(id,'LOG') ....... 1 if ID has LOG Y scale or 0 otherwise
SUBROUTINE HNFORM(CHFORM,CHNAME,LDIM,CHTYPE,XLOW,XHIGH)
Inputs:
For each * placeholder, there must be a integer value passed in the array LDIM.
Outputs:
Description:
Assists the formation of the CHFORM character string for HBNAME/HBNAMC E.g. for
COMMON /EVENT/ NEVT,TRACK(20)
CHFORM = ' '
CALL HNFORM(CHFORM,'TRACK()',20,'R',0.,0.)
results in CHFORM = 'TRACK(20):R'
CALL HNFORM(CHFORM,'NEVT',0,'I:5',0.,100.)
results in CHFORM = 'TRACK(20):R,NEVT[0.,100.]:I:5'
For a full description, see the HBOOK manual
SUBROUTINE HCOPYR(ID1,ID2,CHTITL,IBINX1,IBINX2,IBINY1,IBINY2,CHOPT)
Copy Histogram ID1 to a new histogram ID2, only moving the bin contents from bins IBINX1 to IBINX2, IBINY1 to IBINY2 and setting the title to CHTITL.
SYNOPSIS:
I = IFPSCL(X)
DESCRIPTION:
ifpscl() returns a non-negative integer value that specifies the IEEE operand class to which the argument x belongs. The value returned are defined as follow:
SYNOPSIS:
I = IFPDCL(X)
DESCRIPTION:
ifpdcl() returns a non-negative integer value that specifies the IEEE operand class to which the argument x belongs. The value returned are defined as follow:
SUBROUTINE HRENID(IDOLD,IDNEW)
This routine rename the object IDOLD to IDNEW in the current directory on RZ file
SUBROUTINE HPLLGD(CHXTIT,CHYTIT,CHZTIT,IALGN,CHOPT)
HPLOT routine to label axes with a title. The parameter IALGN defined where in aligned the legend i.e: on the beginning, the middle or at the end of the axis. The alignment parameter has 3 digits (one for each axis):
xyz
where x, y and z may have independently the following values:
The CHOPT parameter allows to define on which side of the current zone the X and Y titles are drawn:
SUBROUTINE HPLNOT(XU,YU,DX,ISYM,CHTXT,CHOPT)
See the description of the new KEY command for details.
SUBROUTINE IGGIF(IWKID,X,Y,CHNAME,CHOPT)
Generate/load a GIF file with/in the current X11 window.
Input parameters:
SUBROUTINE IGELLI(XCI,YCI,RXI,RYI,PHIMIN,PHIMAI,THETA)
Draw an ellipse in the current NT (original code: Ellipse macro from Michael Kelsey)
Draws an ellipse in the current normalization transformation. The parameter THETA rotates the ellipse major and minor axes (RX and RY) relative to the coordinates by the given angle.
Input parameters:
The new ``HELP mechanism'' as descibed in CNL 219 (section 5.3) will be operational with this release. The major change is the introduction of a new directive ''>Keyword'' in the KUIP Command Definition File (CDF). From a user point of view this means that, for any KUIP-based application, instead of getting help only on valid command names, users can get help associated with keywords. For instance, in PAW, when typing :
PAW > help editor
one gets:
Keyword "EDITOR" found in commands:
1: * /KUIP/EDIT Invoke the editor on the file.
2: * /KUIP/SET_SHOW/HOST_EDITOR
Set the host command to invoke the editor.
______
0: Top level menu
Enter a number ('Q'=command mode): q
N.B. The introduction of ``Keywords'' for the PAW CDF files is not yet finalized and is under way. If you think a specific keyword should be added you can send a mail to paw.support@cern.ch.
Although users might see little differences in the output given by this new HELP compared to what they were used, we think that the funtionality (or information provided) has been kept.
The new HELP for the command /KUIP/HELP is:
* KUIP/HELP [ ITEM OPTION ]
ITEM C 'Command or menu name or keyword(s)' D=' ' OPTION C 'Option' D='N'
Possible OPTION values are:
EDIT The help text is written to a file and the editor is invoked,
NOEDIT The help text is output on the terminal output.
KEYWORD give access to all commands associated to that keyword(s).
E Same as 'EDIT'.
N Same as 'NOEDIT'
K Same as 'KEYWORD'
Find help information by command name, menu name or keywords.
If ITEM is a valid command name (and there is only one such command) then full explanation on that command is provided: syntax (as given by the command USAGE), functionality, list of parameters with their attributes. If ITEM also corresponds to other commands associated to it with a "keyword" then a "See also" message, followed by the names of these commands is given.
If ITEM is a menu (or a submenu) a dialogue is guiding the user in traversing the tree command structure for getting full explanation on a specific command from that tree.
If HELP is entered without parameters, the search start from the top level menu and the user is guided in traversing the complete tree command structure.
'HELP -KEYWORD' (or 'HELP -K') followed by one or more keywords causes HELP to give access to all commands associated to that (list of) keyword(s). If the keyword corresponds to a valid command or (sub)menu name all corresponding commands are accessible. This option is especially useful when you do not know the exact name of a valid command or menu and you can only describe it by its functionality (e.g. 'HELP -KEYWORD POSTSCRIPT').
N.B. If ITEM does not correspond to any valid command or menu name then the option `-KEYWORD' is automatically invoked.
'HELP -EDIT' (or just 'CHELP -E') switches to edit mode: instead of writing the help text to the terminal output, it is written into a temporary file and the pager or editor defined by the command HOST_PAGER is invoked. (On Unix workstations the pager can be defined to display the help text asynchrously in a separated window.) 'CHELP -NOEDIT' (or just 'CHELP -N') switches back to standard mode. The startup value is system dependent.
See also:
/KUIP/USAGE, /KUIP/MANUAL
Important note to application programmers:
This modification affecting the KUIP CDF, it means that application programmers who based their application on KUIP MUST re-compile all the CDF files related to the application (otherwise the executable module will fail at the very beginning with an error message).
The Shared libraries mechanism is implemented on two new platforms
ERROR: Undefined symbol: .f1_
To solve this problem you could add f1 routine into file with f2 routine.