00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TTUBE
00013 #define ROOT_TTUBE
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef ROOT_TShape
00027 #include "TShape.h"
00028 #endif
00029
00030
00031 const Int_t kDivNum = 20;
00032
00033
00034 class TTUBE : public TShape {
00035 protected:
00036
00037 Float_t fRmin;
00038 Float_t fRmax;
00039
00040 Float_t fDz;
00041 Int_t fNdiv;
00042
00043 Float_t fAspectRatio;
00044
00045
00046 mutable Double_t *fSiTab;
00047 mutable Double_t *fCoTab;
00048
00049 TTUBE(const TTUBE&);
00050 TTUBE& operator=(const TTUBE&);
00051
00052 virtual void MakeTableOfCoSin() const;
00053 virtual void SetPoints(Double_t *points) const;
00054 virtual void SetSegsAndPols(TBuffer3D & buffer) const;
00055
00056 public:
00057 TTUBE();
00058 TTUBE(const char *name, const char *title, const char *material, Float_t rmin, Float_t rmax, Float_t dz, Float_t aspect=1);
00059 TTUBE(const char *name, const char *title, const char *material, Float_t rmax, Float_t dz);
00060 virtual ~TTUBE();
00061
00062 virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
00063 virtual const TBuffer3D &GetBuffer3D(Int_t reqSections) const;
00064 virtual Float_t GetRmin() const {return fRmin;}
00065 virtual Float_t GetRmax() const {return fRmax;}
00066 virtual Float_t GetDz() const {return fDz;}
00067 virtual Int_t GetNdiv() const {return fNdiv;}
00068 virtual Float_t GetAspectRatio() const {return fAspectRatio;}
00069 virtual Int_t GetNumberOfDivisions () const {if (fNdiv) return fNdiv; else return kDivNum;}
00070 virtual void SetNumberOfDivisions (Int_t ndiv);
00071 virtual void SetAspectRatio(Float_t factor=1){fAspectRatio = factor;}
00072 virtual void Sizeof3D() const;
00073
00074 ClassDef(TTUBE,3)
00075 };
00076
00077 #endif