Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TGeoShape Class Referenceabstract

Base abstract class for all shapes.

Shapes are geometrical objects that provide the basic modelling functionality. They provide the definition of the LOCAL frame of coordinates, with respect to which they are defined. Any implementation of a shape deriving from the base TGeoShape class has to provide methods for :

  • finding out if a point defined in their local frame is or not contained inside;
  • computing the distance from a local point to getting outside/entering the shape, given a known direction;
  • computing the maximum distance in any direction from a local point that does NOT result in a boundary crossing of the shape (safe distance);
  • computing the cosines of the normal vector to the crossed shape surface, given a starting local point and an ongoing direction. All the features above are globally managed by the modeller in order to provide navigation functionality. In addition to those, shapes have also to implement additional specific abstract methods :
  • computation of the minimal box bounding the shape, given that this box have to be aligned with the local coordinates;
  • algorithms for dividing the shape along a given axis and producing resulting divisions volumes.

The modeler currently provides a set of 16 basic shapes, which we will call primitives. It also provides a special class allowing the creation of shapes made as a result of boolean operations between primitives. These are called composite shapes and the composition operation can be recursive (composition of composites). This allows the creation of a quite large number of different shape topologies and combinations.

Named shapes register themselves to the manager class at creation time. The manager is responsible for their final deletion. Shapes can be created using their default constructor if their retrieval by name is not needed, but in this case they are owned by the user. A shape may be referenced by several volumes, therefore its deletion is not possible once volumes were defined based on it.

Creating shapes

Shape objects embed only the minimum set of parameters that are fully describing a valid physical shape. For instance, a tube is represented by its half length, the minimum radius and the maximum radius. Shapes are used together with media in order to create volumes, which in their turn are the main components of the geometrical tree. A specific shape can be created stand-alone :

TGeoBBox *box = new TGeoBBox("s_box", halfX, halfY, halfZ); // named
TGeoTube *tub = new TGeoTube(rmin, rmax, halfZ); // no name
... (see each specific shape constructors)
Box class.
Definition TGeoBBox.h:17
Cylindrical tube class.
Definition TGeoTube.h:17
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Definition fillpatterns.C:1

Sometimes it is much easier to create a volume having a given shape in one step, since shapes are not directly linked in the geometrical tree but volumes are :

TGeoVolume *vol_box = gGeoManager->MakeBox("BOX_VOL", "mat1", halfX, halfY, halfZ);
TGeoVolume *vol_tub = gGeoManager->MakeTube("TUB_VOL", "mat2", rmin, rmax, halfZ);
... (see MakeXXX() utilities in TGeoManager class)
R__EXTERN TGeoManager * gGeoManager
The manager class for any TGeo geometry.
Definition TGeoManager.h:44
TGeoVolume * MakeTube(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t dz)
Make in one step a volume pointing to a tube shape with given medium.
TGeoVolume * MakeBox(const char *name, TGeoMedium *medium, Double_t dx, Double_t dy, Double_t dz)
Make in one step a volume pointing to a box shape with given medium.
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition TGeoVolume.h:43

Shape queries

Note that global queries related to a geometry are handled by the manager class. However, shape-related queries might be sometimes useful.

Bool_t TGeoShape::Contains(const Double_t *point[3])

this method returns true if POINT is actually inside the shape. The point has to be defined in the local shape reference. For instance, for a box having DX, DY and DZ half-lengths a point will be considered inside if :

| -DX <= point[0] <= DX
| -DY <= point[1] <= DY
| -DZ <= point[2] <= DZ

Double_t TGeoShape::DistFromInside(Double_t *point[3], Double_t *dir[3], Int_t iact, Double_t step, Double_t</h4> safe) computes the distance to exiting a shape from a given point INSIDE, along a given direction. The direction is given by its director cosines with respect to the local shape coordinate system. This method provides additional information according the value of IACT input parameter : :IACT = 0 => compute only safe distance and fill it at the location given by SAFESAFEIACT = 1 => a proposed STEP is supplied. The safe distance is computed first. If this is bigger than STEP than the proposed step is approved and returned by the method since it does not cross the shape boundaries. Otherwise, the distance to exiting the shape is computed and returned..IACT = 2 => compute both safe distance and distance to exiting, ignoring the proposed step..IACT > 2 => compute only the distance to exiting, ignoring anything else. Double_t TGeoShape::DistFromOutside(Double_t *point[3], Double_t *dir[3], Int_t iact, Double_t step, Double_t</h4> safe) computes the distance to entering a shape from a given point OUTSIDE. Acts in the same way as B). Double_t Safety(const Double_t *point[3], Bool_t inside)

compute maximum shift of a point in any direction that does not change its INSIDE/OUTSIDE state (does not cross shape boundaries). The state of the point have to be properly supplied.

Double_t *Normal(Double_t *point[3], Double_t *dir[3], Bool_t inside)

returns director cosines of normal to the crossed shape surface from a given point towards a direction. One has to specify if the point is inside or outside shape. According to this, the normal will be outwards or inwards shape respectively. Normal components are statically stored by shape class, so it has to be copied after retrieval in a different array.

Dividing shapes

Shapes can generally be divided along a given axis. Supported axis are X, Y, Z, Rxy, Phi, Rxyz. A given shape cannot be divided however on any axis. The general rule is that that divisions are possible on whatever axis that produces still known shapes as slices. The division of shapes should not be performed by TGeoShape::Divide() calls, but rather by TGeoVolume::Divide(). The algorithm for dividing a specific shape is known by the shape object, but is always invoked in a generic way from the volume level. Details on how to do that can be found in TGeoVolume class. One can see how all division options are interpreted and which is their result inside specific shape classes.

Definition at line 25 of file TGeoShape.h.

Public Types

enum  EShapeType {
  kBitMask32 = 0xffffffff , kGeoNoShape = 0 , kGeoBad = (1ULL << ( 0 )) , kGeoRSeg = (1ULL << ( 1 )) ,
  kGeoPhiSeg = (1ULL << ( 2 )) , kGeoThetaSeg = (1ULL << ( 3 )) , kGeoVisX = (1ULL << ( 4 )) , kGeoVisY = (1ULL << ( 5 )) ,
  kGeoVisZ = (1ULL << ( 6 )) , kGeoRunTimeShape = (1ULL << ( 7 )) , kGeoInvalidShape = (1ULL << ( 8 )) , kGeoTorus = (1ULL << ( 9 )) ,
  kGeoBox = (1ULL << ( 10 )) , kGeoPara = (1ULL << ( 11 )) , kGeoSph = (1ULL << ( 12 )) , kGeoTube = (1ULL << ( 13 )) ,
  kGeoTubeSeg = (1ULL << ( 14 )) , kGeoCone = (1ULL << ( 15 )) , kGeoConeSeg = (1ULL << ( 16 )) , kGeoPcon = (1ULL << ( 17 )) ,
  kGeoPgon = (1ULL << ( 18 )) , kGeoArb8 = (1ULL << ( 19 )) , kGeoEltu = (1ULL << ( 20 )) , kGeoTrap = (1ULL << ( 21 )) ,
  kGeoCtub = (1ULL << ( 22 )) , kGeoTrd1 = (1ULL << ( 23 )) , kGeoTrd2 = (1ULL << ( 24 )) , kGeoComb = (1ULL << ( 25 )) ,
  kGeoClosedShape = (1ULL << ( 26 )) , kGeoXtru = (1ULL << ( 27 )) , kGeoParaboloid = (1ULL << ( 28 )) , kGeoHalfSpace = (1ULL << ( 29 )) ,
  kGeoHype = (1ULL << ( 30 )) , kGeoSavePrimitive = (1ULL << ( 20 ))
}
 
- Public Types inherited from TObject
enum  {
  kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 ,
  kBitMask = 0x00ffffff
}
 
enum  { kSingleKey = (1ULL << ( 0 )) , kOverwrite = (1ULL << ( 1 )) , kWriteDelete = (1ULL << ( 2 )) }
 
enum  EDeprecatedStatusBits { kObjInCanvas = (1ULL << ( 3 )) }
 
enum  EStatusBits {
  kCanDelete = (1ULL << ( 0 )) , kMustCleanup = (1ULL << ( 3 )) , kIsReferenced = (1ULL << ( 4 )) , kHasUUID = (1ULL << ( 5 )) ,
  kCannotPick = (1ULL << ( 6 )) , kNoContextMenu = (1ULL << ( 8 )) , kInvalidObject = (1ULL << ( 13 ))
}
 

Public Member Functions

 TGeoShape ()
 Default constructor.
 
 TGeoShape (const char *name)
 Default constructor.
 
 ~TGeoShape () override
 Destructor.
 
virtual void AfterStreamer ()
 
virtual Double_t Capacity () const =0
 
void CheckShape (Int_t testNo, Int_t nsamples=10000, Option_t *option="")
 Test for shape navigation methods.
 
virtual void ClearThreadData () const
 
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 void CreateThreadData (Int_t)
 
Int_t DistancetoPrimitive (Int_t px, Int_t py) override=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=nullptr) 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=nullptr) 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
 
void Draw (Option_t *option="") override
 Draw this shape.
 
void ExecuteEvent (Int_t event, Int_t px, Int_t py) override
 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
 
const char * GetName () const override
 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)
 
TClassIsA () const override
 
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
 
void Paint (Option_t *option="") override
 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
 
void Streamer (TBuffer &) override
 Stream an object of class TObject.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
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.
 
void Clear (Option_t *option="") override
 Set name and title to empty strings ("").
 
TObjectClone (const char *newname="") const override
 Make a clone of an object using the Streamer facility.
 
Int_t Compare (const TObject *obj) const override
 Compare two TNamed objects.
 
void Copy (TObject &named) const override
 Copy this to obj.
 
virtual void FillBuffer (char *&buffer)
 Encode TNamed into output buffer.
 
const char * GetName () const override
 Returns name of object.
 
const char * GetTitle () const override
 Returns title of object.
 
ULong_t Hash () const override
 Return hash value for this object.
 
TClassIsA () const override
 
Bool_t IsSortable () const override
 
void ls (Option_t *option="") const override
 List TNamed name and title.
 
TNamedoperator= (const TNamed &rhs)
 TNamed assignment operator.
 
void Print (Option_t *option="") const override
 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.
 
void Streamer (TBuffer &) override
 Stream an object of class TObject.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- 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.
 
virtual void AppendPad (Option_t *option="")
 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 Delete (Option_t *option="")
 Delete this object.
 
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 with: gROOT->SetSelectedPad(c1).
 
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=nullptr)
 Execute method on this object with the given parameter string, e.g.
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr)
 Execute method on this object with parameters stored in the TObjArray.
 
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 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 UInt_t GetUniqueID () const
 Return the unique object id.
 
virtual Bool_t HandleTimer (TTimer *timer)
 Execute action in response of a timer timing out.
 
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)
 
Bool_t IsDestructed () const
 IsDestructed.
 
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
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
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 (the base implementation is no-op).
 
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 [].
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *vp)
 
void * operator new[] (size_t sz)
 
void * operator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 TObject assignment operator.
 
virtual void Pop ()
 Pop on object drawn in a pad to the top of the display list.
 
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.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
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=nullptr, Int_t option=0, Int_t bufsize=0)
 Write this object to the current directory.
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const
 Write this object to the current directory.
 

Static Public Member Functions

static Double_t Big ()
 
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
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 const char * DeclFileName ()
 
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 TNamed
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TObject
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
static Longptr_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 Member Functions

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

UInt_t fShapeBits
 
Int_t fShapeId
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 

Static Private Attributes

static Double_t fgEpsMch = 2.220446049250313e-16
 
static TGeoMatrixfgTransform = nullptr
 

Additional Inherited Members

- Protected Types inherited from TObject
enum  { kOnlyPrepStep = (1ULL << ( 3 )) }
 

#include <TGeoShape.h>

Inheritance diagram for TGeoShape:
[legend]

Member Enumeration Documentation

◆ EShapeType

Enumerator
kBitMask32 
kGeoNoShape 
kGeoBad 
kGeoRSeg 
kGeoPhiSeg 
kGeoThetaSeg 
kGeoVisX 
kGeoVisY 
kGeoVisZ 
kGeoRunTimeShape 
kGeoInvalidShape 
kGeoTorus 
kGeoBox 
kGeoPara 
kGeoSph 
kGeoTube 
kGeoTubeSeg 
kGeoCone 
kGeoConeSeg 
kGeoPcon 
kGeoPgon 
kGeoArb8 
kGeoEltu 
kGeoTrap 
kGeoCtub 
kGeoTrd1 
kGeoTrd2 
kGeoComb 
kGeoClosedShape 
kGeoXtru 
kGeoParaboloid 
kGeoHalfSpace 
kGeoHype 
kGeoSavePrimitive 

Definition at line 30 of file TGeoShape.h.

Constructor & Destructor Documentation

◆ TGeoShape() [1/2]

TGeoShape::TGeoShape ( )

Default constructor.

Definition at line 167 of file TGeoShape.cxx.

◆ TGeoShape() [2/2]

TGeoShape::TGeoShape ( const char *  name)

Default constructor.

Definition at line 182 of file TGeoShape.cxx.

◆ ~TGeoShape()

TGeoShape::~TGeoShape ( )
override

Destructor.

Definition at line 197 of file TGeoShape.cxx.

Member Function Documentation

◆ AfterStreamer()

virtual void TGeoShape::AfterStreamer ( )
inlinevirtual

Reimplemented in TGeoConeSeg, and TGeoTubeSeg.

Definition at line 93 of file TGeoShape.h.

◆ Big()

static Double_t TGeoShape::Big ( )
inlinestatic

Definition at line 87 of file TGeoShape.h.

◆ Capacity()

◆ CheckShape()

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

Test for shape navigation methods.

Summary for test numbers:

  • 1: DistFromInside/Outside. Sample points inside the shape. Generate directions randomly in cos(theta). Compute DistFromInside and move the point with bigger distance. Compute DistFromOutside back from new point. Plot d-(d1+d2)

Definition at line 211 of file TGeoShape.cxx.

◆ Class()

static TClass * TGeoShape::Class ( )
static
Returns
TClass describing this class

◆ Class_Name()

static const char * TGeoShape::Class_Name ( )
static
Returns
Name of this class

◆ Class_Version()

static constexpr Version_t TGeoShape::Class_Version ( )
inlinestaticconstexpr
Returns
Version of this class

Definition at line 171 of file TGeoShape.h.

◆ ClearThreadData()

virtual void TGeoShape::ClearThreadData ( ) const
inlinevirtual

Reimplemented in TGeoCompositeShape, TGeoPgon, and TGeoXtru.

Definition at line 66 of file TGeoShape.h.

◆ ComputeBBox()

◆ ComputeEpsMch()

Double_t TGeoShape::ComputeEpsMch ( )
static

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

Definition at line 225 of file TGeoShape.cxx.

◆ ComputeNormal()

◆ ComputeNormal_v()

virtual void TGeoShape::ComputeNormal_v ( const Double_t ,
const Double_t ,
Double_t ,
Int_t   
)
inlinevirtual

◆ Contains()

◆ Contains_v()

virtual void TGeoShape::Contains_v ( const Double_t ,
Bool_t ,
Int_t   
) const
inlinevirtual

◆ CouldBeCrossed()

virtual Bool_t TGeoShape::CouldBeCrossed ( const Double_t point,
const Double_t dir 
) const
pure virtual

Implemented in TGeoBBox, and TGeoVGShape.

◆ CreateThreadData()

virtual void TGeoShape::CreateThreadData ( Int_t  )
inlinevirtual

Reimplemented in TGeoCompositeShape, TGeoPgon, and TGeoXtru.

Definition at line 67 of file TGeoShape.h.

◆ DeclFileName()

static const char * TGeoShape::DeclFileName ( )
inlinestatic
Returns
Name of the file containing the class declaration

Definition at line 171 of file TGeoShape.h.

◆ DistancetoPrimitive()

Int_t TGeoShape::DistancetoPrimitive ( Int_t  px,
Int_t  py 
)
overridepure virtual

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

This member function must be implemented for each graphics primitive. This default function returns a big number (999999).

Reimplemented from TObject.

Implemented in TGeoTessellated, TGeoBBox, TGeoCompositeShape, TGeoCone, TGeoConeSeg, TGeoEltu, TGeoHalfSpace, TGeoHype, TGeoParaboloid, TGeoPcon, TGeoPgon, TGeoScaledShape, TGeoShapeAssembly, TGeoSphere, TGeoTorus, TGeoTube, TGeoTubeSeg, TGeoXtru, and TGeoVGShape.

◆ DistFromInside()

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

◆ DistFromInside_v()

virtual void TGeoShape::DistFromInside_v ( const Double_t ,
const Double_t ,
Double_t ,
Int_t  ,
Double_t  
) const
inlinevirtual

◆ DistFromOutside()

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

◆ DistFromOutside_v()

virtual void TGeoShape::DistFromOutside_v ( const Double_t ,
const Double_t ,
Double_t ,
Int_t  ,
Double_t  
) const
inlinevirtual

◆ DistToPhiMin()

Double_t TGeoShape::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 
)
static

compute distance from point (inside phi) to both phi planes. Return minimum.

Definition at line 426 of file TGeoShape.cxx.

◆ Divide()

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

◆ Draw()

void TGeoShape::Draw ( Option_t option = "")
overridevirtual

Draw this shape.

Reimplemented from TObject.

Reimplemented in TGeoVGShape.

Definition at line 771 of file TGeoShape.cxx.

◆ EpsMch()

Double_t TGeoShape::EpsMch ( )
static

static function returning the machine round-off error

Definition at line 242 of file TGeoShape.cxx.

◆ ExecuteEvent()

void TGeoShape::ExecuteEvent ( Int_t  event,
Int_t  px,
Int_t  py 
)
overridevirtual

Execute mouse actions on this shape.

Reimplemented from TObject.

Definition at line 760 of file TGeoShape.cxx.

◆ FillBuffer3D()

void TGeoShape::FillBuffer3D ( TBuffer3D buffer,
Int_t  reqSections,
Bool_t  localFrame 
) const
protectedvirtual

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

Reimplemented in TGeoBBox, TEveGeoPolyShape, and ROOT::Experimental::REveGeoPolyShape.

Definition at line 632 of file TGeoShape.cxx.

◆ GetAxisName()

virtual const char * TGeoShape::GetAxisName ( Int_t  iaxis) const
pure virtual

◆ GetAxisRange()

virtual Double_t TGeoShape::GetAxisRange ( Int_t  iaxis,
Double_t xlo,
Double_t xhi 
) const
pure virtual

◆ GetBasicColor()

Int_t TGeoShape::GetBasicColor ( ) const
protected

Get the basic color (0-7).

Definition at line 718 of file TGeoShape.cxx.

◆ GetBoundingCylinder()

virtual void TGeoShape::GetBoundingCylinder ( Double_t param) const
pure virtual

◆ GetBuffer3D()

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

◆ GetByteCount()

virtual Int_t TGeoShape::GetByteCount ( ) const
pure virtual

◆ GetFittingBox()

virtual Int_t TGeoShape::GetFittingBox ( const TGeoBBox parambox,
TGeoMatrix mat,
Double_t dx,
Double_t dy,
Double_t dz 
) const
pure virtual

◆ GetId()

Int_t TGeoShape::GetId ( ) const
inline

Definition at line 123 of file TGeoShape.h.

◆ GetMakeRuntimeShape()

◆ GetMeshNumbers()

virtual void TGeoShape::GetMeshNumbers ( Int_t ,
Int_t ,
Int_t  
) const
inlinevirtual

◆ GetName()

const char * TGeoShape::GetName ( ) const
overridevirtual

Get the shape name.

Reimplemented from TObject.

Reimplemented in TGeoVGShape.

Definition at line 250 of file TGeoShape.cxx.

◆ GetNmeshVertices()

◆ GetPointerName()

const char * TGeoShape::GetPointerName ( ) const

Provide a pointer name containing uid.

Definition at line 746 of file TGeoShape.cxx.

◆ GetPointsOnSegments()

virtual Bool_t TGeoShape::GetPointsOnSegments ( Int_t  npoints,
Double_t array 
) const
pure virtual

◆ GetTransform()

TGeoMatrix * TGeoShape::GetTransform ( )
static

Returns current transformation matrix that applies to shape.

Definition at line 574 of file TGeoShape.cxx.

◆ InspectShape()

◆ InvertShapeBit()

void TGeoShape::InvertShapeBit ( UInt_t  f)
inline

Definition at line 169 of file TGeoShape.h.

◆ IsA()

TClass * TGeoShape::IsA ( ) const
inlineoverridevirtual
Returns
TClass describing current object

Reimplemented from TObject.

Reimplemented in TGeoTrap, TGeoShapeAssembly, TGeoSphere, TGeoTessellated, TGeoTorus, TGeoTrd1, TGeoTrd2, TGeoTube, TGeoTubeSeg, and TGeoXtru.

Definition at line 171 of file TGeoShape.h.

◆ IsAssembly()

virtual Bool_t TGeoShape::IsAssembly ( ) const
inlinevirtual

Reimplemented in TGeoScaledShape, TGeoShapeAssembly, and TGeoVGShape.

Definition at line 129 of file TGeoShape.h.

◆ IsCloseToPhi()

Bool_t TGeoShape::IsCloseToPhi ( Double_t  epsil,
const Double_t point,
Double_t  c1,
Double_t  s1,
Double_t  c2,
Double_t  s2 
)
static

True if point is closer than epsil to one of the phi planes defined by c1,s1 or c2,s2.

Definition at line 273 of file TGeoShape.cxx.

◆ IsComposite()

virtual Bool_t TGeoShape::IsComposite ( ) const
inlinevirtual

Reimplemented in TGeoCompositeShape, and TGeoVGShape.

Definition at line 130 of file TGeoShape.h.

◆ IsCrossingSemiplane()

Bool_t TGeoShape::IsCrossingSemiplane ( const Double_t point,
const Double_t dir,
Double_t  cphi,
Double_t  sphi,
Double_t snext,
Double_t rxy 
)
static

Compute distance from POINT to semiplane defined by PHI angle along DIR.

Computes also radius at crossing point. This might be negative in case the crossing is on the other side of the semiplane.

Definition at line 306 of file TGeoShape.cxx.

◆ IsCylType()

◆ IsInPhiRange()

Bool_t TGeoShape::IsInPhiRange ( const Double_t point,
Double_t  phi1,
Double_t  phi2 
)
static

Static method to check if a point is in the phi range (phi1, phi2) [degrees].

Definition at line 290 of file TGeoShape.cxx.

◆ IsReflected()

virtual Bool_t TGeoShape::IsReflected ( ) const
inlinevirtual

Reimplemented in TGeoScaledShape, and TGeoVGShape.

Definition at line 140 of file TGeoShape.h.

◆ IsRunTimeShape()

Bool_t TGeoShape::IsRunTimeShape ( ) const
inline

Definition at line 142 of file TGeoShape.h.

◆ IsSameWithinTolerance()

Bool_t TGeoShape::IsSameWithinTolerance ( Double_t  a,
Double_t  b 
)
static

Check if two numbers differ with less than a tolerance.

Definition at line 338 of file TGeoShape.cxx.

◆ IsSegCrossing()

Bool_t TGeoShape::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 
)
static

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

Definition at line 349 of file TGeoShape.cxx.

◆ IsValid()

Bool_t TGeoShape::IsValid ( ) const
inline

Definition at line 143 of file TGeoShape.h.

◆ IsValidBox()

virtual Bool_t TGeoShape::IsValidBox ( ) const
pure virtual

Implemented in TGeoBBox, and TGeoVGShape.

◆ IsVecGeom()

virtual Bool_t TGeoShape::IsVecGeom ( ) const
inlinevirtual

Reimplemented in TGeoVGShape.

Definition at line 141 of file TGeoShape.h.

◆ MakeBuffer3D()

◆ NormalPhi()

void TGeoShape::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

Static method to compute normal to phi planes.

Definition at line 464 of file TGeoShape.cxx.

◆ Paint()

void TGeoShape::Paint ( Option_t option = "")
overridevirtual

Paint this shape.

Reimplemented from TObject.

Reimplemented in TGeoVGShape.

Definition at line 784 of file TGeoShape.cxx.

◆ ResetShapeBit()

void TGeoShape::ResetShapeBit ( UInt_t  f)
inline

Definition at line 166 of file TGeoShape.h.

◆ Safety()

◆ Safety_v()

virtual void TGeoShape::Safety_v ( const Double_t ,
const Bool_t ,
Double_t ,
Int_t   
) const
inlinevirtual

◆ SafetyPhi()

Double_t TGeoShape::SafetyPhi ( const Double_t point,
Bool_t  in,
Double_t  phi1,
Double_t  phi2 
)
static

Static method to compute safety w.r.t a phi corner defined by cosines/sines of the angles phi1, phi2.

Definition at line 494 of file TGeoShape.cxx.

◆ SafetySeg()

Double_t TGeoShape::SafetySeg ( Double_t  r,
Double_t  z,
Double_t  r1,
Double_t  z1,
Double_t  r2,
Double_t  z2,
Bool_t  outer 
)
static

Compute distance from point of coordinates (r,z) to segment (r1,z1):(r2,z2)

Definition at line 528 of file TGeoShape.cxx.

◆ SetDimensions()

◆ SetId()

void TGeoShape::SetId ( Int_t  id)
inline

Definition at line 155 of file TGeoShape.h.

◆ SetOnBoundary()

void TGeoShape::SetOnBoundary ( Bool_t  )
inlineprotected

Definition at line 76 of file TGeoShape.h.

◆ SetPoints() [1/2]

◆ SetPoints() [2/2]

◆ SetRuntime()

void TGeoShape::SetRuntime ( Bool_t  flag = kTRUE)
inline

Definition at line 159 of file TGeoShape.h.

◆ SetSegsAndPols()

virtual void TGeoShape::SetSegsAndPols ( TBuffer3D buff) const
pure virtual

◆ SetShapeBit() [1/2]

void TGeoShape::SetShapeBit ( UInt_t  f)
inline

Definition at line 165 of file TGeoShape.h.

◆ SetShapeBit() [2/2]

void TGeoShape::SetShapeBit ( UInt_t  f,
Bool_t  set 
)

Equivalent of TObject::SetBit.

Definition at line 562 of file TGeoShape.cxx.

◆ SetTransform()

void TGeoShape::SetTransform ( TGeoMatrix matrix)
static

Set current transformation matrix that applies to shape.

Definition at line 582 of file TGeoShape.cxx.

◆ ShapeDistancetoPrimitive()

Int_t TGeoShape::ShapeDistancetoPrimitive ( Int_t  numpoints,
Int_t  px,
Int_t  py 
) const

Returns distance to shape primitive mesh.

Definition at line 261 of file TGeoShape.cxx.

◆ Sizeof3D()

◆ Streamer()

void TGeoShape::Streamer ( TBuffer R__b)
overridevirtual

Stream an object of class TObject.

Reimplemented from TObject.

Reimplemented in TGeoTrap, TGeoShapeAssembly, TGeoSphere, TGeoTessellated, TGeoTorus, TGeoTrd1, TGeoTrd2, TGeoTube, TGeoTubeSeg, and TGeoXtru.

◆ StreamerNVirtual()

void TGeoShape::StreamerNVirtual ( TBuffer ClassDef_StreamerNVirtual_b)
inline

Definition at line 171 of file TGeoShape.h.

◆ TestShapeBit()

Bool_t TGeoShape::TestShapeBit ( UInt_t  f) const
inline

Definition at line 167 of file TGeoShape.h.

◆ TestShapeBits()

Int_t TGeoShape::TestShapeBits ( UInt_t  f) const
inline

Definition at line 168 of file TGeoShape.h.

◆ Tolerance()

static Double_t TGeoShape::Tolerance ( )
inlinestatic

Definition at line 90 of file TGeoShape.h.

◆ TransformPoints()

void TGeoShape::TransformPoints ( Double_t points,
UInt_t  NbPoints 
) const
protected

Tranform a set of points (LocalToMaster)

Definition at line 590 of file TGeoShape.cxx.

Member Data Documentation

◆ fgEpsMch

Double_t TGeoShape::fgEpsMch = 2.220446049250313e-16
staticprivate

Definition at line 28 of file TGeoShape.h.

◆ fgTransform

TGeoMatrix * TGeoShape::fgTransform = nullptr
staticprivate

Definition at line 27 of file TGeoShape.h.

◆ fShapeBits

UInt_t TGeoShape::fShapeBits
protected

Definition at line 72 of file TGeoShape.h.

◆ fShapeId

Int_t TGeoShape::fShapeId
protected

Definition at line 71 of file TGeoShape.h.

Libraries for TGeoShape:

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