21 class TGeoXtru :
public TGeoBBox
35 ThreadData_t& GetThreadData()
const;
36 virtual void ClearThreadData()
const;
37 virtual void CreateThreadData(Int_t nthreads);
51 mutable std::vector<ThreadData_t*> fThreadData;
52 mutable Int_t fThreadSize;
53 mutable std::mutex fMutex;
55 TGeoXtru(
const TGeoXtru&);
56 TGeoXtru& operator=(
const TGeoXtru&);
59 Double_t DistToPlane(
const Double_t *point,
const Double_t *dir, Int_t iz, Int_t ivert, Double_t stepmax, Bool_t in)
const;
60 void GetPlaneVertices(Int_t iz, Int_t ivert, Double_t *vert)
const;
61 void GetPlaneNormal(
const Double_t *vert, Double_t *norm)
const;
62 Bool_t IsPointInsidePlane(
const Double_t *point, Double_t *vert, Double_t *norm)
const;
63 Double_t SafetyToSector(
const Double_t *point, Int_t iz, Double_t safmin, Bool_t in);
65 void SetSeg(Int_t iseg);
71 TGeoXtru(Double_t *param);
75 virtual Double_t Capacity()
const;
76 virtual void ComputeBBox();
77 virtual void ComputeNormal(
const Double_t *point,
const Double_t *dir, Double_t *norm);
78 virtual void ComputeNormal_v(
const Double_t *points,
const Double_t *dirs, Double_t *norms, Int_t vecsize);
79 virtual Bool_t Contains(
const Double_t *point)
const;
80 virtual void Contains_v(
const Double_t *points, Bool_t *inside, Int_t vecsize)
const;
81 Bool_t DefinePolygon(Int_t nvert,
const Double_t *xv,
const Double_t *yv);
82 virtual void DefineSection(Int_t snum, Double_t z, Double_t x0=0., Double_t y0=0., Double_t scale=1.);
83 virtual Double_t DistFromInside(
const Double_t *point,
const Double_t *dir, Int_t iact=1,
84 Double_t step=TGeoShape::Big(), Double_t *safe=0)
const;
85 virtual void DistFromInside_v(
const Double_t *points,
const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step)
const;
86 virtual Double_t DistFromOutside(
const Double_t *point,
const Double_t *dir, Int_t iact=1,
87 Double_t step=TGeoShape::Big(), Double_t *safe=0)
const;
88 virtual void DistFromOutside_v(
const Double_t *points,
const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step)
const;
89 virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
90 void DrawPolygon(Option_t *option=
"");
91 virtual const TBuffer3D &GetBuffer3D(Int_t reqSections, Bool_t localFrame)
const;
93 Int_t GetNz()
const {
return fNz;}
94 Int_t GetNvert()
const {
return fNvert;}
95 Double_t GetX(Int_t i)
const {
return (i<fNvert&&i>-1 &&fX!=0) ? fX[i] : -1.0E10;}
96 Double_t GetY(Int_t i)
const {
return (i<fNvert&&i>-1 &&fY!=0) ? fY[i] : -1.0E10;}
97 Double_t GetXOffset(Int_t i)
const {
return (i<fNz&&i>-1 && fX0!=0) ? fX0[i] : 0.0;}
98 Double_t GetYOffset(Int_t i)
const {
return (i<fNz&&i>-1 && fY0!=0) ? fY0[i] : 0.0;}
99 Double_t GetScale(Int_t i)
const {
return (i<fNz&&i>-1 && fScale!=0) ? fScale[i] : 1.0;}
100 Double_t *GetZ()
const {
return fZ;}
101 Double_t GetZ(Int_t ipl)
const;
102 virtual TGeoShape *GetMakeRuntimeShape(TGeoShape * , TGeoMatrix * )
const {
return 0;}
103 virtual void GetMeshNumbers(Int_t &nvert, Int_t &nsegs, Int_t &npols)
const;
104 virtual Int_t GetNmeshVertices()
const;
105 virtual void InspectShape()
const;
106 virtual TBuffer3D *MakeBuffer3D()
const;
107 Double_t &Z(Int_t ipl) {
return fZ[ipl];}
108 virtual Double_t Safety(
const Double_t *point, Bool_t in=kTRUE)
const;
109 virtual void Safety_v(
const Double_t *points,
const Bool_t *inside, Double_t *safe, Int_t vecsize)
const;
110 virtual void SavePrimitive(std::ostream &out, Option_t *option =
"");
111 void SetCurrentZ(Double_t z, Int_t iz);
112 void SetCurrentVertices(Double_t x0, Double_t y0, Double_t scale);
113 virtual void SetDimensions(Double_t *param);
114 virtual void SetPoints(Double_t *points)
const;
115 virtual void SetPoints(Float_t *points)
const;
116 virtual void SetSegsAndPols(TBuffer3D &buff)
const;
117 virtual void Sizeof3D()
const;
119 ClassDef(TGeoXtru, 3)