ROOT   Reference Guide
Searching...
No Matches
TGeoXtru Class Reference

An extrusion with fixed outline shape in x-y and a sequence of z extents (segments).

The overall scale of the outline scales linearly between z points and the center can have an x-y offset.

Based on the initial implementation of R. Hatcher

### Creation of TGeoXtru shape

A TGeoXtru represents a polygonal extrusion. It is defined by the:

1. 'Blueprint' of the arbitrary polygon representing any Z section. This is an arbitrary polygon (convex or not) defined by the X/Y positions of its vertices.
1. A sequence of Z sections ordered on the Z axis. Each section defines the 'actual' parameters of the polygon at a given Z. The sections may be translated with respect to the blueprint and/or scaled. The TGeoXtru segment in between 2 Z sections is a solid represented by the linear extrusion between the 2 polygons. Two consecutive sections may be defined at same Z position.
1. TGeoXtru *xtru = TGeoXtru(Int_t nz);

where nz=number of Z planes

2. Double_t x[nvertices]; // array of X positions of blueprint polygon vertices

Double_t y[nvertices]; // array of Y positions of blueprint polygon vertices

3. xtru->DefinePolygon(nvertices,x,y);
4. DefineSection(0, z0, x0, y0, scale0); // Z position, offset and scale for first section

‘DefineSection(1, z1, x1, y1, scale1); // -’'- second section .... DefineSection(nz-1, zn, xn, yn, scalen); // parameters for last section

#### NOTES

Currently navigation functionality not fully implemented (only Contains()). Decomposition in concave polygons not implemented - drawing in solid mode within x3d produces incorrect end-faces

Definition at line 22 of file TGeoXtru.h.

## Public Member Functions

TGeoXtru ()
dummy ctor

TGeoXtru (Double_t *param)
Default constructor in GEANT3 style.

TGeoXtru (Int_t nz)
Default constructor.

virtual ~TGeoXtru ()
destructor

virtual Double_t Capacity () const
Compute capacity [length^3] of this shape.

virtual void ComputeBBox ()
compute bounding box of the pcon

virtual void ComputeNormal (const Double_t *point, const Double_t *dir, Double_t *norm)
Compute normal to closest surface from POINT.

virtual void ComputeNormal_v (const Double_t *points, const Double_t *dirs, Double_t *norms, Int_t vecsize)
Compute the normal for an array o points so that norm.dot.dir is positive Input: Arrays of point coordinates and directions + vector size Output: Array of normal directions.

virtual Bool_t Contains (const Double_t *point) const
test if point is inside this shape

virtual void Contains_v (const Double_t *points, Bool_t *inside, Int_t vecsize) const
Check the inside status for each of the points in the array.

Bool_t DefinePolygon (Int_t nvert, const Double_t *xv, const Double_t *yv)
Creates the polygon representing the blueprint of any Xtru section.

virtual void DefineSection (Int_t snum, Double_t z, Double_t x0=0., Double_t y0=0., Double_t scale=1.)
defines z position of a section plane, rmin and rmax at this z.

virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
compute closest distance from point px,py to each corner

virtual Double_t DistFromInside (const Double_t *point, const Double_t *dir, Int_t iact=1, Double_t step=TGeoShape::Big(), Double_t *safe=0) const
compute distance from inside point to surface of the polycone locate Z segment

virtual void DistFromInside_v (const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step) const
Compute distance from array of input points having directions specified by dirs. Store output in dists.

virtual Double_t DistFromOutside (const Double_t *point, const Double_t *dir, Int_t iact=1, Double_t step=TGeoShape::Big(), Double_t *safe=0) const
compute distance from outside point to surface of the tube Warning("DistFromOutside", "not implemented");

virtual void DistFromOutside_v (const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step) const
Compute distance from array of input points having directions specified by dirs. Store output in dists.

void DrawPolygon (Option_t *option="")
Draw the section polygon.

virtual const TBuffer3DGetBuffer3D (Int_t reqSections, Bool_t localFrame) const
Fills a static 3D buffer and returns a reference.

virtual TGeoShapeGetMakeRuntimeShape (TGeoShape *, TGeoMatrix *) const
In case shape has some negative parameters, these has to be computed in order to fit the mother.

virtual void GetMeshNumbers (Int_t &nvert, Int_t &nsegs, Int_t &npols) const
Returns numbers of vertices, segments and polygons composing the shape mesh.

virtual Int_t GetNmeshVertices () const
Return number of vertices of the mesh representation.

Int_t GetNvert () const

Int_t GetNz () const

Double_t GetScale (Int_t i) const

Double_t GetX (Int_t i) const

Double_t GetXOffset (Int_t i) const

Double_t GetY (Int_t i) const

Double_t GetYOffset (Int_t i) const

Double_tGetZ () const

Double_t GetZ (Int_t ipl) const
Return the Z coordinate for segment ipl.

virtual void InspectShape () const
Print actual Xtru parameters.

virtual TBuffer3DMakeBuffer3D () const
Creates a TBuffer3D describing this shape.

virtual Double_t Safety (const Double_t *point, Bool_t in=kTRUE) const
computes the closest distance from given point to this shape, according to option.

virtual void Safety_v (const Double_t *points, const Bool_t *inside, Double_t *safe, Int_t vecsize) const
Compute safe distance from each of the points in the input array.

virtual void SavePrimitive (std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".

void SetCurrentVertices (Double_t x0, Double_t y0, Double_t scale)
Set current vertex coordinates according X0, Y0 and SCALE.

void SetCurrentZ (Double_t z, Int_t iz)
Recompute current section vertices for a given Z position within range of section iz.

virtual void SetDimensions (Double_t *param)

virtual void SetPoints (Double_t *points) const
create polycone mesh points

virtual void SetPoints (Float_t *points) const
create polycone mesh points

virtual void SetSegsAndPols (TBuffer3D &buff) const
Fill TBuffer3D structure for segments and polygons.

virtual void Sizeof3D () const
fill size of this 3-D object

Double_tZ (Int_t ipl)

Public Member Functions inherited from TGeoBBox
TGeoBBox ()
Default constructor.

TGeoBBox (const char *name, Double_t dx, Double_t dy, Double_t dz, Double_t *origin=0)
Constructor with shape name.

TGeoBBox (Double_t *param)
Constructor based on the array of parameters.

TGeoBBox (Double_t dx, Double_t dy, Double_t dz, Double_t *origin=0)
Constructor where half-lengths are provided.

virtual ~TGeoBBox ()
Destructor.

virtual Double_t Capacity () const
Computes capacity of the shape in [length^3].

virtual void ComputeBBox ()
Compute bounding box - nothing to do in this case.

virtual void ComputeNormal (const Double_t *point, const Double_t *dir, Double_t *norm)
Computes normal to closest surface from POINT.

virtual void ComputeNormal_v (const Double_t *points, const Double_t *dirs, Double_t *norms, Int_t vecsize)
Compute the normal for an array o points so that norm.dot.dir is positive Input: Arrays of point coordinates and directions + vector size Output: Array of normal directions.

virtual Bool_t Contains (const Double_t *point) const
Test if point is inside this shape.

virtual void Contains_v (const Double_t *points, Bool_t *inside, Int_t vecsize) const
Check the inside status for each of the points in the array.

virtual Bool_t CouldBeCrossed (const Double_t *point, const Double_t *dir) const
Decides fast if the bounding box could be crossed by a vector.

virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
Compute closest distance from point px,py to each corner.

virtual Double_t DistFromInside (const Double_t *point, const Double_t *dir, Int_t iact=1, Double_t step=TGeoShape::Big(), Double_t *safe=0) const
Compute distance from inside point to surface of the box.

virtual void DistFromInside_v (const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step) const
Compute distance from array of input points having directions specified by dirs. Store output in dists.

virtual Double_t DistFromOutside (const Double_t *point, const Double_t *dir, Int_t iact=1, Double_t step=TGeoShape::Big(), Double_t *safe=0) const
Compute distance from outside point to surface of the box.

virtual void DistFromOutside_v (const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step) const
Compute distance from array of input points having directions specified by dirs. Store output in dists.

virtual TGeoVolumeDivide (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.

virtual const char * GetAxisName (Int_t iaxis) const
Returns name of axis IAXIS.

virtual Double_t GetAxisRange (Int_t iaxis, Double_t &xlo, Double_t &xhi) const
Get range of shape for a given axis.

virtual void GetBoundingCylinder (Double_t *param) const
Fill vector param[4] with the bounding cylinder parameters.

virtual const TBuffer3DGetBuffer3D (Int_t reqSections, Bool_t localFrame) const
Fills a static 3D buffer and returns a reference.

virtual Int_t GetByteCount () const

virtual Double_t GetDX () const

virtual Double_t GetDY () const

virtual Double_t GetDZ () const

virtual Double_t GetFacetArea (Int_t index=0) const
Get area in internal units of the facet with a given index.

virtual 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 successful.

virtual TGeoShapeGetMakeRuntimeShape (TGeoShape *mother, TGeoMatrix *mat) const
In case shape has some negative parameters, these has to be computed in order to fit the mother.

virtual void GetMeshNumbers (Int_t &nvert, Int_t &nsegs, Int_t &npols) const
Returns numbers of vertices, segments and polygons composing the shape mesh.

virtual Int_t GetNmeshVertices () const

virtual const Double_tGetOrigin () const

virtual Bool_t GetPointsOnFacet (Int_t index, Int_t npoints, Double_t *array) const
Fills array with n random points located on the surface of indexed facet.

virtual Bool_t GetPointsOnSegments (Int_t npoints, Double_t *array) const
Fills array with n random points located on the line segments of the shape mesh.

virtual void InspectShape () const
Prints shape parameters.

virtual Bool_t IsCylType () const

virtual Bool_t IsNullBox () const

virtual Bool_t IsValidBox () const

virtual TBuffer3DMakeBuffer3D () const
Creates a TBuffer3D describing this shape.

virtual Double_t Safety (const Double_t *point, Bool_t in=kTRUE) const
Computes the closest distance from given point to this shape.

virtual void Safety_v (const Double_t *points, const Bool_t *inside, Double_t *safe, Int_t vecsize) const
Compute safe distance from each of the points in the input array.

virtual void SavePrimitive (std::ostream &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=0)
Set parameters of the box.

void SetBoxPoints (Double_t *points) const
Fill box vertices to an array.

virtual void SetDimensions (Double_t *param)
Set dimensions based on the array of parameters param[0] - half-length in x param[1] - half-length in y param[2] - half-length in z.

virtual void SetPoints (Double_t *points) const
Fill box points.

virtual void SetPoints (Float_t *points) const
Fill box points.

virtual void SetSegsAndPols (TBuffer3D &buffer) const
Fills TBuffer3D structure for segments and polygons.

virtual void Sizeof3D () const

Public Member Functions inherited from TGeoShape
TGeoShape ()
Default constructor.

TGeoShape (const char *name)
Default constructor.

virtual ~TGeoShape ()
Destructor.

virtual void AfterStreamer ()

virtual Double_t Capacity () const =0

void CheckShape (Int_t testNo, Int_t nsamples=10000, Option_t *option="")

virtual void ComputeBBox ()=0

virtual void ComputeNormal (const Double_t *point, const Double_t *dir, Double_t *norm)=0

virtual void ComputeNormal_v (const Double_t *, const Double_t *, Double_t *, Int_t)

virtual Bool_t Contains (const Double_t *point) const =0

virtual void Contains_v (const Double_t *, Bool_t *, Int_t) const

virtual Bool_t CouldBeCrossed (const Double_t *point, const Double_t *dir) const =0

virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)=0
Computes distance from point (px,py) to the object.

virtual Double_t DistFromInside (const Double_t *point, const Double_t *dir, Int_t iact=1, Double_t step=TGeoShape::Big(), Double_t *safe=0) const =0

virtual void DistFromInside_v (const Double_t *, const Double_t *, Double_t *, Int_t, Double_t *) const

virtual Double_t DistFromOutside (const Double_t *point, const Double_t *dir, Int_t iact=1, Double_t step=TGeoShape::Big(), Double_t *safe=0) const =0

virtual void DistFromOutside_v (const Double_t *, const Double_t *, Double_t *, Int_t, Double_t *) const

virtual TGeoVolumeDivide (TGeoVolume *voldiv, const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step)=0

virtual void Draw (Option_t *option="")
Draw this shape.

virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
Execute mouse actions on this shape.

virtual const char * GetAxisName (Int_t iaxis) const =0

virtual Double_t GetAxisRange (Int_t iaxis, Double_t &xlo, Double_t &xhi) const =0

virtual void GetBoundingCylinder (Double_t *param) const =0

virtual const TBuffer3DGetBuffer3D (Int_t reqSections, Bool_t localFrame) const
Stub implementation to avoid forcing implementation at this stage.

virtual Int_t GetByteCount () const =0

virtual Int_t GetFittingBox (const TGeoBBox *parambox, TGeoMatrix *mat, Double_t &dx, Double_t &dy, Double_t &dz) const =0

Int_t GetId () const

virtual TGeoShapeGetMakeRuntimeShape (TGeoShape *mother, TGeoMatrix *mat) const =0

virtual void GetMeshNumbers (Int_t &, Int_t &, Int_t &) const

virtual const char * GetName () const
Get the shape name.

virtual Int_t GetNmeshVertices () const

const char * GetPointerName () const
Provide a pointer name containing uid.

virtual Bool_t GetPointsOnSegments (Int_t npoints, Double_t *array) const =0

virtual void InspectShape () const =0

void InvertShapeBit (UInt_t f)

virtual Bool_t IsAssembly () const

virtual Bool_t IsComposite () const

virtual Bool_t IsCylType () const =0

virtual Bool_t IsReflected () const

Bool_t IsRunTimeShape () const

Bool_t IsValid () const

virtual Bool_t IsValidBox () const =0

virtual Bool_t IsVecGeom () const

virtual TBuffer3DMakeBuffer3D () const

virtual void Paint (Option_t *option="")
Paint this shape.

void ResetShapeBit (UInt_t f)

virtual Double_t Safety (const Double_t *point, Bool_t in=kTRUE) const =0

virtual void Safety_v (const Double_t *, const Bool_t *, Double_t *, Int_t) const

virtual void SetDimensions (Double_t *param)=0

void SetId (Int_t id)

virtual void SetPoints (Double_t *points) const =0

virtual void SetPoints (Float_t *points) const =0

void SetRuntime (Bool_t flag=kTRUE)

virtual void SetSegsAndPols (TBuffer3D &buff) const =0

void SetShapeBit (UInt_t f)

void SetShapeBit (UInt_t f, Bool_t set)
Equivalent of TObject::SetBit.

Int_t ShapeDistancetoPrimitive (Int_t numpoints, Int_t px, Int_t py) const
Returns distance to shape primitive mesh.

virtual void Sizeof3D () const =0

Bool_t TestShapeBit (UInt_t f) const

Int_t TestShapeBits (UInt_t f) const

Public Member Functions inherited from TNamed
TNamed ()

TNamed (const char *name, const char *title)

TNamed (const TNamed &named)
TNamed copy ctor.

TNamed (const TString &name, const TString &title)

virtual ~TNamed ()
TNamed destructor.

virtual void Clear (Option_t *option="")
Set name and title to empty strings ("").

virtual TObjectClone (const char *newname="") const
Make a clone of an object using the Streamer facility.

virtual Int_t Compare (const TObject *obj) const
Compare two TNamed objects.

virtual void Copy (TObject &named) const
Copy this to obj.

virtual void FillBuffer (char *&buffer)
Encode TNamed into output buffer.

virtual const char * GetName () const
Returns name of object.

virtual const char * GetTitle () const
Returns title of object.

virtual ULong_t Hash () const
Return hash value for this object.

virtual Bool_t IsSortable () const

virtual void ls (Option_t *option="") const
List TNamed name and title.

TNamedoperator= (const TNamed &rhs)
TNamed assignment operator.

virtual void Print (Option_t *option="") const
Print TNamed name and title.

virtual void SetName (const char *name)
Set the name of the TNamed.

virtual void SetNameTitle (const char *name, const char *title)
Set all the TNamed parameters (name and title).

virtual void SetTitle (const char *title="")
Set the title of the TNamed.

virtual Int_t Sizeof () const
Return size of the TNamed part of the TObject.

Public Member Functions inherited from TObject
TObject ()
TObject constructor.

TObject (const TObject &object)
TObject copy ctor.

virtual ~TObject ()
TObject destructor.

void AbstractMethod (const char *method) const
Use this method to implement an "abstract" method that you don't want to leave purely abstract.

Append graphics object to current pad.

virtual void Browse (TBrowser *b)
Browse object. May be overridden for another default action.

ULong_t CheckedHash ()
Check and record whether this class has a consistent Hash/RecursiveRemove setup (*) and then return the regular Hash value for this object.

virtual const char * ClassName () const
Returns name of class to which the object belongs.

virtual void Clear (Option_t *="")

virtual TObjectClone (const char *newname="") const
Make a clone of an object using the Streamer facility.

virtual Int_t Compare (const TObject *obj) const
Compare abstract method.

virtual void Copy (TObject &object) const
Copy this to obj.

virtual void Delete (Option_t *option="")
Delete this object.

virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
Computes distance from point (px,py) to the object.

virtual void Draw (Option_t *option="")
Default Draw method for all objects.

virtual void DrawClass () const
Draw class inheritance tree of the class to which this object belongs.

virtual TObjectDrawClone (Option_t *option="") const
Draw a clone of this object in the current selected pad for instance with: gROOT->SetSelectedPad(gPad).

virtual void Dump () const
Dump contents of object on stdout.

virtual void Error (const char *method, const char *msgfmt,...) const
Issue error message.

virtual void Execute (const char *method, const char *params, Int_t *error=0)
Execute method on this object with the given parameter string, e.g.

virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=0)
Execute method on this object with parameters stored in the TObjArray.

virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
Execute action corresponding to an event at (px,py).

virtual void Fatal (const char *method, const char *msgfmt,...) const
Issue fatal error message.

virtual TObjectFindObject (const char *name) const
Must be redefined in derived classes.

virtual TObjectFindObject (const TObject *obj) const
Must be redefined in derived classes.

virtual Option_tGetDrawOption () const
Get option used by the graphics system to draw this object.

virtual const char * GetIconName () const
Returns mime type name of object.

virtual const char * GetName () const
Returns name of object.

virtual char * GetObjectInfo (Int_t px, Int_t py) const
Returns string containing info about the object at position (px,py).

virtual Option_tGetOption () const

virtual const char * GetTitle () const
Returns title of object.

virtual UInt_t GetUniqueID () const
Return the unique object id.

virtual Bool_t HandleTimer (TTimer *timer)
Execute action in response of a timer timing out.

virtual ULong_t Hash () const
Return hash value for this object.

Bool_t HasInconsistentHash () const
Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveRemove (i.e.

virtual void Info (const char *method, const char *msgfmt,...) const
Issue info message.

virtual Bool_t InheritsFrom (const char *classname) const
Returns kTRUE if object inherits from class "classname".

virtual Bool_t InheritsFrom (const TClass *cl) const
Returns kTRUE if object inherits from TClass cl.

virtual void Inspect () const
Dump contents of this object in a graphics canvas.

void InvertBit (UInt_t f)

virtual Bool_t IsEqual (const TObject *obj) const
Default equal comparison (objects are equal if they have the same address in memory).

virtual Bool_t IsFolder () const
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).

R__ALWAYS_INLINE Bool_t IsOnHeap () const

virtual Bool_t IsSortable () const

R__ALWAYS_INLINE Bool_t IsZombie () const

virtual void ls (Option_t *option="") const
The ls function lists the contents of a class on stdout.

void MayNotUse (const char *method) const
Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary).

virtual Bool_t Notify ()
This method must be overridden to handle object notification.

void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
Use this method to declare a method obsolete.

void operator delete (void *ptr)
Operator delete.

void operator delete[] (void *ptr)
Operator delete [].

voidoperator new (size_t sz)

voidoperator new (size_t sz, void *vp)

voidoperator new[] (size_t sz)

voidoperator new[] (size_t sz, void *vp)

TObjectoperator= (const TObject &rhs)
TObject assignment operator.

virtual void Paint (Option_t *option="")
This method must be overridden if a class wants to paint itself.

virtual void Pop ()
Pop on object drawn in a pad to the top of the display list.

virtual void Print (Option_t *option="") const
This method must be overridden when a class wants to print itself.

virtual Int_t Read (const char *name)
Read contents of object with specified name from the current directory.

virtual void RecursiveRemove (TObject *obj)
Recursively remove this object from a list.

void ResetBit (UInt_t f)

virtual void SaveAs (const char *filename="", Option_t *option="") const
Save this object in the file specified by filename.

virtual void SavePrimitive (std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".

void SetBit (UInt_t f)

void SetBit (UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.

virtual void SetDrawOption (Option_t *option="")
Set drawing option for object.

virtual void SetUniqueID (UInt_t uid)
Set the unique object id.

virtual void SysError (const char *method, const char *msgfmt,...) const
Issue system error message.

R__ALWAYS_INLINE Bool_t TestBit (UInt_t f) const

Int_t TestBits (UInt_t f) const

virtual void UseCurrentStyle ()
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked.

virtual void Warning (const char *method, const char *msgfmt,...) const
Issue warning message.

virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.

virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0) const
Write this object to the current directory.

## Protected Member Functions

TGeoXtru (const TGeoXtru &)=delete

Double_t DistToPlane (const Double_t *point, const Double_t *dir, Int_t iz, Int_t ivert, Double_t stepmax, Bool_t in) const
Compute distance to a Xtru lateral surface.

void GetPlaneNormal (const Double_t *vert, Double_t *norm) const
Returns normal vector to the planar quadrilateral defined by vector VERT.

void GetPlaneVertices (Int_t iz, Int_t ivert, Double_t *vert) const
Returns (x,y,z) of 3 vertices of the surface defined by Z sections (iz, iz+1) and polygon vertices (ivert, ivert+1).

Bool_t IsPointInsidePlane (const Double_t *point, Double_t *vert, Double_t *norm) const
Check if the quadrilateral defined by VERT contains a coplanar POINT.

TGeoXtruoperator= (const TGeoXtru &)=delete

Double_t SafetyToSector (const Double_t *point, Int_t iz, Double_t safmin, Bool_t in)
Compute safety to sector iz, returning also the closest segment index.

void SetIz (Int_t iz)
Set current z-plane.

void SetSeg (Int_t iseg)
Set current segment.

Protected Member Functions inherited from TGeoBBox
virtual void FillBuffer3D (TBuffer3D &buffer, Int_t reqSections, Bool_t localFrame) const
Fills the supplied buffer, with sections in desired frame See TBuffer3D.h for explanation of sections, frame etc.

Protected Member Functions inherited from TGeoShape
virtual 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.

Int_t GetBasicColor () const
Get the basic color (0-7).

void SetOnBoundary (Bool_t)

void TransformPoints (Double_t *points, UInt_t NbPoints) const
Tranform a set of points (LocalToMaster)

Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
Interface to ErrorHandler (protected).

void MakeZombie ()

## Protected Attributes

std::mutex fMutex

Int_t fNvert

Int_t fNz

Double_tfScale

Double_tfX

Double_tfX0

Double_tfY

Double_tfY0

Double_tfZ

Double_t fZcurrent

Protected Attributes inherited from TGeoBBox
Double_t fDX

Double_t fDY

Double_t fDZ

Double_t fOrigin [3]

Protected Attributes inherited from TGeoShape
UInt_t fShapeBits

Int_t fShapeId

Protected Attributes inherited from TNamed
TString fName

TString fTitle

Public Types inherited from TGeoShape
enum  EShapeType {
kBitMask32 = 0xffffffff , kGeoNoShape = 0 , kGeoBad = BIT(0) , kGeoRSeg = BIT(1) ,
kGeoPhiSeg = BIT(2) , kGeoThetaSeg = BIT(3) , kGeoVisX = BIT(4) , kGeoVisY = BIT(5) ,
kGeoVisZ = BIT(6) , kGeoRunTimeShape = BIT(7) , kGeoInvalidShape = BIT(8) , kGeoTorus = BIT(9) ,
kGeoBox = BIT(10) , kGeoPara = BIT(11) , kGeoSph = BIT(12) , kGeoTube = BIT(13) ,
kGeoTubeSeg = BIT(14) , kGeoCone = BIT(15) , kGeoConeSeg = BIT(16) , kGeoPcon = BIT(17) ,
kGeoPgon = BIT(18) , kGeoArb8 = BIT(19) , kGeoEltu = BIT(20) , kGeoTrap = BIT(21) ,
kGeoCtub = BIT(22) , kGeoTrd1 = BIT(23) , kGeoTrd2 = BIT(24) , kGeoComb = BIT(25) ,
kGeoClosedShape = BIT(26) , kGeoXtru = BIT(27) , kGeoParaboloid = BIT(28) , kGeoHalfSpace = BIT(29) ,
kGeoHype = BIT(30) , kGeoSavePrimitive = BIT(20)
}

Public Types inherited from TObject
enum  {
kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 ,
}

enum  { kSingleKey = BIT(0) , kOverwrite = BIT(1) , kWriteDelete = BIT(2) }

enum  EDeprecatedStatusBits { kObjInCanvas = BIT(3) }

enum  EStatusBits {
kCanDelete = BIT(0) , kMustCleanup = BIT(3) , kIsReferenced = BIT(4) , kHasUUID = BIT(5) ,
kCannotPick = BIT(6) , kNoContextMenu = BIT(8) , kInvalidObject = BIT(13)
}

Static Public Member Functions inherited from TGeoBBox
static Bool_t AreOverlapping (const TGeoBBox *box1, const TGeoMatrix *mat1, const TGeoBBox *box2, const TGeoMatrix *mat2)
Check if 2 positioned boxes overlap.

static Bool_t Contains (const Double_t *point, Double_t dx, Double_t dy, Double_t dz, const Double_t *origin)
Static method to check if point[3] is located inside a box of having dx, dy, dz as half-lengths.

static Double_t DistFromInside (const Double_t *point, const Double_t *dir, Double_t dx, Double_t dy, Double_t dz, const Double_t *origin, Double_t stepmax=TGeoShape::Big())
Compute distance from inside point to surface of the box.

static Double_t DistFromOutside (const Double_t *point, const Double_t *dir, Double_t dx, Double_t dy, Double_t dz, const Double_t *origin, Double_t stepmax=TGeoShape::Big())
Compute distance from outside point to surface of the box.

Static Public Member Functions inherited from TGeoShape
static Double_t Big ()

static Double_t ComputeEpsMch ()
Compute machine round-off double precision error as the smallest number that if added to 1.0 is different than 1.0.

static Double_t DistToPhiMin (const Double_t *point, const Double_t *dir, Double_t s1, Double_t c1, Double_t s2, Double_t c2, Double_t sm, Double_t cm, Bool_t in=kTRUE)
compute distance from point (inside phi) to both phi planes. Return minimum.

static Double_t EpsMch ()
static function returning the machine round-off error

static TGeoMatrixGetTransform ()
Returns current transformation matrix that applies to shape.

static Bool_t IsCloseToPhi (Double_t epsil, const Double_t *point, Double_t c1, Double_t s1, Double_t c2, Double_t s2)
True if point is closer than epsil to one of the phi planes defined by c1,s1 or c2,s2.

static Bool_t IsCrossingSemiplane (const Double_t *point, const Double_t *dir, Double_t cphi, Double_t sphi, Double_t &snext, Double_t &rxy)
Compute distance from POINT to semiplane defined by PHI angle along DIR.

static Bool_t IsInPhiRange (const Double_t *point, Double_t phi1, Double_t phi2)
Static method to check if a point is in the phi range (phi1, phi2) [degrees].

static Bool_t IsSameWithinTolerance (Double_t a, Double_t b)
Check if two numbers differ with less than a tolerance.

static Bool_t IsSegCrossing (Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t x3, Double_t y3, Double_t x4, Double_t y4)
Check if segments (A,B) and (C,D) are crossing, where: A(x1,y1), B(x2,y2), C(x3,y3), D(x4,y4)

static void NormalPhi (const Double_t *point, const Double_t *dir, Double_t *norm, Double_t c1, Double_t s1, Double_t c2, Double_t s2)
Static method to compute normal to phi planes.

static Double_t SafetyPhi (const Double_t *point, Bool_t in, Double_t phi1, Double_t phi2)
Static method to compute safety w.r.t a phi corner defined by cosines/sines of the angles phi1, phi2.

static Double_t SafetySeg (Double_t r, Double_t z, Double_t r1, Double_t z1, Double_t r2, Double_t z2, Bool_t outer)
Compute distance from point of coordinates (r,z) to segment (r1,z1):(r2,z2)

static void SetTransform (TGeoMatrix *matrix)
Set current transformation matrix that applies to shape.

static Double_t Tolerance ()

Static Public Member Functions inherited from TObject
static Long_t GetDtorOnly ()
Return destructor only flag.

static Bool_t GetObjectStat ()
Get status of object stat flag.

static void SetDtorOnly (void *obj)
Set destructor only flag.

static void SetObjectStat (Bool_t stat)
Turn on/off tracking of objects in the TObjectTable.

Protected Types inherited from TObject
enum  { kOnlyPrepStep = BIT(3) }

#include <TGeoXtru.h>

Inheritance diagram for TGeoXtru:
[legend]

## ◆ TGeoXtru() [1/4]

 TGeoXtru::TGeoXtru ( const TGeoXtru & )
protecteddelete

## ◆ TGeoXtru() [2/4]

 TGeoXtru::TGeoXtru ( )

dummy ctor

Definition at line 156 of file TGeoXtru.cxx.

## ◆ TGeoXtru() [3/4]

 TGeoXtru::TGeoXtru ( Int_t nz )

Default constructor.

Definition at line 176 of file TGeoXtru.cxx.

## ◆ TGeoXtru() [4/4]

 TGeoXtru::TGeoXtru ( Double_t * param )

Default constructor in GEANT3 style.

• param[0] = nz // number of z planes
• param[1] = z1 // Z position of first plane
• param[2] = x1 // X position of first plane
• param[3] = y1 // Y position of first plane
• param[4] = scale1 // scale factor for first plane ...
• param[4*(nz-1]+1] = zn
• param[4*(nz-1)+2] = xn
• param[4*(nz-1)+3] = yn
• param[4*(nz-1)+4] = scalen

Definition at line 212 of file TGeoXtru.cxx.

## ◆ ~TGeoXtru()

 TGeoXtru::~TGeoXtru ( )
virtual

destructor

Definition at line 233 of file TGeoXtru.cxx.

## ◆ Capacity()

 Double_t TGeoXtru::Capacity ( ) const
virtual

Compute capacity [length^3] of this shape.

Reimplemented from TGeoBBox.

Definition at line 247 of file TGeoXtru.cxx.

virtual

Reimplemented from TGeoShape.

Definition at line 99 of file TGeoXtru.cxx.

## ◆ ComputeBBox()

 void TGeoXtru::ComputeBBox ( )
virtual

compute bounding box of the pcon

Reimplemented from TGeoBBox.

Definition at line 269 of file TGeoXtru.cxx.

## ◆ ComputeNormal()

 void TGeoXtru::ComputeNormal ( const Double_t * point, const Double_t * dir, Double_t * norm )
virtual

Compute normal to closest surface from POINT.

Reimplemented from TGeoBBox.

Definition at line 303 of file TGeoXtru.cxx.

## ◆ ComputeNormal_v()

 void TGeoXtru::ComputeNormal_v ( const Double_t * points, const Double_t * dirs, Double_t * norms, Int_t vecsize )
virtual

Compute the normal for an array o points so that norm.dot.dir is positive Input: Arrays of point coordinates and directions + vector size Output: Array of normal directions.

Reimplemented from TGeoBBox.

Definition at line 1275 of file TGeoXtru.cxx.

## ◆ Contains()

 Bool_t TGeoXtru::Contains ( const Double_t * point ) const
virtual

test if point is inside this shape

Reimplemented from TGeoBBox.

Definition at line 325 of file TGeoXtru.cxx.

## ◆ Contains_v()

 void TGeoXtru::Contains_v ( const Double_t * points, Bool_t * inside, Int_t vecsize ) const
virtual

Check the inside status for each of the points in the array.

Input: Array of point coordinates + vector size Output: Array of Booleans for the inside of each point

Reimplemented from TGeoBBox.

Definition at line 1265 of file TGeoXtru.cxx.

virtual

Reimplemented from TGeoShape.

Definition at line 115 of file TGeoXtru.cxx.

## ◆ DefinePolygon()

 Bool_t TGeoXtru::DefinePolygon ( Int_t nvert, const Double_t * xv, const Double_t * yv )

Creates the polygon representing the blueprint of any Xtru section.

• nvert = number of vertices >2
• xv[nvert] = array of X vertex positions
• yv[nvert] = array of Y vertex positions

NOTE should be called before DefineSection or ctor with 'param'

Definition at line 657 of file TGeoXtru.cxx.

## ◆ DefineSection()

 void TGeoXtru::DefineSection ( Int_t snum, Double_t z, Double_t x0 = 0., Double_t y0 = 0., Double_t scale = 1. )
virtual

defines z position of a section plane, rmin and rmax at this z.

Definition at line 690 of file TGeoXtru.cxx.

## ◆ DistancetoPrimitive()

 Int_t TGeoXtru::DistancetoPrimitive ( Int_t px, Int_t py )
virtual

compute closest distance from point px,py to each corner

Reimplemented from TGeoBBox.

Definition at line 356 of file TGeoXtru.cxx.

## ◆ DistFromInside()

 Double_t TGeoXtru::DistFromInside ( const Double_t * point, const Double_t * dir, Int_t iact = 1, Double_t step = TGeoShape::Big(), Double_t * safe = 0 ) const
virtual

compute distance from inside point to surface of the polycone locate Z segment

Reimplemented from TGeoBBox.

Definition at line 430 of file TGeoXtru.cxx.

## ◆ DistFromInside_v()

 void TGeoXtru::DistFromInside_v ( const Double_t * points, const Double_t * dirs, Double_t * dists, Int_t vecsize, Double_t * step ) const
virtual

Compute distance from array of input points having directions specified by dirs. Store output in dists.

Reimplemented from TGeoBBox.

Definition at line 1283 of file TGeoXtru.cxx.

## ◆ DistFromOutside()

 Double_t TGeoXtru::DistFromOutside ( const Double_t * point, const Double_t * dir, Int_t iact = 1, Double_t step = TGeoShape::Big(), Double_t * safe = 0 ) const
virtual

compute distance from outside point to surface of the tube Warning("DistFromOutside", "not implemented");

Reimplemented from TGeoBBox.

Definition at line 544 of file TGeoXtru.cxx.

## ◆ DistFromOutside_v()

 void TGeoXtru::DistFromOutside_v ( const Double_t * points, const Double_t * dirs, Double_t * dists, Int_t vecsize, Double_t * step ) const
virtual

Compute distance from array of input points having directions specified by dirs. Store output in dists.

Reimplemented from TGeoBBox.

Definition at line 1291 of file TGeoXtru.cxx.

## ◆ DistToPlane()

 Double_t TGeoXtru::DistToPlane ( const Double_t * point, const Double_t * dir, Int_t iz, Int_t ivert, Double_t stepmax, Bool_t in ) const
protected

Compute distance to a Xtru lateral surface.

Definition at line 374 of file TGeoXtru.cxx.

## ◆ DrawPolygon()

 void TGeoXtru::DrawPolygon ( Option_t * option = "" )

Draw the section polygon.

Definition at line 365 of file TGeoXtru.cxx.

## ◆ GetBuffer3D()

 const TBuffer3D & TGeoXtru::GetBuffer3D ( Int_t reqSections, Bool_t localFrame ) const
virtual

Fills a static 3D buffer and returns a reference.

Reimplemented from TGeoBBox.

Definition at line 1230 of file TGeoXtru.cxx.

## ◆ GetMakeRuntimeShape()

 virtual TGeoShape * TGeoXtru::GetMakeRuntimeShape ( TGeoShape * mother, TGeoMatrix * mat ) const
inlinevirtual

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

Reimplemented from TGeoBBox.

Definition at line 103 of file TGeoXtru.h.

## ◆ GetMeshNumbers()

 void TGeoXtru::GetMeshNumbers ( Int_t & nvert, Int_t & nsegs, Int_t & npols ) const
virtual

Returns numbers of vertices, segments and polygons composing the shape mesh.

Reimplemented from TGeoBBox.

Definition at line 1202 of file TGeoXtru.cxx.

## ◆ GetNmeshVertices()

 Int_t TGeoXtru::GetNmeshVertices ( ) const
virtual

Return number of vertices of the mesh representation.

Reimplemented from TGeoBBox.

Definition at line 1214 of file TGeoXtru.cxx.

## ◆ GetNvert()

 Int_t TGeoXtru::GetNvert ( ) const
inline

Definition at line 95 of file TGeoXtru.h.

## ◆ GetNz()

 Int_t TGeoXtru::GetNz ( ) const
inline

Definition at line 94 of file TGeoXtru.h.

## ◆ GetPlaneNormal()

 void TGeoXtru::GetPlaneNormal ( const Double_t * vert, Double_t * norm ) const
protected

Returns normal vector to the planar quadrilateral defined by vector VERT.

The normal points outwards the xtru.

Definition at line 726 of file TGeoXtru.cxx.

## ◆ GetPlaneVertices()

 void TGeoXtru::GetPlaneVertices ( Int_t iz, Int_t ivert, Double_t * vert ) const
protected

Returns (x,y,z) of 3 vertices of the surface defined by Z sections (iz, iz+1) and polygon vertices (ivert, ivert+1).

No range check.

Definition at line 751 of file TGeoXtru.cxx.

## ◆ GetScale()

 Double_t TGeoXtru::GetScale ( Int_t i ) const
inline

Definition at line 100 of file TGeoXtru.h.

Definition at line 90 of file TGeoXtru.cxx.

## ◆ GetX()

 Double_t TGeoXtru::GetX ( Int_t i ) const
inline

Definition at line 96 of file TGeoXtru.h.

## ◆ GetXOffset()

 Double_t TGeoXtru::GetXOffset ( Int_t i ) const
inline

Definition at line 98 of file TGeoXtru.h.

## ◆ GetY()

 Double_t TGeoXtru::GetY ( Int_t i ) const
inline

Definition at line 97 of file TGeoXtru.h.

## ◆ GetYOffset()

 Double_t TGeoXtru::GetYOffset ( Int_t i ) const
inline

Definition at line 99 of file TGeoXtru.h.

## ◆ GetZ() [1/2]

 Double_t * TGeoXtru::GetZ ( ) const
inline

Definition at line 101 of file TGeoXtru.h.

## ◆ GetZ() [2/2]

 Double_t TGeoXtru::GetZ ( Int_t ipl ) const

Return the Z coordinate for segment ipl.

Definition at line 714 of file TGeoXtru.cxx.

## ◆ InspectShape()

 void TGeoXtru::InspectShape ( ) const
virtual

Print actual Xtru parameters.

Reimplemented from TGeoBBox.

Definition at line 831 of file TGeoXtru.cxx.

## ◆ IsPointInsidePlane()

 Bool_t TGeoXtru::IsPointInsidePlane ( const Double_t * point, Double_t * vert, Double_t * norm ) const
protected

Check if the quadrilateral defined by VERT contains a coplanar POINT.

Definition at line 806 of file TGeoXtru.cxx.

## ◆ MakeBuffer3D()

 TBuffer3D * TGeoXtru::MakeBuffer3D ( ) const
virtual

Creates a TBuffer3D describing this shape.

Coordinates are in local reference frame.

Reimplemented from TGeoBBox.

Definition at line 848 of file TGeoXtru.cxx.

## ◆ operator=()

 TGeoXtru & TGeoXtru::operator= ( const TGeoXtru & )
protecteddelete

## ◆ Safety()

 Double_t TGeoXtru::Safety ( const Double_t * point, Bool_t in = kTRUE ) const
virtual

computes the closest distance from given point to this shape, according to option.

The matching point on the shape is stored in spoint.

‍localize the Z segment

Reimplemented from TGeoBBox.

Definition at line 1004 of file TGeoXtru.cxx.

## ◆ Safety_v()

 void TGeoXtru::Safety_v ( const Double_t * points, const Bool_t * inside, Double_t * safe, Int_t vecsize ) const
virtual

Compute safe distance from each of the points in the input array.

Input: Array of point coordinates, array of statuses for these points, size of the arrays Output: Safety values

Reimplemented from TGeoBBox.

Definition at line 1301 of file TGeoXtru.cxx.

## ◆ SafetyToSector()

 Double_t TGeoXtru::SafetyToSector ( const Double_t * point, Int_t iz, Double_t safmin, Bool_t in )
protected

Compute safety to sector iz, returning also the closest segment index.

Definition at line 936 of file TGeoXtru.cxx.

## ◆ SavePrimitive()

 void TGeoXtru::SavePrimitive ( std::ostream & out, Option_t * option = ""` )
virtual

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

Reimplemented from TGeoBBox.

Definition at line 1049 of file TGeoXtru.cxx.

## ◆ SetCurrentVertices()

 void TGeoXtru::SetCurrentVertices ( Double_t x0, Double_t y0, Double_t scale )

Set current vertex coordinates according X0, Y0 and SCALE.

Definition at line 1098 of file TGeoXtru.cxx.

## ◆ SetCurrentZ()

 void TGeoXtru::SetCurrentZ ( Double_t z, Int_t iz )

Recompute current section vertices for a given Z position within range of section iz.

Definition at line 1076 of file TGeoXtru.cxx.

## ◆ SetDimensions()

 void TGeoXtru::SetDimensions ( Double_t * param )
virtual
• param[0] = nz // number of z planes
• param[1] = z1 // Z position of first plane
• param[2] = x1 // X position of first plane
• param[3] = y1 // Y position of first plane
• param[4] = scale1 // scale factor for first plane ...
• param[4*(nz-1]+1] = zn
• param[4*(nz-1)+2] = xn
• param[4*(nz-1)+3] = yn
• param[4*(nz-1)+4] = scalen

Reimplemented from TGeoBBox.

Definition at line 1120 of file TGeoXtru.cxx.

## ◆ SetIz()

 void TGeoXtru::SetIz ( Int_t iz )
protected

Set current z-plane.

Definition at line 141 of file TGeoXtru.cxx.

## ◆ SetPoints() [1/2]

 void TGeoXtru::SetPoints ( Double_t * points ) const
virtual

create polycone mesh points

Reimplemented from TGeoBBox.

Definition at line 1144 of file TGeoXtru.cxx.

## ◆ SetPoints() [2/2]

 void TGeoXtru::SetPoints ( Float_t * points ) const
virtual

create polycone mesh points

Reimplemented from TGeoBBox.

Definition at line 1173 of file TGeoXtru.cxx.

## ◆ SetSeg()

 void TGeoXtru::SetSeg ( Int_t iseg )
protected

Set current segment.

Definition at line 148 of file TGeoXtru.cxx.

## ◆ SetSegsAndPols()

 void TGeoXtru::SetSegsAndPols ( TBuffer3D & buff ) const
virtual

Fill TBuffer3D structure for segments and polygons.

Reimplemented from TGeoBBox.

Definition at line 870 of file TGeoXtru.cxx.

## ◆ Sizeof3D()

 void TGeoXtru::Sizeof3D ( ) const
virtual

fill size of this 3-D object

Reimplemented from TGeoBBox.

Definition at line 1223 of file TGeoXtru.cxx.

## ◆ Z()

 Double_t & TGeoXtru::Z ( Int_t ipl )
inline

Definition at line 108 of file TGeoXtru.h.

## ◆ fMutex

 std::mutex TGeoXtru::fMutex
mutableprotected

Definition at line 54 of file TGeoXtru.h.

## ◆ fNvert

 Int_t TGeoXtru::fNvert
protected

Definition at line 42 of file TGeoXtru.h.

## ◆ fNz

 Int_t TGeoXtru::fNz
protected

Definition at line 43 of file TGeoXtru.h.

## ◆ fScale

 Double_t* TGeoXtru::fScale
protected

Definition at line 48 of file TGeoXtru.h.

mutableprotected

Definition at line 52 of file TGeoXtru.h.

mutableprotected

Definition at line 53 of file TGeoXtru.h.

## ◆ fX

 Double_t* TGeoXtru::fX
protected

Definition at line 45 of file TGeoXtru.h.

## ◆ fX0

 Double_t* TGeoXtru::fX0
protected

Definition at line 49 of file TGeoXtru.h.

## ◆ fY

 Double_t* TGeoXtru::fY
protected

Definition at line 46 of file TGeoXtru.h.

## ◆ fY0

 Double_t* TGeoXtru::fY0
protected

Definition at line 50 of file TGeoXtru.h.

## ◆ fZ

 Double_t* TGeoXtru::fZ
protected

Definition at line 47 of file TGeoXtru.h.

## ◆ fZcurrent

 Double_t TGeoXtru::fZcurrent
protected

Definition at line 44 of file TGeoXtru.h.

Libraries for TGeoXtru:

The documentation for this class was generated from the following files: