Changeset 3041 in Sophya for trunk/SophyaLib


Ignore:
Timestamp:
Jul 20, 2006, 7:12:06 PM (19 years ago)
Author:
ansari
Message:

ecriture documentation piapp pour piapp V4/sophya V2 , Reza 20/7/2006

Location:
trunk/SophyaLib/Manual
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/Manual/piahelp.tex

    r2811 r3041  
    77\item {\bf Expr. Plotting }  (p. \pageref{ExprZZPlotting})
    88\item {\bf External Modules }  (p. \pageref{ExternalZModules})
     9\item {\bf FFT }  (p. \pageref{FFT})
    910\item {\bf FileIO }  (p. \pageref{FileIO})
    1011\item {\bf Fitting }  (p. \pageref{Fitting})
     
    6970\vspace{3mm}
    7071\begin{tabular}{llllll}
    71 ObjectExpressions & p. \pageref{ObjectExpressions}  & exptovec & p. \pageref{exptovec}  & fillgd1 & p. \pageref{fillgd1}  \\ 
    72 fillgd2 & p. \pageref{fillgd2}  & fillmtx & p. \pageref{fillmtx}  & fillnt & p. \pageref{fillnt}  \\ 
    73 fillvec & p. \pageref{fillvec}  & gdfrvec & p. \pageref{gdfrvec}  & ntexpcfile & p. \pageref{ntexpcfile}  \\ 
    74 ntloop & p. \pageref{ntloop}  & plot2d & p. \pageref{plot2d}  & plot2de & p. \pageref{plot2de}  \\ 
    75 plot2dvec & p. \pageref{plot2dvec}  & plot2dw & p. \pageref{plot2dw}  & plot3d & p. \pageref{plot3d}  \\ 
    76 projh1d & p. \pageref{projh1d}  & projh2d & p. \pageref{projh2d}  & projprof & p. \pageref{projprof}  \\ 
     72ObjectExpressions & p. \pageref{ObjectExpressions}  & expmeansig & p. \pageref{expmeansig}  & exptovec & p. \pageref{exptovec}  \\ 
     73fillgd1 & p. \pageref{fillgd1}  & fillgd2 & p. \pageref{fillgd2}  & fillmtx & p. \pageref{fillmtx}  \\ 
     74fillnt & p. \pageref{fillnt}  & fillvec & p. \pageref{fillvec}  & gdfrvec & p. \pageref{gdfrvec}  \\ 
     75ntexpcfile & p. \pageref{ntexpcfile}  & ntloop & p. \pageref{ntloop}  & plot2d & p. \pageref{plot2d}  \\ 
     76plot2de & p. \pageref{plot2de}  & plot2dvec & p. \pageref{plot2dvec}  & plot2dw & p. \pageref{plot2dw}  \\ 
     77plot3d & p. \pageref{plot3d}  & plot3dw & p. \pageref{plot3dw}  & projh1d & p. \pageref{projh1d}  \\ 
     78projh2d & p. \pageref{projh2d}  & projprof & p. \pageref{projprof}  &   &   \\ 
    7779\end{tabular}
    7880\end{center}
     
    8890\vspace{6mm}
    8991\begin{center}
     92 \rule{2cm}{0.5mm} \makebox[60mm]{{ \bf FFT } help group} \rule{2cm}{0.5mm} \\
     93\vspace{3mm}
     94\begin{tabular}{llllll}
     95fftback & p. \pageref{fftback}  & fftfilter & p. \pageref{fftfilter}  & fftforw & p. \pageref{fftforw}  \\ 
     96fftfuncfilter & p. \pageref{fftfuncfilter}  &   &  &  &   \\ 
     97\end{tabular}
     98\end{center}
     99\vspace{6mm}
     100\begin{center}
    90101 \rule{2cm}{0.5mm} \makebox[60mm]{{ \bf FileIO } help group} \rule{2cm}{0.5mm} \\
    91102\vspace{3mm}
    92103\begin{tabular}{llllll}
    93104arrtoascii & p. \pageref{arrtoascii}  & fitsadapt & p. \pageref{fitsadapt}  & mtxfrascii & p. \pageref{mtxfrascii}  \\ 
    94 ntfrascii & p. \pageref{ntfrascii}  & openfits & p. \pageref{openfits}  & openppf & p. \pageref{openppf}  \\ 
    95 print & p. \pageref{print}  & saveall & p. \pageref{saveall}  & savefits & p. \pageref{savefits}  \\ 
    96 savelist & p. \pageref{savelist}  & saveobjs & p. \pageref{saveobjs}  & saveppf & p. \pageref{saveppf}  \\ 
    97 vecfrascii & p. \pageref{vecfrascii}  &   &  &  &   \\ 
     105ntfrascii & p. \pageref{ntfrascii}  & openppf & p. \pageref{openppf}  & print & p. \pageref{print}  \\ 
     106readfits & p. \pageref{readfits}  & saveall & p. \pageref{saveall}  & savelist & p. \pageref{savelist}  \\ 
     107saveobjs & p. \pageref{saveobjs}  & saveppf & p. \pageref{saveppf}  & scanfits & p. \pageref{scanfits}  \\ 
     108vecfrascii & p. \pageref{vecfrascii}  & writefits & p. \pageref{writefits}  &   &   \\ 
    98109\end{tabular}
    99110\end{center}
     
    177188newmtx & p. \pageref{newmtx}  & newnt & p. \pageref{newnt}  & newprof & p. \pageref{newprof}  \\ 
    178189newprofe & p. \pageref{newprofe}  & newvec & p. \pageref{newvec}  & ntcol2var & p. \pageref{ntcol2var}  \\ 
    179 ntline2var & p. \pageref{ntline2var}  & vec2var & p. \pageref{vec2var}  &   &   \\ 
     190ntline2var & p. \pageref{ntline2var}  & objaoper & p. \pageref{objaoper}  & vec2var & p. \pageref{vec2var}  \\ 
    180191\end{tabular}
    181192\end{center}
     
    200211map2map & p. \pageref{map2map}  & mapcover & p. \pageref{mapcover}  & mapmult & p. \pageref{mapmult}  \\ 
    201212mapop & p. \pageref{mapop}  & maproj & p. \pageref{maproj}  & mapstat & p. \pageref{mapstat}  \\ 
    202 maskmap & p. \pageref{maskmap}  & settypemap & p. \pageref{settypemap}  & typemap & p. \pageref{typemap}  \\ 
     213maskmap & p. \pageref{maskmap}  & resol2szidx & p. \pageref{resol2szidx}  & settypemap & p. \pageref{settypemap}  \\ 
     214szidx2resol & p. \pageref{szidx2resol}  & typemap & p. \pageref{typemap}  &   &   \\ 
    203215\end{tabular}
    204216\end{center}
     
    208220\vspace{3mm}
    209221\begin{tabular}{llllll}
    210 mollgrid & p. \pageref{mollgrid}  & mollgridsph & p. \pageref{mollgridsph}  & powerspec & p. \pageref{powerspec}  \\ 
    211 setprjmoldefval & p. \pageref{setprjmoldefval}  &   &  &  &   \\ 
     222mollgrid & p. \pageref{mollgrid}  & mollgridsph & p. \pageref{mollgridsph}  & setprjmoldefval & p. \pageref{setprjmoldefval}  \\ 
    212223\end{tabular}
    213224\end{center}
     
    221232h/integ & p. \pageref{hZinteg}  & h/oper & p. \pageref{hZoper}  & h/plot/2d & p. \pageref{hZplotZ2d}  \\ 
    222233h/put\_vec & p. \pageref{hZputZvec}  & h/rebin & p. \pageref{hZrebin}  & h/set/cont & p. \pageref{hZsetZcont}  \\ 
    223 h/set/err & p. \pageref{hZsetZerr}  & n/merge & p. \pageref{nZmerge}  & n/pl & p. \pageref{nZpl}  \\ 
     234h/set/err & p. \pageref{hZsetZerr}  & n/assoc/col & p. \pageref{nZassocZcol}  & n/copy & p. \pageref{nZcopy}  \\ 
     235n/merge & p. \pageref{nZmerge}  & n/merge/col & p. \pageref{nZmergeZcol}  & n/pl & p. \pageref{nZpl}  \\ 
    224236n/plot & p. \pageref{nZplot}  & n/proj & p. \pageref{nZproj}  & n/read & p. \pageref{nZread}  \\ 
    225237n/scan & p. \pageref{nZscan}  & reset & p. \pageref{reset}  & v/deriv & p. \pageref{vZderiv}  \\ 
     
    273285  > thrlist       # List of command execution threads (& as the last character)
    274286  > clearthrlist  # Removes finished threads from the list 
    275   > cancelthr Id  # Cancel a given thread (ThrId=id) 
     287  > killthr Id    # Try to stop a given thread (ThrId=id) by sending SIGUSR1
     288  > cancelthr Id  # Try to cancel a given thread (ThrId=id) 
    276289  > waitthr       # Waits until all active threads have finished (join())
    277290  > exec filename # Execute commands from file
     
    467480The default Cut() expression in true (=1) for all
    468481
    469   Related commands: plot2d plot2de plot2dw plot3d
    470         projh1d projh2d  projprof fillvec fillmtx
    471         fillnt fillgd1 fillgd2 ntloop exptovec ...
     482 Related commands: plot2d plot2de plot2dw plot3d plot3dw
     483         projh1d projh2d  projprof fillvec fillmtx
     484         fillnt fillgd1 fillgd2 ntloop exptovec ...
     485\end{verbatim}
     486\piacommand{expmeansig} \label{expmeansig}
     487\begin{verbatim}
     488Computes Mean/Sigma (+Min/Max) for an expression X=f(Object)
     489 Usage: expmeansig nameobj f_X() [Cut() loop_param]
     490  Related commands: exptovec ntloop fillnt ObjectExpressions ...
    472491\end{verbatim}
    473492\piacommand{exptovec} \label{exptovec}
     
    535554Plots (2D) Y=g(Object) vs. X=f(Object) --- Object Variable names (double) :
    536555 Usage: plot2d nameobj f_X() g_Y() [f_Cut() graphic_attributes loop_param]
    537   Related commands: plot2de plot2dw plot3d ObjectExpressions ...
     556  Related commands: plot2de plot2dw plot3d plot3dw ObjectExpressions ...
    538557\end{verbatim}
    539558\piacommand{plot2de} \label{plot2de}
     
    556575\piacommand{plot3d} \label{plot3d}
    557576\begin{verbatim}
    558 Plots (3D) Z=h(Object) vs. Y=g(Object) vs. X=f(Object) vs
     577Plots (3D) Z=h(Object) vs. Y=g(Object) vs. X=f(Object)
    559578 Usage: plot3d nameobj f_X() g_Y() h_Z() [Cut() graphic_attributes loop_param]
    560   Related commands: plot2d plot2dw plot2de plot3d ObjectExpressions ...
     579  Related commands: plot2d plot2de plot3dw ObjectExpressions ...
     580\end{verbatim}
     581\piacommand{plot3dw} \label{plot3dw}
     582\begin{verbatim}
     583Plots (3D) Z=h(Object) vs. Y=g(Object) vs. X=f(Object) with Weight W=k(Object) 
     584 Usage: plot3d nameobj f_X() g_Y() h_Z() k_Wt() [Cut() graphic_attributes loop_param]
     585  Related commands: plot2d plot2dw plot3d ObjectExpressions ...
    561586\end{verbatim}
    562587\piacommand{projh1d} \label{projh1d}
     
    610635  Usage: loadmodule fnameso modulename
    611636  Related commands: link
     637\end{verbatim}
     638\subsection{FFT} \label{FFT}
     639\noindent
     640\piacommand{fftback} \label{fftback}
     641\begin{verbatim}
     642FFT on a vector -> computes backward Fourier transform
     643 Usage: fftback vecSpec vecSig [graphic_att] [C/Z]
     644 vecSig = FFTBackward(vecSpec)
     645 vecSpec: Input data vector of type complex<r_8>
     646 vecSig:  Output Data vector of type r_8 (default)
     647    or complex<r_8> if C/Z specified or
     648    vecSpec computed by fftforw on a complex vector
     649 See also : fftforw fftfilter fftfuncfilter
     650\end{verbatim}
     651\piacommand{fftfilter} \label{fftfilter}
     652\begin{verbatim}
     653Filter (multiply) vecSpec (vector complex<r_8>) by Filter (vector<r_8>)
     654 Usage: fftfilter vecSpec FilterVec vecFiltSpec [graphic_att]
     655   vecFiltSpec(i) = vecSpec(i) * complex(FilterVec(i),0)
     656 See also : fftforw fftbackw fftfuncfilter
     657\end{verbatim}
     658\piacommand{fftforw} \label{fftforw}
     659\begin{verbatim}
     660FFT on a vector -> computes forward Fourier transform
     661 Usage: fftforw vecSig vecSpec [graphic_att]
     662 vecSpec = FFTForward(vecSig)
     663 vecSig: Input data vector of type r_8 or complex<r_8>
     664 vecSpec: Output data vector of type complex<r_8>
     665 See also : fftback fftfilter fftfuncfilter
     666\end{verbatim}
     667\piacommand{fftfuncfilter} \label{fftfuncfilter}
     668\begin{verbatim}
     669Filter (multiply) vecSpec (vector complex<r_8>) by FilterFunc(i)
     670 Usage: fftfilter vecSpec FilterFunc vecFiltSpec [graphic_att]
     671   vecFiltSpec(i) = vecSpec(i) * complex(FilterFunc(i),0)
     672 See also : fftforw fftbackw fftfilter
    612673\end{verbatim}
    613674\subsection{FileIO} \label{FileIO}
     
    627688 hdu : Fits HDU (if <=0 take first binary/ascii table)
    628689 buflen[,bufsens,lp] : buffer length (sens) for fits reading (default is 100,1,0)
     690 See also  scanfits writefits readfits
    629691\end{verbatim}
    630692\piacommand{mtxfrascii} \label{mtxfrascii}
     
    640702  Related commands: ntloop fillnt
    641703\end{verbatim}
    642 \piacommand{openfits} \label{openfits}
    643 \begin{verbatim}
    644 Loads a FITS file into an appropriate object
    645  Usage: openfits filename
    646   Related commands: savefits openppf
    647 \end{verbatim}
    648704\piacommand{openppf} \label{openppf}
    649705\begin{verbatim}
    650706Reads all or some objects from a PPF file
    651707 Usage: openppf filename [objname1 objname2 ...]
    652   Related commands: saveall openfits
     708  Related commands: saveall
    653709\end{verbatim}
    654710\piacommand{print} \label{print}
    655711\begin{verbatim}
    656712Prints an object
    657  Usage: print nameobj
     713 Usage: print nameobj [prtlev]
     714 prtlev = 0,1,2...  default: prtlev=0
     715\end{verbatim}
     716\piacommand{readfits} \label{readfits}
     717\begin{verbatim}
     718readfits: Read all HDU's of a fits file
     719Usage: readfits nameobj/pattern FileName
     720(use FitsManager) .... See also  scanfits writefits fitsadapt
    658721\end{verbatim}
    659722\piacommand{saveall} \label{saveall}
     
    661724Saves all objects into a PPF file
    662725 Usage: saveall filename
    663   Related commands: saveobj savelist openppf savefits
    664 \end{verbatim}
    665 \piacommand{savefits} \label{savefits}
    666 \begin{verbatim}
    667 Save an object into a FITS file
    668  Usage: savefits nameobj filename
    669   Related commands: openfits saveobjs saveall
     726  Related commands: saveobj savelist openppf
    670727\end{verbatim}
    671728\piacommand{savelist} \label{savelist}
     
    673730
    674731 Usage: savelist objname1 [objname2 ...] filename
    675   Related commands: saveobj openppf savefits
     732  Related commands: saveobj openppf
    676733\end{verbatim}
    677734\piacommand{saveobjs} \label{saveobjs}
     
    680737  PPF file (pattern: x?y*) - Alias saveppf
    681738Usage: saveobjs nameobjpattern filename
    682   Related commands: saveppf savelist saveall openppf savefits
     739  Related commands: saveppf savelist saveall openppf
    683740\end{verbatim}
    684741\piacommand{saveppf} \label{saveppf}
     
    687744  PPF file (pattern: x?y*) - Alias saveppf
    688745Usage: saveppf nameobjpattern filename
    689   Related commands: saveobjs savelist saveall openppf savefits
     746  Related commands: saveobjs savelist saveall openppf
     747\end{verbatim}
     748\piacommand{scanfits} \label{scanfits}
     749\begin{verbatim}
     750scanfits: scan fits files and print information on each HDU
     751Usage: scanfits FileName [slev=0 ... 3]
     752slev=1,3: header keywords , slev=2,3: try to read each HDU
    690753\end{verbatim}
    691754\piacommand{vecfrascii} \label{vecfrascii}
     
    694757 Usage: vecfrascii vec_name file_name
    695758  Related commands: arrtoascii mtxfrascii ntfrascii [CommChar Separator]
     759\end{verbatim}
     760\piacommand{writefits} \label{writefits}
     761\begin{verbatim}
     762writefits: Write objects to a fits file
     763Usage: writefits nameobj/pattern FileName
     764(use FitsManager) .... See also  scanfits readfits fitsadapt
    696765\end{verbatim}
    697766\subsection{Fitting} \label{Fitting}
     
    16251694  Related commands: vec2var ntcol2var
    16261695\end{verbatim}
     1696\piacommand{objaoper} \label{objaoper}
     1697\begin{verbatim}
     1698Perform an operation through the object adapter NObjMgrAdapter::PerformOperation()
     1699  Usage: objaoper objname operation [arg1 ...]
     1700  Examples of defined operations :
     1701  Matrices: row indx_row , col indx_col
     1702  Arrays: slicexy indx_Z , slicexz indx_Y, sliceyz indxX
     1703
     1704\end{verbatim}
    16271705\piacommand{vec2var} \label{vec2var}
    16281706\begin{verbatim}
     
    18071885    operation is map(i) *= msk(theta,phi)
    18081886\end{verbatim}
     1887\piacommand{resol2szidx} \label{resol2szidx}
     1888\begin{verbatim}
     1889Compute SizeIndex value (=nside for HEALPix) for a
     1890 given resolution, (resol in arcminutes)
     1891 Usage: resol2szidx resol
     1892\end{verbatim}
    18091893\piacommand{settypemap} \label{settypemap}
    18101894\begin{verbatim}
     
    18141898         T for ThetaPhi
    18151899\end{verbatim}
     1900\piacommand{szidx2resol} \label{szidx2resol}
     1901\begin{verbatim}
     1902Compute resolution for a given SizeIndex (=nside for HEALPix)
     1903 Usage: szidx2resol szidx_m
     1904\end{verbatim}
    18161905\piacommand{typemap} \label{typemap}
    18171906\begin{verbatim}
     
    18301919Creates a spherical coordinate grid in Molleweide projection
    18311920 Usage: mollgridsph NameSphericalMap [Nb_Parallel Nb_Meridien graphic_att]
    1832 \end{verbatim}
    1833 \piacommand{powerspec} \label{powerspec}
    1834 \begin{verbatim}
    1835 FFT on a vector -> Plots power spectrum
    1836  Usage: fftp vecName vecFFT [graphic_att]
    18371921\end{verbatim}
    18381922\piacommand{setprjmoldefval} \label{setprjmoldefval}
     
    19632047  Related commands: h/set/cont
    19642048\end{verbatim}
     2049\piacommand{n/assoc/col} \label{nZassocZcol}
     2050\begin{verbatim}
     2051Merge ntuples columns with an association index
     2052 n/assoc/col ntass[,u/i] nt_1[,ext] nt_2[,ext] nt_assoc[,icass]
     2053 Merge ntuples nt_1 and nt_2 columns into ntuple ntass
     2054   with line association number given by ntuple nt_assoc
     2055 ---
     2056 icass: association number given by column "icass" of nt_assoc (def=0)
     2057 ---
     2058 ext : character string to add at the end of the ntuple variable names
     2059   if "ext"="!" no extension is added
     2060   if no "ext" is given, automatic extension "_0" "_1" "_2" ...
     2061 ---
     2062 u   : do the union of all the lines of nt_1 and nt_2
     2063       (all ssociated and un-associated lines of nt_1 and nt_2)
     2064 i   : do the intersection of all the lines of nt_1 and nt_2
     2065       (only associated lines of nt_1 and nt_2)
     2066 def : write all lines of nt_1 with possible associated line of nt_2
     2067       (number of entries of ntass = number of entries of nt_1)
     2068\end{verbatim}
     2069\piacommand{n/copy} \label{nZcopy}
     2070\begin{verbatim}
     2071Copy all or some variables of a ntuple into another new ntuple
     2072 n/merge ntnew nt [vname1 vname2 vname3 ...]
     2073\end{verbatim}
    19652074\piacommand{n/merge} \label{nZmerge}
    19662075\begin{verbatim}
    1967 Merge ntuples
     2076Merge ntuples (by adding lines)
    19682077 n/merge nt nt_1 nt_2 ... nt_n
    1969  Merge ntuples nt_i into ntuple nt
     2078 Merge ntuples nt_i lines into ntuple nt
     2079\end{verbatim}
     2080\piacommand{n/merge/col} \label{nZmergeZcol}
     2081\begin{verbatim}
     2082Merge ntuples (by adding columns for each line)
     2083 n/merge/col nt nt_1[,ext] nt_2[,ext] ... nt_n[,ext]
     2084 Merge ntuples nt_i columns into ntuple nt
     2085 ext : character string to add at the end of the ntuple variable names
     2086   if "ext"="!" no extension is added
     2087   if no "ext" is given, automatic extension "_0" "_1" "_2" ...
    19702088\end{verbatim}
    19712089\piacommand{n/pl} \label{nZpl}
  • trunk/SophyaLib/Manual/piapp.tex

    r2811 r3041  
    1 \documentclass[twoside,11pt]{article}
     1\documentclass[twoside,10pt]{article}
    22% \usepackage[latin1]{inputenc}
    33% \usepackage[T1]{fontenc}
     
    3636%}
    3737
     38\newcommand{\rond}{$\bullet \ $}
     39\newcommand{\etoile}{$\star \ $}
     40\newcommand{\cercle}{$\circ \ $}
     41\newcommand{\carre}{$\Box \ $}
     42
     43%%%% Definition des commandes pour l'aide en ligne
    3844\newcommand{\piacommand}[1]{
    3945$\blacksquare$ \hspace{3mm} {\bf \Large #1 } \index{#1} % (Command)
    4046}
    41 
    4247\newcommand{\piahelpitem}[1]{
    4348$\square$ \hspace{3mm} {\bf \Large #1 } \index{#1} (Help item)
    4449}
     50
     51\newcommand{\menubar}[1]{\hspace{1mm} \framebox{\it MenuBar::#1} \hspace{1mm}}
    4552
    4653\newcommand{\myppageref}[1]{ (p. \pageref{#1} ) }
     
    6572\vspace{1cm}
    6673\begin{center}
    67 {\bf \Large piapp Version: 3.985 (V\_Mai2005) }
     74{\bf \Large piapp Version: 4.0 (V\_Jul2006) }
    6875\end{center}
    6976\titrebp{5}
     
    7986{\bf piapp} (or {\bf spiapp}) is an interactive data analysis
    8087and visualization  program. It is based on the {\bf PI} GUI library
    81 and the {\bf SOPHYA}
    82 (or {\bf PEIDA++}) C++ data analysis class library
    83 \footnote{see http://www.sophya.org}.
    84 This document contains an overview of piapp possibilities as well as
    85 a copy of the on-line help (accessible through the menu {\tt File/Help}).
    86 Once the SOPHYA/piapp (or PEIDA++/piapp) environment
    87 \footnote{ The environment variables {\tt SOPHYABASEREP} (or {\tt EROSBASEREP}),
    88 {\tt SOPHYACXX} (compiler selector), the shared library path
    89 {\tt LD\_LIBRARY\_PATH} and the executable search path {\tt PATH} must
    90 be defined}
    91 has been initialized, {\bf piapp} can simply be started on the command
    92 line. {\tt (s)piapp -h} provides a brief help of the command line
     88and the {\bf SOPHYA} \footnote{see http://www.sophya.org}
     89(or {\bf PEIDA++} \footnote{PEIDA++ has been used in EROS software.
     90(http://eros.in2p3.fr). It is not maintained anymore.})
     91C++ data analysis class library.
     92\par
     93{\bf piapp} is a powerful command oriented tool for visualising and analysing data.
     94Its main features are summarised below:
     95\begin{itemize}
     96\item[\rond] Image, multiple 2D and few 3D representations
     97\item[\rond] Highly interactive graphics, with postscript as export format
     98\item[\rond] Capability to handle large data sets. Data can be imported and
     99exported in different formats: ASCII, PPF and FITS.
     100\item[\rond] Interactive analysis: 2D/3D distributions, histograms, FFT \ldots
     101\item[\rond] Flexible c-shell inspired command interpreter.
     102\item[\rond] Possibility to perform more complex operations in C++, on objects
     103managed by the application through the on-the-fly compilation and execution
     104of c++ code fragments in piapp.
     105\item[\rond] piapp is a multi-threaded program with separate threads for graphics
     106and command execution, ensuring interactive response, even while heavy
     107computation is being performed. In addition, thread safe commands can be executed
     108in separate threads, for taking advantage of multi CPU (or CPU-cores) workstations.
     109\item[\rond] The application can be easily extended through modules which can be
     110loaded at run time. 
     111\end{itemize}
     112%%%
     113\vspace*{5mm}
     114\par
     115 {\bf piapp} can simply be started on the command line in a terminal window
     116once the SOPHYA/piapp  environment has been initialised.
     117The environment variables {\tt SOPHYABASE} should contain the directory
     118where SOPHYA/piapp has been installed. the shared library path
     119{\tt LD\_LIBRARY\_PATH} must contain {\tt \$SOPHYABASE /slb} and the
     120current directory {\tt .} and the executable search path {\tt PATH} must
     121contain {\tt \$SOPHYABASE /exe}. Refer to the SOPHYA overview manual
     122for more information on SOPHYA directory structure. \\
     123It might also be necessary to define the environment variable
     124{\bf PIXKBMOMASK}, used by the libPI.a to map correctly
     125the {\tt <Alt>} key with some X servers (in particular with
     126X11 on MacOS X). \\
     127{\tt csh> setenv PIXKBMODMASK 2 }
     128\par
     129{\tt (s)piapp -h} provides a brief help of the command line
    93130arguments. Xtoolkit options can also be specified as command line
    94 arguments.
     131arguments. {\bf spiapp} is the name of SOPHYA/piapp executable,
     132in order to distinguish it from PEIDA/piapp.
    95133\begin{verbatim}
    96134csh> spiapp -h
    97  PIOPersist::Initialize() Starting Sophya Persistence management service
    98 SOPHYA Version  1.3 Revision 76 (V_Jun2002) -- Jul 31 2002 12:26:37 cxx
    99 
    100  piapp: Interactive data analysis and visualisation program
    101  Usage: piapp [-nored] [-nosig] [-nosigfpe] [-nosigsegv] [-hidezswin]
    102               [-tmpdir TmpDirectory] [-help2tex] [-exec file [args]]
    103   -nored : NoRedirect StdOut/StdErr
    104   -nosig : Don't catch SigFPE, SigSEGV
    105   -nosigfpe -nosigsegv: Don t catch SigFPE / SigSEGV
    106   -hidezswin : Hide Zoom/Stat/ColMap window
    107   -tmpdir TmpDirectory: defines TMDIR for temporary files
     135 SophyaInitiator::SophyaInitiator() BaseTools Init
     136 PIOPersist::Initialize() Starting Sophya Persistence management service
     137SOPHYA Version  2.0 Revision 0 (V_Jul2006) -- Jul 18 2006 12:35:58 gcc 3.3 20030304 (Apple Computer, Inc. build 1495)
     138
     139 piapp: Interactive data analysis and visualisation program
     140 Usage: piapp [-nored] [-termread] [-term] [-hidezswin] [-small]
     141              [-nosig] [-nosigfpe] [-nosigsegv]
     142              [-tmpdir TmpDirectory] [-help2tex] [-exec file [args]]
     143  -nored : Don't redirect stdout/stderr to piapp console
     144  -termread : Read commands on terminal (stdin)
     145  -term : equivalent to -nored -termread -small
     146  -hidezswin : Hide Zoom/Stat/ColMap window
     147  -small : Create small size main piapp window
     148  -nosig : Don't catch SigFPE, SigSEGV
     149  -nosigfpe -nosigsegv: Don t catch SigFPE / SigSEGV
     150  -tmpdir TmpDirectory: defines TMDIR for temporary files
    108151  -help2tex: Create a LaTeX help file (piahelp.tex)
    109   -exec file [args] : Execute command file
     152  -exec file [args] : Execute command file (last option)
    110153\end{verbatim}
    111 Once {\bf piapp} is started, a main window, containing the menu bar,
    112 an upper part containing the zoom and colormap window for
    113 image displays, memory and CPU usage and a terminal like
    114 window in the lower part appears. The figure \ref{figmainwin}
     154Once {\bf piapp} is started, the main piapp window appears.
     155It contains the menu bar, an upper part with the zoom and colormap
     156widgets for  image displays, memory and CPU usage and a terminal like
     157widget (piapp console, see {\bf PIConsole} \myppageref{PIConsole})
     158in the lower part. The figure \ref{figmainwin}
    115159shows an image of the piapp main window.
    116 \begin{verbatim}
    117 csh> spiapp
    118  PIOPersist::Initialize() Starting Sophya Persistence management service
    119 SOPHYA Version  1.3 Revision 76 (V_Jun2002) -- Jul 31 2002 12:26:37 cxx
    120 >>>>> Starting piapp <<<<<
    121 SOPHYA Version  1.3 Revision 76 (V_Jun2002) -- Jul 31 2002 12:26:37 cxx
    122 Version: piapp=3.55  PI=3.8  SOPHYA=1.376
    123  --piapp: Creating Tmp Directory: ./PIATmp_aadrPa/
    124  PIColorMap::PIColorMap(CMapId id) Allocating ColorMap Grey32 ...
    125  PIColorMap::PIColorMap(CMapId id) Allocating ColorMap InvGrey32 ...
    126  PIColorMap::PIColorMap(CMapId id) Allocating ColorMap ColRJ32 ...
    127  registration of contour commands
    128  registration of flow chart commands
    129 SOPHYA Version  1.3 Revision 76 (V_Jun2002) -- Jul 31 2002 12:26:37 cxx
    130   NamedObjMgr::SetTmpDir()+XNTuple::SetSwapPath() ./PIATmp_aadrPa/
    131 \end{verbatim}
    132 
    133 C++ code can be executed within the piapp application, easing the
    134 development and analysis task.
    135 piapp can handle input data in different formats:
    136 \begin{itemize}
    137 \item[\bul] ASCII files (see {\tt ntfrascii} \myppageref{ntfrascii} and
    138 {\tt newnt} \myppageref{newnt} command)
    139 \item[\bul] FITS format files, through menu {\bf File/Open-Fits}.
    140 (see also (see {\tt openfits} \myppageref{openfits}) command.
    141 \item[\bul] PPF (Portable Persistence file Format) files through
    142 menu {\bf File/Open-PPF}. PPF files are the native persistence
    143 format in Sophya (or PEIDA++).
    144 \end{itemize}
    145 
    146 The next sections present a quick tour of {\bf piapp}.
     160{\tt stdout/cout, stderr/cerr} are redirected to the piapp console and
     161commands can be entered in this widget. It is also possible to keep
     162the terminal where piapp was started  for {\tt stdout/stderr} (flag {\tt -nored}).
     163It is also possible to have a command reader on  the terminal
     164({\tt stdin}), using the flag {\tt -term}. \\[1mm]
     165%
     166{\bf Warning:} The output redirection uses unix pipes. On Linux, with commands
     167producing long outputs, the application may block because of incorrect management
     168of pipes. If this happens, use piapp with  {\tt -nored} flag.
     169
     170\par
     171In section 2, we present  a quick tour of {\bf piapp}. 
     172a brief overview of piapp graphics, supported data formats, interactive
     173analysis possibilities, the command interpreter and c++ execution
     174are presented in the following sections.
     175Section \ref{piappcmdref} contains a brief description of all piapp commands
     176and help items. Various interactive control windows are described in appendix.
    147177
    148178\vspace*{10mm}
     
    158188\newpage
    159189\section{A Tour of piapp}
     190\subsection{Interacting with piapp, getting help}
     191Users interact with piapp through commands entered in the piapp-console
     192(or the unix terminal), and through the different menus.
     193Some of the possibilities of the piapp-console are described
     194in {\bf PIConsole} help item, in the command reference section \myppageref{PIConsole}.
     195The description
     196of the commands in available online using the help command.
     197An online help window can be displayed by \menubar{File / Help}.
     198Commands and help items are grouped in categories which can be
     199selected using the OptionMenu in the Help window.
     200\begin{verbatim}
     201Cmd> help func
     202Displays a function y=f(x) (Fills a vector with function values)   
     203 Usage: func f(x) xmin xmax [npt graphic_attributes]               
     204  Related commands: funcff func2d func2dff   
     205Cmd> func sin(x)/x 0.1 10 100 'red line=solid,2'
     206---> Graphic display of the function
     207\end{verbatim}
     208The directory {\tt DemoPIApp} contains a number of example
     209command script and sample data files.
     210
    160211\subsection{the Object Manager (NamedObjMgr)}
    161212The {\bf piapp} application is built around an object manager
     
    180231The window {\bf ObjMgr} shown in figure \ref{figobjmgrw}
    181232can be used to navigate in the memory directories and
    182 execute simple operations on objects. This window
    183 can be displayed using the menu command
    184 Menubar: {\bf Objects/ObjectManager}.
     233execute simple operations on objects. \\
     234This window can be displayed using the menu command
     235\menubar{Objects / ObjectManager}.
    185236The button \framebox{\small \bf SetCurObj} can be used to set the value
    186237of the interpreter's variable {\tt cobj} to the selected
     
    199250
    200251\subsection{command language}
    201 A basic command interpreter ({\bf piacmd}) is included in {\bf piapp} and
     252A basic command interpreter ({\bf PIACmd/Commander}) is included in {\bf piapp} and
    202253other command interpreters can be inserted in the application
    203254framework.
    204 This interpreter ({\bf piacmd} \myppageref{piacmd})
     255This interpreter ({\bf Commander} \myppageref{Commander})
    205256synthax is close to the c-shell
    206257(csh) shell script. It is possible to define and use variables
     
    264315\begin{verbatim}
    265316Cmd> c++exec c++exec Vector in(1024); \
    266 Cmd> in = RandomSequence(RandomSequence::Gaussian, 0., 1.); \
    267 Cmd> for(int kk=0; kk<in.Size(); kk++) \
    268 Cmd> in(kk) += 2*sin(kk*0.05); \
    269 Cmd> KeepObj(in);
     317...? in = RandomSequence(RandomSequence::Gaussian, 0., 1.); \
     318...? for(int kk=0; kk<in.Size(); kk++) \
     319...? in(kk) += 2*sin(kk*0.05); \
     320...? KeepObj(in);
    270321\end{verbatim}
    271322We can of course display the resulting vector:
     
    278329\begin{verbatim}
    279330Cmd> c++exec Vector out(1024); \
    280 Cmd> int w = 2; \
    281 Cmd> for(int k=w; k<in.Size()-w; k++) \
    282 Cmd>   out(k) = in(Range(k-w, k+w)).Sum()/(2.*w+1.); \
    283 Cmd> KeepObj(out);
     331...? int w = 2; \
     332...? for(int k=w; k<in.Size()-w; k++) \
     333...?   out(k) = in(Range(k-w, k+w)).Sum()/(2.*w+1.); \
     334...? KeepObj(out);
    284335\end{verbatim}
    285336
     
    333384\end{itemize}
    334385
     386%%%%%%%%%% Section 3: Graphiques
    335387\newpage
    336388\section{Interactive graphics}
     
    366418\end{itemize}
    367419
    368 
     420%%%%%%%%%%%%%%% Section 4 :   I/O
     421\newpage
     422\section{Data formats and I/O}
     423\begin{itemize}
     424\item[\bul] ASCII files (see {\tt ntfrascii} \myppageref{ntfrascii} and
     425{\tt newnt} \myppageref{newnt} command)
     426\item[\bul] FITS format files, through \menubar{File/Open-Fits}.
     427(see also (see {\tt openfits} \myppageref{openfits}) command.
     428\item[\bul] PPF (Portable Persistence file Format) files through
     429menu \menubar{File/Open-PPF}. PPF files are the native persistence
     430format in Sophya (or PEIDA++).
     431\end{itemize}
     432
     433%%%%%%%%%%%%%%% Section 5 :   analyse a la paw
     434\newpage
     435\section{Tables and interactive analysis}
     436
     437%%%%%%%%%%%%%%% Section 6 :  command interpreter
     438\newpage
     439\section{Command interpreter}
     440piapp uses the class {\bf PIACmd} which extends slightly the
     441SOPHYA class {\bf Commander} as the command interpreter.
     442{\bf Commander} is a  c-shell inspired, string oriented command
     443interpreter.  Although it has many limitations compared to
     444c-shell, or Tcl , it provides some interesting possibilities:
     445\begin{itemize}
     446\item Extended arithmetic operations (c-like and RPN)
     447\item Simple and vector variables
     448\item Script definition
     449\item Command execution in separate threads
     450\item Dynamic Load
     451\end{itemize}
     452
     453We describe below  the {\bf Commander} possibilities,
     454as well as the few {\bf PIACmd} extensions.
     455
     456\subsection{Variables}
     457The SOPHYA::Commander interpreter manages non typed set of variables.
     458Environment variables are also accessible through
     459the usual {\tt \$varenvname}, unless shadowed by a Commander
     460variable. All Commander variables are vector of strings, and are
     461extended as necessary.  {\tt \$varname} is the string formed by all
     462the vector elements. Except when performing arithmetic operations,
     463variables are treated  as strings.
     464\par
     465An application level set of variables is also managed
     466by Commander, through redefinition of \\
     467{\tt Commander::GetVarApp() / GetVarApp() \ldots } methods.
     468The {\bf PIACmd} in piapp redefines the {\tt GetVarApp() }
     469in order to provide an easy access to some of objects attributes or methods,
     470managed by {\bf NamedObjMgr}.
     471
     472\begin{itemize}
     473\item[\rond] {\bf Definition and initialisation of variables } 
     474\begin{verbatim}
     475# Notice that the set command has no = sign
     476Cmd> set sv StringValue
     477# Clearing/removing  of a variable : unset or clearvar
     478Cmd> unset sv
     479
     480# Definition of a multi element variable (vector type)
     481# Notice that spaces before / after '(' and ')' are mandatory
     482Cmd> set vecv ( mot1 mot2 mot3 mot4 mot5 )
     483# Arithmetic  expression : C language syntax - spaces before/after '=' are mandatory  Cmd> a = 2+3*sqrt(4)
     484# The '=' operator can also be used to initialize a variable with a string
     485Cmd> a = 'Bonjour Madame'
     486# A vector element can be specified in the left hand side
     487Cmd> vecv[2] = 'coucou'
     488# Or using an interpreter variable as index :
     489Cmd> i = 3
     490Cmd> vecv[i] = 'Ooohhh'
     491\end{verbatim}
     492
     493On the right hand side, the value of a variable should be accessed using
     494the \$ character.  \\
     495A string can be parsed  into words using {\tt  var2words}
     496\begin{verbatim}
     497Cmd> var2words varname wordvarname [separateur]
     498\end{verbatim}
     499
     500\item[\rond] {\bf Accessing variable contents } \\
     501The \$ character is used to access the content of a variable {\tt \$varname} .
     502Substitution rules :
     503The {\tt \$xxx} is replaced by the value of  variable xxx.
     504No substitution is performed for strings enclosed in simple quotes {\tt ' ... \$xxx '},
     505but substitution is done in strings enclosed in double quotes.
     506Parenthesis or brackets can be used to specify the variable name, inside a string
     507without white space: {\tt \${vname} } ou {\tt \$(vname)}.
     508\begin{verbatim}
     509Cmd> x = 'Hello'
     510Cmd> echo $x
     511# Size of a vector variable : $#vname
     512Cmd> set vx ( 111 2222 3333 444444 )
     513Cmd> echo $#vx
     514# Accessing vector elements
     515Cmd> echo $vx[0] $vx[1]
     516#  or using an interpreter variable as index :
     517Cmd> i = 2
     518Cmd> echo $vx[i]
     519# Special syntax:  $[vname] is replaced by the content
     520# of a  variable whose name is $vname
     521Cmd> zzz = 'Commander'
     522Cmd> xxx = 'zzz'
     523Cmd> echo '---> $[xxx]= '  $[xxx]
     524---> $[xxx]= Commander
     525\end{verbatim}
     526
     527\par
     528When brackets are used, the priority level between interpreter variables
     529and application level variable is changed. If vname exist at the application level,
     530{\tt \${vname} }  is replaced by its value, even if an interpreter variable with the
     531same name has been defined. For some classes managed by NamedObjMgr,
     532PIACmd provide acces to some of the attributes of the object by
     533{\tt \${objname.attname} }. This mechanism has been implemented in particular for
     534TArrays, TMatrix/TVector, Histograms, NTuples and DataTables.
     535\par
     536Environment variables can simply be accessed by {\tt \$varenvname}.
     537However, env. variables have the lowest priority.
     538Interpreter's variables have the highest priority in the substitution, followed
     539by the application level variables.
     540
     541\item[\rond] {\bf Special variables }
     542\begin{itemize}
     543\item {\tt \$retval} ou {\tt \$retstr}  :  the string specified in the last {\bf return} statement
     544\item {\tt \$status} : Return code from the last executed command.
     545Arguments of scripts (see below) or file executed through {\bf exec} command.
     546\item {\tt \$\# } : number of arguments, except \$0
     547\item {\tt \$0}  : Script or file name 
     548\item {\tt \$1 \$2 \$3} ....  : Arguments  (for scripts and .pic files (exec))
     549\end{itemize}
     550\end{itemize}
     551 
     552\subsection{Control structures}
     553
     554\begin{itemize}
     555\item[\rond] Enumerated loop:
     556\begin{verbatim}
     557foreach f ( w1 w2 w3 ... )
     558  ...
     559  echo $f
     560end
     561\end{verbatim}
     562
     563Note that spaces before/after  '(' et and  ')' are mandatory.
     564An alternative form uses a vector variable name :
     565\begin{verbatim}
     566foreach v vecname
     567  ...
     568  echo $v
     569end
     570\end{verbatim}
     571
     572\item[\rond] Integer type loop:
     573\begin{verbatim}
     574for i  startInt:endInt[:stepInt]
     575  ....
     576  echo $i
     577end
     578\end{verbatim}
     579
     580\item[\rond] Integer type loop:
     581\begin{verbatim}
     582for f  startFloat:endFloat[:stepFloat]
     583  ....
     584  echo $f
     585end
     586\end{verbatim}
     587
     588\item[\rond] Loop over lines of a file
     589\begin{verbatim}
     590forinfile line FileName
     591  ...
     592  echo $line
     593end
     594\end{verbatim}
     595
     596\item[\rond] The {\tt break} instruction can be used to exit from a loop
     597
     598\item[\rond] {\bf if then else} Conditional execution:
     599\begin{verbatim}
     600if ( test ) then
     601endif
     602
     603if ( test ) then
     604 ....
     605else
     606 ....
     607endif
     608\end{verbatim}
     609Note that spaces before/after  '(' et and  ')' are mandatory.
     610
     611test is in the form {\tt a == b} OR {\tt a != b} OR {\tt a < b}  OR {\tt a > b}
     612OR {\tt a <= b} OR {\tt a >= b}. Comparison operators should be delimited
     613by spaces.
     614{\tt ==} et {\tt !=}  make a string comparison, while
     615{\tt < , > , <= , >=} compare the values obtained after string to double conversion.
     616\end{itemize}
     617
     618\subsection{Script definition}
     619A script is a sequence of commands. It is very similar to the execution of commands
     620from a file ({\bf exec filename}). Once a script has been defined, it can be called specifying
     621specifying the script name followed by its arguments.
     622\begin{verbatim}
     623#  Script definition :
     624defscript scriptname  [description ]
     625   ....
     626endscript
     627
     628#  Executing the script
     629Cmd> scriptname arg1 arg2 arg3 ....
     630\end{verbatim}
     631
     632The {\tt return} instruction stops the execution and returns from a script, or from a command
     633file called through {\bf exec}. \\
     634The commands  {\bf listscript } and  {\bf clearscript scriptname} can be used
     635to obtain the list of already defined script, or to clear a script definition.
     636
     637\subsection{Other built-in commands}
     638\begin{itemize}
     639\item[\rond] Instruction {\bf echo } to write the line to cout/stdout
     640\item[\rond] Instruction {\bf echo2file} to write (append) the line to file ({\tt echo2file filename ....})
     641\item[\rond] Instruction {\bf sleep nsec} wait for {\tt nsec}  seconds
     642\item[\rond] Instructions {\bf timingon , timingoff , traceon , traceoff } \\
     643%
     644\item[\rond] {\bf exec filename [arg1 arg2 ... ] } to execute command from
     645the file named {\tt filename}. {\tt .pic} is the default extension for the interpreter
     646command files.
     647\item[\rond]  {\bf help} and {help keyword/commandname }
     648\item[\rond]  {\bf listvars , listcommands } to print the list of defined variables and known
     649commands
     650\item[\rond]  An alias for a command by {\bf alias aliasname 'string ' }. Alias substitution
     651occurs for the first word in a command line. {\bf  listalias} prints the list of all
     652defined aliases.
     653\item[\rond] Execution control (piapp/PIACmd extension):
     654It is possible to stop the interpreter execution in a loop, a script or
     655a command file by the {\bf stop} command, or using
     656 {\tt <Cntrl C>} in the piapp console (PIConsole) \\
     657\end{itemize}
     658
     659\subsection {Command execution in separate threads}
     660It is possible to create new threads to execute commands
     661( for non built-in interpreter commands). The syntax is similar
     662to unix shell background tasks: an {\&} should be added at the end
     663of the command line.  A new thread is then created for the
     664execution of the command, if declared as thread safe \\
     665(see {\tt CmdExecutor::IsThreadable() }.
     666\par
     667Thread management commands:
     668\begin{itemize}
     669\item[\rond] {\bf thrlist }Print current list of threads, with the associated command
     670the thread identifier (integer ThrId) and its status.
     671\item[\rond] {\bf cleanthrlist } Removes all finished threads from the list.
     672An automatic cleanup is performed periodically.
     673\item[\rond] {\bf cancelthr ThId } / {\bf killthr ThId } Stops/kills the thread with
     674the identifier ThId. Avoid using theses commands as the cleanup does
     675not release some resources associated with
     676the thread (memory, mutex \ldots).
     677\end{itemize}
     678
     679%%%%%%%%%%%%%%% Section 7 :  c++ execution
     680\newpage
     681\section{On the fly C++ execution}
     682
     683%%%%%%%%%%%%%%% Section 8 :  command reference
    369684\newpage
    370685\section{piapp command reference}
     
    372687This section contains the description of piapp commands. This information
    373688is available on-line, through the help command, or through a graphic
    374 window, accessible  through the menu {\tt File/Help}.
     689window, accessible  by \menubar{File / Help}.
    375690The help items and command are divided into different sections,
    376691where related commands are grouped. \\[10mm]
     
    381696%  La partie des appendix
    382697\appendix
    383 
    384 \newpage
    385 \section{DrawerTools} \index{DrawerTools}
     698\newpage
     699\section{Interactive control windows}
     700\subsection{DrawerTools} \index{DrawerTools}
    386701\label{secdrwtools}
    387702The {\bf PIDrawerTools}, shown in the figure \ref{figdrwtools} can be
     
    395710A given drawer can be selected through the DrawerId selector.
    396711
    397 \vspace*{10mm}
     712\vspace*{5mm}
    398713\begin{figure}[ht!]
    399714\begin{center}
     
    404719\end{figure}
    405720\newpage
    406 
    407 \newpage
    408 \section{AxesTools} \index{AxesTools}
     721%%%%
     722\subsection{AxesTools} \index{AxesTools}
    409723\label{secaxestools}
    410724The {\bf PIAxesTools}, shown in the figure \ref{figaxestools} can be used to
     
    415729the menu {\bf Tools/Show AxesTools}.
    416730
    417 \vspace*{10mm}
     731\vspace*{5mm}
    418732\begin{figure}[ht!]
    419733\begin{center}
     
    423737\end{center}
    424738\end{figure}
    425 
    426 \newpage
     739%%%%%
    427740\section{ImageTools} \index{ImageTools}
    428741\label{secimagetools}
     
    433746{\bf Tools/Show ImageTools}.
    434747
    435 \vspace*{10mm}
     748\vspace*{5mm}
    436749\begin{figure}[ht!]
    437750\begin{center}
     
    442755\end{figure}
    443756
    444 \newpage
    445 \section{Histo2DTools} \index{Histo2DTools}
     757\subsection{Histo2DTools} \index{Histo2DTools}
    446758\label{sech2dtools}
    447759The {\bf PIHisto2DTools}, shown in the figure \ref{figh2dtools} can be
     
    452764PIDrawerTools.
    453765
    454 \vspace*{10mm}
     766\vspace*{5mm}
    455767\begin{figure}[ht!]
    456768\begin{center}
     
    461773\end{figure}
    462774
    463 \newpage
    464 \section{ContourTools} \index{ContourTools}
     775\subsection{ContourTools} \index{ContourTools}
    465776\label{secconttools}
    466777The {\bf PIContourTools}, shown in the figure \ref{figconttools} can be
     
    486797by {\bf PIContourTools}.
    487798
    488 \subsection{Drawing options}
     799\subsubsection{Drawing options}
    489800The top choices in {\bf PIContourTools}
    490801concern the color map (left choice) or color (right choice) of the contours.
     
    504815
    505816
    506 \subsection{Contour options}
     817\subsubsection{Contour options}
    507818The contouring routines in {\tt spiapp} are based on a hack of the {\tt GNUPlot}
    508819routines. Contours are determined from a grid of values
Note: See TracChangeset for help on using the changeset viewer.