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 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...
static constexpr double pi
virtual const TBuffer3D & GetBuffer3D(Int_t reqSections) const
Get buffer 3d.
virtual ~TTUBS()
TUBS shape default destructor.
virtual Int_t GetNumberOfDivisions() const
void SetSectionsValid(UInt_t mask)
Int_t ShapeDistancetoPrimitive(Int_t numPoints, Int_t px, Int_t py)
Distance to primitive.
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.
TTUBS()
TUBS shape default constructor.
virtual void Sizeof3D() const
Return total X3D needed by TNode::ls (when called with option "x")
virtual void SetPoints(Double_t *points) const
Create TUBS points.
Int_t GetBasicColor() const
Get basic color.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a TUBE.
void TransformPoints(Double_t *points, UInt_t NbPnts) const
Transform points (LocalToMaster)
virtual void MakeTableOfCoSin() const
Make table of sine and cosine.
Double_t * fCoTab
Table of sin(fPhi1) .... sin(fPhil+fDphi1)