58 :
TTUBE(name,title,material,rmin,rmax,dz)
70 :
TTUBE(name,title,material,rmax,dz)
99 if (phi1 > phi2 ) phi2 += 2*
pi;
106 for (j = 0; j <
n; j++) {
107 ph = phi1 + j*angstep;
129 Int_t numPoints = n*4;
146 for (j = 0; j <
n; j++) {
151 points[indx+6*
n] = dz;
155 for (j = 0; j <
n; j++) {
160 points[indx+6*
n]= dz;
199 Int_t nbSegs = 2*nbPnts;
200 Int_t nbPols = nbPnts-2;
202 if (buffer.
SetRawSizes(nbPnts, 3*nbPnts, nbSegs, 3*nbSegs, nbPols, 6*nbPols)) {
219 for (i = 0; i < 4; i++) {
220 for (j = 1; j <
n; j++) {
221 buffer.
fSegs[(i*n+j-1)*3 ] = c;
222 buffer.
fSegs[(i*n+j-1)*3+1] = i*n+j-1;
223 buffer.
fSegs[(i*n+j-1)*3+2] = i*n+j;
226 for (i = 4; i < 6; i++) {
227 for (j = 0; j <
n; j++) {
228 buffer.
fSegs[(i*n+j)*3 ] = c+1;
229 buffer.
fSegs[(i*n+j)*3+1] = (i-4)*n+j;
230 buffer.
fSegs[(i*n+j)*3+2] = (i-2)*n+j;
233 for (i = 6; i < 8; i++) {
234 for (j = 0; j <
n; j++) {
235 buffer.
fSegs[(i*n+j)*3 ] = c;
236 buffer.
fSegs[(i*n+j)*3+1] = 2*(i-6)*n+j;
237 buffer.
fSegs[(i*n+j)*3+2] = (2*(i-6)+1)*n+j;
245 for (j = 0; j < n-1; j++) {
247 buffer.
fPols[indx++] = 4;
248 buffer.
fPols[indx++] = (4+i)*n+j+1;
249 buffer.
fPols[indx++] = (2+i)*n+j;
250 buffer.
fPols[indx++] = (4+i)*n+j;
251 buffer.
fPols[indx++] = i*n+j;
254 for (j = 0; j < n-1; j++) {
256 buffer.
fPols[indx++] = 4;
257 buffer.
fPols[indx++] = i*n+j;
258 buffer.
fPols[indx++] = (4+i)*n+j;
259 buffer.
fPols[indx++] = (2+i)*n+j;
260 buffer.
fPols[indx++] = (4+i)*n+j+1;
263 for (j = 0; j < n-1; j++) {
264 buffer.
fPols[indx++] = c+i;
265 buffer.
fPols[indx++] = 4;
266 buffer.
fPols[indx++] = (i-2)*2*n+j;
267 buffer.
fPols[indx++] = (4+i)*n+j;
268 buffer.
fPols[indx++] = ((i-2)*2+1)*n+j;
269 buffer.
fPols[indx++] = (4+i)*n+j+1;
272 for (j = 0; j < n-1; j++) {
273 buffer.
fPols[indx++] = c+i;
274 buffer.
fPols[indx++] = 4;
275 buffer.
fPols[indx++] = (4+i)*n+j+1;
276 buffer.
fPols[indx++] = ((i-2)*2+1)*n+j;
277 buffer.
fPols[indx++] = (4+i)*n+j;
278 buffer.
fPols[indx++] = (i-2)*2*n+j;
280 buffer.
fPols[indx++] = c+2;
281 buffer.
fPols[indx++] = 4;
282 buffer.
fPols[indx++] = 6*
n;
283 buffer.
fPols[indx++] = 4*
n;
284 buffer.
fPols[indx++] = 7*
n;
285 buffer.
fPols[indx++] = 5*
n;
286 buffer.
fPols[indx++] = c+2;
287 buffer.
fPols[indx++] = 4;
288 buffer.
fPols[indx++] = 6*n-1;
289 buffer.
fPols[indx++] = 8*n-1;
290 buffer.
fPols[indx++] = 5*n-1;
291 buffer.
fPols[indx++] = 7*n-1;
virtual const TBuffer3D & GetBuffer3D(Int_t reqSections) const
Get buffer 3d.
virtual void FillBuffer3D(TBuffer3D &buffer, Int_t reqSections) const
We have to set kRawSize (unless already done) to allocate buffer space before kRaw can be filled...
virtual ~TTUBS()
TUBS shape default destructor.
void SetSectionsValid(UInt_t mask)
Int_t ShapeDistancetoPrimitive(Int_t numPoints, Int_t px, Int_t py)
Distance to primitive.
void TransformPoints(Double_t *points, UInt_t NbPnts) const
Transform points (LocalToMaster)
TPaveLabel title(3, 27.1, 15, 28.7,"ROOT Environment and Tools")
virtual void Sizeof3D() const
Return total X3D needed by TNode::ls (when called with option "x")
Int_t GetBasicColor() const
Get basic color.
virtual void SetPoints(Double_t *points) const
Create TUBS points.
Bool_t SetRawSizes(UInt_t reqPnts, UInt_t reqPntsCapacity, UInt_t reqSegs, UInt_t reqSegsCapacity, UInt_t reqPols, UInt_t reqPolsCapacity)
Set kRaw tessellation section of buffer with supplied sizes.
Generic 3D primitive description class.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a TUBE.
virtual void MakeTableOfCoSin() const
Make table of sine and cosine.
virtual Int_t GetNumberOfDivisions() const
Double_t * fCoTab
Table of sin(fPhi1) .... sin(fPhil+fDphi1)