12 #ifndef ROOT_TBuffer3D
13 #define ROOT_TBuffer3D
17 class TBuffer3D :
public TObject
35 TBuffer3D(
const TBuffer3D &) =
delete;
36 TBuffer3D & operator=(
const TBuffer3D &) =
delete;
39 static UInt_t fgCSLevel;
43 enum EBoolOpCode {kCSUnion, kCSIntersection, kCSDifference, kCSNoOp};
45 static UInt_t GetCSLevel();
46 static void IncCSLevel();
47 static UInt_t DecCSLevel();
49 enum ESection { kNone = BIT(0),
51 kBoundingBox = BIT(2),
52 kShapeSpecific = BIT(3),
55 kAll = kCore|kBoundingBox|kShapeSpecific|kRawSizes|kRaw
59 UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
60 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
61 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
65 void SetSectionsValid(UInt_t mask) { fSections |= mask & kAll; }
66 void ClearSectionsValid();
67 Bool_t SectionsValid(UInt_t mask)
const {
return (Bool_t) (GetSections(mask) == mask); }
68 UInt_t GetSections(UInt_t mask)
const {
return (UInt_t) (fSections & mask); }
71 void SetLocalMasterIdentity();
72 void SetAABoundingBox(
const Double_t origin[3],
73 const Double_t halfLengths[3]);
76 Bool_t SetRawSizes(UInt_t reqPnts, UInt_t reqPntsCapacity,
77 UInt_t reqSegs, UInt_t reqSegsCapacity,
78 UInt_t reqPols, UInt_t reqPolsCapacity);
80 UInt_t NbPnts()
const {
return fNbPnts; }
81 UInt_t NbSegs()
const {
return fNbSegs; }
82 UInt_t NbPols()
const {
return fNbPols; }
85 Int_t Type()
const {
return fType; }
89 Short_t fTransparency;
92 Double_t fLocalMaster[16];
107 Double_t fBBVertex[8][3];
118 mutable UInt_t fPhysicalID;
121 ClassDef(TBuffer3D,0)
128 class TBuffer3DSphere :
public TBuffer3D
132 TBuffer3DSphere(
const TBuffer3DSphere &) =
delete;
133 TBuffer3DSphere & operator=(
const TBuffer3DSphere &) =
delete;
136 TBuffer3DSphere(UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
137 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
138 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
140 Bool_t IsSolidUncut()
const;
143 Double_t fRadiusInner;
144 Double_t fRadiusOuter;
155 class TBuffer3DTube :
public TBuffer3D
159 TBuffer3DTube(
const TBuffer3DTube &) =
delete;
160 TBuffer3DTube & operator=(
const TBuffer3DTube &) =
delete;
163 TBuffer3DTube(Int_t type,
164 UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
165 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
166 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
169 TBuffer3DTube(UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
170 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
171 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
174 Double_t fRadiusInner;
175 Double_t fRadiusOuter;
176 Double_t fHalfLength;
183 class TBuffer3DTubeSeg :
public TBuffer3DTube
187 TBuffer3DTubeSeg(
const TBuffer3DTubeSeg &);
188 TBuffer3DTubeSeg & operator=(
const TBuffer3DTubeSeg &) =
delete;
191 TBuffer3DTubeSeg(Int_t type,
192 UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
193 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
194 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
197 TBuffer3DTubeSeg(UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
198 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
199 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
210 class TBuffer3DCutTube :
public TBuffer3DTubeSeg
214 TBuffer3DCutTube(
const TBuffer3DTubeSeg &) =
delete;
215 TBuffer3DCutTube & operator=(
const TBuffer3DTubeSeg &) =
delete;
218 TBuffer3DCutTube(UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
219 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
220 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
223 Double_t fLowPlaneNorm[3];
224 Double_t fHighPlaneNorm[3];