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) |
23 | typedef 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) |
30 | typedef 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 |
46 | typedef 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) |
73 | typedef 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 |
92 | typedef 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 |
113 | typedef 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 |
124 | typedef struct { |
125 | Int_t ngphot; |
126 | Float_t xphot[MXPHOT][11]; |
127 | } Gckin2_t; |
128 | |
129 | //----------GCKIN3 |
130 | // COMMON/GCKIN3/GPOS(3,MXGKIN) |
131 | typedef struct { |
132 | Float_t gpos[MXGKIN][3]; |
133 | } Gckin3_t; |
134 | |
135 | //----------GCMATE |
136 | // COMMON/GCMATE/NMAT,NAMATE(5),A,Z,DENS,RADL,ABSL |
137 | typedef 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 |
150 | typedef 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 |
176 | typedef 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) |
214 | typedef 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) |
232 | typedef 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 |
245 | typedef 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) |
262 | typedef 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) |
280 | typedef 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 |
314 | typedef 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 |
384 | typedef struct { |
385 | Int_t ioptim; |
386 | } Gcopti_t; |
387 | |
388 | //----------GCTLIT |
389 | // COMMON/GCTLIT/THRIND,PMIN,DP,DNDL,JMIN,ITCKOV,IMCKOV,NPCKOV |
390 | typedef 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) |
404 | typedef 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) |
413 | typedef 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 |
438 | typedef 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 | |
463 | typedef 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 | |
478 | typedef 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 | |
489 | typedef 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 | |
513 | class TGeant3 : public AliMC { |
514 | |
515 | private: |
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 | |
561 | public: |
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 ©); |
0a6d8768 |
582 | Int_t CurrentVolID(Int_t ©) const; |
583 | Int_t CurrentVolOffID(Int_t off, Int_t ©) 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 |