#ifndef ROOT_TGeoArb8
#define ROOT_TGeoArb8
#ifndef ROOT_TGeoBBox
#include "TGeoBBox.h"
#endif
class TGeoArb8 : public TGeoBBox
{
protected:
enum EGeoArb8Type {
kArb8Trap = BIT(27),
kArb8Tra = BIT(28)
};
Double_t fDz;
Double_t *fTwist;
Double_t fXY[8][2];
TGeoArb8(const TGeoArb8&);
TGeoArb8& operator=(const TGeoArb8&);
public:
TGeoArb8();
TGeoArb8(Double_t dz, Double_t *vertices=0);
TGeoArb8(const char *name, Double_t dz, Double_t *vertices=0);
virtual ~TGeoArb8();
virtual Double_t Capacity() const;
virtual void ComputeBBox();
virtual void ComputeNormal(Double_t *point, Double_t *dir, Double_t *norm);
void ComputeTwist();
virtual Bool_t Contains(Double_t *point) const;
Double_t DistToPlane(Double_t *point, Double_t *dir, Int_t ipl, Bool_t in) const;
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 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 {return 100;}
virtual Bool_t GetPointsOnFacet(Int_t , Int_t , Double_t * ) const;
Double_t GetDz() const {return fDz;}
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 {return 0;}
static void GetPlaneNormal(Double_t *p1, Double_t *p2, Double_t *p3, Double_t *norm);
Double_t *GetVertices() {return &fXY[0][0];}
Double_t GetTwist(Int_t iseg) const;
virtual Bool_t IsCylType() const {return kFALSE;}
static Bool_t IsSamePoint(Double_t *p1, Double_t *p2) {return ((p1[0]==p2[0]) && (p1[1]==p2[1]))?kTRUE:kFALSE;}
static Bool_t InsidePolygon(Double_t x, Double_t y, Double_t *pts);
virtual void InspectShape() const;
Bool_t IsTwisted() const {return (fTwist==0)?kFALSE:kTRUE;}
Double_t SafetyToFace(Double_t *point, Int_t iseg, Bool_t in) const;
virtual Double_t Safety(Double_t *point, Bool_t in=kTRUE) const;
virtual void SavePrimitive(ostream &out, Option_t *option = "");
void SetPlaneVertices(Double_t zpl, Double_t *vertices) const;
virtual void SetVertex(Int_t vnum, Double_t x, Double_t y);
virtual void SetDimensions(Double_t *param);
void SetDz(Double_t dz) {fDz = dz;}
virtual void SetPoints(Double_t *points) const;
virtual void SetPoints(Float_t *points) const;
virtual void Sizeof3D() const;
ClassDef(TGeoArb8, 1)
};
class TGeoTrap : public TGeoArb8
{
protected:
Double_t fTheta;
Double_t fPhi;
Double_t fH1;
Double_t fBl1;
Double_t fTl1;
Double_t fAlpha1;
Double_t fH2;
Double_t fBl2;
Double_t fTl2;
Double_t fAlpha2;
public:
TGeoTrap();
TGeoTrap(Double_t dz, Double_t theta, Double_t phi);
TGeoTrap(Double_t dz, Double_t theta, Double_t phi, Double_t h1,
Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2,
Double_t tl2, Double_t alpha2);
TGeoTrap(const char *name, Double_t dz, Double_t theta, Double_t phi, Double_t h1,
Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2,
Double_t tl2, Double_t alpha2);
virtual ~TGeoTrap();
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);
Double_t GetTheta() const {return fTheta;}
Double_t GetPhi() const {return fPhi;}
Double_t GetH1() const {return fH1;}
Double_t GetBl1() const {return fBl1;}
Double_t GetTl1() const {return fTl1;}
Double_t GetAlpha1() const {return fAlpha1;}
Double_t GetH2() const {return fH2;}
Double_t GetBl2() const {return fBl2;}
Double_t GetTl2() const {return fTl2;}
Double_t GetAlpha2() const {return fAlpha2;}
virtual TGeoShape *GetMakeRuntimeShape(TGeoShape *mother, TGeoMatrix *mat) const;
virtual void SetDimensions(Double_t *param);
virtual Double_t Safety(Double_t *point, Bool_t in=kTRUE) const;
virtual void SavePrimitive(ostream &out, Option_t *option = "");
ClassDef(TGeoTrap, 1)
};
class TGeoGtra : public TGeoTrap
{
protected:
Double_t fTwistAngle;
public:
TGeoGtra();
TGeoGtra(Double_t dz, Double_t theta, Double_t phi, Double_t twist, Double_t h1,
Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2,
Double_t tl2, Double_t alpha2);
TGeoGtra(const char *name, Double_t dz, Double_t theta, Double_t phi, Double_t twist, Double_t h1,
Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2,
Double_t tl2, Double_t alpha2);
virtual ~TGeoGtra();
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 TGeoShape *GetMakeRuntimeShape(TGeoShape *mother, TGeoMatrix *mat) const;
Double_t GetTwistAngle() const {return fTwistAngle;}
virtual void SetDimensions(Double_t *param);
virtual void SavePrimitive(ostream &out, Option_t *option = "");
ClassDef(TGeoGtra, 1)
};
#endif
Last change: Wed Aug 6 08:06:47 2008
Last generated: 2008-08-06 08:06
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.