All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
TGeant3f77.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  * *
4  * Author: The ALICE Off-line Project. *
5  * Contributors are mentioned in the code where appropriate. *
6  * *
7  * Permission to use, copy, modify and distribute this software and its *
8  * documentation strictly for non-commercial purposes is hereby granted *
9  * without fee, provided that the above copyright notice appears in all *
10  * copies and that both the copyright notice and this permission notice *
11  * appear in the supporting documentation. The authors make no claims *
12  * about the suitability of this software for any purpose. It is *
13  * provided "as is" without express or implied warranty. *
14  **************************************************************************/
15 
16 
17 ///////////////////////////////////////////////////////////////////////////////
18 // //
19 // Interface Class to the Geant3.21 MonteCarlo //
20 // //
21 // //
22 // //
23 ///////////////////////////////////////////////////////////////////////////////
24 
26 
28 
29 
30 #ifndef WIN32
31 # define gzebra gzebra_
32 # define grfile grfile_
33 # define gpcxyz gpcxyz_
34 # define ggclos ggclos_
35 # define glast glast_
36 # define ginit ginit_
37 # define g3cinit g3cinit_
38 # define gzinit gzinit_
39 # define grun grun_
40 # define gtrig gtrig_
41 # define gtrigc gtrigc_
42 # define gtrigi gtrigi_
43 # define gfmate gfmate_
44 # define gfpart gfpart_
45 # define gftmed gftmed_
46 # define gftmat gftmat_
47 # define gpart gpart_
48 # define gmate gmate_
49 # define gsdk gsdk_
50 # define gsmate gsmate_
51 # define gsmixt gsmixt_
52 # define gspart gspart_
53 # define gstmed gstmed_
54 # define gsckov gsckov_
55 # define gstpar gstpar_
56 # define gfkine gfkine_
57 # define gfvert gfvert_
58 # define gskine gskine_
59 # define gsvert gsvert_
60 # define gpvolu gpvolu_
61 # define gprotm gprotm_
62 # define gptmed gptmed_
63 # define gpmate gpmate_
64 # define gppart gppart_
65 # define gpsets gpsets_
66 # define gpvert gpvert_
67 # define gpkine gpkine_
68 # define gpjxyz gpjxyz_
69 # define gphits gphits_
70 # define g3pvolu g3pvolu_
71 # define g3protm g3protm_
72 # define g3ptmed g3ptmed_
73 # define g3pmate g3pmate_
74 # define g3ppart g3ppart_
75 # define g3psets g3psets_
76 # define g3pvert g3pvert_
77 # define g3pkine g3pkine_
78 # define g3pjxyz g3pjxyz_
79 # define g3phits g3phits_
80 # define g3part g3part_
81 # define g3mate g3mate_
82 # define gscank gscank_
83 # define gscanu gscanu_
84 # define g3scank g3scank_
85 # define g3scanu g3scanu_
86 # define g3bhsta g3bhsta_
87 # define gbhsta gbhsta_
88 # define gphysi gphysi_
89 # define gdebug gdebug_
90 # define gekbin gekbin_
91 # define gfinds gfinds_
92 # define gsking gsking_
93 # define gskpho gskpho_
94 # define gsstak gsstak_
95 # define gsxyz gsxyz_
96 # define gtrack gtrack_
97 # define gtreve gtreve_
98 # define gtreveroot gtreveroot_
99 # define grndm grndm_
100 # define grndmq grndmq_
101 # define gdtom gdtom_
102 # define glmoth glmoth_
103 # define gmtod gmtod_
104 # define gsdvn gsdvn_
105 # define gsdvn2 gsdvn2_
106 # define gsdvs gsdvs_
107 # define gsdvs2 gsdvs2_
108 # define gsdvt gsdvt_
109 # define gsdvt2 gsdvt2_
110 # define gsord gsord_
111 # define gspos gspos_
112 # define gsposp gsposp_
113 # define gsrotm gsrotm_
114 # define gsvolu gsvolu_
115 # define gprint gprint_
116 # define gdinit gdinit_
117 # define gdopt gdopt_
118 # define gdraw gdraw_
119 # define gdrayt gdrayt_
120 # define gdrawc gdrawc_
121 # define gdrawx gdrawx_
122 # define gdhead gdhead_
123 # define gdwmn1 gdwmn1_
124 # define gdwmn2 gdwmn2_
125 # define gdwmn3 gdwmn3_
126 # define gdxyz gdxyz_
127 # define gdman gdman_
128 # define gdspec gdspec_
129 # define gdtree gdtree_
130 # define gdelet gdelet_
131 # define gdclos gdclos_
132 # define gdshow gdshow_
133 # define gdopen gdopen_
134 # define dzshow dzshow_
135 # define gsatt gsatt_
136 # define gfpara gfpara_
137 # define gckpar gckpar_
138 # define gckmat gckmat_
139 # define geditv geditv_
140 # define mzdrop mzdrop_
141 
142 # define ertrak ertrak_
143 # define ertrgo ertrgo_
144 
145 # define setbomb setbomb_
146 # define setclip setclip_
147 # define gcomad gcomad_
148 
149 # define gbrelm gbrelm_
150 # define gprelm gprelm_
151 
152 # define rxgtrak rxgtrak_
153 # define rxouth rxouth_
154 # define rxinh rxinh_
155 
156 #else
157 
158 # define gzebra GZEBRA
159 # define grfile GRFILE
160 # define gpcxyz GPCXYZ
161 # define ggclos GGCLOS
162 # define glast GLAST
163 # define ginit GINIT
164 # define g3cinit G3CINIT
165 # define gzinit GZINIT
166 # define grun GRUN
167 # define gtrig GTRIG
168 # define gtrigc GTRIGC
169 # define gtrigi GTRIGI
170 # define gfmate GFMATE
171 # define gfpart GFPART
172 # define gftmed GFTMED
173 # define gftmat GFTMAT
174 # define gsdk GSDK
175 # define gsmate GSMATE
176 # define gsmixt GSMIXT
177 # define gspart GSPART
178 # define gstmed GSTMED
179 # define gsckov GSCKOV
180 # define gstpar GSTPAR
181 # define gfkine GFKINE
182 # define gfvert GFVERT
183 # define gskine GSKINE
184 # define gsvert GSVERT
185 # define gphysi GPHYSI
186 # define gdebug GDEBUG
187 # define gekbin GEKBIN
188 # define gfinds GFINDS
189 # define gsking GSKING
190 # define gskpho GSKPHO
191 # define gsstak GSSTAK
192 # define gsxyz GSXYZ
193 # define gtrack GTRACK
194 # define gtreve GTREVE
195 # define gtreveroot GTREVEROOT
196 # define grndm GRNDM
197 # define grndmq GRNDMQ
198 # define gdtom GDTOM
199 # define glmoth GLMOTH
200 # define gmedia GMEDIA
201 # define gmtod GMTOD
202 # define gsdvn GSDVN
203 # define gsdvn2 GSDVN2
204 # define gsdvs GSDVS
205 # define gsdvs2 GSDVS2
206 # define gsdvt GSDVT
207 # define gsdvt2 GSDVT2
208 # define gsord GSORD
209 # define gspos GSPOS
210 # define gsposp GSPOSP
211 # define gsrotm GSROTM
212 # define gsvolu GSVOLU
213 # define gprint GPRINT
214 # define gdinit GDINIT
215 # define gdopt GDOPT
216 # define gdraw GDRAW
217 # define gdrayt GDRAYT
218 # define gdrawc GDRAWC
219 # define gdrawx GDRAWX
220 # define gdhead GDHEAD
221 # define gdwmn1 GDWMN1
222 # define gdwmn2 GDWMN2
223 # define gdwmn3 GDWMN3
224 # define gdxyz GDXYZ
225 # define gdman GDMAN
226 # define gdfspc GDFSPC
227 # define gdspec GDSPEC
228 # define gdtree GDTREE
229 # define gdelet GDELET
230 # define gdclos GDCLOS
231 # define gdshow GDSHOW
232 # define gdopen GDOPEN
233 # define dzshow DZSHOW
234 # define gsatt GSATT
235 # define gfpara GFPARA
236 # define gckmat GCKMAT
237 # define geditv GEDITV
238 # define mzdrop MZDROP
239 
240 # define ertrak ERTRAK
241 # define ertrgo ERTRGO
242 
243 # define setbomb SETBOMB
244 # define setclip SETCLIP
245 # define gcomad GCOMAD
246 
247 # define gbrelm GBRELM
248 # define gprelm GPRELM
249 
250 # define rxgtrak RXGTRAK
251 # define rxouth RXOUTH
252 # define rxinh RXINH
253 
254 #endif
255 
256 //
257 // Geant3 global pointer
258 //
259 extern TGeant3 *geant3;
260 
262 
263 //____________________________________________________________________________
265 {
266  //
267  // Default constructor
268  //
269 }
270 
271 //____________________________________________________________________________
272 TGeant3f77::TGeant3f77(const char *title, Int_t nwgeant)
273  :TGeant3(title,nwgeant)
274 {
275 }
276 
277 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
278 //
279 // Functions from GBASE
280 //
281 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
282 
283 //____________________________________________________________________________
284 extern "C"
285 {
286  void g3pvolu(Int_t &);
287  void g3protm(Int_t &);
288  void g3ptmed(Int_t &);
289  void g3pmate(Int_t &);
290  void g3ppart(Int_t &);
291  void g3psets(Int_t &);
292  void g3pvert(Int_t &);
293  void g3pkine(Int_t &);
294  void g3pjxyz(Int_t &);
295  void g3phits(Int_t &);
296  void g3part(Int_t &);
297  void g3mate();
298  void g3bhsta();
299  void g3scank();
300  void g3scanu();
301 }
302 
303 extern "C" {
304 
305 //____________________________________________________________________________
306 void gfile(const char *filename, const char *option)
307 {
308  //
309  // Routine to open a GEANT/RZ data base.
310  //
311  // LUN logical unit number associated to the file
312  //
313  // CHFILE RZ file name
314  //
315  // CHOPT is a character string which may be
316  // N To create a new file
317  // U to open an existing file for update
318  // " " to open an existing file for read only
319  // Q The initial allocation (default 1000 records)
320  // is given in IQUEST(10)
321  // X Open the file in exchange format
322  // I Read all data structures from file to memory
323  // O Write all data structures from memory to file
324  //
325  // Note:
326  // If options "I" or "O" all data structures are read or
327  // written from/to file and the file is closed.
328  // See routine GRMDIR to create subdirectories
329  // See routines GROUT,GRIN to write,read objects
330  //
331  geant3->Gfile(filename,option);
332 }
333 
334 //____________________________________________________________________________
335 void gpcxyz()
336 {
337  //
338  // Print track and volume parameters at current point
339  //
340 
341  geant3->Gpcxyz();
342 }
343 //_____________________________________________________________________________
344 void ggclos()
345 {
346  //
347  // Closes off the geometry setting.
348  // Initializes the search list for the contents of each
349  // volume following the order they have been positioned, and
350  // inserting the content '0' when a call to GSNEXT (-1) has
351  // been required by the user.
352  // Performs the development of the JVOLUM structure for all
353  // volumes with variable parameters, by calling GGDVLP.
354  // Interprets the user calls to GSORD, through GGORD.
355  // Computes and stores in a bank (next to JVOLUM mother bank)
356  // the number of levels in the geometrical tree and the
357  // maximum number of contents per level, by calling GGNLEV.
358  // Sets status bit for CONCAVE volumes, through GGCAVE.
359  // Completes the JSET structure with the list of volume names
360  // which identify uniquely a given physical detector, the
361  // list of bit numbers to pack the corresponding volume copy
362  // numbers, and the generic path(s) in the JVOLUM tree,
363  // through the routine GHCLOS.
364  //
365  geant3->FinishGeometry();
366 }
367 
368 //_____________________________________________________________________________
369 void glast()
370 {
371  //
372  // Finish a Geant run
373  //
374  geant3->Glast();
375 }
376 
377 //_____________________________________________________________________________
378 void gprint(const char *name, Int_t val, const Int_t lname)
379 {
380  //
381  // Routine to print data structures
382  // CHNAME name of a data structure
383  //
384  if (lname > 0) {
385  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
386  if (val == 0) geant3->Gprint(vname);
387  else geant3->Gprint(vname);
388  } else {
389  geant3->Gprint("*");
390  }
391 }
392 
393 //_____________________________________________________________________________
394 void grun()
395 {
396  //
397  // Steering function to process one run
398  //
399  geant3->Grun();
400 }
401 
402 //_____________________________________________________________________________
403 void gtrig()
404 {
405  //
406  // Steering function to process one event
407  //
408  geant3->Gtrig();
409 }
410 
411 //_____________________________________________________________________________
412 void gtrigc()
413 {
414  //
415  // Clear event partition
416  //
417  geant3->Gtrigc();
418 }
419 
420 //_____________________________________________________________________________
421 void gtrigi()
422 {
423  //
424  // Initialises event partition
425  //
426  geant3->Gtrigi();
427 }
428 
429 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
430 //
431 // Functions from GCONS
432 //
433 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
434 
435 //_____________________________________________________________________________
436 void gfmate(Int_t &imat, char *name, Float_t &a, Float_t &z,
437  Float_t &dens, Float_t &radl, Float_t &absl,
438  Float_t* ubuf, Int_t& nbuf, const Int_t lname)
439 {
440  //
441  // Return parameters for material IMAT
442  //
443  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
444  geant3->Gfmate(imat, vname,a,z,dens,radl,absl,ubuf,nbuf);
445 }
446 
447 //_____________________________________________________________________________
448 void gfpart(Int_t &ipart, char *name, Int_t &itrtyp,
449  Float_t &amass, Float_t &charge, Float_t &tlife, const Int_t lname)
450 {
451  //
452  // Return parameters for particle of type IPART
453  //
454  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
455  geant3->Gfpart(ipart, vname, itrtyp, amass, charge, tlife);
456 }
457 
458 //_____________________________________________________________________________
459 void gftmed(Int_t &numed, char *name, Int_t &nmat, Int_t &isvol,
460  Int_t &ifield, Float_t &fieldm, Float_t &tmaxfd,
461  Float_t &stemax, Float_t &deemax, Float_t &epsil,
462  Float_t &stmin, Float_t * /*ubuf*/, Int_t * /*nbuf*/, const Int_t lname)
463 {
464  //
465  // Return parameters for tracking medium NUMED
466  //
467  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
468  geant3->Gftmed(numed, vname, nmat, isvol, ifield, fieldm, tmaxfd, stemax,
469  deemax, epsil, stmin);
470 }
471 
472 
473 //_____________________________________________________________________________
474  void gftmat(Int_t &imate, Int_t &ipart, char *chmeca, Int_t &kdim,
475  Float_t* tkin, Float_t* value, Float_t* pcut,
476  Int_t &ixst)
477 {
478  //
479  // Return parameters for tracking medium NUMED
480  //
481  geant3->Gftmat(imate, ipart, chmeca, kdim, tkin, value, pcut, ixst);
482 }
483 
484 //_____________________________________________________________________________
485 void gsdk(Int_t &ipart, Float_t *bratio, Int_t *mode)
486 {
487 // Defines branching ratios and decay modes for standard
488 // GEANT particles.
489  geant3->Gsdk(ipart,bratio,mode);
490 }
491 
492 //_____________________________________________________________________________
493 void gsmate(Int_t &imat, const char *name, Float_t &a, Float_t &z,
494  Float_t &dens, Float_t &radl, Float_t &absl, Float_t */*ubuf*/, Int_t &/*nbuf*/, const Int_t lname)
495 {
496  //
497  // Defines a Material
498  //
499  // kmat number assigned to the material
500  // name material name
501  // a atomic mass in au
502  // z atomic number
503  // dens density in g/cm3
504  // absl absorbtion length in cm
505  // if >=0 it is ignored and the program
506  // calculates it, if <0. -absl is taken
507  // radl radiation length in cm
508  // if >=0 it is ignored and the program
509  // calculates it, if <0. -radl is taken
510  // buf pointer to an array of user words
511  // nbuf number of user words
512  //
513  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
514  geant3->Gsmate(imat,vname, a, z, dens, radl, absl);
515 }
516 
517 //_____________________________________________________________________________
518 void gsmixt(Int_t &imat, const char *name, Float_t *a, Float_t *z,
519  Float_t &dens, Int_t &nlmat, Float_t *wmat, const Int_t lname)
520 {
521  //
522  // Defines mixture OR COMPOUND IMAT as composed by
523  // THE BASIC NLMAT materials defined by arrays A,Z and WMAT
524  //
525  // If NLMAT.GT.0 then WMAT contains the PROPORTION BY
526  // WEIGTHS OF EACH BASIC MATERIAL IN THE MIXTURE.
527  //
528  // If NLMAT.LT.0 then WMAT contains the number of atoms
529  // of a given kind into the molecule of the COMPOUND
530  // In this case, WMAT in output is changed to relative
531  // weigths.
532  //
533  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
534  geant3->Gsmixt(imat,vname, a, z,dens, nlmat,wmat);
535 }
536 
537 //_____________________________________________________________________________
538 void gspart(Int_t &ipart, const char *name, Int_t &itrtyp,
539  Float_t &amass, Float_t &charge, Float_t &tlife, Float_t * /*ubuf*/, Int_t & /*nbuf*/, const Int_t lname)
540 {
541  //
542  // Store particle parameters
543  //
544  // ipart particle code
545  // name particle name
546  // itrtyp transport method (see GEANT manual)
547  // amass mass in GeV/c2
548  // charge charge in electron units
549  // tlife lifetime in seconds
550  //
551 
552  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
553  geant3->Gspart(ipart,vname, itrtyp, amass, charge, tlife);
554 }
555 
556 //_____________________________________________________________________________
557 void gstmed(Int_t &numed, const char *name, Int_t &nmat, Int_t &isvol,
558  Int_t &ifield, Float_t &fieldm, Float_t &tmaxfd,
559  Float_t &stemax, Float_t &deemax, Float_t &epsil,
560  Float_t &stmin, Float_t * /*ubuf*/, Int_t & /*nbuf*/, const Int_t lname)
561 {
562  //
563  // NTMED Tracking medium number
564  // NAME Tracking medium name
565  // NMAT Material number
566  // ISVOL Sensitive volume flag
567  // IFIELD Magnetic field
568  // FIELDM Max. field value (Kilogauss)
569  // TMAXFD Max. angle due to field (deg/step)
570  // STEMAX Max. step allowed
571  // DEEMAX Max. fraction of energy lost in a step
572  // EPSIL Tracking precision (cm)
573  // STMIN Min. step due to continuos processes (cm)
574  //
575  // IFIELD = 0 if no magnetic field; IFIELD = -1 if user decision in GUSWIM;
576  // IFIELD = 1 if tracking performed with GRKUTA; IFIELD = 2 if tracking
577  // performed with G3HELIX; IFIELD = 3 if tracking performed with G3HELX3.
578  //
579  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
580  geant3->Gstmed(numed,vname, nmat, isvol, ifield, fieldm, tmaxfd, stemax,
581  deemax, epsil, stmin);
582 }
583 
584 //_____________________________________________________________________________
585 void gsckov(Int_t &itmed, Int_t &npckov, Float_t *ppckov,
586  Float_t *absco, Float_t *effic, Float_t *rindex)
587 {
588  //
589  // Stores the tables for UV photon tracking in medium ITMED
590  // Please note that it is the user's responsability to
591  // provide all the coefficients:
592  //
593  //
594  // ITMED Tracking medium number
595  // NPCKOV Number of bins of each table
596  // PPCKOV Value of photon momentum (in GeV)
597  // ABSCO Absorbtion coefficients
598  // dielectric: absorbtion length in cm
599  // metals : absorbtion fraction (0<=x<=1)
600  // EFFIC Detection efficiency for UV photons
601  // RINDEX Refraction index (if=0 metal)
602  //
603  geant3->Gsckov(itmed,npckov,ppckov,absco,effic,rindex);
604 }
605 
606 //_____________________________________________________________________________
607 void gstpar(Int_t &itmed, const char *name, Float_t &parval, const Int_t lname)
608 {
609  //
610  // To change the value of cut or mechanism "CHPAR"
611  // to a new value PARVAL for tracking medium ITMED
612  // The data structure JTMED contains the standard tracking
613  // parameters (CUTS and flags to control the physics processes) which
614  // are used by default for all tracking media. It is possible to
615  // redefine individually with GSTPAR any of these parameters for a
616  // given tracking medium.
617  // ITMED tracking medium number
618  // CHPAR is a character string (variable name)
619  // PARVAL must be given as a floating point.
620  //
621 
622  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
623  geant3->Gstpar(itmed,vname, parval);
624 }
625 
626 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
627 //
628 // Functions from GCONS
629 //
630 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
631 
632 //_____________________________________________________________________________
633 void gfkine(Int_t &itra, Float_t *vert, Float_t *pvert, Int_t &ipart,
634  Int_t &nvert, Float_t *ubuf, Int_t &nbuf)
635 {
636  // Storing/Retrieving Vertex and Track parameters
637  // ----------------------------------------------
638  //
639  // Stores vertex parameters.
640  // VERT array of (x,y,z) position of the vertex
641  // NTBEAM beam track number origin of the vertex
642  // =0 if none exists
643  // NTTARG target track number origin of the vertex
644  // UBUF user array of NUBUF floating point numbers
645  // NUBUF
646  // NVTX new vertex number (=0 in case of error).
647  // Prints vertex parameters.
648  // IVTX for vertex IVTX.
649  // (For all vertices if IVTX=0)
650  // Stores long life track parameters.
651  // PLAB components of momentum
652  // IPART type of particle (see GSPART)
653  // NV vertex number origin of track
654  // UBUF array of NUBUF floating point user parameters
655  // NUBUF
656  // NT track number (if=0 error).
657  // Retrieves long life track parameters.
658  // ITRA track number for which parameters are requested
659  // VERT vector origin of the track
660  // PVERT 4 momentum components at the track origin
661  // IPART particle type (=0 if track ITRA does not exist)
662  // NVERT vertex number origin of the track
663  // UBUF user words stored in GSKINE.
664  // Prints initial track parameters.
665  // ITRA for track ITRA
666  // (For all tracks if ITRA=0)
667  //
668  ubuf=0;
669  nbuf=0;
670  geant3->Gfkine(itra,vert,pvert,ipart,nvert);
671 }
672 
673 //_____________________________________________________________________________
674 void gfvert(Int_t &nvtx, Float_t *v, Int_t &ntbeam, Int_t &nttarg,
675  Float_t &tofg, Float_t *ubuf, Int_t &nbuf)
676 {
677  //
678  // Retrieves the parameter of a vertex bank
679  // Vertex is generated from tracks NTBEAM NTTARG
680  // NVTX is the new vertex number
681  //
682  ubuf=0;
683  nbuf=0;
684  geant3->Gfvert(nvtx,v,ntbeam,nttarg,tofg);
685 }
686 
687 //_____________________________________________________________________________
688 void gskine(Float_t *plab, Int_t &ipart, Int_t &nv, Float_t *buf,
689  Int_t &nbuf, Int_t &nt)
690 {
691  //
692  // Store kinematics of track NT into data structure
693  // Track is coming from vertex NV
694  //
695  nt = geant3->Gskine(plab, ipart, nv, buf, nbuf);
696 }
697 
698 //_____________________________________________________________________________
699 void gsvert(Float_t *v, Int_t &ntbeam, Int_t &nttarg, Float_t *ubuf,
700  Int_t &nbuf, Int_t &nwtx)
701 {
702  //
703  // Creates a new vertex bank
704  // Vertex is generated from tracks NTBEAM NTTARG
705  // NVTX is the new vertex number
706  //
707  nwtx = geant3->Gsvert(v, ntbeam, nttarg, ubuf, nbuf);
708 }
709 
710 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
711 //
712 // Functions from GPHYS
713 //
714 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
715 
716 //_____________________________________________________________________________
717 void gphysi()
718 {
719  //
720  // Initialise material constants for all the physics
721  // mechanisms used by GEANT
722  //
723  geant3->Gphysi();
724 }
725 
726 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
727 //
728 // Functions from GTRAK
729 //
730 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
731 
732 //_____________________________________________________________________________
733 void gdebug()
734 {
735  //
736  // Debug the current step
737  //
738  geant3->Gdebug();
739 }
740 
741 //_____________________________________________________________________________
742 void gsking(Int_t &igk)
743 {
744  //
745  // Stores in stack JSTAK either the IGKth track of /GCKING/,
746  // or the NGKINE tracks when IGK is 0.
747  //
748  geant3->Gsking(igk);
749 }
750 
751 //_____________________________________________________________________________
752 void gskpho(Int_t &igk)
753 {
754  //
755  // Stores in stack JSTAK either the IGKth Cherenkov photon of
756  // /GCKIN2/, or the NPHOT tracks when IGK is 0.
757  //
758  geant3->Gskpho(igk);
759 }
760 
761 //_____________________________________________________________________________
762 void gsstak(Int_t &iflag)
763 {
764  //
765  // Stores in auxiliary stack JSTAK the particle currently
766  // described in common /GCKINE/.
767  //
768  // On request, creates also an entry in structure JKINE :
769  // IFLAG =
770  // 0 : No entry in JKINE structure required (user)
771  // 1 : New entry in JVERTX / JKINE structures required (user)
772  // <0 : New entry in JKINE structure at vertex -IFLAG (user)
773  // 2 : Entry in JKINE structure exists already (from GTREVE)
774  //
775  geant3->Gsstak(iflag);
776 }
777 
778 //_____________________________________________________________________________
779 void gsxyz()
780 {
781  //
782  // Store space point VECT in banks JXYZ
783  //
784  geant3->Gsxyz();
785 }
786 
787 //_____________________________________________________________________________
788 void gtrack()
789 {
790  //
791  // Controls tracking of current particle
792  //
793  geant3->Gtrack();
794 }
795 
796 //_____________________________________________________________________________
797 void gtreve()
798 {
799  //
800  // Controls tracking of all particles belonging to the current event
801  //
802  geant3->Gtreve();
803 }
804 
805 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
806 //
807 // Functions from GDRAW
808 //
809 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
810 
811 //_____________________________________________________________________________
812 void gdxyz(Int_t & /*it*/)
813 {
814  //
815  // Draw the points stored with Gsxyz relative to track it
816  //
817  //geant3->Ggdxyz(it);
818 }
819 
820 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
821 //
822 // Functions from GGEOM
823 //
824 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
825 
826 //_____________________________________________________________________________
827 void gdtom(Float_t *xd, Float_t *xm, Int_t &iflag)
828 {
829  //
830  // Computes coordinates XM (Master Reference System
831  // knowing the coordinates XD (Detector Ref System)
832  // The local reference system can be initialized by
833  // - the tracking routines and GDTOM used in GUSTEP
834  // - a call to GSCMED(NLEVEL,NAMES,NUMBER)
835  // (inverse routine is GMTOD)
836  //
837  // If IFLAG=1 convert coordinates
838  // IFLAG=2 convert direction cosinus
839  //
840  geant3->Gdtom(xd, xm, iflag);
841 }
842 
843 //_____________________________________________________________________________
844 void glmoth(const char* name, Int_t &iunum, Int_t &nlev, Int_t *lvols,
845  Int_t *lindx, const Int_t lname)
846 {
847  //
848  // Loads the top part of the Volume tree in LVOLS (IVO's),
849  // LINDX (IN indices) for a given volume defined through
850  // its name IUDET and number IUNUM.
851  //
852  // The routine stores only upto the last level where JVOLUM
853  // data structure is developed. If there is no development
854  // above the current level, it returns NLEV zero.
855  //Int_t *idum=0;
856  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
857  geant3->Glmoth(vname, iunum, nlev, lvols, lindx);
858 }
859 
860 //_____________________________________________________________________________
861 void gmtod(Float_t *xm, Float_t *xd, Int_t &iflag)
862 {
863  //
864  // Computes coordinates XD (in DRS)
865  // from known coordinates XM in MRS
866  // The local reference system can be initialized by
867  // - the tracking routines and GMTOD used in GUSTEP
868  // - a call to GMEDIA(XM,NUMED)
869  // - a call to GLVOLU(NLEVEL,NAMES,NUMBER,IER)
870  // (inverse routine is GDTOM)
871  //
872  // If IFLAG=1 convert coordinates
873  // IFLAG=2 convert direction cosinus
874  //
875  geant3->Gmtod(xm, xd, iflag);
876 }
877 
878 //_____________________________________________________________________________
879 void gsdvn(const char *name, const char *mother, Int_t &ndiv,
880  Int_t &iaxis, const Int_t lname, const Int_t lmother)
881 {
882  //
883  // Create a new volume by dividing an existing one
884  //
885  // NAME Volume name
886  // MOTHER Mother volume name
887  // NDIV Number of divisions
888  // IAXIS Axis value
889  //
890  // X,Y,Z of CAXIS will be translated to 1,2,3 for IAXIS.
891  // It divides a previously defined volume.
892  //
893  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
894  char vmother[24]; strncpy(vmother,mother,lmother); vmother[lmother] = 0;
895  geant3->Gsdvn(vname, vmother, ndiv, iaxis);
896 }
897 
898 //_____________________________________________________________________________
899 void gsdvn2(const char *name, const char *mother, Int_t &ndiv,
900  Int_t &iaxis, Float_t &c0i, Int_t &numed, const Int_t lname, const Int_t lmother)
901 {
902  //
903  // Create a new volume by dividing an existing one
904  //
905  // Divides mother into ndiv divisions called name
906  // along axis iaxis starting at coordinate value c0.
907  // the new volume created will be medium number numed.
908  //
909  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
910  char vmother[24]; strncpy(vmother,mother,lmother); vmother[lmother] = 0;
911  geant3->Gsdvn2(vname, vmother, ndiv, iaxis, c0i, numed);
912 }
913 
914 //_____________________________________________________________________________
915 void gsdvs(const char *name, const char *mother, Float_t &step,
916  Int_t &iaxis, Int_t &numed, const Int_t lname, const Int_t lmother)
917 {
918  //
919  // Create a new volume by dividing an existing one
920  //
921  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
922  char vmother[24]; strncpy(vmother,mother,lmother); vmother[lmother] = 0;
923  geant3->Gsdvs(vname, vmother, step, iaxis, numed);
924 }
925 
926 //_____________________________________________________________________________
927 void gsdvs2(const char *name, const char *mother, Float_t &step,
928  Int_t &iaxis, Float_t &c0, Int_t &numed, const Int_t lname, const Int_t lmother)
929 {
930  //
931  // Create a new volume by dividing an existing one
932  //
933  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
934  char vmother[24]; strncpy(vmother,mother,lmother); vmother[lmother] = 0;
935  geant3->Gsdvs2(vname, vmother, step, iaxis, c0, numed);
936 }
937 
938 //_____________________________________________________________________________
939 void gsdvt(const char *name, const char *mother, Float_t &step,
940  Int_t &iaxis, Int_t &numed, Int_t &ndvmx, const Int_t lname, const Int_t lmother)
941 {
942  //
943  // Create a new volume by dividing an existing one
944  //
945  // Divides MOTHER into divisions called NAME along
946  // axis IAXIS in steps of STEP. If not exactly divisible
947  // will make as many as possible and will centre them
948  // with respect to the mother. Divisions will have medium
949  // number NUMED. If NUMED is 0, NUMED of MOTHER is taken.
950  // NDVMX is the expected maximum number of divisions
951  // (If 0, no protection tests are performed)
952  //
953  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
954  char vmother[24]; strncpy(vmother,mother,lmother); vmother[lmother] = 0;
955  geant3->Gsdvt(vname, vmother, step, iaxis, numed, ndvmx);
956 }
957 
958 //_____________________________________________________________________________
959 void gsdvt2(const char *name, const char *mother, Float_t &step,
960  Int_t &iaxis, Float_t &c0, Int_t &numed, Int_t &ndvmx, const Int_t lname, const Int_t lmother)
961 {
962  //
963  // Create a new volume by dividing an existing one
964  //
965  // Divides MOTHER into divisions called NAME along
966  // axis IAXIS starting at coordinate value C0 with step
967  // size STEP.
968  // The new volume created will have medium number NUMED.
969  // If NUMED is 0, NUMED of mother is taken.
970  // NDVMX is the expected maximum number of divisions
971  // (If 0, no protection tests are performed)
972  //
973  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
974  char vmother[24]; strncpy(vmother,mother,lmother); vmother[lmother] = 0;
975  geant3->Gsdvt2(vname, vmother, step, iaxis, c0, numed, ndvmx);
976 }
977 
978 //_____________________________________________________________________________
979 void gsord(const char *name, Int_t &iax, const Int_t lname)
980 {
981  //
982  // Flags volume CHNAME whose contents will have to be ordered
983  // along axis IAX, by setting the search flag to -IAX
984  // IAX = 1 X axis
985  // IAX = 2 Y axis
986  // IAX = 3 Z axis
987  // IAX = 4 Rxy (static ordering only -> GTMEDI)
988  // IAX = 14 Rxy (also dynamic ordering -> GTNEXT)
989  // IAX = 5 Rxyz (static ordering only -> GTMEDI)
990  // IAX = 15 Rxyz (also dynamic ordering -> GTNEXT)
991  // IAX = 6 PHI (PHI=0 => X axis)
992  // IAX = 7 THETA (THETA=0 => Z axis)
993  //
994  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
995  geant3->Gsord(vname, iax);
996 }
997 
998 //_____________________________________________________________________________
999 void gspos(const char *name, Int_t &nr, const char *mother, Float_t &x,
1000  Float_t &y, Float_t &z, Int_t &irot, const char *konly, const Int_t lname, const Int_t lmother, const Int_t lkonly)
1001 {
1002  //
1003  // Position a volume into an existing one
1004  //
1005  // NAME Volume name
1006  // NUMBER Copy number of the volume
1007  // MOTHER Mother volume name
1008  // X X coord. of the volume in mother ref. sys.
1009  // Y Y coord. of the volume in mother ref. sys.
1010  // Z Z coord. of the volume in mother ref. sys.
1011  // IROT Rotation matrix number w.r.t. mother ref. sys.
1012  // ONLY ONLY/MANY flag
1013  //
1014  // It positions a previously defined volume in the mother.
1015  //
1016 
1017  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
1018  char vmother[24]; strncpy(vmother,mother,lmother); vmother[lmother] = 0;
1019  char vkonly[24]; strncpy(vkonly,konly,lkonly); vkonly[lkonly] = 0;
1020  geant3->Gspos(vname, nr, vmother, x, y, z, irot, vkonly);
1021 }
1022 
1023 //_____________________________________________________________________________
1024 void gsposp(const char *name, Int_t &nr, const char *mother,
1025  Float_t &x, Float_t &y, Float_t &z, Int_t &irot,
1026  const char *konly, Float_t *upar, Int_t &np , const Int_t lname, const Int_t lmother)
1027 {
1028  //
1029  // Place a copy of generic volume NAME with user number
1030  // NR inside MOTHER, with its parameters UPAR(1..NP)
1031  //
1032  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
1033  char vmother[24]; strncpy(vmother,mother,lmother); vmother[lmother] = 0;
1034  geant3->Gsposp(vname, nr, vmother, x,y, z, irot, konly, upar, np);
1035 }
1036 
1037 //_____________________________________________________________________________
1038 void gsrotm(Int_t &nmat, Float_t &theta1, Float_t &phi1, Float_t &theta2,
1039  Float_t &phi2, Float_t &theta3, Float_t &phi3)
1040 {
1041  //
1042  // nmat Rotation matrix number
1043  // THETA1 Polar angle for axis I
1044  // PHI1 Azimuthal angle for axis I
1045  // THETA2 Polar angle for axis II
1046  // PHI2 Azimuthal angle for axis II
1047  // THETA3 Polar angle for axis III
1048  // PHI3 Azimuthal angle for axis III
1049  //
1050  // It defines the rotation matrix number IROT.
1051  //
1052  geant3->Gsrotm(nmat, theta1, phi1, theta2, phi2, theta3, phi3);
1053 }
1054 
1055 //_____________________________________________________________________________
1056 void gsvolu(const char *name, const char *shape, Int_t &nmed,
1057  Float_t *upar, Int_t &npar, Int_t &ivolu, const Int_t lname, const Int_t lshape)
1058 {
1059  //
1060  // NAME Volume name
1061  // SHAPE Volume type
1062  // NUMED Tracking medium number
1063  // NPAR Number of shape parameters
1064  // UPAR Vector containing shape parameters
1065  //
1066  // It creates a new volume in the JVOLUM data structure.
1067  //
1068  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
1069  char vshape[24]; strncpy(vshape,shape,lshape); vshape[lshape] = 0;
1070  ivolu = geant3->Gsvolu(vname, vshape, nmed, upar, npar);
1071 }
1072 
1073 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
1074 //
1075 // T H E D R A W I N G P A C K A G E
1076 // ======================================
1077 // Drawing functions. These functions allow the visualization in several ways
1078 // of the volumes defined in the geometrical data structure. It is possible
1079 // to draw the logical tree of volumes belonging to the detector (DTREE),
1080 // to show their geometrical specification (DSPEC,DFSPC), to draw them
1081 // and their cut views (DRAW, DCUT). Moreover, it is possible to execute
1082 // these commands when the hidden line removal option is activated; in
1083 // this case, the volumes can be also either translated in the space
1084 // (SHIFT), or clipped by boolean operation (CVOL). In addition, it is
1085 // possible to fill the surfaces of the volumes
1086 // with solid colours when the shading option (SHAD) is activated.
1087 // Several tools (ZOOM, LENS) have been developed to zoom detailed parts
1088 // of the detectors or to scan physical events as well.
1089 // Finally, the command MOVE will allow the rotation, translation and zooming
1090 // on real time parts of the detectors or tracks and hits of a simulated event.
1091 // Ray-tracing commands. In case the command (DOPT RAYT ON) is executed,
1092 // the drawing is performed by the Geant ray-tracing;
1093 // automatically, the color is assigned according to the tracking medium of each
1094 // volume and the volumes with a density lower/equal than the air are considered
1095 // transparent; if the option (USER) is set (ON) (again via the command (DOPT)),
1096 // the user can set color and visibility for the desired volumes via the command
1097 // (SATT), as usual, relatively to the attributes (COLO) and (SEEN).
1098 // The resolution can be set via the command (SATT * FILL VALUE), where (VALUE)
1099 // is the ratio between the number of pixels drawn and 20 (user coordinates).
1100 // Parallel view and perspective view are possible (DOPT PROJ PARA/PERS); in the
1101 // first case, we assume that the first mother volume of the tree is a box with
1102 // dimensions 10000 X 10000 X 10000 cm and the view point (infinetely far) is
1103 // 5000 cm far from the origin along the Z axis of the user coordinates; in the
1104 // second case, the distance between the observer and the origin of the world
1105 // reference system is set in cm by the command (PERSP NAME VALUE); grand-angle
1106 // or telescopic effects can be achieved changing the scale factors in the command
1107 // (DRAW). When the final picture does not occupy the full window,
1108 // mapping the space before tracing can speed up the drawing, but can also
1109 // produce less precise results; values from 1 to 4 are allowed in the command
1110 // (DOPT MAPP VALUE), the mapping being more precise for increasing (VALUE); for
1111 // (VALUE = 0) no mapping is performed (therefore max precision and lowest speed).
1112 // The command (VALCUT) allows the cutting of the detector by three planes
1113 // ortogonal to the x,y,z axis. The attribute (LSTY) can be set by the command
1114 // SATT for any desired volume and can assume values from 0 to 7; it determines
1115 // the different light processing to be performed for different materials:
1116 // 0 = dark-matt, 1 = bright-matt, 2 = plastic, 3 = ceramic, 4 = rough-metals,
1117 // 5 = shiny-metals, 6 = glass, 7 = mirror. The detector is assumed to be in the
1118 // dark, the ambient light luminosity is 0.2 for each basic hue (the saturation
1119 // is 0.9) and the observer is assumed to have a light source (therefore he will
1120 // produce parallel light in the case of parallel view and point-like-source
1121 // light in the case of perspective view).
1122 //
1123 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
1124 
1125 //_____________________________________________________________________________
1126 void gsatt(const char *name, const char *att, Int_t &val, const Int_t lname, const Int_t latt)
1127 {
1128  //
1129  // NAME Volume name
1130  // IOPT Name of the attribute to be set
1131  // IVAL Value to which the attribute is to be set
1132  //
1133  // name= "*" stands for all the volumes.
1134  // iopt can be chosen among the following :
1135  //
1136  // WORK 0=volume name is inactive for the tracking
1137  // 1=volume name is active for the tracking (default)
1138  //
1139  // SEEN 0=volume name is invisible
1140  // 1=volume name is visible (default)
1141  // -1=volume invisible with all its descendants in the tree
1142  // -2=volume visible but not its descendants in the tree
1143  //
1144  // LSTY line style 1,2,3,... (default=1)
1145  // LSTY=7 will produce a very precise approximation for
1146  // revolution bodies.
1147  //
1148  // LWID line width -7,...,1,2,3,..7 (default=1)
1149  // LWID<0 will act as abs(LWID) was set for the volume
1150  // and for all the levels below it. When SHAD is 'ON', LWID
1151  // represent the linewidth of the scan lines filling the surfaces
1152  // (whereas the FILL value represent their number). Therefore
1153  // tuning this parameter will help to obtain the desired
1154  // quality/performance ratio.
1155  //
1156  // COLO colour code -166,...,1,2,..166 (default=1)
1157  // n=1=black
1158  // n=2=red; n=17+m, m=0,25, increasing luminosity according to 'm';
1159  // n=3=green; n=67+m, m=0,25, increasing luminosity according to 'm';
1160  // n=4=blue; n=117+m, m=0,25, increasing luminosity according to 'm';
1161  // n=5=yellow; n=42+m, m=0,25, increasing luminosity according to 'm';
1162  // n=6=violet; n=142+m, m=0,25, increasing luminosity according to 'm';
1163  // n=7=lightblue; n=92+m, m=0,25, increasing luminosity according to 'm';
1164  // colour=n*10+m, m=1,2,...9, will produce the same colour
1165  // as 'n', but with increasing luminosity according to 'm';
1166  // COLO<0 will act as if abs(COLO) was set for the volume
1167  // and for all the levels below it.
1168  // When for a volume the attribute FILL is > 1 (and the
1169  // option SHAD is on), the ABS of its colour code must be < 8
1170  // because an automatic shading of its faces will be
1171  // performed.
1172  //
1173  // FILL (1992) fill area -7,...,0,1,...7 (default=0)
1174  // when option SHAD is "on" the FILL attribute of any
1175  // volume can be set different from 0 (normal drawing);
1176  // if it is set to 1, the faces of such volume will be filled
1177  // with solid colours; if ABS(FILL) is > 1, then a light
1178  // source is placed along the observer line, and the faces of
1179  // such volumes will be painted by colours whose luminosity
1180  // will depend on the amount of light reflected;
1181  // if ABS(FILL) = 1, then it is possible to use all the 166
1182  // colours of the colour table, becouse the automatic shading
1183  // is not performed;
1184  // for increasing values of FILL the drawing will be performed
1185  // with higher and higher resolution improving the quality (the
1186  // number of scan lines used to fill the faces increases with FILL);
1187  // it is possible to set different values of FILL
1188  // for different volumes, in order to optimize at the same time
1189  // the performance and the quality of the picture;
1190  // FILL<0 will act as if abs(FILL) was set for the volume
1191  // and for all the levels below it.
1192  // This kind of drawing can be saved in 'picture files'
1193  // or in view banks.
1194  // 0=drawing without fill area
1195  // 1=faces filled with solid colours and resolution = 6
1196  // 2=lowest resolution (very fast)
1197  // 3=default resolution
1198  // 4=.................
1199  // 5=.................
1200  // 6=.................
1201  // 7=max resolution
1202  // Finally, if a coloured background is desired, the FILL
1203  // attribute for the first volume of the tree must be set
1204  // equal to -abs(colo), colo being >0 and <166.
1205  //
1206  // SET set number associated to volume name
1207  // DET detector number associated to volume name
1208  // DTYP detector type (1,2)
1209  //
1210 // InitHIGZ();
1211  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
1212  char vatt[24]; strncpy(vatt,att,latt); vatt[latt] = 0;
1213  geant3->Gsatt(vname, vatt, val);
1214 }
1215 
1216 //_____________________________________________________________________________
1217 void gfpara(const char *name, Int_t &number, Int_t &intext, Int_t& npar,
1218  Int_t& natt, Float_t* par, Float_t* att, const Int_t lname)
1219 {
1220  //
1221  // Find the parameters of a volume
1222  //
1223  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
1224  geant3->Gfpara(vname, number, intext, npar, natt, par, att);
1225 }
1226 
1227 //_____________________________________________________________________________
1228 void gckmat(Int_t &itmed, char* natmed)
1229 {
1230  //
1231  // Check the parameters of a tracking medium
1232  //
1233  geant3->Gckmat(itmed, natmed);
1234 }
1235 
1236 //_____________________________________________________________________________
1237 void gdelete(Int_t & /*iview*/)
1238 {
1239  //
1240  // IVIEW View number
1241  //
1242  // It deletes a view bank from memory.
1243  //
1244  //geant3->Gdelet(iview);
1245 }
1246 
1247 //_____________________________________________________________________________
1248 void gdopen(Int_t &iview)
1249 {
1250  //
1251  // IVIEW View number
1252  //
1253  // When a drawing is very complex and requires a long time to be
1254  // executed, it can be useful to store it in a view bank: after a
1255  // call to DOPEN and the execution of the drawing (nothing will
1256  // appear on the screen), and after a necessary call to DCLOSE,
1257  // the contents of the bank can be displayed in a very fast way
1258  // through a call to DSHOW; therefore, the detector can be easily
1259  // zoomed many times in different ways. Please note that the pictures
1260  // with solid colours can now be stored in a view bank or in 'PICTURE FILES'
1261  //
1262  geant3->Gdopen(iview);
1263 }
1264 
1265 //_____________________________________________________________________________
1266 void gdclose()
1267 {
1268  //
1269  // It closes the currently open view bank; it must be called after the
1270  // end of the drawing to be stored.
1271  //
1272  //geant3->Gdclos();
1273 }
1274 
1275 //_____________________________________________________________________________
1276 void gdshow(Int_t & /*iview*/)
1277 {
1278  //
1279  // IVIEW View number
1280  //
1281  // It shows on the screen the contents of a view bank. It
1282  // can be called after a view bank has been closed.
1283  //
1284  //geant3->Gdshow(iview);
1285 }
1286 
1287 //_____________________________________________________________________________
1288 void gdopt(const char *name,const char *value, const Int_t lname, const Int_t lvalue)
1289 {
1290  //
1291  // NAME Option name
1292  // VALUE Option value
1293  //
1294  // To set/modify the drawing options.
1295  // IOPT IVAL Action
1296  //
1297  // THRZ ON Draw tracks in R vs Z
1298  // OFF (D) Draw tracks in X,Y,Z
1299  // 180
1300  // 360
1301  // PROJ PARA (D) Parallel projection
1302  // PERS Perspective
1303  // TRAK LINE (D) Trajectory drawn with lines
1304  // POIN " " with markers
1305  // HIDE ON Hidden line removal using the CG package
1306  // OFF (D) No hidden line removal
1307  // SHAD ON Fill area and shading of surfaces.
1308  // OFF (D) Normal hidden line removal.
1309  // RAYT ON Ray-tracing on.
1310  // OFF (D) Ray-tracing off.
1311  // EDGE OFF Does not draw contours when shad is on.
1312  // ON (D) Normal shading.
1313  // MAPP 1,2,3,4 Mapping before ray-tracing.
1314  // 0 (D) No mapping.
1315  // USER ON User graphics options in the raytracing.
1316  // OFF (D) Automatic graphics options.
1317  //
1318  char vname[24]; strncpy(vname,name,lname); vname[lname] = 0;
1319  char vvalue[24]; strncpy(vvalue,value,lvalue); vvalue[lvalue] = 0;
1320  geant3->Gdopt(vname, vvalue);
1321 }
1322 
1323 //_____________________________________________________________________________
1324 void gdraw(const char *name,Float_t &theta, Float_t &phi, Float_t &psi,
1325  Float_t &u0,Float_t &v0,Float_t &ul,Float_t &vl)
1326 {
1327  //
1328  // NAME Volume name
1329  // +
1330  // THETA Viewing angle theta (for 3D projection)
1331  // PHI Viewing angle phi (for 3D projection)
1332  // PSI Viewing angle psi (for 2D rotation)
1333  // U0 U-coord. (horizontal) of volume origin
1334  // V0 V-coord. (vertical) of volume origin
1335  // SU Scale factor for U-coord.
1336  // SV Scale factor for V-coord.
1337  //
1338  // This function will draw the volumes,
1339  // selected with their graphical attributes, set by the Gsatt
1340  // facility. The drawing may be performed with hidden line removal
1341  // and with shading effects according to the value of the options HIDE
1342  // and SHAD; if the option SHAD is ON, the contour's edges can be
1343  // drawn or not. If the option HIDE is ON, the detector can be
1344  // exploded (BOMB), clipped with different shapes (CVOL), and some
1345  // of its parts can be shifted from their original
1346  // position (SHIFT). When HIDE is ON, if
1347  // the drawing requires more than the available memory, the program
1348  // will evaluate and display the number of missing words
1349  // (so that the user can increase the
1350  // size of its ZEBRA store). Finally, at the end of each drawing (with HIDE on),
1351  // the program will print messages about the memory used and
1352  // statistics on the volumes' visibility.
1353  // The following commands will produce the drawing of a green
1354  // volume, specified by NAME, without using the hidden line removal
1355  // technique, using the hidden line removal technique,
1356  // with different linewidth and colour (red), with
1357  // solid colour, with shading of surfaces, and without edges.
1358  // Finally, some examples are given for the ray-tracing. (A possible
1359  // string for the NAME of the volume can be found using the command DTREE).
1360  //
1361  geant3->Gdraw(name, theta,phi,psi,u0,v0,ul,vl);
1362 }
1363 
1364 //_____________________________________________________________________________
1365 void gdrawc(const char *name,Int_t &axis, Float_t &cut,Float_t &u0,
1366  Float_t &v0,Float_t &ul,Float_t &vl)
1367 {
1368  //
1369  // NAME Volume name
1370  // CAXIS Axis value
1371  // CUTVAL Cut plane distance from the origin along the axis
1372  // +
1373  // U0 U-coord. (horizontal) of volume origin
1374  // V0 V-coord. (vertical) of volume origin
1375  // SU Scale factor for U-coord.
1376  // SV Scale factor for V-coord.
1377  //
1378  // The cut plane is normal to caxis (X,Y,Z), corresponding to iaxis (1,2,3),
1379  // and placed at the distance cutval from the origin.
1380  // The resulting picture is seen from the the same axis.
1381  // When HIDE Mode is ON, it is possible to get the same effect with
1382  // the CVOL/BOX function.
1383  //
1384  geant3->Gdrawc(name, axis,cut,u0,v0,ul,vl);
1385 }
1386 
1387 //_____________________________________________________________________________
1388 void gdrawx(const char *name,Float_t &cutthe, Float_t &cutphi,
1389  Float_t &cutval, Float_t &theta, Float_t &phi, Float_t &u0,
1390  Float_t &v0,Float_t &ul,Float_t &vl)
1391 {
1392  //
1393  // NAME Volume name
1394  // CUTTHE Theta angle of the line normal to cut plane
1395  // CUTPHI Phi angle of the line normal to cut plane
1396  // CUTVAL Cut plane distance from the origin along the axis
1397  // +
1398  // THETA Viewing angle theta (for 3D projection)
1399  // PHI Viewing angle phi (for 3D projection)
1400  // U0 U-coord. (horizontal) of volume origin
1401  // V0 V-coord. (vertical) of volume origin
1402  // SU Scale factor for U-coord.
1403  // SV Scale factor for V-coord.
1404  //
1405  // The cut plane is normal to the line given by the cut angles
1406  // cutthe and cutphi and placed at the distance cutval from the origin.
1407  // The resulting picture is seen from the viewing angles theta,phi.
1408  //
1409  geant3->Gdrawx(name, cutthe,cutphi,cutval,theta,phi,u0,v0,ul,vl);
1410 }
1411 
1412 //_____________________________________________________________________________
1413 void gdhead(Int_t &isel, const char *name, Float_t &chrsiz)
1414 {
1415  //
1416  // Parameters
1417  // +
1418  // ISEL Option flag D=111110
1419  // NAME Title
1420  // CHRSIZ Character size (cm) of title NAME D=0.6
1421  //
1422  // ISEL =
1423  // 0 to have only the header lines
1424  // xxxxx1 to add the text name centered on top of header
1425  // xxxx1x to add global detector name (first volume) on left
1426  // xxx1xx to add date on right
1427  // xx1xxx to select thick characters for text on top of header
1428  // x1xxxx to add the text 'EVENT NR x' on top of header
1429  // 1xxxxx to add the text 'RUN NR x' on top of header
1430  // NOTE that ISEL=x1xxx1 or ISEL=1xxxx1 are illegal choices,
1431  // i.e. they generate overwritten text.
1432  //
1433 
1434  geant3->Gdhead(isel,name,chrsiz);
1435 }
1436 
1437 //_____________________________________________________________________________
1438 void gdman(Float_t &u, Float_t &v, const char * /*type*/)
1439 {
1440  //
1441  // Draw a 2D-man at position (U0,V0)
1442  // Parameters
1443  // U U-coord. (horizontal) of the centre of man' R
1444  // V V-coord. (vertical) of the centre of man' R
1445  // TYPE D='MAN' possible values: 'MAN,WM1,WM2,WM3'
1446  //
1447  // CALL GDMAN(u,v),CALL GDWMN1(u,v),CALL GDWMN2(u,v),CALL GDWMN2(u,v)
1448  // It superimposes the picure of a man or of a woman, chosen among
1449  // three different ones, with the same scale factors as the detector
1450  // in the current drawing.
1451  //
1452 
1453  geant3->Gdman(u,v);
1454 }
1455 
1456 //_____________________________________________________________________________
1457 void gdspec(const char *name)
1458 {
1459  //
1460  // NAME Volume name
1461  //
1462  // Shows 3 views of the volume (two cut-views and a 3D view), together with
1463  // its geometrical specifications. The 3D drawing will
1464  // be performed according the current values of the options HIDE and
1465  // SHAD and according the current SetClipBox clipping parameters for that
1466  // volume.
1467  //
1468  geant3->Gdspec(name);
1469 }
1470 
1471 //_____________________________________________________________________________
1472 void gdtree(const char *name,Int_t &levmax, Int_t &isel)
1473 {
1474  //
1475  // NAME Volume name
1476  // LEVMAX Depth level
1477  // ISELT Options
1478  //
1479  // This function draws the logical tree,
1480  // Each volume in the tree is represented by a TPaveTree object.
1481  // Double-clicking on a TPaveTree draws the specs of the corresponding volume.
1482  // Use TPaveTree pop-up menu to select:
1483  // - drawing specs
1484  // - drawing tree
1485  // - drawing tree of parent
1486  //
1487  geant3->Gdtree(name, levmax, isel);
1488 }
1489 
1490 //____________________________________________________________________________
1491 void gekbin()
1492 {
1493  //
1494  //=================Create Materials and geometry
1495  //
1496 
1497  geant3->Gekbin();
1498 }
1499 
1500 //____________________________________________________________________________
1501 void ginit()
1502 {
1503  //
1504  //=================Create Materials and geometry
1505  //
1506 
1507  //geant3->Init();
1508 }
1509 
1510 //____________________________________________________________________________
1511 void gdinit()
1512 {
1513  //
1514  //=================Create Materials and geometry
1515  //
1516 
1517 }
1518 
1519 //____________________________________________________________________________
1520 void gpvolu(int &i)
1521 {
1522  g3pvolu(i);
1523 }
1524 //____________________________________________________________________________
1525 void gprotm(int &i)
1526 {
1527  g3protm(i);
1528 }
1529 //____________________________________________________________________________
1530 void gpmate(int &i)
1531 {
1532  g3pmate(i);
1533 }
1534 //____________________________________________________________________________
1535 void gptmed(int &i)
1536 {
1537  g3ptmed(i);
1538 }
1539 //____________________________________________________________________________
1540 void gppart(int &i)
1541 {
1542  g3ppart(i);
1543 }
1544 //____________________________________________________________________________
1545 void gpsets(int &i)
1546 {
1547  g3psets(i);
1548 }
1549 //____________________________________________________________________________
1550 void gpvert(int &i)
1551 {
1552  g3pvert(i);
1553 }
1554 //____________________________________________________________________________
1555 void gpkine(int &i)
1556 {
1557  g3pkine(i);
1558 }
1559 //____________________________________________________________________________
1560 void gpjxyz(int &i)
1561 {
1562  g3pjxyz(i);
1563 }
1564 //____________________________________________________________________________
1565 void gphits(int &i)
1566 {
1567  g3phits(i);
1568 }
1569 //____________________________________________________________________________
1570 void gpart()
1571 {
1572  geant3->Gpart();
1573 }
1574 //____________________________________________________________________________
1575 void gmate()
1576 {
1577  g3mate();
1578 }
1579 //____________________________________________________________________________
1580 void gbhsta()
1581 {
1582  g3bhsta();
1583 }
1584 //____________________________________________________________________________
1585 void gscank()
1586 {
1587  g3scank();
1588 }
1589 //____________________________________________________________________________
1590 void gscanu()
1591 {
1592  g3scanu();
1593 }
1594 
1595 //____________________________________________________________________________
1596 void gzinit()
1597 {
1598  //
1599  //=================Initialize zebra
1600  //
1601 
1602  geant3->Gzinit();
1603 }
1604 }
virtual void Gphysi()
Definition: TGeant3.cxx:3704
virtual void Gckmat(Int_t itmed, char *natmed)
Definition: TGeant3.cxx:4511
virtual void Gdspec(const char *name)
Definition: TGeant3.cxx:4759
#define gskpho
Definition: TGeant3f77.cxx:93
#define gfkine
Definition: TGeant3f77.cxx:56
#define gsposp
Definition: TGeant3f77.cxx:112
#define grun
Definition: TGeant3f77.cxx:39
#define gptmed
Definition: TGeant3f77.cxx:62
virtual Int_t Gsvert(Float_t *v, Int_t ntbeam, Int_t nttarg, Float_t *ubuf=0, Int_t nwbuf=0)
Definition: TGeant3.cxx:3684
#define gsstak
Definition: TGeant3f77.cxx:94
#define gsdvn2
Definition: TGeant3f77.cxx:105
#define ggclos
Definition: TGeant3f77.cxx:34
#define gzinit
Definition: TGeant3f77.cxx:38
#define gpvert
Definition: TGeant3f77.cxx:66
#define gpjxyz
Definition: TGeant3f77.cxx:68
#define gbhsta
Definition: TGeant3f77.cxx:87
#define gdtree
Definition: TGeant3f77.cxx:129
#define gsdvs2
Definition: TGeant3f77.cxx:107
#define gprint
Definition: TGeant3f77.cxx:115
#define gsord
Definition: TGeant3f77.cxx:110
virtual void Gdhead(Int_t isel, const char *name, Double_t chrsiz=0.6)
Definition: TGeant3.cxx:4719
#define gmate
Definition: TGeant3f77.cxx:48
#define gpvolu
Definition: TGeant3f77.cxx:60
#define g3part
Definition: TGeant3f77.cxx:80
#define gstmed
Definition: TGeant3f77.cxx:53
virtual void Gsatt(const char *name, const char *att, Int_t val)
Definition: TGeant3.cxx:4397
#define ginit
Definition: TGeant3f77.cxx:36
virtual void Gprint(const char *name)
Definition: TGeant3.cxx:3150
#define gfpart
Definition: TGeant3f77.cxx:44
#define gpcxyz
Definition: TGeant3f77.cxx:33
#define gdebug
Definition: TGeant3f77.cxx:89
virtual void Gfile(const char *filename, const char *option="I")
Definition: TGeant3.cxx:3069
virtual void Gskpho(Int_t igk)
Definition: TGeant3.cxx:3768
#define gsmixt
Definition: TGeant3f77.cxx:51
virtual void Gzinit()
Definition: TGeant3.cxx:3212
virtual void Gsdvn2(const char *name, const char *mother, Int_t ndiv, Int_t iaxis, Double_t c0i, Int_t numed)
Definition: TGeant3.cxx:4029
#define gdopt
Definition: TGeant3f77.cxx:117
virtual void Gsdvt(const char *name, const char *mother, Double_t step, Int_t iaxis, Int_t numed, Int_t ndvmx)
Definition: TGeant3.cxx:4082
#define gdinit
Definition: TGeant3f77.cxx:116
void gfile(const char *filename, const char *option)
Definition: TGeant3f77.cxx:306
#define gftmat
Definition: TGeant3f77.cxx:46
#define gdman
Definition: TGeant3f77.cxx:127
#define gprotm
Definition: TGeant3f77.cxx:61
virtual void Gsmate(Int_t imat, const char *name, Float_t a, Float_t z, Float_t dens, Float_t radl, Float_t absl)
Definition: TGeant3.cxx:3353
#define g3pmate
Definition: TGeant3f77.cxx:73
virtual void Gtrigi()
Definition: TGeant3.cxx:3194
virtual void Gdopt(const char *name, const char *value)
Definition: TGeant3.cxx:4592
#define gdrawc
Definition: TGeant3f77.cxx:120
virtual void Gftmat(Int_t imate, Int_t ipart, char *chmeca, Int_t kdim, Float_t *tkin, Float_t *value, Float_t *pcut, Int_t &ixst)
Definition: TGeant3.cxx:3295
virtual void Gsdvt2(const char *name, const char *mother, Double_t step, Int_t iaxis, Double_t c0, Int_t numed, Int_t ndvmx)
Definition: TGeant3.cxx:4107
#define gtreve
Definition: TGeant3f77.cxx:97
#define gpsets
Definition: TGeant3f77.cxx:65
string filename
Definition: train.py:213
#define gdspec
Definition: TGeant3f77.cxx:128
virtual void Gfkine(Int_t itra, Float_t *vert, Float_t *pvert, Int_t &ipart, Int_t &nvert)
Definition: TGeant3.cxx:3616
virtual void Gmtod(Float_t *xm, Float_t *xd, Int_t iflag)
Definition: TGeant3.cxx:3957
virtual void Gsmixt(Int_t imat, const char *name, Float_t *a, Float_t *z, Float_t dens, Int_t nlmat, Float_t *wmat)
Definition: TGeant3.cxx:3385
#define gtrigc
Definition: TGeant3f77.cxx:41
#define gscanu
Definition: TGeant3f77.cxx:83
virtual void Gsckov(Int_t itmed, Int_t npckov, Float_t *ppckov, Float_t *absco, Float_t *effic, Float_t *rindex)
Definition: TGeant3.cxx:3457
#define gftmed
Definition: TGeant3f77.cxx:45
#define gsdvs
Definition: TGeant3f77.cxx:106
virtual void Gtrig()
Definition: TGeant3.cxx:3171
virtual void Gpart()
Definition: TGeant3.cxx:3335
#define gsatt
Definition: TGeant3f77.cxx:135
#define gsvolu
Definition: TGeant3f77.cxx:114
virtual void Gsdvn(const char *name, const char *mother, Int_t ndiv, Int_t iaxis)
Definition: TGeant3.cxx:4005
#define glast
Definition: TGeant3f77.cxx:35
void gdelete(Int_t &)
virtual void Grun()
Definition: TGeant3.cxx:3162
#define g3ptmed
Definition: TGeant3f77.cxx:72
double y
#define g3protm
Definition: TGeant3f77.cxx:71
virtual void Gfmate(Int_t imat, char *name, Float_t &a, Float_t &z, Float_t &dens, Float_t &radl, Float_t &absl, Float_t *ubuf, Int_t &nbuf)
Definition: TGeant3.cxx:3227
TGeant3 * geant3
Definition: TGeant3.cxx:1072
#define gphits
Definition: TGeant3f77.cxx:69
#define gsckov
Definition: TGeant3f77.cxx:54
virtual void Gdopen(Int_t view)
Definition: TGeant3.cxx:4555
#define gsvert
Definition: TGeant3f77.cxx:59
virtual void Gsdvs2(const char *name, const char *mother, Float_t step, Int_t iaxis, Float_t c0, Int_t numed)
Definition: TGeant3.cxx:4066
virtual void Gpcxyz()
Definition: TGeant3.cxx:3099
#define gspos
Definition: TGeant3f77.cxx:111
#define g3pvert
Definition: TGeant3f77.cxx:76
virtual void Gsdvs(const char *name, const char *mother, Float_t step, Int_t iaxis, Int_t numed)
Definition: TGeant3.cxx:4050
#define gscank
Definition: TGeant3f77.cxx:82
#define gfvert
Definition: TGeant3f77.cxx:57
#define gtrack
Definition: TGeant3f77.cxx:96
#define g3mate
Definition: TGeant3f77.cxx:81
virtual Int_t Gskine(Float_t *plab, Int_t ipart, Int_t nv, Float_t *ubuf=0, Int_t nwbuf=0)
Definition: TGeant3.cxx:3671
ClassImp(TGeant3f77) TGeant3f77
Definition: TGeant3f77.cxx:261
#define gtrigi
Definition: TGeant3f77.cxx:42
double z
virtual void Glast()
Definition: TGeant3.cxx:3141
#define g3pkine
Definition: TGeant3f77.cxx:77
#define gsdvt2
Definition: TGeant3f77.cxx:109
#define gdraw
Definition: TGeant3f77.cxx:118
virtual Int_t Gsvolu(const char *name, const char *shape, Int_t nmed, Float_t *upar, Int_t np)
Definition: TGeant3.cxx:4299
virtual void Gsking(Int_t igk)
Definition: TGeant3.cxx:3758
virtual void Gtrack()
Definition: TGeant3.cxx:3804
#define g3scank
Definition: TGeant3f77.cxx:84
#define glmoth
Definition: TGeant3f77.cxx:102
#define gdrawx
Definition: TGeant3f77.cxx:121
#define gsking
Definition: TGeant3f77.cxx:92
virtual void Gftmed(Int_t numed, char *name, Int_t &nmat, Int_t &isvol, Int_t &ifield, Float_t &fieldm, Float_t &tmaxfd, Float_t &stemax, Float_t &deemax, Float_t &epsil, Float_t &stmin, Float_t *buf=0, Int_t *nbuf=0)
Definition: TGeant3.cxx:3281
#define gsxyz
Definition: TGeant3f77.cxx:95
virtual void Gdtree(const char *name, Int_t levmax=15, Int_t ispec=0)
Definition: TGeant3.cxx:4782
#define gfmate
Definition: TGeant3f77.cxx:43
virtual void Gsxyz()
Definition: TGeant3.cxx:3795
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1124
#define gphysi
Definition: TGeant3f77.cxx:88
virtual void Gdraw(const char *name, Double_t theta=30, Double_t phi=30, Double_t psi=0, Double_t u0=10, Double_t v0=10, Double_t ul=0.01, Double_t vl=0.01)
Definition: TGeant3.cxx:4632
#define gsdvt
Definition: TGeant3f77.cxx:108
#define gdxyz
Definition: TGeant3f77.cxx:126
#define gspart
Definition: TGeant3f77.cxx:52
virtual void Glmoth(const char *iudet, Int_t iunum, Int_t &nlev, Int_t *lvols, Int_t *lindx)
Definition: TGeant3.cxx:3926
#define gdopen
Definition: TGeant3f77.cxx:133
virtual void Gfpart(Int_t ipart, char *name, Int_t &itrtyp, Float_t &amass, Float_t &charge, Float_t &tlife) const
Definition: TGeant3.cxx:3266
virtual void Gekbin()
Definition: TGeant3.cxx:3729
virtual void Gdebug()
Definition: TGeant3.cxx:3720
virtual void Gstmed(Int_t numed, const char *name, Int_t nmat, Int_t isvol, Int_t ifield, Float_t fieldm, Float_t tmaxfd, Float_t stemax, Float_t deemax, Float_t epsil, Float_t stmin)
Definition: TGeant3.cxx:3428
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1225
virtual void Gdrawx(const char *name, Float_t cutthe, Float_t cutphi, Float_t cutval, Float_t theta=30, Float_t phi=30, Float_t u0=10, Float_t v0=10, Float_t ul=0.01, Float_t vl=0.01)
Definition: TGeant3.cxx:4695
#define g3phits
Definition: TGeant3f77.cxx:79
#define g3pvolu
Definition: TGeant3f77.cxx:70
#define gstpar
Definition: TGeant3f77.cxx:55
virtual void Gspos(const char *name, Int_t nr, const char *mother, Double_t x, Double_t y, Double_t z, Int_t irot, const char *konly="ONLY")
Definition: TGeant3.cxx:4155
#define gpart
Definition: TGeant3f77.cxx:47
#define gfpara
Definition: TGeant3f77.cxx:136
virtual void Gfvert(Int_t nvtx, Float_t *v, Int_t &ntbeam, Int_t &nttarg, Float_t &tofg)
Definition: TGeant3.cxx:3657
#define g3scanu
Definition: TGeant3f77.cxx:85
#define gsmate
Definition: TGeant3f77.cxx:50
void gdclose()
#define gsdvn
Definition: TGeant3f77.cxx:104
#define gpmate
Definition: TGeant3f77.cxx:63
#define gdtom
Definition: TGeant3f77.cxx:101
list x
Definition: train.py:276
virtual void Gsdk(Int_t ipart, Float_t *bratio, Int_t *mode)
Definition: TGeant3.cxx:3345
virtual void Gtreve()
Definition: TGeant3.cxx:3813
#define gdhead
Definition: TGeant3f77.cxx:122
#define g3psets
Definition: TGeant3f77.cxx:75
#define gdshow
Definition: TGeant3f77.cxx:132
#define gtrig
Definition: TGeant3f77.cxx:40
virtual void Gsstak(Int_t iflag)
Definition: TGeant3.cxx:3778
#define gppart
Definition: TGeant3f77.cxx:64
#define gsdk
Definition: TGeant3f77.cxx:49
virtual void Gsrotm(Int_t nmat, Float_t theta1, Float_t phi1, Float_t theta2, Float_t phi2, Float_t theta3, Float_t phi3)
Definition: TGeant3.cxx:4246
#define gskine
Definition: TGeant3f77.cxx:58
virtual void Gfpara(const char *name, Int_t number, Int_t intext, Int_t &npar, Int_t &natt, Float_t *par, Float_t *att)
Definition: TGeant3.cxx:4491
#define gmtod
Definition: TGeant3f77.cxx:103
#define gekbin
Definition: TGeant3f77.cxx:90
virtual void FinishGeometry()
Definition: TGeant3.cxx:6205
#define gckmat
Definition: TGeant3f77.cxx:138
virtual void Gspart(Int_t ipart, const char *name, Int_t itrtyp, Double_t amass, Double_t charge, Double_t tlife)
Definition: TGeant3.cxx:3404
#define g3ppart
Definition: TGeant3f77.cxx:74
virtual void Gstpar(Int_t itmed, const char *param, Double_t parval)
Definition: TGeant3.cxx:3590
virtual void Gdman(Double_t u0, Double_t v0, const char *type="MAN")
Definition: TGeant3.cxx:4742
virtual void Gdrawc(const char *name, Int_t axis=1, Float_t cut=0, Float_t u0=10, Float_t v0=10, Float_t ul=0.01, Float_t vl=0.01)
Definition: TGeant3.cxx:4673
virtual void Gtrigc()
Definition: TGeant3.cxx:3185
#define g3pjxyz
Definition: TGeant3f77.cxx:78
#define g3bhsta
Definition: TGeant3f77.cxx:86
virtual void Gdtom(Float_t *xd, Float_t *xm, Int_t iflag)
Definition: TGeant3.cxx:3881
virtual void Gsposp(const char *name, Int_t nr, const char *mother, Double_t x, Double_t y, Double_t z, Int_t irot, const char *konly, Float_t *upar, Int_t np)
Definition: TGeant3.cxx:4218
#define gsrotm
Definition: TGeant3f77.cxx:113
virtual void Gsord(const char *name, Int_t iax)
Definition: TGeant3.cxx:4133
#define gpkine
Definition: TGeant3f77.cxx:67