54 for (
Int_t i = 0; i < 100; i++)
93 for (
Int_t i = 0; i < 100; i++)
136 Info(
"BuildIDArray",
"--- node ID tracking enabled, size=%lu Bytes\n",
ULong_t((2 * nnodes + 1) *
sizeof(
Int_t)));
178 Error(
"CdNode",
"Navigation based on physical node unique id disabled.\n To enable, use: "
179 "gGeoManager->GetCache()->BuildIdArray()");
183 if (nodeid == arr[
fIndex])
187 if (nodeid == arr[
fIndex])
193 Int_t nabove, nbelow, middle;
194 while (nodeid != currentID && nd) {
197 while (nabove - nbelow > 1) {
198 middle = (nabove + nbelow) >> 1;
199 currentID = arr[arr[
fIndex + middle]];
200 if (nodeid == currentID) {
204 if (nodeid < currentID)
250 Int_t index =
fNode->GetVolume()->GetIndex(newnode);
321 volumeNumbers[i] =
fNodeBranch[i]->GetVolume()->GetNumber();
334 isonly[i] = (ismany) ? 0 : 1;
369 for (
Int_t level = 0; level <
fLevel + 1; level++) {
429 fMatrix->LocalToMaster(local, master);
437 fMatrix->MasterToLocal(master, local);
445 fMatrix->LocalToMasterVect(local, master);
453 fMatrix->MasterToLocalVect(master, local);
461 fMatrix->LocalToMasterBomb(local, master);
469 fMatrix->MasterToLocalBomb(master, local);
512 for (
Int_t i = 0; i < capacity; i++) {
530 for (i = 0; i < 3; i++)
532 for (i = 0; i < 30; i++)
556 for (i = 0; i < 30; i++)
558 for (i = 0; i < 3; i++)
606 for (
Int_t i = 0; i < nelem; i++) {
607 current = mat_branch[i +
fStart];
635 for (
Int_t i = 0; i < nelem; i++) {
636 current = mat_branch[i +
fStart];
int Int_t
Signed integer 4 bytes (int).
long Longptr_t
Integer large enough to hold a pointer (platform-dependent).
unsigned long ULong_t
Unsigned long integer 4 bytes (unsigned long). Size depends on architecture.
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
externTGeoManager * gGeoManager
Class storing the state of the cache at a given moment.
Bool_t GetState(Int_t &level, Int_t &nmany, Double_t *point) const
Restore a modeler state.
TGeoHMatrix ** fMatrixBranch
~TGeoCacheState() override
Dtor.
TGeoCacheState()
Default ctor.
void SetState(Int_t level, Int_t startlevel, Int_t nmany, Bool_t ovlp, Double_t *point=nullptr)
Fill current modeller state.
TGeoCacheState(const TGeoCacheState &)
copy constructor
TGeoCacheState & operator=(const TGeoCacheState &)
assignment operator
Matrix class used for computing global transformations Should NOT be used for node definition.
void CopyFrom(const TGeoMatrix *other)
Fast copy method.
void Multiply(const TGeoMatrix *right)
multiply to the right with an other transformation if right is identity matrix, just return
Geometrical transformation package.
Bool_t IsIdentity() const
Special pool of reusable nodes.
void * GetMatrices() const
TGeoNode * GetNode() const
void CdNode(Int_t nodeid)
Change current path to point to the node having this id.
Bool_t PopState(Int_t &nmany, Double_t *point=nullptr)
Pop next state/point from heap.
TGeoNodeCache()
Dummy constructor.
void GetBranchOnlys(Int_t *isonly) const
Fill copy numbers of current branch nodes.
const char * GetPath()
Returns the current geometry path.
void MasterToLocal(const Double_t *master, Double_t *local) const
Point in master frame defined by current matrix converted to local one.
TGeoStateInfo * fPWInfo
! State info for the parallel world
void BuildIdArray()
Builds node id array.
Int_t * fNodeIdArray
! array of node id's
void BuildInfoBranch()
Builds info branch. Navigation is possible only after this step.
Int_t PushState(Bool_t ovlp, Int_t ntmany=0, Int_t startlevel=0, Double_t *point=nullptr)
Push current state into heap.
const Int_t * GetIdBranch() const
TGeoHMatrix ** fMatrixBranch
void GetBranchNumbers(Int_t *copyNumbers, Int_t *volumeNumbers) const
Fill copy numbers of current branch nodes.
TGeoStateInfo ** fInfoBranch
Int_t GetNodeId() const
Get unique node id.
TGeoStateInfo * GetInfo()
Get next state info pointer.
TGeoStateInfo * GetMakePWInfo(Int_t nd)
Get the PW info, if none create one.
void MasterToLocalVect(const Double_t *master, Double_t *local) const
Vector in master frame defined by current matrix converted to local one.
void MasterToLocalBomb(const Double_t *master, Double_t *local) const
Point in master frame defined by current matrix converted to local one and rescaled with bomb factor.
Bool_t HasIdArray() const
TGeoHMatrix * fMatrix
! current matrix
Bool_t CdDown(Int_t index)
Make daughter INDEX of current node the active state. Compute global matrix.
Bool_t RestoreState(Int_t &nmany, TGeoCacheState *state, Double_t *point=nullptr)
Pop next state/point from a backed-up state.
void LocalToMaster(const Double_t *local, Double_t *master) const
Local point converted to master frame defined by current matrix.
void LocalToMasterVect(const Double_t *local, Double_t *master) const
Local vector converted to master frame defined by current matrix.
Int_t GetCurrentNodeId() const
Returns a fixed ID for current physical node.
TGeoNode * fNode
! current node
void LocalToMasterBomb(const Double_t *local, Double_t *master) const
Local point converted to master frame defined by current matrix and rescaled with bomb factor.
void CdUp()
Make mother of current node the active state.
void GetBranchNames(Int_t *names) const
Fill names with current branch volume names (4 char - used by GEANT3 interface).
void FillIdBranch(const Int_t *br, Int_t startlevel=0)
void ReleaseInfo()
Release last used state info pointer.
~TGeoNodeCache() override
Destructor.
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
Int_t GetNdaughters() const
virtual TGeoMatrix * GetMatrix() const =0
TObject & operator=(const TObject &rhs) noexcept
TObject assignment operator.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
TObject()
TObject constructor.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Statefull info for the current geometry level.