58    faX = faY = faZ = 1.0;      
 
   67      : 
TShape(name, title,material)
 
   91      : 
TShape(name, title,material)
 
  143    if (factors[0] > 0) 
faX = factors[0];
 
  144    if (factors[1] > 0) 
faY = factors[1];
 
  145    if (factors[2] > 0) 
faZ = factors[2];
 
  172       for (i = 0; i < 
fNz+1; i++) {
 
  176          for (j = 0; j < 
n; j++) {
 
  179             points[indx++] = 
faZ*z;
 
  181          z = fRmax * fCoThetaTab[i];
 
  183          for (j = 0; j < 
n; j++) {
 
  186             points[indx++] = 
faZ*z;
 
  220    while (dphi > 360) dphi -= 360;
 
  223    while (dtet > 180) dtet -= 180;
 
  242    for (j = 0; j < 
n; j++)
 
  244       ph = phi1 + j*angstep;
 
  258    angstep = range/(n-1);
 
  261    for (j = 0; j < 
n; j++)
 
  272 void TSPHE::Streamer(
TBuffer &b)
 
  323       Int_t nbPnts = 2*n*nz;
 
  324       Int_t nbSegs = 4*(nz*n-1+(specialCase == 
kTRUE));
 
  325       Int_t nbPols = 2*(nz*n-1+(specialCase == 
kTRUE));
 
  326       if (buffer.
SetRawSizes(nbPnts, 3*nbPnts, nbSegs, 3*nbSegs, nbPols, 6*nbPols)) {
 
  345       for (i = 0; i < nz*2; i++) {
 
  347          for (j = 1; j < 
n; j++) {
 
  349             buffer.
fSegs[indx++] = indx2+j-1;
 
  350             buffer.
fSegs[indx++] = indx2+j;
 
  354             buffer.
fSegs[indx++] = indx2+j-1;
 
  355             buffer.
fSegs[indx++] = indx2;
 
  360       for (i = 0; i < 2; i++) {
 
  361          indx2 = i*(nz-1)*2*n;
 
  362          for (j = 0; j < 
n; j++) {
 
  364             buffer.
fSegs[indx++] = indx2+j;
 
  365             buffer.
fSegs[indx++] = indx2+n+j;
 
  370       for (i = 0; i < (nz-1); i++) {
 
  374          for (j = 0; j < 
n; j++) {
 
  375             buffer.
fSegs[indx++] = c+2;
 
  376             buffer.
fSegs[indx++] = indx2+j;
 
  377             buffer.
fSegs[indx++] = indx2+n*2+j;
 
  381          for (j = 0; j < 
n; j++) {
 
  382             buffer.
fSegs[indx++] = c+3;
 
  383             buffer.
fSegs[indx++] = indx2+j;
 
  384             buffer.
fSegs[indx++] = indx2+n*2+j;
 
  391          for (i = 1; i < (nz-1); i++) {
 
  392             for (j = 0; j < 2; j++) {
 
  394                buffer.
fSegs[indx++] =  2*i    * n + j*(n-1);
 
  395                buffer.
fSegs[indx++] = (2*i+1) * n + j*(n-1);
 
  406       for (j = 0; j < n-1; j++) {
 
  407          buffer.
fPols[indx++] = c+3;
 
  408          buffer.
fPols[indx++] = 4;
 
  409          buffer.
fPols[indx++] = 2*nz*m+j;
 
  410          buffer.
fPols[indx++] = m+j;
 
  411          buffer.
fPols[indx++] = 2*nz*m+j+1;
 
  412          buffer.
fPols[indx++] = j;
 
  414       for (j = 0; j < n-1; j++) {
 
  415          buffer.
fPols[indx++] = c+3;
 
  416          buffer.
fPols[indx++] = 4;
 
  417          buffer.
fPols[indx++] = 2*nz*m+n+j;
 
  418          buffer.
fPols[indx++] = (nz*2-2)*m+j;
 
  419          buffer.
fPols[indx++] = 2*nz*m+n+j+1;
 
  420          buffer.
fPols[indx++] = (nz*2-2)*m+m+j;
 
  423          buffer.
fPols[indx++] = c+3;
 
  424          buffer.
fPols[indx++] = 4;
 
  425          buffer.
fPols[indx++] = 2*nz*m+j;
 
  426          buffer.
fPols[indx++] = m+j;
 
  427          buffer.
fPols[indx++] = 2*nz*
m;
 
  428          buffer.
fPols[indx++] = j;
 
  430          buffer.
fPols[indx++] = c+3;
 
  431          buffer.
fPols[indx++] = 4;
 
  432          buffer.
fPols[indx++] = 2*nz*m+n+j;
 
  433          buffer.
fPols[indx++] = (nz*2-2)*m+j;
 
  434          buffer.
fPols[indx++] = 2*nz*m+
n;
 
  435          buffer.
fPols[indx++] = (nz*2-2)*m+m+j;
 
  439       for (k = 0; k < (nz-1); k++) {
 
  440          for (j = 0; j < n-1; j++) {
 
  442             buffer.
fPols[indx++] = 4;
 
  443             buffer.
fPols[indx++] = 2*k*m+j;
 
  444             buffer.
fPols[indx++] = nz*2*m+(2*k+2)*n+j+1;
 
  445             buffer.
fPols[indx++] = (2*k+2)*m+j;
 
  446             buffer.
fPols[indx++] = nz*2*m+(2*k+2)*n+j;
 
  448          for (j = 0; j < n-1; j++) {
 
  449             buffer.
fPols[indx++] = c+1;
 
  450             buffer.
fPols[indx++] = 4;
 
  451             buffer.
fPols[indx++] = (2*k+1)*m+j;
 
  452             buffer.
fPols[indx++] = nz*2*m+(2*k + 3)*n+j;
 
  453             buffer.
fPols[indx++] = (2*k+ 3)*m+j;
 
  454             buffer.
fPols[indx++] = nz*2*m+(2*k+3)*n+j+1;
 
  459             buffer.
fPols[indx++] = 4;
 
  460             buffer.
fPols[indx++] = 2*k*m+j;
 
  461             buffer.
fPols[indx++] = nz*2*m+(2*k+2)*n+j;
 
  462             buffer.
fPols[indx++] = (2*k+2)*m+j;
 
  463             buffer.
fPols[indx++] = nz*2*m+(2*k+2)*n;
 
  465             buffer.
fPols[indx++] = c+1;
 
  466             buffer.
fPols[indx++] = 4;
 
  467             buffer.
fPols[indx++] = (2*k+1)*m+j;
 
  468             buffer.
fPols[indx++] = nz*2*m+(2*k+3)*n+j;
 
  469             buffer.
fPols[indx++] = (2*k+3)*m+j;
 
  470             buffer.
fPols[indx++] = nz*2*m+(2*k+3)*n;
 
  478          for (k = 0; k < (nz-1); k++) {
 
  479             buffer.
fPols[indx++] = c+2;
 
  480             buffer.
fPols[indx++] = 4;
 
  481             buffer.
fPols[indx++] = k==0 ? indx2 : indx2+2*nz*n+2*(k-1);
 
  482             buffer.
fPols[indx++] = indx2+2*(k+1)*n;
 
  483             buffer.
fPols[indx++] = indx2+2*nz*n+2*k;
 
  484             buffer.
fPols[indx++] = indx2+(2*k+3)*n;
 
  486             buffer.
fPols[indx++] = c+2;
 
  487             buffer.
fPols[indx++] = 4;
 
  488             buffer.
fPols[indx++] = k==0 ? indx2+n-1 : indx2+2*nz*n+2*(k-1)+1;
 
  489             buffer.
fPols[indx++] = indx2+(2*k+3)*n+n-1;
 
  490             buffer.
fPols[indx++] = indx2+2*nz*n+2*k+1;
 
  491             buffer.
fPols[indx++] = indx2+2*(k+1)*n+n-1;
 
  494          buffer.
fPols[indx-8] = indx2+
n;
 
  495          buffer.
fPols[indx-2] = indx2+2*n-1;
 
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a PSPHE. 
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void Sizeof3D() const 
Return total X3D needed by TNode::ls (when called with option "x") 
Buffer base class used for serializing objects. 
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
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 Int_t GetNumberOfDivisions() const 
void SetSectionsValid(UInt_t mask)
Int_t ShapeDistancetoPrimitive(Int_t numPoints, Int_t px, Int_t py)
Distance to primitive. 
virtual void MakeTableOfCoSin() const 
Make table of sine and cosine. 
This is the base class for all geometry shapes. 
void TransformPoints(Double_t *points, UInt_t NbPnts) const 
Transform points (LocalToMaster) 
virtual void SetEllipse(const Float_t *factors)
Set ellipse. 
Int_t GetBasicColor() const 
Get basic color. 
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. 
Double_t * fCoTab
Table of sin(fPhimin) .... sin(Phi) 
Generic 3D primitive description class. 
virtual const TBuffer3D & GetBuffer3D(Int_t reqSections) const 
Get buffer 3d. 
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
virtual ~TSPHE()
SPHE shape default destructor. 
Double_t * fCoThetaTab
Table of cos(fPhimin) .... cos(Phi) 
Int_t fNdiv
Table of sin(gThemin) .... cos(Theta) 
virtual void SetPoints(Double_t *points) const 
Create SPHE points. 
virtual void SetNumberOfDivisions(Int_t p)
Set number of divisions. 
Double_t Sqrt(Double_t x)
Float_t fAspectRatio
number of sections 
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
Bool_t SectionsValid(UInt_t mask) const