// @(#)root/g3d:$Name: $:$Id: TCONE.cxx,v 1.4 2005/03/09 18:19:26 brun Exp $ // Author: Nenad Buncic 18/09/95 /************************************************************************* * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * For the licensing terms see $ROOTSYS/LICENSE. * * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ #include "TCONE.h" #include "TNode.h" ClassImp(TCONE) //______________________________________________________________________________ //
 
 
// CONE is a conical tube. It has 8 parameters:
//
//     - name       name of the shape
//     - title      shape's title
//     - material  (see TMaterial)
//     - dz         half-length in z
//     - rmin1      inside radius at -DZ in z
//     - rmax1      outside radius at -DZ in z
//     - rmin2      inside radius at +DZ in z
//     - rmax2      outside radius at +DZ in z
//______________________________________________________________________________
 TCONE::TCONE()
{
   // CONE shape default constructor
}
//______________________________________________________________________________
 TCONE::TCONE(const char *name, const char *title, const char *material, Float_t dz,
             Float_t rmin1, Float_t rmax1,
             Float_t rmin2, Float_t rmax2)
      : TTUBE(name, title,material,rmin1,rmax1,dz)
{
   // CONE shape normal constructor
   fRmin2 = rmin2;
   fRmax2 = rmax2;
}
//______________________________________________________________________________
 TCONE::TCONE(const char *name, const char *title, const char *material, Float_t dz, Float_t rmax1
            , Float_t rmax2) : TTUBE(name, title,material,0,rmax1,dz)
{
   // CONE shape "simplified" constructor
   fRmin2 = 0;
   fRmax2 = rmax2;
}
//______________________________________________________________________________
 TCONE::~TCONE()
{
   // CONE shape default destructor
}
//______________________________________________________________________________
 void TCONE::SetPoints(Double_t *points) const
{
   // Create CONE points
   Double_t rmin1, rmax1, dz;
   Int_t j, n;
   n = GetNumberOfDivisions();
   rmin1 = TTUBE::fRmin;
   rmax1 = TTUBE::fRmax;
   dz    = TTUBE::fDz;
   Int_t indx = 0;
   if (!fCoTab) MakeTableOfCoSin();
   if (points) {
      for (j = 0; j < n; j++) {
         points[indx++] = rmin1 * fCoTab[j];
         points[indx++] = rmin1 * fSiTab[j];
         points[indx++] = -dz;
      }
      for (j = 0; j < n; j++) {
         points[indx++] = rmax1 * fCoTab[j];
         points[indx++] = rmax1 * fSiTab[j];
         points[indx++] = -dz;
      }
      for (j = 0; j < n; j++) {
         points[indx++] = fRmin2 * fCoTab[j];
         points[indx++] = fRmin2 * fSiTab[j];
         points[indx++] = dz;
      }
      for (j = 0; j < n; j++) {
         points[indx++] = fRmax2 * fCoTab[j];
         points[indx++] = fRmax2 * fSiTab[j];
         points[indx++] = dz;
      }
   }
}