library: libGeom #include "TGeoBBox.h"

# TGeoBBox

class description - source file - inheritance tree (.pdf)

## class TGeoBBox : public TGeoShape

| Inheritance Chart:

`TObject`

<-

`TNamed`

<-

`TGeoShape`

<-

`TGeoBBox`

<-

`TGeoArb8`

<-

`TGeoTrap`

<-

`TGeoGtra` |

`TGeoCompositeShape` |

`TGeoCone`

<-

`TGeoConeSeg` |

`TGeoHalfSpace` |

`TGeoPara` |

`TGeoParaboloid` |

`TGeoPcon` |

[more...]

        protected:

          virtual void FillBuffer3D(TBuffer3D& buffer, Int_t reqSections, Bool_t localFrame) const

        public:

                                   TGeoBBox()
                                   TGeoBBox(Double_t dx, Double_t dy, Double_t dz, Double_t* origin = 0)
                                   TGeoBBox(const char* name, Double_t dx, Double_t dy, Double_t dz, Double_t* origin = 0)
                                   TGeoBBox(Double_t* param)
                                   TGeoBBox(const TGeoBBox&)
                           virtual ~TGeoBBox()
                    static TClass* Class()
                      virtual void ComputeBBox()
                      virtual void ComputeNormal(Double_t* point, Double_t* dir, Double_t* norm)
                    virtual Bool_t Contains(Double_t* point) const
                    virtual Bool_t CouldBeCrossed(Double_t* point, Double_t* dir) const
                     virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
                  virtual Double_t DistFromInside(Double_t* point, Double_t* dir, Int_t iact = 1, Double_t step = TGeoShape::Big(), Double_t* safe = 0) const
                  virtual Double_t DistFromOutside(Double_t* point, Double_t* dir, Int_t iact = 1, Double_t step = TGeoShape::Big(), Double_t* safe = 0) const
               virtual TGeoVolume* Divide(TGeoVolume* voldiv, const char* divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step)
               virtual const char* GetAxisName(Int_t iaxis) const
                  virtual Double_t GetAxisRange(Int_t iaxis, Double_t& xlo, Double_t& xhi) const
                      virtual void GetBoundingCylinder(Double_t* param) const
          virtual const TBuffer3D& GetBuffer3D(Int_t reqSections, Bool_t localFrame) const
                     virtual Int_t GetByteCount() const
                  virtual Double_t GetDX() const
                  virtual Double_t GetDY() const
                  virtual 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* mother, TGeoMatrix* mat) const
                     virtual Int_t GetNmeshVertices() const
           virtual const Double_t* GetOrigin() const
                      virtual void InspectShape() const
                   virtual TClass* IsA() const
                    virtual Bool_t IsCylType() const
                    virtual Bool_t IsNullBox() const
                    virtual Bool_t IsValidBox() const
                virtual TBuffer3D* MakeBuffer3D() const
                         TGeoBBox& operator=(const TGeoBBox&)
                  virtual Double_t Safety(Double_t* point, Bool_t in = kTRUE) const
                      virtual void SavePrimitive(ofstream& out, Option_t* option)
                              void SetBoxDimensions(Double_t dx, Double_t dy, Double_t dz, Double_t* origin = 0)
                              void SetBoxPoints(Double_t* points) const
                      virtual void SetDimensions(Double_t* param)
                      virtual void SetPoints(Double_t* points) const
                      virtual void SetPoints(Float_t* points) const
                      virtual void SetSegsAndPols(TBuffer3D& buffer) const
                      virtual void ShowMembers(TMemberInspector& insp, char* parent)
                      virtual void Sizeof3D() const
                      virtual void Streamer(TBuffer& b)
                              void StreamerNVirtual(TBuffer& b)

### Data Members

        protected:

          Double_t fDX         X half-length
          Double_t fDY         Y half-length
          Double_t fDZ         Z half-length
          Double_t fOrigin[3]  box origin

## Class Description

TGeoBBox()

     Default constructor

TGeoBBox(Double_t dx, Double_t dy, Double_t dz, Double_t *origin) :TGeoShape("")

     Constructor

TGeoBBox(const char *name, Double_t dx, Double_t dy, Double_t dz, Double_t *origin) :TGeoShape(name)

     Constructor

TGeoBBox(Double_t *param) :TGeoShape("")

     constructor based on the array of parameters
     param[0] - half-length in x
     param[1] - half-length in y
     param[2] - half-length in z

~TGeoBBox()

     Destructor

void ComputeNormal(Double_t *point, Double_t *dir, Double_t *norm)

     Compute normal to closest surface from POINT.

Bool_t CouldBeCrossed(Double_t *point, Double_t *dir) const

     decide fast if the bounding box could be crossed by a vector

Int_t DistancetoPrimitive(Int_t px, Int_t py)

     compute closest distance from point px,py to each corner

TGeoVolume* Divide(TGeoVolume *voldiv, const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step)

    --- Divide this box shape belonging to volume "voldiv" into ndiv equal volumes
     called divname, from start position with the given step. Returns pointer
     to created division cell volume. In case a wrong division axis is supplied,
     returns pointer to volume to be divided.

void ComputeBBox()

     compute bounding box - already computed in this case

Bool_t Contains(Double_t *point) const

     test if point is inside this shape

Double_t DistFromInside(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 box.
     Boundary safe algorithm.

Double_t DistFromOutside(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 box.
     Boundary safe algorithm.

const char* GetAxisName(Int_t iaxis) const

     Returns name of axis IAXIS.

Double_t GetAxisRange(Int_t iaxis, Double_t &xlo, Double_t &xhi) const

     Get range of shape for a given axis.

void GetBoundingCylinder(Double_t *param) const

    --- Fill vector param[4] with the bounding cylinder parameters. The order
     is the following : Rmin, Rmax, Phi1, Phi2

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 one. Returns 0 if successfull.

TGeoShape* GetMakeRuntimeShape(TGeoShape *mother, TGeoMatrix *mat) const

     in case shape has some negative parameters, these has to be computed
     in order to fit the mother

void InspectShape() const

     print shape parameters

TBuffer3D* MakeBuffer3D() const

     Creates a TBuffer3D describing *this* shape.
     Coordinates are in local reference frame.

void SetSegsAndPols(TBuffer3D &buff) const

     Fill TBuffer3D structure for segments and polygons.

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 SavePrimitive(ofstream &out, Option_t * /*option*/)

     Save a primitive as a C++ statement(s) on output stream "out".

void SetBoxDimensions(Double_t dx, Double_t dy, Double_t dz, Double_t *origin)

     set parameters of box

void SetDimensions(Double_t *param)

     constructor based on the array of parameters
     param[0] - half-length in x
     param[1] - half-length in y
     param[2] - half-length in z

void SetBoxPoints(Double_t *points) const

void SetPoints(Double_t *points) const

     create box points

void SetPoints(Float_t *points) const

     create box points

void Sizeof3D() const

    /// fill size of this 3-D object
    /    TVirtualGeoPainter *painter = gGeoManager->GetGeomPainter();
    /    if (painter) painter->AddSize3D(8, 12, 6);

const TBuffer3D& GetBuffer3D(Int_t reqSections, Bool_t localFrame) const

void FillBuffer3D(TBuffer3D & buffer, Int_t reqSections, Bool_t localFrame) const

     Fill the supplied buffer, with sections in desired frame
     See TBuffer3D.h for explanation of sections, frame etc.

### Inline Functions

                      Int_t GetByteCount() const
                      Int_t GetNmeshVertices() const
                   Double_t GetDX() const
                   Double_t GetDY() const
                   Double_t GetDZ() const
            const Double_t* GetOrigin() const
                     Bool_t IsCylType() const
                     Bool_t IsValidBox() const
                     Bool_t IsNullBox() const
                    TClass* Class()
                    TClass* IsA() const
                       void ShowMembers(TMemberInspector& insp, char* parent)
                       void Streamer(TBuffer& b)
                       void StreamerNVirtual(TBuffer& b)
                   TGeoBBox TGeoBBox(const TGeoBBox&)
                  TGeoBBox& operator=(const TGeoBBox&)

Last update: root/geom:$Name: $:$Id: TGeoBBox.cxx,v 1.45 2005/06/13 12:17:32 brun Exp $// Author: Andrei Gheata 24/10/01
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *