// @(#)root/g3d:$Name: $:$Id: TCONS.cxx,v 1.3 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 "TCONS.h" #include "TNode.h" ClassImp(TCONS) //______________________________________________________________________________ //
// CONS is a segment of a conical tube. It has 10 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
// - phi1 starting angle of the segment
// - phi2 ending angle of the segment
//
//
// NOTE: phi1 should be smaller than phi2. If this is not the case,
// the system adds 360 degrees to phi2.
//______________________________________________________________________________
TCONS::TCONS()
{
// CONS shape default constructor
}
//______________________________________________________________________________
TCONS::TCONS(const char *name, const char *title, const char *material, Float_t dz, Float_t rmin1, Float_t rmax1, Float_t rmin2, Float_t rmax2,
Float_t phi1, Float_t phi2)
: TTUBS(name,title,material,rmin1,rmax1,dz,phi1,phi2)
{
// CONS shape normal constructor
fRmin2 = rmin2;
fRmax2 = rmax2;
}
//______________________________________________________________________________
TCONS::TCONS(const char *name, const char *title, const char *material, Float_t rmax1, Float_t dz
, Float_t phi1, Float_t phi2, Float_t rmax2)
: TTUBS(name,title,material,rmax1,dz,phi1,phi2)
{
// CONS shape normal constructor
fRmin2 = 0;
fRmax2 = rmax2;
}
//______________________________________________________________________________
TCONS::~TCONS()
{
// CONS shape default destructor
}
//______________________________________________________________________________
void TCONS::SetPoints(Double_t *points) const
{
// Create CONS points
Int_t j, n;
Float_t rmin1, rmax1, dz;
n = GetNumberOfDivisions()+1;
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;
}
}
}