library: libGeom
#include "TGeoVoxelFinder.h"

TGeoVoxelFinder


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

class TGeoVoxelFinder : public TObject

Inheritance Chart:
TObject
<-
TGeoVoxelFinder
<-
TGeoCylVoxels
TGeoFullVoxels

    protected:
TGeoVoxelFinder(const TGeoVoxelFinder&) virtual void BuildVoxelLimits() Int_t* GetExtraX(Int_t islice, Bool_t left, Int_t& nextra) const Int_t* GetExtraY(Int_t islice, Bool_t left, Int_t& nextra) const Int_t* GetExtraZ(Int_t islice, Bool_t left, Int_t& nextra) const Bool_t GetIndices(Double_t* point) Int_t GetNcandidates() const Int_t GetPriority(Int_t iaxis) const Int_t* GetValidExtra(Int_t* list, Int_t& ncheck) Int_t* GetValidExtra(Int_t n1, UChar_t* array1, Int_t* list, Int_t& ncheck) Int_t* GetValidExtra(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2, Int_t* list, Int_t& ncheck) virtual Int_t* GetVoxelCandidates(Int_t i, Int_t j, Int_t k, Int_t& ncheck) Bool_t Intersect(Int_t n1, UChar_t* array1, Int_t& nf, Int_t* result) Bool_t Intersect(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2, Int_t& nf, Int_t* result) Bool_t Intersect(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2, Int_t n3, UChar_t* array3, Int_t& nf, Int_t* result) Bool_t IntersectAndStore(Int_t n1, UChar_t* array1) Bool_t IntersectAndStore(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2) Bool_t IntersectAndStore(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2, Int_t n3, UChar_t* array3) TGeoVoxelFinder& operator=(const TGeoVoxelFinder&) virtual void SortAll(Option_t* option = "") Bool_t Union(Int_t n1, UChar_t* array1) Bool_t Union(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2) Bool_t Union(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2, Int_t n3, UChar_t* array3) public:
TGeoVoxelFinder() TGeoVoxelFinder(TGeoVolume* vol) virtual ~TGeoVoxelFinder() static TClass* Class() void CreateCheckList() void DaughterToMother(Int_t id, Double_t* local, Double_t* master) const virtual Double_t Efficiency() virtual void FindOverlaps(Int_t inode) const Double_t* GetBoxes() const virtual Int_t* GetCheckList(Double_t* point, Int_t& nelem) Int_t* GetCheckList(Int_t& nelem) const virtual Int_t* GetNextCandidates(Double_t* point, Int_t& ncheck) virtual Int_t* GetNextVoxel(Double_t* point, Double_t* dir, Int_t& ncheck) virtual TClass* IsA() const Bool_t IsInvalid() const Bool_t IsSafeVoxel(Double_t* point, Int_t inode, Double_t minsafe) const Bool_t NeedRebuild() const virtual void Print(Option_t* option = "") const void PrintVoxelLimits(Double_t* point) const void SetInvalid(Bool_t flag = kTRUE) void SetNeedRebuild(Bool_t flag = kTRUE) virtual void ShowMembers(TMemberInspector& insp, char* parent) void SortCrossedVoxels(Double_t* point, Double_t* dir) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b) virtual void Voxelize(Option_t* option = "")

Data Members


    protected:
TGeoVolume* fVolume volume to which applies Int_t fNcandidates ! number of candidates Int_t fCurrentVoxel ! index of current voxel in sorted list Int_t fIbx number of different boundaries on X axis Int_t fIby number of different boundaries on Y axis Int_t fIbz number of different boundaries on Z axis Int_t fNboxes length of boxes array Int_t fNox length of array of X offsets Int_t fNoy length of array of Y offsets Int_t fNoz length of array of Z offsets Int_t fNex length of array of X extra offsets Int_t fNey length of array of Y extra offsets Int_t fNez length of array of Z extra offsets Int_t fNx length of array of X voxels Int_t fNy length of array of Y voxels Int_t fNz length of array of Z voxels Int_t fPriority[3] priority for each axis Int_t fSlices[3] ! slice indices for current voxel Int_t fInc[3] ! slice index increment Double_t fInvdir[3] ! 1/current director cosines Double_t fLimits[3] limits on X,Y,Z Double_t* fBoxes [fNboxes] list of bounding boxes Double_t* fXb [fIbx] ordered array of X box boundaries Double_t* fYb [fIby] ordered array of Y box boundaries Double_t* fZb [fIbz] ordered array of Z box boundaries Int_t* fOBx [fNox] offsets of daughter indices for slices X Int_t* fOBy [fNoy] offsets of daughter indices for slices Y Int_t* fOBz [fNoz] offsets of daughter indices for slices Z Int_t* fOEx [fNox] offsets of extra indices for slices X Int_t* fOEy [fNoy] offsets of extra indices for slices Y Int_t* fOEz [fNoz] offsets of extra indices for slices Z Int_t* fIndX [fNx] indices of daughters inside boundaries X Int_t* fIndY [fNy] indices of daughters inside boundaries Y Int_t* fIndZ [fNz] indices of daughters inside boundaries Z Int_t* fExtraX [fNex] indices of extra daughters in X slices Int_t* fExtraY [fNey] indices of extra daughters in Y slices Int_t* fExtraZ [fNez] indices of extra daughters in Z slices Int_t* fCheckList ! list of candidates UChar_t* fBits1 ! bits used for list intersection public:
static const TGeoVoxelFinder::EVoxelsType kGeoInvalidVoxels static const TGeoVoxelFinder::EVoxelsType kGeoRebuildVoxels

Class Description

 Full description with examples and pictures




TGeoVoxelFinder()
 Default constructor
TGeoVoxelFinder(TGeoVolume *vol)
 Default constructor
TGeoVoxelFinder(const TGeoVoxelFinder& vf)
copy constructor
TGeoVoxelFinder& operator=(const TGeoVoxelFinder& vf)
assignment operator
~TGeoVoxelFinder()
 Destructor
   printf("deleting finder of %s\n", fVolume->GetName());
void BuildVoxelLimits()
 build the array of bounding boxes of the nodes inside
void CreateCheckList()
 Initializes check list.
void DaughterToMother(Int_t id, Double_t *local, Double_t *master)
 convert a point from the local reference system of node id to reference
 system of mother volume
Bool_t IsSafeVoxel(Double_t *point, Int_t inode, Double_t minsafe)
 Computes squared distance from POINT to the voxel(s) containing node INODE. Returns 0
 if POINT inside voxel(s).
Double_t Efficiency()
--- Compute voxelization efficiency.
void FindOverlaps(Int_t inode)
 create the list of nodes for which the bboxes overlap with inode's bbox
Bool_t GetIndices(Double_t *point)
 Getindices for current slices on x, y, z
Int_t * GetExtraX(Int_t islice, Bool_t left, Int_t &nextra)
--- Return the list of extra candidates in a given X slice compared to
 another (left or right)
Int_t * GetExtraY(Int_t islice, Bool_t left, Int_t &nextra)
--- Return the list of extra candidates in a given Y slice compared to
 another (left or right)
Int_t * GetExtraZ(Int_t islice, Bool_t left, Int_t &nextra)
--- Return the list of extra candidates in a given Z slice compared to
 another (left or right)
Int_t * GetValidExtra(Int_t *list, Int_t &ncheck)
 Get extra candidates that are not contained in current check list
   UChar_t *bits = gGeoManager->GetBits();
Int_t * GetNextCandidates(Double_t *point, Int_t &ncheck)
 Returns list of new candidates in next voxel. If NULL, nowhere to
 go next.
void SortCrossedVoxels(Double_t *point, Double_t *dir)
 get the list in the next voxel crossed by a ray
Int_t * GetCheckList(Double_t *point, Int_t &nelem)
 get the list of daughter indices for which point is inside their bbox
Int_t * GetVoxelCandidates(Int_t i, Int_t j, Int_t k, Int_t &ncheck)
 get the list of candidates in voxel (i,j,k) - no check
Bool_t Intersect(Int_t n1, UChar_t *array1, Int_t &nf, Int_t *result)
 return the list of nodes corresponding to one array of bits
Bool_t IntersectAndStore(Int_t n1, UChar_t *array1)
 return the list of nodes corresponding to one array of bits
Bool_t Union(Int_t n1, UChar_t *array1)
 make union of older bits with new array
   printf("Union - one slice\n");
Bool_t Intersect(Int_t n1, UChar_t *array1, Int_t n2, UChar_t *array2, Int_t &nf, Int_t *result)
 return the list of nodes corresponding to the intersection of two arrays of bits
Bool_t Intersect(Int_t n1, UChar_t *array1, Int_t n2, UChar_t *array2, Int_t n3, UChar_t *array3, Int_t &nf, Int_t *result)
 return the list of nodes corresponding to the intersection of three arrays of bits
void SortAll(Option_t *)
 order bounding boxes along x, y, z
void Print(Option_t *)
 Print the voxels.
void PrintVoxelLimits(Double_t *point)
 print the voxel containing point
Int_t GetPriority(Int_t iaxis)
Int_t GetNcandidates()
Bool_t IntersectAndStore(Int_t n1, UChar_t *array1)
   void                IntersectAndStore(Int_t n1, Int_t *array1, Int_t n2, Int_t *array2,
                             Int_t n3, Int_t *array3);
Bool_t IntersectAndStore(Int_t n1, UChar_t *array1, Int_t n2, UChar_t *array2)
Bool_t Union(Int_t n1, UChar_t *array1)
   Bool_t              Union(Int_t n1, Int_t *array1, Int_t n2, Int_t *array2,
                             Int_t n3, Int_t *array3);
Bool_t Union(Int_t n1, UChar_t *array1, Int_t n2, UChar_t *array2)
Bool_t IsInvalid()
Bool_t NeedRebuild()
void SetInvalid(Bool_t flag=kTRUE)
void SetNeedRebuild(Bool_t flag=kTRUE)
void Voxelize(Option_t *option="")

Author: Andrei Gheata 04/02/02
Last update: root/geom:$Name: $:$Id: TGeoVoxelFinder.cxx,v 1.39 2006/07/09 05:27:54 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.