3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 ////////////////////////////////////////////////
9 // C++ interface to Geant3 basic routines //
10 ////////////////////////////////////////////////
13 #include <GenTypeDefs.h>
15 //______________________________________________________________
17 // Geant3 prototypes for commons
19 //______________________________________________________________
23 // COMMON/QUEST/IQUEST(100)
29 // COMMON/GCBANK/NZEBRA,GVERSN,ZVERSN,IXSTOR,IXDIV,IXCONS,FENDQ(16)
30 // + ,LMAIN,LR1,WS(KWBANK)
44 // COMMON/GCLINK/JDIGI ,JDRAW ,JHEAD ,JHITS ,JKINE ,JMATE ,JPART
45 // + ,JROTM ,JRUNG ,JSET ,JSTAK ,JGSTAT,JTMED ,JTRACK,JVERTX
46 // + ,JVOLUM,JXYZ ,JGPAR ,JGPAR2,JSKLT
72 // COMMON/GCFLAG/IDEBUG,IDEMIN,IDEMAX,ITEST,IDRUN,IDEVT,IEORUN
73 // + ,IEOTRI,IEVENT,ISWIT(10),IFINIT(20),NEVENT,NRNDM(2)
91 // COMMON/GCKINE/IKINE,PKINE(10),ITRA,ISTAK,IVERT,IPART,ITRTYP
92 // + ,NAPART(5),AMASS,CHARGE,TLIFE,VERT(3),PVERT(4),IPAOLD
111 // COMMON/GCKING/KCASE,NGKINE,GKIN(5,MXGKIN),
112 // + TOFD(MXGKIN),IFLGK(MXGKIN)
117 Float_t gkin[MXGKIN][5];
118 Float_t tofd[MXGKIN];
123 // COMMON/GCKIN2/NGPHOT,XPHOT(11,MXPHOT)
127 Float_t xphot[MXPHOT][11];
131 // COMMON/GCKIN3/GPOS(3,MXGKIN)
133 Float_t gpos[MXGKIN][3];
137 // COMMON/GCMATE/NMAT,NAMATE(5),A,Z,DENS,RADL,ABSL
149 // COMMON/GCTMED/NUMED,NATMED(5),ISVOL,IFIELD,FIELDM,TMAXFD,STEMAX
150 // + ,DEEMAX,EPSIL,STMIN,CFIELD,PREC,IUPD,ISTPAR,NUMOLD
171 // PARAMETER (MAXMEC=30)
172 // COMMON/GCTRAK/VECT(7),GETOT,GEKIN,VOUT(7),NMEC,LMEC(MAXMEC)
173 // + ,NAMEC(MAXMEC),NSTEP ,MAXNST,DESTEP,DESTEL,SAFETY,SLENG
174 // + ,STEP ,SNEXT ,SFIELD,TOFG ,GEKRAT,UPWGHT,IGNEXT,INWVOL
175 // + ,ISTOP ,IGAUTO,IEKBIN, ILOSL, IMULL,INGOTO,NLDOWN,NLEVIN
212 // COMMON/GCVOLU/NLEVEL,NAMES(15),NUMBER(15),
213 // +LVOLUM(15),LINDEX(15),INFROM,NLEVMX,NLDEV(15),LINMX(15),
214 // +GTRAN(3,15),GRMAT(10,15),GONLY(15),GLX(3)
225 Float_t gtran[15][3];
226 Float_t grmat[15][10];
232 // COMMON/GCSETS/IHSET,IHDET,ISET,IDET,IDTYPE,NVNAME,NUMBV(20)
244 // COMMON/GCNUM/NMATE ,NVOLUM,NROTM,NTMED,NTMULT,NTRACK,NPART
245 // + ,NSTMAX,NVERTX,NHEAD,NBIT
261 // COMMON/GCCUTS/CUTGAM,CUTELE,CUTNEU,CUTHAD,CUTMUO,BCUTE,BCUTM
262 // + ,DCUTE ,DCUTM ,PPCUTM,TOFMAX,GCUTS(5)
279 // COMMON/GCMULO/SINMUL(101),COSMUL(101),SQRMUL(101),OMCMOL,CHCMOL
280 // + ,EKMIN,EKMAX,NEKBIN,NEK1,EKINV,GEKA,GEKB,EKBIN(200),ELOW(200)
299 // COMMON/GCPHYS/IPAIR,SPAIR,SLPAIR,ZINTPA,STEPPA
300 // + ,ICOMP,SCOMP,SLCOMP,ZINTCO,STEPCO
301 // + ,IPHOT,SPHOT,SLPHOT,ZINTPH,STEPPH
302 // + ,IPFIS,SPFIS,SLPFIS,ZINTPF,STEPPF
303 // + ,IDRAY,SDRAY,SLDRAY,ZINTDR,STEPDR
304 // + ,IANNI,SANNI,SLANNI,ZINTAN,STEPAN
305 // + ,IBREM,SBREM,SLBREM,ZINTBR,STEPBR
306 // + ,IHADR,SHADR,SLHADR,ZINTHA,STEPHA
307 // + ,IMUNU,SMUNU,SLMUNU,ZINTMU,STEPMU
308 // + ,IDCAY,SDCAY,SLIFE ,SUMLIF,DPHYS1
309 // + ,ILOSS,SLOSS,SOLOSS,STLOSS,DPHYS2
310 // + ,IMULS,SMULS,SOMULS,STMULS,DPHYS3
311 // + ,IRAYL,SRAYL,SLRAYL,ZINTRA,STEPRA
381 // COMMON/GCPHLT/ILABS,SLABS,SLLABS,ZINTLA,STEPLA
395 // COMMON/GCOPTI/IOPTIM
401 // COMMON/GCTLIT/THRIND,PMIN,DP,DNDL,JMIN,ITCKOV,IMCKOV,NPCKOV
414 // COMMON/GCVDMA/NVMANY,MANYLE(20),MANYNA(20,15),
415 // +MANYNU(20,15),NFMANY,MYCOUN,IMYSE,RAYTRA,VECCOS(3)
424 // COMMON/GCTPOL/POLAR(3), NAMEC1(MAXME1)
427 Int_t namec1[MAXME1];
430 /************************************************************************
432 * Commons for GEANE *
434 ************************************************************************/
438 // PARAMETER (MXPRED = 10)
439 // DOUBLE PRECISION ERDTRP
440 // REAL ERRIN, ERROUT, ERTRSP, ERXIN, ERXOUT, ERPIN,
442 // INTEGER NEPRED, INLIST, ILPRED, IEPRED
443 // COMMON /ERTRIO/ ERDTRP(5,5,MXPRED), ERRIN(15), ERROUT(15,MXPRED),
444 // + ERTRSP(5,5,MXPRED), ERXIN( 3), ERXOUT( 3,MXPRED),
445 // + ERPIN(3), ERPOUT(3,MXPRED), NEPRED,INLIST,ILPRED,
451 Double_t erdtrp[MXPRED*5*5];
453 Float_t errout[MXPRED*15];
454 Float_t ertrsp[MXPRED*5*5];
456 Float_t erxout[MXPRED*3];
458 Float_t erpout[MXPRED*3];
466 // CHARACTER*8 CHOPTI
467 // LOGICAL LEEXAC, LELENG, LEONLY, LEPLAN, LEPOIN, LEVOLU
468 // REAL ERPLI, ERPLO, ERLENG
469 // INTEGER NAMEER, NUMVER, IOVLER
470 // COMMON /EROPTS/ ERPLI(3,2), ERPLO(3,4,MXPRED), ERLENG(MXPRED),
471 // + NAMEER(MXPRED), NUMVER(MXPRED), IOVLER(MXPRED),
472 // + LEEXAC, LELENG, LEONLY, LEPLAN, LEPOIN, LEVOLU
473 // COMMON /EROPTC/CHOPTI
477 Float_t erplo[MXPRED*3*4];
478 Float_t erleng[MXPRED];
479 Int_t nameer[MXPRED];
480 Int_t numver[MXPRED];
481 Int_t iovler[MXPRED];
495 // DOUBLE PRECISION EI, EF, ASDSC
496 // COMMON /ERWORK/ EI(15), EF(15), ASDSC(5,5),
497 // + XI(3), PPI(3), HI(9),
498 // + XF(3), PF(3), HF(9),
499 // + CHTR, DEDX2, BACKTR, CUTEK, TLGCM2, TLRAD
519 /************************************************************************
521 * Commons for GEANE *
523 ************************************************************************/
526 class TGeant3 : public AliMC {
530 TGeant3(const char *title, Int_t nwgeant=0);
531 virtual ~TGeant3() {if(fVolNames) {
536 virtual void LoadAddress();
538 ///////////////////////////////////////////////////////////////////////
541 // Here are the service routines from the geometry //
542 // which could be implemented also in other geometries //
545 ///////////////////////////////////////////////////////////////////////
548 Int_t CurrentMaterial(Float_t &a, Float_t &z, Float_t &dens, Float_t &radl, Float_t &absl) const;
549 Int_t NextVolUp(Text_t *name, Int_t ©);
550 Int_t CurrentVolID(Int_t ©) const;
551 Int_t CurrentVolOffID(Int_t off, Int_t ©) const;
552 const char* CurrentVolName() const;
553 const char *CurrentVolOffName(Int_t off) const;
554 Int_t VolId(const Text_t *name) const;
555 Int_t IdFromPDG(Int_t pdg) const;
556 Int_t PDGFromId(Int_t pdg) const;
557 void DefineParticles();
558 const char* VolName(Int_t id) const;
559 Float_t Xsec(char* reac, Float_t energy, Int_t part, Int_t mate);
560 void TrackPosition(TLorentzVector &xyz) const;
561 void TrackMomentum(TLorentzVector &xyz) const;
562 Int_t NofVolumes() const;
563 Float_t TrackTime() const;
564 Float_t TrackCharge() const;
565 Float_t TrackMass() const;
566 Float_t TrackStep() const;
567 Float_t TrackLength() const;
568 Int_t TrackPid() const;
569 Bool_t IsNewTrack() const;
570 Bool_t IsTrackInside() const;
571 Bool_t IsTrackEntering() const;
572 Bool_t IsTrackExiting() const;
573 Bool_t IsTrackOut() const;
574 Bool_t IsTrackDisappeared() const;
575 Bool_t IsTrackStop() const;
576 Bool_t IsTrackAlive() const;
577 Int_t NSecondaries() const;
578 Int_t CurrentEvent() const;
579 AliMCProcess ProdProcess() const;
580 void GetSecondary(Int_t isec, Int_t& ipart, TLorentzVector &x,
584 Float_t MaxStep() const;
585 void SetMaxStep(Float_t maxstep);
586 void SetMaxNStep(Int_t maxnstp);
587 Int_t GetMaxNStep() const;
588 void SetCut(const char* cutName, Float_t cutValue);
589 void SetProcess(const char* flagName, Int_t flagValue);
590 // void GetParticle(const Int_t pdg, char *name, Float_t &mass) const;
591 // Set the external decayer
592 void SetExternalDecayer(AliDecayer* decayer) {fDecayer=decayer;}
593 // Get the external decayer
594 AliDecayer* Decayer() const {return fDecayer;}
596 virtual Int_t GetMedium() const;
597 virtual Float_t Edep() const;
598 virtual Float_t Etot() const;
600 virtual void Material(Int_t& kmat, const char* name, Float_t a, Float_t z,
601 Float_t dens, Float_t radl, Float_t absl,
602 Float_t* buf=0, Int_t nwbuf=0);
604 virtual void Mixture(Int_t& kmat, const char* name, Float_t* a,Float_t* z,
605 Float_t dens, Int_t nlmat, Float_t* wmat);
607 virtual void Medium(Int_t& kmed, const char* name, Int_t nmat, Int_t isvol,
608 Int_t ifield, Float_t fieldm, Float_t tmaxfd,
609 Float_t stemax, Float_t deemax, Float_t epsil,
610 Float_t stmin, Float_t* ubuf=0, Int_t nbuf=0);
612 virtual void Matrix(Int_t& krot, Float_t thex, Float_t phix, Float_t they,
613 Float_t phiy, Float_t thez, Float_t phiz);
615 /////////////////////////////////////////////////////////////////////////////////////////////
618 // Here are the interface functions with GEANT3.21 //
621 /////////////////////////////////////////////////////////////////////////////////////////////
623 // access functions to commons
625 virtual Quest_t* Quest() const {return fQuest;}
626 virtual Gcbank_t* Gcbank() const {return fGcbank;}
627 virtual Gclink_t* Gclink() const {return fGclink;}
628 virtual Gccuts_t* Gccuts() const {return fGccuts;}
629 virtual Gcmulo_t* Gcmulo() const {return fGcmulo;}
630 virtual Gcmate_t* Gcmate() const {return fGcmate;}
631 virtual Gctpol_t* Gctpol() const {return fGctpol;}
632 virtual Gcnum_t* Gcnum() const {return fGcnum;}
633 virtual Gcsets_t* Gcsets() const {return fGcsets;}
634 virtual Gcopti_t* Gcopti() const {return fGcopti;}
635 virtual Gctlit_t* Gctlit() const {return fGctlit;}
636 virtual Gcvdma_t* Gcvdma() const {return fGcvdma;}
637 virtual Gcvolu_t* Gcvolu() const {return fGcvolu;}
638 virtual Gckine_t* Gckine() const {return fGckine;}
639 virtual Gcflag_t* Gcflag() const {return fGcflag;}
640 virtual Gctmed_t* Gctmed() const {return fGctmed;}
641 virtual Gcphys_t* Gcphys() const {return fGcphys;}
642 virtual Gcphlt_t* Gcphlt() const {return fGcphlt;}
643 virtual Gcking_t* Gcking() const {return fGcking;}
644 virtual Gckin2_t* Gckin2() const {return fGckin2;}
645 virtual Gckin3_t* Gckin3() const {return fGckin3;}
646 virtual Gctrak_t* Gctrak() const {return fGctrak;}
647 virtual Int_t* Iq() const {return fZiq;}
648 virtual Int_t* Lq() const {return fZlq;}
649 virtual Float_t* Q() const {return fZq;}
652 // Access to GEANE commons
654 virtual Ertrio_t* Ertrio() const {return fErtrio;}
655 virtual Eropts_t* Eropts() const {return fEropts;}
656 virtual Eroptc_t* Eroptc() const {return fEroptc;}
657 virtual Erwork_t* Erwork() const {return fErwork;}
661 // functions from GBASE
662 virtual void Gpcxyz();
663 virtual void Ggclos();
664 virtual void Gfile(const char *filename, const char *option="I");
665 virtual void Glast();
666 virtual void Gprint(const char *name);
668 virtual void Gtrig();
669 virtual void Gtrigc();
670 virtual void Gtrigi();
671 virtual void Gwork(Int_t nwork);
672 virtual void Gzinit();
674 // functions from GCONS
675 virtual void Gfmate(Int_t imat, char *name, Float_t &a, Float_t &z, Float_t &dens,
676 Float_t &radl, Float_t &absl, Float_t* ubuf, Int_t& nbuf);
677 virtual void Gfpart(Int_t ipart, char *name, Int_t &itrtyp,
678 Float_t &amass, Float_t &charge, Float_t &tlife);
679 virtual void Gftmed(Int_t numed, char *name, Int_t &nmat, Int_t &isvol,
680 Int_t &ifield, Float_t &fieldm, Float_t &tmaxfd,
681 Float_t &stemax, Float_t &deemax, Float_t &epsil,
682 Float_t &stmin, Float_t *buf=0, Int_t *nbuf=0);
683 virtual void Gftmat(Int_t imate, Int_t ipart, char *chmeca, Int_t kdim,
684 Float_t* tkin, Float_t* value, Float_t* pcut,
686 virtual Float_t Gbrelm(Float_t z, Float_t t, Float_t cut);
687 virtual Float_t Gprelm(Float_t z, Float_t t, Float_t cut);
688 virtual void Gmate();
689 virtual void Gpart();
690 virtual void Gsckov(Int_t itmed, Int_t npckov, Float_t *ppckov,
691 Float_t *absco, Float_t *effic, Float_t *rindex);
692 virtual void Gsdk(Int_t ipart, Float_t *bratio, Int_t *mode);
693 virtual void Gsmate(Int_t imat, const char *name, Float_t a, Float_t z,
694 Float_t dens, Float_t radl, Float_t absl);
695 virtual void Gsmixt(Int_t imat, const char *name, Float_t *a, Float_t *z,
696 Float_t dens, Int_t nlmat, Float_t *wmat);
697 virtual void Gspart(Int_t ipart, const char *name, Int_t itrtyp,
698 Float_t amass, Float_t charge, Float_t tlife);
699 virtual void Gstmed(Int_t numed, const char *name, Int_t nmat, Int_t isvol,
700 Int_t ifield, Float_t fieldm, Float_t tmaxfd,
701 Float_t stemax, Float_t deemax, Float_t epsil,
703 virtual void Gstpar(Int_t itmed, const char *param, Float_t parval);
705 // functions from GKINE
706 virtual void Gfkine(Int_t itra, Float_t *vert, Float_t *pvert,
707 Int_t &ipart, Int_t &nvert);
708 virtual void Gfvert(Int_t nvtx, Float_t *v, Int_t &ntbeam, Int_t &nttarg, Float_t &tofg);
709 virtual Int_t Gskine(Float_t *plab, Int_t ipart, Int_t nv, Float_t *ubuf=0, Int_t nwbuf=0);
710 virtual Int_t Gsvert(Float_t *v, Int_t ntbeam, Int_t nttarg, Float_t *ubuf=0, Int_t nwbuf=0);
712 // functions from GPHYS
713 virtual void Gphysi();
715 // functions from GTRAK
716 virtual void Gdebug();
717 virtual void Gekbin();
718 virtual void Gfinds();
719 virtual void Gsking(Int_t igk);
720 virtual void Gskpho(Int_t igk);
721 virtual void Gsstak(Int_t iflag);
722 virtual void Gsxyz();
723 virtual void Gtrack();
724 virtual void Gtreve();
725 virtual void GtreveRoot();
726 virtual void Grndm(Float_t *rvec, const Int_t len) const;
727 virtual void Grndmq(Int_t &is1, Int_t &is2, const Int_t iseq, const Text_t *chopt);
729 // functions from GGEOM
730 virtual void Gdxyz(Int_t it);
731 virtual void Gdcxyz();
733 // functions from GGEOM
734 virtual void Gdtom(Float_t *xd, Float_t *xm, Int_t iflag);
735 virtual void Glmoth(const char* iudet, Int_t iunum, Int_t &nlev,
736 Int_t *lvols, Int_t *lindx);
737 virtual void Gmedia(Float_t *x, Int_t &numed);
738 virtual void Gmtod(Float_t *xm, Float_t *xd, Int_t iflag);
739 virtual void Gsdvn(const char *name, const char *mother, Int_t ndiv, Int_t iaxis);
740 virtual void Gsdvn2(const char *name, const char *mother, Int_t ndiv, Int_t iaxis, Float_t c0i, Int_t numed);
741 virtual void Gsdvs(const char *name, const char *mother, Float_t step, Int_t iaxis, Int_t numed);
742 virtual void Gsdvs2(const char *name, const char *mother, Float_t step, Int_t iaxis, Float_t c0, Int_t numed);
743 virtual void Gsdvt(const char *name, const char *mother, Float_t step, Int_t iaxis, Int_t numed, Int_t ndvmx);
744 virtual void Gsdvt2(const char *name, const char *mother, Float_t step, Int_t iaxis,
745 Float_t c0, Int_t numed, Int_t ndvmx);
746 virtual void Gsord(const char *name, Int_t iax);
747 virtual void Gspos(const char *name, Int_t nr, const char *mother,
748 Float_t x, Float_t y, Float_t z, Int_t irot, const char *konly="ONLY");
749 virtual void Gsposp(const char *name, Int_t nr, const char *mother,
750 Float_t x, Float_t y, Float_t z, Int_t irot, const char *konly, Float_t *upar, Int_t np);
751 virtual void Gsrotm(Int_t nmat, Float_t theta1, Float_t phi1, Float_t theta2, Float_t phi2,
752 Float_t theta3, Float_t phi3);
753 virtual void Gprotm(Int_t nmat=0);
754 virtual Int_t Gsvolu(const char *name, const char *shape, Int_t nmed,
755 Float_t *upar, Int_t np);
756 virtual void Gsatt(const char *name, const char *att, Int_t val);
757 virtual void Gfpara(const char *name, Int_t number, Int_t intext, Int_t& npar,
758 Int_t& natt, Float_t* par, Float_t* att);
759 virtual void Gckpar(Int_t ish, Int_t npar, Float_t *par);
760 virtual void Gckmat(Int_t itmed, char *natmed);
761 virtual Int_t Glvolu(Int_t nlev, Int_t *lnam,Int_t *lnum);
763 // functions from GDRAW
764 virtual void DefaultRange();
765 virtual void InitHIGZ();
766 virtual void Gdopen(Int_t view);
767 virtual void Gdclose();
768 virtual void Gdelete(Int_t view);
769 virtual void Gdshow(Int_t view);
770 virtual void Gdopt(const char *name,const char *value);
771 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);
772 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);
773 virtual void Gdrawx(const char *name,Float_t cutthe, Float_t cutphi, Float_t cutval,
774 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);
775 virtual void Gdhead(Int_t isel, const char *name, Float_t chrsiz=0.6);
776 virtual void Gdman(Float_t u0, Float_t v0, const char *type="MAN");
777 virtual void Gdspec(const char *name);
778 virtual void DrawOneSpec(const char *name);
779 virtual void Gdtree(const char *name,Int_t levmax=15,Int_t ispec=0);
780 virtual void GdtreeParent(const char *name,Int_t levmax=15,Int_t ispec=0);
782 virtual void WriteEuclid(const char* filnam, const char* topvol,
783 Int_t number, Int_t nlevel);
785 virtual void SetABAN(Int_t par=1);
786 virtual void SetANNI(Int_t par=1);
787 virtual void SetAUTO(Int_t par=1);
788 virtual void SetBOMB(Float_t bomb=1);
789 virtual void SetBREM(Int_t par=1);
790 virtual void SetCKOV(Int_t par=1);
791 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);
792 virtual void SetCOMP(Int_t par=1);
793 virtual void SetCUTS(Float_t cutgam,Float_t cutele,Float_t cutneu,Float_t cuthad,
794 Float_t cutmuo ,Float_t bcute ,Float_t bcutm ,Float_t dcute ,
795 Float_t dcutm ,Float_t ppcutm, Float_t tofmax);
796 virtual void SetDCAY(Int_t par=1);
797 virtual void SetDEBU(Int_t emin=1, Int_t emax=999, Int_t emod=1);
798 virtual void SetDRAY(Int_t par=1);
799 virtual void SetERAN(Float_t ekmin=1.e-5, Float_t ekmax=1.e4,
801 virtual void SetHADR(Int_t par=1);
802 virtual void SetKINE(Int_t kine, Float_t xk1=0, Float_t xk2=0, Float_t xk3=0, Float_t xk4=0,
803 Float_t xk5=0, Float_t xk6=0, Float_t xk7=0, Float_t xk8=0, Float_t xk9=0,
805 virtual void SetLOSS(Int_t par=2);
806 virtual void SetMULS(Int_t par=1);
807 virtual void SetMUNU(Int_t par=1);
808 virtual void SetOPTI(Int_t par=2);
809 virtual void SetPAIR(Int_t par=1);
810 virtual void SetPFIS(Int_t par=1);
811 virtual void SetPHOT(Int_t par=1);
812 virtual void SetRAYL(Int_t par=1);
813 virtual void SetSTRA(Int_t par=0);
814 virtual void SetSWIT(Int_t sw, Int_t val=1);
815 virtual void SetTRIG(Int_t nevents=1);
816 virtual void SetUserDecay(Int_t ipart);
818 virtual void Vname(const char *name, char *vname);
820 virtual void InitLego();
822 // Routines from GEANE
824 virtual void Ertrgo();
825 virtual void Ertrak(const Float_t *const x1, const Float_t *const p1,
826 const Float_t *x2, const Float_t *p2,
827 Int_t ipa, Option_t *chopt);
831 virtual void FinishGeometry();
832 virtual void BuildPhysics();
835 Int_t fNextVol; // Iterator for GeomIter
837 //--------------Declarations for ZEBRA---------------------
838 Int_t *fZiq; // Good Old IQ of Zebra
839 Int_t *fZlq; // Good Old LQ of Zebra
840 Float_t *fZq; // Good Old Q of Zebra
842 Quest_t *fQuest; // QUEST common structure
843 Gcbank_t *fGcbank; // GCBANK common structure
844 Gclink_t *fGclink; // GCLINK common structure
845 Gccuts_t *fGccuts; // GCCUTS common structure
846 Gcmulo_t *fGcmulo; // GCMULO common structure
847 Gcmate_t *fGcmate; // GCMATE common structure
848 Gctpol_t *fGctpol; // GCTPOL common structure
849 Gcnum_t *fGcnum; // GCNUM common structure
850 Gcsets_t *fGcsets; // GCSETS common structure
851 Gcopti_t *fGcopti; // GCOPTI common structure
852 Gctlit_t *fGctlit; // GCTLIT common structure
853 Gcvdma_t *fGcvdma; // GCVDMA common structure
854 Gcvolu_t *fGcvolu; // GCVOLU common structure
855 Gckine_t *fGckine; // GCKINE common structure
856 Gcflag_t *fGcflag; // GCFLAG common structure
857 Gctmed_t *fGctmed; // GCTMED common structure
858 Gcphys_t *fGcphys; // GCPHYS common structure
859 Gcphlt_t *fGcphlt; // GCPHLT common structure
860 Gcking_t *fGcking; // GCKING common structure
861 Gckin2_t *fGckin2; // GCKIN2 common structure
862 Gckin3_t *fGckin3; // GCKIN3 common structure
863 Gctrak_t *fGctrak; // GCTRAK common structure
867 Ertrio_t *fErtrio; // ERTRIO common structure
868 Eropts_t *fEropts; // EROPTS common structure
869 Eroptc_t *fEroptc; // EROPTC common structure
870 Erwork_t *fErwork; // ERWORK common structure
872 //Put here all volume names
874 char (*fVolNames)[5]; //! Names of geant volumes as C++ chars
876 enum {kMaxParticles = 100};
878 Int_t fNPDGCodes; // Number of PDG codes known by G3
880 Int_t fPDGCode[kMaxParticles]; // Translation table of PDG codes
885 AliDecayer* fDecayer; // Pointer to decayer
887 TGeant3(const TGeant3 &) {}
888 TGeant3 & operator=(const TGeant3&) {return *this;}
891 ClassDef(TGeant3,1) //C++ interface to Geant basic routines