12 #ifndef ROOT_TGeoBuilder
13 #define ROOT_TGeoBuilder
22 class TGeoVolumeAssembly;
23 class TGeoVolumeMulti;
26 class TGeoBuilder :
public TObject
29 static TGeoBuilder *fgInstance;
32 TGeoBuilder(
const TGeoBuilder&);
33 TGeoBuilder& operator=(
const TGeoBuilder&);
36 TGeoManager *fGeometry;
38 void SetGeometry(TGeoManager *geom) {fGeometry = geom;}
41 virtual ~TGeoBuilder();
43 static TGeoBuilder *Instance(TGeoManager *geom);
45 Int_t AddMaterial(TGeoMaterial *material);
46 Int_t AddTransformation(TGeoMatrix *matrix);
47 Int_t AddShape(TGeoShape *shape);
48 void RegisterMatrix(TGeoMatrix *matrix);
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,
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,
103 TGeoVolumeAssembly *MakeVolumeAssembly(
const char *name);
104 TGeoVolumeMulti *MakeVolumeMulti(
const char *name, TGeoMedium *medium);
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,
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);
132 ClassDef(TGeoBuilder, 0)