130 gROOT->GetListOfGeometries()->Add(
this);
226 gROOT->GetListOfGeometries()->Remove(
this);
256 if (node1) node1->
Draw(option);
265 Error(
"FindObject",
"Not yet implemented");
275 if (loc)
return loc->
At(0);
332 if (number < 0 || number >=
fMaterials->GetSize())
return nullptr;
336 if (mat->
GetNumber() == number)
return mat;
347 if (!node)
return nullptr;
366 if (number < 0 || number >=
fMatrices->GetSize())
return nullptr;
370 if (matrix->
GetNumber() == number)
return matrix;
389 if (number < 0 || number >=
fShapes->GetSize())
return nullptr;
392 while ((shape = (
TShape*) next())) {
393 if (shape->
GetNumber() == number)
return shape;
415 + local[2]*matrix[6];
420 + local[2]*matrix[7];
425 + local[2]*matrix[8];
426 master[0] =
x; master[1] =
y; master[2] = z;
429 for (
Int_t i=0;i<3;i++) master[i] = local[i];
451 + local[2]*matrix[6];
456 + local[2]*matrix[7];
461 + local[2]*matrix[8];
463 master[0] =
x; master[1] =
y; master[2] = z;
466 for (
Int_t i=0;i<3;i++) master[i] = local[i];
477 Printf(
"=================List of Materials================");
481 Printf(
"=================List of RotationMatrices================");
485 Printf(
"=================List of Shapes==========================");
489 Printf(
"=================List of Nodes===========================");
513 x = xms*matrix[0] + yms*matrix[1] + zms*matrix[2];
514 y = xms*matrix[3] + yms*matrix[4] + zms*matrix[5];
515 z = xms*matrix[6] + yms*matrix[7] + zms*matrix[8];
517 local[0] =
x; local[1] =
y; local[2] = z;
543 x = xms*matrix[0] + yms*matrix[1] + zms*matrix[2];
544 y = xms*matrix[3] + yms*matrix[4] + zms*matrix[5];
545 z = xms*matrix[6] + yms*matrix[7] + zms*matrix[8];
547 local[0] =
x; local[1] =
y; local[2] = z;
558 new TNode(
name,title,shapename,
x,
y,z,matrixname,option);
599 while ((onemat = (
TMaterial*) nextmat())) {
608 while ((onematrix = (
TRotMatrix*) nextmatrix())) {
617 while ((oneshape = (
TShape*) nextshape())) {
622 gROOT->GetListOfGeometries()->Add(
this);
664 if (rotMatrix && rotMatrix->
GetType()) {
713 dxnew[0] = dx[0] +
x*rmat[0] +
y*rmat[3] + z*rmat[6];
714 dxnew[1] = dx[1] +
x*rmat[1] +
y*rmat[4] + z*rmat[7];
715 dxnew[2] = dx[2] +
x*rmat[2] +
y*rmat[5] + z*rmat[8];
717 rmatnew[0] = rmat[0]*matrix[0] + rmat[3]*matrix[1] + rmat[6]*matrix[2];
718 rmatnew[1] = rmat[1]*matrix[0] + rmat[4]*matrix[1] + rmat[7]*matrix[2];
719 rmatnew[2] = rmat[2]*matrix[0] + rmat[5]*matrix[1] + rmat[8]*matrix[2];
720 rmatnew[3] = rmat[0]*matrix[3] + rmat[3]*matrix[4] + rmat[6]*matrix[5];
721 rmatnew[4] = rmat[1]*matrix[3] + rmat[4]*matrix[4] + rmat[7]*matrix[5];
722 rmatnew[5] = rmat[2]*matrix[3] + rmat[5]*matrix[4] + rmat[8]*matrix[5];
723 rmatnew[6] = rmat[0]*matrix[6] + rmat[3]*matrix[7] + rmat[6]*matrix[8];
724 rmatnew[7] = rmat[1]*matrix[6] + rmat[4]*matrix[7] + rmat[7]*matrix[8];
725 rmatnew[8] = rmat[2]*matrix[6] + rmat[5]*matrix[7] + rmat[8]*matrix[8];
int Int_t
Signed integer 4 bytes (int).
short Version_t
Class version identifier (short).
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
float Float_t
Float 4 bytes (float).
const char Option_t
Option string (const char).
externTGeometry * gGeometry
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
Using a TBrowser one can browse all ROOT objects.
Buffer base class used for serializing objects.
TShape * GetShapeByNumber(Int_t number) const
Return pointer to Shape with number.
Double_t fRotMatrix[kMAXLEVELS][kMatrixSize]
!
void Draw(Option_t *option="") override
Draw this Geometry.
TMaterial * GetMaterialByNumber(Int_t number) const
Return pointer to Material with number.
TGeometry & operator=(const TGeometry &)
assignment operator
virtual void Local2Master(Double_t *local, Double_t *master)
Convert one point from local system to master reference system.
TRotMatrix * fMatrix
!Pointers to current rotation matrices
TMaterial ** fMaterialPointer
!Pointers to materials
TMaterial * GetMaterial(const char *name) const
Return pointer to Material with name.
void ls(Option_t *option="rsn2") const override
List this geometry.
virtual void Master2Local(Double_t *master, Double_t *local)
Convert one point from master system to local reference system.
TGeometry()
Geometry default constructor.
TRotMatrix ** fMatrixPointer
!Pointers to rotation matrices
TShape ** fShapePointer
!Pointers to shapes
void RecursiveRemove(TObject *obj) override
Recursively remove object from a Geometry list.
void Streamer(TBuffer &) override
Stream a class object.
TRotMatrix * GetRotMatrixByNumber(Int_t number) const
Return pointer to RotMatrix with number.
TNode * fCurrentNode
!Pointer to current node
Bool_t fIsReflection[kMAXLEVELS]
!
TObject * FindObject(const char *name) const override
Search object identified by name in the geometry tree.
Double_t fY
! The global translation of the current node
void Browse(TBrowser *b) override
Browse.
~TGeometry() override
Geometry default destructor.
TGeometry(const TGeometry &)
copy constructor
static TObjArray * Get(const char *name)
Static function called by TROOT to search name in the geometry.
virtual void UpdateTempMatrix(Double_t x=0, Double_t y=0, Double_t z=0, TRotMatrix *matrix=nullptr)
Update temp matrix.
TRotMatrix * GetRotMatrix(const char *name) const
Return pointer to RotMatrix with name.
virtual void Node(const char *name, const char *title, const char *shapename, Double_t x=0, Double_t y=0, Double_t z=0, const char *matrixname="", Option_t *option="")
Add a node to the current node in this geometry.
TShape * GetShape(const char *name) const
Return pointer to Shape with name.
virtual void UpdateMatrix(TNode *node)
Update global rotation matrix/translation vector for this node this function must be called before in...
virtual void cd(const char *path=nullptr)
Change Current Geometry to this.
TClass * IsA() const override
TList * GetListOfNodes() const
TNode * GetNode(const char *name) const
Return pointer to node with name in the geometry tree.
Double_t fTranslation[kMAXLEVELS][kVectorSize]
!
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
TObject * First() const override
Return the first object in the list. Returns 0 when list is empty.
Manages a detector material.
virtual Int_t GetNumber() const
void Streamer(TBuffer &) override
Stream an object of class TObject.
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
virtual TNode * GetParent() const
virtual Double_t GetY() const
void Draw(Option_t *option="") override
Draw Referenced node with current parameters.
virtual Double_t GetX() const
virtual TRotMatrix * GetMatrix() const
virtual Double_t GetZ() const
virtual TNode * GetNode(const char *name) const
Return pointer to node with name in the node tree.
TObject * At(Int_t idx) const override
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
TObject()
TObject constructor.
Manages a detector rotation matrix.
virtual Int_t GetType() const
virtual Int_t GetNumber() const
virtual Double_t * GetMatrix()
virtual Bool_t IsReflection() const
This is the base class for all geometry shapes.
virtual Int_t GetNumber() const
void ToLower()
Change string to lower-case.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
bool HasBeenDeleted(const TObject *obj)
Check if the TObject's memory has been deleted.