Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TGeoBuilder.h
Go to the documentation of this file.
1 // @(#)root/geom:$Id$
2 // Author: Mihaela Gheata 30/05/07
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TGeoBuilder
13 #define ROOT_TGeoBuilder
14 
15 #include "TObject.h"
16 
17 class TGeoMaterial;
18 class TGeoMatrix;
19 class TGeoMedium;
20 class TGeoShape;
21 class TGeoVolume;
22 class TGeoVolumeAssembly;
23 class TGeoVolumeMulti;
24 class TGeoManager;
25 
26 class TGeoBuilder : public TObject
27 {
28 protected:
29  static TGeoBuilder *fgInstance; //! static pointer to singleton
30 
31  TGeoBuilder();
32  TGeoBuilder(const TGeoBuilder&);
33  TGeoBuilder& operator=(const TGeoBuilder&);
34 
35 private :
36  TGeoManager *fGeometry; //! current geometry
37 
38  void SetGeometry(TGeoManager *geom) {fGeometry = geom;}
39 
40 public :
41  virtual ~TGeoBuilder();
42 
43  static TGeoBuilder *Instance(TGeoManager *geom);
44 
45  Int_t AddMaterial(TGeoMaterial *material);
46  Int_t AddTransformation(TGeoMatrix *matrix);
47  Int_t AddShape(TGeoShape *shape);
48  void RegisterMatrix(TGeoMatrix *matrix);
49 
50  TGeoVolume *MakeArb8(const char *name, TGeoMedium *medium,
51  Double_t dz, Double_t *vertices=0);
52  TGeoVolume *MakeBox(const char *name, TGeoMedium *medium,
53  Double_t dx, Double_t dy, Double_t dz);
54  TGeoVolume *MakeCone(const char *name, TGeoMedium *medium,
55  Double_t dz, Double_t rmin1, Double_t rmax1,
56  Double_t rmin2, Double_t rmax2);
57  TGeoVolume *MakeCons(const char *name, TGeoMedium *medium,
58  Double_t dz, Double_t rmin1, Double_t rmax1,
59  Double_t rmin2, Double_t rmax2,
60  Double_t phi1, Double_t phi2);
61  TGeoVolume *MakeCtub(const char *name, TGeoMedium *medium,
62  Double_t rmin, Double_t rmax, Double_t dz, Double_t phi1, Double_t phi2,
63  Double_t lx, Double_t ly, Double_t lz, Double_t tx, Double_t ty, Double_t tz);
64  TGeoVolume *MakeEltu(const char *name, TGeoMedium *medium,
65  Double_t a, Double_t b, Double_t dz);
66  TGeoVolume *MakeGtra(const char *name, TGeoMedium *medium,
67  Double_t dz, Double_t theta, Double_t phi, Double_t twist, Double_t h1,
68  Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2,
69  Double_t tl2, Double_t alpha2);
70  TGeoVolume *MakePara(const char *name, TGeoMedium *medium,
71  Double_t dx, Double_t dy, Double_t dz,
72  Double_t alpha, Double_t theta, Double_t phi);
73  TGeoVolume *MakePcon(const char *name, TGeoMedium *medium,
74  Double_t phi, Double_t dphi, Int_t nz);
75  TGeoVolume *MakeParaboloid(const char *name, TGeoMedium *medium,
76  Double_t rlo, Double_t rhi, Double_t dz);
77  TGeoVolume *MakeHype(const char *name, TGeoMedium *medium,
78  Double_t rin, Double_t stin, Double_t rout, Double_t stout, Double_t dz);
79  TGeoVolume *MakePgon(const char *name, TGeoMedium *medium,
80  Double_t phi, Double_t dphi, Int_t nedges, Int_t nz);
81  TGeoVolume *MakeSphere(const char *name, TGeoMedium *medium,
82  Double_t rmin, Double_t rmax,
83  Double_t themin=0, Double_t themax=180,
84  Double_t phimin=0, Double_t phimax=360);
85  TGeoVolume *MakeTorus(const char *name, TGeoMedium *medium, Double_t r,
86  Double_t rmin, Double_t rmax, Double_t phi1=0, Double_t dphi=360);
87  TGeoVolume *MakeTrap(const char *name, TGeoMedium *medium,
88  Double_t dz, Double_t theta, Double_t phi, Double_t h1,
89  Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2,
90  Double_t tl2, Double_t alpha2);
91  TGeoVolume *MakeTrd1(const char *name, TGeoMedium *medium,
92  Double_t dx1, Double_t dx2, Double_t dy, Double_t dz);
93  TGeoVolume *MakeTrd2(const char *name, TGeoMedium *medium,
94  Double_t dx1, Double_t dx2, Double_t dy1, Double_t dy2,
95  Double_t dz);
96  TGeoVolume *MakeTube(const char *name, TGeoMedium *medium,
97  Double_t rmin, Double_t rmax, Double_t dz);
98  TGeoVolume *MakeTubs(const char *name, TGeoMedium *medium,
99  Double_t rmin, Double_t rmax, Double_t dz,
100  Double_t phi1, Double_t phi2);
101  TGeoVolume *MakeXtru(const char *name, TGeoMedium *medium,
102  Int_t nz);
103  TGeoVolumeAssembly *MakeVolumeAssembly(const char *name);
104  TGeoVolumeMulti *MakeVolumeMulti(const char *name, TGeoMedium *medium);
105 
106  //--- GEANT3-like geometry creation
107  TGeoVolume *Division(const char *name, const char *mother, Int_t iaxis, Int_t ndiv,
108  Double_t start, Double_t step, Int_t numed=0, Option_t *option="");
109  void Matrix(Int_t index, Double_t theta1, Double_t phi1,
110  Double_t theta2, Double_t phi2,
111  Double_t theta3, Double_t phi3);
112  TGeoMaterial *Material(const char *name, Double_t a, Double_t z, Double_t dens, Int_t uid, Double_t radlen=0, Double_t intlen=0);
113  TGeoMaterial *Mixture(const char *name, Float_t *a, Float_t *z, Double_t dens,
114  Int_t nelem, Float_t *wmat, Int_t uid);
115  TGeoMaterial *Mixture(const char *name, Double_t *a, Double_t *z, Double_t dens,
116  Int_t nelem, Double_t *wmat, Int_t uid);
117  TGeoMedium *Medium(const char *name, Int_t numed, Int_t nmat, Int_t isvol,
118  Int_t ifield, Double_t fieldm, Double_t tmaxfd,
119  Double_t stemax, Double_t deemax, Double_t epsil,
120  Double_t stmin);
121  void Node(const char *name, Int_t nr, const char *mother,
122  Double_t x, Double_t y, Double_t z, Int_t irot,
123  Bool_t isOnly, Float_t *upar, Int_t npar=0);
124  void Node(const char *name, Int_t nr, const char *mother,
125  Double_t x, Double_t y, Double_t z, Int_t irot,
126  Bool_t isOnly, Double_t *upar, Int_t npar=0);
127  TGeoVolume *Volume(const char *name, const char *shape, Int_t nmed,
128  Float_t *upar, Int_t npar=0);
129  TGeoVolume *Volume(const char *name, const char *shape, Int_t nmed,
130  Double_t *upar, Int_t npar=0);
131 
132  ClassDef(TGeoBuilder, 0) // geometry builder singleton
133 };
134 
135 #endif
136