#ifndef ROOT_TGeoCache
#define ROOT_TGeoCache
#ifndef ROOT_TSystem
#include "TSystem.h"
#endif
#ifndef ROOT_TGeoNode
#include "TGeoNode.h"
#endif
#ifndef ROOT_TGeoMatrix
#include "TGeoMatrix.h"
#endif
class TBits;
class TGeoManager;
class TGeoNodePos;
class TGeoMatrixCache;
class TGeoNodeArray;
class TGeoMatHandler;
class TGeoCacheState : public TObject
{
protected:
Int_t fCapacity;
Int_t fLevel;
Int_t fNmany;
Int_t fStart;
Int_t fIdBranch[30];
Double_t *fPoint;
Bool_t fOverlapping;
TGeoCacheState(const TGeoCacheState&);
TGeoCacheState& operator=(const TGeoCacheState&);
public:
Int_t *fBranch;
Int_t *fMatrices;
public:
TGeoCacheState();
TGeoCacheState(Int_t capacity);
virtual ~TGeoCacheState();
virtual void SetState(Int_t level, Int_t startlevel, Int_t nmany, Bool_t ovlp, Double_t *point=0);
virtual Bool_t GetState(Int_t &level, Int_t &nmany, Double_t *point) const;
ClassDef(TGeoCacheState, 2)
};
class TGeoCacheStateDummy : public TGeoCacheState
{
protected:
TGeoCacheStateDummy(const TGeoCacheStateDummy&);
TGeoCacheStateDummy& operator=(const TGeoCacheStateDummy&);
public:
TGeoNode **fNodeBranch;
TGeoHMatrix **fMatrixBranch;
TGeoHMatrix **fMatPtr;
public:
TGeoCacheStateDummy();
TGeoCacheStateDummy(Int_t capacity);
virtual ~TGeoCacheStateDummy();
virtual void SetState(Int_t level, Int_t startlevel, Int_t nmany, Bool_t ovlp, Double_t *point=0);
virtual Bool_t GetState(Int_t &level, Int_t &nmany, Double_t *point) const;
ClassDef(TGeoCacheStateDummy, 1)
};
class TGeoNodeCache
{
protected:
Double_t fGeoCacheUsageRatio;
Int_t fGeoCacheMaxDaughters;
Int_t fGeoCacheMaxSize;
Int_t fGeoCacheDefaultLevel;
Int_t fGeoCacheMaxLevels;
Int_t fGeoCacheObjArrayInd;
Int_t fGeoCacheStackSize;
Int_t fLevel;
Int_t fCurrentID;
TString fPath;
TObjArray *fStack;
Int_t *fNodeIdArray;
Int_t fIndex;
private:
Int_t fSize;
Int_t fNused;
Int_t fDefaultLevel;
Int_t fTopNode;
Int_t fCount;
Int_t fCountLimit;
Int_t fCurrentNode;
Int_t fCurrentCache;
Int_t fCurrentIndex;
Int_t *fBranch;
Int_t *fMatrices;
Int_t fStackLevel;
TGeoHMatrix *fGlobalMatrix;
TGeoNodeArray **fCache;
protected:
TGeoMatrixCache *fMatrixPool;
Int_t fIdBranch[30];
TGeoNodeCache(const TGeoNodeCache&);
TGeoNodeCache& operator=(const TGeoNodeCache&);
public:
TGeoNodeCache();
TGeoNodeCache(Bool_t nodeid);
TGeoNodeCache(Int_t size, Bool_t nodeid=kFALSE);
virtual ~TGeoNodeCache();
Int_t AddNode(TGeoNode *node);
void BuildIdArray();
Int_t CacheId(Int_t nindex) const {return (*((UChar_t*)&nindex+3)>fGeoCacheMaxDaughters)?fGeoCacheObjArrayInd:*((UChar_t*)&nindex+3);}
void CdCache();
void CdNode(Int_t nodeid);
virtual Bool_t CdDown(Int_t index, Bool_t make=kTRUE);
virtual void CdTop() {fLevel=1; CdUp();}
virtual void CdUp();
virtual void CleanCache();
virtual void ClearDaughter(Int_t index);
virtual void ClearNode(Int_t nindex);
virtual void Compact();
void FillIdBranch(const Int_t *br, Int_t startlevel=0) {memcpy(fIdBranch+startlevel,br,(fLevel+1-startlevel)*sizeof(Int_t)); fIndex=fIdBranch[fLevel];}
const Int_t *GetIdBranch() const {return fIdBranch;}
virtual void DeleteCaches();
virtual Bool_t DumpNodes();
virtual void *GetBranch() const {return fBranch;}
virtual void GetBranchNames(Int_t * ) const {;}
virtual void GetBranchNumbers(Int_t * , Int_t * ) const {;}
virtual void GetBranchOnlys(Int_t * ) const {;}
virtual void *GetMatrices() const {return fMatrices;}
virtual TGeoHMatrix *GetCurrentMatrix() const;
Int_t GetCurrentNode() const {return fCurrentNode;}
Int_t GetCurrentNodeId() const;
virtual TGeoNode *GetMother(Int_t up=1) const;
virtual TGeoHMatrix *GetMotherMatrix(Int_t ) const {return 0;}
virtual TGeoNode *GetNode() const;
Int_t GetStackLevel() const {return fStackLevel;}
Int_t GetTopNode() const {return fTopNode;}
Int_t GetLevel() const {return fLevel;}
virtual Int_t GetFreeSpace() const {return (fGeoCacheMaxSize-fSize);}
TGeoMatrixCache *GetMatrixPool() const {return fMatrixPool;}
virtual Int_t GetNfree() const {return (fSize-fNused);}
virtual Int_t GetNused() const {return fNused;}
virtual const char *GetPath();
virtual Int_t GetNodeId() const;
Int_t GetSize() const {return fSize;}
virtual Int_t GetUsageCount() const;
Bool_t HasIdArray() const {return (fNodeIdArray)?kTRUE:kFALSE;}
virtual void IncreasePool(Int_t size) {fSize+=size;}
virtual void IncrementUsageCount();
Int_t Index(Int_t nindex) const {return (nindex & 0xFFFFFF);}
virtual Bool_t IsDummy() const {return kFALSE;}
virtual void LocalToMaster(const Double_t *local, Double_t *master) const;
virtual void MasterToLocal(const Double_t *master, Double_t *local) const;
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const;
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const;
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const;
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const;
virtual void PrintNode() const;
virtual Int_t PushState(Bool_t ovlp, Int_t ntmany=0, Int_t startlevel=0, Double_t *point=0);
virtual Bool_t PopState(Int_t &nmany, Double_t *point=0);
virtual Bool_t PopState(Int_t &nmany, Int_t level, Double_t *point=0);
virtual void PopDummy(Int_t ipop=9999) {fStackLevel=(ipop>fStackLevel)?(fStackLevel-1):(ipop-1);}
virtual void Refresh();
void SetDefaultLevel(Int_t level) {fDefaultLevel = level;}
Bool_t SetPersistency();
void Status() const;
ClassDef(TGeoNodeCache, 0)
};
class TGeoCacheDummy : public TGeoNodeCache
{
private:
TGeoNode *fTop;
TGeoNode *fNode;
TGeoHMatrix *fMatrix;
TGeoHMatrix **fMatrixBranch;
TGeoHMatrix **fMPB;
TGeoNode **fNodeBranch;
protected:
TGeoCacheDummy(const TGeoCacheDummy&);
TGeoCacheDummy& operator=(const TGeoCacheDummy&);
public:
TGeoCacheDummy();
TGeoCacheDummy(TGeoNode *top, Bool_t nodeid=kFALSE, Int_t capacity=30);
virtual ~TGeoCacheDummy();
virtual Bool_t CdDown(Int_t index, Bool_t make=kTRUE);
virtual void CdTop() {fIndex=0; fLevel=0; fNode=fTop; fMatrix=fMatrixBranch[0];}
virtual void CdUp();
virtual void CleanCache() {;}
virtual void ClearDaughter(Int_t ) {;}
virtual void ClearNode(Int_t ) {;}
virtual void Compact() {;}
virtual void DeleteCaches() {;}
virtual Bool_t DumpNodes() {return kFALSE;}
virtual void *GetBranch() const {return fNodeBranch;}
virtual void GetBranchNames(Int_t *names) const;
virtual void GetBranchNumbers(Int_t *copyNumbers, Int_t *volumeNumbers) const;
virtual void GetBranchOnlys(Int_t *isonly) const;
virtual TGeoHMatrix *GetCurrentMatrix() const {return fMatrix;}
Int_t GetCurrentNode() const {return 0;}
virtual Int_t GetFreeSpace() const {return fGeoCacheMaxSize;}
virtual void *GetMatrices() const {return fMatrixBranch;}
virtual TGeoNode *GetMother(Int_t up=1) const {return ((fLevel-up)>=0)?fNodeBranch[fLevel-up]:0;}
virtual TGeoHMatrix *GetMotherMatrix(Int_t up=1) const {return ((fLevel-up)>=0)?fMatrixBranch[fLevel-up]:0;}
virtual TGeoNode *GetNode() const {return fNode;}
virtual Int_t GetNfree() const {return fGeoCacheMaxSize;}
virtual Int_t GetNused() const {return 0;}
virtual const char *GetPath();
virtual Int_t GetNodeId() const;
virtual Int_t GetUsageCount() const {return 0;}
virtual void IncreasePool(Int_t ) {;}
virtual void IncrementUsageCount() {;}
virtual Bool_t IsDummy() const {return kTRUE;}
virtual void LocalToMaster(const Double_t *local, Double_t *master) const;
virtual void MasterToLocal(const Double_t *master, Double_t *local) const;
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const;
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const;
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const;
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const;
virtual void PrintNode() const {;}
virtual void Refresh();
Bool_t SetPersistency() {return kFALSE;}
void Status() const {;}
ClassDef(TGeoCacheDummy, 0)
};
class TGeoMatrixCache
{
private:
Int_t fMatrix;
Int_t fHandler;
Int_t fCacheId;
Int_t fLength;
UInt_t fSize[7];
UInt_t fFree[7];
Double_t *fCache[7];
TBits *fBitsArray[7];
TGeoMatHandler **fHandlers;
protected:
Int_t fGeoMinCacheSize;
void IncreaseCache();
TGeoMatrixCache(const TGeoMatrixCache&);
TGeoMatrixCache& operator=(const TGeoMatrixCache&);
public:
TGeoMatrixCache();
TGeoMatrixCache(Int_t size);
virtual ~TGeoMatrixCache();
Int_t AddMatrix(TGeoMatrix *matrix);
void cd(Int_t mindex);
void ClearMatrix(Int_t index);
void GetMatrix(TGeoHMatrix *matrix) const;
void LocalToMaster(const Double_t *local, Double_t *master) const;
void LocalToMasterVect(const Double_t *local, Double_t *master) const;
void LocalToMasterBomb(const Double_t *local, Double_t *master) const;
void MasterToLocal(const Double_t *master, Double_t *local) const;
void MasterToLocalVect(const Double_t *master, Double_t *local) const;
void MasterToLocalBomb(const Double_t *master, Double_t *local) const;
void Status() const;
ClassDef(TGeoMatrixCache, 0)
};
class TGeoNodePos : public TObject
{
public:
static const Int_t fgPersistentNodeMask;
static const UChar_t fgPersistentMatrixMask;
static const UInt_t fgNoMatrix;
private:
Int_t fNdaughters;
Int_t fMatrix;
Int_t fCount;
Int_t *fDaughters;
TGeoNode *fNode;
protected:
TGeoNodePos(const TGeoNodePos&);
TGeoNodePos& operator=(const TGeoNodePos&);
public:
TGeoNodePos();
TGeoNodePos(Int_t ndaughters);
virtual ~TGeoNodePos();
Int_t AddDaughter(Int_t ind, Int_t nindex) {return (fDaughters[ind]=nindex);}
Int_t AddMatrix(TGeoMatrix *global);
void ClearDaughter(Int_t ind) {fDaughters[ind] = 0;}
void ClearMatrix();
Int_t GetDaughter(Int_t ind) const;
Int_t GetMatrixInd() const {return fMatrix;}
const char *GetName() const {return fNode->GetName();}
Int_t GetNdaughters() const {return fNdaughters;}
TGeoNode *GetNode() const {return fNode;}
Int_t GetUsageCount() const {return (fCount & 0x7FFFFFFF);}
Bool_t HasDaughters() const;
Bool_t IsPersistent() const {return (((fCount & fgPersistentNodeMask)==0)?kFALSE:kTRUE);}
void IncrementUsageCount() {fCount++;}
void Map(TGeoNode *node);
void ResetCount() {fCount &= fgPersistentNodeMask;}
void SetMatrix(Int_t mat_ind) {fMatrix = mat_ind;}
void SetPersistency(Bool_t flag=kTRUE);
ClassDef(TGeoNodePos, 1)
};
class TGeoNodeArray : public TObject
{
public:
static const Int_t fgGeoArrayMaxSize;
static const Int_t fgGeoArrayInitSize;
static const Int_t fgGeoReleasedSpace;
private:
Int_t fNodeSize;
Int_t fNdaughters;
Int_t *fOffset;
protected:
Int_t fSize;
Int_t fFirstFree;
Int_t fCurrent;
Int_t fNused;
TBits *fBitsArray;
private:
Int_t *fArray;
protected:
TGeoNodeArray(const TGeoNodeArray&);
TGeoNodeArray& operator=(const TGeoNodeArray&);
public:
TGeoNodeArray();
TGeoNodeArray(Int_t ndaughters, Int_t size=0);
virtual ~TGeoNodeArray();
virtual Int_t AddDaughter(TGeoNode *node, Int_t i);
virtual Int_t AddNode(TGeoNode *node);
virtual Int_t AddMatrix(TGeoMatrix *global);
virtual void cd(Int_t inode) {fOffset = fArray+inode*fNodeSize;
fCurrent = inode;}
virtual void ClearDaughter(Int_t ind);
virtual void ClearMatrix();
virtual void ClearNode();
virtual void Compact();
void DeleteArray();
virtual Int_t GetDaughter(Int_t ind) const {return fOffset[3+ind];}
virtual Int_t GetMatrixInd() const {return fOffset[1];}
virtual Int_t GetNdaughters() const {return fNdaughters;}
virtual TGeoNode *GetNode() const {return (TGeoNode*)(fOffset[0]+(Long_t)gSystem);}
Int_t GetNused() const {return fNused;}
Int_t GetSize() const {return fSize;}
virtual Int_t GetUsageCount() const {return (fOffset[2]&0x3FFFFFFF);}
virtual Bool_t HasDaughters() const;
virtual void IncreaseArray();
virtual void IncrementUsageCount() {fOffset[2]++;}
virtual Bool_t IsPersistent() const;
virtual void SetMatrix(Int_t mind) {fOffset[1] = mind;}
virtual void SetPersistency(Bool_t flag=kTRUE);
ClassDef(TGeoNodeArray, 1)
};
class TGeoNodeObjArray : public TGeoNodeArray
{
private:
Int_t fIndex;
TObjArray *fObjArray;
TGeoNodePos *fCurrent;
protected:
TGeoNodeObjArray(const TGeoNodeObjArray&);
TGeoNodeObjArray& operator=(const TGeoNodeObjArray&);
public:
TGeoNodeObjArray();
TGeoNodeObjArray(Int_t size);
virtual ~TGeoNodeObjArray();
virtual Int_t AddDaughter(TGeoNode *node, Int_t i);
virtual Int_t AddNode(TGeoNode *node);
virtual Int_t AddMatrix(TGeoMatrix *global);
virtual void cd(Int_t inode);
virtual void ClearDaughter(Int_t ind);
virtual void ClearMatrix();
virtual void ClearNode();
virtual Int_t GetMatrixInd() const {return fCurrent->GetMatrixInd();}
virtual Int_t GetDaughter(Int_t ind) const {return fCurrent->GetDaughter(ind);}
virtual Int_t GetNdaughters() const {return fCurrent->GetNdaughters();}
virtual TGeoNode *GetNode() const {return fCurrent->GetNode();}
virtual Int_t GetUsageCount() const {return fCurrent->GetUsageCount();}
virtual Bool_t HasDaughters() const {return fCurrent->HasDaughters();}
virtual void IncreaseArray();
virtual void IncrementUsageCount() {fCurrent->IncrementUsageCount();}
virtual Bool_t IsPersistent() const {return fCurrent->IsPersistent();}
virtual void SetPersistency(Bool_t flag=kTRUE) {fCurrent->SetPersistency(flag);}
virtual void SetMatrix(Int_t mind) {fCurrent->SetMatrix(mind);}
ClassDef(TGeoNodeObjArray, 1)
};
class TGeoMatHandler
{
protected:
Double_t *fLocation;
TGeoMatHandler(const TGeoMatHandler& gmh) :
fLocation(gmh.fLocation) { }
TGeoMatHandler& operator=(const TGeoMatHandler& gmh)
{if(this!=&gmh) fLocation=gmh.fLocation; return *this;}
public:
TGeoMatHandler();
virtual ~TGeoMatHandler() {}
void SetLocation(Double_t *add) {fLocation=add;}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix) = 0;
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix) = 0;
virtual void LocalToMaster(const Double_t *local, Double_t *master) const = 0;
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const = 0;
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const = 0;
virtual void MasterToLocal(const Double_t *master, Double_t *local) const = 0;
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const = 0;
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const = 0;
ClassDef(TGeoMatHandler,0)
};
class TGeoMatHandlerId : public TGeoMatHandler
{
public:
TGeoMatHandlerId() {}
virtual ~TGeoMatHandlerId() {}
virtual void AddMatrix(Double_t * , TGeoMatrix * ) {;}
virtual void GetMatrix(Double_t * , TGeoHMatrix * ) {;}
virtual void LocalToMaster(const Double_t *local, Double_t *master) const
{memcpy(master, local, 3*sizeof(Double_t));}
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
{memcpy(master, local, 3*sizeof(Double_t));}
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const
{memcpy(master, local, 3*sizeof(Double_t));}
virtual void MasterToLocal(const Double_t *master, Double_t *local) const
{memcpy(local, master, 3*sizeof(Double_t));}
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
{memcpy(local, master, 3*sizeof(Double_t));}
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const
{memcpy(local, master, 3*sizeof(Double_t));}
ClassDef(TGeoMatHandlerId,0)
};
class TGeoMatHandlerX : public TGeoMatHandler
{
public:
TGeoMatHandlerX() {}
virtual ~TGeoMatHandlerX() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t *local, Double_t *master) const;
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
{memcpy(master, local, 3*sizeof(Double_t));}
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const;
virtual void MasterToLocal(const Double_t *master, Double_t *local) const;
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
{memcpy(local, master, 3*sizeof(Double_t));}
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const;
ClassDef(TGeoMatHandlerX,0)
};
class TGeoMatHandlerY : public TGeoMatHandler
{
public:
TGeoMatHandlerY() {}
virtual ~TGeoMatHandlerY() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t *local, Double_t *master) const;
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
{memcpy(master, local, 3*sizeof(Double_t));}
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const;
virtual void MasterToLocal(const Double_t *master, Double_t *local) const;
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
{memcpy(local, master, 3*sizeof(Double_t));}
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const;
ClassDef(TGeoMatHandlerY,0)
};
class TGeoMatHandlerZ : public TGeoMatHandler
{
public:
TGeoMatHandlerZ() {}
virtual ~TGeoMatHandlerZ() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t *local, Double_t *master) const;
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
{memcpy(master, local, 3*sizeof(Double_t));}
virtual void MasterToLocal(const Double_t *master, Double_t *local) const;
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
{memcpy(local, master, 3*sizeof(Double_t));}
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const;
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const;
ClassDef(TGeoMatHandlerZ,0)
};
class TGeoMatHandlerXY : public TGeoMatHandler
{
public:
TGeoMatHandlerXY() {}
virtual ~TGeoMatHandlerXY() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t *local, Double_t *master) const;
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
{memcpy(master, local, 3*sizeof(Double_t));}
virtual void MasterToLocal(const Double_t *master, Double_t *local) const;
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
{memcpy(local, master, 3*sizeof(Double_t));}
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const;
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const;
ClassDef(TGeoMatHandlerXY,0)
};
class TGeoMatHandlerXZ : public TGeoMatHandler
{
public:
TGeoMatHandlerXZ() {}
virtual ~TGeoMatHandlerXZ() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t *local, Double_t *master) const;
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
{memcpy(master, local, 3*sizeof(Double_t));}
virtual void MasterToLocal(const Double_t *master, Double_t *local) const;
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
{memcpy(local, master, 3*sizeof(Double_t));}
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const;
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const;
ClassDef(TGeoMatHandlerXZ,0)
};
class TGeoMatHandlerYZ : public TGeoMatHandler
{
public:
TGeoMatHandlerYZ() {}
virtual ~TGeoMatHandlerYZ() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t *local, Double_t *master) const;
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
{memcpy(master, local, 3*sizeof(Double_t));}
virtual void MasterToLocal(const Double_t *master, Double_t *local) const;
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
{memcpy(local, master, 3*sizeof(Double_t));}
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const;
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const;
ClassDef(TGeoMatHandlerYZ,0)
};
class TGeoMatHandlerXYZ : public TGeoMatHandler
{
public:
TGeoMatHandlerXYZ() {}
virtual ~TGeoMatHandlerXYZ() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t *local, Double_t *master) const;
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
{memcpy(master, local, 3*sizeof(Double_t));}
virtual void MasterToLocal(const Double_t *master, Double_t *local) const;
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
{memcpy(local, master, 3*sizeof(Double_t));}
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const;
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const;
ClassDef(TGeoMatHandlerXYZ,0)
};
class TGeoMatHandlerRot : public TGeoMatHandler
{
public:
TGeoMatHandlerRot() {}
virtual ~TGeoMatHandlerRot() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t *local, Double_t *master) const;
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
{TGeoMatHandlerRot::LocalToMaster(local, master);}
virtual void MasterToLocal(const Double_t *master, Double_t *local) const;
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
{TGeoMatHandlerRot::MasterToLocal(master, local);}
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const
{LocalToMaster(local, master);}
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const
{MasterToLocal(master, local);}
ClassDef(TGeoMatHandlerRot,0)
};
class TGeoMatHandlerRotTr : public TGeoMatHandler
{
public:
TGeoMatHandlerRotTr() {}
virtual ~TGeoMatHandlerRotTr() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t *local, Double_t *master) const;
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const;
virtual void MasterToLocal(const Double_t *master, Double_t *local) const;
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const;
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const;
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const;
ClassDef(TGeoMatHandlerRotTr,0)
};
class TGeoMatHandlerScl : public TGeoMatHandler
{
public:
TGeoMatHandlerScl() {}
virtual ~TGeoMatHandlerScl() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t * , Double_t * ) const {;}
virtual void LocalToMasterVect(const Double_t * , Double_t * ) const {;}
virtual void MasterToLocal(const Double_t * , Double_t * ) const {;}
virtual void MasterToLocalVect(const Double_t * , Double_t * ) const {;}
virtual void LocalToMasterBomb(const Double_t * , Double_t * ) const {;}
virtual void MasterToLocalBomb(const Double_t * , Double_t * ) const {;}
ClassDef(TGeoMatHandlerScl,0)
};
class TGeoMatHandlerTrScl : public TGeoMatHandler
{
public:
TGeoMatHandlerTrScl() {}
virtual ~TGeoMatHandlerTrScl() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t * , Double_t * ) const {;}
virtual void LocalToMasterVect(const Double_t * , Double_t * ) const {;}
virtual void MasterToLocal(const Double_t * , Double_t * ) const {;}
virtual void MasterToLocalVect(const Double_t * , Double_t * ) const {;}
virtual void LocalToMasterBomb(const Double_t * , Double_t * ) const {;}
virtual void MasterToLocalBomb(const Double_t * , Double_t * ) const {;}
ClassDef(TGeoMatHandlerTrScl,0)
};
class TGeoMatHandlerRotScl : public TGeoMatHandler
{
public:
TGeoMatHandlerRotScl() {}
virtual ~TGeoMatHandlerRotScl() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t * , Double_t * ) const {;}
virtual void LocalToMasterVect(const Double_t * , Double_t * ) const {;}
virtual void MasterToLocal(const Double_t * , Double_t * ) const {;}
virtual void MasterToLocalVect(const Double_t * , Double_t * ) const {;}
virtual void LocalToMasterBomb(const Double_t * , Double_t * ) const {;}
virtual void MasterToLocalBomb(const Double_t * , Double_t * ) const {;}
ClassDef(TGeoMatHandlerRotScl,0)
};
class TGeoMatHandlerRotTrScl : public TGeoMatHandler
{
public:
TGeoMatHandlerRotTrScl() {}
virtual ~TGeoMatHandlerRotTrScl() {}
virtual void AddMatrix(Double_t *to, TGeoMatrix *matrix);
virtual void GetMatrix(Double_t *from, TGeoHMatrix *matrix);
virtual void LocalToMaster(const Double_t * , Double_t * ) const {;}
virtual void LocalToMasterVect(const Double_t * , Double_t * ) const {;}
virtual void MasterToLocal(const Double_t * , Double_t * ) const {;}
virtual void MasterToLocalVect(const Double_t * , Double_t * ) const {;}
virtual void LocalToMasterBomb(const Double_t * , Double_t * ) const {;}
virtual void MasterToLocalBomb(const Double_t * , Double_t * ) const {;}
ClassDef(TGeoMatHandlerRotTrScl,0)
};
inline void TGeoNodeCache::CdCache() {fCache[fCurrentCache]->cd(fCurrentIndex);}
inline void TGeoNodeCache::ClearDaughter(Int_t index) {CdCache(); fCache[fCurrentCache]->ClearDaughter(index);}
inline void TGeoNodeCache::IncrementUsageCount() {fCache[fCurrentCache]->IncrementUsageCount(); fCount++;}
inline Int_t TGeoNodeCache::GetUsageCount() const {return fCache[fCurrentCache]->GetUsageCount();}
inline TGeoNode *TGeoNodeCache::GetNode() const {return fCache[fCurrentCache]->GetNode();}
inline void TGeoCacheDummy::Refresh(){fNode=fNodeBranch[fLevel]; fMatrix=fMatrixBranch[fLevel];}
inline void TGeoMatrixCache::LocalToMaster(const Double_t *local, Double_t *master) const {fHandlers[fHandler]->LocalToMaster(local, master);}
inline void TGeoMatrixCache::LocalToMasterVect(const Double_t *local, Double_t *master) const {fHandlers[fHandler]->LocalToMasterVect(local, master);}
inline void TGeoMatrixCache::LocalToMasterBomb(const Double_t *local, Double_t *master) const {fHandlers[fHandler]->LocalToMasterBomb(local, master);}
inline void TGeoMatrixCache::MasterToLocal(const Double_t *master, Double_t *local) const {fHandlers[fHandler]->MasterToLocal(master, local);}
inline void TGeoMatrixCache::MasterToLocalVect(const Double_t *master, Double_t *local) const {fHandlers[fHandler]->MasterToLocalVect(master, local);}
inline void TGeoMatrixCache::MasterToLocalBomb(const Double_t *master, Double_t *local) const {fHandlers[fHandler]->MasterToLocalBomb(master, local);}
inline TGeoHMatrix *TGeoNodeCache::GetCurrentMatrix() const {fMatrixPool->GetMatrix(fGlobalMatrix); return fGlobalMatrix;}
inline void TGeoNodeCache::LocalToMaster(const Double_t *local, Double_t *master) const {fMatrixPool->LocalToMaster(local, master);}
inline void TGeoNodeCache::LocalToMasterVect(const Double_t *local, Double_t *master) const {fMatrixPool->LocalToMasterVect(local, master);}
inline void TGeoNodeCache::LocalToMasterBomb(const Double_t *local, Double_t *master) const {fMatrixPool->LocalToMasterBomb(local, master);}
inline void TGeoNodeCache::MasterToLocal(const Double_t *master, Double_t *local) const {fMatrixPool->MasterToLocal(master, local);}
inline void TGeoNodeCache::MasterToLocalVect(const Double_t *master, Double_t *local) const {fMatrixPool->MasterToLocalVect(master, local);}
inline void TGeoNodeCache::MasterToLocalBomb(const Double_t *master, Double_t *local) const {fMatrixPool->MasterToLocalBomb(master, local);}
#endif
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.