File indexing completed on 2025-01-18 10:11:51
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef ROOT_TGeoEltu
0013 #define ROOT_TGeoEltu
0014
0015 #include "TGeoTube.h"
0016
0017 class TGeoEltu : public TGeoTube {
0018 TGeoEltu(const TGeoEltu &) = delete;
0019 TGeoEltu &operator=(const TGeoEltu &) = delete;
0020
0021 public:
0022
0023 TGeoEltu();
0024 TGeoEltu(Double_t a, Double_t b, Double_t dz);
0025 TGeoEltu(const char *name, Double_t a, Double_t b, Double_t dz);
0026 TGeoEltu(Double_t *params);
0027
0028 ~TGeoEltu() override;
0029
0030 Double_t Capacity() const override;
0031 void ComputeBBox() override;
0032 void ComputeNormal(const Double_t *point, const Double_t *dir, Double_t *norm) override;
0033 void ComputeNormal_v(const Double_t *points, const Double_t *dirs, Double_t *norms, Int_t vecsize) override;
0034 Bool_t Contains(const Double_t *point) const override;
0035 void Contains_v(const Double_t *points, Bool_t *inside, Int_t vecsize) const override;
0036 Int_t DistancetoPrimitive(Int_t px, Int_t py) override;
0037 Double_t DistFromInside(const Double_t *point, const Double_t *dir, Int_t iact = 1, Double_t step = TGeoShape::Big(),
0038 Double_t *safe = nullptr) const override;
0039 void DistFromInside_v(const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize,
0040 Double_t *step) const override;
0041 Double_t DistFromOutside(const Double_t *point, const Double_t *dir, Int_t iact = 1,
0042 Double_t step = TGeoShape::Big(), Double_t *safe = nullptr) const override;
0043 void DistFromOutside_v(const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize,
0044 Double_t *step) const override;
0045 TGeoVolume *
0046 Divide(TGeoVolume *voldiv, const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step) override;
0047 virtual Double_t GetA() const { return fRmin; }
0048 virtual Double_t GetB() const { return fRmax; }
0049 void GetBoundingCylinder(Double_t *param) const override;
0050 const TBuffer3D &GetBuffer3D(Int_t reqSections, Bool_t localFrame) const override;
0051 TGeoShape *GetMakeRuntimeShape(TGeoShape *mother, TGeoMatrix *mat) const override;
0052 void GetMeshNumbers(Int_t &nvert, Int_t &nsegs, Int_t &npols) const override;
0053 Int_t GetNmeshVertices() const override;
0054 Bool_t GetPointsOnSegments(Int_t , Double_t * ) const override { return kFALSE; }
0055 void InspectShape() const override;
0056 Bool_t IsCylType() const override { return kTRUE; }
0057 Double_t Safety(const Double_t *point, Bool_t in = kTRUE) const override;
0058 void Safety_v(const Double_t *points, const Bool_t *inside, Double_t *safe, Int_t vecsize) const override;
0059 void SavePrimitive(std::ostream &out, Option_t *option = "") override;
0060 void SetEltuDimensions(Double_t a, Double_t b, Double_t dz);
0061 void SetDimensions(Double_t *param) override;
0062 void SetPoints(Double_t *points) const override;
0063 void SetPoints(Float_t *points) const override;
0064
0065 ClassDefOverride(TGeoEltu, 1)
0066 };
0067
0068 #endif