Add SetERAN function
[u/mrichter/AliRoot.git] / TGeant3 / TGeant3.h
CommitLineData
fe4da5cc 1#ifndef TGeant3_H
2#define TGeant3_H
3da30618 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
fe4da5cc 8////////////////////////////////////////////////
9// C++ interface to Geant3 basic routines //
10////////////////////////////////////////////////
11
12#include <AliMC.h>
13
14//______________________________________________________________
15//
16// Geant3 prototypes for commons
17//
18//______________________________________________________________
19//
20
21//----------QUEST
22// COMMON/QUEST/IQUEST(100)
23typedef struct {
24 Int_t iquest[100];
25} Quest_t;
26
7ac3f11b 27//----------GCBANK
28// COMMON/GCBANK/NZEBRA,GVERSN,ZVERSN,IXSTOR,IXDIV,IXCONS,FENDQ(16)
29// + ,LMAIN,LR1,WS(KWBANK)
30typedef struct {
31 Int_t nzebra;
32 Float_t gversn;
33 Float_t zversn;
34 Int_t ixstor;
35 Int_t ixdiv;
36 Int_t ixcons;
37 Float_t fendq[16];
38 Int_t lmain;
39 Int_t lr1;
40} Gcbank_t;
41
fe4da5cc 42//----------GCLINK
43// COMMON/GCLINK/JDIGI ,JDRAW ,JHEAD ,JHITS ,JKINE ,JMATE ,JPART
44// + ,JROTM ,JRUNG ,JSET ,JSTAK ,JGSTAT,JTMED ,JTRACK,JVERTX
45// + ,JVOLUM,JXYZ ,JGPAR ,JGPAR2,JSKLT
46typedef struct {
47 Int_t jdigi;
48 Int_t jdraw;
49 Int_t jhead;
50 Int_t jhits;
51 Int_t jkine;
52 Int_t jmate;
53 Int_t jpart;
54 Int_t jrotm;
55 Int_t jrung;
56 Int_t jset;
57 Int_t jstak;
58 Int_t jgstat;
59 Int_t jtmed;
60 Int_t jtrack;
61 Int_t jvertx;
62 Int_t jvolum;
63 Int_t jxyz;
64 Int_t jgpar;
65 Int_t jgpar2;
66 Int_t jsklt;
67} Gclink_t;
68
69
70//----------GCFLAG
71// COMMON/GCFLAG/IDEBUG,IDEMIN,IDEMAX,ITEST,IDRUN,IDEVT,IEORUN
72// + ,IEOTRI,IEVENT,ISWIT(10),IFINIT(20),NEVENT,NRNDM(2)
73typedef struct {
74 Int_t idebug;
75 Int_t idemin;
76 Int_t idemax;
77 Int_t itest;
78 Int_t idrun;
79 Int_t idevt;
80 Int_t ieorun;
81 Int_t ieotri;
82 Int_t ievent;
83 Int_t iswit[10];
84 Int_t ifinit[20];
85 Int_t nevent;
86 Int_t nrndm[2];
87} Gcflag_t;
88
89//----------GCKINE
90// COMMON/GCKINE/IKINE,PKINE(10),ITRA,ISTAK,IVERT,IPART,ITRTYP
91// + ,NAPART(5),AMASS,CHARGE,TLIFE,VERT(3),PVERT(4),IPAOLD
92typedef struct {
93 Int_t ikine;
94 Float_t pkine[10];
95 Int_t itra;
96 Int_t istak;
97 Int_t ivert;
98 Int_t ipart;
99 Int_t itrtyp;
100 Int_t napart[5];
101 Float_t amass;
102 Float_t charge;
103 Float_t tlife;
104 Float_t vert[3];
105 Float_t pvert[4];
106 Int_t ipaold;
107} Gckine_t;
108
109//----------GCKING
110// COMMON/GCKING/KCASE,NGKINE,GKIN(5,MXGKIN),
111// + TOFD(MXGKIN),IFLGK(MXGKIN)
112#define MXGKIN 100
113typedef struct {
114 Int_t kcase;
115 Int_t ngkine;
116 Float_t gkin[MXGKIN][5];
117 Int_t tofd[MXGKIN];
118 Int_t iflgk[MXGKIN];
119} Gcking_t;
120
121//----------GCKIN2
122// COMMON/GCKIN2/NGPHOT,XPHOT(11,MXPHOT)
123#define MXPHOT 800
124typedef struct {
125 Int_t ngphot;
126 Float_t xphot[MXPHOT][11];
127} Gckin2_t;
128
129//----------GCKIN3
130// COMMON/GCKIN3/GPOS(3,MXGKIN)
131typedef struct {
132 Float_t gpos[MXGKIN][3];
133} Gckin3_t;
134
135//----------GCMATE
136// COMMON/GCMATE/NMAT,NAMATE(5),A,Z,DENS,RADL,ABSL
137typedef struct {
138 Int_t nmat;
139 Int_t namate[5];
140 Float_t a;
141 Float_t z;
142 Float_t dens;
143 Float_t radl;
144 Float_t absl;
145} Gcmate_t;
146
147//----------GCTMED
148// COMMON/GCTMED/NUMED,NATMED(5),ISVOL,IFIELD,FIELDM,TMAXFD,STEMAX
149// + ,DEEMAX,EPSIL,STMIN,CFIELD,PREC,IUPD,ISTPAR,NUMOLD
150typedef struct {
151 Int_t numed;
152 Int_t natmed[5];
153 Int_t isvol;
154 Int_t ifield;
155 Float_t fieldm;
156 Float_t tmaxfd;
157 Float_t stemax;
158 Float_t deemax;
159 Float_t epsil;
160 Float_t stmin;
161 Float_t cfield;
162 Float_t prec;
163 Int_t iupd;
164 Int_t istpar;
165 Int_t numold;
166} Gctmed_t;
167
168//----------GCTRAK
169#define MAXMEC 30
170// PARAMETER (MAXMEC=30)
171// COMMON/GCTRAK/VECT(7),GETOT,GEKIN,VOUT(7),NMEC,LMEC(MAXMEC)
172// + ,NAMEC(MAXMEC),NSTEP ,MAXNST,DESTEP,DESTEL,SAFETY,SLENG
173// + ,STEP ,SNEXT ,SFIELD,TOFG ,GEKRAT,UPWGHT,IGNEXT,INWVOL
174// + ,ISTOP ,IGAUTO,IEKBIN, ILOSL, IMULL,INGOTO,NLDOWN,NLEVIN
175// + ,NLVSAV,ISTORY
176typedef struct {
177 Float_t vect[7];
178 Float_t getot;
179 Float_t gekin;
180 Int_t vout[7];
181 Int_t nmec;
182 Int_t lmec[MAXMEC];
183 Int_t namec[MAXMEC];
184 Int_t nstep;
185 Int_t maxnst;
186 Float_t destep;
187 Float_t destel;
188 Float_t safety;
189 Float_t sleng;
190 Float_t step;
191 Float_t snext;
192 Float_t sfield;
193 Float_t tofg;
194 Float_t gekrat;
195 Float_t upwght;
196 Int_t ignext;
197 Int_t inwvol;
198 Int_t istop;
199 Int_t igauto;
200 Int_t iekbin;
201 Int_t ilosl;
202 Int_t imull;
203 Int_t ingoto;
204 Int_t nldown;
205 Int_t nlevin;
206 Int_t nlsav;
207 Int_t istory;
208} Gctrak_t;
209
210//----------GCVOLU
211// COMMON/GCVOLU/NLEVEL,NAMES(15),NUMBER(15),
212// +LVOLUM(15),LINDEX(15),INFROM,NLEVMX,NLDEV(15),LINMX(15),
213// +GTRAN(3,15),GRMAT(10,15),GONLY(15),GLX(3)
214typedef struct {
215 Int_t nlevel;
216 Int_t names[15];
217 Int_t number[15];
218 Int_t lvolum[15];
219 Int_t lindex[15];
220 Int_t infrom;
221 Int_t nlevmx;
222 Int_t nldev[15];
223 Int_t linmx[15];
224 Float_t gtran[15][3];
225 Float_t grmat[15][10];
226 Float_t gonly[15];
227 Float_t glx[3];
228} Gcvolu_t;
229
230//----------GCSETS
231// COMMON/GCSETS/IHSET,IHDET,ISET,IDET,IDTYPE,NVNAME,NUMBV(20)
232typedef struct {
233 Int_t ihset;
234 Int_t ihdet;
235 Int_t iset;
236 Int_t idet;
237 Int_t idtype;
238 Int_t nvname;
239 Int_t numbv[20];
240} Gcsets_t;
241
242//----------GCNUM
243// COMMON/GCNUM/NMATE ,NVOLUM,NROTM,NTMED,NTMULT,NTRACK,NPART
244// + ,NSTMAX,NVERTX,NHEAD,NBIT
245typedef struct {
246 Int_t nmate;
247 Int_t nvolum;
248 Int_t nrotm;
249 Int_t ntmed;
250 Int_t ntmult;
251 Int_t ntrack;
252 Int_t npart;
253 Int_t nstmax;
254 Int_t nvertx;
255 Int_t nhead;
256 Int_t nbit;
257} Gcnum_t;
258
259//----------GCCUTS
260// COMMON/GCCUTS/CUTGAM,CUTELE,CUTNEU,CUTHAD,CUTMUO,BCUTE,BCUTM
261// + ,DCUTE ,DCUTM ,PPCUTM,TOFMAX,GCUTS(5)
262typedef struct {
263 Float_t cutgam;
264 Float_t cutele;
265 Float_t cutneu;
266 Float_t cuthad;
267 Float_t cutmuo;
268 Float_t bcute;
269 Float_t bcutm;
270 Float_t dcute;
271 Float_t dcutm;
272 Float_t ppcutm;
273 Float_t tofmax;
274 Float_t gcuts[5];
275} Gccuts_t;
276
9e7a32d1 277//----------GCMULO
278// COMMON/GCMULO/SINMUL(101),COSMUL(101),SQRMUL(101),OMCMOL,CHCMOL
279// + ,EKMIN,EKMAX,NEKBIN,NEK1,EKINV,GEKA,GEKB,EKBIN(200),ELOW(200)
280typedef struct {
281 Float_t sinmul[101];
282 Float_t cosmul[101];
283 Float_t sqrmul[101];
284 Float_t omcmol;
285 Float_t chcmol;
286 Float_t ekmin;
287 Float_t ekmax;
288 Int_t nekbin;
289 Int_t nek1;
290 Float_t ekinv;
291 Float_t geka;
292 Float_t gekb;
293 Float_t ekbin[200];
294 Float_t elow[200];
295} Gcmulo_t;
296
fe4da5cc 297//----------GCPHYS
298// COMMON/GCPHYS/IPAIR,SPAIR,SLPAIR,ZINTPA,STEPPA
299// + ,ICOMP,SCOMP,SLCOMP,ZINTCO,STEPCO
300// + ,IPHOT,SPHOT,SLPHOT,ZINTPH,STEPPH
301// + ,IPFIS,SPFIS,SLPFIS,ZINTPF,STEPPF
302// + ,IDRAY,SDRAY,SLDRAY,ZINTDR,STEPDR
303// + ,IANNI,SANNI,SLANNI,ZINTAN,STEPAN
304// + ,IBREM,SBREM,SLBREM,ZINTBR,STEPBR
305// + ,IHADR,SHADR,SLHADR,ZINTHA,STEPHA
306// + ,IMUNU,SMUNU,SLMUNU,ZINTMU,STEPMU
307// + ,IDCAY,SDCAY,SLIFE ,SUMLIF,DPHYS1
308// + ,ILOSS,SLOSS,SOLOSS,STLOSS,DPHYS2
309// + ,IMULS,SMULS,SOMULS,STMULS,DPHYS3
310// + ,IRAYL,SRAYL,SLRAYL,ZINTRA,STEPRA
311// COMMON/GCPHLT/ILABS,SLABS,SLLABS,ZINTLA,STEPLA
312// + ,ISYNC
313// + ,ISTRA
314typedef struct {
315 Int_t ipair;
316 Float_t spair;
317 Float_t slpair;
318 Float_t zintpa;
319 Float_t steppa;
320 Int_t icomp;
321 Float_t scomp;
322 Float_t slcomp;
323 Float_t zintco;
324 Float_t stepco;
325 Int_t iphot;
326 Float_t sphot;
327 Float_t slphot;
328 Float_t zintph;
329 Float_t stepph;
330 Int_t ipfis;
331 Float_t spfis;
332 Float_t slpfis;
333 Float_t zintpf;
334 Float_t steppf;
335 Int_t idray;
336 Float_t sdray;
337 Float_t sldray;
338 Float_t zintdr;
339 Float_t stepdr;
340 Int_t ianni;
341 Float_t sanni;
342 Float_t slanni;
343 Float_t zintan;
344 Float_t stepan;
345 Int_t ibrem;
346 Float_t sbrem;
347 Float_t slbrem;
348 Float_t zintbr;
349 Float_t stepbr;
350 Int_t ihadr;
351 Float_t shadr;
352 Float_t slhadr;
353 Float_t zintha;
354 Float_t stepha;
355 Int_t imunu;
356 Float_t smunu;
357 Float_t slmunu;
358 Float_t zintmu;
359 Float_t stepmu;
360 Int_t idcay;
361 Float_t sdcay;
362 Float_t slife;
363 Float_t sumlif;
364 Float_t dphys1;
365 Int_t iloss;
366 Float_t sloss;
367 Float_t soloss;
368 Float_t stloss;
369 Float_t dphys2;
370 Int_t imuls;
371 Float_t smuls;
372 Float_t somuls;
373 Float_t stmuls;
374 Float_t dphys3;
375 Int_t irayl;
376 Float_t srayl;
377 Float_t slrayl;
378 Float_t zintra;
379 Float_t stepra;
380} Gcphys_t;
381
382//----------GCOPTI
383// COMMON/GCOPTI/IOPTIM
384typedef struct {
385 Int_t ioptim;
386} Gcopti_t;
387
388//----------GCTLIT
389// COMMON/GCTLIT/THRIND,PMIN,DP,DNDL,JMIN,ITCKOV,IMCKOV,NPCKOV
390typedef struct {
391 Float_t thrind;
392 Float_t pmin;
393 Float_t dp;
394 Float_t dndl;
395 Int_t jmin;
396 Int_t itckov;
397 Int_t imckov;
398 Int_t npckov;
399} Gctlit_t;
400
401//----------GCVDMA
402// COMMON/GCVDMA/NVMANY,MANYLE(20),MANYNA(20,15),
403// +MANYNU(20,15),NFMANY,MYCOUN,IMYSE,RAYTRA,VECCOS(3)
404typedef struct {
405 Int_t vdma[624];
406 Float_t raytra;
407 Float_t veccos[3];
408} Gcvdma_t;
409
410//----------GCTPOL
411#define MAXME1 30
412// COMMON/GCTPOL/POLAR(3), NAMEC1(MAXME1)
413typedef struct {
414 Float_t polar[3];
415 Int_t namec1[MAXME1];
416} Gctpol_t;
417
6991054d 418/************************************************************************
419 * *
420 * Commons for GEANE *
421 * *
422 ************************************************************************/
423
424//------------ERTRIO
425// INTEGER MXPRED
426// PARAMETER (MXPRED = 10)
427// DOUBLE PRECISION ERDTRP
428// REAL ERRIN, ERROUT, ERTRSP, ERXIN, ERXOUT, ERPIN,
429// + ERPOUT
430// INTEGER NEPRED, INLIST, ILPRED, IEPRED
431// COMMON /ERTRIO/ ERDTRP(5,5,MXPRED), ERRIN(15), ERROUT(15,MXPRED),
432// + ERTRSP(5,5,MXPRED), ERXIN( 3), ERXOUT( 3,MXPRED),
433// + ERPIN(3), ERPOUT(3,MXPRED), NEPRED,INLIST,ILPRED,
434// + IEPRED(MXPRED)
435//
436
437#define MXPRED 10
438typedef struct {
439 Double_t erdtrp[MXPRED*5*5];
440 Float_t errin[5];
441 Float_t errout[MXPRED*15];
442 Float_t ertrsp[MXPRED*5*5];
443 Float_t erxin[3];
444 Float_t erxout[MXPRED*3];
445 Float_t erpin[3];
446 Float_t erpout[MXPRED*3];
447 Int_t nepred;
448 Int_t inlist;
449 Int_t ilpred;
450 Int_t iepred;
451} Ertrio_t;
452
453//-----------EROTPS
454// CHARACTER*8 CHOPTI
455// LOGICAL LEEXAC, LELENG, LEONLY, LEPLAN, LEPOIN, LEVOLU
456// REAL ERPLI, ERPLO, ERLENG
457// INTEGER NAMEER, NUMVER, IOVLER
458// COMMON /EROPTS/ ERPLI(3,2), ERPLO(3,4,MXPRED), ERLENG(MXPRED),
459// + NAMEER(MXPRED), NUMVER(MXPRED), IOVLER(MXPRED),
460// + LEEXAC, LELENG, LEONLY, LEPLAN, LEPOIN, LEVOLU
461// COMMON /EROPTC/CHOPTI
462
463typedef struct {
464 Float_t erpli[3*2];
465 Float_t erplo[MXPRED*3*4];
466 Float_t erleng[MXPRED];
467 Int_t nameer[MXPRED];
468 Int_t numver[MXPRED];
469 Int_t iovler[MXPRED];
470 Bool_t leexac;
471 Bool_t leleng;
472 Bool_t leonly;
473 Bool_t leplan;
474 Bool_t lepoin;
475 Bool_t levolu;
476} Eropts_t;
477
478typedef struct {
479 char chopti[8];
480} Eroptc_t;
481
482//-------ERWORK
483// DOUBLE PRECISION EI, EF, ASDSC
484// COMMON /ERWORK/ EI(15), EF(15), ASDSC(5,5),
485// + XI(3), PPI(3), HI(9),
486// + XF(3), PF(3), HF(9),
487// + CHTR, DEDX2, BACKTR, CUTEK, TLGCM2, TLRAD
488
489typedef struct {
490 Double_t ei[15];
491 Double_t ef[15];
492 Double_t asdsc[5*5];
493 Float_t xi[3];
494 Float_t ppi[3];
495 Float_t hi[9];
496 Float_t xf[3];
497 Float_t pf[3];
498 Float_t hf[9];
499 Float_t chtr;
500 Float_t dedx2;
501 Float_t backtr;
502 Float_t cutek;
503 Float_t tlgcm2;
504 Float_t tlrad;
505} Erwork_t;
506
507/************************************************************************
508 * *
509 * Commons for GEANE *
510 * *
511 ************************************************************************/
fe4da5cc 512
513class TGeant3 : public AliMC {
514
515private:
516 Int_t fNextVol; // Iterator for GeomIter
517
518//--------------Declarations for ZEBRA---------------------
519 Int_t *fZiq, *fZlq;
520 Float_t *fZq;
521
522 Quest_t *fQuest;
7ac3f11b 523 Gcbank_t *fGcbank;
fe4da5cc 524 Gclink_t *fGclink;
525 Gccuts_t *fGccuts;
9e7a32d1 526 Gcmulo_t *fGcmulo;
fe4da5cc 527 Gcmate_t *fGcmate;
528 Gctpol_t *fGctpol;
529 Gcnum_t *fGcnum;
530 Gcsets_t *fGcsets;
531 Gcopti_t *fGcopti;
532 Gctlit_t *fGctlit;
533 Gcvdma_t *fGcvdma;
534 Gcvolu_t *fGcvolu;
535 Gckine_t *fGckine;
536 Gcflag_t *fGcflag;
537 Gctmed_t *fGctmed;
538 Gcphys_t *fGcphys;
539 Gcking_t *fGcking;
540 Gckin2_t *fGckin2;
541 Gckin3_t *fGckin3;
542 Gctrak_t *fGctrak;
543
6991054d 544
545 // commons for GEANE
546 Ertrio_t *fErtrio;
547 Eropts_t *fEropts;
548 Eroptc_t *fEroptc;
549 Erwork_t *fErwork;
550
9006703b 551 //Put here all volume names
552
553 char (*fVolNames)[5]; //! Names of geant volumes as C++ chars
554
1578254f 555 enum {kMaxParticles = 100};
fe4da5cc 556
1578254f 557 Int_t fNPDGCodes;
558
559 Int_t fPDGCode[kMaxParticles];
fe4da5cc 560
561public:
562 TGeant3();
563 TGeant3(const char *title, Int_t nwgeant=0);
9006703b 564 virtual ~TGeant3() {if(fVolNames) {
565 delete [] fVolNames;
566 fVolNames=0;}
567 }
fe4da5cc 568 virtual void LoadAddress();
569
570///////////////////////////////////////////////////////////////////////
571// //
572// //
573// Here are the service routines from the geometry //
574// which could be implemented also in other geometries //
575// //
576// //
577///////////////////////////////////////////////////////////////////////
578
579 void GeomIter();
580 Int_t CurrentMaterial(Float_t &a, Float_t &z, Float_t &dens, Float_t &radl, Float_t &absl) const;
581 Int_t NextVolUp(Text_t *name, Int_t &copy);
0a6d8768 582 Int_t CurrentVolID(Int_t &copy) const;
583 Int_t CurrentVolOffID(Int_t off, Int_t &copy) const;
584 const char* CurrentVolName() const;
585 const char *CurrentVolOffName(Int_t off) const;
fe4da5cc 586 Int_t VolId(Text_t *name) const;
1578254f 587 Int_t IdFromPDG(Int_t pdg) const;
588 Int_t PDGFromId(Int_t pdg) const;
589 void DefineParticles();
099385a4 590 const char* VolName(Int_t id) const;
d5a6b28b 591 Float_t Xsec(char*, Float_t, Int_t, Int_t);
0a6d8768 592 void TrackPosition(TLorentzVector &xyz) const;
593 void TrackMomentum(TLorentzVector &xyz) const;
1f97a957 594 Int_t NofVolumes() const;
fe4da5cc 595 Float_t TrackTime() const;
596 Float_t TrackCharge() const;
597 Float_t TrackMass() const;
598 Float_t TrackStep() const;
599 Float_t TrackLength() const;
600 Int_t TrackPid() const;
0a6d8768 601 Bool_t IsTrackInside() const;
602 Bool_t IsTrackEntering() const;
603 Bool_t IsTrackExiting() const;
604 Bool_t IsTrackOut() const;
605 Bool_t IsTrackDisappeared() const;
606 Bool_t IsTrackStop() const;
607 Bool_t IsTrackAlive() const;
6a935c13 608 Int_t NSecondaries() const;
609 Int_t CurrentEvent() const;
610 const char* ProdProcess() const;
611 void GetSecondary(Int_t, Int_t&, TLorentzVector&, TLorentzVector&);
fe4da5cc 612 void StopTrack();
613 void StopEvent();
614 Float_t MaxStep() const;
615 void SetColors();
616 void SetMaxStep(Float_t maxstep);
617 void SetMaxNStep(Int_t maxnstp);
618 Int_t GetMaxNStep() const;
42dcee26 619 // void GetParticle(const Int_t pdg, char *name, Float_t &mass) const;
fe4da5cc 620 virtual Int_t GetMedium() const;
621 virtual Float_t Edep() const;
622 virtual Float_t Etot() const;
623 virtual void Rndm(Float_t* r, const Int_t n) const;
624 virtual void Material(Int_t&, const char*, Float_t, Float_t, Float_t, Float_t,
625 Float_t, Float_t* buf=0, Int_t nwbuf=0);
626 virtual void Mixture(Int_t&, const char*, Float_t*, Float_t*, Float_t, Int_t, Float_t*);
627 virtual void Medium(Int_t&, const char*, Int_t, Int_t, Int_t, Float_t, Float_t,
628 Float_t, Float_t, Float_t, Float_t, Float_t* ubuf=0, Int_t nbuf=0);
629 virtual void Matrix(Int_t&, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t);
630
631/////////////////////////////////////////////////////////////////////////////////////////////
632// //
633// //
634// Here are the interface functions with GEANT3.21 //
635// //
636// //
637/////////////////////////////////////////////////////////////////////////////////////////////
638
639 // access functions to commons
640
641 virtual Quest_t* Quest() const {return fQuest;}
7ac3f11b 642 virtual Gcbank_t* Gcbank() const {return fGcbank;}
fe4da5cc 643 virtual Gclink_t* Gclink() const {return fGclink;}
644 virtual Gccuts_t* Gccuts() const {return fGccuts;}
9e7a32d1 645 virtual Gcmulo_t* Gcmulo() const {return fGcmulo;}
fe4da5cc 646 virtual Gcmate_t* Gcmate() const {return fGcmate;}
647 virtual Gctpol_t* Gctpol() const {return fGctpol;}
648 virtual Gcnum_t* Gcnum() const {return fGcnum;}
649 virtual Gcsets_t* Gcsets() const {return fGcsets;}
650 virtual Gcopti_t* Gcopti() const {return fGcopti;}
651 virtual Gctlit_t* Gctlit() const {return fGctlit;}
652 virtual Gcvdma_t* Gcvdma() const {return fGcvdma;}
653 virtual Gcvolu_t* Gcvolu() const {return fGcvolu;}
654 virtual Gckine_t* Gckine() const {return fGckine;}
655 virtual Gcflag_t* Gcflag() const {return fGcflag;}
656 virtual Gctmed_t* Gctmed() const {return fGctmed;}
657 virtual Gcphys_t* Gcphys() const {return fGcphys;}
658 virtual Gcking_t* Gcking() const {return fGcking;}
659 virtual Gckin2_t* Gckin2() const {return fGckin2;}
660 virtual Gckin3_t* Gckin3() const {return fGckin3;}
661 virtual Gctrak_t* Gctrak() const {return fGctrak;}
24380615 662 virtual Int_t* Iq() const {return fZiq;}
663 virtual Int_t* Lq() const {return fZlq;}
664 virtual Float_t* Q() const {return fZq;}
fe4da5cc 665
666
6991054d 667 // Access to GEANE commons
668
669 virtual Ertrio_t* Ertrio() const {return fErtrio;}
670 virtual Eropts_t* Eropts() const {return fEropts;}
671 virtual Eroptc_t* Eroptc() const {return fEroptc;}
672 virtual Erwork_t* Erwork() const {return fErwork;}
673
674
675
fe4da5cc 676 // functions from GBASE
677 virtual void Gpcxyz();
678 virtual void Ggclos();
679 virtual void Gfile(const char *filename, const char *option="I");
680 virtual void Glast();
681 virtual void Gprint(const char *name);
682 virtual void Grun();
683 virtual void Gtrig();
684 virtual void Gtrigc();
685 virtual void Gtrigi();
686 virtual void Gwork(Int_t nwork);
687 virtual void Gzinit();
688
689 // functions from GCONS
690 virtual void Gfmate(Int_t imat, char *name, Float_t &a, Float_t &z, Float_t &dens,
691 Float_t &radl, Float_t &absl, Float_t* ubuf, Int_t& nbuf);
692 virtual void Gfpart(Int_t ipart, char *name, Int_t &itrtyp,
693 Float_t &amass, Float_t &charge, Float_t &tlife);
694 virtual void Gftmed(Int_t numed, char *name, Int_t &nmat, Int_t &isvol,
695 Int_t &ifield, Float_t &fieldm, Float_t &tmaxfd,
696 Float_t &stemax, Float_t &deemax, Float_t &epsil,
697 Float_t &stmin, Float_t *buf=0, Int_t *nbuf=0);
698 virtual void Gmate();
699 virtual void Gpart();
700 virtual void Gsckov(Int_t itmed, Int_t npckov, Float_t *ppckov,
701 Float_t *absco, Float_t *effic, Float_t *rindex);
702 virtual void Gsdk(Int_t ipart, Float_t *bratio, Int_t *mode);
703 virtual void Gsmate(Int_t imat, const char *name, Float_t a, Float_t z,
704 Float_t dens, Float_t radl, Float_t absl);
705 virtual void Gsmixt(Int_t imat, const char *name, Float_t *a, Float_t *z,
706 Float_t dens, Int_t nlmat, Float_t *wmat);
707 virtual void Gspart(Int_t ipart, const char *name, Int_t itrtyp,
708 Float_t amass, Float_t charge, Float_t tlife);
709 virtual void Gstmed(Int_t numed, const char *name, Int_t nmat, Int_t isvol,
710 Int_t ifield, Float_t fieldm, Float_t tmaxfd,
711 Float_t stemax, Float_t deemax, Float_t epsil,
712 Float_t stmin);
713 virtual void Gstpar(Int_t itmed, const char *param, Float_t parval);
714
715 // functions from GKINE
716 virtual void Gfkine(Int_t itra, Float_t *vert, Float_t *pvert,
717 Int_t &ipart, Int_t &nvert);
718 virtual void Gfvert(Int_t nvtx, Float_t *v, Int_t &ntbeam, Int_t &nttarg, Float_t &tofg);
719 virtual Int_t Gskine(Float_t *plab, Int_t ipart, Int_t nv, Float_t *ubuf=0, Int_t nwbuf=0);
720 virtual Int_t Gsvert(Float_t *v, Int_t ntbeam, Int_t nttarg, Float_t *ubuf=0, Int_t nwbuf=0);
721
722 // functions from GPHYS
723 virtual void Gphysi();
724
725 // functions from GTRAK
726 virtual void Gdebug();
727 virtual void Gekbin();
728 virtual void Gfinds();
729 virtual void Gsking(Int_t igk);
730 virtual void Gskpho(Int_t igk);
731 virtual void Gsstak(Int_t iflag);
732 virtual void Gsxyz();
733 virtual void Gtrack();
734 virtual void Gtreve();
1578254f 735 virtual void Gtreve_root();
fe4da5cc 736 virtual void Grndm(Float_t *rvec, const Int_t len) const;
737 virtual void Grndmq(Int_t &is1, Int_t &is2, const Int_t iseq, const Text_t *chopt);
738
739 // functions from GGEOM
740 virtual void Gdxyz(Int_t );
741 virtual void Gdcxyz();
742
743 // functions from GGEOM
744 virtual void Gdtom(Float_t *xd, Float_t *xm, Int_t iflag);
745 virtual void Glmoth(const char* iudet, Int_t iunum, Int_t &nlev,
746 Int_t *lvols, Int_t *lindx);
747 virtual void Gmedia(Float_t *x, Int_t &numed);
748 virtual void Gmtod(Float_t *xm, Float_t *xd, Int_t iflag);
749 virtual void Gsdvn(const char *name, const char *mother, Int_t ndiv, Int_t iaxis);
750 virtual void Gsdvn2(const char *name, const char *mother, Int_t ndiv, Int_t iaxis, Float_t c0i, Int_t numed);
751 virtual void Gsdvs(const char *name, const char *mother, Float_t step, Int_t iaxis, Int_t numed);
752 virtual void Gsdvs2(const char *name, const char *mother, Float_t step, Int_t iaxis, Float_t c0, Int_t numed);
753 virtual void Gsdvt(const char *name, const char *mother, Float_t step, Int_t iaxis, Int_t numed, Int_t ndvmx);
754 virtual void Gsdvt2(const char *name, const char *mother, Float_t step, Int_t iaxis,
755 Float_t c0, Int_t numed, Int_t ndvmx);
756 virtual void Gsord(const char *name, Int_t iax);
757 virtual void Gspos(const char *name, Int_t nr, const char *mother,
758 Float_t x, Float_t y, Float_t z, Int_t irot, const char *konly="ONLY");
759 virtual void Gsposp(const char *name, Int_t nr, const char *mother,
760 Float_t x, Float_t y, Float_t z, Int_t irot, const char *konly, Float_t *upar, Int_t np);
761 virtual void Gsrotm(Int_t nmat, Float_t theta1, Float_t phi1, Float_t theta2, Float_t phi2,
762 Float_t theta3, Float_t phi3);
763 virtual void Gprotm(Int_t nmat=0);
764 virtual Int_t Gsvolu(const char *name, const char *shape, Int_t nmed,
765 Float_t *upar, Int_t np);
766 virtual void Gsatt(const char *name, const char *att, Int_t val);
767 virtual void Gfpara(const char *name, Int_t number, Int_t intext, Int_t& npar,
768 Int_t& natt, Float_t* par, Float_t* att);
769 virtual void Gckpar(Int_t, Int_t, Float_t*);
770 virtual void Gckmat(Int_t, char*);
771
772 // functions from GDRAW
773 virtual void DefaultRange();
774 virtual void InitHIGZ();
775 virtual void Gdopen(Int_t view);
776 virtual void Gdclose();
777 virtual void Gdelete(Int_t view);
778 virtual void Gdshow(Int_t view);
779 virtual void Gdopt(const char *name,const char *value);
780 virtual void Gdraw(const char *name,Float_t theta=30, Float_t phi=30, Float_t psi=0,Float_t u0=10,Float_t v0=10,Float_t ul=0.01,Float_t vl=0.01);
781 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);
782 virtual void Gdrawx(const char *name,Float_t cutthe, Float_t cutphi, Float_t cutval,
783 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);
784 virtual void Gdhead(Int_t isel, const char *name, Float_t chrsiz=0.6);
785 virtual void Gdman(Float_t u0, Float_t v0, const char *type="MAN");
786 virtual void Gdspec(const char *name);
787 virtual void DrawOneSpec(const char *name);
788 virtual void Gdtree(const char *name,Int_t levmax=15,Int_t ispec=0);
789 virtual void GdtreeParent(const char *name,Int_t levmax=15,Int_t ispec=0);
790
791 virtual void WriteEuclid(const char*, const char*, Int_t, Int_t);
792
793 virtual void SetABAN(Int_t par=1);
794 virtual void SetANNI(Int_t par=1);
795 virtual void SetAUTO(Int_t par=1);
796 virtual void SetBOMB(Float_t bomb=1);
797 virtual void SetBREM(Int_t par=1);
798 virtual void SetCKOV(Int_t par=1);
799 virtual void SetClipBox(const char *name,Float_t xmin=-9999,Float_t xmax=0, Float_t ymin=-9999,Float_t ymax=0,Float_t zmin=-9999,Float_t zmax=0);
800 virtual void SetCOMP(Int_t par=1);
801 virtual void SetCUTS(Float_t cutgam,Float_t cutele,Float_t cutneu,Float_t cuthad,
802 Float_t cutmuo ,Float_t bcute ,Float_t bcutm ,Float_t dcute ,
803 Float_t dcutm ,Float_t ppcutm, Float_t tofmax);
804 virtual void SetDCAY(Int_t par=1);
805 virtual void SetDEBU(Int_t emin=1, Int_t emax=999, Int_t emod=1);
806 virtual void SetDRAY(Int_t par=1);
9e7a32d1 807 virtual void SetERAN(Float_t ekmin=1.e-5, Float_t ekmax=1.e4,
808 Int_t nekbin=90);
fe4da5cc 809 virtual void SetHADR(Int_t par=1);
810 virtual void SetKINE(Int_t kine, Float_t xk1=0, Float_t xk2=0, Float_t xk3=0, Float_t xk4=0,
811 Float_t xk5=0, Float_t xk6=0, Float_t xk7=0, Float_t xk8=0, Float_t xk9=0,
812 Float_t xk10=0);
813 virtual void SetLOSS(Int_t par=2);
814 virtual void SetMULS(Int_t par=1);
815 virtual void SetMUNU(Int_t par=1);
816 virtual void SetOPTI(Int_t par=2);
817 virtual void SetPAIR(Int_t par=1);
818 virtual void SetPFIS(Int_t par=1);
819 virtual void SetPHOT(Int_t par=1);
820 virtual void SetRAYL(Int_t par=1);
821 virtual void SetSWIT(Int_t sw, Int_t val=1);
822 virtual void SetTRIG(Int_t nevents=1);
7ac3f11b 823 virtual void SetUserDecay(Int_t ipart);
fe4da5cc 824
825 virtual void Vname(const char *name, char *vname);
826
827 virtual void InitLego();
6991054d 828
829 // Routines from GEANE
830
831 virtual void Ertrgo();
832 virtual void Ertrak(const Float_t *const x1, const Float_t *const p1,
833 const Float_t *x2, const Float_t *p2,
834 Int_t ipa, Option_t *chopt);
fe4da5cc 835
836 ClassDef(TGeant3,1) //C++ interface to Geant basic routines
837};
838
839#endif