17 class TGeoArb8 :
public TGeoBBox
28 Double_t *fTwist{
nullptr};
31 TGeoArb8(
const TGeoArb8&);
32 TGeoArb8& operator=(
const TGeoArb8&);
34 void CopyTwist(Double_t *twist =
nullptr);
39 TGeoArb8(Double_t dz, Double_t *vertices=0);
40 TGeoArb8(
const char *name, Double_t dz, Double_t *vertices=0);
44 virtual Double_t Capacity()
const;
45 virtual void ComputeBBox();
46 virtual void ComputeNormal(
const Double_t *point,
const Double_t *dir, Double_t *norm);
47 virtual void ComputeNormal_v(
const Double_t *points,
const Double_t *dirs, Double_t *norms, Int_t vecsize);
49 virtual Bool_t Contains(
const Double_t *point)
const;
50 virtual void Contains_v(
const Double_t *points, Bool_t *inside, Int_t vecsize)
const;
51 Double_t DistToPlane(
const Double_t *point,
const Double_t *dir, Int_t ipl, Bool_t in)
const;
52 virtual Double_t DistFromInside(
const Double_t *point,
const Double_t *dir, Int_t iact=1,
53 Double_t step=TGeoShape::Big(), Double_t *safe=0)
const;
54 virtual void DistFromInside_v(
const Double_t *points,
const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step)
const;
55 virtual Double_t DistFromOutside(
const Double_t *point,
const Double_t *dir, Int_t iact=1,
56 Double_t step=TGeoShape::Big(), Double_t *safe=0)
const;
57 virtual void DistFromOutside_v(
const Double_t *points,
const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step)
const;
58 virtual TGeoVolume *Divide(TGeoVolume *voldiv,
const char *divname, Int_t iaxis, Int_t ndiv,
59 Double_t start, Double_t step);
60 virtual Double_t GetAxisRange(Int_t iaxis, Double_t &xlo, Double_t &xhi)
const;
61 virtual void GetBoundingCylinder(Double_t *param)
const;
62 virtual Int_t GetByteCount()
const {
return 100;}
63 Double_t GetClosestEdge(
const Double_t *point, Double_t *vert, Int_t &isegment)
const;
64 virtual Bool_t GetPointsOnFacet(Int_t , Int_t , Double_t * )
const;
65 Double_t GetDz()
const {
return fDz;}
66 virtual Int_t GetFittingBox(
const TGeoBBox *parambox, TGeoMatrix *mat, Double_t &dx, Double_t &dy, Double_t &dz)
const;
67 virtual TGeoShape *GetMakeRuntimeShape(TGeoShape * , TGeoMatrix * )
const {
return 0;}
68 static void GetPlaneNormal(Double_t *p1, Double_t *p2, Double_t *p3, Double_t *norm);
69 Double_t *GetVertices() {
return &fXY[0][0];}
70 Double_t GetTwist(Int_t iseg)
const;
71 virtual Bool_t IsCylType()
const {
return kFALSE;}
72 static Bool_t IsSamePoint(
const Double_t *p1,
const Double_t *p2) {
return (TMath::Abs(p1[0]-p2[0])<1.E-16 && TMath::Abs(p1[1]-p2[1])<1.E-16)?kTRUE:kFALSE;}
73 static Bool_t InsidePolygon(Double_t x, Double_t y, Double_t *pts);
74 virtual void InspectShape()
const;
75 Bool_t IsTwisted()
const {
return (fTwist==0)?kFALSE:kTRUE;}
76 Double_t SafetyToFace(
const Double_t *point, Int_t iseg, Bool_t in)
const;
77 virtual Double_t Safety(
const Double_t *point, Bool_t in=kTRUE)
const;
78 virtual void Safety_v(
const Double_t *points,
const Bool_t *inside, Double_t *safe, Int_t vecsize)
const;
79 virtual void SavePrimitive(std::ostream &out, Option_t *option =
"");
80 void SetPlaneVertices(Double_t zpl, Double_t *vertices)
const;
81 virtual void SetVertex(Int_t vnum, Double_t x, Double_t y);
82 virtual void SetDimensions(Double_t *param);
83 void SetDz(Double_t dz) {fDz = dz;}
84 virtual void SetPoints(Double_t *points)
const;
85 virtual void SetPoints(Float_t *points)
const;
86 virtual void Sizeof3D()
const;
91 class TGeoTrap :
public TGeoArb8
109 TGeoTrap(Double_t dz, Double_t theta, Double_t phi);
110 TGeoTrap(Double_t dz, Double_t theta, Double_t phi, Double_t h1,
111 Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2,
112 Double_t tl2, Double_t alpha2);
113 TGeoTrap(
const char *name, Double_t dz, Double_t theta, Double_t phi, Double_t h1,
114 Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2,
115 Double_t tl2, Double_t alpha2);
118 virtual Double_t DistFromInside(
const Double_t *point,
const Double_t *dir, Int_t iact=1,
119 Double_t step=TGeoShape::Big(), Double_t *safe=0)
const;
120 virtual void DistFromInside_v(
const Double_t *points,
const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step)
const;
121 virtual Double_t DistFromOutside(
const Double_t *point,
const Double_t *dir, Int_t iact=1,
122 Double_t step=TGeoShape::Big(), Double_t *safe=0)
const;
123 virtual void DistFromOutside_v(
const Double_t *points,
const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step)
const;
124 virtual TGeoVolume *Divide(TGeoVolume *voldiv,
const char *divname, Int_t iaxis, Int_t ndiv,
125 Double_t start, Double_t step);
126 Double_t GetTheta()
const {
return fTheta;}
127 Double_t GetPhi()
const {
return fPhi;}
128 Double_t GetH1()
const {
return fH1;}
129 Double_t GetBl1()
const {
return fBl1;}
130 Double_t GetTl1()
const {
return fTl1;}
131 Double_t GetAlpha1()
const {
return fAlpha1;}
132 Double_t GetH2()
const {
return fH2;}
133 Double_t GetBl2()
const {
return fBl2;}
134 Double_t GetTl2()
const {
return fTl2;}
135 Double_t GetAlpha2()
const {
return fAlpha2;}
136 virtual TGeoShape *GetMakeRuntimeShape(TGeoShape *mother, TGeoMatrix *mat)
const;
137 virtual void SetDimensions(Double_t *param);
138 virtual Double_t Safety(
const Double_t *point, Bool_t in=kTRUE)
const;
139 virtual void Safety_v(
const Double_t *points,
const Bool_t *inside, Double_t *safe, Int_t vecsize)
const;
140 virtual void SavePrimitive(std::ostream &out, Option_t *option =
"");
142 ClassDef(TGeoTrap, 1)
145 class TGeoGtra :
public TGeoTrap
149 Double_t fTwistAngle;
153 TGeoGtra(Double_t dz, Double_t theta, Double_t phi, Double_t twist, Double_t h1,
154 Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2,
155 Double_t tl2, Double_t alpha2);
156 TGeoGtra(
const char *name, Double_t dz, Double_t theta, Double_t phi, Double_t twist, Double_t h1,
157 Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2,
158 Double_t tl2, Double_t alpha2);
161 virtual Double_t DistFromInside(
const Double_t *point,
const Double_t *dir, Int_t iact=1,
162 Double_t step=TGeoShape::Big(), Double_t *safe=0)
const;
163 virtual void DistFromInside_v(
const Double_t *points,
const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step)
const;
164 virtual Double_t DistFromOutside(
const Double_t *point,
const Double_t *dir, Int_t iact=1,
165 Double_t step=TGeoShape::Big(), Double_t *safe=0)
const;
166 virtual void DistFromOutside_v(
const Double_t *points,
const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step)
const;
167 virtual TGeoShape *GetMakeRuntimeShape(TGeoShape *mother, TGeoMatrix *mat)
const;
168 Double_t GetTwistAngle()
const {
return fTwistAngle;}
169 virtual Double_t Safety(
const Double_t *point, Bool_t in=kTRUE)
const;
170 virtual void Safety_v(
const Double_t *points,
const Bool_t *inside, Double_t *safe, Int_t vecsize)
const;
171 virtual void SetDimensions(Double_t *param);
172 virtual void SavePrimitive(std::ostream &out, Option_t *option =
"");
174 ClassDef(TGeoGtra, 1)