class TGeoVoxelFinder: public TObject

 Full description with examples and pictures





/* */

Function Members (Methods)

public:
TGeoVoxelFinder()
TGeoVoxelFinder(TGeoVolume* vol)
virtual~TGeoVoxelFinder()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidCreateCheckList()
voidDaughterToMother(Int_t id, Double_t* local, Double_t* master) const
virtual voidTObject::Delete(Option_t* option = "")
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() const
virtual TObject*TObject::DrawClone(Option_t* option = "") const
virtual voidTObject::Dump() const
virtual Double_tEfficiency()
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual voidFindOverlaps(Int_t inode) const
Double_t*GetBoxes() const
Int_t*GetCheckList(Int_t& nelem) const
virtual Int_t*GetCheckList(Double_t* point, Int_t& nelem)
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() 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 char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() const
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tIsInvalid() const
Bool_tTObject::IsOnHeap() const
Bool_tIsSafeVoxel(Double_t* point, Int_t inode, Double_t minsafe) const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
Bool_tNeedRebuild() const
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* option = "") const
voidPrintVoxelLimits(Double_t* point) const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") const
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")
static voidTObject::SetDtorOnly(void* obj)
voidSetInvalid(Bool_t flag = kTRUE)
voidSetNeedRebuild(Bool_t flag = kTRUE)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual voidSortCrossedVoxels(Double_t* point, Double_t* dir)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidVoxelize(Option_t* option = "")
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
TGeoVoxelFinder(const TGeoVoxelFinder&)
voidBuildVoxelLimits()
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
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_tGetIndices(Double_t* point)
Int_tGetNcandidates() const
Int_tGetPriority(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)
Int_t*GetVoxelCandidates(Int_t i, Int_t j, Int_t k, Int_t& ncheck)
Bool_tIntersect(Int_t n1, UChar_t* array1, Int_t& nf, Int_t* result)
Bool_tIntersect(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2, Int_t& nf, Int_t* result)
Bool_tIntersect(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_tIntersectAndStore(Int_t n1, UChar_t* array1)
Bool_tIntersectAndStore(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2)
Bool_tIntersectAndStore(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2, Int_t n3, UChar_t* array3)
voidTObject::MakeZombie()
TGeoVoxelFinder&operator=(const TGeoVoxelFinder&)
voidSortAll(Option_t* option = "")
Bool_tUnion(Int_t n1, UChar_t* array1)
Bool_tUnion(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2)
Bool_tUnion(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2, Int_t n3, UChar_t* array3)

Data Members

public:
enum EVoxelsType { kGeoInvalidVoxels
kGeoRebuildVoxels
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
UChar_t*fBits1! bits used for list intersection
Double_t*fBoxes[fNboxes] list of bounding boxes
Int_t*fCheckList! list of candidates
Int_tfCurrentVoxel! index of current voxel in sorted list
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_tfIbxnumber of different boundaries on X axis
Int_tfIbynumber of different boundaries on Y axis
Int_tfIbznumber of different boundaries on Z axis
Int_tfInc[3]! slice index increment
UChar_t*fIndcX[fNx] array of slices bits on X
UChar_t*fIndcY[fNy] array of slices bits on Y
UChar_t*fIndcZ[fNz] array of slices bits on Z
Double_tfInvdir[3]! 1/current director cosines
Double_tfLimits[3]limits on X,Y,Z
Int_tfNboxeslength of boxes array
Int_tfNcandidates! number of candidates
Int_tfNexlength of array of X extra offsets
Int_tfNeylength of array of Y extra offsets
Int_tfNezlength of array of Z extra offsets
Int_tfNoxlength of array of X offsets
Int_tfNoylength of array of Y offsets
Int_tfNozlength of array of Z offsets
Int_t*fNsliceX[fNox] number of candidates in X slice
Int_t*fNsliceY[fNoy] number of candidates in Y slice
Int_t*fNsliceZ[fNoz] number of candidates in Z slice
Int_tfNxlength of array of X voxels
Int_tfNylength of array of Y voxels
Int_tfNzlength of array of Z voxels
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_tfPriority[3]priority for each axis
Int_tfSlices[3]! slice indices for current voxel
TGeoVolume*fVolumevolume to which applies
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

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TGeoVoxelFinder()
 Default constructor
TGeoVoxelFinder(TGeoVolume *vol)
 Default constructor
TGeoVoxelFinder(const TGeoVoxelFinder& vf)
copy constructor
TGeoVoxelFinder& operator=(const TGeoVoxelFinder& )
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) const
 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) const
 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) const
 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) const
--- 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) const
--- 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) const
--- 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 * GetValidExtra(Int_t n1, UChar_t* array1, Int_t* list, Int_t& ncheck)
 Get extra candidates that are contained in array1 but not in current check list
   UChar_t *bits = gGeoManager->GetBits();
Int_t * GetValidExtra(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2, Int_t* list, Int_t& ncheck)
 Get extra candidates that are contained in array1 but not 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
Int_t * GetNextVoxel(Double_t* point, Double_t* dir, Int_t& ncheck)
 get the list of new candidates for the next voxel crossed by current ray
   printf("### GetNextVoxel\n");
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 Union(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2)
 make union of older bits with new array
   printf("Union - two slices\n");
Bool_t Union(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2, Int_t n3, UChar_t* array3)
 make union of older bits with new array
   printf("Union - three slices\n");
   printf("n1=%i n2=%i n3=%i\n", n1,n2,n3);
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 IntersectAndStore(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2)
 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
Bool_t IntersectAndStore(Int_t n1, UChar_t* array1, Int_t n2, UChar_t* array2, Int_t n3, UChar_t* array3)
 return the list of nodes corresponding to the intersection of three arrays of bits
void SortAll(Option_t* option = "")
 order bounding boxes along x, y, z
void Print(Option_t* option = "") const
 Print the voxels.
void PrintVoxelLimits(Double_t* point) const
 print the voxel containing point
void Voxelize(Option_t* option = "")
 Voxelize attached volume according to option
void Streamer(TBuffer& b)
 Stream an object of class TGeoVoxelFinder.
Int_t GetPriority(Int_t iaxis) const
{return fPriority[iaxis];}
Int_t GetNcandidates()
{return fNcandidates;}
Int_t * GetCheckList(Double_t* point, Int_t& nelem)
Bool_t IsInvalid()
{return TObject::TestBit(kGeoInvalidVoxels);}
Bool_t NeedRebuild()
{return TObject::TestBit(kGeoRebuildVoxels);}
Double_t * GetBoxes()
{return fBoxes;}
void SetInvalid(Bool_t flag = kTRUE)
{TObject::SetBit(kGeoInvalidVoxels, flag);}
void SetNeedRebuild(Bool_t flag = kTRUE)
{TObject::SetBit(kGeoRebuildVoxels, flag);}

Author: Andrei Gheata 04/02/02
Last update: root/geom:$Id: TGeoVoxelFinder.h 21497 2007-12-19 16:28:00Z brun $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *

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.