Back to home page

EIC code displayed by LXR

 
 

    


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 // @(#)root/geom:$Id$
0002 // Author: Mihaela Gheata   30/05/07
0003 
0004 /*************************************************************************
0005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
0006  * All rights reserved.                                                  *
0007  *                                                                       *
0008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
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; //! static pointer to singleton
0029 
0030    TGeoBuilder();
0031    TGeoBuilder(const TGeoBuilder &) = delete;
0032    TGeoBuilder &operator=(const TGeoBuilder &) = delete;
0033 
0034 private:
0035    TGeoManager *fGeometry; //! current geometry
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    //--- GEANT3-like geometry creation
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) // geometry builder singleton
0106 };
0107 
0108 #endif