53 size_t needed =
SizeOf(maxlevel);
54 char *ptr =
new char[needed];
84 char *ptr =
new char[needed];
129 delete[](
char *) obj;
145 char *where =
reinterpret_cast<char *
>(
this);
146 for (
size_t i = 0; i < nobj; ++i, where += needed) {
185 Error(
"AddLevel",
"You must initialize from navigator or copy from another branch array first.");
280 while (nabove - nbelow > 1) {
281 middle = (nabove + nbelow) / 2;
282 pind = array[middle - 1];
305 for (i = 0; i < maxLevel + 1; i++) {
306 if (
fArray[i] == otherArray[i])
332 Fatal(
"Init",
"Requested level %d exceeds maximum level %d", level + 1,
fMaxLevel);
349 Fatal(
"InitFromNavigator",
"Requested level %d exceeds maximum level %d", level + 1,
fMaxLevel);
368 path +=
fArray[i]->GetName();
379 printf(
"branch: %s\n", path.
Data());
387 for (
Int_t i = 0; i <
n; i++)
409 for (i = 1; i < maxlev + 1; ++i) {
415 for (i = 0; i < navlev - matchlev; i++)
417 for (i = matchlev + 1; i <
fLevel + 1; i++)
int Int_t
Signed integer 4 bytes (int).
bool Bool_t
Boolean (0=false, 1=true) (bool).
long long Long64_t
Portable signed long integer 8 bytes.
const char Option_t
Option string (const char).
static void ReleaseInstance(TGeoBranchArray *obj)
Releases the space allocated for the object.
TGeoNode ** GetArray() const
TGeoBranchArray & operator=(const TGeoBranchArray &)
Assignment. Not valid anymore. Use TGeoBranchArray::MakeCopy instead.
static TGeoBranchArray * MakeCopyAt(const TGeoBranchArray &other, void *addr)
Make a copy of a branch array at the location (if indicated).
static TGeoBranchArray * MakeCopy(const TGeoBranchArray &other)
Make a copy of a branch array at the location (if indicated).
void Init(TGeoNode **branch, TGeoMatrix *global, Int_t level)
Init the branch array from an array of nodes, the global matrix for the path and the level.
void GetPath(TString &path) const
Fill path pointed by the array.
~TGeoBranchArray() override
void CleanMatrix()
Garbage collect the stored matrix.
Bool_t operator!=(const TGeoBranchArray &other) const
Not equal operator.
static TGeoBranchArray * MakeInstanceAt(size_t maxlevel, void *addr)
Make an instance of the class which allocates the node array.
Bool_t operator<(const TGeoBranchArray &other) const
Is equal operator.
TGeoBranchArray(Int_t level)
Constructor. Allocates the array with a size given by level.
void CopyTo(TGeoBranchArray *dest)
Raw memcpy of the branch array content to an existing destination.
Bool_t operator>(const TGeoBranchArray &other) const
Is equal operator.
void UpdateArray(size_t nobj)
Updates the internal addresses for n contiguous objects which have the same fMaxLevel Updates the int...
void UpdateNavigator(TGeoNavigator *nav) const
Update the navigator to reflect the branch.
Bool_t operator>=(const TGeoBranchArray &other) const
Is equal operator.
static TGeoBranchArray * MakeInstance(size_t maxlevel)
Make an instance of the class which allocates the node array.
Bool_t operator<=(const TGeoBranchArray &other) const
Is equal operator.
static void Sort(Int_t n, TGeoBranchArray **array, Int_t *index, Bool_t down=kTRUE)
Sorting of an array of branch array pointers.
TGeoNode ** fArray
![fMaxLevel+1] Array of nodes
void AddLevel(Int_t dindex)
Add and extra daughter to the current path array. No validity check performed !
void InitFromNavigator(TGeoNavigator *nav)
Init the branch array from current navigator state.
Bool_t operator==(const TGeoBranchArray &other) const
Is equal operator.
static Long64_t BinarySearch(Long64_t n, const TGeoBranchArray **array, TGeoBranchArray *value)
Binary search in an array of n pointers to branch arrays, to locate value.
Int_t Compare(const TObject *obj) const override
Compare with other object of same type.
void Print(Option_t *option="") const override
Print branch information.
Geometrical transformation package.
Class providing navigation API for TGeo geometries.
void CdUp()
Go one level up in geometry.
TGeoNode * GetMother(Int_t up=1) const
void SetOutside(Bool_t flag=kTRUE)
TGeoNodeCache * GetCache() const
void CdDown(Int_t index)
Make a daughter of current node current.
Special pool of reusable nodes.
TGeoHMatrix * GetCurrentMatrix() const
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
Bool_t TestBit(UInt_t f) const
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
TObject()
TObject constructor.
const char * Data() const
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.