e803739235bfd3502fda7c29d84e58f5bcb5a87b
[u/mrichter/AliRoot.git] / GEODB / AliGEODB.h
1 #ifndef AliGEODB_H 
2 #define AliGEODB_H 
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //////////////////////////////////////////////// 
9 //  C++ interface to Geant3 basic routines    // 
10 //////////////////////////////////////////////// 
11  
12 #include <AliMC.h> 
13 #include "AliGNode.h"
14   
15 class AliGEODB : public AliMC { 
16
17 public: 
18   AliGEODB() {}
19   AliGEODB(const char *title, Int_t nwgeant=0); 
20   virtual ~AliGEODB() {} 
21
22 ///////////////////////////////////////////////////////////////////////
23 //                                                                   //
24 //                                                                   //
25 //     Here are the service routines from the geometry               //
26 //     which could be implemented also in other geometries           //
27 //                                                                   //
28 //                                                                   //
29 ///////////////////////////////////////////////////////////////////////
30
31   void  GeomIter();
32   Int_t CurrentMaterial(Float_t &a, Float_t &z, Float_t &dens, Float_t &radl, Float_t &absl) const;
33   Int_t NextVolUp(Text_t *name, Int_t &copy);
34   Int_t CurrentVol(Text_t *name, Int_t &copy) const;
35   Int_t CurrentVolOff(Int_t off, Text_t *name, Int_t &copy) const;
36   Int_t VolId(Text_t *name) const;
37   const char* VolName(Int_t id) const;
38   void  TrackPosition(Float_t *xyz) const;
39   void  TrackMomentum(Float_t *xyz) const;  
40   Int_t NofVolumes() const;
41   Float_t TrackTime() const;  
42   Float_t TrackCharge() const;
43   Float_t TrackMass() const;
44   Float_t TrackStep() const;
45   Float_t TrackLength() const;
46   Int_t   TrackPid() const;
47   Bool_t TrackInside() const;
48   Bool_t TrackEntering() const;
49   Bool_t TrackExiting() const;
50   Bool_t TrackOut() const;
51   Bool_t TrackDisappear() const;
52   Bool_t TrackStop() const;
53   Bool_t TrackAlive() const;
54   Int_t   NSecondaries() const;
55   Int_t   CurrentEvent() const;
56   void    ProdProcess(char*) const;
57   void    GetSecondary(Int_t, Int_t&, Float_t*, Float_t*);
58   void   StopTrack();
59   void   StopEvent();
60   Float_t MaxStep() const;
61   void   SetColors();
62   void  SetMaxStep(Float_t maxstep);
63   void  SetMaxNStep(Int_t maxnstp);
64   Int_t GetMaxNStep() const;
65   void GetParticle(const Int_t ipart, char *name, Float_t &mass) const;
66   virtual Int_t GetMedium() const;
67   virtual Float_t Edep() const;
68   virtual Float_t Etot() const;
69   virtual void    Rndm(Float_t* r, const Int_t n) const;
70   virtual void    Material(Int_t&, const char*, Float_t, Float_t, Float_t, Float_t,
71                             Float_t, Float_t* buf=0, Int_t nwbuf=0);
72   virtual void    Mixture(Int_t&, const char*, Float_t*, Float_t*, Float_t, Int_t, Float_t*);
73   virtual void    Medium(Int_t&, const char*, Int_t, Int_t, Int_t, Float_t, Float_t, 
74                    Float_t, Float_t, Float_t, Float_t, Float_t* ubuf=0, Int_t nbuf=0);
75   virtual void    Matrix(Int_t&, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t);
76
77       // functions from GBASE 
78    virtual  void  Gpcxyz(); 
79    virtual  void  Ggclos(); 
80
81    virtual  void  SetVisibility(Text_t* name, Int_t val);
82    virtual  void  DrawTree( AliGNode* topnode, Int_t tabs );
83
84    virtual  void  Gfile(const char *filename, const char *option="I"); 
85    virtual  void  Glast(); 
86    virtual  void  Gprint(const char *name); 
87    virtual  void  Grun(); 
88    virtual  void  Gtrig(); 
89    virtual  void  Gtrigc(); 
90    virtual  void  Gtrigi(); 
91    virtual  void  Gwork(Int_t nwork); 
92    virtual  void  Gzinit(); 
93  
94       // functions from GCONS 
95    virtual  void  Gfmate(Int_t imat, char *name, Float_t &a, Float_t &z, Float_t &dens, 
96                          Float_t &radl, Float_t &absl, Float_t* ubuf, Int_t& nbuf); 
97    virtual  void  Gfpart(Int_t ipart, char *name, Int_t &itrtyp,  
98                          Float_t &amass, Float_t &charge, Float_t &tlife); 
99    virtual  void  Gftmed(Int_t numed, char *name, Int_t &nmat, Int_t &isvol,  
100                          Int_t &ifield, Float_t &fieldm, Float_t &tmaxfd, 
101                          Float_t &stemax, Float_t &deemax, Float_t &epsil, 
102                          Float_t &stmin, Float_t *buf=0, Int_t *nbuf=0); 
103    virtual  void  Gmate(); 
104    virtual  void  Gpart(); 
105    virtual  void  Gsckov(Int_t itmed, Int_t npckov, Float_t *ppckov,
106                          Float_t *absco, Float_t *effic, Float_t *rindex); 
107    virtual  void  Gsdk(Int_t ipart, Float_t *bratio, Int_t *mode); 
108    virtual  void  Gsmate(Int_t imat, const char *name, Float_t a, Float_t z,  
109                          Float_t dens, Float_t radl, Float_t absl); 
110    virtual  void  Gsmixt(Int_t imat, const char *name, Float_t *a, Float_t *z,  
111                          Float_t dens, Int_t nlmat, Float_t *wmat); 
112    virtual  void  Gspart(Int_t ipart, const char *name, Int_t itrtyp,  
113                          Float_t amass, Float_t charge, Float_t tlife); 
114    virtual  void  Gstmed(Int_t numed, const char *name, Int_t nmat, Int_t isvol,  
115                          Int_t ifield, Float_t fieldm, Float_t tmaxfd, 
116                          Float_t stemax, Float_t deemax, Float_t epsil, 
117                          Float_t stmin); 
118    virtual  void  Gstpar(Int_t itmed, const char *param, Float_t parval); 
119  
120       // functions from GKINE 
121    virtual  void  Gfkine(Int_t itra, Float_t *vert, Float_t *pvert, 
122                          Int_t &ipart, Int_t &nvert); 
123    virtual  void  Gfvert(Int_t nvtx, Float_t *v, Int_t &ntbeam, Int_t &nttarg, Float_t &tofg); 
124    virtual  Int_t Gskine(Float_t *plab, Int_t ipart, Int_t nv, Float_t *ubuf=0, Int_t nwbuf=0); 
125    virtual  Int_t Gsvert(Float_t *v, Int_t ntbeam, Int_t nttarg, Float_t *ubuf=0, Int_t nwbuf=0); 
126  
127       // functions from GPHYS 
128    virtual  void  Gphysi(); 
129  
130       // functions from GTRAK 
131    virtual  void  Gdebug(); 
132    virtual  void  Gekbin(); 
133    virtual  void  Gfinds(); 
134    virtual  void  Gsking(Int_t igk); 
135    virtual  void  Gskpho(Int_t igk); 
136    virtual  void  Gsstak(Int_t iflag); 
137    virtual  void  Gsxyz(); 
138    virtual  void  Gtrack(); 
139    virtual  void  Gtreve(); 
140    virtual  void  Grndm(Float_t *rvec, const Int_t len) const; 
141    virtual  void  Grndmq(Int_t &is1, Int_t &is2, const Int_t iseq, const Text_t *chopt); 
142  
143       // functions from GGEOM 
144    virtual  void  Gdxyz(Int_t ); 
145    virtual  void  Gdcxyz(); 
146
147       // functions from GGEOM 
148    virtual  void  Gdtom(Float_t *xd, Float_t *xm, Int_t iflag); 
149    virtual  void  Glmoth(const char* iudet, Int_t iunum, Int_t &nlev, 
150                          Int_t *lvols, Int_t *lindx); 
151    virtual  void  Gmedia(Float_t *x, Int_t &numed); 
152    virtual  void  Gmtod(Float_t *xm, Float_t *xd, Int_t iflag); 
153    virtual  void  Gsdvn(const char *name, const char *mother, Int_t ndiv, Int_t iaxis); 
154    virtual  void  Gsdvn2(const char *name, const char *mother, Int_t ndiv, Int_t iaxis, Float_t c0i, Int_t numed); 
155    virtual  void  Gsdvs(const char *name, const char *mother, Float_t step, Int_t iaxis, Int_t numed); 
156    virtual  void  Gsdvs2(const char *name, const char *mother, Float_t step, Int_t iaxis, Float_t c0, Int_t numed); 
157    virtual  void  Gsdvt(const char *name, const char *mother, Float_t step, Int_t iaxis, Int_t numed, Int_t ndvmx); 
158    virtual  void  Gsdvt2(const char *name, const char *mother, Float_t step, Int_t iaxis,
159                          Float_t c0, Int_t numed, Int_t ndvmx); 
160    virtual  void  Gsord(const char *name, Int_t iax); 
161    virtual  void  Gspos(const char *name, Int_t nr, const char *mother,  
162                          Float_t x, Float_t y, Float_t z, Int_t irot, const char *konly="ONLY"); 
163    virtual  void  Gsposp(const char *nodename, Int_t nr, const char *mother,  
164                          Float_t x, Float_t y, Float_t z, Int_t irot, const char *konly, Float_t *upar, Int_t np); 
165    virtual  void  Gsrotm(Int_t nmat, Float_t theta1, Float_t phi1, Float_t theta2, Float_t phi2, 
166                          Float_t theta3, Float_t phi3); 
167    virtual  void  Gprotm(Int_t nmat=0); 
168    virtual  Int_t Gsvolu(const char *name, const char *shape, Int_t nmed,  
169                          Float_t *upar, Int_t np); 
170    virtual  void  Gsatt(const char *name, const char *att, Int_t val);
171    virtual  void  Gfpara(const char *name, Int_t number, Int_t intext, Int_t& npar,
172                          Int_t& natt, Float_t* par, Float_t* att);
173    virtual  void  Gckpar(Int_t, Int_t, Float_t*);
174    virtual  void  Gckmat(Int_t, char*);
175     
176       // functions from GDRAW 
177    virtual  void  DefaultRange();
178    virtual  void  InitHIGZ();
179    virtual  void  Gdopen(Int_t view);
180    virtual  void  Gdclose();
181    virtual  void  Gdelete(Int_t view);
182    virtual  void  Gdshow(Int_t view);
183    virtual  void  Gdopt(const char *name,const char *value);
184    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);
185    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);
186    virtual  void  Gdrawx(const char *name,Float_t cutthe, Float_t cutphi, Float_t cutval,
187                          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);
188    virtual  void  Gdhead(Int_t isel, const char *name, Float_t chrsiz=0.6);   
189    virtual  void  Gdman(Float_t u0, Float_t v0, const char *type="MAN");
190    virtual  void  Gdspec(const char *name);
191    virtual  void  DrawOneSpec(const char *name);
192    virtual  void  Gdtree(const char *name,Int_t levmax=15,Int_t ispec=0);
193    virtual  void  GdtreeParent(const char *name,Int_t levmax=15,Int_t ispec=0);
194
195    virtual  void  WriteEuclid(const char*, const char*, Int_t, Int_t);
196
197    virtual  void  SetABAN(Int_t par=1);
198    virtual  void  SetANNI(Int_t par=1);
199    virtual  void  SetAUTO(Int_t par=1);
200    virtual  void  SetBOMB(Float_t bomb=1);
201    virtual  void  SetBREM(Int_t par=1);
202    virtual  void  SetCKOV(Int_t par=1);
203    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);
204    virtual  void  SetCOMP(Int_t par=1);
205    virtual  void  SetCUTS(Float_t cutgam,Float_t cutele,Float_t cutneu,Float_t cuthad,
206                       Float_t cutmuo ,Float_t bcute ,Float_t bcutm ,Float_t dcute ,
207                       Float_t dcutm ,Float_t ppcutm, Float_t tofmax);
208    virtual  void  SetDCAY(Int_t par=1);
209    virtual  void  SetDEBU(Int_t emin=1, Int_t emax=999, Int_t emod=1);
210    virtual  void  SetDRAY(Int_t par=1);
211    virtual  void  SetHADR(Int_t par=1);
212    virtual  void  SetKINE(Int_t kine, Float_t xk1=0, Float_t xk2=0, Float_t xk3=0, Float_t xk4=0,
213                          Float_t xk5=0, Float_t xk6=0, Float_t xk7=0, Float_t xk8=0, Float_t xk9=0,
214                          Float_t xk10=0);
215    virtual  void  SetLOSS(Int_t par=2);
216    virtual  void  SetMULS(Int_t par=1);
217    virtual  void  SetMUNU(Int_t par=1);
218    virtual  void  SetOPTI(Int_t par=2);
219    virtual  void  SetPAIR(Int_t par=1);
220    virtual  void  SetPFIS(Int_t par=1);
221    virtual  void  SetPHOT(Int_t par=1);
222    virtual  void  SetRAYL(Int_t par=1);
223    virtual  void  SetSWIT(Int_t sw, Int_t val=1);
224    virtual  void  SetTRIG(Int_t nevents=1);
225
226    virtual  void  Vname(const char *name, char *vname);
227
228    virtual  void  InitLego();
229         
230    ClassDef(AliGEODB,1)  //C++ interface to Geant basic routines 
231 }; 
232
233 #endif