TGeoArb8
class description - source file - inheritance tree
    public:
                 TGeoArb8 TGeoArb8()
                 TGeoArb8 TGeoArb8(Double_t dz, Double_t* vertices = 0)
                 TGeoArb8 TGeoArb8(const char* name, Double_t dz, Double_t* vertices = 0)
                 TGeoArb8 TGeoArb8(const TGeoArb8&)
             virtual void ~TGeoArb8()
           static TClass* Class()
             virtual void ComputeBBox()
                     void ComputeTwist()
           virtual Bool_t Contains(Double_t* point) const
         virtual Double_t DistToIn(Double_t* point, Double_t* dir, Int_t iact = 1, Double_t step = 0, Double_t* safe = 0) const
         virtual Double_t DistToOut(Double_t* point, Double_t* dir, Int_t iact = 1, Double_t step = 0, Double_t* safe = 0) const
                 Double_t DistToPlane(Double_t* point, Double_t* dir, Int_t ipl, Bool_t in) const
         virtual Double_t DistToSurf(Double_t* point, Double_t* dir) const
      virtual TGeoVolume* Divide(TGeoVolume* voldiv, const char* divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step)
         virtual Double_t GetAxisRange(Int_t iaxis, Double_t& xlo, Double_t& xhi) const
             virtual void GetBoundingCylinder(Double_t* param) const
            virtual Int_t GetByteCount() const
                 Double_t GetDz() const
            virtual Int_t GetFittingBox(const TGeoBBox* parambox, TGeoMatrix* mat, Double_t& dx, Double_t& dy, Double_t& dz) const
       virtual TGeoShape* GetMakeRuntimeShape(TGeoShape*, TGeoMatrix*) const
                Double_t* GetVertices()
             virtual void InspectShape() const
          virtual TClass* IsA() const
           virtual Bool_t IsCylType() const
                   Bool_t IsTwisted() const
             virtual void NextCrossing(TGeoParamCurve* c, Double_t* point) const
         virtual Double_t Safety(Double_t* point, Bool_t in = kTRUE) const
             virtual void SetDimensions(Double_t* param)
                     void SetPlaneVertices(Double_t zpl, Double_t* vertices) const
             virtual void SetPoints(Double_t* buff) const
             virtual void SetPoints(Float_t* buff) const
             virtual void SetVertex(Int_t vnum, Double_t x, Double_t y)
             virtual void ShowMembers(TMemberInspector& insp, char* parent)
             virtual void Sizeof3D() const
             virtual void Streamer(TBuffer& b)
                     void StreamerNVirtual(TBuffer& b)
    protected:
       Double_t fDz        half length in Z
      Double_t* fTwist     ! [4] tangents of twist angles 
       Double_t fXY[8][2]  list of vertices
    public:
      static const TGeoArb8::EGeoArb8Type kArb8Trap  
      static const TGeoArb8::EGeoArb8Type kArb8Tra   
See also
- 
TGeoTrap
 TGeoArb8 - a arbitrary trapezoid with less than 8 vertices standing on
   two paralel planes perpendicular to Z axis. Parameters :
            - dz - half length in Z;
            - xy[8][2] - vector of (x,y) coordinates of vertices
               - first four points (xy[i][j], i<4, j<2) are the (x,y)
                 coordinates of the vertices sitting on the -dz plane;
               - last four points (xy[i][j], i>=4, j<2) are the (x,y)
                 coordinates of the vertices sitting on the +dz plane;
   The order of defining the vertices of an arb8 is the following :
      - point 0 is connected with points 1,3,4
      - point 1 is connected with points 0,2,5
      - point 2 is connected with points 1,3,6
      - point 3 is connected with points 0,2,7
      - point 4 is connected with points 0,5,7
      - point 5 is connected with points 1,4,6
      - point 6 is connected with points 2,5,7
      - point 7 is connected with points 3,4,6
   Points can be identical in order to create shapes with less than
   8 vertices.
 TGeoArb8()
 dummy ctor
 TGeoArb8(Double_t dz, Double_t *vertices)
         :TGeoBBox(0,0,0)
 constructor. If the array of vertices is not null, this should be
 in the format : (x0, y0, x1, y1, ... , x7, y7)
 TGeoArb8(const char *name, Double_t dz, Double_t *vertices)
         :TGeoBBox(name, 0,0,0)
 constructor. If the array of vertices is not null, this should be
 in the format : (x0, y0, x1, y1, ... , x7, y7)
 ~TGeoArb8()
 destructor
void ComputeBBox()
 compute bounding box for a Arb8
void ComputeTwist()
 compute tangents of twist angles (angles between projections on XY plane
 of corresponding -dz +dz edges). Called after last point [7] was set.
Bool_t Contains(Double_t *point) const
 test if point is inside this sphere
 first check Z range
Double_t DistToPlane(Double_t *point, Double_t *dir, Int_t ipl, Bool_t in) const 
 compute distance to plane ipl :
 ipl=0 : points 0,4,1,5
 ipl=1 : points 1,5,2,6
 ipl=2 : points 2,6,3,7
 ipl=3 : points 3,7,0,4
Double_t DistToIn(Double_t *point, Double_t *dir, Int_t /*iact*/, Double_t /*step*/, Double_t * /*safe*/) const
 compute distance from outside point to surface of the arb8
Double_t DistToOut(Double_t *point, Double_t *dir, Int_t /*iact*/, Double_t /*step*/, Double_t * /*safe*/) const
 compute distance from inside point to surface of the arb8
Double_t DistToSurf(Double_t * /*point*/, Double_t * /*dir*/) const
 computes the distance to next surface of the sphere along a ray
 starting from given point to the given direction.
TGeoVolume* Divide(TGeoVolume *voldiv, const char * /*divname*/, Int_t /*iaxis*/, Int_t /*ndiv*/, 
                             Double_t /*start*/, Double_t /*step*/) 
Double_t GetAxisRange(Int_t iaxis, Double_t &xlo, Double_t &xhi) const
void GetBoundingCylinder(Double_t *param) const
--- Fill vector param[4] with the bounding cylinder parameters. The order
 is the following : Rmin, Rmax, Phi1, Phi2
--- first compute rmin/rmax
Int_t GetFittingBox(const TGeoBBox *parambox, TGeoMatrix *mat, Double_t &dx, Double_t &dy, Double_t &dz) const
 Fills real parameters of a positioned box inside this arb8. Returns 0 if successfull.
void InspectShape() const
 print shape parameters
void NextCrossing(TGeoParamCurve * /*c*/, Double_t * /*point*/) const
 computes next intersection point of curve c with this shape
Double_t Safety(Double_t * /*point*/, Bool_t /*in*/) const
 computes the closest distance from given point to this shape, according
 to option. The matching point on the shape is stored in spoint.
void SetPlaneVertices(Double_t zpl, Double_t *vertices) const
 compute intersection points between plane at zpl and non-horizontal edges
void SetDimensions(Double_t *param)
 set arb8 params in one step :
void SetPoints(Double_t *buff) const
 create arb8 mesh points
void SetPoints(Float_t *buff) const
 create arb8 mesh points
void SetVertex(Int_t vnum, Double_t x, Double_t y)
  set values for a given vertex
void Sizeof3D() const
 fill size of this 3-D object
Inline Functions
              Int_t GetByteCount() const
           Double_t GetDz() const
         TGeoShape* GetMakeRuntimeShape(TGeoShape*, TGeoMatrix*) const
          Double_t* GetVertices()
             Bool_t IsCylType() const
             Bool_t IsTwisted() const
            TClass* Class()
            TClass* IsA() const
               void ShowMembers(TMemberInspector& insp, char* parent)
               void Streamer(TBuffer& b)
               void StreamerNVirtual(TBuffer& b)
           TGeoArb8 TGeoArb8(const TGeoArb8&)
Author: Andrei Gheata 31/01/02
Last update: root/geom:$Name:  $:$Id: TGeoArb8.cxx,v 1.22 2003/03/14 11:49:02 brun Exp $
Copyright  (C) 1995-2000, Rene Brun and Fons Rademakers.               *
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.