Warning, file /include/root/TGeoBuilder.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef ROOT_TGeoBuilder
0013 #define ROOT_TGeoBuilder
0014
0015 #include "TObject.h"
0016
0017 class TGeoMaterial;
0018 class TGeoMatrix;
0019 class TGeoMedium;
0020 class TGeoShape;
0021 class TGeoVolume;
0022 class TGeoVolumeAssembly;
0023 class TGeoVolumeMulti;
0024 class TGeoManager;
0025
0026 class TGeoBuilder : public TObject {
0027 protected:
0028 static TGeoBuilder *fgInstance;
0029
0030 TGeoBuilder();
0031 TGeoBuilder(const TGeoBuilder &) = delete;
0032 TGeoBuilder &operator=(const TGeoBuilder &) = delete;
0033
0034 private:
0035 TGeoManager *fGeometry;
0036
0037 void SetGeometry(TGeoManager *geom) { fGeometry = geom; }
0038
0039 public:
0040 ~TGeoBuilder() override;
0041
0042 static TGeoBuilder *Instance(TGeoManager *geom);
0043
0044 Int_t AddMaterial(TGeoMaterial *material);
0045 Int_t AddTransformation(TGeoMatrix *matrix);
0046 Int_t AddShape(TGeoShape *shape);
0047 void RegisterMatrix(TGeoMatrix *matrix);
0048
0049 TGeoVolume *MakeArb8(const char *name, TGeoMedium *medium, Double_t dz, Double_t *vertices = nullptr);
0050 TGeoVolume *MakeBox(const char *name, TGeoMedium *medium, Double_t dx, Double_t dy, Double_t dz);
0051 TGeoVolume *MakeCone(const char *name, TGeoMedium *medium, Double_t dz, Double_t rmin1, Double_t rmax1,
0052 Double_t rmin2, Double_t rmax2);
0053 TGeoVolume *MakeCons(const char *name, TGeoMedium *medium, Double_t dz, Double_t rmin1, Double_t rmax1,
0054 Double_t rmin2, Double_t rmax2, Double_t phi1, Double_t phi2);
0055 TGeoVolume *MakeCtub(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t dz, Double_t phi1,
0056 Double_t phi2, Double_t lx, Double_t ly, Double_t lz, Double_t tx, Double_t ty, Double_t tz);
0057 TGeoVolume *MakeEltu(const char *name, TGeoMedium *medium, Double_t a, Double_t b, Double_t dz);
0058 TGeoVolume *MakeGtra(const char *name, TGeoMedium *medium, Double_t dz, Double_t theta, Double_t phi, Double_t twist,
0059 Double_t h1, Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2,
0060 Double_t tl2, Double_t alpha2);
0061 TGeoVolume *MakePara(const char *name, TGeoMedium *medium, Double_t dx, Double_t dy, Double_t dz, Double_t alpha,
0062 Double_t theta, Double_t phi);
0063 TGeoVolume *MakePcon(const char *name, TGeoMedium *medium, Double_t phi, Double_t dphi, Int_t nz);
0064 TGeoVolume *MakeParaboloid(const char *name, TGeoMedium *medium, Double_t rlo, Double_t rhi, Double_t dz);
0065 TGeoVolume *MakeHype(const char *name, TGeoMedium *medium, Double_t rin, Double_t stin, Double_t rout,
0066 Double_t stout, Double_t dz);
0067 TGeoVolume *MakePgon(const char *name, TGeoMedium *medium, Double_t phi, Double_t dphi, Int_t nedges, Int_t nz);
0068 TGeoVolume *MakeSphere(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t themin = 0,
0069 Double_t themax = 180, Double_t phimin = 0, Double_t phimax = 360);
0070 TGeoVolume *MakeTorus(const char *name, TGeoMedium *medium, Double_t r, Double_t rmin, Double_t rmax,
0071 Double_t phi1 = 0, Double_t dphi = 360);
0072 TGeoVolume *MakeTrap(const char *name, TGeoMedium *medium, Double_t dz, Double_t theta, Double_t phi, Double_t h1,
0073 Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2, Double_t tl2,
0074 Double_t alpha2);
0075 TGeoVolume *MakeTrd1(const char *name, TGeoMedium *medium, Double_t dx1, Double_t dx2, Double_t dy, Double_t dz);
0076 TGeoVolume *
0077 MakeTrd2(const char *name, TGeoMedium *medium, Double_t dx1, Double_t dx2, Double_t dy1, Double_t dy2, Double_t dz);
0078 TGeoVolume *MakeTube(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t dz);
0079 TGeoVolume *MakeTubs(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t dz, Double_t phi1,
0080 Double_t phi2);
0081 TGeoVolume *MakeXtru(const char *name, TGeoMedium *medium, Int_t nz);
0082 TGeoVolumeAssembly *MakeVolumeAssembly(const char *name);
0083 TGeoVolumeMulti *MakeVolumeMulti(const char *name, TGeoMedium *medium);
0084
0085
0086 TGeoVolume *Division(const char *name, const char *mother, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step,
0087 Int_t numed = 0, Option_t *option = "");
0088 void
0089 Matrix(Int_t index, Double_t theta1, Double_t phi1, Double_t theta2, Double_t phi2, Double_t theta3, Double_t phi3);
0090 TGeoMaterial *Material(const char *name, Double_t a, Double_t z, Double_t dens, Int_t uid, Double_t radlen = 0,
0091 Double_t intlen = 0);
0092 TGeoMaterial *
0093 Mixture(const char *name, Float_t *a, Float_t *z, Double_t dens, Int_t nelem, Float_t *wmat, Int_t uid);
0094 TGeoMaterial *
0095 Mixture(const char *name, Double_t *a, Double_t *z, Double_t dens, Int_t nelem, Double_t *wmat, Int_t uid);
0096 TGeoMedium *Medium(const char *name, Int_t numed, Int_t nmat, Int_t isvol, Int_t ifield, Double_t fieldm,
0097 Double_t tmaxfd, Double_t stemax, Double_t deemax, Double_t epsil, Double_t stmin);
0098 void Node(const char *name, Int_t nr, const char *mother, Double_t x, Double_t y, Double_t z, Int_t irot,
0099 Bool_t isOnly, Float_t *upar, Int_t npar = 0);
0100 void Node(const char *name, Int_t nr, const char *mother, Double_t x, Double_t y, Double_t z, Int_t irot,
0101 Bool_t isOnly, Double_t *upar, Int_t npar = 0);
0102 TGeoVolume *Volume(const char *name, const char *shape, Int_t nmed, Float_t *upar, Int_t npar = 0);
0103 TGeoVolume *Volume(const char *name, const char *shape, Int_t nmed, Double_t *upar, Int_t npar = 0);
0104
0105 ClassDefOverride(TGeoBuilder, 0)
0106 };
0107
0108 #endif