Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TGeoVolumeMulti Class Reference

Volume families.

A volume family is represented by the class TGeoVolumeMulti. It represents a class of volumes having the same shape type and each member will be identified by the same name and volume ID. Any operation applied to a TGeoVolume equally affects all volumes in that family. The creation of a family is generally not a user task, but can be forced in particular cases:

TGeoManager::Volume(const char *vname, const char *shape, Int_t nmed);
TGeoVolume * Volume(const char *name, const char *shape, Int_t nmed, Float_t *upar, Int_t npar=0)
Create a volume in GEANT3 style.

where VNAME is the family name, NMED is the medium number and SHAPE is the shape type that can be:

trd1 - for TGeoTrd1
trd2 - for TGeoTrd2
trap - for TGeoTrap
gtra - for TGeoGtra
para - for TGeoPara
tube, tubs - for TGeoTube, TGeoTubeSeg
cone, cons - for TGeoCone, TgeoCons
eltu - for TGeoEltu
ctub - for TGeoCtub
pcon - for TGeoPcon
pgon - for TGeoPgon
Box class.
Definition TGeoBBox.h:18
The cones are defined by 5 parameters:
Definition TGeoCone.h:18
The cut tubes constructor has the form:
Definition TGeoTube.h:172
An elliptical tube is defined by the two semi-axes A and B.
Definition TGeoEltu.h:18
A twisted trapezoid.
Definition TGeoArb8.h:146
Parallelepiped class.
Definition TGeoPara.h:18
A polycone is represented by a sequence of tubes/cones, glued together at defined Z planes.
Definition TGeoPcon.h:18
Polygons are defined in the same way as polycones, the difference being just that the segments betwee...
Definition TGeoPgon.h:21
A general trapezoid.
Definition TGeoArb8.h:92
A trapezoid with only X varying with Z.
Definition TGeoTrd1.h:18
A trapezoid with only X varying with Z.
Definition TGeoTrd2.h:18
A tube segment is a tube having a range in phi.
Definition TGeoTube.h:92
Cylindrical tube class.
Definition TGeoTube.h:18
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Definition fillpatterns.C:1

Volumes are then added to a given family upon adding the generic name as node inside other volume:

TGeoVolume *box_family = gGeoManager->Volume("BOXES", "box", nmed);
...
gGeoManager->Node("BOXES", Int_t copy_no, "mother_name",
Double_t x, Double_t y, Double_t z, Int_t rot_index,
Bool_t is_only, Double_t *upar, Int_t npar);
R__EXTERN TGeoManager * gGeoManager
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition TGeoVolume.h:49
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17

here:

BOXES - name of the family of boxes
copy_no - user node number for the created node
mother_name - name of the volume to which we want to add the node
x,y,z - translation components
rot_index - indx of a rotation matrix in the list of matrices
upar - array of actual shape parameters
npar - number of parameters
#define a(i)
Definition RSha256.hxx:99
char name[80]
Definition TGX11.cxx:110

The parameters order and number are the same as in the corresponding shape constructors.

Another particular case where volume families are used is when we want that a volume positioned inside a container to match one ore more container limits. Suppose we want to position the same box inside 2 different volumes and we want the Z size to match the one of each container:

TGeoVolume *container1 = gGeoManager->MakeBox("C1", imed, 10,10,30);
TGeoVolume *container2 = gGeoManager->MakeBox("C2", imed, 10,10,20);
TGeoVolume *pvol = gGeoManager->MakeBox("PVOL", jmed, 3,3,-1);
container1->AddNode(pvol, 1);
container2->AddNode(pvol, 1);
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.
virtual TGeoNode * AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="")
Add a TGeoNode to the list of nodes.

Note that the third parameter of PVOL is negative, which does not make sense as half-length on Z. This is interpreted as: when positioned, create a box replacing all invalid parameters with the corresponding dimensions of the container. This is also internally handled by the TGeoVolumeMulti class, which does not need to be instantiated by users.

Dividing volumes

Volumes can be divided according a pattern. The most simple division can be done along one axis, that can be: X, Y, Z, Phi, Rxy or Rxyz. Let's take the most simple case: we would like to divide a box in N equal slices along X coordinate, representing a new volume family. Supposing we already have created the initial box, this can be done like:

TGeoVolume *slicex = box->Divide("SLICEX", 1, N);
#define N
virtual TGeoVolume * Divide(const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step, Int_t numed=0, Option_t *option="")
Division a la G3.

where SLICE is the name of the new family representing all slices and 1 is the slicing axis. The meaning of the axis index is the following: for all volumes having shapes like box, trd1, trd2, trap, gtra or para - 1,2,3 means X,Y,Z; for tube, tubs, cone, cons - 1 means Rxy, 2 means phi and 3 means Z; for pcon and pgon - 2 means phi and 3 means Z; for spheres 1 means R and 2 means phi. In fact, the division operation has the same effect as positioning volumes in a given order inside the divided container - the advantage being that the navigation in such a structure is much faster. When a volume is divided, a volume family corresponding to the slices is created. In case all slices can be represented by a single shape, only one volume is added to the family and positioned N times inside the divided volume, otherwise, each slice will be represented by a distinct volume in the family. Divisions can be also performed in a given range of one axis. For that, one have to specify also the starting coordinate value and the step:

TGeoVolume *slicex = box->Divide("SLICEX", 1, N, start, step);

A check is always done on the resulting division range : if not fitting into the container limits, an error message is posted. If we will browse the divided volume we will notice that it will contain N nodes starting with index 1 upto N. The first one has the lower X limit at START position, while the last one will have the upper X limit at START+N*STEP. The resulting slices cannot be positioned inside an other volume (they are by default positioned inside the divided one) but can be further divided and may contain other volumes:

TGeoVolume *slicey = slicex->Divide("SLICEY", 2, N1);
slicey->AddNode(other_vol, index, some_matrix);
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index

When doing that, we have to remember that SLICEY represents a family, therefore all members of the family will be divided on Y and the other volume will be added as node inside all. In the example above all the resulting slices had the same shape as the divided volume (box). This is not always the case. For instance, dividing a volume with TUBE shape on PHI axis will create equal slices having TUBESEG shape. Other divisions can also create slices having shapes with different dimensions, e.g. the division of a TRD1 volume on Z. When positioning volumes inside slices, one can do it using the generic volume family (e.g. slicey). This should be done as if the coordinate system of the generic slice was the same as the one of the divided volume. The generic slice in case of PHI division is centered with respect to X axis. If the family contains slices of different sizes, any volume positioned inside should fit into the smallest one. Examples for specific divisions according to shape types can be found inside shape classes.

TGeoVolume::Divide(N, Xmin, Xmax, "X");

The GEANT3 option MANY is supported by TGeoVolumeOverlap class. An overlapping volume is in fact a virtual container that does not represent a physical object. It contains a list of nodes that are not its daughters but that must be checked always before the container itself. This list must be defined by users and it is checked and resolved in a priority order. Note that the feature is non-standard to geometrical modelers and it was introduced just to support conversions of GEANT3 geometries, therefore its extensive usage should be avoided.

Definition at line 254 of file TGeoVolume.h.

Public Member Functions

 TGeoVolumeMulti ()
 dummy constructor
 
 TGeoVolumeMulti (const char *name, TGeoMedium *med=nullptr)
 default constructor
 
virtual ~TGeoVolumeMulti ()
 Destructor.
 
virtual TGeoNodeAddNode (TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat, Option_t *option="")
 Add a new node to the list of nodes.
 
virtual void AddNodeOverlap (TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat, Option_t *option="")
 Add a new node to the list of nodes, This node is possibly overlapping with other daughters of the volume or extruding the volume.
 
void AddVolume (TGeoVolume *vol)
 Add a volume with valid shape to the list of volumes.
 
virtual TGeoVolumeDivide (const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step, Int_t numed=0, Option_t *option="")
 division of multiple volumes
 
Int_t GetAxis () const
 
TGeoShapeGetLastShape () const
 Returns the last shape.
 
Int_t GetNdiv () const
 
Int_t GetNvolumes () const
 
Double_t GetStart () const
 
Double_t GetStep () const
 
TGeoVolumeGetVolume (Int_t id) const
 
virtual TClassIsA () const
 
virtual Bool_t IsVolumeMulti () const
 
virtual TGeoVolumeMakeCopyVolume (TGeoShape *newshape)
 Make a copy of this volume build a volume with same name, shape and medium.
 
virtual void SetLineColor (Color_t lcolor)
 Set the line color for all components.
 
virtual void SetLineStyle (Style_t lstyle)
 Set the line style for all components.
 
virtual void SetLineWidth (Width_t lwidth)
 Set the line width for all components.
 
virtual void SetMedium (TGeoMedium *medium)
 Set medium for a multiple volume.
 
virtual void SetVisibility (Bool_t vis=kTRUE)
 Set visibility for all components.
 
virtual void Streamer (TBuffer &)
 Stream an object of class TGeoVolume.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- Public Member Functions inherited from TGeoVolume
 TGeoVolume ()
 dummy constructor
 
 TGeoVolume (const char *name, const TGeoShape *shape, const TGeoMedium *med=nullptr)
 default constructor
 
virtual ~TGeoVolume ()
 Destructor.
 
void AddNodeOffset (TGeoVolume *vol, Int_t copy_no, Double_t offset=0, Option_t *option="")
 Add a division node to the list of nodes.
 
void Browse (TBrowser *b)
 How to browse a volume.
 
Double_t Capacity () const
 Computes the capacity of this [cm^3] as the capacity of its shape.
 
virtual void cd (Int_t inode) const
 Actualize matrix of node indexed <inode>
 
void CheckGeometry (Int_t nrays=1, Double_t startx=0, Double_t starty=0, Double_t startz=0) const
 Shoot nrays with random directions from starting point (startx, starty, startz) in the reference frame of this volume.
 
void CheckOverlaps (Double_t ovlp=0.1, Option_t *option="") const
 Overlap checking tool.
 
void CheckShape (Int_t testNo, Int_t nsamples=10000, Option_t *option="")
 Tests for checking the shape navigation algorithms. See TGeoShape::CheckShape()
 
void CheckShapes ()
 check for negative parameters in shapes.
 
void CleanAll ()
 Clean data of the volume.
 
void ClearNodes ()
 
void ClearShape ()
 Clear the shape of this volume from the list held by the current manager.
 
virtual void ClearThreadData () const
 
void CloneNodesAndConnect (TGeoVolume *newmother) const
 Clone the array of nodes.
 
virtual TGeoVolumeCloneVolume () const
 Clone this volume.
 
Bool_t Contains (const Double_t *point) const
 
Int_t CountNodes (Int_t nlevels=1000, Int_t option=0)
 Count total number of subnodes starting from this volume, nlevels down.
 
virtual void CreateThreadData (Int_t nthreads)
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 compute the closest distance of approach from point px,py to this volume
 
virtual void Draw (Option_t *option="")
 draw top volume according to option
 
virtual void DrawOnly (Option_t *option="")
 draw only this volume
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 Execute mouse actions on this volume.
 
Int_t Export (const char *filename, const char *name="", Option_t *option="")
 Export this volume to a file.
 
Bool_t FindMatrixOfDaughterVolume (TGeoVolume *vol) const
 Find a daughter node having VOL as volume and fill TGeoManager::fHMatrix with its global matrix.
 
TGeoNodeFindNode (const char *name) const
 search a daughter inside the list of nodes
 
void FindOverlaps () const
 loop all nodes marked as overlaps and find overlapping brothers
 
virtual Int_t GetByteCount () const
 get the total size in bytes for this volume
 
virtual Int_t GetCurrentNodeIndex () const
 
TObjectGetField () const
 
TGeoPatternFinderGetFinder () const
 
TGeoExtensionGetFWExtension () const
 
TGeoManagerGetGeoManager () const
 
const char * GetIconName () const
 Returns mime type name of object.
 
Int_t GetIndex (const TGeoNode *node) const
 get index number for a given daughter
 
TGeoMaterialGetMaterial () const
 
TGeoMediumGetMedium () const
 
Int_t GetNdaughters () const
 
virtual Int_t GetNextNodeIndex () const
 
TGeoNodeGetNode (const char *name) const
 get the pointer to a daughter node
 
TGeoNodeGetNode (Int_t i) const
 
Int_t GetNodeIndex (const TGeoNode *node, Int_t *check_list, Int_t ncheck) const
 Get the index of a daughter within check_list by providing the node pointer.
 
TObjArrayGetNodes ()
 
Int_t GetNtotal () const
 
Int_t GetNumber () const
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 Get volume info for the browser.
 
Bool_t GetOptimalVoxels () const
 Returns true if cylindrical voxelization is optimal.
 
Option_tGetOption () const
 
const char * GetPointerName () const
 Provide a pointer name containing uid.
 
Int_t GetRefCount () const
 
TGeoShapeGetShape () const
 
Char_t GetTransparency () const
 
TGeoExtensionGetUserExtension () const
 
TGeoVoxelFinderGetVoxels () const
 Getter for optimization structure.
 
void Grab ()
 
void GrabFocus ()
 Move perspective view focus to this volume.
 
TGeoExtensionGrabFWExtension () const
 Get a copy of the framework extension pointer.
 
TGeoExtensionGrabUserExtension () const
 Get a copy of the user extension pointer.
 
void Gsord (Int_t)
 
void InspectMaterial () const
 Inspect the material for this volume.
 
void InspectShape () const
 
void InvisibleAll (Bool_t flag=kTRUE)
 Make volume and each of it daughters (in)visible.
 
Bool_t IsActive () const
 
Bool_t IsActiveDaughters () const
 
Bool_t IsAdded () const
 
Bool_t IsAllInvisible () const
 Return TRUE if volume and all daughters are invisible.
 
virtual Bool_t IsAssembly () const
 Returns true if the volume is an assembly or a scaled assembly.
 
Bool_t IsCylVoxels () const
 
virtual Bool_t IsFolder () const
 Return TRUE if volume contains nodes.
 
Bool_t IsOverlappingCandidate () const
 
Bool_t IsRaytracing () const
 Check if the painter is currently ray-tracing the content of this volume.
 
Bool_t IsReplicated () const
 
Bool_t IsRunTime () const
 
Bool_t IsSelected () const
 
Bool_t IsStyleDefault () const
 check if the visibility and attributes are the default ones
 
Bool_t IsTopVolume () const
 True if this is the top volume of the geometry.
 
Bool_t IsValid () const
 
Bool_t IsVisContainers () const
 
virtual Bool_t IsVisible () const
 
Bool_t IsVisibleDaughters () const
 
Bool_t IsVisLeaves () const
 
Bool_t IsVisOnly () const
 
Bool_t IsXYZVoxels () const
 
TH2FLegoPlot (Int_t ntheta=20, Double_t themin=0., Double_t themax=180., Int_t nphi=60, Double_t phimin=0., Double_t phimax=360., Double_t rmin=0., Double_t rmax=9999999, Option_t *option="")
 Generate a lego plot fot the top volume, according to option.
 
void MakeCopyNodes (const TGeoVolume *other)
 make a new list of nodes and copy all nodes of other volume inside
 
TGeoVolumeMakeReflectedVolume (const char *newname="") const
 Make a copy of this volume which is reflected with respect to XY plane.
 
Bool_t OptimizeVoxels ()
 Perform an extensive sampling to find which type of voxelization is most efficient.
 
virtual void Paint (Option_t *option="")
 paint volume
 
virtual void Print (Option_t *option="") const
 Print volume info.
 
void PrintNodes () const
 print nodes
 
void PrintVoxels () const
 Print the voxels for this volume.
 
void RandomPoints (Int_t npoints=1000000, Option_t *option="")
 Draw random points in the bounding box of this volume.
 
void RandomRays (Int_t nrays=10000, Double_t startx=0, Double_t starty=0, Double_t startz=0, const char *target_vol=nullptr, Bool_t check_norm=kFALSE)
 Random raytracing method.
 
void Raytrace (Bool_t flag=kTRUE)
 Draw this volume with current settings and perform raytracing in the pad.
 
void RegisterYourself (Option_t *option="")
 Register the volume and all materials/media/matrices/shapes to the manager.
 
void Release ()
 
void RemoveNode (TGeoNode *node)
 Remove an existing daughter.
 
TGeoNodeReplaceNode (TGeoNode *nodeorig, TGeoShape *newshape=nullptr, TGeoMatrix *newpos=nullptr, TGeoMedium *newmed=nullptr)
 Replace an existing daughter with a new volume having the same name but possibly a new shape, position or medium.
 
void ReplayCreation (const TGeoVolume *other)
 Recreate the content of the other volume without pointer copying.
 
void SaveAs (const char *filename, Option_t *option="") const
 Save geometry having this as top volume as a C++ macro.
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 Save a primitive as a C++ statement(s) on output stream "out".
 
void SelectVolume (Bool_t clear=kFALSE)
 Select this volume as matching an arbitrary criteria.
 
void SetActiveDaughters (Bool_t flag=kTRUE)
 
void SetActivity (Bool_t flag=kTRUE)
 
void SetAdded ()
 
void SetAsTopVolume ()
 Set this volume as the TOP one (the whole geometry starts from here)
 
void SetAttVisibility (Bool_t vis)
 
void SetCurrentPoint (Double_t x, Double_t y, Double_t z)
 Set the current tracking point.
 
void SetCylVoxels (Bool_t flag=kTRUE)
 
void SetField (TObject *field)
 
void SetFinder (TGeoPatternFinder *finder)
 
void SetFWExtension (TGeoExtension *ext)
 Connect framework defined extension to the volume.
 
void SetInvisible ()
 
void SetNodes (TObjArray *nodes)
 
void SetNtotal (Int_t ntotal)
 
void SetNumber (Int_t number)
 
void SetOption (const char *option)
 Set the current options (none implemented)
 
void SetOverlappingCandidate (Bool_t flag)
 
void SetReplicated ()
 
void SetShape (const TGeoShape *shape)
 set the shape associated with this volume
 
void SetTransparency (Char_t transparency=0)
 
void SetUserExtension (TGeoExtension *ext)
 Connect user-defined extension to the volume.
 
virtual void SetVisContainers (Bool_t flag=kTRUE)
 Set visibility for containers.
 
virtual void SetVisLeaves (Bool_t flag=kTRUE)
 Set visibility for leaves.
 
virtual void SetVisOnly (Bool_t flag=kTRUE)
 Set visibility for leaves.
 
void SetVoxelFinder (TGeoVoxelFinder *finder)
 
void SortNodes ()
 sort nodes by decreasing volume of the bounding box.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
void UnmarkSaved ()
 Reset SavePrimitive bits.
 
Bool_t Valid () const
 Check if the shape of this volume is valid.
 
void VisibleDaughters (Bool_t vis=kTRUE)
 set visibility for daughters
 
void Voxelize (Option_t *option)
 build the voxels for this volume
 
Double_t Weight (Double_t precision=0.01, Option_t *option="va")
 Estimate the weight of a volume (in kg) with SIGMA(M)/M better than PRECISION.
 
Double_t WeightA () const
 Analytical computation of the weight.
 
- 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.
 
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 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).
 
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.
 
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)
 
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.
 
- Public Member Functions inherited from TGeoAtt
 TGeoAtt ()
 Default constructor.
 
 TGeoAtt (Option_t *vis_opt, Option_t *activity_opt="", Option_t *optimization_opt="")
 Constructor.
 
virtual ~TGeoAtt ()
 Destructor.
 
Bool_t IsActive () const
 
Bool_t IsActiveDaughters () const
 
Bool_t IsVisBranch () const
 
Bool_t IsVisContainers () const
 
Bool_t IsVisDaughters () const
 
Bool_t IsVisible () const
 
Bool_t IsVisLeaves () const
 
Bool_t IsVisOnly () const
 
Bool_t IsVisRaytrace () const
 
Bool_t IsVisStreamed () const
 
Bool_t IsVisTouched () const
 
void ResetAttBit (UInt_t f)
 
void SetActiveDaughters (Bool_t flag=kTRUE)
 
void SetActivity (Bool_t flag=kTRUE)
 
void SetAttBit (UInt_t f)
 
void SetAttBit (UInt_t f, Bool_t set)
 
void SetOptimization (Option_t *option)
 Set optimization flags.
 
void SetVisBranch ()
 Set branch type visibility.
 
void SetVisDaughters (Bool_t vis=kTRUE)
 Set visibility for the daughters.
 
void SetVisRaytrace (Bool_t flag=kTRUE)
 
void SetVisStreamed (Bool_t vis=kTRUE)
 Mark attributes as "streamed to file".
 
void SetVisTouched (Bool_t vis=kTRUE)
 Mark visualization attributes as "modified".
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
Bool_t TestAttBit (UInt_t f) const
 
- Public Member Functions inherited from TAttLine
 TAttLine ()
 AttLine default constructor.
 
 TAttLine (Color_t lcolor, Style_t lstyle, Width_t lwidth)
 AttLine normal constructor.
 
virtual ~TAttLine ()
 AttLine destructor.
 
void Copy (TAttLine &attline) const
 Copy this line attributes to a new TAttLine.
 
Int_t DistancetoLine (Int_t px, Int_t py, Double_t xp1, Double_t yp1, Double_t xp2, Double_t yp2)
 Compute distance from point px,py to a line.
 
virtual Color_t GetLineColor () const
 Return the line color.
 
virtual Style_t GetLineStyle () const
 Return the line style.
 
virtual Width_t GetLineWidth () const
 Return the line width.
 
virtual void Modify ()
 Change current line attributes if necessary.
 
virtual void ResetAttLine (Option_t *option="")
 Reset this line attributes to default values.
 
virtual void SaveLineAttributes (std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1)
 Save line attributes as C++ statement(s) on output stream out.
 
virtual void SetLineAttributes ()
 Invoke the DialogCanvas Line attributes.
 
virtual void SetLineColorAlpha (Color_t lcolor, Float_t lalpha)
 Set a transparent line color.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- Public Member Functions inherited from TAttFill
 TAttFill ()
 AttFill default constructor.
 
 TAttFill (Color_t fcolor, Style_t fstyle)
 AttFill normal constructor.
 
virtual ~TAttFill ()
 AttFill destructor.
 
void Copy (TAttFill &attfill) const
 Copy this fill attributes to a new TAttFill.
 
virtual Color_t GetFillColor () const
 Return the fill area color.
 
virtual Style_t GetFillStyle () const
 Return the fill area style.
 
virtual Bool_t IsTransparent () const
 
virtual void Modify ()
 Change current fill area attributes if necessary.
 
virtual void ResetAttFill (Option_t *option="")
 Reset this fill attributes to default values.
 
virtual void SaveFillAttributes (std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1001)
 Save fill attributes as C++ statement(s) on output stream out.
 
virtual void SetFillAttributes ()
 Invoke the DialogCanvas Fill attributes.
 
virtual void SetFillColor (Color_t fcolor)
 Set the fill area color.
 
virtual void SetFillColorAlpha (Color_t fcolor, Float_t falpha)
 Set a transparent fill color.
 
virtual void SetFillStyle (Style_t fstyle)
 Set the fill area style.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- Public Member Functions inherited from TAtt3D
 TAtt3D ()
 
virtual ~TAtt3D ()
 
virtual void Sizeof3D () const
 Set total size of this 3D object (used by X3D interface).
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 

Static Public Member Functions

static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TGeoVolume
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static void CreateDummyMedium ()
 Create a dummy medium.
 
static const char * DeclFileName ()
 
static TGeoMediumDummyMedium ()
 
static TGeoVolumeImport (const char *filename, const char *name="", Option_t *option="")
 Import a volume from a file.
 
- 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.
 
- Static Public Member Functions inherited from TGeoAtt
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TAttLine
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TAttFill
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TAtt3D
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 

Private Member Functions

 TGeoVolumeMulti (const TGeoVolumeMulti &)=delete
 
TGeoVolumeMultioperator= (const TGeoVolumeMulti &)=delete
 

Private Attributes

Bool_t fAttSet
 
Int_t fAxis
 
TGeoVolumeMultifDivision
 
Int_t fNdiv
 
Int_t fNumed
 
Double_t fStart
 
Double_t fStep
 
TObjArrayfVolumes
 

Additional Inherited Members

- Public Types inherited from TGeoVolume
enum  EGeoVolumeTypes {
  kVolumeReplicated = (1ULL << ( 14 )) , kVolumeSelected = (1ULL << ( 15 )) , kVolumeDiv = (1ULL << ( 16 )) , kVolumeOverlap = (1ULL << ( 17 )) ,
  kVolumeImportNodes = (1ULL << ( 18 )) , kVolumeMulti = (1ULL << ( 19 )) , kVoxelsXYZ = (1ULL << ( 20 )) , kVoxelsCyl = (1ULL << ( 21 )) ,
  kVolumeClone = (1ULL << ( 22 )) , kVolumeAdded = (1ULL << ( 23 )) , kVolumeOC = (1ULL << ( 21 ))
}
 
- 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 Types inherited from TGeoAtt
enum  { kBitMask = 0x00ffffff }
 
enum  EGeoActivityAtt { kActOverride = (1ULL << ( 8 )) , kActNone = (1ULL << ( 9 )) , kActThis = (1ULL << ( 10 )) , kActDaughters = (1ULL << ( 11 )) }
 
enum  EGeoOptimizationAtt { kUseBoundingBox = (1ULL << ( 16 )) , kUseVoxels = (1ULL << ( 17 )) , kUseGsord = (1ULL << ( 18 )) }
 
enum  EGeoSavePrimitiveAtt { kSavePrimitiveAtt = (1ULL << ( 19 )) , kSaveNodesAtt = (1ULL << ( 20 )) }
 
enum  EGeoVisibilityAtt {
  kVisOverride = (1ULL << ( 0 )) , kVisNone = (1ULL << ( 1 )) , kVisThis = (1ULL << ( 2 )) , kVisDaughters = (1ULL << ( 3 )) ,
  kVisOneLevel = (1ULL << ( 4 )) , kVisStreamed = (1ULL << ( 5 )) , kVisTouched = (1ULL << ( 6 )) , kVisOnScreen = (1ULL << ( 7 )) ,
  kVisContainers = (1ULL << ( 12 )) , kVisOnly = (1ULL << ( 13 )) , kVisBranch = (1ULL << ( 14 )) , kVisRaytrace = (1ULL << ( 15 ))
}
 
- Protected Types inherited from TObject
enum  { kOnlyPrepStep = (1ULL << ( 3 )) }
 
- 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 inherited from TGeoVolume
TObjectfField
 pointer to TGeoManager owning this volume
 
TGeoPatternFinderfFinder
 dummy medium
 
TGeoExtensionfFWExtension
 Transient user-defined extension to volumes.
 
TGeoManagerfGeoManager
 
TGeoMediumfMedium
 
TObjArrayfNodes
 
Int_t fNtotal
 
Int_t fNumber
 option - if any
 
TString fOption
 just a hook for now
 
Int_t fRefCount
 
TGeoShapefShape
 
TGeoExtensionfUserExtension
 
TGeoVoxelFinderfVoxels
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 
- Protected Attributes inherited from TGeoAtt
UInt_t fGeoAtt
 
- Protected Attributes inherited from TAttLine
Color_t fLineColor
 Line color.
 
Style_t fLineStyle
 Line style.
 
Width_t fLineWidth
 Line width.
 
- Protected Attributes inherited from TAttFill
Color_t fFillColor
 Fill area color.
 
Style_t fFillStyle
 Fill area style.
 
- Static Protected Attributes inherited from TGeoVolume
static TGeoMediumfgDummyMedium = 0
 

#include <TGeoVolume.h>

Inheritance diagram for TGeoVolumeMulti:
[legend]

Constructor & Destructor Documentation

◆ TGeoVolumeMulti() [1/3]

TGeoVolumeMulti::TGeoVolumeMulti ( const TGeoVolumeMulti )
privatedelete

◆ TGeoVolumeMulti() [2/3]

TGeoVolumeMulti::TGeoVolumeMulti ( )

dummy constructor

Definition at line 2372 of file TGeoVolume.cxx.

◆ TGeoVolumeMulti() [3/3]

TGeoVolumeMulti::TGeoVolumeMulti ( const char *  name,
TGeoMedium med = nullptr 
)

default constructor

Definition at line 2388 of file TGeoVolume.cxx.

◆ ~TGeoVolumeMulti()

TGeoVolumeMulti::~TGeoVolumeMulti ( )
virtual

Destructor.

Definition at line 2408 of file TGeoVolume.cxx.

Member Function Documentation

◆ AddNode()

TGeoNode * TGeoVolumeMulti::AddNode ( TGeoVolume vol,
Int_t  copy_no,
TGeoMatrix mat,
Option_t option = "" 
)
virtual

Add a new node to the list of nodes.

This is the usual method for adding daughters inside the container volume.

Reimplemented from TGeoVolume.

Definition at line 2452 of file TGeoVolume.cxx.

◆ AddNodeOverlap()

void TGeoVolumeMulti::AddNodeOverlap ( TGeoVolume vol,
Int_t  copy_no,
TGeoMatrix mat,
Option_t option = "" 
)
virtual

Add a new node to the list of nodes, This node is possibly overlapping with other daughters of the volume or extruding the volume.

Reimplemented from TGeoVolume.

Definition at line 2473 of file TGeoVolume.cxx.

◆ AddVolume()

void TGeoVolumeMulti::AddVolume ( TGeoVolume vol)

Add a volume with valid shape to the list of volumes.

Copy all existing nodes to this volume

Definition at line 2417 of file TGeoVolume.cxx.

◆ Class()

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

◆ Class_Name()

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

◆ Class_Version()

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

Definition at line 294 of file TGeoVolume.h.

◆ DeclFileName()

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

Definition at line 294 of file TGeoVolume.h.

◆ Divide()

TGeoVolume * TGeoVolumeMulti::Divide ( const char *  divname,
Int_t  iaxis,
Int_t  ndiv,
Double_t  start,
Double_t  step,
Int_t  numed = 0,
Option_t option = "" 
)
virtual

division of multiple volumes

Reimplemented from TGeoVolume.

Definition at line 2502 of file TGeoVolume.cxx.

◆ GetAxis()

Int_t TGeoVolumeMulti::GetAxis ( ) const
inline

Definition at line 282 of file TGeoVolume.h.

◆ GetLastShape()

TGeoShape * TGeoVolumeMulti::GetLastShape ( ) const

Returns the last shape.

Definition at line 2492 of file TGeoVolume.cxx.

◆ GetNdiv()

Int_t TGeoVolumeMulti::GetNdiv ( ) const
inline

Definition at line 283 of file TGeoVolume.h.

◆ GetNvolumes()

Int_t TGeoVolumeMulti::GetNvolumes ( ) const
inline

Definition at line 281 of file TGeoVolume.h.

◆ GetStart()

Double_t TGeoVolumeMulti::GetStart ( ) const
inline

Definition at line 284 of file TGeoVolume.h.

◆ GetStep()

Double_t TGeoVolumeMulti::GetStep ( ) const
inline

Definition at line 285 of file TGeoVolume.h.

◆ GetVolume()

TGeoVolume * TGeoVolumeMulti::GetVolume ( Int_t  id) const
inline

Definition at line 275 of file TGeoVolume.h.

◆ IsA()

virtual TClass * TGeoVolumeMulti::IsA ( ) const
inlinevirtual
Returns
TClass describing current object

Reimplemented from TGeoVolume.

Definition at line 294 of file TGeoVolume.h.

◆ IsVolumeMulti()

virtual Bool_t TGeoVolumeMulti::IsVolumeMulti ( ) const
inlinevirtual

Reimplemented from TGeoVolume.

Definition at line 286 of file TGeoVolume.h.

◆ MakeCopyVolume()

TGeoVolume * TGeoVolumeMulti::MakeCopyVolume ( TGeoShape newshape)
virtual

Make a copy of this volume build a volume with same name, shape and medium.

Reimplemented from TGeoVolume.

Definition at line 2554 of file TGeoVolume.cxx.

◆ operator=()

TGeoVolumeMulti & TGeoVolumeMulti::operator= ( const TGeoVolumeMulti )
privatedelete

◆ SetLineColor()

void TGeoVolumeMulti::SetLineColor ( Color_t  lcolor)
virtual

Set the line color for all components.

Reimplemented from TGeoVolume.

Definition at line 2613 of file TGeoVolume.cxx.

◆ SetLineStyle()

void TGeoVolumeMulti::SetLineStyle ( Style_t  lstyle)
virtual

Set the line style for all components.

Reimplemented from TGeoVolume.

Definition at line 2627 of file TGeoVolume.cxx.

◆ SetLineWidth()

void TGeoVolumeMulti::SetLineWidth ( Width_t  lwidth)
virtual

Set the line width for all components.

Reimplemented from TGeoVolume.

Definition at line 2641 of file TGeoVolume.cxx.

◆ SetMedium()

void TGeoVolumeMulti::SetMedium ( TGeoMedium medium)
virtual

Set medium for a multiple volume.

Reimplemented from TGeoVolume.

Definition at line 2655 of file TGeoVolume.cxx.

◆ SetVisibility()

void TGeoVolumeMulti::SetVisibility ( Bool_t  vis = kTRUE)
virtual

Set visibility for all components.

Reimplemented from TGeoVolume.

Definition at line 2670 of file TGeoVolume.cxx.

◆ Streamer()

virtual void TGeoVolumeMulti::Streamer ( TBuffer R__b)
virtual

Stream an object of class TGeoVolume.

Reimplemented from TGeoVolume.

◆ StreamerNVirtual()

void TGeoVolumeMulti::StreamerNVirtual ( TBuffer ClassDef_StreamerNVirtual_b)
inline

Definition at line 294 of file TGeoVolume.h.

Member Data Documentation

◆ fAttSet

Bool_t TGeoVolumeMulti::fAttSet
private

Definition at line 264 of file TGeoVolume.h.

◆ fAxis

Int_t TGeoVolumeMulti::fAxis
private

Definition at line 261 of file TGeoVolume.h.

◆ fDivision

TGeoVolumeMulti* TGeoVolumeMulti::fDivision
private

Definition at line 258 of file TGeoVolume.h.

◆ fNdiv

Int_t TGeoVolumeMulti::fNdiv
private

Definition at line 260 of file TGeoVolume.h.

◆ fNumed

Int_t TGeoVolumeMulti::fNumed
private

Definition at line 259 of file TGeoVolume.h.

◆ fStart

Double_t TGeoVolumeMulti::fStart
private

Definition at line 262 of file TGeoVolume.h.

◆ fStep

Double_t TGeoVolumeMulti::fStep
private

Definition at line 263 of file TGeoVolume.h.

◆ fVolumes

TObjArray* TGeoVolumeMulti::fVolumes
private

Definition at line 257 of file TGeoVolume.h.

Libraries for TGeoVolumeMulti:

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