#ifndef ROOT_TPCON
#define ROOT_TPCON
#ifndef ROOT_TShape
#include "TShape.h"
#endif
const Int_t kDiv = 20;
class TPCON : public TShape {
protected:
mutable Double_t *fSiTab;
mutable Double_t *fCoTab;
Float_t fPhi1;
Float_t fDphi1;
Int_t fNdiv;
Int_t fNz;
Float_t *fRmin;
Float_t *fRmax;
Float_t *fDz;
TPCON(const TPCON&);
TPCON& operator=(const TPCON&);
virtual void MakeTableOfCoSin() const;
virtual void FillTableOfCoSin(Double_t phi, Double_t angstep,Int_t n) const;
virtual void SetPoints(Double_t *points) const;
virtual Bool_t SetSegsAndPols(TBuffer3D & buffer) const;
public:
TPCON();
TPCON(const char *name, const char *title, const char *material, Float_t phi1, Float_t dphi1, Int_t nz);
virtual ~TPCON();
virtual void DefineSection(Int_t secNum, Float_t z, Float_t rmin, Float_t rmax);
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
virtual const TBuffer3D &GetBuffer3D(Int_t reqSections) const;
virtual Int_t GetNumberOfDivisions () const {if (fNdiv) return fNdiv; else return kDiv;}
virtual Float_t GetPhi1() const {return fPhi1;}
virtual Float_t GetDhi1() const {return fDphi1;}
virtual Int_t GetNz() const {return fNz;}
virtual Float_t *GetRmin() const {return fRmin;}
virtual Float_t *GetRmax() const {return fRmax;}
virtual Float_t *GetDz() const {return fDz;}
virtual Int_t GetNdiv() const {return fNdiv;}
virtual void SetNumberOfDivisions (Int_t p);
virtual void Sizeof3D() const;
ClassDef(TPCON,2)
};
#endif