Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / cdf / g321x.c
1 /*
2  * $Id$
3  *
4  * $Log$
5  * Revision 1.1.1.1  1995/10/24 10:19:37  cernlib
6  * Geant
7  *
8  */
9 /*CMZ :          24/08/95  15.30.04  by  S.Ravndal*/
10 #if !defined(CERNLIB_KUIP95A)
11  
12 /*-- Author :*/
13 /*
14  * This file has been generated by the KUIP compiler.  Do NOT change it!
15  *
16  * KUIP header: 950303      Generation date: Thu Aug 24 15:18:48 1995
17  *
18  * Input file: geant321x.doc
19  */
20  
21 #if !defined(F77_LCASE) && !defined(F77_UCASE) && !defined(F77_USCORE)
22 #  if defined(__EXTENDED__) && !defined(IBM370) && !defined(_IBMR2)
23 #    define IBM370
24 #  endif
25 #  if defined(CRAY) || defined(IBM370) || defined(vms)
26 #    define F77_UCASE
27 #  else
28 #    if ( defined(apollo) || defined(__apollo) ) && defined(APOFTN)
29 #      define F77_LCASE
30 #    else
31 #      define F77_USCORE
32 #    endif
33 #  endif
34 #endif
35  
36 typedef int     IntFunc();
37 typedef char*   CharFunc();
38 typedef char** pCharFunc();
39 typedef void    SUBROUTINE();
40 #ifdef IBM370
41 #  pragma linkage(SUBROUTINE,FORTRAN)
42 #endif
43  
44 extern void klnkmenu();
45 extern void klnkbrcl();
46 extern void klnkkmcl();
47 extern void klnkicon();
48 extern void klnkbutt();
49  
50 typedef unsigned long KmPixmap; /* Pixmap from <X11/X.h>                   */
51  typedef void *KmWidget;         /* Widget from <X11/Intrinsic.h>           */
52  typedef void *KmCalldata;       /* XmAnyCallbackStruct from <Motif/Xm.h>   */
53                                  /*                                         */
54  typedef enum {                  /*                                         */
55    BRACT_OPEN = 0,               /*                                         */
56    BRACT_ROOT = 1,               /*                                         */
57    BRACT_CONT = 2,               /*                                         */
58    BRACT_GRAF = 3                /*                                         */
59  } BrActTag;                     /*                                         */
60                                  /*                                         */
61  typedef enum {                  /*                                         */
62    BrActUpdate    = 0x01,        /* browser window has to be updated ('!')  */
63    BrActSeparator = 0x02,        /* put separator in menu ('/')             */
64    BrActToggle    = 0x04,        /* register as toggle button               */
65    BrActToggleOn  = 0x08,        /* toggle state is on                      */
66    BrActSensitive = 0x10         /* button is sensitive                     */
67  } BrActFlag;                    /*                                         */
68                                  /*                                         */
69  
70 typedef struct _BrAction {      /*                                         */
71   struct _BrAction *next;       /* link to next action binding             */
72   BrActFlag   flags;            /*                                         */
73   char       *text;             /* text line in menu                       */
74   char       *user_text;        /* user text overriding CDF text (malloced)*/
75   char       *accel;            /* accelerator                             */
76   char       *exec;             /* action commands                         */
77   SUBROUTINE *call_F;           /* action routine                          */
78   IntFunc    *call_C;           /* action function                         */
79   BrActTag    tag;              /* for which window the action is defined  */
80   struct _BrClass *class;       /* pointer to BrClass in case of open menu */
81  } BrAction;                     /*                                         */
82                                  /*                                         */
83  typedef struct _BrClass {       /*                                         */
84    struct _BrClass *next;        /* link to next browsable class            */
85    char       *name;             /* unique identifier name                  */
86    char       *title;            /* title for popup menu (maybe NULL)       */
87    SUBROUTINE *scan_km_F;        /* user function scanning the directory    */
88    pCharFunc  *scan_km_C;        /* user function scanning the directory    */
89    SUBROUTINE *scan_br_F;        /* user function scanning for browsables   */
90    pCharFunc  *scan_br_C;        /* user function scanning for browsables   */
91    BrAction   *root;             /* list of actions in root window          */
92    BrAction   *open;             /* list of actions in open menu            */
93  } BrClass;                      /*                                         */
94                                  /*                                         */
95  
96 typedef struct _KmIcon {        /*                                         */
97   struct _KmIcon *next;         /* link to next icon                       */
98   char       *name;             /* unique identifier name                  */
99   int         width;            /* width of the pixmap                     */
100   int         height;           /* height of the pixmap                    */
101   char       *bitmap;           /* bitmap data                             */
102   KmPixmap    pix;              /* filled in Motif part                    */
103   KmPixmap    hi_pix;           /* high lighted pixmap                     */
104  } KmIcon;                       /*                                         */
105                                  /*                                         */
106  typedef struct _KmClass {       /*                                         */
107    struct _KmClass *next;        /* link to next object class               */
108    int         is_dir;           /* flag if class has is a directory        */
109    char       *name;             /* unique identifier name                  */
110    char       *title;            /* title for popup menu (maybe NULL)       */
111    char       *big_icon;         /* name of the big icon                    */
112    KmIcon     *bicon;            /* pointer to the big icon structure       */
113    char       *sm_icon;          /* name of the small icon                  */
114    KmIcon     *sicon;            /* pointer to the small icon structure     */
115    SUBROUTINE *user_icon_F;      /* user function to return icon bitmap     */
116    IntFunc    *user_icon_C;      /* user function to return icon bitmap     */
117    BrAction   *cont;             /* list of actions in content window       */
118    BrAction   *graf;             /* list of actions in graphics window      */
119    int         obj_count;        /* number of objects in content window     */
120  } KmClass;                      /*                                         */
121                                  /*                                         */
122  
123 typedef enum {                  /*                                         */
124   KmButtSensitive       = 0x00, /* sensitive button                        */
125   KmButtNonSensitive    = 0x01, /* non-sensitive button ('NS')             */
126   KmButtToggleSensitive = 0x02, /* toggle-sensitive button ('TS')          */
127   KmButtSensitivityMask = 0x03, /* mask for sensitivity type               */
128   KmButtSeparator       = 0x04, /* put separator in menu ('/')             */
129   KmButtBrowser         = 0x08  /* button is in main browser ('BR')        */
130  } KmButtFlag;                   /*                                         */
131                                  /*                                         */
132  typedef struct _KmButton {      /*                                         */
133    struct _KmButton *next;       /* button label or menu item               */
134    char       *menu;             /* menu name or NULL for buttons           */
135    char       *label;            /* button label or menu item               */
136    SUBROUTINE *call_F;           /* callback routine (FORTRAN)              */
137    IntFunc    *call_C;           /* callback routine (C)                    */
138    char       *action;           /* name of callback routine                */
139    char       *mnemo;            /* button mnemonic                         */
140    char       *accel;            /* button accelerator                      */
141    char       *accel_text;       /* button accelerator text                 */
142    KmButtFlag  flags;            /* sensitivity type etc.                   */
143    KmWidget    widget;           /* Motif widget ID                         */
144  } KmButton;                     /*                                         */
145                                  /*                                         */
146  
147 extern struct {                        /*
148     */   /* indirect calls to avoid linking HIGZ
149     */   IntFunc    *graf_info_C;      /* pass display, open and close
150  (ixmotif)  */   SUBROUTINE *graf_size_F;      /* resize window (IGRSIZ)
151             */   SUBROUTINE *graf_pick_F;      /* identifying graphics objects
152  (IGOBJ)    */   SUBROUTINE *graf_attr_F;      /* set attributes (IGSET)
153             */   SUBROUTINE *graf_close_F;     /* close workstation (ICLWK)
154             */   /* optional routines for Motif customization
155             */   pCharFunc  *user_FallBk_C;    /* get application fallbacks
156             */   IntFunc    *user_TopWid_C;    /* pass toplevel widget
157  identifiers        */ } klnkaddr;                     /*
158                     */
159  
160 typedef enum {                  /*                                         */
161   KmFLAG_FORGET = 0x01,         /* last value is not kept for Motif panels */
162   KmFLAG_MINUS  = 0x02,         /* -VALUE is not an abbrev for CHOPT=VALUE */
163   KmFLAG_QUOTE  = 0x04,         /* do not remove quotes                    */
164   KmFLAG_VARARG = 0x08,         /* append additional args to this param.   */
165   KmFLAG_CONST  = 0x10,         /* do not allow to assign a value          */
166   KmFLAG_HIDDEN = 0x20,         /* do not show in menus                    */
167   KmFLAG_SEPARATE = 0x40        /* treat arguments as separate tokens      */
168  } KmParFlag;                    /*                                         */
169                                  /*                                         */
170  typedef enum {                  /*                                         */
171    KmTYPE_CHAR   = 'C',          /* character string                        */
172    KmTYPE_FILE   = 'F',          /* file name                               */
173    KmTYPE_INT    = 'I',          /* integer                                 */
174    KmTYPE_OPTION = 'O',          /* option                                  */
175    KmTYPE_REAL   = 'R'           /* real                                    */
176  } KmParType;                    /*                                         */
177                                  /*                                         */
178  
179 typedef struct {                /* file name                               */
180   char         *filter_default; /* filter wildcard                         */
181   char         *filter_current; /* current filter                          */
182  } KmParFile;                    /*                                         */
183                                  /*                                         */
184  typedef struct {                /*                                         */
185    char         *range_lower;    /* lower value of range                    */
186    char         *range_upper;    /* upper value of range                    */
187    char         *slider_lower;   /* lower limit for slider                  */
188    char         *slider_upper;   /* upper limit for slider                  */
189    int           decimals;       /* number of decimals used for slider      */
190  } KmParInt;                     /*                                         */
191                                  /*                                         */
192  typedef struct {                /* option                                  */
193    char        **text;           /* explanations (parallel to range_value)  */
194    int          *mutex;          /* mutex group to which text belongs       */
195    int          *radio;          /* radio group to which text belongs       */
196  } KmParOption;                  /*                                         */
197                                  /*                                         */
198  
199 typedef KmParInt KmParReal;     /* real and int have the same fields       */
200                                 /*                                         */
201  typedef struct {                /*                                         */
202    char         *name;           /* parameter name                          */
203    int           abbrev;         /* minimum length that name is recognized  */
204    char         *prompt;         /* prompt string                           */
205    char         *dfault;         /* default value                           */
206    char         *last;           /* last value for Motif panel (malloced)   */
207    int           width;          /* width of input field                    */
208    int           range_count;    /* number of items in range_value          */
209    char        **range_value;    /* list of allowed values                  */
210    int           select_count;   /* number of items in select_count         */
211    char        **select_value;   /* list of values for selection box        */
212    KmParFlag     flags;          /* special flags                           */
213    KmParType     type;           /* parameter type                          */
214    void        *ptype;           /* structure pointer selected by type      */
215  } KmParameter;                  /*                                         */
216                                  /*                                         */
217  
218 typedef struct _KmCommand {     /*                                         */
219   struct _KmCommand *next;      /* link to next command                    */
220   char         *path;           /* command path                            */
221   char         *name;           /* command name                            */
222   int           hidden;         /* flag if command is invisible            */
223   int           level;          /* depth of submenus                       */
224   int           total;          /* total number of parameters              */
225   int           mandatory;      /* number of mandatory parameters          */
226   KmParameter **par;            /* list of total parameter descriptions    */
227   int           list_par;       /* index+1 of parameter taking a list      */
228   int           xcount;         /* count number of action calls            */
229   SUBROUTINE   *action_F;       /* action routine                          */
230   IntFunc      *action_C;       /* action routine                          */
231   SUBROUTINE   *user_help_F;    /* user help routine                       */
232   pCharFunc    *user_help_C;    /* user help routine                       */
233   int          nguidance;       /* number of lines in guidance text        */
234   char        **guidance;       /* help text                               */
235   int          nkeyword;        /* number of lines for keywords            */
236   char        **keyword;        /* list of keywords                        */
237   int          nhlink;          /* number of lines for links               */
238   char        **hlink;          /* list of links                           */
239   int           argc;           /* number of arguments entered             */
240   char        **argv;           /* argc argument values                    */
241   char         *argline;        /* argument line as entered                */
242   int          *argoffs;        /* argc offsets into argline for KUGETE    */
243  } KmCommand;                    /*                                         */
244                                  /*                                         */
245  
246 typedef struct _KmMenu {        /*                                         */
247   struct _KmMenu *next;         /* link to next menu                       */
248   struct _KmMenu *down;         /* link to submenu                         */
249   char         *path;           /* path of parent menu                     */
250   char         *name;           /* menu name                               */
251   int           level;          /* depth of submenus                       */
252   KmCommand    *cmds;           /* link to first command                   */
253   int          nguidance;       /* number of lines in guidance text        */
254   char        **guidance;       /* help text                               */
255   int          nkeyword;        /* number of lines for keywords            */
256   char        **keyword;        /* list of keywords                        */
257   int          nhlink;          /* number of lines for links               */
258   char        **hlink;          /* list of links                           */
259  } KmMenu;                       /*                                         */
260                                  /*                                         */
261  extern void klnkbrcl();         /*                                         */
262  extern void klnkicon();         /*                                         */
263  extern void klnkkmcl();         /*                                         */
264  extern void klnkmenu();         /*                                         */
265                                  /*                                         */
266  
267 #ifdef F77_LCASE
268 #  define gkdraw_ gkdraw
269 #  define gxdraw_ gxdraw
270 #  define gxpick_ gxpick
271 #endif
272  
273 #ifdef F77_UCASE
274 #  define gkdraw_ GKDRAW
275 #  define gxdraw_ GXDRAW
276 #  define gxpick_ GXPICK
277 #endif
278  
279 #ifdef IBM370
280 #  pragma linkage(GKDRAW,FORTRAN)
281 #  pragma linkage(GXDRAW,FORTRAN)
282 #  pragma linkage(GXPICK,FORTRAN)
283 #endif
284  
285 extern void gkdraw_();
286 extern void gxdraw_();
287 extern void gxpick_();
288  
289 void gkdraw_()
290 {
291  
292 static KmParReal   _GEANT_CVOL_VALCUT_XCUT_type = { (char*)0, (char*)0,
293  (char*)0, (char*)0, 0 };
294 static KmParameter _GEANT_CVOL_VALCUT_XCUT = { "XCUT", 4,
295  "x coordinate of cutted value", "0.", (char*)0, 12, 0, (char**)0, 0,
296  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_CVOL_VALCUT_XCUT_type };
297 static KmParReal   _GEANT_CVOL_VALCUT_YCUT_type = { (char*)0, (char*)0,
298  (char*)0, (char*)0, 0 };
299 static KmParameter _GEANT_CVOL_VALCUT_YCUT = { "YCUT", 4,
300  "y coordinate of cutted value", "0.", (char*)0, 12, 0, (char**)0, 0,
301  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_CVOL_VALCUT_YCUT_type };
302 static KmParReal   _GEANT_CVOL_VALCUT_ZCUT_type = { (char*)0, (char*)0,
303  (char*)0, (char*)0, 0 };
304 static KmParameter _GEANT_CVOL_VALCUT_ZCUT = { "ZCUT", 4,
305  "z coordinate of cutted value", "0.", (char*)0, 12, 0, (char**)0, 0,
306  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_CVOL_VALCUT_ZCUT_type };
307 static KmParameter *_GEANT_CVOL_VALCUT_parameters[] = {
308  &_GEANT_CVOL_VALCUT_XCUT, &_GEANT_CVOL_VALCUT_YCUT, &_GEANT_CVOL_VALCUT_ZCUT
309  };
310 static char *_GEANT_CVOL_VALCUT_guidance[] = {
311  "It allows the cutting in the ray-tracing. All the volumes are cutted",
312  "from XCUT to +BIG along the x axis, from YCUT to +BIG along the y axis",
313  "and from ZCUT to +BIG along the z axis." };
314 static KmCommand _GEANT_CVOL_VALCUT = {  (KmCommand*)0, "/GEANT/CVOL/VALCUT",
315  "VALCUT", 0, 2, 3, 3, _GEANT_CVOL_VALCUT_parameters, 0, 0, gxdraw_,
316  (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3, _GEANT_CVOL_VALCUT_guidance,
317  0, (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
318  
319 static KmParameter _GEANT_CVOL_SPHE_CNVV = { "CNVV", 4,
320  " Name of volume to be clipped          ", "*   ", (char*)0, 20, 0,
321  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
322 static KmParReal   _GEANT_CVOL_SPHE_RMAX_type = { (char*)0, (char*)0,
323  (char*)0, (char*)0, 0 };
324 static KmParameter _GEANT_CVOL_SPHE_RMAX = { "RMAX", 4,
325  " External radius of sphere             ", "0.1", (char*)0, 12, 0, (char**)0,
326  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_CVOL_SPHE_RMAX_type };
327 static KmParReal   _GEANT_CVOL_SPHE_XMED_type = { (char*)0, (char*)0,
328  (char*)0, (char*)0, 0 };
329 static KmParameter _GEANT_CVOL_SPHE_XMED = { "XMED", 4,
330  " Center X coordinate                   ", "-10000.", (char*)0, 12, 0,
331  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
332  &_GEANT_CVOL_SPHE_XMED_type };
333 static KmParReal   _GEANT_CVOL_SPHE_YMED_type = { (char*)0, (char*)0,
334  (char*)0, (char*)0, 0 };
335 static KmParameter _GEANT_CVOL_SPHE_YMED = { "YMED", 4,
336  " Center Y coordinate                   ", "-10000.", (char*)0, 12, 0,
337  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
338  &_GEANT_CVOL_SPHE_YMED_type };
339 static KmParReal   _GEANT_CVOL_SPHE_ZMED_type = { (char*)0, (char*)0,
340  (char*)0, (char*)0, 0 };
341 static KmParameter _GEANT_CVOL_SPHE_ZMED = { "ZMED", 4,
342  " Center Z coordinate                   ", "-10000.", (char*)0, 12, 0,
343  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
344  &_GEANT_CVOL_SPHE_ZMED_type };
345 static KmParameter *_GEANT_CVOL_SPHE_parameters[] = { &_GEANT_CVOL_SPHE_CNVV,
346  &_GEANT_CVOL_SPHE_RMAX, &_GEANT_CVOL_SPHE_XMED, &_GEANT_CVOL_SPHE_YMED,
347  &_GEANT_CVOL_SPHE_ZMED };
348 static char *_GEANT_CVOL_SPHE_guidance[] = {
349  "This command performs a boolean subtraction between the volume",
350  "CNVV and a sphere; the sphere has the given parameters and is placed in",
351  "the MARS according to the given coordinates of its center.",
352  "See also CVOL. The following commands clip by a sphere,",
353  "positioned according to the given parameters, the volume specified",
354  "by NAME (a valid string for the NAME of the volume",
355  "can be found using the DTREE command).", "EXAMPLE -", " dopt hide on",
356  " satt * seen -2", " draw NAME 40 40 0 10 10 .01 .01", " next",
357  " sphe * 500 0 0 500", " draw NAME 40 40 0 10 10 .01 .01", " box ." };
358 static KmCommand _GEANT_CVOL_SPHE = { &_GEANT_CVOL_VALCUT, "/GEANT/CVOL/SPHE",
359  "SPHE", 0, 2, 5, 1, _GEANT_CVOL_SPHE_parameters, 0, 0, gxdraw_, (IntFunc*)0,
360  (SUBROUTINE*)0, (pCharFunc*)0, 15, _GEANT_CVOL_SPHE_guidance, 0, (char**)0,
361  0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
362  
363 static KmParameter _GEANT_CVOL_CONE_CNVV = { "CNVV", 4,
364  " Name of volume to be clipped          ", "*   ", (char*)0, 20, 0,
365  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
366 static KmParReal   _GEANT_CVOL_CONE_RMAX1_type = { (char*)0, (char*)0,
367  (char*)0, (char*)0, 0 };
368 static KmParameter _GEANT_CVOL_CONE_RMAX1 = { "RMAX1", 5,
369  " Min external radius                   ", "0.1", (char*)0, 12, 0, (char**)0,
370  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_CVOL_CONE_RMAX1_type };
371 static KmParReal   _GEANT_CVOL_CONE_RMAX2_type = { (char*)0, (char*)0,
372  (char*)0, (char*)0, 0 };
373 static KmParameter _GEANT_CVOL_CONE_RMAX2 = { "RMAX2", 5,
374  " Max external radius                   ", "0.1", (char*)0, 12, 0, (char**)0,
375  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_CVOL_CONE_RMAX2_type };
376 static KmParReal   _GEANT_CVOL_CONE_ZDEM_type = { (char*)0, (char*)0,
377  (char*)0, (char*)0, 0 };
378 static KmParameter _GEANT_CVOL_CONE_ZDEM = { "ZDEM", 4,
379  " Half length of cone axis              ", "0.1", (char*)0, 12, 0, (char**)0,
380  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_CVOL_CONE_ZDEM_type };
381 static KmParReal   _GEANT_CVOL_CONE_XMED_type = { (char*)0, (char*)0,
382  (char*)0, (char*)0, 0 };
383 static KmParameter _GEANT_CVOL_CONE_XMED = { "XMED", 4,
384  " Center X coordinate                   ", "-10000.", (char*)0, 12, 0,
385  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
386  &_GEANT_CVOL_CONE_XMED_type };
387 static KmParReal   _GEANT_CVOL_CONE_YMED_type = { (char*)0, (char*)0,
388  (char*)0, (char*)0, 0 };
389 static KmParameter _GEANT_CVOL_CONE_YMED = { "YMED", 4,
390  " Center Y coordinate                   ", "-10000.", (char*)0, 12, 0,
391  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
392  &_GEANT_CVOL_CONE_YMED_type };
393 static KmParReal   _GEANT_CVOL_CONE_ZMED_type = { (char*)0, (char*)0,
394  (char*)0, (char*)0, 0 };
395 static KmParameter _GEANT_CVOL_CONE_ZMED = { "ZMED", 4,
396  " Center Z coordinate                   ", "-10000.", (char*)0, 12, 0,
397  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
398  &_GEANT_CVOL_CONE_ZMED_type };
399 static KmParameter *_GEANT_CVOL_CONE_parameters[] = { &_GEANT_CVOL_CONE_CNVV,
400  &_GEANT_CVOL_CONE_RMAX1, &_GEANT_CVOL_CONE_RMAX2, &_GEANT_CVOL_CONE_ZDEM,
401  &_GEANT_CVOL_CONE_XMED, &_GEANT_CVOL_CONE_YMED, &_GEANT_CVOL_CONE_ZMED };
402 static char *_GEANT_CVOL_CONE_guidance[] = {
403  "This command performs a boolean subtraction between the volume",
404  "CNVV and a cone; the cone has the given parameters and is placed in",
405  "the MARS according to the given coordinates of its center.",
406  "See also CVOL.", "The following commands will clip by a cone,",
407  "positioned according the given parameters, the volume specified",
408  "by NAME (a valid string for the NAME of the volume",
409  "can be found using the DTREE command).", " EXAMPLE -", " dopt hide on",
410  " satt * seen -2", " draw NAME 40 40 0 10 10 .01 .01", " next",
411  " cone * 1 750 1000 0 0 1000", " draw NAME 40 40 0 10 10 .01 .01", " box ." };
412 static KmCommand _GEANT_CVOL_CONE = { &_GEANT_CVOL_SPHE, "/GEANT/CVOL/CONE",
413  "CONE", 0, 2, 7, 1, _GEANT_CVOL_CONE_parameters, 0, 0, gxdraw_, (IntFunc*)0,
414  (SUBROUTINE*)0, (pCharFunc*)0, 16, _GEANT_CVOL_CONE_guidance, 0, (char**)0,
415  0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
416  
417 static KmParameter _GEANT_CVOL_TUBE_CNVV = { "CNVV", 4,
418  " Name of volume to be clipped          ", "*   ", (char*)0, 20, 0,
419  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
420 static KmParReal   _GEANT_CVOL_TUBE_RMAX_type = { (char*)0, (char*)0,
421  (char*)0, (char*)0, 0 };
422 static KmParameter _GEANT_CVOL_TUBE_RMAX = { "RMAX", 4,
423  " External radius of tube               ", "0.1", (char*)0, 12, 0, (char**)0,
424  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_CVOL_TUBE_RMAX_type };
425 static KmParReal   _GEANT_CVOL_TUBE_ZDEM_type = { (char*)0, (char*)0,
426  (char*)0, (char*)0, 0 };
427 static KmParameter _GEANT_CVOL_TUBE_ZDEM = { "ZDEM", 4,
428  " Half length of tube axis              ", "0.1", (char*)0, 12, 0, (char**)0,
429  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_CVOL_TUBE_ZDEM_type };
430 static KmParReal   _GEANT_CVOL_TUBE_XMED_type = { (char*)0, (char*)0,
431  (char*)0, (char*)0, 0 };
432 static KmParameter _GEANT_CVOL_TUBE_XMED = { "XMED", 4,
433  " Center X coordinate                   ", "-10000.", (char*)0, 12, 0,
434  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
435  &_GEANT_CVOL_TUBE_XMED_type };
436 static KmParReal   _GEANT_CVOL_TUBE_YMED_type = { (char*)0, (char*)0,
437  (char*)0, (char*)0, 0 };
438 static KmParameter _GEANT_CVOL_TUBE_YMED = { "YMED", 4,
439  " Center Y coordinate                   ", "-10000.", (char*)0, 12, 0,
440  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
441  &_GEANT_CVOL_TUBE_YMED_type };
442 static KmParReal   _GEANT_CVOL_TUBE_ZMED_type = { (char*)0, (char*)0,
443  (char*)0, (char*)0, 0 };
444 static KmParameter _GEANT_CVOL_TUBE_ZMED = { "ZMED", 4,
445  " Center Z coordinate                   ", "-10000.", (char*)0, 12, 0,
446  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
447  &_GEANT_CVOL_TUBE_ZMED_type };
448 static KmParameter *_GEANT_CVOL_TUBE_parameters[] = { &_GEANT_CVOL_TUBE_CNVV,
449  &_GEANT_CVOL_TUBE_RMAX, &_GEANT_CVOL_TUBE_ZDEM, &_GEANT_CVOL_TUBE_XMED,
450  &_GEANT_CVOL_TUBE_YMED, &_GEANT_CVOL_TUBE_ZMED };
451 static char *_GEANT_CVOL_TUBE_guidance[] = {
452  "This command performs a boolean subtraction between the volume",
453  "CNVV and a tube; the tube has the given parameters and is placed in",
454  "the MARS according the given coordinates of its center.", "See also CVOL.",
455  "The following commands will clip, by a tube,",
456  "positioned according to the given parameters, the volume specified",
457  "by NAME (a valid string for the NAME of the volume",
458  "can be found using the DTREE command).", " EXAMPLE -", " dopt hide on",
459  " satt * seen -2", " draw NAME 40 40 0 10 10 .01 .01", " next",
460  " tube * 500 1000 500 0 0", " draw NAME 40 40 0 10 10 .01 .01", " box ." };
461 static KmCommand _GEANT_CVOL_TUBE = { &_GEANT_CVOL_CONE, "/GEANT/CVOL/TUBE",
462  "TUBE", 0, 2, 6, 1, _GEANT_CVOL_TUBE_parameters, 0, 0, gxdraw_, (IntFunc*)0,
463  (SUBROUTINE*)0, (pCharFunc*)0, 16, _GEANT_CVOL_TUBE_guidance, 0, (char**)0,
464  0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
465  
466 static KmParameter _GEANT_CVOL_BOX_CNNV = { "CNNV", 4,
467  " Name of volume to be clipped          ", "*   ", (char*)0, 20, 0,
468  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
469 static KmParReal   _GEANT_CVOL_BOX_XMIN_type = { (char*)0, (char*)0, (char*)0,
470  (char*)0, 0 };
471 static KmParameter _GEANT_CVOL_BOX_XMIN = { "XMIN", 4,
472  " Lower limit of the Shape X coordinate ", "-10000.", (char*)0, 12, 0,
473  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
474  &_GEANT_CVOL_BOX_XMIN_type };
475 static KmParReal   _GEANT_CVOL_BOX_XMAX_type = { (char*)0, (char*)0, (char*)0,
476  (char*)0, 0 };
477 static KmParameter _GEANT_CVOL_BOX_XMAX = { "XMAX", 4,
478  " Upper limit of the Shape X coordinate ", "-9999.", (char*)0, 12, 0,
479  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
480  &_GEANT_CVOL_BOX_XMAX_type };
481 static KmParReal   _GEANT_CVOL_BOX_YMIN_type = { (char*)0, (char*)0, (char*)0,
482  (char*)0, 0 };
483 static KmParameter _GEANT_CVOL_BOX_YMIN = { "YMIN", 4,
484  " Lower limit of the Shape Y coordinate ", "-10000.", (char*)0, 12, 0,
485  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
486  &_GEANT_CVOL_BOX_YMIN_type };
487 static KmParReal   _GEANT_CVOL_BOX_YMAX_type = { (char*)0, (char*)0, (char*)0,
488  (char*)0, 0 };
489 static KmParameter _GEANT_CVOL_BOX_YMAX = { "YMAX", 4,
490  " Upper limit of the Shape Y coordinate ", "-9999.", (char*)0, 12, 0,
491  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
492  &_GEANT_CVOL_BOX_YMAX_type };
493 static KmParReal   _GEANT_CVOL_BOX_ZMIN_type = { (char*)0, (char*)0, (char*)0,
494  (char*)0, 0 };
495 static KmParameter _GEANT_CVOL_BOX_ZMIN = { "ZMIN", 4,
496  " Lower limit of the Shape Z coordinate ", "-10000.", (char*)0, 12, 0,
497  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
498  &_GEANT_CVOL_BOX_ZMIN_type };
499 static KmParReal   _GEANT_CVOL_BOX_ZMAX_type = { (char*)0, (char*)0, (char*)0,
500  (char*)0, 0 };
501 static KmParameter _GEANT_CVOL_BOX_ZMAX = { "ZMAX", 4,
502  " Upper limit of the Shape Z coordinate ", "-9999.", (char*)0, 12, 0,
503  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
504  &_GEANT_CVOL_BOX_ZMAX_type };
505 static KmParameter *_GEANT_CVOL_BOX_parameters[] = { &_GEANT_CVOL_BOX_CNNV,
506  &_GEANT_CVOL_BOX_XMIN, &_GEANT_CVOL_BOX_XMAX, &_GEANT_CVOL_BOX_YMIN,
507  &_GEANT_CVOL_BOX_YMAX, &_GEANT_CVOL_BOX_ZMIN, &_GEANT_CVOL_BOX_ZMAX };
508 static char *_GEANT_CVOL_BOX_guidance[] = {
509  "This command performs a boolean subtraction between the volume",
510  "CNVV and a box placed in the MARS according the values of the given",
511  "coordinates. See also CVOL.", "The following commands will clip by a box,",
512  "with a vertex at the origin, the volume specified by NAME (a valid",
513  "string for the NAME of the volume can be found using the DTREE command).",
514  " EXAMPLE -", " dopt hide on", " satt * seen -2",
515  " draw NAME 40 40 0 10 10 .01 .01", " next",
516  " box NAME 0 1000 0 1000 0 1000", " draw NAME 40 40 0 10 10 .01 .01",
517  " box ." };
518 static KmCommand _GEANT_CVOL_BOX = { &_GEANT_CVOL_TUBE, "/GEANT/CVOL/BOX",
519  "BOX", 0, 2, 7, 1, _GEANT_CVOL_BOX_parameters, 0, 0, gxdraw_, (IntFunc*)0,
520  (SUBROUTINE*)0, (pCharFunc*)0, 14, _GEANT_CVOL_BOX_guidance, 0, (char**)0, 0,
521  (char**)0, 0, (char**)0, (char*)0, (int*)0 };
522  
523 static KmParameter _GEANT_DRAWING_DUVIEW_NAME = { "NAME", 4, "Detector name",
524  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
525  KmTYPE_CHAR,  (void*)0 };
526 static KmParameter _GEANT_DRAWING_DUVIEW_TYPE = { "TYPE", 4, "View name",
527  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
528  KmTYPE_CHAR,  (void*)0 };
529 static KmParameter _GEANT_DRAWING_DUVIEW_CPXTYP = { "CPXTYP", 6,
530  "Complexity name", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
531  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
532 static KmParInt    _GEANT_DRAWING_DUVIEW_IVIEW_type = { (char*)0, (char*)0,
533  (char*)0, (char*)0, 0 };
534 static KmParameter _GEANT_DRAWING_DUVIEW_IVIEW = { "IVIEW", 5,
535  "View number where picture is stored", "0", (char*)0, 8, 0, (char**)0, 0,
536  (char**)0, (KmParFlag)0, KmTYPE_INT, &_GEANT_DRAWING_DUVIEW_IVIEW_type };
537 static KmParameter *_GEANT_DRAWING_DUVIEW_parameters[] = {
538  &_GEANT_DRAWING_DUVIEW_NAME, &_GEANT_DRAWING_DUVIEW_TYPE,
539  &_GEANT_DRAWING_DUVIEW_CPXTYP, &_GEANT_DRAWING_DUVIEW_IVIEW };
540 static char *_GEANT_DRAWING_DUVIEW_guidance[] = {
541  " CALL GUVIEW(name,type,cpxtyp,iview)" };
542 static KmCommand _GEANT_DRAWING_DUVIEW = {  (KmCommand*)0,
543  "/GEANT/DRAWING/DUVIEW", "DUVIEW", 0, 2, 4, 3,
544  _GEANT_DRAWING_DUVIEW_parameters, 0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0,
545  (pCharFunc*)0, 1, _GEANT_DRAWING_DUVIEW_guidance, 0, (char**)0, 0, (char**)0,
546  0, (char**)0, (char*)0, (int*)0 };
547  
548 static KmParameter _GEANT_DRAWING_DCHIT_CHUSET = { "CHUSET", 6,
549  "User set identifier", "*", (char*)0, 20, 0, (char**)0, 0, (char**)0,
550  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
551 static KmParameter _GEANT_DRAWING_DCHIT_CHUDET = { "CHUDET", 6,
552  "User detector identifier", "*", (char*)0, 20, 0, (char**)0, 0, (char**)0,
553  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
554 static KmParInt    _GEANT_DRAWING_DCHIT_ITRA_type = { (char*)0, (char*)0,
555  (char*)0, (char*)0, 0 };
556 static KmParameter _GEANT_DRAWING_DCHIT_ITRA = { "ITRA", 4,
557  "Number of the selected track", "0", (char*)0, 8, 0, (char**)0, 0, (char**)0,
558  (KmParFlag)0, KmTYPE_INT, &_GEANT_DRAWING_DCHIT_ITRA_type };
559 static KmParInt    _GEANT_DRAWING_DCHIT_ISYMB_type = { (char*)0, (char*)0,
560  (char*)0, (char*)0, 0 };
561 static KmParameter _GEANT_DRAWING_DCHIT_ISYMB = { "ISYMB", 5,
562  "Character selection number", "0", (char*)0, 8, 0, (char**)0, 0, (char**)0,
563  (KmParFlag)0, KmTYPE_INT, &_GEANT_DRAWING_DCHIT_ISYMB_type };
564 static KmParReal   _GEANT_DRAWING_DCHIT_SIZMAX_type = { (char*)0, (char*)0,
565  (char*)0, (char*)0, 0 };
566 static KmParameter _GEANT_DRAWING_DCHIT_SIZMAX = { "SIZMAX", 6,
567  "Maximum character size (cm)", "1", (char*)0, 12, 0, (char**)0, 0, (char**)0,
568  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DCHIT_SIZMAX_type };
569 static KmParInt    _GEANT_DRAWING_DCHIT_IHIT_type = { (char*)0, (char*)0,
570  (char*)0, (char*)0, 0 };
571 static KmParameter _GEANT_DRAWING_DCHIT_IHIT = { "IHIT", 4,
572  "Index of array HITS", "4", (char*)0, 8, 0, (char**)0, 0, (char**)0,
573  (KmParFlag)0, KmTYPE_INT, &_GEANT_DRAWING_DCHIT_IHIT_type };
574 static KmParReal   _GEANT_DRAWING_DCHIT_HITMIN_type = { (char*)0, (char*)0,
575  (char*)0, (char*)0, 0 };
576 static KmParameter _GEANT_DRAWING_DCHIT_HITMIN = { "HITMIN", 6,
577  "Lower boundary of HITS(IHIT)", "0", (char*)0, 12, 0, (char**)0, 0,
578  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DCHIT_HITMIN_type };
579 static KmParReal   _GEANT_DRAWING_DCHIT_HITMAX_type = { (char*)0, (char*)0,
580  (char*)0, (char*)0, 0 };
581 static KmParameter _GEANT_DRAWING_DCHIT_HITMAX = { "HITMAX", 6,
582  "Upper boundary of HITS(IHIT)", "0", (char*)0, 12, 0, (char**)0, 0,
583  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DCHIT_HITMAX_type };
584 static KmParameter *_GEANT_DRAWING_DCHIT_parameters[] = {
585  &_GEANT_DRAWING_DCHIT_CHUSET, &_GEANT_DRAWING_DCHIT_CHUDET,
586  &_GEANT_DRAWING_DCHIT_ITRA, &_GEANT_DRAWING_DCHIT_ISYMB,
587  &_GEANT_DRAWING_DCHIT_SIZMAX, &_GEANT_DRAWING_DCHIT_IHIT,
588  &_GEANT_DRAWING_DCHIT_HITMIN, &_GEANT_DRAWING_DCHIT_HITMAX };
589 static char *_GEANT_DRAWING_DCHIT_guidance[] = {
590  " CALL GDCHIT(chuset,chudet,itra,isymb,sizmax,ihit,hitmin,hitmax)",
591  "The character plotted at each hit point may be chosen via",
592  "CSYMB; isymb is composed as:",
593  "      -1   (small) hardware points             (fast)",
594  "       0   software crosses                    (default)",
595  " 840,850   empty/full circles                  (slow)",
596  " 841,851   empty/full squares                  (slow)",
597  " 842,852   empty/full triangles (up)           (slow)",
598  " 843,853   empty diamond/full triangle (down)  (slow)",
599  " 844,854   empty/full stars                    (slow)",
600  "Except for isymb=-1 the SIZE of the character on the screen",
601  "is a function of HITS(IHIT), the array containing the calorimeter",
602  "quantity, with HITMIN and HITMAX defining its range.",
603  "The maximum character size (used in overflow) is SIZMAX.",
604  " SIZE = SIZMAX * ( HITS(IHIT) - HITMIN ) / HITMAX" };
605 static KmCommand _GEANT_DRAWING_DCHIT = { &_GEANT_DRAWING_DUVIEW,
606  "/GEANT/DRAWING/DCHIT", "DCHIT", 0, 2, 8, 0, _GEANT_DRAWING_DCHIT_parameters,
607  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 15,
608  _GEANT_DRAWING_DCHIT_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
609  (char*)0, (int*)0 };
610  
611 static KmParameter _GEANT_DRAWING_KHITS_CHUSET = { "CHUSET", 6,
612  "User set identifier", "*", (char*)0, 20, 0, (char**)0, 0, (char**)0,
613  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
614 static KmParameter _GEANT_DRAWING_KHITS_CHUDET = { "CHUDET", 6,
615  "User detector identifier", "*", (char*)0, 20, 0, (char**)0, 0, (char**)0,
616  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
617 static KmParReal   _GEANT_DRAWING_KHITS_EPSILO_type = { (char*)0, (char*)0,
618  (char*)0, (char*)0, 0 };
619 static KmParameter _GEANT_DRAWING_KHITS_EPSILO = { "EPSILO", 6,
620  "Pick aperture", "0.1", (char*)0, 12, 0, (char**)0, 0, (char**)0,
621  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_KHITS_EPSILO_type };
622 static KmParameter *_GEANT_DRAWING_KHITS_parameters[] = {
623  &_GEANT_DRAWING_KHITS_CHUSET, &_GEANT_DRAWING_KHITS_CHUDET,
624  &_GEANT_DRAWING_KHITS_EPSILO };
625 static char *_GEANT_DRAWING_KHITS_guidance[] = {
626  " CALL GKHITS(chuset,chudet,epsilo)",
627  "The picking of hit points requires the appropriate JSET data structure",
628  "have been filled",
629  "and is  repeated until the character typed is 'Q' or 'q' (GKS) or the",
630  "right button of the mouse is clicked (X11).",
631  "If the character typed to pick is 'K' or 'k' then the",
632  "kinematics of the corresponding track is also printed.",
633  "The search is made of all the hits of all tracks in",
634  "detector CHUDET of set CHUSET.",
635  "EPSILO is the pick aperture; if EPSILO<0 its absolute value is taken",
636  "and in addition the pick aperture is drawn; if EPSILO=0",
637  "there is an infinite pick aperture and",
638  "over all the hits the one nearest to the pick point is taken." };
639 static KmCommand _GEANT_DRAWING_KHITS = { &_GEANT_DRAWING_DCHIT,
640  "/GEANT/DRAWING/KHITS", "KHITS", 0, 2, 3, 0, _GEANT_DRAWING_KHITS_parameters,
641  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 13,
642  _GEANT_DRAWING_KHITS_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
643  (char*)0, (int*)0 };
644  
645 static KmParameter _GEANT_DRAWING_DHITS_CHUSET = { "CHUSET", 6,
646  "User set identifier", "*", (char*)0, 20, 0, (char**)0, 0, (char**)0,
647  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
648 static KmParameter _GEANT_DRAWING_DHITS_CHUDET = { "CHUDET", 6,
649  "User detector identifier", "*", (char*)0, 20, 0, (char**)0, 0, (char**)0,
650  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
651 static KmParInt    _GEANT_DRAWING_DHITS_ITRA_type = { (char*)0, (char*)0,
652  (char*)0, (char*)0, 0 };
653 static KmParameter _GEANT_DRAWING_DHITS_ITRA = { "ITRA", 4,
654  "Number of the selected track", "0", (char*)0, 8, 0, (char**)0, 0, (char**)0,
655  (KmParFlag)0, KmTYPE_INT, &_GEANT_DRAWING_DHITS_ITRA_type };
656 static KmParInt    _GEANT_DRAWING_DHITS_ISYMB_type = { (char*)0, (char*)0,
657  (char*)0, (char*)0, 0 };
658 static KmParameter _GEANT_DRAWING_DHITS_ISYMB = { "ISYMB", 5,
659  "Character selection number", "0", (char*)0, 8, 0, (char**)0, 0, (char**)0,
660  (KmParFlag)0, KmTYPE_INT, &_GEANT_DRAWING_DHITS_ISYMB_type };
661 static KmParReal   _GEANT_DRAWING_DHITS_SSYMB_type = { (char*)0, (char*)0,
662  (char*)0, (char*)0, 0 };
663 static KmParameter _GEANT_DRAWING_DHITS_SSYMB = { "SSYMB", 5,
664  "Size of characters (cm)", "0.1", (char*)0, 12, 0, (char**)0, 0, (char**)0,
665  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DHITS_SSYMB_type };
666 static KmParameter *_GEANT_DRAWING_DHITS_parameters[] = {
667  &_GEANT_DRAWING_DHITS_CHUSET, &_GEANT_DRAWING_DHITS_CHUDET,
668  &_GEANT_DRAWING_DHITS_ITRA, &_GEANT_DRAWING_DHITS_ISYMB,
669  &_GEANT_DRAWING_DHITS_SSYMB };
670 static char *_GEANT_DRAWING_DHITS_guidance[] = {
671  "CALL GDHITS(chuset,chudet,itra,isymb,ssymb).",
672  "The character plotted at each hit point may be chosen by isymb :",
673  "      -1   (small) hardware points             (fast)",
674  "       0   software crosses                    (default)",
675  "   840,850   empty/full circles                  (slow)",
676  "   841,851   empty/full squares                  (slow)",
677  "   842,852   empty/full triangles (up)           (slow)",
678  "   843,853   empty diamond/full triangle (down)  (slow)",
679  "   844,854   empty/full stars                    (slow)",
680  "Except for isymb=-1, the size of the character on the screen can be",
681  "chosen by SSYMB cm. The hit colour will follow the value of TXCI (text",
682  "colour) for isymb>0, the value of PMCI (polymarkers colour) for isymb<0,",
683  "the value of PLCI (polyline colour) for isymb=0." };
684 static KmCommand _GEANT_DRAWING_DHITS = { &_GEANT_DRAWING_KHITS,
685  "/GEANT/DRAWING/DHITS", "DHITS", 0, 2, 5, 0, _GEANT_DRAWING_DHITS_parameters,
686  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 13,
687  _GEANT_DRAWING_DHITS_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
688  (char*)0, (int*)0 };
689  
690 static KmParInt    _GEANT_DRAWING_DPART_ITRA_type = { (char*)0, (char*)0,
691  (char*)0, (char*)0, 0 };
692 static KmParameter _GEANT_DRAWING_DPART_ITRA = { "ITRA", 4, "Track number",
693  "0", (char*)0, 8, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_INT,
694  &_GEANT_DRAWING_DPART_ITRA_type };
695 static KmParInt    _GEANT_DRAWING_DPART_ISEL_type = { (char*)0, (char*)0,
696  (char*)0, (char*)0, 0 };
697 static KmParameter _GEANT_DRAWING_DPART_ISEL = { "ISEL", 4, "Option flag",
698  "11", (char*)0, 8, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_INT,
699  &_GEANT_DRAWING_DPART_ISEL_type };
700 static KmParReal   _GEANT_DRAWING_DPART_SIZE_type = { (char*)0, (char*)0,
701  (char*)0, (char*)0, 0 };
702 static KmParameter _GEANT_DRAWING_DPART_SIZE = { "SIZE", 4,
703  "Character size (cm) for particle names", "0.25", (char*)0, 12, 0, (char**)0,
704  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DPART_SIZE_type };
705 static KmParameter *_GEANT_DRAWING_DPART_parameters[] = {
706  &_GEANT_DRAWING_DPART_ITRA, &_GEANT_DRAWING_DPART_ISEL,
707  &_GEANT_DRAWING_DPART_SIZE };
708 static char *_GEANT_DRAWING_DPART_guidance[] = {
709  " CALL GDPART(itra,isel,size)", " isel=x1 to draw the track number",
710  " isel=1x to draw the particle name" };
711 static KmCommand _GEANT_DRAWING_DPART = { &_GEANT_DRAWING_DHITS,
712  "/GEANT/DRAWING/DPART", "DPART", 0, 2, 3, 0, _GEANT_DRAWING_DPART_parameters,
713  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3,
714  _GEANT_DRAWING_DPART_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
715  (char*)0, (int*)0 };
716  
717 static KmParReal   _GEANT_DRAWING_KXYZ_EPSILO_type = { (char*)0, (char*)0,
718  (char*)0, (char*)0, 0 };
719 static KmParameter _GEANT_DRAWING_KXYZ_EPSILO = { "EPSILO", 6, "Delta angle",
720  "0.25", (char*)0, 12, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
721  &_GEANT_DRAWING_KXYZ_EPSILO_type };
722 static KmParameter *_GEANT_DRAWING_KXYZ_parameters[] = {
723  &_GEANT_DRAWING_KXYZ_EPSILO };
724 static char *_GEANT_DRAWING_KXYZ_guidance[] = { " CALL GKXYZ(epsilo)",
725  "The picking of track points requires the JXYZ data structure",
726  "and is  repeated until the character typed is 'Q' or 'q' (GKS)",
727  "or the right button of the mouse is clicked (X11).",
728  "EPSILO is the delta angle used for picking; if EPSILO=0",
729  "there is no optimization performed and",
730  "over all the track points the one nearest to the pick", "point is taken." };
731 static KmCommand _GEANT_DRAWING_KXYZ = { &_GEANT_DRAWING_DPART,
732  "/GEANT/DRAWING/KXYZ", "KXYZ", 0, 2, 1, 0, _GEANT_DRAWING_KXYZ_parameters, 0,
733  0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 8,
734  _GEANT_DRAWING_KXYZ_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
735  (char*)0, (int*)0 };
736  
737 static KmParInt    _GEANT_DRAWING_DXYZ_ITRA_type = { (char*)0, (char*)0,
738  (char*)0, (char*)0, 0 };
739 static KmParameter _GEANT_DRAWING_DXYZ_ITRA = { "ITRA", 4, "Track number",
740  "0", (char*)0, 8, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_INT,
741  &_GEANT_DRAWING_DXYZ_ITRA_type };
742 static KmParameter *_GEANT_DRAWING_DXYZ_parameters[] = {
743  &_GEANT_DRAWING_DXYZ_ITRA };
744 static char *_GEANT_DRAWING_DXYZ_guidance[] = { " CALL GDXYZ(itra)",
745  "Draw tracks previously stored via GSXYZ." };
746 static KmCommand _GEANT_DRAWING_DXYZ = { &_GEANT_DRAWING_KXYZ,
747  "/GEANT/DRAWING/DXYZ", "DXYZ", 0, 2, 1, 0, _GEANT_DRAWING_DXYZ_parameters, 0,
748  0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 2,
749  _GEANT_DRAWING_DXYZ_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
750  (char*)0, (int*)0 };
751  
752 static KmParReal   _GEANT_DRAWING_ZOOM_ZFU_type = { (char*)0, (char*)0,
753  (char*)0, (char*)0, 0 };
754 static KmParameter _GEANT_DRAWING_ZOOM_ZFU = { "ZFU", 3,
755  "Zoom factor for U-coord. (horizontal)", "2.", (char*)0, 12, 0, (char**)0, 0,
756  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_ZOOM_ZFU_type };
757 static KmParReal   _GEANT_DRAWING_ZOOM_ZFV_type = { (char*)0, (char*)0,
758  (char*)0, (char*)0, 0 };
759 static KmParameter _GEANT_DRAWING_ZOOM_ZFV = { "ZFV", 3,
760  "Zoom factor for V-coord. (vertical)", "2.", (char*)0, 12, 0, (char**)0, 0,
761  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_ZOOM_ZFV_type };
762 static KmParInt    _GEANT_DRAWING_ZOOM_ISEL_type = { (char*)0, (char*)0,
763  (char*)0, (char*)0, 0 };
764 static KmParameter _GEANT_DRAWING_ZOOM_ISEL = { "ISEL", 4, "Options", "1",
765  (char*)0, 8, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_INT,
766  &_GEANT_DRAWING_ZOOM_ISEL_type };
767 static KmParReal   _GEANT_DRAWING_ZOOM_UZ0_type = { "0.", "20.", "0.", "20.",
768  0 };
769 static KmParameter _GEANT_DRAWING_ZOOM_UZ0 = { "UZ0", 3,
770  "U-coord. of the centre of zoom rectangle", "10.", (char*)0, 12, 0,
771  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
772  &_GEANT_DRAWING_ZOOM_UZ0_type };
773 static KmParReal   _GEANT_DRAWING_ZOOM_VZ0_type = { "0.", "20.", "0.", "20.",
774  0 };
775 static KmParameter _GEANT_DRAWING_ZOOM_VZ0 = { "VZ0", 3,
776  "V-coord. of the centre of zoom rectangle", "10.", (char*)0, 12, 0,
777  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
778  &_GEANT_DRAWING_ZOOM_VZ0_type };
779 static KmParReal   _GEANT_DRAWING_ZOOM_U0_type = { "0.", "20.", "0.", "20.", 0
780  };
781 static KmParameter _GEANT_DRAWING_ZOOM_U0 = { "U0", 2,
782  "U-coord. of the centre of resulting zoomed rectangle", "10.", (char*)0, 12,
783  0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
784  &_GEANT_DRAWING_ZOOM_U0_type };
785 static KmParReal   _GEANT_DRAWING_ZOOM_V0_type = { "0.", "20.", "0.", "20.", 0
786  };
787 static KmParameter _GEANT_DRAWING_ZOOM_V0 = { "V0", 2,
788  "V-coord. of the centre of resulting zoomed rectangle", "10.", (char*)0, 12,
789  0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
790  &_GEANT_DRAWING_ZOOM_V0_type };
791 static KmParameter *_GEANT_DRAWING_ZOOM_parameters[] = {
792  &_GEANT_DRAWING_ZOOM_ZFU, &_GEANT_DRAWING_ZOOM_ZFV,
793  &_GEANT_DRAWING_ZOOM_ISEL, &_GEANT_DRAWING_ZOOM_UZ0,
794  &_GEANT_DRAWING_ZOOM_VZ0, &_GEANT_DRAWING_ZOOM_U0, &_GEANT_DRAWING_ZOOM_V0 };
795 static char *_GEANT_DRAWING_ZOOM_guidance[] = {
796  " CALL GDZOOM(zfu,zfv,uz0,vz0,u0,v0)",
797  "This command sets the zoom parameters that will be used by",
798  "subsequent calls to the drawing routines. Each zoom operation is always",
799  "relative to the status of the current zoom parameters.",
800  "The scale factors in u,v are respectively  zfu,zfv.",
801  "zfu=0 (or zfv=0) will act as a reset (i.e. unzoomed viewing).",
802  "The zoom is computed around uz0,vz0 (user coordinates),",
803  "and the resulting picture will be centered at u0,v0.",
804  "The use of the space bar is replaced by the left button of the mouse",
805  "running with X11:", "If isel=0 :", " 1. position the cursor at (uz0,vz0)",
806  " 2. type the space bar (GKS)", "(u0,v0 are chosen at centre of screen)",
807  "If isel=1 :", " 1. position the cursor at first corner of zoom rectangle",
808  " 2. type the space bar (GKS)",
809  " 3. position the cursor at second corner of zoom rectangle",
810  " 4. type the space bar (GKS)",
811  "(zfu,zfv are chosen according to the zoom rectangle;",
812  "uz0,vz0 are chosen at the centre of the zoom rectangle;",
813  "u0,v0 are chosen at centre of screen)", "If isel=2 :",
814  " 1. position the cursor at (uz0,vz0)", " 2. type the space bar (GKS)",
815  " 3. position the cursor at (u0,v0)", " 4. type the space bar (GKS)",
816  "If isel=1000+n and running with X-windows:",
817  " 1. n must be the identifier of an active view bank",
818  " 2. clicking on the left button of the mouse will display",
819  "    a zoomed view (computed around the cursor position) of",
820  "    the previous drawing in a new window",
821  " 3. it is now possible to iterate the zooming from the new window",
822  " 4. clicking on the right button will return the control to the",
823  "    main window",
824  " 5. clicking on the left button it is possible to open new windows",
825  "    zooming in other points of the detector",
826  " 6. clicking on the right button when the main window is active",
827  "    will return the control to the 'command mode'." };
828 static KmCommand _GEANT_DRAWING_ZOOM = { &_GEANT_DRAWING_DXYZ,
829  "/GEANT/DRAWING/ZOOM", "ZOOM", 0, 2, 7, 0, _GEANT_DRAWING_ZOOM_parameters, 0,
830  0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 39,
831  _GEANT_DRAWING_ZOOM_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
832  (char*)0, (int*)0 };
833  
834 static KmParInt    _GEANT_DRAWING_LENS_KNUM_type = { (char*)0, (char*)0,
835  (char*)0, (char*)0, 0 };
836 static KmParameter _GEANT_DRAWING_LENS_KNUM = { "KNUM", 4,
837  "View bank identifier", "1", (char*)0, 8, 0, (char**)0, 0, (char**)0,
838  (KmParFlag)0, KmTYPE_INT, &_GEANT_DRAWING_LENS_KNUM_type };
839 static KmParameter _GEANT_DRAWING_LENS_KSAM = { "KSAM", 4,
840  "Sample mode         ", "OFF ", (char*)0, 20, 0, (char**)0, 0, (char**)0,
841  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
842 static KmParameter *_GEANT_DRAWING_LENS_parameters[] = {
843  &_GEANT_DRAWING_LENS_KNUM, &_GEANT_DRAWING_LENS_KSAM };
844 static char *_GEANT_DRAWING_LENS_guidance[] = {
845  "Interactive zooming for detectors and events when running",
846  "with X-windows. Using this command, when showing the contents of a",
847  "view bank, it is possible to click (left button) in two points of the",
848  "drawing (which will represent the left upper corner and the right",
849  "bottom corner of the part to be zoomed). After the second click",
850  "a new 'window' will appear to fit the frame defined",
851  "by the two clicks and it will show a zoomed view as seen from a",
852  "lens with those dimensions. Clicking now the central button will",
853  "translate the lens over the drawing, while clicking the right button",
854  "will stop it. Moreover, clicking the left button of the",
855  "mouse, the lens will increase (or decrease) its magnification",
856  "power according to the backward-to-forward movement of the mouse.",
857  "A click on the right button will stop this action and it is possible",
858  "to restart the translation of the lens or, clicking",
859  "on the right button again, to make the lens disappear. It is then possible",
860  "to open another 'window-lens' with different dimensions. Thus,",
861  "this command can be useful to scan detailed parts of a detector or",
862  "to scan hits and showers for events. Clicking the right",
863  "button when no lens is displayed will return the control to the",
864  "'command mode'. The LENS is also available in sample mode when KSAM is",
865  "'ON'.", "The following commands will fill a view bank and will",
866  "allow to scan the detector and an event previously stored",
867  "via the use of LENS (when running", "with X-windows):", " EXAMPLE -",
868  " satt * seen 1", " dopen 1", " draw NAME 40 40 0 10 10 .01 .01", " dxyz 0",
869  " dhits * * 0 0 .2", " dclose", " dsh 1", " lens 1 on" };
870 static KmCommand _GEANT_DRAWING_LENS = { &_GEANT_DRAWING_ZOOM,
871  "/GEANT/DRAWING/LENS", "LENS", 0, 2, 2, 1, _GEANT_DRAWING_LENS_parameters, 0,
872  0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 34,
873  _GEANT_DRAWING_LENS_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
874  (char*)0, (int*)0 };
875  
876 static KmParameter _GEANT_DRAWING_PERSP_NAME = { "NAME", 4, "Volume name",
877  "    ", (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,
878  (void*)0 };
879 static KmParReal   _GEANT_DRAWING_PERSP_DISTT_type = { (char*)0, (char*)0,
880  (char*)0, (char*)0, 0 };
881 static KmParameter _GEANT_DRAWING_PERSP_DISTT = { "DISTT", 5,
882  "Volume distance from observer", "1000.", (char*)0, 12, 0, (char**)0, 0,
883  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_PERSP_DISTT_type };
884 static KmParameter _GEANT_DRAWING_PERSP_SAMP = { "SAMP", 4,
885  "Control to the mouse", "OFF ", (char*)0, 20, 0, (char**)0, 0, (char**)0,
886  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
887 static KmParameter *_GEANT_DRAWING_PERSP_parameters[] = {
888  &_GEANT_DRAWING_PERSP_NAME, &_GEANT_DRAWING_PERSP_DISTT,
889  &_GEANT_DRAWING_PERSP_SAMP };
890 static char *_GEANT_DRAWING_PERSP_guidance[] = {
891  "To control the perspective according to the variation of the distance",
892  "between the observer and the object (if PROJ has the value PERS).",
893  "If SAMP is ON the control of the distance is given via the mouse." };
894 static KmCommand _GEANT_DRAWING_PERSP = { &_GEANT_DRAWING_LENS,
895  "/GEANT/DRAWING/PERSP", "PERSP", 0, 2, 3, 2, _GEANT_DRAWING_PERSP_parameters,
896  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3,
897  _GEANT_DRAWING_PERSP_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
898  (char*)0, (int*)0 };
899  
900 static KmParameter _GEANT_DRAWING_MOVE3D_NAME = { "NAME", 4, "Volume name",
901  "    ", (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,
902  (void*)0 };
903 static KmParReal   _GEANT_DRAWING_MOVE3D_THETA_type = { "0.", "180.", "0.",
904  "180.", 0 };
905 static KmParameter _GEANT_DRAWING_MOVE3D_THETA = { "THETA", 5,
906  "Viewing angle theta (for 3D projection)", "40.", (char*)0, 12, 0, (char**)0,
907  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_MOVE3D_THETA_type };
908 static KmParReal   _GEANT_DRAWING_MOVE3D_PHI_type = { "0.", "360.", "0.",
909  "360.", 0 };
910 static KmParameter _GEANT_DRAWING_MOVE3D_PHI = { "PHI", 3,
911  "Viewing angle phi (for 3D projection)", "40.", (char*)0, 12, 0, (char**)0,
912  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_MOVE3D_PHI_type };
913 static KmParReal   _GEANT_DRAWING_MOVE3D_PSI_type = { "0.", "180.", "0.",
914  "180.", 0 };
915 static KmParameter _GEANT_DRAWING_MOVE3D_PSI = { "PSI", 3,
916  "Viewing angle psi (for 2D rotation)", "0.", (char*)0, 12, 0, (char**)0, 0,
917  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_MOVE3D_PSI_type };
918 static KmParReal   _GEANT_DRAWING_MOVE3D_U0_type = { "0.", "20.", "0.", "20.",
919  0 };
920 static KmParameter _GEANT_DRAWING_MOVE3D_U0 = { "U0", 2,
921  "U-coord. (horizontal) of volume origin", "10.", (char*)0, 12, 0, (char**)0,
922  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_MOVE3D_U0_type };
923 static KmParReal   _GEANT_DRAWING_MOVE3D_V0_type = { "0.", "20.", "0.", "20.",
924  0 };
925 static KmParameter _GEANT_DRAWING_MOVE3D_V0 = { "V0", 2,
926  "V-coord. (vertical) of volume origin", "10.", (char*)0, 12, 0, (char**)0, 0,
927  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_MOVE3D_V0_type };
928 static KmParReal   _GEANT_DRAWING_MOVE3D_SU_type = { (char*)0, (char*)0,
929  (char*)0, (char*)0, 0 };
930 static KmParameter _GEANT_DRAWING_MOVE3D_SU = { "SU", 2,
931  "Scale factor for U-coord.", "0.01", (char*)0, 12, 0, (char**)0, 0,
932  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_MOVE3D_SU_type };
933 static KmParReal   _GEANT_DRAWING_MOVE3D_SV_type = { (char*)0, (char*)0,
934  (char*)0, (char*)0, 0 };
935 static KmParameter _GEANT_DRAWING_MOVE3D_SV = { "SV", 2,
936  "Scale factor for V-coord.", "0.01", (char*)0, 12, 0, (char**)0, 0,
937  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_MOVE3D_SV_type };
938 static KmParReal   _GEANT_DRAWING_MOVE3D_SZ_type = { "0.1", "10.", "0.1",
939  "10.", 1 };
940 static KmParameter _GEANT_DRAWING_MOVE3D_SZ = { "SZ", 2, "Scale zoom factor",
941  "1.", (char*)0, 12, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
942  &_GEANT_DRAWING_MOVE3D_SZ_type };
943 static char *_GEANT_DRAWING_MOVE3D_NOPT_range[] = { "T", "H" };
944 static char *_GEANT_DRAWING_MOVE3D_NOPT_text[] = { (char*)0, (char*)0 };
945 static KmParOption _GEANT_DRAWING_MOVE3D_NOPT_type = {
946  _GEANT_DRAWING_MOVE3D_NOPT_text, (int*)0, (int*)0 };
947 static KmParameter _GEANT_DRAWING_MOVE3D_NOPT = { "NOPT", 4,
948  "T=tracks,H=hits", "    ", (char*)0, 8, 2, _GEANT_DRAWING_MOVE3D_NOPT_range,
949  2, _GEANT_DRAWING_MOVE3D_NOPT_range, (KmParFlag)0, KmTYPE_OPTION,
950  &_GEANT_DRAWING_MOVE3D_NOPT_type };
951 static KmParameter *_GEANT_DRAWING_MOVE3D_parameters[] = {
952  &_GEANT_DRAWING_MOVE3D_NAME, &_GEANT_DRAWING_MOVE3D_THETA,
953  &_GEANT_DRAWING_MOVE3D_PHI, &_GEANT_DRAWING_MOVE3D_PSI,
954  &_GEANT_DRAWING_MOVE3D_U0, &_GEANT_DRAWING_MOVE3D_V0,
955  &_GEANT_DRAWING_MOVE3D_SU, &_GEANT_DRAWING_MOVE3D_SV,
956  &_GEANT_DRAWING_MOVE3D_SZ, &_GEANT_DRAWING_MOVE3D_NOPT };
957 static char *_GEANT_DRAWING_MOVE3D_guidance[] = {
958  "Same functionality of the command MOVE interfaced with MOTIF." };
959 static KmCommand _GEANT_DRAWING_MOVE3D = { &_GEANT_DRAWING_PERSP,
960  "/GEANT/DRAWING/MOVE3D", "MOVE3D", 0, 2, 10, 1,
961  _GEANT_DRAWING_MOVE3D_parameters, 0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0,
962  (pCharFunc*)0, 1, _GEANT_DRAWING_MOVE3D_guidance, 0, (char**)0, 0, (char**)0,
963  0, (char**)0, (char*)0, (int*)0 };
964  
965 static KmParameter _GEANT_DRAWING_MOVE_NAME = { "NAME", 4, "Volume name",
966  "    ", (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,
967  (void*)0 };
968 static KmParameter _GEANT_DRAWING_MOVE_NOPT = { "NOPT", 4,
969  "S=sample mode,T=tracks,H=hits", "    ", (char*)0, 20, 0, (char**)0, 0,
970  (char**)0, (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
971 static KmParameter *_GEANT_DRAWING_MOVE_parameters[] = {
972  &_GEANT_DRAWING_MOVE_NAME, &_GEANT_DRAWING_MOVE_NOPT };
973 static char *_GEANT_DRAWING_MOVE_guidance[] = {
974  "Positioning some daughter volumes inside a 'mother', it can be",
975  "important to check if overlaps between such volumes have occurred.",
976  "Instead of putting the drawing in a view bank, zooming, and iterating",
977  "the process for different viewing angles of the same detector, the",
978  "MOVE facility has been developed (for machines running with X11):",
979  "it is sufficient to draw a view of the volumes to be analysed (after",
980  "setting the proper SEEN, COLO, etc. attributes) and then to enter",
981  "'MOVE' followed by the same 'NAME' used for the last command DRAW.",
982  "The detector will appear in a panel with five buttons at the",
983  "bottom: THETA, PHI, TRASL, ZOOM, OFF. Clicking on the left button",
984  "of the mouse, when the cursor is inside the THETA area, will rotate the",
985  "detector along the polar angle theta according to the",
986  "backward-to-forward movement of the mouse",
987  "(clicking up and down the left button if",
988  "not in sample mode); clicking on the right button of",
989  "the mouse will stop the rotation; clicking now on the",
990  "left button of the mouse when inside the PHI area will activate a",
991  "rotation along the polar angle phi. In the same way, activating the",
992  "TRASL button, the detector can be translated in the u,v plane",
993  "of the screen according to the 2D-movement of the mouse. Finally,",
994  "activating the ZOOM button, the detector will be zoomed (or unzoomed)",
995  "according to the backward-to-forward movement of the mouse. Clicking on\
996  the", "OFF button will return the control to the 'command mode'. The MOVE",
997  "command will work also with hidden line removal and shading options",
998  "(when SHAD is on the background will be black);",
999  "moreover, if the volumes are clipped, exploded, shifted, etc., they",
1000  "will be 'MOVED' with these features as well.",
1001  "Tracks and hits of a previously stored physical event can be moved",
1002  "together with the detector, allowing a dynamical 3-D analysis of the",
1003  "simulated events. Clicking the central button of the mouse when a good",
1004  "view of the event is found, will stop any movement and the mouse will",
1005  "allow the normal picking capabilities first for the tracks and then for",
1006  "the hits. After clicking of the right button, the normal",
1007  "movement will restart to find another interesting view of the event",
1008  "and to iterate the process.", "The MOVE is also available in sample mode.",
1009  "The following commands will produce a drawing of a volume",
1010  "and then will give the control to the MOVE panel; try the following",
1011  "possibilities:", " EXAMPLE 1 -", " dopt hide off", " satt * seen -2",
1012  " draw NAME 40 40 0 10 10 .01 .01", " move NAME", " EXAMPLE 2 -",
1013  " dopt hide on", " satt * seen -2", " draw NAME 40 40 0 10 10 .01 .01",
1014  " move NAME", " EXAMPLE 3 -", " dopt shad on", " satt * colo 3",
1015  " satt * fill 2", " dopt edge off", " draw NAME 40 40 0 10 10 .01 .01",
1016  " move NAME" };
1017 static KmCommand _GEANT_DRAWING_MOVE = { &_GEANT_DRAWING_MOVE3D,
1018  "/GEANT/DRAWING/MOVE", "MOVE", 0, 2, 2, 1, _GEANT_DRAWING_MOVE_parameters, 0,
1019  0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 56,
1020  _GEANT_DRAWING_MOVE_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1021  (char*)0, (int*)0 };
1022  
1023 static char *_GEANT_DRAWING_PICK_guidance[] = {
1024  "Activates graphic input to identify detector elements",
1025  "in a cut view. Clicking on the left button of the mouse when",
1026  "the cursor is in a given point of the drawing and clicking again",
1027  "(outside the detector) will produce the following effect:",
1028  "a line joininig the two points will be drawn together with",
1029  "the name and the medium number of the volume picked",
1030  "with the first clicking close to the second point." };
1031 static KmCommand _GEANT_DRAWING_PICK = { &_GEANT_DRAWING_MOVE,
1032  "/GEANT/DRAWING/PICK", "PICK", 0, 2, 0, 0, (KmParameter**)0, 0, 0, gxpick_,
1033  (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 7, _GEANT_DRAWING_PICK_guidance,
1034  0, (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
1035  
1036 static char *_GEANT_DRAWING_MEASURE_guidance[] = {
1037  "Position the cursor on the first point (u1,v1) and hit the space bar(GKS).",
1038  "Position the cursor on the second point (u2,v2) and hit the space\
1039  bar(GKS).",
1040  "Clicking the left button of the mouse (X11) will have the same effect as",
1041  "hiting the space bar (GKS).",
1042  "The command will compute and print the distance in space separating",
1043  "the two points on the projection view. It can be useful to measure",
1044  "distances either between volumes or between tracks or hits." };
1045 static KmCommand _GEANT_DRAWING_MEASURE = { &_GEANT_DRAWING_PICK,
1046  "/GEANT/DRAWING/MEASURE", "MEASURE", 0, 2, 0, 0, (KmParameter**)0, 0, 0,
1047  gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 7,
1048  _GEANT_DRAWING_MEASURE_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1049  (char*)0, (int*)0 };
1050  
1051 static KmParInt    _GEANT_DRAWING_DHEAD_ISEL_type = { (char*)0, (char*)0,
1052  (char*)0, (char*)0, 0 };
1053 static KmParameter _GEANT_DRAWING_DHEAD_ISEL = { "ISEL", 4, "Option flag",
1054  "111110", (char*)0, 8, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_INT,
1055  &_GEANT_DRAWING_DHEAD_ISEL_type };
1056 static KmParameter _GEANT_DRAWING_DHEAD_NAME = { "NAME", 4, "Title", " ",
1057  (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,
1058  (void*)0 };
1059 static KmParReal   _GEANT_DRAWING_DHEAD_CHRSIZ_type = { (char*)0, (char*)0,
1060  (char*)0, (char*)0, 0 };
1061 static KmParameter _GEANT_DRAWING_DHEAD_CHRSIZ = { "CHRSIZ", 6,
1062  "Character size (cm) of title NAME", "0.6", (char*)0, 12, 0, (char**)0, 0,
1063  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DHEAD_CHRSIZ_type };
1064 static KmParameter *_GEANT_DRAWING_DHEAD_parameters[] = {
1065  &_GEANT_DRAWING_DHEAD_ISEL, &_GEANT_DRAWING_DHEAD_NAME,
1066  &_GEANT_DRAWING_DHEAD_CHRSIZ };
1067 static char *_GEANT_DRAWING_DHEAD_guidance[] = {
1068  " CALL GDHEAD(isel,name,chrsiz)", "ISEL =",
1069  " 0      to have only the header lines",
1070  " xxxxx1 to add the text name centered on top of header",
1071  " xxxx1x to add global detector name (first volume) on left",
1072  " xxx1xx to add date on right",
1073  " xx1xxx to select thick characters for text on top of header",
1074  " x1xxxx to add the text 'EVENT NR x' on top of header",
1075  " 1xxxxx to add the text 'RUN NR x' on top of header",
1076  "NOTE that ISEL=x1xxx1 or ISEL=1xxxx1 are illegal choices,",
1077  "i.e. they generate overwritten text.", "NAME is the title",
1078  "and CHRSIZ the character size in cm of text name." };
1079 static KmCommand _GEANT_DRAWING_DHEAD = { &_GEANT_DRAWING_MEASURE,
1080  "/GEANT/DRAWING/DHEAD", "DHEAD", 0, 2, 3, 0, _GEANT_DRAWING_DHEAD_parameters,
1081  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 13,
1082  _GEANT_DRAWING_DHEAD_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1083  (char*)0, (int*)0 };
1084  
1085 static KmParReal   _GEANT_DRAWING_DMAN_U_type = { (char*)0, (char*)0,
1086  (char*)0, (char*)0, 0 };
1087 static KmParameter _GEANT_DRAWING_DMAN_U = { "U", 1,
1088  "U-coord. (horizontal) of the centre of man", (char*)0, (char*)0, 12, 0,
1089  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1090  &_GEANT_DRAWING_DMAN_U_type };
1091 static KmParReal   _GEANT_DRAWING_DMAN_V_type = { (char*)0, (char*)0,
1092  (char*)0, (char*)0, 0 };
1093 static KmParameter _GEANT_DRAWING_DMAN_V = { "V", 1,
1094  "V-coord. (vertical) of the centre of man", (char*)0, (char*)0, 12, 0,
1095  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1096  &_GEANT_DRAWING_DMAN_V_type };
1097 static char *_GEANT_DRAWING_DMAN_TYPE_range[] = { "MAN", "WM1", "WM2", "WM3" };
1098 static char *_GEANT_DRAWING_DMAN_TYPE_text[] = { (char*)0, (char*)0, (char*)0,
1099  (char*)0 };
1100 static KmParOption _GEANT_DRAWING_DMAN_TYPE_type = {
1101  _GEANT_DRAWING_DMAN_TYPE_text, (int*)0, (int*)0 };
1102 static KmParameter _GEANT_DRAWING_DMAN_TYPE = { "TYPE", 4,
1103  "Man, Wm1, Wm2, Wm3", "MAN", (char*)0, 8, 4, _GEANT_DRAWING_DMAN_TYPE_range,
1104  4, _GEANT_DRAWING_DMAN_TYPE_range, (KmParFlag)0, KmTYPE_OPTION,
1105  &_GEANT_DRAWING_DMAN_TYPE_type };
1106 static KmParameter *_GEANT_DRAWING_DMAN_parameters[] = {
1107  &_GEANT_DRAWING_DMAN_U, &_GEANT_DRAWING_DMAN_V, &_GEANT_DRAWING_DMAN_TYPE };
1108 static char *_GEANT_DRAWING_DMAN_guidance[] = {
1109  " CALL GDMAN(u,v),CALL GDWMN1(u,v),CALL GDWMN2(u,v),CALL GDWMN2(u,v)",
1110  "It superimposes the picure of a man or of a woman, chosen among",
1111  "three different ones, with the same scale factors as the detector",
1112  "in the current drawing." };
1113 static KmCommand _GEANT_DRAWING_DMAN = { &_GEANT_DRAWING_DHEAD,
1114  "/GEANT/DRAWING/DMAN", "DMAN", 0, 2, 3, 3, _GEANT_DRAWING_DMAN_parameters, 0,
1115  0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 4,
1116  _GEANT_DRAWING_DMAN_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1117  (char*)0, (int*)0 };
1118  
1119 static KmParReal   _GEANT_DRAWING_DAXIS_X0_type = { (char*)0, (char*)0,
1120  (char*)0, (char*)0, 0 };
1121 static KmParameter _GEANT_DRAWING_DAXIS_X0 = { "X0", 2,
1122  "X-coord. of axis origin", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1123  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DAXIS_X0_type };
1124 static KmParReal   _GEANT_DRAWING_DAXIS_Y0_type = { (char*)0, (char*)0,
1125  (char*)0, (char*)0, 0 };
1126 static KmParameter _GEANT_DRAWING_DAXIS_Y0 = { "Y0", 2,
1127  "Y-coord. of axis origin", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1128  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DAXIS_Y0_type };
1129 static KmParReal   _GEANT_DRAWING_DAXIS_Z0_type = { (char*)0, (char*)0,
1130  (char*)0, (char*)0, 0 };
1131 static KmParameter _GEANT_DRAWING_DAXIS_Z0 = { "Z0", 2,
1132  "Z-coord. of axis origin", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1133  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DAXIS_Z0_type };
1134 static KmParReal   _GEANT_DRAWING_DAXIS_DX_type = { (char*)0, (char*)0,
1135  (char*)0, (char*)0, 0 };
1136 static KmParameter _GEANT_DRAWING_DAXIS_DX = { "DX", 2, "Axis size", (char*)0,
1137  (char*)0, 12, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1138  &_GEANT_DRAWING_DAXIS_DX_type };
1139 static KmParameter *_GEANT_DRAWING_DAXIS_parameters[] = {
1140  &_GEANT_DRAWING_DAXIS_X0, &_GEANT_DRAWING_DAXIS_Y0, &_GEANT_DRAWING_DAXIS_Z0,
1141  &_GEANT_DRAWING_DAXIS_DX };
1142 static char *_GEANT_DRAWING_DAXIS_guidance[] = { " CALL GDAXIS(x0,y0,z0,dx)",
1143  "This commmand superimposes the axis of the MARS on the",
1144  "current picture. It is useful for finding immediately the",
1145  "orientation of the current drawing of the detector in the space." };
1146 static KmCommand _GEANT_DRAWING_DAXIS = { &_GEANT_DRAWING_DMAN,
1147  "/GEANT/DRAWING/DAXIS", "DAXIS", 0, 2, 4, 4, _GEANT_DRAWING_DAXIS_parameters,
1148  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 4,
1149  _GEANT_DRAWING_DAXIS_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1150  (char*)0, (int*)0 };
1151  
1152 static KmParReal   _GEANT_DRAWING_DSCALE_U_type = { (char*)0, (char*)0,
1153  (char*)0, (char*)0, 0 };
1154 static KmParameter _GEANT_DRAWING_DSCALE_U = { "U", 1,
1155  "U-coord. (horizontal) of the centre of scale", (char*)0, (char*)0, 12, 0,
1156  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1157  &_GEANT_DRAWING_DSCALE_U_type };
1158 static KmParReal   _GEANT_DRAWING_DSCALE_V_type = { (char*)0, (char*)0,
1159  (char*)0, (char*)0, 0 };
1160 static KmParameter _GEANT_DRAWING_DSCALE_V = { "V", 1,
1161  "V-coord. (vertical) of the centre of scale", (char*)0, (char*)0, 12, 0,
1162  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1163  &_GEANT_DRAWING_DSCALE_V_type };
1164 static KmParameter *_GEANT_DRAWING_DSCALE_parameters[] = {
1165  &_GEANT_DRAWING_DSCALE_U, &_GEANT_DRAWING_DSCALE_V };
1166 static char *_GEANT_DRAWING_DSCALE_guidance[] = { " CALL GDSCAL(u,v)",
1167  "It draws a scale centered in U,V." };
1168 static KmCommand _GEANT_DRAWING_DSCALE = { &_GEANT_DRAWING_DAXIS,
1169  "/GEANT/DRAWING/DSCALE", "DSCALE", 0, 2, 2, 2,
1170  _GEANT_DRAWING_DSCALE_parameters, 0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0,
1171  (pCharFunc*)0, 2, _GEANT_DRAWING_DSCALE_guidance, 0, (char**)0, 0, (char**)0,
1172  0, (char**)0, (char*)0, (int*)0 };
1173  
1174 static KmParameter _GEANT_DRAWING_DVECTOR_XVECT = { "XVECT", 5,
1175  "Vector containing X-coord. (horizontal)", (char*)0, (char*)0, 20, 0,
1176  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
1177 static KmParameter _GEANT_DRAWING_DVECTOR_YVECT = { "YVECT", 5,
1178  "Vector containing Y-coord. (vertical)", (char*)0, (char*)0, 20, 0,
1179  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
1180 static KmParInt    _GEANT_DRAWING_DVECTOR_NPOINT_type = { (char*)0, (char*)0,
1181  (char*)0, (char*)0, 0 };
1182 static KmParameter _GEANT_DRAWING_DVECTOR_NPOINT = { "NPOINT", 6,
1183  "Number of coord.", (char*)0, (char*)0, 8, 0, (char**)0, 0, (char**)0,
1184  (KmParFlag)0, KmTYPE_INT, &_GEANT_DRAWING_DVECTOR_NPOINT_type };
1185 static KmParameter *_GEANT_DRAWING_DVECTOR_parameters[] = {
1186  &_GEANT_DRAWING_DVECTOR_XVECT, &_GEANT_DRAWING_DVECTOR_YVECT,
1187  &_GEANT_DRAWING_DVECTOR_NPOINT };
1188 static char *_GEANT_DRAWING_DVECTOR_guidance[] = {
1189  "Draw a polyline of 'npoint' point via",
1190  "a call to GDRAWV(xvect,yvect,npoint)",
1191  "where xvect and yvect are two KUIP vectors" };
1192 static KmCommand _GEANT_DRAWING_DVECTOR = { &_GEANT_DRAWING_DSCALE,
1193  "/GEANT/DRAWING/DVECTOR", "DVECTOR", 0, 2, 3, 3,
1194  _GEANT_DRAWING_DVECTOR_parameters, 0, 0, gxdraw_, (IntFunc*)0,
1195  (SUBROUTINE*)0, (pCharFunc*)0, 3, _GEANT_DRAWING_DVECTOR_guidance, 0,
1196  (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
1197  
1198 static KmParReal   _GEANT_DRAWING_DTEXT_X0_type = { "0.", "20.", "0.", "20.",
1199  0 };
1200 static KmParameter _GEANT_DRAWING_DTEXT_X0 = { "X0", 2,
1201  "X-coord. (horizontal) of text string", "10.", (char*)0, 12, 0, (char**)0, 0,
1202  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DTEXT_X0_type };
1203 static KmParReal   _GEANT_DRAWING_DTEXT_Y0_type = { "0.", "20.", "0.", "20.",
1204  0 };
1205 static KmParameter _GEANT_DRAWING_DTEXT_Y0 = { "Y0", 2,
1206  "Y-coord. (vertical) of text string", "10.", (char*)0, 12, 0, (char**)0, 0,
1207  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DTEXT_Y0_type };
1208 static KmParameter _GEANT_DRAWING_DTEXT_TEXT = { "TEXT", 4, "Text string",
1209  "GEANT", (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,
1210   (void*)0 };
1211 static KmParReal   _GEANT_DRAWING_DTEXT_SIZE_type = { (char*)0, (char*)0,
1212  (char*)0, (char*)0, 0 };
1213 static KmParameter _GEANT_DRAWING_DTEXT_SIZE = { "SIZE", 4,
1214  "Character size (cm)", ".5", (char*)0, 12, 0, (char**)0, 0, (char**)0,
1215  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DTEXT_SIZE_type };
1216 static KmParReal   _GEANT_DRAWING_DTEXT_ANGLE_type = { "0.", "360.", "0.",
1217  "360.", 0 };
1218 static KmParameter _GEANT_DRAWING_DTEXT_ANGLE = { "ANGLE", 5,
1219  "Rotation angle (deg)", "0.", (char*)0, 12, 0, (char**)0, 0, (char**)0,
1220  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DTEXT_ANGLE_type };
1221 static KmParInt    _GEANT_DRAWING_DTEXT_LWID_type = { (char*)0, (char*)0,
1222  (char*)0, (char*)0, 0 };
1223 static KmParameter _GEANT_DRAWING_DTEXT_LWID = { "LWID", 4, "Line width", "4",
1224  (char*)0, 8, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_INT,
1225  &_GEANT_DRAWING_DTEXT_LWID_type };
1226 static char *_GEANT_DRAWING_DTEXT_CENT_range[] = { "CENT", "LEFT", "RIGH" };
1227 static char *_GEANT_DRAWING_DTEXT_CENT_text[] = { (char*)0, (char*)0, (char*)0
1228  };
1229 static KmParOption _GEANT_DRAWING_DTEXT_CENT_type = {
1230  _GEANT_DRAWING_DTEXT_CENT_text, (int*)0, (int*)0 };
1231 static KmParameter _GEANT_DRAWING_DTEXT_CENT = { "CENT", 4,
1232  "Centering option", "CENT", (char*)0, 8, 3, _GEANT_DRAWING_DTEXT_CENT_range,
1233  3, _GEANT_DRAWING_DTEXT_CENT_range, (KmParFlag)0, KmTYPE_OPTION,
1234  &_GEANT_DRAWING_DTEXT_CENT_type };
1235 static KmParameter *_GEANT_DRAWING_DTEXT_parameters[] = {
1236  &_GEANT_DRAWING_DTEXT_X0, &_GEANT_DRAWING_DTEXT_Y0,
1237  &_GEANT_DRAWING_DTEXT_TEXT, &_GEANT_DRAWING_DTEXT_SIZE,
1238  &_GEANT_DRAWING_DTEXT_ANGLE, &_GEANT_DRAWING_DTEXT_LWID,
1239  &_GEANT_DRAWING_DTEXT_CENT };
1240 static char *_GEANT_DRAWING_DTEXT_guidance[] = {
1241  " CALL GDRAWT(x0,y0,text,size,angle,lwid,opt)",
1242  "It allows one to draw some text in the current picture.",
1243  "Now more than 160 colours are available. The text colour",
1244  "must be set via the command IGSET. The size of the",
1245  "text will follow the zooming factors in the view banks." };
1246 static KmCommand _GEANT_DRAWING_DTEXT = { &_GEANT_DRAWING_DVECTOR,
1247  "/GEANT/DRAWING/DTEXT", "DTEXT", 0, 2, 7, 7, _GEANT_DRAWING_DTEXT_parameters,
1248  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 5,
1249  _GEANT_DRAWING_DTEXT_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1250  (char*)0, (int*)0 };
1251  
1252 static KmParameter _GEANT_DRAWING_DFSPC_NAME = { "NAME", 4, "Volume name",
1253  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
1254  KmTYPE_CHAR,  (void*)0 };
1255 static char *_GEANT_DRAWING_DFSPC_CSORT_range[] = { "Y", "N", "0", "1" };
1256 static char *_GEANT_DRAWING_DFSPC_CSORT_text[] = { (char*)0, (char*)0,
1257  (char*)0, (char*)0 };
1258 static KmParOption _GEANT_DRAWING_DFSPC_CSORT_type = {
1259  _GEANT_DRAWING_DFSPC_CSORT_text, (int*)0, (int*)0 };
1260 static KmParameter _GEANT_DRAWING_DFSPC_CSORT = { "CSORT", 5,
1261  "Alphabetic sorting flag", "N", (char*)0, 8, 4,
1262  _GEANT_DRAWING_DFSPC_CSORT_range, 4, _GEANT_DRAWING_DFSPC_CSORT_range,
1263  (KmParFlag)0, KmTYPE_OPTION, &_GEANT_DRAWING_DFSPC_CSORT_type };
1264 static char *_GEANT_DRAWING_DFSPC_CINTER_range[] = { "I", "B", "0", "1" };
1265 static char *_GEANT_DRAWING_DFSPC_CINTER_text[] = { (char*)0, (char*)0,
1266  (char*)0, (char*)0 };
1267 static KmParOption _GEANT_DRAWING_DFSPC_CINTER_type = {
1268  _GEANT_DRAWING_DFSPC_CINTER_text, (int*)0, (int*)0 };
1269 static KmParameter _GEANT_DRAWING_DFSPC_CINTER = { "CINTER", 6,
1270  "Interactive/Batch version", "I", (char*)0, 8, 4,
1271  _GEANT_DRAWING_DFSPC_CINTER_range, 4, _GEANT_DRAWING_DFSPC_CINTER_range,
1272  (KmParFlag)0, KmTYPE_OPTION, &_GEANT_DRAWING_DFSPC_CINTER_type };
1273 static KmParameter *_GEANT_DRAWING_DFSPC_parameters[] = {
1274  &_GEANT_DRAWING_DFSPC_NAME, &_GEANT_DRAWING_DFSPC_CSORT,
1275  &_GEANT_DRAWING_DFSPC_CINTER };
1276 static char *_GEANT_DRAWING_DFSPC_guidance[] = {
1277  " CALL GDFSPC(name,isort,inter)",
1278  "Same as DSPEC, but it will draw the specifications for all the volumes.",
1279  "If the alphabetic sorting flag is YES, all pictures will be drawn in\
1280  ascending", "alphabetic order; isort is set to 1.",
1281  "If INTERACTIVE, (inter=1), the routine will prompt the user at each plot",
1282  "before doing a clear screen, otherwise it will clear automatically",
1283  "the screen before starting a new frame." };
1284 static KmCommand _GEANT_DRAWING_DFSPC = { &_GEANT_DRAWING_DTEXT,
1285  "/GEANT/DRAWING/DFSPC", "DFSPC", 0, 2, 3, 1, _GEANT_DRAWING_DFSPC_parameters,
1286  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 7,
1287  _GEANT_DRAWING_DFSPC_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1288  (char*)0, (int*)0 };
1289  
1290 static KmParameter _GEANT_DRAWING_D3DSPEC_NAME = { "NAME", 4, "Volume name",
1291  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
1292  KmTYPE_CHAR,  (void*)0 };
1293 static KmParReal   _GEANT_DRAWING_D3DSPEC_TETA3_type = { "0.", "180.", "0.",
1294  "180.", 0 };
1295 static KmParameter _GEANT_DRAWING_D3DSPEC_TETA3 = { "TETA3", 5, "Theta angle",
1296  "40.", (char*)0, 12, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1297  &_GEANT_DRAWING_D3DSPEC_TETA3_type };
1298 static KmParReal   _GEANT_DRAWING_D3DSPEC_PHI3_type = { "0.", "360.", "0.",
1299  "360.", 0 };
1300 static KmParameter _GEANT_DRAWING_D3DSPEC_PHI3 = { "PHI3", 4, "Phi angle",
1301  "40.", (char*)0, 12, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1302  &_GEANT_DRAWING_D3DSPEC_PHI3_type };
1303 static KmParReal   _GEANT_DRAWING_D3DSPEC_PSI3_type = { "0.", "360.", "0.",
1304  "360.", 0 };
1305 static KmParameter _GEANT_DRAWING_D3DSPEC_PSI3 = { "PSI3", 4, "Psi angle",
1306  "0.", (char*)0, 12, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1307  &_GEANT_DRAWING_D3DSPEC_PSI3_type };
1308 static KmParReal   _GEANT_DRAWING_D3DSPEC_U03_type = { "-40.", "40.", "-40.",
1309  "40.", 0 };
1310 static KmParameter _GEANT_DRAWING_D3DSPEC_U03 = { "U03", 3,
1311  "U-coord. (horizontal) of volume origin", "10.", (char*)0, 12, 0, (char**)0,
1312  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_D3DSPEC_U03_type };
1313 static KmParReal   _GEANT_DRAWING_D3DSPEC_V03_type = { "-40.", "40.", "-40.",
1314  "40.", 0 };
1315 static KmParameter _GEANT_DRAWING_D3DSPEC_V03 = { "V03", 3,
1316  "V-coord. (vertical) of volume origin", "10.", (char*)0, 12, 0, (char**)0, 0,
1317  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_D3DSPEC_V03_type };
1318 static KmParReal   _GEANT_DRAWING_D3DSPEC_ZM3_type = { "0.00001", "10.",
1319  "0.00001", "10.", 5 };
1320 static KmParameter _GEANT_DRAWING_D3DSPEC_ZM3 = { "ZM3", 3,
1321  "Zoom factor for current size factors", "1.", (char*)0, 12, 0, (char**)0, 0,
1322  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_D3DSPEC_ZM3_type };
1323 static KmParameter *_GEANT_DRAWING_D3DSPEC_parameters[] = {
1324  &_GEANT_DRAWING_D3DSPEC_NAME, &_GEANT_DRAWING_D3DSPEC_TETA3,
1325  &_GEANT_DRAWING_D3DSPEC_PHI3, &_GEANT_DRAWING_D3DSPEC_PSI3,
1326  &_GEANT_DRAWING_D3DSPEC_U03, &_GEANT_DRAWING_D3DSPEC_V03,
1327  &_GEANT_DRAWING_D3DSPEC_ZM3 };
1328 static char *_GEANT_DRAWING_D3DSPEC_guidance[] = {
1329  "Trough a call to GSPE3D, this command allows one to show",
1330  "the volume (3D views in real time), together with",
1331  "its geometrical specifications (if using MOTIF). The 3D drawing will",
1332  "be performed according the current values of the options HIDE and",
1333  "SHAD and according the current CVOL clipping parameters for that", "volume."
1334  };
1335 static KmCommand _GEANT_DRAWING_D3DSPEC = { &_GEANT_DRAWING_DFSPC,
1336  "/GEANT/DRAWING/D3DSPEC", "D3DSPEC", 0, 2, 7, 1,
1337  _GEANT_DRAWING_D3DSPEC_parameters, 0, 0, gxdraw_, (IntFunc*)0,
1338  (SUBROUTINE*)0, (pCharFunc*)0, 6, _GEANT_DRAWING_D3DSPEC_guidance, 0,
1339  (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
1340  
1341 static KmParameter _GEANT_DRAWING_DSPEC_NAME = { "NAME", 4, "Volume name",
1342  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
1343  KmTYPE_CHAR,  (void*)0 };
1344 static KmParameter *_GEANT_DRAWING_DSPEC_parameters[] = {
1345  &_GEANT_DRAWING_DSPEC_NAME };
1346 static char *_GEANT_DRAWING_DSPEC_guidance[] = {
1347  "Trough a call to GDSPEC(name), this command allows one to show three",
1348  "views of the volume (two cut-views and a 3D view), together with",
1349  "its geometrical specifications. The 3D drawing will",
1350  "be performed according the current values of the options HIDE and",
1351  "SHAD and according the current CVOL clipping parameters for that", "volume."
1352  };
1353 static KmCommand _GEANT_DRAWING_DSPEC = { &_GEANT_DRAWING_D3DSPEC,
1354  "/GEANT/DRAWING/DSPEC", "DSPEC", 0, 2, 1, 1, _GEANT_DRAWING_DSPEC_parameters,
1355  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 6,
1356  _GEANT_DRAWING_DSPEC_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1357  (char*)0, (int*)0 };
1358  
1359 static KmParameter _GEANT_DRAWING_DTREE_NAME = { "NAME", 4, "Volume name",
1360  " ", (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,
1361  (void*)0 };
1362 static KmParInt    _GEANT_DRAWING_DTREE_LEVMAX_type = { "-15", "15", "-15",
1363  "15", 0 };
1364 static KmParameter _GEANT_DRAWING_DTREE_LEVMAX = { "LEVMAX", 6, "Depth level",
1365  "3", (char*)0, 3, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_INT,
1366  &_GEANT_DRAWING_DTREE_LEVMAX_type };
1367 static KmParInt    _GEANT_DRAWING_DTREE_ISELT_type = { (char*)0, (char*)0,
1368  (char*)0, (char*)0, 0 };
1369 static KmParameter _GEANT_DRAWING_DTREE_ISELT = { "ISELT", 5, "Options    ",
1370  "111", (char*)0, 8, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_INT,
1371  &_GEANT_DRAWING_DTREE_ISELT_type };
1372 static KmParameter *_GEANT_DRAWING_DTREE_parameters[] = {
1373  &_GEANT_DRAWING_DTREE_NAME, &_GEANT_DRAWING_DTREE_LEVMAX,
1374  &_GEANT_DRAWING_DTREE_ISELT };
1375 static char *_GEANT_DRAWING_DTREE_guidance[] = {
1376  "This command allows the drawing of the logical tree,",
1377  "displaying the name, the multiplicity and other information about the\
1378  volumes,", "via a call to GDTREE(name,levmax,isel):",
1379  "if the third parameter is not given (default), the command will",
1380  "produce the drawing of the tree displaying, for each volume, the",
1381  "number of the following levels (red arrows) and of the preceeding",
1382  "levels (green arrows); then the control is automatically given to the",
1383  "mouse: clicking on the left button when the cursor is inside a volume's",
1384  "pave will perform a DSPEC for that volume; doing the same when the cursor",
1385  "is on a red arrow, will perform a DTREE for the relative volume (the",
1386  "number of levels displayed depending on the clicked arrow); doing the",
1387  "same for the 'i-th' green arrow of a given volume, will perform a DTREE",
1388  "for its mother-volume staying 'i' levels before.",
1389  "If running with X-windows, the drawing of the specification (DSPEC)",
1390  "is performed",
1391  "in a different window to speed up the scanning of the tree.",
1392  "Iterating this procedure it is possible to analyse very easily and quickly",
1393  "any kind of tree. Clicking the right button of the mouse will return",
1394  "the control to the command mode.", "If the ISELT parameter is given,",
1395  "then the TREE will work as in the",
1396  "previous version, with ISELT up to 10001.",
1397  "The following command will perform a drawing of the tree and give the",
1398  "control to the user via the mouse:", " EXAMPLE -", " dtree NAME 3" };
1399 static KmCommand _GEANT_DRAWING_DTREE = { &_GEANT_DRAWING_DSPEC,
1400  "/GEANT/DRAWING/DTREE", "DTREE", 0, 2, 3, 0, _GEANT_DRAWING_DTREE_parameters,
1401  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 26,
1402  _GEANT_DRAWING_DTREE_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1403  (char*)0, (int*)0 };
1404  
1405 static KmParReal   _GEANT_DRAWING_BOMB_BOOM_type = { "-10.", "10.", "-10.",
1406  "10.", 0 };
1407 static KmParameter _GEANT_DRAWING_BOMB_BOOM = { "BOOM", 4,
1408  " Exploding factor for volumes position ", "0.", (char*)0, 12, 0, (char**)0,
1409  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_BOMB_BOOM_type };
1410 static KmParameter *_GEANT_DRAWING_BOMB_parameters[] = {
1411  &_GEANT_DRAWING_BOMB_BOOM };
1412 static char *_GEANT_DRAWING_BOMB_guidance[] = {
1413  "To 'explode' the detector. If BOOM is positive (values smaller",
1414  "than 1. are suggested, but any value is possible)",
1415  "all the volumes are shifted by a distance",
1416  "proportional to BOOM along the direction between their centre",
1417  "and the origin of the MARS; the volumes which are symmetric",
1418  "with respect to this origin are simply not shown.",
1419  "BOOM equal to 0 resets the normal mode.",
1420  "A negative (greater than -1.) value of",
1421  "BOOM will cause an 'implosion'; for even lower values of BOOM",
1422  "the volumes' positions will be reflected respect to the origin.",
1423  "This command can be useful to improve the 3D effect for very",
1424  "complex detectors. The following commands will make explode the",
1425  "detector:", " EXAMPLE -", " dopt hide on", " satt * seen 1",
1426  " draw NAME 40 40 0 10 10 .01 .01", " bomb 1", " next",
1427  " draw NAME 40 40 0 10 10 .01 .01" };
1428 static KmCommand _GEANT_DRAWING_BOMB = { &_GEANT_DRAWING_DTREE,
1429  "/GEANT/DRAWING/BOMB", "BOMB", 0, 2, 1, 1, _GEANT_DRAWING_BOMB_parameters, 0,
1430  0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 20,
1431  _GEANT_DRAWING_BOMB_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1432  (char*)0, (int*)0 };
1433  
1434 static KmParameter _GEANT_DRAWING_SHIFT_CNVN = { "CNVN", 4,
1435  " Name of volume to be shifted        ", "*", (char*)0, 20, 0, (char**)0, 0,
1436  (char**)0, (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
1437 static KmParReal   _GEANT_DRAWING_SHIFT_XXXX_type = { (char*)0, (char*)0,
1438  (char*)0, (char*)0, 0 };
1439 static KmParameter _GEANT_DRAWING_SHIFT_XXXX = { "XXXX", 4,
1440  " Shift along X axis                  ", "0.", (char*)0, 12, 0, (char**)0, 0,
1441  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_SHIFT_XXXX_type };
1442 static KmParReal   _GEANT_DRAWING_SHIFT_YYYY_type = { (char*)0, (char*)0,
1443  (char*)0, (char*)0, 0 };
1444 static KmParameter _GEANT_DRAWING_SHIFT_YYYY = { "YYYY", 4,
1445  " Shift along Y axis                  ", "0.", (char*)0, 12, 0, (char**)0, 0,
1446  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_SHIFT_YYYY_type };
1447 static KmParReal   _GEANT_DRAWING_SHIFT_ZZZZ_type = { (char*)0, (char*)0,
1448  (char*)0, (char*)0, 0 };
1449 static KmParameter _GEANT_DRAWING_SHIFT_ZZZZ = { "ZZZZ", 4,
1450  " Shift along Z axis                  ", "0.", (char*)0, 12, 0, (char**)0, 0,
1451  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_SHIFT_ZZZZ_type };
1452 static KmParameter *_GEANT_DRAWING_SHIFT_parameters[] = {
1453  &_GEANT_DRAWING_SHIFT_CNVN, &_GEANT_DRAWING_SHIFT_XXXX,
1454  &_GEANT_DRAWING_SHIFT_YYYY, &_GEANT_DRAWING_SHIFT_ZZZZ };
1455 static char *_GEANT_DRAWING_SHIFT_guidance[] = {
1456  "To draw a volume shifted from its initial position when hidden",
1457  "line removal is ON. It can be useful if you want to extract a",
1458  "volume or some volumes from the detector to show them more clearly.",
1459  "The last requested SHIFT for each volume",
1460  "NAME is performed. Moreover, the SHIFT of",
1461  "each volume will be performed starting from where its mother has",
1462  "been shifted, so that it's easier to SHIFT nicely sets",
1463  "of volumes using the mother-daughter relationships.",
1464  "If '.' is given as the name of the volume",
1465  "to be shifted, the shifts for all volumes will be reset.",
1466  "The following commands will produce the translation along",
1467  "the Z-axis of the previously drawn volume:", " EXAMPLE -", " dopt hide on",
1468  " satt * seen -2", " draw NAME 40 40 0 10 10 .01 .01", " shift NAME 0 0 10" };
1469 static KmCommand _GEANT_DRAWING_SHIFT = { &_GEANT_DRAWING_BOMB,
1470  "/GEANT/DRAWING/SHIFT", "SHIFT", 0, 2, 4, 4, _GEANT_DRAWING_SHIFT_parameters,
1471  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 17,
1472  _GEANT_DRAWING_SHIFT_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1473  (char*)0, (int*)0 };
1474  
1475 static KmParameter _GEANT_DRAWING_DXCUT_NAME = { "NAME", 4, "Volume name",
1476  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
1477  KmTYPE_CHAR,  (void*)0 };
1478 static KmParReal   _GEANT_DRAWING_DXCUT_CUTTHE_type = { "0.", "360.", "0.",
1479  "360.", 0 };
1480 static KmParameter _GEANT_DRAWING_DXCUT_CUTTHE = { "CUTTHE", 6,
1481  "Theta angle of the line normal to cut plane", (char*)0, (char*)0, 12, 0,
1482  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1483  &_GEANT_DRAWING_DXCUT_CUTTHE_type };
1484 static KmParReal   _GEANT_DRAWING_DXCUT_CUTPHI_type = { "0.", "360.", "0.",
1485  "360.", 0 };
1486 static KmParameter _GEANT_DRAWING_DXCUT_CUTPHI = { "CUTPHI", 6,
1487  "Phi angle of the line normal to cut plane", (char*)0, (char*)0, 12, 0,
1488  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1489  &_GEANT_DRAWING_DXCUT_CUTPHI_type };
1490 static KmParReal   _GEANT_DRAWING_DXCUT_CUTVAL_type = { (char*)0, (char*)0,
1491  (char*)0, (char*)0, 0 };
1492 static KmParameter _GEANT_DRAWING_DXCUT_CUTVAL = { "CUTVAL", 6,
1493  "Cut plane distance from the origin along the axis", (char*)0, (char*)0, 12,
1494  0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1495  &_GEANT_DRAWING_DXCUT_CUTVAL_type };
1496 static KmParReal   _GEANT_DRAWING_DXCUT_THETA_type = { "0.", "360.", "0.",
1497  "360.", 0 };
1498 static KmParameter _GEANT_DRAWING_DXCUT_THETA = { "THETA", 5,
1499  "Viewing angle theta (for 3D projection)", (char*)0, (char*)0, 12, 0,
1500  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1501  &_GEANT_DRAWING_DXCUT_THETA_type };
1502 static KmParReal   _GEANT_DRAWING_DXCUT_PHI_type = { "0.", "360.", "0.",
1503  "360.", 0 };
1504 static KmParameter _GEANT_DRAWING_DXCUT_PHI = { "PHI", 3,
1505  "Viewing angle phi (for 3D projection)", (char*)0, (char*)0, 12, 0,
1506  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1507  &_GEANT_DRAWING_DXCUT_PHI_type };
1508 static KmParReal   _GEANT_DRAWING_DXCUT_U0_type = { (char*)0, (char*)0,
1509  (char*)0, (char*)0, 0 };
1510 static KmParameter _GEANT_DRAWING_DXCUT_U0 = { "U0", 2,
1511  "U-coord. (horizontal) of volume origin", (char*)0, (char*)0, 12, 0,
1512  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1513  &_GEANT_DRAWING_DXCUT_U0_type };
1514 static KmParReal   _GEANT_DRAWING_DXCUT_V0_type = { (char*)0, (char*)0,
1515  (char*)0, (char*)0, 0 };
1516 static KmParameter _GEANT_DRAWING_DXCUT_V0 = { "V0", 2,
1517  "V-coord. (vertical) of volume origin", (char*)0, (char*)0, 12, 0, (char**)0,
1518  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DXCUT_V0_type };
1519 static KmParReal   _GEANT_DRAWING_DXCUT_SU_type = { (char*)0, (char*)0,
1520  (char*)0, (char*)0, 0 };
1521 static KmParameter _GEANT_DRAWING_DXCUT_SU = { "SU", 2,
1522  "Scale factor for U-coord.", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1523  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DXCUT_SU_type };
1524 static KmParReal   _GEANT_DRAWING_DXCUT_SV_type = { (char*)0, (char*)0,
1525  (char*)0, (char*)0, 0 };
1526 static KmParameter _GEANT_DRAWING_DXCUT_SV = { "SV", 2,
1527  "Scale factor for V-coord.", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1528  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DXCUT_SV_type };
1529 static KmParameter *_GEANT_DRAWING_DXCUT_parameters[] = {
1530  &_GEANT_DRAWING_DXCUT_NAME, &_GEANT_DRAWING_DXCUT_CUTTHE,
1531  &_GEANT_DRAWING_DXCUT_CUTPHI, &_GEANT_DRAWING_DXCUT_CUTVAL,
1532  &_GEANT_DRAWING_DXCUT_THETA, &_GEANT_DRAWING_DXCUT_PHI,
1533  &_GEANT_DRAWING_DXCUT_U0, &_GEANT_DRAWING_DXCUT_V0, &_GEANT_DRAWING_DXCUT_SU,
1534  &_GEANT_DRAWING_DXCUT_SV };
1535 static char *_GEANT_DRAWING_DXCUT_guidance[] = {
1536  " CALL GDRAWX(name,cutthe,cutphi,cutval,theta,phi,u0,v0,su,sv)",
1537  "The cut plane is normal to the line given by the cut angles",
1538  "cutthe and cutphi and placed at the distance cutval from the origin.",
1539  "The resulting picture is seen from the viewing angles theta,phi.",
1540  "If optional parameters are missing, the current values in /GCDRAW/",
1541  "are taken." };
1542 static KmCommand _GEANT_DRAWING_DXCUT = { &_GEANT_DRAWING_SHIFT,
1543  "/GEANT/DRAWING/DXCUT", "DXCUT", 0, 2, 10, 4,
1544  _GEANT_DRAWING_DXCUT_parameters, 0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0,
1545  (pCharFunc*)0, 6, _GEANT_DRAWING_DXCUT_guidance, 0, (char**)0, 0, (char**)0,
1546  0, (char**)0, (char*)0, (int*)0 };
1547  
1548 static KmParameter _GEANT_DRAWING_DCUT_NAME = { "NAME", 4, "Volume name",
1549  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
1550  KmTYPE_CHAR,  (void*)0 };
1551 static char *_GEANT_DRAWING_DCUT_CAXIS_range[] = { "X", "Y", "Z" };
1552 static char *_GEANT_DRAWING_DCUT_CAXIS_text[] = { (char*)0, (char*)0, (char*)0
1553  };
1554 static KmParOption _GEANT_DRAWING_DCUT_CAXIS_type = {
1555  _GEANT_DRAWING_DCUT_CAXIS_text, (int*)0, (int*)0 };
1556 static KmParameter _GEANT_DRAWING_DCUT_CAXIS = { "CAXIS", 5, "Axis value",
1557  (char*)0, (char*)0, 8, 3, _GEANT_DRAWING_DCUT_CAXIS_range, 3,
1558  _GEANT_DRAWING_DCUT_CAXIS_range, (KmParFlag)0, KmTYPE_OPTION,
1559  &_GEANT_DRAWING_DCUT_CAXIS_type };
1560 static KmParReal   _GEANT_DRAWING_DCUT_CUTVAL_type = { (char*)0, (char*)0,
1561  (char*)0, (char*)0, 0 };
1562 static KmParameter _GEANT_DRAWING_DCUT_CUTVAL = { "CUTVAL", 6,
1563  "Cut plane distance from the origin along the axis", (char*)0, (char*)0, 12,
1564  0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1565  &_GEANT_DRAWING_DCUT_CUTVAL_type };
1566 static KmParReal   _GEANT_DRAWING_DCUT_U0_type = { (char*)0, (char*)0,
1567  (char*)0, (char*)0, 0 };
1568 static KmParameter _GEANT_DRAWING_DCUT_U0 = { "U0", 2,
1569  "U-coord. (horizontal) of volume origin", (char*)0, (char*)0, 12, 0,
1570  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1571  &_GEANT_DRAWING_DCUT_U0_type };
1572 static KmParReal   _GEANT_DRAWING_DCUT_V0_type = { (char*)0, (char*)0,
1573  (char*)0, (char*)0, 0 };
1574 static KmParameter _GEANT_DRAWING_DCUT_V0 = { "V0", 2,
1575  "V-coord. (vertical) of volume origin", (char*)0, (char*)0, 12, 0, (char**)0,
1576  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DCUT_V0_type };
1577 static KmParReal   _GEANT_DRAWING_DCUT_SU_type = { (char*)0, (char*)0,
1578  (char*)0, (char*)0, 0 };
1579 static KmParameter _GEANT_DRAWING_DCUT_SU = { "SU", 2,
1580  "Scale factor for U-coord.", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1581  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DCUT_SU_type };
1582 static KmParReal   _GEANT_DRAWING_DCUT_SV_type = { (char*)0, (char*)0,
1583  (char*)0, (char*)0, 0 };
1584 static KmParameter _GEANT_DRAWING_DCUT_SV = { "SV", 2,
1585  "Scale factor for V-coord.", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1586  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DCUT_SV_type };
1587 static KmParameter *_GEANT_DRAWING_DCUT_parameters[] = {
1588  &_GEANT_DRAWING_DCUT_NAME, &_GEANT_DRAWING_DCUT_CAXIS,
1589  &_GEANT_DRAWING_DCUT_CUTVAL, &_GEANT_DRAWING_DCUT_U0,
1590  &_GEANT_DRAWING_DCUT_V0, &_GEANT_DRAWING_DCUT_SU, &_GEANT_DRAWING_DCUT_SV };
1591 static char *_GEANT_DRAWING_DCUT_guidance[] = {
1592  " CALL GDRAWC(name,iaxis,cutval,u0,v0,su,sv)",
1593  "The cut plane is normal to caxis (X,Y,Z), corresponding to iaxis (1,2,3),",
1594  "and placed at the distance cutval from the origin.",
1595  "The resulting picture is seen from the the same axis.",
1596  "If optional parameters are missing, the current values in /GCDRAW/",
1597  "are taken.",
1598  "When HIDE Mode is ON, it is possible to get the same effect with",
1599  "the CVOL/BOX command." };
1600 static KmCommand _GEANT_DRAWING_DCUT = { &_GEANT_DRAWING_DXCUT,
1601  "/GEANT/DRAWING/DCUT", "DCUT", 0, 2, 7, 3, _GEANT_DRAWING_DCUT_parameters, 0,
1602  0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 8,
1603  _GEANT_DRAWING_DCUT_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1604  (char*)0, (int*)0 };
1605  
1606 static KmParInt    _GEANT_DRAWING_DVOLUME_N_type = { (char*)0, (char*)0,
1607  (char*)0, (char*)0, 0 };
1608 static KmParameter _GEANT_DRAWING_DVOLUME_N = { "N", 1,
1609  "Number of elements in arrays LNAMES and LNUMBS", "1", (char*)0, 8, 0,
1610  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_INT,
1611  &_GEANT_DRAWING_DVOLUME_N_type };
1612 static KmParameter _GEANT_DRAWING_DVOLUME_NAMNUM = { "NAMNUM", 6,
1613  "Volume names and numbers (ex. \"NAME1,NR1,NAME2,NR2\")", (char*)0, (char*)0,
1614  20, 0, (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
1615 static char *_GEANT_DRAWING_DVOLUME_CHNRS_range[] = { "MARS", "DRS" };
1616 static char *_GEANT_DRAWING_DVOLUME_CHNRS_text[] = { (char*)0, (char*)0 };
1617 static KmParOption _GEANT_DRAWING_DVOLUME_CHNRS_type = {
1618  _GEANT_DRAWING_DVOLUME_CHNRS_text, (int*)0, (int*)0 };
1619 static KmParameter _GEANT_DRAWING_DVOLUME_CHNRS = { "CHNRS", 5,
1620  "Reference system used", "MARS", (char*)0, 8, 2,
1621  _GEANT_DRAWING_DVOLUME_CHNRS_range, 2, _GEANT_DRAWING_DVOLUME_CHNRS_range,
1622  (KmParFlag)0, KmTYPE_OPTION, &_GEANT_DRAWING_DVOLUME_CHNRS_type };
1623 static KmParReal   _GEANT_DRAWING_DVOLUME_THETA_type = { "0.", "360.", "0.",
1624  "360.", 0 };
1625 static KmParameter _GEANT_DRAWING_DVOLUME_THETA = { "THETA", 5,
1626  "Viewing angle theta (for 3D projection)", (char*)0, (char*)0, 12, 0,
1627  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1628  &_GEANT_DRAWING_DVOLUME_THETA_type };
1629 static KmParReal   _GEANT_DRAWING_DVOLUME_PHI_type = { "0.", "360.", "0.",
1630  "360.", 0 };
1631 static KmParameter _GEANT_DRAWING_DVOLUME_PHI = { "PHI", 3,
1632  "Viewing angle phi (for 3D projection)", (char*)0, (char*)0, 12, 0,
1633  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1634  &_GEANT_DRAWING_DVOLUME_PHI_type };
1635 static KmParReal   _GEANT_DRAWING_DVOLUME_PSI_type = { "0.", "180.", "0.",
1636  "180.", 0 };
1637 static KmParameter _GEANT_DRAWING_DVOLUME_PSI = { "PSI", 3,
1638  "Viewing angle psi (for 2D rotation)", (char*)0, (char*)0, 12, 0, (char**)0,
1639  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DVOLUME_PSI_type };
1640 static KmParReal   _GEANT_DRAWING_DVOLUME_U0_type = { (char*)0, (char*)0,
1641  (char*)0, (char*)0, 0 };
1642 static KmParameter _GEANT_DRAWING_DVOLUME_U0 = { "U0", 2,
1643  "U-coord. (horizontal) of volume origin", (char*)0, (char*)0, 12, 0,
1644  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1645  &_GEANT_DRAWING_DVOLUME_U0_type };
1646 static KmParReal   _GEANT_DRAWING_DVOLUME_V0_type = { (char*)0, (char*)0,
1647  (char*)0, (char*)0, 0 };
1648 static KmParameter _GEANT_DRAWING_DVOLUME_V0 = { "V0", 2,
1649  "V-coord. (vertical) of volume origin", (char*)0, (char*)0, 12, 0, (char**)0,
1650  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DVOLUME_V0_type };
1651 static KmParReal   _GEANT_DRAWING_DVOLUME_SU_type = { (char*)0, (char*)0,
1652  (char*)0, (char*)0, 0 };
1653 static KmParameter _GEANT_DRAWING_DVOLUME_SU = { "SU", 2,
1654  "Scale factor for U-coord.", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1655  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DVOLUME_SU_type };
1656 static KmParReal   _GEANT_DRAWING_DVOLUME_SV_type = { (char*)0, (char*)0,
1657  (char*)0, (char*)0, 0 };
1658 static KmParameter _GEANT_DRAWING_DVOLUME_SV = { "SV", 2,
1659  "Scale factor for V-coord.", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1660  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DVOLUME_SV_type };
1661 static KmParameter *_GEANT_DRAWING_DVOLUME_parameters[] = {
1662  &_GEANT_DRAWING_DVOLUME_N, &_GEANT_DRAWING_DVOLUME_NAMNUM,
1663  &_GEANT_DRAWING_DVOLUME_CHNRS, &_GEANT_DRAWING_DVOLUME_THETA,
1664  &_GEANT_DRAWING_DVOLUME_PHI, &_GEANT_DRAWING_DVOLUME_PSI,
1665  &_GEANT_DRAWING_DVOLUME_U0, &_GEANT_DRAWING_DVOLUME_V0,
1666  &_GEANT_DRAWING_DVOLUME_SU, &_GEANT_DRAWING_DVOLUME_SV };
1667 static char *_GEANT_DRAWING_DVOLUME_guidance[] = {
1668  " CALL GDRVOL(n,lnames,lnumbs,nrs,theta,phi,psi,u0,v0,su,sv)",
1669  "N is the number of levels from the top of the geometry structure",
1670  "to the volume lnames(n),lnumbs(n) to be drawn.",
1671  "NAMNUM contain the arrays lnames and lnumbs,",
1672  "identifying the path, in pairs and separated by commas; for",
1673  "example (with n=2) :", "'lname(1),lnumbs(1),lname(2),lnumbs(2) '",
1674  "CHNRS is the name of the reference system used: MARS for MAster Reference",
1675  "System or DRS for Daughter Reference System.",
1676  "NRS=0 for MARS or NRS<>0 for DRS",
1677  "If optional parameters are missing, the current values in /GCDRAW/",
1678  "are taken." };
1679 static KmCommand _GEANT_DRAWING_DVOLUME = { &_GEANT_DRAWING_DCUT,
1680  "/GEANT/DRAWING/DVOLUME", "DVOLUME", 0, 2, 10, 3,
1681  _GEANT_DRAWING_DVOLUME_parameters, 0, 0, gxdraw_, (IntFunc*)0,
1682  (SUBROUTINE*)0, (pCharFunc*)0, 12, _GEANT_DRAWING_DVOLUME_guidance, 0,
1683  (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
1684  
1685 static KmParReal   _GEANT_DRAWING_RANG5D_X1MIN_type = { (char*)0, (char*)0,
1686  (char*)0, (char*)0, 0 };
1687 static KmParameter _GEANT_DRAWING_RANG5D_X1MIN = { "X1MIN", 5,
1688  "x coordinate min", (char*)0, (char*)0, 12, 0, (char**)0, 0, (char**)0,
1689  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_RANG5D_X1MIN_type };
1690 static KmParReal   _GEANT_DRAWING_RANG5D_X1MAX_type = { (char*)0, (char*)0,
1691  (char*)0, (char*)0, 0 };
1692 static KmParameter _GEANT_DRAWING_RANG5D_X1MAX = { "X1MAX", 5,
1693  "x coordinate max", (char*)0, (char*)0, 12, 0, (char**)0, 0, (char**)0,
1694  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_RANG5D_X1MAX_type };
1695 static KmParReal   _GEANT_DRAWING_RANG5D_Y1MIN_type = { (char*)0, (char*)0,
1696  (char*)0, (char*)0, 0 };
1697 static KmParameter _GEANT_DRAWING_RANG5D_Y1MIN = { "Y1MIN", 5,
1698  "y coordinate min", (char*)0, (char*)0, 12, 0, (char**)0, 0, (char**)0,
1699  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_RANG5D_Y1MIN_type };
1700 static KmParReal   _GEANT_DRAWING_RANG5D_Y1MAX_type = { (char*)0, (char*)0,
1701  (char*)0, (char*)0, 0 };
1702 static KmParameter _GEANT_DRAWING_RANG5D_Y1MAX = { "Y1MAX", 5,
1703  "y coordinate max", (char*)0, (char*)0, 12, 0, (char**)0, 0, (char**)0,
1704  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_RANG5D_Y1MAX_type };
1705 static KmParReal   _GEANT_DRAWING_RANG5D_Z1MIN_type = { (char*)0, (char*)0,
1706  (char*)0, (char*)0, 0 };
1707 static KmParameter _GEANT_DRAWING_RANG5D_Z1MIN = { "Z1MIN", 5,
1708  "z coordinate min", (char*)0, (char*)0, 12, 0, (char**)0, 0, (char**)0,
1709  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_RANG5D_Z1MIN_type };
1710 static KmParReal   _GEANT_DRAWING_RANG5D_Z1MAX_type = { (char*)0, (char*)0,
1711  (char*)0, (char*)0, 0 };
1712 static KmParameter _GEANT_DRAWING_RANG5D_Z1MAX = { "Z1MAX", 5,
1713  "z coordinate max", (char*)0, (char*)0, 12, 0, (char**)0, 0, (char**)0,
1714  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_RANG5D_Z1MAX_type };
1715 static KmParameter *_GEANT_DRAWING_RANG5D_parameters[] = {
1716  &_GEANT_DRAWING_RANG5D_X1MIN, &_GEANT_DRAWING_RANG5D_X1MAX,
1717  &_GEANT_DRAWING_RANG5D_Y1MIN, &_GEANT_DRAWING_RANG5D_Y1MAX,
1718  &_GEANT_DRAWING_RANG5D_Z1MIN, &_GEANT_DRAWING_RANG5D_Z1MAX };
1719 static char *_GEANT_DRAWING_RANG5D_guidance[] = {
1720  "It sets the range for the x,y,z variables." };
1721 static KmCommand _GEANT_DRAWING_RANG5D = { &_GEANT_DRAWING_DVOLUME,
1722  "/GEANT/DRAWING/RANG5D", "RANG5D", 0, 2, 6, 6,
1723  _GEANT_DRAWING_RANG5D_parameters, 0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0,
1724  (pCharFunc*)0, 1, _GEANT_DRAWING_RANG5D_guidance, 0, (char**)0, 0, (char**)0,
1725  0, (char**)0, (char*)0, (int*)0 };
1726  
1727 static KmParReal   _GEANT_DRAWING_VAR5D_TSEQTO_type = { (char*)0, (char*)0,
1728  (char*)0, (char*)0, 0 };
1729 static KmParameter _GEANT_DRAWING_VAR5D_TSEQTO = { "TSEQTO", 6,
1730  "total sequential time", (char*)0, (char*)0, 12, 0, (char**)0, 0, (char**)0,
1731  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_VAR5D_TSEQTO_type };
1732 static KmParInt    _GEANT_DRAWING_VAR5D_NPROC_type = { (char*)0, (char*)0,
1733  (char*)0, (char*)0, 0 };
1734 static KmParameter _GEANT_DRAWING_VAR5D_NPROC = { "NPROC", 5,
1735  "number of processors", (char*)0, (char*)0, 8, 0, (char**)0, 0, (char**)0,
1736  (KmParFlag)0, KmTYPE_INT, &_GEANT_DRAWING_VAR5D_NPROC_type };
1737 static KmParInt    _GEANT_DRAWING_VAR5D_NMPTOT_type = { (char*)0, (char*)0,
1738  (char*)0, (char*)0, 0 };
1739 static KmParameter _GEANT_DRAWING_VAR5D_NMPTOT = { "NMPTOT", 6,
1740  "number of message passing", (char*)0, (char*)0, 8, 0, (char**)0, 0,
1741  (char**)0, (KmParFlag)0, KmTYPE_INT, &_GEANT_DRAWING_VAR5D_NMPTOT_type };
1742 static KmParReal   _GEANT_DRAWING_VAR5D_TOTMBY_type = { (char*)0, (char*)0,
1743  (char*)0, (char*)0, 0 };
1744 static KmParameter _GEANT_DRAWING_VAR5D_TOTMBY = { "TOTMBY", 6,
1745  "total megabytes transfert", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1746  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_VAR5D_TOTMBY_type };
1747 static KmParReal   _GEANT_DRAWING_VAR5D_TSEQ_type = { (char*)0, (char*)0,
1748  (char*)0, (char*)0, 0 };
1749 static KmParameter _GEANT_DRAWING_VAR5D_TSEQ = { "TSEQ", 4,
1750  "not parallelized code", (char*)0, (char*)0, 12, 0, (char**)0, 0, (char**)0,
1751  (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_VAR5D_TSEQ_type };
1752 static KmParReal   _GEANT_DRAWING_VAR5D_TLAT_type = { (char*)0, (char*)0,
1753  (char*)0, (char*)0, 0 };
1754 static KmParameter _GEANT_DRAWING_VAR5D_TLAT = { "TLAT", 4, "latency time",
1755  (char*)0, (char*)0, 12, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
1756  KmTYPE_REAL, &_GEANT_DRAWING_VAR5D_TLAT_type };
1757 static KmParReal   _GEANT_DRAWING_VAR5D_TNET_type = { (char*)0, (char*)0,
1758  (char*)0, (char*)0, 0 };
1759 static KmParameter _GEANT_DRAWING_VAR5D_TNET = { "TNET", 4,
1760  "network speed in Mbytes/sec", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1761  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_VAR5D_TNET_type };
1762 static KmParameter *_GEANT_DRAWING_VAR5D_parameters[] = {
1763  &_GEANT_DRAWING_VAR5D_TSEQTO, &_GEANT_DRAWING_VAR5D_NPROC,
1764  &_GEANT_DRAWING_VAR5D_NMPTOT, &_GEANT_DRAWING_VAR5D_TOTMBY,
1765  &_GEANT_DRAWING_VAR5D_TSEQ, &_GEANT_DRAWING_VAR5D_TLAT,
1766  &_GEANT_DRAWING_VAR5D_TNET };
1767 static char *_GEANT_DRAWING_VAR5D_guidance[] = {
1768  "It sets the values of the parameters expressed in the formula and",
1769  "specify which variables must be assumed as x,y,z (setting their value",
1770  "to 1001,1002,1003, respectively)." };
1771 static KmCommand _GEANT_DRAWING_VAR5D = { &_GEANT_DRAWING_RANG5D,
1772  "/GEANT/DRAWING/VAR5D", "VAR5D", 0, 2, 7, 7, _GEANT_DRAWING_VAR5D_parameters,
1773  0, 0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3,
1774  _GEANT_DRAWING_VAR5D_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1775  (char*)0, (int*)0 };
1776  
1777 static KmParReal   _GEANT_DRAWING_SPOT_XLPOS_type = { (char*)0, (char*)0,
1778  (char*)0, (char*)0, 0 };
1779 static KmParameter _GEANT_DRAWING_SPOT_XLPOS = { "XLPOS", 5,
1780  "x coordinate of light source", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1781  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_SPOT_XLPOS_type };
1782 static KmParReal   _GEANT_DRAWING_SPOT_YLPOS_type = { (char*)0, (char*)0,
1783  (char*)0, (char*)0, 0 };
1784 static KmParameter _GEANT_DRAWING_SPOT_YLPOS = { "YLPOS", 5,
1785  "y coordinate of light source", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1786  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_SPOT_YLPOS_type };
1787 static KmParReal   _GEANT_DRAWING_SPOT_ZLPOS_type = { (char*)0, (char*)0,
1788  (char*)0, (char*)0, 0 };
1789 static KmParameter _GEANT_DRAWING_SPOT_ZLPOS = { "ZLPOS", 5,
1790  "z coordinate of light source", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1791  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_SPOT_ZLPOS_type };
1792 static KmParInt    _GEANT_DRAWING_SPOT_INTEN_type = { (char*)0, (char*)0,
1793  (char*)0, (char*)0, 0 };
1794 static KmParameter _GEANT_DRAWING_SPOT_INTEN = { "INTEN", 5,
1795  "intensity of light source", (char*)0, (char*)0, 8, 0, (char**)0, 0,
1796  (char**)0, (KmParFlag)0, KmTYPE_INT, &_GEANT_DRAWING_SPOT_INTEN_type };
1797 static KmParameter *_GEANT_DRAWING_SPOT_parameters[] = {
1798  &_GEANT_DRAWING_SPOT_XLPOS, &_GEANT_DRAWING_SPOT_YLPOS,
1799  &_GEANT_DRAWING_SPOT_ZLPOS, &_GEANT_DRAWING_SPOT_INTEN };
1800 static char *_GEANT_DRAWING_SPOT_guidance[] = {
1801  "This point-like light source can be moved in the space and its intensity",
1802  "can be changed (INTEN going from 0 to 10) relatively to the ambience light."
1803  };
1804 static KmCommand _GEANT_DRAWING_SPOT = { &_GEANT_DRAWING_VAR5D,
1805  "/GEANT/DRAWING/SPOT", "SPOT", 0, 2, 4, 4, _GEANT_DRAWING_SPOT_parameters, 0,
1806  0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 2,
1807  _GEANT_DRAWING_SPOT_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1808  (char*)0, (int*)0 };
1809  
1810 static KmParameter _GEANT_DRAWING_DRAW_NAME = { "NAME", 4, "Volume name",
1811  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
1812  KmTYPE_CHAR,  (void*)0 };
1813 static KmParReal   _GEANT_DRAWING_DRAW_THETA_type = { "0.", "180.", "0.",
1814  "180.", 0 };
1815 static KmParameter _GEANT_DRAWING_DRAW_THETA = { "THETA", 5,
1816  "Viewing angle theta (for 3D projection)", (char*)0, (char*)0, 12, 0,
1817  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1818  &_GEANT_DRAWING_DRAW_THETA_type };
1819 static KmParReal   _GEANT_DRAWING_DRAW_PHI_type = { "0.", "360.", "0.",
1820  "360.", 0 };
1821 static KmParameter _GEANT_DRAWING_DRAW_PHI = { "PHI", 3,
1822  "Viewing angle phi (for 3D projection)", (char*)0, (char*)0, 12, 0,
1823  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1824  &_GEANT_DRAWING_DRAW_PHI_type };
1825 static KmParReal   _GEANT_DRAWING_DRAW_PSI_type = { "0.", "360.", "0.",
1826  "360.", 0 };
1827 static KmParameter _GEANT_DRAWING_DRAW_PSI = { "PSI", 3,
1828  "Viewing angle psi (for 2D rotation)", (char*)0, (char*)0, 12, 0, (char**)0,
1829  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DRAW_PSI_type };
1830 static KmParReal   _GEANT_DRAWING_DRAW_U0_type = { (char*)0, (char*)0,
1831  (char*)0, (char*)0, 0 };
1832 static KmParameter _GEANT_DRAWING_DRAW_U0 = { "U0", 2,
1833  "U-coord. (horizontal) of volume origin", (char*)0, (char*)0, 12, 0,
1834  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_REAL,
1835  &_GEANT_DRAWING_DRAW_U0_type };
1836 static KmParReal   _GEANT_DRAWING_DRAW_V0_type = { (char*)0, (char*)0,
1837  (char*)0, (char*)0, 0 };
1838 static KmParameter _GEANT_DRAWING_DRAW_V0 = { "V0", 2,
1839  "V-coord. (vertical) of volume origin", (char*)0, (char*)0, 12, 0, (char**)0,
1840  0, (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DRAW_V0_type };
1841 static KmParReal   _GEANT_DRAWING_DRAW_SU_type = { (char*)0, (char*)0,
1842  (char*)0, (char*)0, 0 };
1843 static KmParameter _GEANT_DRAWING_DRAW_SU = { "SU", 2,
1844  "Scale factor for U-coord.", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1845  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DRAW_SU_type };
1846 static KmParReal   _GEANT_DRAWING_DRAW_SV_type = { (char*)0, (char*)0,
1847  (char*)0, (char*)0, 0 };
1848 static KmParameter _GEANT_DRAWING_DRAW_SV = { "SV", 2,
1849  "Scale factor for V-coord.", (char*)0, (char*)0, 12, 0, (char**)0, 0,
1850  (char**)0, (KmParFlag)0, KmTYPE_REAL, &_GEANT_DRAWING_DRAW_SV_type };
1851 static KmParameter *_GEANT_DRAWING_DRAW_parameters[] = {
1852  &_GEANT_DRAWING_DRAW_NAME, &_GEANT_DRAWING_DRAW_THETA,
1853  &_GEANT_DRAWING_DRAW_PHI, &_GEANT_DRAWING_DRAW_PSI, &_GEANT_DRAWING_DRAW_U0,
1854  &_GEANT_DRAWING_DRAW_V0, &_GEANT_DRAWING_DRAW_SU, &_GEANT_DRAWING_DRAW_SV };
1855 static char *_GEANT_DRAWING_DRAW_guidance[] = {
1856  " CALL GDRAW(name,theta,phi,psi,u0,v0,su,sv)",
1857  "If optional parameters are missing, the corresponding values are",
1858  "taken from the common /GCDRAW/. This command will draw the volumes,",
1859  "selected with their graphical attributes, set by the SATT",
1860  "facility. The drawing may be performed with hidden line removal",
1861  "and with shading effects according to the value of the options HIDE",
1862  "and SHAD; if the option SHAD is ON, the contour's edges can be",
1863  "drawn or not. If the option HIDE is ON, the detector can be",
1864  "exploded (BOMB), clipped with different shapes (CVOL), and some",
1865  "of its parts can be shifted from their original",
1866  "position (SHIFT). When HIDE is ON, if",
1867  "the drawing requires more than the available memory, the program",
1868  "will evaluate and display the number of missing words",
1869  "(so that the user can increase the",
1870  "size of its ZEBRA store). Finally, at the end of each drawing (with HIDE\
1871  on),", "the program will print messages about the memory used and",
1872  "statistics on the volumes' visibility.",
1873  "The following commands will produce the drawing of a green",
1874  "volume, specified by NAME, without using the hidden line removal",
1875  "technique, using the hidden line removal technique,",
1876  "with different linewidth and colour (red), with",
1877  "solid colour, with shading of surfaces, and without edges.",
1878  "Finally, some examples are given for the ray-tracing. (A possible",
1879  "string for the NAME of the volume can be found using the command DTREE).",
1880  " EXAMPLE -", " satt * seen -2", " satt NAME colo 3",
1881  " draw NAME 40 40 0 10 10 .01 .01", " next", " dopt hide on",
1882  " draw NAME 40 40 0 10 10 .01 .01", " next", " satt NAME colo 2",
1883  " satt NAME lwid 4", " draw NAME 40 40 0 10 10 .01 .01", " next",
1884  " dopt shad on", " satt * lwid 1", " satt NAME fill 1",
1885  " draw NAME 40 40 0 10 10 .01 .01", " next", " satt NAME fill 3",
1886  " draw NAME 40 40 0 10 10 .01 .01", " next", " dopt edge off",
1887  " draw NAME 40 40 0 10 10 .01 .01", " dopt rayt on", " satt * fill 20",
1888  " dopt mapp 1", " draw NAME 40 40 0 10 10 .01 .01", " dopt proj pers",
1889  " persp NAME 500", " draw NAME 40 40 0 10 10 1 1", " valcut 100 100 100",
1890  " dopt mapp 0", " dopt user on", " satt NAM1 seen 0", " satt NAM2 colo 2",
1891  " draw NAME 40 40 0 10 10 5 5" };
1892 static KmCommand _GEANT_DRAWING_DRAW = { &_GEANT_DRAWING_SPOT,
1893  "/GEANT/DRAWING/DRAW", "DRAW", 0, 2, 8, 1, _GEANT_DRAWING_DRAW_parameters, 0,
1894  0, gxdraw_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 59,
1895  _GEANT_DRAWING_DRAW_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
1896  (char*)0, (int*)0 };
1897  
1898 static char *_GEANT_DRAWING_guidance[] = {
1899  "Drawing commands. These commands allow the visualization in several ways",
1900  "of the volumes defined in the geometrical data structure. It is possible",
1901  "to draw the logical tree of volumes belonging to the detector (DTREE),",
1902  "to show their geometrical specification (DSPEC,DFSPC), to draw them",
1903  "and their cut views (DRAW, DCUT). Moreover, it is possible to execute",
1904  "these commands when the hidden line removal option is activated; in",
1905  "this case, the volumes can be also either translated in the space",
1906  "(SHIFT), or clipped by boolean operation (CVOL). In addition, it is",
1907  "possible to fill the surfaces of the volumes",
1908  "with solid colours when the shading option (SHAD) is activated.",
1909  "Several tools (ZOOM, LENS) have been developed to zoom detailed parts",
1910  "of the detectors or to scan physical events as well.",
1911  "Finally, the command MOVE will allow the rotation, translation and zooming",
1912  "on real time parts of the detectors or tracks and hits of a simulated\
1913  event.",
1914  "Ray-tracing commands. In case the command (DOPT RAYT ON) is executed,",
1915  "the drawing is performed by the Geant ray-tracing;",
1916  "automatically, the color is assigned according to the tracking medium of\
1917  each",
1918  "volume and the volumes with a density lower/equal than the air are\
1919  considered",
1920  "transparent; if the option (USER) is set (ON) (again via the command\
1921  (DOPT)),",
1922  "the user can set color and visibility for the desired volumes via the\
1923  command",
1924  "(SATT), as usual, relatively to the attributes (COLO) and (SEEN).",
1925  "The resolution can be set via the command (SATT * FILL VALUE), where\
1926  (VALUE)",
1927  "is the ratio between the number of pixels drawn and 20 (user coordinates).",
1928  "Parallel view and perspective view are possible (DOPT PROJ PARA/PERS); in\
1929  the",
1930  "first case, we assume that the first mother volume of the tree is a box\
1931  with",
1932  "dimensions 10000 X 10000 X 10000 cm and the view point (infinetely far) is",
1933  "5000 cm far from the origin along the Z axis of the user coordinates; in\
1934  the",
1935  "second case, the distance between the observer and the origin of the world",
1936  "reference system is set in cm by the command (PERSP NAME VALUE);\
1937  grand-angle",
1938  "or telescopic effects can be achieved changing the scale factors in the\
1939  command", "(DRAW). When the final picture does not occupy the full window,",
1940  "mapping the space before tracing can speed up the drawing, but can also",
1941  "produce less precise results; values from 1 to 4 are allowed in the\
1942  command",
1943  "(DOPT MAPP VALUE), the mapping being more precise for increasing (VALUE);\
1944  for",
1945  "(VALUE = 0) no mapping is performed (therefore max precision and lowest\
1946  speed).",
1947  "The command (VALCUT) allows the cutting of the detector by three planes",
1948  "ortogonal to the x,y,z axis. The attribute (LSTY) can be set by the\
1949  command",
1950  "SATT for any desired volume and can assume values from 0 to 7; it\
1951  determines",
1952  "the different light processing to be performed for different materials:",
1953  "0 = dark-matt, 1 = bright-matt, 2 = plastic, 3 = ceramic, 4 =\
1954  rough-metals,",
1955  "5 = shiny-metals, 6 = glass, 7 = mirror. The detector is assumed to be in\
1956  the",
1957  "dark, the ambient light luminosity is 0.2 for each basic hue (the\
1958  saturation",
1959  "is 0.9) and the observer is assumed to have a light source (therefore he\
1960  will",
1961  "produce parallel light in the case of parallel view and point-like-source",
1962  "light in the case of perspective view)." };
1963 static KmMenu _GEANT_DRAWING = {  (KmMenu*)0,  (KmMenu*)0, "/GEANT/DRAWING",
1964  "DRAWING", 2, &_GEANT_DRAWING_DRAW, 45, _GEANT_DRAWING_guidance, 0,
1965  (char**)0, 0, (char**)0 };
1966  
1967 static char *_GEANT_CVOL_guidance[] = { "Clipping commands.",
1968  "The hidden line removal technique is necessary to visualize properly",
1969  "very complex detectors. At the same time, it can be useful to visualize",
1970  "the inner elements of a detector in detail. For this purpose, the",
1971  "commands menu CVOL has been developed: these commands allow",
1972  "subtractions (via boolean operation) of given shapes from any part of",
1973  "the detector, therefore showing its inner contents. It is possible",
1974  "to clip each different volume by means of a different shape (BOX ,",
1975  "TUBE, CONE, SPHE are available). If '*' is given as the name of the",
1976  "volume to be clipped, all volumes are clipped by the given shape.",
1977  "A volume can be clipped at most twice (even by",
1978  "different shapes); if a volume is explicitely clipped",
1979  "twice, the '*' will not act on it anymore. Giving '.' as the name",
1980  "of the volume to be clipped will reset the clipping." };
1981 static KmMenu _GEANT_CVOL = { &_GEANT_DRAWING,  (KmMenu*)0, "/GEANT/CVOL",
1982  "CVOL", 2, &_GEANT_CVOL_BOX, 14, _GEANT_CVOL_guidance, 0, (char**)0, 0,
1983  (char**)0 };
1984  
1985 static char *_GEANT_guidance[] = { "GEANT specific commands." };
1986 static KmMenu _GEANT = {  (KmMenu*)0, &_GEANT_CVOL, "/GEANT", "GEANT", 1,
1987  (KmCommand*)0, 1, _GEANT_guidance, 0, (char**)0, 0, (char**)0 };
1988  
1989   klnkmenu( &_GEANT, 950303 );
1990 }
1991  
1992  
1993 #ifdef F77_LCASE
1994 #  define gkgcon_ gkgcon
1995 #  define gxgcon_ gxgcon
1996 #endif
1997  
1998 #ifdef F77_UCASE
1999 #  define gkgcon_ GKGCON
2000 #  define gxgcon_ GXGCON
2001 #endif
2002  
2003 #ifdef IBM370
2004 #  pragma linkage(GKGCON,FORTRAN)
2005 #  pragma linkage(GXGCON,FORTRAN)
2006 #endif
2007  
2008 extern void gkgcon_();
2009 extern void gxgcon_();
2010  
2011 void gkgcon_()
2012 {
2013  
2014 static KmParInt    _GEANT_GRAPHICS_CONTROL_MAP_COLOR_ICADD_type = { (char*)0,
2015  (char*)0, (char*)0, (char*)0, 0 };
2016 static KmParameter _GEANT_GRAPHICS_CONTROL_MAP_COLOR_ICADD = { "ICADD", 5,
2017  "Colour table index", "0", (char*)0, 8, 0, (char**)0, 0, (char**)0,
2018  (KmParFlag)0, KmTYPE_INT, &_GEANT_GRAPHICS_CONTROL_MAP_COLOR_ICADD_type };
2019 static KmParInt    _GEANT_GRAPHICS_CONTROL_MAP_COLOR_ICVAL_type = { (char*)0,
2020  (char*)0, (char*)0, (char*)0, 0 };
2021 static KmParameter _GEANT_GRAPHICS_CONTROL_MAP_COLOR_ICVAL = { "ICVAL", 5,
2022  "Colour table value", "0", (char*)0, 8, 0, (char**)0, 0, (char**)0,
2023  (KmParFlag)0, KmTYPE_INT, &_GEANT_GRAPHICS_CONTROL_MAP_COLOR_ICVAL_type };
2024 static KmParameter *_GEANT_GRAPHICS_CONTROL_MAP_COLOR_parameters[] = {
2025  &_GEANT_GRAPHICS_CONTROL_MAP_COLOR_ICADD,
2026  &_GEANT_GRAPHICS_CONTROL_MAP_COLOR_ICVAL };
2027 static char *_GEANT_GRAPHICS_CONTROL_MAP_COLOR_guidance[] = {
2028  "Sets the color table LOOKTB(ICADD)=ICVAL.",
2029  "If ICADD=0 then LOOKTB(1:16) is taken.",
2030  "If ICVAL is omitted the current value of LOOKTB(ICADD) is shown." };
2031 static KmCommand _GEANT_GRAPHICS_CONTROL_MAP_COLOR = {  (KmCommand*)0,
2032  "/GEANT/GRAPHICS_CONTROL/MAP_COLOR", "MAP_COLOR", 0, 2, 2, 0,
2033  _GEANT_GRAPHICS_CONTROL_MAP_COLOR_parameters, 0, 0, gxgcon_, (IntFunc*)0,
2034  (SUBROUTINE*)0, (pCharFunc*)0, 3, _GEANT_GRAPHICS_CONTROL_MAP_COLOR_guidance,
2035  0, (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
2036  
2037 static KmParReal   _GEANT_GRAPHICS_CONTROL_SPERS_DPERS_type = { (char*)0,
2038  (char*)0, (char*)0, (char*)0, 0 };
2039 static KmParameter _GEANT_GRAPHICS_CONTROL_SPERS_DPERS = { "DPERS", 5,
2040  "Distance from the origin", (char*)0, (char*)0, 12, 0, (char**)0, 0,
2041  (char**)0, (KmParFlag)0, KmTYPE_REAL,
2042  &_GEANT_GRAPHICS_CONTROL_SPERS_DPERS_type };
2043 static KmParameter *_GEANT_GRAPHICS_CONTROL_SPERS_parameters[] = {
2044  &_GEANT_GRAPHICS_CONTROL_SPERS_DPERS };
2045 static char *_GEANT_GRAPHICS_CONTROL_SPERS_guidance[] = {
2046  "Set the variable dpers in /GCDRAW/, representing",
2047  "the distance from the origin when using option PERSpective." };
2048 static KmCommand _GEANT_GRAPHICS_CONTROL_SPERS = {
2049  &_GEANT_GRAPHICS_CONTROL_MAP_COLOR, "/GEANT/GRAPHICS_CONTROL/SPERS", "SPERS",
2050  0, 2, 1, 1, _GEANT_GRAPHICS_CONTROL_SPERS_parameters, 0, 0, gxgcon_,
2051  (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 2,
2052  _GEANT_GRAPHICS_CONTROL_SPERS_guidance, 0, (char**)0, 0, (char**)0, 0,
2053  (char**)0, (char*)0, (int*)0 };
2054  
2055 static KmParReal   _GEANT_GRAPHICS_CONTROL_SIZE_XSIZE_type = { (char*)0,
2056  (char*)0, (char*)0, (char*)0, 0 };
2057 static KmParameter _GEANT_GRAPHICS_CONTROL_SIZE_XSIZE = { "XSIZE", 5,
2058  "Size along X", "20.", (char*)0, 12, 0, (char**)0, 0, (char**)0,
2059  (KmParFlag)0, KmTYPE_REAL, &_GEANT_GRAPHICS_CONTROL_SIZE_XSIZE_type };
2060 static KmParReal   _GEANT_GRAPHICS_CONTROL_SIZE_YSIZE_type = { (char*)0,
2061  (char*)0, (char*)0, (char*)0, 0 };
2062 static KmParameter _GEANT_GRAPHICS_CONTROL_SIZE_YSIZE = { "YSIZE", 5,
2063  "Size along Y", "20.", (char*)0, 12, 0, (char**)0, 0, (char**)0,
2064  (KmParFlag)0, KmTYPE_REAL, &_GEANT_GRAPHICS_CONTROL_SIZE_YSIZE_type };
2065 static KmParameter *_GEANT_GRAPHICS_CONTROL_SIZE_parameters[] = {
2066  &_GEANT_GRAPHICS_CONTROL_SIZE_XSIZE, &_GEANT_GRAPHICS_CONTROL_SIZE_YSIZE };
2067 static char *_GEANT_GRAPHICS_CONTROL_SIZE_guidance[] = {
2068  "Set the size of the picture.",
2069  "On the terminal, the pictures will have the ratio YSIZE/XSIZE, and,",
2070  "if a metafile is produced, pictures will be YSIZE by XSIZE cm.",
2071  "This command sets the parameters for the normalisation transformation",
2072  "number 1 to [0-XSIZE], [0-YSIZE]." };
2073 static KmCommand _GEANT_GRAPHICS_CONTROL_SIZE = {
2074  &_GEANT_GRAPHICS_CONTROL_SPERS, "/GEANT/GRAPHICS_CONTROL/SIZE", "SIZE", 0, 2,
2075  2, 0, _GEANT_GRAPHICS_CONTROL_SIZE_parameters, 0, 0, gxgcon_, (IntFunc*)0,
2076  (SUBROUTINE*)0, (pCharFunc*)0, 5, _GEANT_GRAPHICS_CONTROL_SIZE_guidance, 0,
2077  (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
2078  
2079 static KmParameter _GEANT_GRAPHICS_CONTROL_DOPT_IOPT = { "IOPT", 4,
2080  "Option name", "*", (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2081  KmTYPE_CHAR,  (void*)0 };
2082 static KmParameter _GEANT_GRAPHICS_CONTROL_DOPT_IVAL = { "IVAL", 4,
2083  "Option value", "*", (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2084  KmTYPE_CHAR,  (void*)0 };
2085 static KmParameter *_GEANT_GRAPHICS_CONTROL_DOPT_parameters[] = {
2086  &_GEANT_GRAPHICS_CONTROL_DOPT_IOPT, &_GEANT_GRAPHICS_CONTROL_DOPT_IVAL };
2087 static char *_GEANT_GRAPHICS_CONTROL_DOPT_guidance[] = {
2088  " CALL GDOPT(iopt,ival)", "To set/modify the drawing options.",
2089  "   IOPT   IVAL      Action", "   THRZ    ON       Draw tracks in R vs Z",
2090  "           OFF (D)  Draw tracks in X,Y,Z", "           180",
2091  "           360", "   PROJ    PARA (D) Parallel projection",
2092  "           PERS     Perspective",
2093  "   TRAK    LINE (D) Trajectory drawn with lines",
2094  "           POIN       \" \" with markers",
2095  "   HIDE    ON       Hidden line removal using the CG package",
2096  "           OFF (D)  No hidden line removal",
2097  "   SHAD    ON       Fill area and shading of surfaces.",
2098  "           OFF (D)  Normal hidden line removal.",
2099  "   RAYT    ON       Ray-tracing on.",
2100  "           OFF (D)  Ray-tracing off.",
2101  "   EDGE    OFF      Does not draw contours when shad is on.",
2102  "           ON  (D)  Normal shading.",
2103  "   MAPP    1,2,3,4  Mapping before ray-tracing.",
2104  "           0   (D)  No mapping.",
2105  "   USER    ON       User graphics options in the raytracing.",
2106  "           OFF (D)  Automatic graphics options." };
2107 static KmCommand _GEANT_GRAPHICS_CONTROL_DOPT = {
2108  &_GEANT_GRAPHICS_CONTROL_SIZE, "/GEANT/GRAPHICS_CONTROL/DOPT", "DOPT", 0, 2,
2109  2, 0, _GEANT_GRAPHICS_CONTROL_DOPT_parameters, 0, 0, gxgcon_, (IntFunc*)0,
2110  (SUBROUTINE*)0, (pCharFunc*)0, 23, _GEANT_GRAPHICS_CONTROL_DOPT_guidance, 0,
2111  (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
2112  
2113 static char *_GEANT_GRAPHICS_CONTROL_NEXT_guidance[] = {
2114  "Clear screen (start a new picture on graphics file, if opened)." };
2115 static KmCommand _GEANT_GRAPHICS_CONTROL_NEXT = {
2116  &_GEANT_GRAPHICS_CONTROL_DOPT, "/GEANT/GRAPHICS_CONTROL/NEXT", "NEXT", 0, 2,
2117  0, 0, (KmParameter**)0, 0, 0, gxgcon_, (IntFunc*)0, (SUBROUTINE*)0,
2118  (pCharFunc*)0, 1, _GEANT_GRAPHICS_CONTROL_NEXT_guidance, 0, (char**)0, 0,
2119  (char**)0, 0, (char**)0, (char*)0, (int*)0 };
2120  
2121 static KmParInt    _GEANT_GRAPHICS_CONTROL_LWID_LWIDTH_type = { (char*)0,
2122  (char*)0, (char*)0, (char*)0, 0 };
2123 static KmParameter _GEANT_GRAPHICS_CONTROL_LWID_LWIDTH = { "LWIDTH", 6,
2124  "Line width code", "1", (char*)0, 8, 0, (char**)0, 0, (char**)0,
2125  (KmParFlag)0, KmTYPE_INT, &_GEANT_GRAPHICS_CONTROL_LWID_LWIDTH_type };
2126 static KmParameter *_GEANT_GRAPHICS_CONTROL_LWID_parameters[] = {
2127  &_GEANT_GRAPHICS_CONTROL_LWID_LWIDTH };
2128 static char *_GEANT_GRAPHICS_CONTROL_LWID_guidance[] = {
2129  " CALL GDLW(-abs(lwidth))" };
2130 static KmCommand _GEANT_GRAPHICS_CONTROL_LWID = {
2131  &_GEANT_GRAPHICS_CONTROL_NEXT, "/GEANT/GRAPHICS_CONTROL/LWID", "LWID", 0, 2,
2132  1, 1, _GEANT_GRAPHICS_CONTROL_LWID_parameters, 0, 0, gxgcon_, (IntFunc*)0,
2133  (SUBROUTINE*)0, (pCharFunc*)0, 1, _GEANT_GRAPHICS_CONTROL_LWID_guidance, 0,
2134  (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
2135  
2136 static KmParInt    _GEANT_GRAPHICS_CONTROL_COLOR_ICOL_type = { (char*)0,
2137  (char*)0, (char*)0, (char*)0, 0 };
2138 static KmParameter _GEANT_GRAPHICS_CONTROL_COLOR_ICOL = { "ICOL", 4,
2139  "Colour code", "1", (char*)0, 8, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2140  KmTYPE_INT, &_GEANT_GRAPHICS_CONTROL_COLOR_ICOL_type };
2141 static KmParameter *_GEANT_GRAPHICS_CONTROL_COLOR_parameters[] = {
2142  &_GEANT_GRAPHICS_CONTROL_COLOR_ICOL };
2143 static char *_GEANT_GRAPHICS_CONTROL_COLOR_guidance[] = {
2144  " CALL GDCOL(-abs(icol))" };
2145 static KmCommand _GEANT_GRAPHICS_CONTROL_COLOR = {
2146  &_GEANT_GRAPHICS_CONTROL_LWID, "/GEANT/GRAPHICS_CONTROL/COLOR", "COLOR", 0,
2147  2, 1, 1, _GEANT_GRAPHICS_CONTROL_COLOR_parameters, 0, 0, gxgcon_,
2148  (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 1,
2149  _GEANT_GRAPHICS_CONTROL_COLOR_guidance, 0, (char**)0, 0, (char**)0, 0,
2150  (char**)0, (char*)0, (int*)0 };
2151  
2152 static KmParReal   _GEANT_GRAPHICS_CONTROL_SCALE_GSCU_type = { (char*)0,
2153  (char*)0, (char*)0, (char*)0, 0 };
2154 static KmParameter _GEANT_GRAPHICS_CONTROL_SCALE_GSCU = { "GSCU", 4,
2155  "Scale factor for U-coord.", (char*)0, (char*)0, 12, 0, (char**)0, 0,
2156  (char**)0, (KmParFlag)0, KmTYPE_REAL,
2157  &_GEANT_GRAPHICS_CONTROL_SCALE_GSCU_type };
2158 static KmParReal   _GEANT_GRAPHICS_CONTROL_SCALE_GSCV_type = { (char*)0,
2159  (char*)0, (char*)0, (char*)0, 0 };
2160 static KmParameter _GEANT_GRAPHICS_CONTROL_SCALE_GSCV = { "GSCV", 4,
2161  "Scale factor for V-coord.", (char*)0, (char*)0, 12, 0, (char**)0, 0,
2162  (char**)0, (KmParFlag)0, KmTYPE_REAL,
2163  &_GEANT_GRAPHICS_CONTROL_SCALE_GSCV_type };
2164 static KmParameter *_GEANT_GRAPHICS_CONTROL_SCALE_parameters[] = {
2165  &_GEANT_GRAPHICS_CONTROL_SCALE_GSCU, &_GEANT_GRAPHICS_CONTROL_SCALE_GSCV };
2166 static char *_GEANT_GRAPHICS_CONTROL_SCALE_guidance[] = {
2167  "Change the scale factors GSCU and GSCV in /GCDRAW/." };
2168 static KmCommand _GEANT_GRAPHICS_CONTROL_SCALE = {
2169  &_GEANT_GRAPHICS_CONTROL_COLOR, "/GEANT/GRAPHICS_CONTROL/SCALE", "SCALE", 0,
2170  2, 2, 2, _GEANT_GRAPHICS_CONTROL_SCALE_parameters, 0, 0, gxgcon_,
2171  (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 1,
2172  _GEANT_GRAPHICS_CONTROL_SCALE_guidance, 0, (char**)0, 0, (char**)0, 0,
2173  (char**)0, (char*)0, (int*)0 };
2174  
2175 static KmParameter _GEANT_GRAPHICS_CONTROL_SATT_NAME = { "NAME", 4,
2176  "Volume name", "*   ", (char*)0, 20, 0, (char**)0, 0, (char**)0,
2177  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2178 static KmParameter _GEANT_GRAPHICS_CONTROL_SATT_IOPT = { "IOPT", 4,
2179  "Name of the attribute to be set", "DEFA", (char*)0, 20, 0, (char**)0, 0,
2180  (char**)0, (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2181 static KmParInt    _GEANT_GRAPHICS_CONTROL_SATT_IVAL_type = { (char*)0,
2182  (char*)0, (char*)0, (char*)0, 0 };
2183 static KmParameter _GEANT_GRAPHICS_CONTROL_SATT_IVAL = { "IVAL", 4,
2184  "Value to which the attribute is to be set", "10000", (char*)0, 8, 0,
2185  (char**)0, 0, (char**)0, (KmParFlag)0, KmTYPE_INT,
2186  &_GEANT_GRAPHICS_CONTROL_SATT_IVAL_type };
2187 static KmParameter *_GEANT_GRAPHICS_CONTROL_SATT_parameters[] = {
2188  &_GEANT_GRAPHICS_CONTROL_SATT_NAME, &_GEANT_GRAPHICS_CONTROL_SATT_IOPT,
2189  &_GEANT_GRAPHICS_CONTROL_SATT_IVAL };
2190 static char *_GEANT_GRAPHICS_CONTROL_SATT_guidance[] = {
2191  " CALL GSATT(name,iopt,ival)", "name='*' stands for all the volumes.",
2192  "iopt can be chosen among the following :",
2193  " 'WORK'   0=volume name is inactive for the tracking",
2194  "          1=volume name is active for the tracking (default)",
2195  " 'SEEN'   0=volume name is invisible",
2196  "          1=volume name is visible (default)",
2197  "         -1=volume invisible with all its descendants in the tree",
2198  "         -2=volume visible but not its descendants in the tree",
2199  " 'LSTY'   line style 1,2,3,... (default=1)",
2200  "          LSTY=7 will produce a very precise approximation for",
2201  "          revolution bodies.",
2202  " 'LWID'   line width -7,...,1,2,3,..7 (default=1)",
2203  "          LWID<0 will act as abs(LWID) was set for the volume",
2204  "          and for all the levels below it. When SHAD is 'ON', LWID",
2205  "          represent the linewidth of the scan lines filling the surfaces",
2206  "          (whereas the FILL value represent their number). Therefore",
2207  "          tuning this parameter will help to obtain the desired",
2208  "          quality/performance ratio.",
2209  " 'COLO'   colour code -166,...,1,2,..166 (default=1)",
2210  "          n=1=black",
2211  "          n=2=red;    n=17+m, m=0,25, increasing luminosity according to\
2212  'm';",
2213  "          n=3=green;  n=67+m, m=0,25, increasing luminosity according to\
2214  'm';",
2215  "          n=4=blue;   n=117+m, m=0,25, increasing luminosity according to\
2216  'm';",
2217  "          n=5=yellow; n=42+m, m=0,25, increasing luminosity according to\
2218  'm';",
2219  "          n=6=violet; n=142+m, m=0,25, increasing luminosity according to\
2220  'm';",
2221  "          n=7=lightblue; n=92+m, m=0,25, increasing luminosity according to\
2222  'm';", "          colour=n*10+m, m=1,2,...9, will produce the same colour",
2223  "          as 'n', but with increasing luminosity according to 'm';",
2224  "          COLO<0 will act as if abs(COLO) was set for the volume",
2225  "          and for all the levels below it.",
2226  "          When for a volume the attribute FILL is > 1 (and the",
2227  "          option SHAD is on), the ABS of its colour code must be < 8",
2228  "          because an automatic shading of its faces will be",
2229  "          performed.",
2230  " 'FILL'   (1992) fill area  -7,...,0,1,...7 (default=0)",
2231  "          when option SHAD is 'on' the FILL attribute of any",
2232  "          volume can be set different from 0 (normal drawing);",
2233  "          if it is set to 1, the faces of such volume will be filled",
2234  "          with solid colours; if ABS(FILL) is > 1, then a light",
2235  "          source is placed along the observer line, and the faces of",
2236  "          such volumes will be painted by colours whose luminosity",
2237  "          will depend on the amount of light reflected;",
2238  "          if ABS(FILL) = 1, then it is possible to use all the 166",
2239  "          colours of the colour table, becouse the automatic shading",
2240  "          is not performed;",
2241  "          for increasing values of FILL the drawing will be performed",
2242  "          with higher and higher resolution improving the quality (the",
2243  "          number of scan lines used to fill the faces increases with\
2244  FILL);", "          it is possible to set different values of FILL",
2245  "          for different volumes, in order to optimize at the same time",
2246  "          the performance and the quality of the picture;",
2247  "          FILL<0 will act as if abs(FILL) was set for the volume",
2248  "          and for all the levels below it.",
2249  "          This kind of drawing can be saved in 'picture files'",
2250  "          or in view banks.", "          0=drawing without fill area",
2251  "          1=faces filled with solid colours and resolution = 6",
2252  "          2=lowest resolution (very fast)",
2253  "          3=default resolution", "          4=.................",
2254  "          5=.................", "          6=.................",
2255  "          7=max resolution",
2256  "          Finally, if a coloured background is desired, the FILL",
2257  "          attribute for the first volume of the tree must be set",
2258  "          equal to -abs(colo), colo being >0 and <166.",
2259  " 'SET '   set number associated to volume name",
2260  " 'DET '   detector number associated to volume name",
2261  " 'DTYP'   detector type (1,2)" };
2262 static KmCommand _GEANT_GRAPHICS_CONTROL_SATT = {
2263  &_GEANT_GRAPHICS_CONTROL_SCALE, "/GEANT/GRAPHICS_CONTROL/SATT", "SATT", 0, 2,
2264  3, 0, _GEANT_GRAPHICS_CONTROL_SATT_parameters, 0, 0, gxgcon_, (IntFunc*)0,
2265  (SUBROUTINE*)0, (pCharFunc*)0, 70, _GEANT_GRAPHICS_CONTROL_SATT_guidance, 0,
2266  (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
2267  
2268 static KmParReal   _GEANT_GRAPHICS_CONTROL_SSETVA_RVAL_type = { "-10.", "10.",
2269  "-10.", "10.", 0 };
2270 static KmParameter _GEANT_GRAPHICS_CONTROL_SSETVA_RVAL = { "RVAL", 4,
2271  "Attribute value", "1.", (char*)0, 12, 0, (char**)0, 0, (char**)0,
2272  (KmParFlag)0, KmTYPE_REAL, &_GEANT_GRAPHICS_CONTROL_SSETVA_RVAL_type };
2273 static KmParameter *_GEANT_GRAPHICS_CONTROL_SSETVA_parameters[] = {
2274  &_GEANT_GRAPHICS_CONTROL_SSETVA_RVAL };
2275 static char *_GEANT_GRAPHICS_CONTROL_SSETVA_guidance[] = {
2276  "Set current attribute value." };
2277 static KmCommand _GEANT_GRAPHICS_CONTROL_SSETVA = {
2278  &_GEANT_GRAPHICS_CONTROL_SATT, "/GEANT/GRAPHICS_CONTROL/SSETVA", "SSETVA", 0,
2279  2, 1, 0, _GEANT_GRAPHICS_CONTROL_SSETVA_parameters, 0, 0, gxgcon_,
2280  (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 1,
2281  _GEANT_GRAPHICS_CONTROL_SSETVA_guidance, 0, (char**)0, 0, (char**)0, 0,
2282  (char**)0, (char*)0, (int*)0 };
2283  
2284 static KmParameter _GEANT_GRAPHICS_CONTROL_SSETAT_IOPT = { "IOPT", 4,
2285  "Attribute name", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
2286  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2287 static KmParameter *_GEANT_GRAPHICS_CONTROL_SSETAT_parameters[] = {
2288  &_GEANT_GRAPHICS_CONTROL_SSETAT_IOPT };
2289 static char *_GEANT_GRAPHICS_CONTROL_SSETAT_guidance[] = {
2290  "Set current attribute." };
2291 static KmCommand _GEANT_GRAPHICS_CONTROL_SSETAT = {
2292  &_GEANT_GRAPHICS_CONTROL_SSETVA, "/GEANT/GRAPHICS_CONTROL/SSETAT", "SSETAT",
2293  0, 2, 1, 1, _GEANT_GRAPHICS_CONTROL_SSETAT_parameters, 0, 0, gxgcon_,
2294  (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 1,
2295  _GEANT_GRAPHICS_CONTROL_SSETAT_guidance, 0, (char**)0, 0, (char**)0, 0,
2296  (char**)0, (char*)0, (int*)0 };
2297  
2298 static char *_GEANT_GRAPHICS_CONTROL_RESETWK_guidance[] = { "CALL GRESWK",
2299  "It deactivate the previosly activated workstation and reactivate the",
2300  "default one." };
2301 static KmCommand _GEANT_GRAPHICS_CONTROL_RESETWK = {
2302  &_GEANT_GRAPHICS_CONTROL_SSETAT, "/GEANT/GRAPHICS_CONTROL/RESETWK",
2303  "RESETWK", 0, 2, 0, 0, (KmParameter**)0, 0, 0, gxgcon_, (IntFunc*)0,
2304  (SUBROUTINE*)0, (pCharFunc*)0, 3, _GEANT_GRAPHICS_CONTROL_RESETWK_guidance,
2305  0, (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
2306  
2307 static char *_GEANT_GRAPHICS_CONTROL_CHANGEWK_guidance[] = { "CALL GCHNWK",
2308  "It open a new workstation (if not already opened) and activate it",
2309  "(deactivating the default one)." };
2310 static KmCommand _GEANT_GRAPHICS_CONTROL_CHANGEWK = {
2311  &_GEANT_GRAPHICS_CONTROL_RESETWK, "/GEANT/GRAPHICS_CONTROL/CHANGEWK",
2312  "CHANGEWK", 0, 2, 0, 0, (KmParameter**)0, 0, 0, gxgcon_, (IntFunc*)0,
2313  (SUBROUTINE*)0, (pCharFunc*)0, 3, _GEANT_GRAPHICS_CONTROL_CHANGEWK_guidance,
2314  0, (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
2315  
2316 static char *_GEANT_GRAPHICS_CONTROL_DCLOSE_guidance[] = { " CALL GDCLOS",
2317  "It closes the currently open view bank; it must be called after the",
2318  "end of the drawing to be stored." };
2319 static KmCommand _GEANT_GRAPHICS_CONTROL_DCLOSE = {
2320  &_GEANT_GRAPHICS_CONTROL_CHANGEWK, "/GEANT/GRAPHICS_CONTROL/DCLOSE",
2321  "DCLOSE", 0, 2, 0, 0, (KmParameter**)0, 0, 0, gxgcon_, (IntFunc*)0,
2322  (SUBROUTINE*)0, (pCharFunc*)0, 3, _GEANT_GRAPHICS_CONTROL_DCLOSE_guidance, 0,
2323  (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
2324  
2325 static KmParInt    _GEANT_GRAPHICS_CONTROL_DELETE_IVIEW_type = { (char*)0,
2326  (char*)0, (char*)0, (char*)0, 0 };
2327 static KmParameter _GEANT_GRAPHICS_CONTROL_DELETE_IVIEW = { "IVIEW", 5,
2328  "View number", (char*)0, (char*)0, 8, 0, (char**)0, 0, (char**)0,
2329  (KmParFlag)0, KmTYPE_INT, &_GEANT_GRAPHICS_CONTROL_DELETE_IVIEW_type };
2330 static KmParameter *_GEANT_GRAPHICS_CONTROL_DELETE_parameters[] = {
2331  &_GEANT_GRAPHICS_CONTROL_DELETE_IVIEW };
2332 static char *_GEANT_GRAPHICS_CONTROL_DELETE_guidance[] = {
2333  " CALL GDELET(iview)", "It deletes a view bank from memory." };
2334 static KmCommand _GEANT_GRAPHICS_CONTROL_DELETE = {
2335  &_GEANT_GRAPHICS_CONTROL_DCLOSE, "/GEANT/GRAPHICS_CONTROL/DELETE", "DELETE",
2336  0, 2, 1, 1, _GEANT_GRAPHICS_CONTROL_DELETE_parameters, 0, 0, gxgcon_,
2337  (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 2,
2338  _GEANT_GRAPHICS_CONTROL_DELETE_guidance, 0, (char**)0, 0, (char**)0, 0,
2339  (char**)0, (char*)0, (int*)0 };
2340  
2341 static KmParInt    _GEANT_GRAPHICS_CONTROL_DSHOW_IVIEW_type = { (char*)0,
2342  (char*)0, (char*)0, (char*)0, 0 };
2343 static KmParameter _GEANT_GRAPHICS_CONTROL_DSHOW_IVIEW = { "IVIEW", 5,
2344  "View number", (char*)0, (char*)0, 8, 0, (char**)0, 0, (char**)0,
2345  (KmParFlag)0, KmTYPE_INT, &_GEANT_GRAPHICS_CONTROL_DSHOW_IVIEW_type };
2346 static KmParameter *_GEANT_GRAPHICS_CONTROL_DSHOW_parameters[] = {
2347  &_GEANT_GRAPHICS_CONTROL_DSHOW_IVIEW };
2348 static char *_GEANT_GRAPHICS_CONTROL_DSHOW_guidance[] = {
2349  " CALL GDSHOW(iview)",
2350  "It shows on the screen the contents of a view bank. It",
2351  "can be called after a view bank has been closed." };
2352 static KmCommand _GEANT_GRAPHICS_CONTROL_DSHOW = {
2353  &_GEANT_GRAPHICS_CONTROL_DELETE, "/GEANT/GRAPHICS_CONTROL/DSHOW", "DSHOW", 0,
2354  2, 1, 0, _GEANT_GRAPHICS_CONTROL_DSHOW_parameters, 0, 0, gxgcon_,
2355  (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3,
2356  _GEANT_GRAPHICS_CONTROL_DSHOW_guidance, 0, (char**)0, 0, (char**)0, 0,
2357  (char**)0, (char*)0, (int*)0 };
2358  
2359 static KmParInt    _GEANT_GRAPHICS_CONTROL_DOPEN_IVIEW_type = { (char*)0,
2360  (char*)0, (char*)0, (char*)0, 0 };
2361 static KmParameter _GEANT_GRAPHICS_CONTROL_DOPEN_IVIEW = { "IVIEW", 5,
2362  "View number", (char*)0, (char*)0, 8, 0, (char**)0, 0, (char**)0,
2363  (KmParFlag)0, KmTYPE_INT, &_GEANT_GRAPHICS_CONTROL_DOPEN_IVIEW_type };
2364 static KmParameter *_GEANT_GRAPHICS_CONTROL_DOPEN_parameters[] = {
2365  &_GEANT_GRAPHICS_CONTROL_DOPEN_IVIEW };
2366 static char *_GEANT_GRAPHICS_CONTROL_DOPEN_guidance[] = {
2367  " CALL GDOPEN(iview)",
2368  "When a drawing is very complex and requires a long time to be",
2369  "executed, it can be useful to store it in a view bank: after a",
2370  "call to DOPEN and the execution of the drawing (nothing will",
2371  "appear on the screen), and after a necessary call to DCLOSE,",
2372  "the contents of the bank can be displayed in a very fast way",
2373  "through a call to DSHOW; therefore, the detector can be easily",
2374  "zoomed many times in different ways. Please note that the pictures",
2375  "with solid colours can now be stored in a view bank or in 'PICTURE FILES'."
2376  };
2377 static KmCommand _GEANT_GRAPHICS_CONTROL_DOPEN = {
2378  &_GEANT_GRAPHICS_CONTROL_DSHOW, "/GEANT/GRAPHICS_CONTROL/DOPEN", "DOPEN", 0,
2379  2, 1, 1, _GEANT_GRAPHICS_CONTROL_DOPEN_parameters, 0, 0, gxgcon_,
2380  (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 9,
2381  _GEANT_GRAPHICS_CONTROL_DOPEN_guidance, 0, (char**)0, 0, (char**)0, 0,
2382  (char**)0, (char*)0, (int*)0 };
2383  
2384 static char *_GEANT_GRAPHICS_CONTROL_guidance[] = {
2385  "Graphics control commands." };
2386 static KmMenu _GEANT_GRAPHICS_CONTROL = {  (KmMenu*)0,  (KmMenu*)0,
2387  "/GEANT/GRAPHICS_CONTROL", "GRAPHICS_CONTROL", 2,
2388  &_GEANT_GRAPHICS_CONTROL_DOPEN, 1, _GEANT_GRAPHICS_CONTROL_guidance, 0,
2389  (char**)0, 0, (char**)0 };
2390  
2391 static KmMenu _GEANT = {  (KmMenu*)0, &_GEANT_GRAPHICS_CONTROL, "/GEANT",
2392  "GEANT", 1,  (KmCommand*)0, 0, (char**)0, 0, (char**)0, 0, (char**)0 };
2393  
2394   klnkmenu( &_GEANT, 950303 );
2395 }
2396  
2397  
2398 #ifdef F77_LCASE
2399 #  define gklist_ gklist
2400 #  define gxlist_ gxlist
2401 #endif
2402  
2403 #ifdef F77_UCASE
2404 #  define gklist_ GKLIST
2405 #  define gxlist_ GXLIST
2406 #endif
2407  
2408 #ifdef IBM370
2409 #  pragma linkage(GKLIST,FORTRAN)
2410 #  pragma linkage(GXLIST,FORTRAN)
2411 #endif
2412  
2413 extern void gklist_();
2414 extern void gxlist_();
2415  
2416 void gklist_()
2417 {
2418  
2419 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_1 = { "LRSAVE_1", 8, "user word",
2420  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2421  KmTYPE_CHAR,  (void*)0 };
2422 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_2 = { "LRSAVE_2", 8, "user word",
2423  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2424  KmTYPE_CHAR,  (void*)0 };
2425 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_3 = { "LRSAVE_3", 8, "user word",
2426  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2427  KmTYPE_CHAR,  (void*)0 };
2428 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_4 = { "LRSAVE_4", 8, "user word",
2429  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2430  KmTYPE_CHAR,  (void*)0 };
2431 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_5 = { "LRSAVE_5", 8, "user word",
2432  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2433  KmTYPE_CHAR,  (void*)0 };
2434 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_6 = { "LRSAVE_6", 8, "user word",
2435  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2436  KmTYPE_CHAR,  (void*)0 };
2437 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_7 = { "LRSAVE_7", 8, "user word",
2438  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2439  KmTYPE_CHAR,  (void*)0 };
2440 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_8 = { "LRSAVE_8", 8, "user word",
2441  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2442  KmTYPE_CHAR,  (void*)0 };
2443 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_9 = { "LRSAVE_9", 8, "user word",
2444  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2445  KmTYPE_CHAR,  (void*)0 };
2446 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_10 = { "LRSAVE_10", 9,
2447  "user word", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
2448  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2449 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_11 = { "LRSAVE_11", 9,
2450  "user word", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
2451  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2452 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_12 = { "LRSAVE_12", 9,
2453  "user word", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
2454  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2455 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_13 = { "LRSAVE_13", 9,
2456  "user word", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
2457  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2458 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_14 = { "LRSAVE_14", 9,
2459  "user word", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
2460  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2461 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_15 = { "LRSAVE_15", 9,
2462  "user word", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
2463  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2464 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_16 = { "LRSAVE_16", 9,
2465  "user word", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
2466  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2467 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_17 = { "LRSAVE_17", 9,
2468  "user word", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
2469  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2470 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_18 = { "LRSAVE_18", 9,
2471  "user word", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
2472  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2473 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_19 = { "LRSAVE_19", 9,
2474  "user word", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
2475  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2476 static KmParameter _GEANT_LISTS_RSAV_LRSAVE_20 = { "LRSAVE_20", 9,
2477  "user word", (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0,
2478  (KmParFlag)0, KmTYPE_CHAR,  (void*)0 };
2479 static KmParameter *_GEANT_LISTS_RSAV_parameters[] = {
2480  &_GEANT_LISTS_RSAV_LRSAVE_1, &_GEANT_LISTS_RSAV_LRSAVE_2,
2481  &_GEANT_LISTS_RSAV_LRSAVE_3, &_GEANT_LISTS_RSAV_LRSAVE_4,
2482  &_GEANT_LISTS_RSAV_LRSAVE_5, &_GEANT_LISTS_RSAV_LRSAVE_6,
2483  &_GEANT_LISTS_RSAV_LRSAVE_7, &_GEANT_LISTS_RSAV_LRSAVE_8,
2484  &_GEANT_LISTS_RSAV_LRSAVE_9, &_GEANT_LISTS_RSAV_LRSAVE_10,
2485  &_GEANT_LISTS_RSAV_LRSAVE_11, &_GEANT_LISTS_RSAV_LRSAVE_12,
2486  &_GEANT_LISTS_RSAV_LRSAVE_13, &_GEANT_LISTS_RSAV_LRSAVE_14,
2487  &_GEANT_LISTS_RSAV_LRSAVE_15, &_GEANT_LISTS_RSAV_LRSAVE_16,
2488  &_GEANT_LISTS_RSAV_LRSAVE_17, &_GEANT_LISTS_RSAV_LRSAVE_18,
2489  &_GEANT_LISTS_RSAV_LRSAVE_19, &_GEANT_LISTS_RSAV_LRSAVE_20 };
2490 static char *_GEANT_LISTS_RSAV_guidance[] = {
2491  "The command RSAV is similar to the RSAV data records. It can accept",
2492  "up to 20 4-character words. If the first argument is '.', the number",
2493  "of words is reset to 0 and all the words to four blanks." };
2494 static KmCommand _GEANT_LISTS_RSAV = {  (KmCommand*)0, "/GEANT/LISTS/RSAV",
2495  "RSAV", 0, 2, 20, 0, _GEANT_LISTS_RSAV_parameters, 0, 0, gxlist_,
2496  (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3, _GEANT_LISTS_RSAV_guidance, 0,
2497  (char**)0, 0, (char**)0, 0, (char**)0, (char*)0, (int*)0 };
2498  
2499 static KmParameter _GEANT_LISTS_RGET_LRGET_1 = { "LRGET_1", 7, "user word",
2500  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2501  KmTYPE_CHAR,  (void*)0 };
2502 static KmParameter _GEANT_LISTS_RGET_LRGET_2 = { "LRGET_2", 7, "user word",
2503  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2504  KmTYPE_CHAR,  (void*)0 };
2505 static KmParameter _GEANT_LISTS_RGET_LRGET_3 = { "LRGET_3", 7, "user word",
2506  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2507  KmTYPE_CHAR,  (void*)0 };
2508 static KmParameter _GEANT_LISTS_RGET_LRGET_4 = { "LRGET_4", 7, "user word",
2509  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2510  KmTYPE_CHAR,  (void*)0 };
2511 static KmParameter _GEANT_LISTS_RGET_LRGET_5 = { "LRGET_5", 7, "user word",
2512  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2513  KmTYPE_CHAR,  (void*)0 };
2514 static KmParameter _GEANT_LISTS_RGET_LRGET_6 = { "LRGET_6", 7, "user word",
2515  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2516  KmTYPE_CHAR,  (void*)0 };
2517 static KmParameter _GEANT_LISTS_RGET_LRGET_7 = { "LRGET_7", 7, "user word",
2518  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2519  KmTYPE_CHAR,  (void*)0 };
2520 static KmParameter _GEANT_LISTS_RGET_LRGET_8 = { "LRGET_8", 7, "user word",
2521  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2522  KmTYPE_CHAR,  (void*)0 };
2523 static KmParameter _GEANT_LISTS_RGET_LRGET_9 = { "LRGET_9", 7, "user word",
2524  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2525  KmTYPE_CHAR,  (void*)0 };
2526 static KmParameter _GEANT_LISTS_RGET_LRGET_10 = { "LRGET_10", 8, "user word",
2527  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2528  KmTYPE_CHAR,  (void*)0 };
2529 static KmParameter _GEANT_LISTS_RGET_LRGET_11 = { "LRGET_11", 8, "user word",
2530  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2531  KmTYPE_CHAR,  (void*)0 };
2532 static KmParameter _GEANT_LISTS_RGET_LRGET_12 = { "LRGET_12", 8, "user word",
2533  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2534  KmTYPE_CHAR,  (void*)0 };
2535 static KmParameter _GEANT_LISTS_RGET_LRGET_13 = { "LRGET_13", 8, "user word",
2536  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2537  KmTYPE_CHAR,  (void*)0 };
2538 static KmParameter _GEANT_LISTS_RGET_LRGET_14 = { "LRGET_14", 8, "user word",
2539  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2540  KmTYPE_CHAR,  (void*)0 };
2541 static KmParameter _GEANT_LISTS_RGET_LRGET_15 = { "LRGET_15", 8, "user word",
2542  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2543  KmTYPE_CHAR,  (void*)0 };
2544 static KmParameter _GEANT_LISTS_RGET_LRGET_16 = { "LRGET_16", 8, "user word",
2545  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2546  KmTYPE_CHAR,  (void*)0 };
2547 static KmParameter _GEANT_LISTS_RGET_LRGET_17 = { "LRGET_17", 8, "user word",
2548  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2549  KmTYPE_CHAR,  (void*)0 };
2550 static KmParameter _GEANT_LISTS_RGET_LRGET_18 = { "LRGET_18", 8, "user word",
2551  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2552  KmTYPE_CHAR,  (void*)0 };
2553 static KmParameter _GEANT_LISTS_RGET_LRGET_19 = { "LRGET_19", 8, "user word",
2554  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2555  KmTYPE_CHAR,  (void*)0 };
2556 static KmParameter _GEANT_LISTS_RGET_LRGET_20 = { "LRGET_20", 8, "user word",
2557  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2558  KmTYPE_CHAR,  (void*)0 };
2559 static KmParameter *_GEANT_LISTS_RGET_parameters[] = {
2560  &_GEANT_LISTS_RGET_LRGET_1, &_GEANT_LISTS_RGET_LRGET_2,
2561  &_GEANT_LISTS_RGET_LRGET_3, &_GEANT_LISTS_RGET_LRGET_4,
2562  &_GEANT_LISTS_RGET_LRGET_5, &_GEANT_LISTS_RGET_LRGET_6,
2563  &_GEANT_LISTS_RGET_LRGET_7, &_GEANT_LISTS_RGET_LRGET_8,
2564  &_GEANT_LISTS_RGET_LRGET_9, &_GEANT_LISTS_RGET_LRGET_10,
2565  &_GEANT_LISTS_RGET_LRGET_11, &_GEANT_LISTS_RGET_LRGET_12,
2566  &_GEANT_LISTS_RGET_LRGET_13, &_GEANT_LISTS_RGET_LRGET_14,
2567  &_GEANT_LISTS_RGET_LRGET_15, &_GEANT_LISTS_RGET_LRGET_16,
2568  &_GEANT_LISTS_RGET_LRGET_17, &_GEANT_LISTS_RGET_LRGET_18,
2569  &_GEANT_LISTS_RGET_LRGET_19, &_GEANT_LISTS_RGET_LRGET_20 };
2570 static char *_GEANT_LISTS_RGET_guidance[] = {
2571  "The command RGET is similar to the RGET data records. It can accept",
2572  "up to 20 4-character words. If the first argument is '.', the number",
2573  "of words is reset to 0 and all the words to four blanks." };
2574 static KmCommand _GEANT_LISTS_RGET = { &_GEANT_LISTS_RSAV,
2575  "/GEANT/LISTS/RGET", "RGET", 0, 2, 20, 0, _GEANT_LISTS_RGET_parameters, 0, 0,
2576  gxlist_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3,
2577  _GEANT_LISTS_RGET_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
2578  (char*)0, (int*)0 };
2579  
2580 static KmParameter _GEANT_LISTS_STAT_LSTAT_1 = { "LSTAT_1", 7, "user word",
2581  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2582  KmTYPE_CHAR,  (void*)0 };
2583 static KmParameter _GEANT_LISTS_STAT_LSTAT_2 = { "LSTAT_2", 7, "user word",
2584  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2585  KmTYPE_CHAR,  (void*)0 };
2586 static KmParameter _GEANT_LISTS_STAT_LSTAT_3 = { "LSTAT_3", 7, "user word",
2587  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2588  KmTYPE_CHAR,  (void*)0 };
2589 static KmParameter _GEANT_LISTS_STAT_LSTAT_4 = { "LSTAT_4", 7, "user word",
2590  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2591  KmTYPE_CHAR,  (void*)0 };
2592 static KmParameter _GEANT_LISTS_STAT_LSTAT_5 = { "LSTAT_5", 7, "user word",
2593  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2594  KmTYPE_CHAR,  (void*)0 };
2595 static KmParameter _GEANT_LISTS_STAT_LSTAT_6 = { "LSTAT_6", 7, "user word",
2596  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2597  KmTYPE_CHAR,  (void*)0 };
2598 static KmParameter _GEANT_LISTS_STAT_LSTAT_7 = { "LSTAT_7", 7, "user word",
2599  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2600  KmTYPE_CHAR,  (void*)0 };
2601 static KmParameter _GEANT_LISTS_STAT_LSTAT_8 = { "LSTAT_8", 7, "user word",
2602  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2603  KmTYPE_CHAR,  (void*)0 };
2604 static KmParameter _GEANT_LISTS_STAT_LSTAT_9 = { "LSTAT_9", 7, "user word",
2605  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2606  KmTYPE_CHAR,  (void*)0 };
2607 static KmParameter _GEANT_LISTS_STAT_LSTAT_10 = { "LSTAT_10", 8, "user word",
2608  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2609  KmTYPE_CHAR,  (void*)0 };
2610 static KmParameter _GEANT_LISTS_STAT_LSTAT_11 = { "LSTAT_11", 8, "user word",
2611  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2612  KmTYPE_CHAR,  (void*)0 };
2613 static KmParameter _GEANT_LISTS_STAT_LSTAT_12 = { "LSTAT_12", 8, "user word",
2614  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2615  KmTYPE_CHAR,  (void*)0 };
2616 static KmParameter _GEANT_LISTS_STAT_LSTAT_13 = { "LSTAT_13", 8, "user word",
2617  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2618  KmTYPE_CHAR,  (void*)0 };
2619 static KmParameter _GEANT_LISTS_STAT_LSTAT_14 = { "LSTAT_14", 8, "user word",
2620  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2621  KmTYPE_CHAR,  (void*)0 };
2622 static KmParameter _GEANT_LISTS_STAT_LSTAT_15 = { "LSTAT_15", 8, "user word",
2623  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2624  KmTYPE_CHAR,  (void*)0 };
2625 static KmParameter _GEANT_LISTS_STAT_LSTAT_16 = { "LSTAT_16", 8, "user word",
2626  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2627  KmTYPE_CHAR,  (void*)0 };
2628 static KmParameter _GEANT_LISTS_STAT_LSTAT_17 = { "LSTAT_17", 8, "user word",
2629  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2630  KmTYPE_CHAR,  (void*)0 };
2631 static KmParameter _GEANT_LISTS_STAT_LSTAT_18 = { "LSTAT_18", 8, "user word",
2632  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2633  KmTYPE_CHAR,  (void*)0 };
2634 static KmParameter _GEANT_LISTS_STAT_LSTAT_19 = { "LSTAT_19", 8, "user word",
2635  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2636  KmTYPE_CHAR,  (void*)0 };
2637 static KmParameter _GEANT_LISTS_STAT_LSTAT_20 = { "LSTAT_20", 8, "user word",
2638  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2639  KmTYPE_CHAR,  (void*)0 };
2640 static KmParameter *_GEANT_LISTS_STAT_parameters[] = {
2641  &_GEANT_LISTS_STAT_LSTAT_1, &_GEANT_LISTS_STAT_LSTAT_2,
2642  &_GEANT_LISTS_STAT_LSTAT_3, &_GEANT_LISTS_STAT_LSTAT_4,
2643  &_GEANT_LISTS_STAT_LSTAT_5, &_GEANT_LISTS_STAT_LSTAT_6,
2644  &_GEANT_LISTS_STAT_LSTAT_7, &_GEANT_LISTS_STAT_LSTAT_8,
2645  &_GEANT_LISTS_STAT_LSTAT_9, &_GEANT_LISTS_STAT_LSTAT_10,
2646  &_GEANT_LISTS_STAT_LSTAT_11, &_GEANT_LISTS_STAT_LSTAT_12,
2647  &_GEANT_LISTS_STAT_LSTAT_13, &_GEANT_LISTS_STAT_LSTAT_14,
2648  &_GEANT_LISTS_STAT_LSTAT_15, &_GEANT_LISTS_STAT_LSTAT_16,
2649  &_GEANT_LISTS_STAT_LSTAT_17, &_GEANT_LISTS_STAT_LSTAT_18,
2650  &_GEANT_LISTS_STAT_LSTAT_19, &_GEANT_LISTS_STAT_LSTAT_20 };
2651 static char *_GEANT_LISTS_STAT_guidance[] = {
2652  "The command STAT is similar to the STAT data records. It can accept",
2653  "up to 20 4-character words. If the first argument is '.', the number",
2654  "of words is reset to 0 and all the words to four blanks." };
2655 static KmCommand _GEANT_LISTS_STAT = { &_GEANT_LISTS_RGET,
2656  "/GEANT/LISTS/STAT", "STAT", 0, 2, 20, 0, _GEANT_LISTS_STAT_parameters, 0, 0,
2657  gxlist_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3,
2658  _GEANT_LISTS_STAT_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
2659  (char*)0, (int*)0 };
2660  
2661 static KmParameter _GEANT_LISTS_PLOT_LPLOT_1 = { "LPLOT_1", 7, "user word",
2662  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2663  KmTYPE_CHAR,  (void*)0 };
2664 static KmParameter _GEANT_LISTS_PLOT_LPLOT_2 = { "LPLOT_2", 7, "user word",
2665  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2666  KmTYPE_CHAR,  (void*)0 };
2667 static KmParameter _GEANT_LISTS_PLOT_LPLOT_3 = { "LPLOT_3", 7, "user word",
2668  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2669  KmTYPE_CHAR,  (void*)0 };
2670 static KmParameter _GEANT_LISTS_PLOT_LPLOT_4 = { "LPLOT_4", 7, "user word",
2671  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2672  KmTYPE_CHAR,  (void*)0 };
2673 static KmParameter _GEANT_LISTS_PLOT_LPLOT_5 = { "LPLOT_5", 7, "user word",
2674  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2675  KmTYPE_CHAR,  (void*)0 };
2676 static KmParameter _GEANT_LISTS_PLOT_LPLOT_6 = { "LPLOT_6", 7, "user word",
2677  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2678  KmTYPE_CHAR,  (void*)0 };
2679 static KmParameter _GEANT_LISTS_PLOT_LPLOT_7 = { "LPLOT_7", 7, "user word",
2680  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2681  KmTYPE_CHAR,  (void*)0 };
2682 static KmParameter _GEANT_LISTS_PLOT_LPLOT_8 = { "LPLOT_8", 7, "user word",
2683  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2684  KmTYPE_CHAR,  (void*)0 };
2685 static KmParameter _GEANT_LISTS_PLOT_LPLOT_9 = { "LPLOT_9", 7, "user word",
2686  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2687  KmTYPE_CHAR,  (void*)0 };
2688 static KmParameter _GEANT_LISTS_PLOT_LPLOT_10 = { "LPLOT_10", 8, "user word",
2689  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2690  KmTYPE_CHAR,  (void*)0 };
2691 static KmParameter _GEANT_LISTS_PLOT_LPLOT_11 = { "LPLOT_11", 8, "user word",
2692  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2693  KmTYPE_CHAR,  (void*)0 };
2694 static KmParameter _GEANT_LISTS_PLOT_LPLOT_12 = { "LPLOT_12", 8, "user word",
2695  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2696  KmTYPE_CHAR,  (void*)0 };
2697 static KmParameter _GEANT_LISTS_PLOT_LPLOT_13 = { "LPLOT_13", 8, "user word",
2698  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2699  KmTYPE_CHAR,  (void*)0 };
2700 static KmParameter _GEANT_LISTS_PLOT_LPLOT_14 = { "LPLOT_14", 8, "user word",
2701  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2702  KmTYPE_CHAR,  (void*)0 };
2703 static KmParameter _GEANT_LISTS_PLOT_LPLOT_15 = { "LPLOT_15", 8, "user word",
2704  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2705  KmTYPE_CHAR,  (void*)0 };
2706 static KmParameter _GEANT_LISTS_PLOT_LPLOT_16 = { "LPLOT_16", 8, "user word",
2707  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2708  KmTYPE_CHAR,  (void*)0 };
2709 static KmParameter _GEANT_LISTS_PLOT_LPLOT_17 = { "LPLOT_17", 8, "user word",
2710  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2711  KmTYPE_CHAR,  (void*)0 };
2712 static KmParameter _GEANT_LISTS_PLOT_LPLOT_18 = { "LPLOT_18", 8, "user word",
2713  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2714  KmTYPE_CHAR,  (void*)0 };
2715 static KmParameter _GEANT_LISTS_PLOT_LPLOT_19 = { "LPLOT_19", 8, "user word",
2716  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2717  KmTYPE_CHAR,  (void*)0 };
2718 static KmParameter _GEANT_LISTS_PLOT_LPLOT_20 = { "LPLOT_20", 8, "user word",
2719  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2720  KmTYPE_CHAR,  (void*)0 };
2721 static KmParameter *_GEANT_LISTS_PLOT_parameters[] = {
2722  &_GEANT_LISTS_PLOT_LPLOT_1, &_GEANT_LISTS_PLOT_LPLOT_2,
2723  &_GEANT_LISTS_PLOT_LPLOT_3, &_GEANT_LISTS_PLOT_LPLOT_4,
2724  &_GEANT_LISTS_PLOT_LPLOT_5, &_GEANT_LISTS_PLOT_LPLOT_6,
2725  &_GEANT_LISTS_PLOT_LPLOT_7, &_GEANT_LISTS_PLOT_LPLOT_8,
2726  &_GEANT_LISTS_PLOT_LPLOT_9, &_GEANT_LISTS_PLOT_LPLOT_10,
2727  &_GEANT_LISTS_PLOT_LPLOT_11, &_GEANT_LISTS_PLOT_LPLOT_12,
2728  &_GEANT_LISTS_PLOT_LPLOT_13, &_GEANT_LISTS_PLOT_LPLOT_14,
2729  &_GEANT_LISTS_PLOT_LPLOT_15, &_GEANT_LISTS_PLOT_LPLOT_16,
2730  &_GEANT_LISTS_PLOT_LPLOT_17, &_GEANT_LISTS_PLOT_LPLOT_18,
2731  &_GEANT_LISTS_PLOT_LPLOT_19, &_GEANT_LISTS_PLOT_LPLOT_20 };
2732 static char *_GEANT_LISTS_PLOT_guidance[] = {
2733  "The command PLOT is similar to the PLOT data records. It can accept",
2734  "up to 20 4-character words. If the first argument is '.', the number",
2735  "of words is reset to 0 and all the words to four blanks." };
2736 static KmCommand _GEANT_LISTS_PLOT = { &_GEANT_LISTS_STAT,
2737  "/GEANT/LISTS/PLOT", "PLOT", 0, 2, 20, 0, _GEANT_LISTS_PLOT_parameters, 0, 0,
2738  gxlist_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3,
2739  _GEANT_LISTS_PLOT_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
2740  (char*)0, (int*)0 };
2741  
2742 static KmParameter _GEANT_LISTS_VIEW_LVIEW_1 = { "LVIEW_1", 7, "user word",
2743  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2744  KmTYPE_CHAR,  (void*)0 };
2745 static KmParameter _GEANT_LISTS_VIEW_LVIEW_2 = { "LVIEW_2", 7, "user word",
2746  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2747  KmTYPE_CHAR,  (void*)0 };
2748 static KmParameter _GEANT_LISTS_VIEW_LVIEW_3 = { "LVIEW_3", 7, "user word",
2749  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2750  KmTYPE_CHAR,  (void*)0 };
2751 static KmParameter _GEANT_LISTS_VIEW_LVIEW_4 = { "LVIEW_4", 7, "user word",
2752  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2753  KmTYPE_CHAR,  (void*)0 };
2754 static KmParameter _GEANT_LISTS_VIEW_LVIEW_5 = { "LVIEW_5", 7, "user word",
2755  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2756  KmTYPE_CHAR,  (void*)0 };
2757 static KmParameter _GEANT_LISTS_VIEW_LVIEW_6 = { "LVIEW_6", 7, "user word",
2758  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2759  KmTYPE_CHAR,  (void*)0 };
2760 static KmParameter _GEANT_LISTS_VIEW_LVIEW_7 = { "LVIEW_7", 7, "user word",
2761  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2762  KmTYPE_CHAR,  (void*)0 };
2763 static KmParameter _GEANT_LISTS_VIEW_LVIEW_8 = { "LVIEW_8", 7, "user word",
2764  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2765  KmTYPE_CHAR,  (void*)0 };
2766 static KmParameter _GEANT_LISTS_VIEW_LVIEW_9 = { "LVIEW_9", 7, "user word",
2767  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2768  KmTYPE_CHAR,  (void*)0 };
2769 static KmParameter _GEANT_LISTS_VIEW_LVIEW_10 = { "LVIEW_10", 8, "user word",
2770  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2771  KmTYPE_CHAR,  (void*)0 };
2772 static KmParameter _GEANT_LISTS_VIEW_LVIEW_11 = { "LVIEW_11", 8, "user word",
2773  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2774  KmTYPE_CHAR,  (void*)0 };
2775 static KmParameter _GEANT_LISTS_VIEW_LVIEW_12 = { "LVIEW_12", 8, "user word",
2776  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2777  KmTYPE_CHAR,  (void*)0 };
2778 static KmParameter _GEANT_LISTS_VIEW_LVIEW_13 = { "LVIEW_13", 8, "user word",
2779  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2780  KmTYPE_CHAR,  (void*)0 };
2781 static KmParameter _GEANT_LISTS_VIEW_LVIEW_14 = { "LVIEW_14", 8, "user word",
2782  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2783  KmTYPE_CHAR,  (void*)0 };
2784 static KmParameter _GEANT_LISTS_VIEW_LVIEW_15 = { "LVIEW_15", 8, "user word",
2785  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2786  KmTYPE_CHAR,  (void*)0 };
2787 static KmParameter _GEANT_LISTS_VIEW_LVIEW_16 = { "LVIEW_16", 8, "user word",
2788  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2789  KmTYPE_CHAR,  (void*)0 };
2790 static KmParameter _GEANT_LISTS_VIEW_LVIEW_17 = { "LVIEW_17", 8, "user word",
2791  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2792  KmTYPE_CHAR,  (void*)0 };
2793 static KmParameter _GEANT_LISTS_VIEW_LVIEW_18 = { "LVIEW_18", 8, "user word",
2794  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2795  KmTYPE_CHAR,  (void*)0 };
2796 static KmParameter _GEANT_LISTS_VIEW_LVIEW_19 = { "LVIEW_19", 8, "user word",
2797  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2798  KmTYPE_CHAR,  (void*)0 };
2799 static KmParameter _GEANT_LISTS_VIEW_LVIEW_20 = { "LVIEW_20", 8, "user word",
2800  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2801  KmTYPE_CHAR,  (void*)0 };
2802 static KmParameter *_GEANT_LISTS_VIEW_parameters[] = {
2803  &_GEANT_LISTS_VIEW_LVIEW_1, &_GEANT_LISTS_VIEW_LVIEW_2,
2804  &_GEANT_LISTS_VIEW_LVIEW_3, &_GEANT_LISTS_VIEW_LVIEW_4,
2805  &_GEANT_LISTS_VIEW_LVIEW_5, &_GEANT_LISTS_VIEW_LVIEW_6,
2806  &_GEANT_LISTS_VIEW_LVIEW_7, &_GEANT_LISTS_VIEW_LVIEW_8,
2807  &_GEANT_LISTS_VIEW_LVIEW_9, &_GEANT_LISTS_VIEW_LVIEW_10,
2808  &_GEANT_LISTS_VIEW_LVIEW_11, &_GEANT_LISTS_VIEW_LVIEW_12,
2809  &_GEANT_LISTS_VIEW_LVIEW_13, &_GEANT_LISTS_VIEW_LVIEW_14,
2810  &_GEANT_LISTS_VIEW_LVIEW_15, &_GEANT_LISTS_VIEW_LVIEW_16,
2811  &_GEANT_LISTS_VIEW_LVIEW_17, &_GEANT_LISTS_VIEW_LVIEW_18,
2812  &_GEANT_LISTS_VIEW_LVIEW_19, &_GEANT_LISTS_VIEW_LVIEW_20 };
2813 static char *_GEANT_LISTS_VIEW_guidance[] = {
2814  "The command VIEW is similar to the VIEW data records. It can accept",
2815  "up to 20 4-character words. If the first argument is '.', the number",
2816  "of words is reset to 0 and all the words to four blanks." };
2817 static KmCommand _GEANT_LISTS_VIEW = { &_GEANT_LISTS_PLOT,
2818  "/GEANT/LISTS/VIEW", "VIEW", 0, 2, 20, 0, _GEANT_LISTS_VIEW_parameters, 0, 0,
2819  gxlist_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3,
2820  _GEANT_LISTS_VIEW_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
2821  (char*)0, (int*)0 };
2822  
2823 static KmParameter _GEANT_LISTS_GEOM_LGEOM_1 = { "LGEOM_1", 7, "user word",
2824  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2825  KmTYPE_CHAR,  (void*)0 };
2826 static KmParameter _GEANT_LISTS_GEOM_LGEOM_2 = { "LGEOM_2", 7, "user word",
2827  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2828  KmTYPE_CHAR,  (void*)0 };
2829 static KmParameter _GEANT_LISTS_GEOM_LGEOM_3 = { "LGEOM_3", 7, "user word",
2830  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2831  KmTYPE_CHAR,  (void*)0 };
2832 static KmParameter _GEANT_LISTS_GEOM_LGEOM_4 = { "LGEOM_4", 7, "user word",
2833  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2834  KmTYPE_CHAR,  (void*)0 };
2835 static KmParameter _GEANT_LISTS_GEOM_LGEOM_5 = { "LGEOM_5", 7, "user word",
2836  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2837  KmTYPE_CHAR,  (void*)0 };
2838 static KmParameter _GEANT_LISTS_GEOM_LGEOM_6 = { "LGEOM_6", 7, "user word",
2839  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2840  KmTYPE_CHAR,  (void*)0 };
2841 static KmParameter _GEANT_LISTS_GEOM_LGEOM_7 = { "LGEOM_7", 7, "user word",
2842  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2843  KmTYPE_CHAR,  (void*)0 };
2844 static KmParameter _GEANT_LISTS_GEOM_LGEOM_8 = { "LGEOM_8", 7, "user word",
2845  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2846  KmTYPE_CHAR,  (void*)0 };
2847 static KmParameter _GEANT_LISTS_GEOM_LGEOM_9 = { "LGEOM_9", 7, "user word",
2848  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2849  KmTYPE_CHAR,  (void*)0 };
2850 static KmParameter _GEANT_LISTS_GEOM_LGEOM_10 = { "LGEOM_10", 8, "user word",
2851  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2852  KmTYPE_CHAR,  (void*)0 };
2853 static KmParameter _GEANT_LISTS_GEOM_LGEOM_11 = { "LGEOM_11", 8, "user word",
2854  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2855  KmTYPE_CHAR,  (void*)0 };
2856 static KmParameter _GEANT_LISTS_GEOM_LGEOM_12 = { "LGEOM_12", 8, "user word",
2857  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2858  KmTYPE_CHAR,  (void*)0 };
2859 static KmParameter _GEANT_LISTS_GEOM_LGEOM_13 = { "LGEOM_13", 8, "user word",
2860  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2861  KmTYPE_CHAR,  (void*)0 };
2862 static KmParameter _GEANT_LISTS_GEOM_LGEOM_14 = { "LGEOM_14", 8, "user word",
2863  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2864  KmTYPE_CHAR,  (void*)0 };
2865 static KmParameter _GEANT_LISTS_GEOM_LGEOM_15 = { "LGEOM_15", 8, "user word",
2866  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2867  KmTYPE_CHAR,  (void*)0 };
2868 static KmParameter _GEANT_LISTS_GEOM_LGEOM_16 = { "LGEOM_16", 8, "user word",
2869  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2870  KmTYPE_CHAR,  (void*)0 };
2871 static KmParameter _GEANT_LISTS_GEOM_LGEOM_17 = { "LGEOM_17", 8, "user word",
2872  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2873  KmTYPE_CHAR,  (void*)0 };
2874 static KmParameter _GEANT_LISTS_GEOM_LGEOM_18 = { "LGEOM_18", 8, "user word",
2875  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2876  KmTYPE_CHAR,  (void*)0 };
2877 static KmParameter _GEANT_LISTS_GEOM_LGEOM_19 = { "LGEOM_19", 8, "user word",
2878  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2879  KmTYPE_CHAR,  (void*)0 };
2880 static KmParameter _GEANT_LISTS_GEOM_LGEOM_20 = { "LGEOM_20", 8, "user word",
2881  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2882  KmTYPE_CHAR,  (void*)0 };
2883 static KmParameter *_GEANT_LISTS_GEOM_parameters[] = {
2884  &_GEANT_LISTS_GEOM_LGEOM_1, &_GEANT_LISTS_GEOM_LGEOM_2,
2885  &_GEANT_LISTS_GEOM_LGEOM_3, &_GEANT_LISTS_GEOM_LGEOM_4,
2886  &_GEANT_LISTS_GEOM_LGEOM_5, &_GEANT_LISTS_GEOM_LGEOM_6,
2887  &_GEANT_LISTS_GEOM_LGEOM_7, &_GEANT_LISTS_GEOM_LGEOM_8,
2888  &_GEANT_LISTS_GEOM_LGEOM_9, &_GEANT_LISTS_GEOM_LGEOM_10,
2889  &_GEANT_LISTS_GEOM_LGEOM_11, &_GEANT_LISTS_GEOM_LGEOM_12,
2890  &_GEANT_LISTS_GEOM_LGEOM_13, &_GEANT_LISTS_GEOM_LGEOM_14,
2891  &_GEANT_LISTS_GEOM_LGEOM_15, &_GEANT_LISTS_GEOM_LGEOM_16,
2892  &_GEANT_LISTS_GEOM_LGEOM_17, &_GEANT_LISTS_GEOM_LGEOM_18,
2893  &_GEANT_LISTS_GEOM_LGEOM_19, &_GEANT_LISTS_GEOM_LGEOM_20 };
2894 static char *_GEANT_LISTS_GEOM_guidance[] = {
2895  "The command GEOM is similar to the GEOM data records. It can accept",
2896  "up to 20 4-character words. If the first argument is '.', the number",
2897  "of words is reset to 0 and all the words to four blanks." };
2898 static KmCommand _GEANT_LISTS_GEOM = { &_GEANT_LISTS_VIEW,
2899  "/GEANT/LISTS/GEOM", "GEOM", 0, 2, 20, 0, _GEANT_LISTS_GEOM_parameters, 0, 0,
2900  gxlist_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3,
2901  _GEANT_LISTS_GEOM_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
2902  (char*)0, (int*)0 };
2903  
2904 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_1 = { "LPRIN_1", 7, "user word",
2905  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2906  KmTYPE_CHAR,  (void*)0 };
2907 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_2 = { "LPRIN_2", 7, "user word",
2908  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2909  KmTYPE_CHAR,  (void*)0 };
2910 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_3 = { "LPRIN_3", 7, "user word",
2911  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2912  KmTYPE_CHAR,  (void*)0 };
2913 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_4 = { "LPRIN_4", 7, "user word",
2914  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2915  KmTYPE_CHAR,  (void*)0 };
2916 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_5 = { "LPRIN_5", 7, "user word",
2917  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2918  KmTYPE_CHAR,  (void*)0 };
2919 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_6 = { "LPRIN_6", 7, "user word",
2920  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2921  KmTYPE_CHAR,  (void*)0 };
2922 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_7 = { "LPRIN_7", 7, "user word",
2923  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2924  KmTYPE_CHAR,  (void*)0 };
2925 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_8 = { "LPRIN_8", 7, "user word",
2926  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2927  KmTYPE_CHAR,  (void*)0 };
2928 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_9 = { "LPRIN_9", 7, "user word",
2929  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2930  KmTYPE_CHAR,  (void*)0 };
2931 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_10 = { "LPRIN_10", 8, "user word",
2932  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2933  KmTYPE_CHAR,  (void*)0 };
2934 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_11 = { "LPRIN_11", 8, "user word",
2935  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2936  KmTYPE_CHAR,  (void*)0 };
2937 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_12 = { "LPRIN_12", 8, "user word",
2938  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2939  KmTYPE_CHAR,  (void*)0 };
2940 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_13 = { "LPRIN_13", 8, "user word",
2941  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2942  KmTYPE_CHAR,  (void*)0 };
2943 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_14 = { "LPRIN_14", 8, "user word",
2944  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2945  KmTYPE_CHAR,  (void*)0 };
2946 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_15 = { "LPRIN_15", 8, "user word",
2947  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2948  KmTYPE_CHAR,  (void*)0 };
2949 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_16 = { "LPRIN_16", 8, "user word",
2950  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2951  KmTYPE_CHAR,  (void*)0 };
2952 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_17 = { "LPRIN_17", 8, "user word",
2953  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2954  KmTYPE_CHAR,  (void*)0 };
2955 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_18 = { "LPRIN_18", 8, "user word",
2956  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2957  KmTYPE_CHAR,  (void*)0 };
2958 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_19 = { "LPRIN_19", 8, "user word",
2959  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2960  KmTYPE_CHAR,  (void*)0 };
2961 static KmParameter _GEANT_LISTS_LPRIN_LPRIN_20 = { "LPRIN_20", 8, "user word",
2962  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2963  KmTYPE_CHAR,  (void*)0 };
2964 static KmParameter *_GEANT_LISTS_LPRIN_parameters[] = {
2965  &_GEANT_LISTS_LPRIN_LPRIN_1, &_GEANT_LISTS_LPRIN_LPRIN_2,
2966  &_GEANT_LISTS_LPRIN_LPRIN_3, &_GEANT_LISTS_LPRIN_LPRIN_4,
2967  &_GEANT_LISTS_LPRIN_LPRIN_5, &_GEANT_LISTS_LPRIN_LPRIN_6,
2968  &_GEANT_LISTS_LPRIN_LPRIN_7, &_GEANT_LISTS_LPRIN_LPRIN_8,
2969  &_GEANT_LISTS_LPRIN_LPRIN_9, &_GEANT_LISTS_LPRIN_LPRIN_10,
2970  &_GEANT_LISTS_LPRIN_LPRIN_11, &_GEANT_LISTS_LPRIN_LPRIN_12,
2971  &_GEANT_LISTS_LPRIN_LPRIN_13, &_GEANT_LISTS_LPRIN_LPRIN_14,
2972  &_GEANT_LISTS_LPRIN_LPRIN_15, &_GEANT_LISTS_LPRIN_LPRIN_16,
2973  &_GEANT_LISTS_LPRIN_LPRIN_17, &_GEANT_LISTS_LPRIN_LPRIN_18,
2974  &_GEANT_LISTS_LPRIN_LPRIN_19, &_GEANT_LISTS_LPRIN_LPRIN_20 };
2975 static char *_GEANT_LISTS_LPRIN_guidance[] = {
2976  "The command PRIN is similar to the PRIN data records. It can accept",
2977  "up to 20 4-character words. If the first argument is '.', the number",
2978  "of words is reset to 0 and all the words to four blanks." };
2979 static KmCommand _GEANT_LISTS_LPRIN = { &_GEANT_LISTS_GEOM,
2980  "/GEANT/LISTS/LPRIN", "LPRIN", 0, 2, 20, 0, _GEANT_LISTS_LPRIN_parameters, 0,
2981  0, gxlist_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3,
2982  _GEANT_LISTS_LPRIN_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
2983  (char*)0, (int*)0 };
2984  
2985 static KmParameter _GEANT_LISTS_SETS_LSETS_1 = { "LSETS_1", 7, "user word",
2986  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2987  KmTYPE_CHAR,  (void*)0 };
2988 static KmParameter _GEANT_LISTS_SETS_LSETS_2 = { "LSETS_2", 7, "user word",
2989  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2990  KmTYPE_CHAR,  (void*)0 };
2991 static KmParameter _GEANT_LISTS_SETS_LSETS_3 = { "LSETS_3", 7, "user word",
2992  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2993  KmTYPE_CHAR,  (void*)0 };
2994 static KmParameter _GEANT_LISTS_SETS_LSETS_4 = { "LSETS_4", 7, "user word",
2995  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2996  KmTYPE_CHAR,  (void*)0 };
2997 static KmParameter _GEANT_LISTS_SETS_LSETS_5 = { "LSETS_5", 7, "user word",
2998  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
2999  KmTYPE_CHAR,  (void*)0 };
3000 static KmParameter _GEANT_LISTS_SETS_LSETS_6 = { "LSETS_6", 7, "user word",
3001  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3002  KmTYPE_CHAR,  (void*)0 };
3003 static KmParameter _GEANT_LISTS_SETS_LSETS_7 = { "LSETS_7", 7, "user word",
3004  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3005  KmTYPE_CHAR,  (void*)0 };
3006 static KmParameter _GEANT_LISTS_SETS_LSETS_8 = { "LSETS_8", 7, "user word",
3007  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3008  KmTYPE_CHAR,  (void*)0 };
3009 static KmParameter _GEANT_LISTS_SETS_LSETS_9 = { "LSETS_9", 7, "user word",
3010  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3011  KmTYPE_CHAR,  (void*)0 };
3012 static KmParameter _GEANT_LISTS_SETS_LSETS_10 = { "LSETS_10", 8, "user word",
3013  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3014  KmTYPE_CHAR,  (void*)0 };
3015 static KmParameter _GEANT_LISTS_SETS_LSETS_11 = { "LSETS_11", 8, "user word",
3016  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3017  KmTYPE_CHAR,  (void*)0 };
3018 static KmParameter _GEANT_LISTS_SETS_LSETS_12 = { "LSETS_12", 8, "user word",
3019  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3020  KmTYPE_CHAR,  (void*)0 };
3021 static KmParameter _GEANT_LISTS_SETS_LSETS_13 = { "LSETS_13", 8, "user word",
3022  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3023  KmTYPE_CHAR,  (void*)0 };
3024 static KmParameter _GEANT_LISTS_SETS_LSETS_14 = { "LSETS_14", 8, "user word",
3025  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3026  KmTYPE_CHAR,  (void*)0 };
3027 static KmParameter _GEANT_LISTS_SETS_LSETS_15 = { "LSETS_15", 8, "user word",
3028  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3029  KmTYPE_CHAR,  (void*)0 };
3030 static KmParameter _GEANT_LISTS_SETS_LSETS_16 = { "LSETS_16", 8, "user word",
3031  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3032  KmTYPE_CHAR,  (void*)0 };
3033 static KmParameter _GEANT_LISTS_SETS_LSETS_17 = { "LSETS_17", 8, "user word",
3034  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3035  KmTYPE_CHAR,  (void*)0 };
3036 static KmParameter _GEANT_LISTS_SETS_LSETS_18 = { "LSETS_18", 8, "user word",
3037  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3038  KmTYPE_CHAR,  (void*)0 };
3039 static KmParameter _GEANT_LISTS_SETS_LSETS_19 = { "LSETS_19", 8, "user word",
3040  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3041  KmTYPE_CHAR,  (void*)0 };
3042 static KmParameter _GEANT_LISTS_SETS_LSETS_20 = { "LSETS_20", 8, "user word",
3043  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3044  KmTYPE_CHAR,  (void*)0 };
3045 static KmParameter *_GEANT_LISTS_SETS_parameters[] = {
3046  &_GEANT_LISTS_SETS_LSETS_1, &_GEANT_LISTS_SETS_LSETS_2,
3047  &_GEANT_LISTS_SETS_LSETS_3, &_GEANT_LISTS_SETS_LSETS_4,
3048  &_GEANT_LISTS_SETS_LSETS_5, &_GEANT_LISTS_SETS_LSETS_6,
3049  &_GEANT_LISTS_SETS_LSETS_7, &_GEANT_LISTS_SETS_LSETS_8,
3050  &_GEANT_LISTS_SETS_LSETS_9, &_GEANT_LISTS_SETS_LSETS_10,
3051  &_GEANT_LISTS_SETS_LSETS_11, &_GEANT_LISTS_SETS_LSETS_12,
3052  &_GEANT_LISTS_SETS_LSETS_13, &_GEANT_LISTS_SETS_LSETS_14,
3053  &_GEANT_LISTS_SETS_LSETS_15, &_GEANT_LISTS_SETS_LSETS_16,
3054  &_GEANT_LISTS_SETS_LSETS_17, &_GEANT_LISTS_SETS_LSETS_18,
3055  &_GEANT_LISTS_SETS_LSETS_19, &_GEANT_LISTS_SETS_LSETS_20 };
3056 static char *_GEANT_LISTS_SETS_guidance[] = {
3057  "The command SETS is similar to the SETS data records. It can accept",
3058  "up to 20 4-character words. If the first argument is '.', the number",
3059  "of words is reset to 0 and all the words to four blanks." };
3060 static KmCommand _GEANT_LISTS_SETS = { &_GEANT_LISTS_LPRIN,
3061  "/GEANT/LISTS/SETS", "SETS", 0, 2, 20, 0, _GEANT_LISTS_SETS_parameters, 0, 0,
3062  gxlist_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3,
3063  _GEANT_LISTS_SETS_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
3064  (char*)0, (int*)0 };
3065  
3066 static KmParameter _GEANT_LISTS_SAVE_LSAVE_1 = { "LSAVE_1", 7, "user word",
3067  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3068  KmTYPE_CHAR,  (void*)0 };
3069 static KmParameter _GEANT_LISTS_SAVE_LSAVE_2 = { "LSAVE_2", 7, "user word",
3070  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3071  KmTYPE_CHAR,  (void*)0 };
3072 static KmParameter _GEANT_LISTS_SAVE_LSAVE_3 = { "LSAVE_3", 7, "user word",
3073  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3074  KmTYPE_CHAR,  (void*)0 };
3075 static KmParameter _GEANT_LISTS_SAVE_LSAVE_4 = { "LSAVE_4", 7, "user word",
3076  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3077  KmTYPE_CHAR,  (void*)0 };
3078 static KmParameter _GEANT_LISTS_SAVE_LSAVE_5 = { "LSAVE_5", 7, "user word",
3079  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3080  KmTYPE_CHAR,  (void*)0 };
3081 static KmParameter _GEANT_LISTS_SAVE_LSAVE_6 = { "LSAVE_6", 7, "user word",
3082  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3083  KmTYPE_CHAR,  (void*)0 };
3084 static KmParameter _GEANT_LISTS_SAVE_LSAVE_7 = { "LSAVE_7", 7, "user word",
3085  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3086  KmTYPE_CHAR,  (void*)0 };
3087 static KmParameter _GEANT_LISTS_SAVE_LSAVE_8 = { "LSAVE_8", 7, "user word",
3088  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3089  KmTYPE_CHAR,  (void*)0 };
3090 static KmParameter _GEANT_LISTS_SAVE_LSAVE_9 = { "LSAVE_9", 7, "user word",
3091  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3092  KmTYPE_CHAR,  (void*)0 };
3093 static KmParameter _GEANT_LISTS_SAVE_LSAVE_10 = { "LSAVE_10", 8, "user word",
3094  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3095  KmTYPE_CHAR,  (void*)0 };
3096 static KmParameter _GEANT_LISTS_SAVE_LSAVE_11 = { "LSAVE_11", 8, "user word",
3097  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3098  KmTYPE_CHAR,  (void*)0 };
3099 static KmParameter _GEANT_LISTS_SAVE_LSAVE_12 = { "LSAVE_12", 8, "user word",
3100  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3101  KmTYPE_CHAR,  (void*)0 };
3102 static KmParameter _GEANT_LISTS_SAVE_LSAVE_13 = { "LSAVE_13", 8, "user word",
3103  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3104  KmTYPE_CHAR,  (void*)0 };
3105 static KmParameter _GEANT_LISTS_SAVE_LSAVE_14 = { "LSAVE_14", 8, "user word",
3106  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3107  KmTYPE_CHAR,  (void*)0 };
3108 static KmParameter _GEANT_LISTS_SAVE_LSAVE_15 = { "LSAVE_15", 8, "user word",
3109  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3110  KmTYPE_CHAR,  (void*)0 };
3111 static KmParameter _GEANT_LISTS_SAVE_LSAVE_16 = { "LSAVE_16", 8, "user word",
3112  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3113  KmTYPE_CHAR,  (void*)0 };
3114 static KmParameter _GEANT_LISTS_SAVE_LSAVE_17 = { "LSAVE_17", 8, "user word",
3115  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3116  KmTYPE_CHAR,  (void*)0 };
3117 static KmParameter _GEANT_LISTS_SAVE_LSAVE_18 = { "LSAVE_18", 8, "user word",
3118  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3119  KmTYPE_CHAR,  (void*)0 };
3120 static KmParameter _GEANT_LISTS_SAVE_LSAVE_19 = { "LSAVE_19", 8, "user word",
3121  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3122  KmTYPE_CHAR,  (void*)0 };
3123 static KmParameter _GEANT_LISTS_SAVE_LSAVE_20 = { "LSAVE_20", 8, "user word",
3124  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3125  KmTYPE_CHAR,  (void*)0 };
3126 static KmParameter *_GEANT_LISTS_SAVE_parameters[] = {
3127  &_GEANT_LISTS_SAVE_LSAVE_1, &_GEANT_LISTS_SAVE_LSAVE_2,
3128  &_GEANT_LISTS_SAVE_LSAVE_3, &_GEANT_LISTS_SAVE_LSAVE_4,
3129  &_GEANT_LISTS_SAVE_LSAVE_5, &_GEANT_LISTS_SAVE_LSAVE_6,
3130  &_GEANT_LISTS_SAVE_LSAVE_7, &_GEANT_LISTS_SAVE_LSAVE_8,
3131  &_GEANT_LISTS_SAVE_LSAVE_9, &_GEANT_LISTS_SAVE_LSAVE_10,
3132  &_GEANT_LISTS_SAVE_LSAVE_11, &_GEANT_LISTS_SAVE_LSAVE_12,
3133  &_GEANT_LISTS_SAVE_LSAVE_13, &_GEANT_LISTS_SAVE_LSAVE_14,
3134  &_GEANT_LISTS_SAVE_LSAVE_15, &_GEANT_LISTS_SAVE_LSAVE_16,
3135  &_GEANT_LISTS_SAVE_LSAVE_17, &_GEANT_LISTS_SAVE_LSAVE_18,
3136  &_GEANT_LISTS_SAVE_LSAVE_19, &_GEANT_LISTS_SAVE_LSAVE_20 };
3137 static char *_GEANT_LISTS_SAVE_guidance[] = {
3138  "The command SAVE is similar to the SAVE data records. It can accept",
3139  "up to 20 4-character words. If the first argument is '.', the number",
3140  "of words is reset to 0 and all the words to four blanks." };
3141 static KmCommand _GEANT_LISTS_SAVE = { &_GEANT_LISTS_SETS,
3142  "/GEANT/LISTS/SAVE", "SAVE", 0, 2, 20, 0, _GEANT_LISTS_SAVE_parameters, 0, 0,
3143  gxlist_, (IntFunc*)0, (SUBROUTINE*)0, (pCharFunc*)0, 3,
3144  _GEANT_LISTS_SAVE_guidance, 0, (char**)0, 0, (char**)0, 0, (char**)0,
3145  (char*)0, (int*)0 };
3146  
3147 static KmParameter _GEANT_LISTS_GET_LGET_1 = { "LGET_1", 6, "user word",
3148  (char*)0, (char*)0, 20, 0, (char**)0, 0, (char**)0, (KmParFlag)0,
3149  KmTYPE_CHAR, &