Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

TGeoPcon.h

Go to the documentation of this file.
00001 // @(#)root/geom:$Name:  $:$Id: TGeoPcon.h,v 1.8 2003/03/14 11:49:02 brun Exp $
00002 // Author: Andrei Gheata   24/10/01
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #ifndef ROOT_TGeoPcon
00013 #define ROOT_TGeoPcon
00014 
00015 #ifndef ROOT_TGeoBBox
00016 #include "TGeoBBox.h"
00017 #endif
00018 
00019   
00020 /*************************************************************************
00021  * TGeoPcon - a composite polycone. It has at least 9 parameters :
00022  *            - the lower phi limit;
00023  *            - the range in phi;
00024  *            - the number of z planes (at least two) where the inner/outer 
00025  *              radii are changing;
00026  *            - z coordinate, inner and outer radius for each z plane
00027  *
00028  *************************************************************************/
00029 
00030 class TGeoPcon : public TGeoBBox
00031 {
00032 protected:
00033    // data members
00034    Int_t                 fNz;    // number of z planes (at least two)
00035    Double_t              fPhi1;  // lower phi limit 
00036    Double_t              fDphi;  // phi range
00037    Double_t             *fRmin;  //[fNz] pointer to array of inner radii 
00038    Double_t             *fRmax;  //[fNz] pointer to array of outer radii 
00039    Double_t             *fZ;     //[fNz] pointer to array of Z planes positions 
00040 public:
00041    // constructors
00042    TGeoPcon();
00043    TGeoPcon(Double_t phi, Double_t dphi, Int_t nz);
00044    TGeoPcon(const char *name, Double_t phi, Double_t dphi, Int_t nz);
00045    TGeoPcon(Double_t *params);
00046    // destructor
00047    virtual ~TGeoPcon();
00048    // methods
00049    virtual void          ComputeBBox();
00050    virtual Bool_t        Contains(Double_t *point) const;
00051    virtual void          DefineSection(Int_t snum, Double_t z, Double_t rmin, Double_t rmax);
00052    virtual Double_t      DistToOut(Double_t *point, Double_t *dir, Int_t iact=1, 
00053                                    Double_t step=0, Double_t *safe=0) const;
00054    virtual Double_t      DistToIn(Double_t *point, Double_t *dir, Int_t iact=1, 
00055                                    Double_t step=0, Double_t *safe=0) const;
00056    Double_t              DistToSegZ(Double_t *point, Double_t *dir, Int_t &iz, Double_t c1, Double_t s1,
00057                                     Double_t c2, Double_t s2, Double_t cfio, Double_t sfio, Double_t cdfi) const;
00058    virtual Int_t         DistancetoPrimitive(Int_t px, Int_t py);
00059    virtual Double_t      DistToSurf(Double_t *point, Double_t *dir) const;
00060    virtual TGeoVolume   *Divide(TGeoVolume *voldiv, const char *divname, Int_t iaxis, Int_t ndiv, 
00061                                 Double_t start, Double_t step);
00062    virtual const char   *GetAxisName(Int_t iaxis) const;
00063    virtual Double_t      GetAxisRange(Int_t iaxis, Double_t &xlo, Double_t &xhi) const;
00064    virtual void          GetBoundingCylinder(Double_t *param) const;
00065    virtual Int_t         GetByteCount() const {return 60+12*fNz;}
00066    Double_t              GetPhi1() const {return fPhi1;}
00067    Double_t              GetDphi() const {return fDphi;}
00068    Int_t                 GetNz() const   {return fNz;}
00069    virtual Int_t         GetNsegments() const;
00070    Double_t             *GetRmin() const {return fRmin;}
00071    Double_t             *GetRmax() const {return fRmax;}
00072    Double_t             *GetZ() const    {return fZ;}
00073    virtual TGeoShape    *GetMakeRuntimeShape(TGeoShape * /*mother*/, TGeoMatrix * /*mat*/) const {return 0;}
00074    virtual void          InspectShape() const;
00075    virtual Bool_t        IsCylType() const {return kTRUE;}
00076    virtual void         *Make3DBuffer(const TGeoVolume *vol) const;
00077    virtual void          NextCrossing(TGeoParamCurve *c, Double_t *point) const;
00078    virtual void          Paint(Option_t *option);
00079    virtual void          PaintNext(TGeoHMatrix *glmat, Option_t *option);
00080    virtual Double_t      Safety(Double_t *point, Bool_t in=kTRUE) const;
00081    virtual void          SetDimensions(Double_t *param);
00082    virtual void          SetPoints(Double_t *buff) const;
00083    virtual void          SetPoints(Float_t *buff) const;
00084    virtual void          Sizeof3D() const;
00085 
00086   ClassDef(TGeoPcon, 1)         // polycone class 
00087 };
00088 
00089 #endif

Generated on Thu Dec 18 14:52:19 2003 for ROOT by doxygen1.2.16