132 gROOT->GetListOfGeometries()->Add(
this);
142 fMaterials(geo.fMaterials),
143 fMatrices(geo.fMatrices),
144 fShapes(geo.fShapes),
146 fMatrix(geo.fMatrix),
147 fCurrentNode(geo.fCurrentNode),
148 fMaterialPointer(geo.fMaterialPointer),
149 fMatrixPointer(geo.fMatrixPointer),
150 fShapePointer(geo.fShapePointer),
152 fGeomLevel(geo.fGeomLevel),
228 gROOT->GetListOfGeometries()->Remove(
this);
258 if (node1) node1->
Draw(option);
267 Error(
"FindObject",
"Not yet implemented");
277 if (loc)
return loc->
At(0);
338 if (mat->
GetNumber() == number)
return mat;
372 if (matrix->
GetNumber() == number)
return matrix;
394 while ((shape = (
TShape*) next())) {
395 if (shape->
GetNumber() == number)
return shape;
417 + local[2]*matrix[6];
422 + local[2]*matrix[7];
427 + local[2]*matrix[8];
428 master[0] =
x; master[1] =
y; master[2] = z;
431 for (
Int_t i=0;i<3;i++) master[i] = local[i];
453 + local[2]*matrix[6];
458 + local[2]*matrix[7];
463 + local[2]*matrix[8];
465 master[0] =
x; master[1] =
y; master[2] = z;
468 for (
Int_t i=0;i<3;i++) master[i] = local[i];
479 Printf(
"=================List of Materials================");
483 Printf(
"=================List of RotationMatrices================");
487 Printf(
"=================List of Shapes==========================");
491 Printf(
"=================List of Nodes===========================");
515 x = xms*matrix[0] + yms*matrix[1] + zms*matrix[2];
516 y = xms*matrix[3] + yms*matrix[4] + zms*matrix[5];
517 z = xms*matrix[6] + yms*matrix[7] + zms*matrix[8];
519 local[0] =
x; local[1] =
y; local[2] = z;
545 x = xms*matrix[0] + yms*matrix[1] + zms*matrix[2];
546 y = xms*matrix[3] + yms*matrix[4] + zms*matrix[5];
547 z = xms*matrix[6] + yms*matrix[7] + zms*matrix[8];
549 local[0] =
x; local[1] =
y; local[2] = z;
560 new TNode(
name,title,shapename,
x,
y,z,matrixname,option);
589 b.CheckByteCount(R__s, R__c, TGeometry::IsA());
601 while ((onemat = (
TMaterial*) nextmat())) {
610 while ((onematrix = (
TRotMatrix*) nextmatrix())) {
619 while ((oneshape = (
TShape*) nextshape())) {
624 gROOT->GetListOfGeometries()->Add(
this);
666 if (rotMatrix && rotMatrix->
GetType()) {
715 dxnew[0] = dx[0] +
x*rmat[0] +
y*rmat[3] + z*rmat[6];
716 dxnew[1] = dx[1] +
x*rmat[1] +
y*rmat[4] + z*rmat[7];
717 dxnew[2] = dx[2] +
x*rmat[2] +
y*rmat[5] + z*rmat[8];
719 rmatnew[0] = rmat[0]*matrix[0] + rmat[3]*matrix[1] + rmat[6]*matrix[2];
720 rmatnew[1] = rmat[1]*matrix[0] + rmat[4]*matrix[1] + rmat[7]*matrix[2];
721 rmatnew[2] = rmat[2]*matrix[0] + rmat[5]*matrix[1] + rmat[8]*matrix[2];
722 rmatnew[3] = rmat[0]*matrix[3] + rmat[3]*matrix[4] + rmat[6]*matrix[5];
723 rmatnew[4] = rmat[1]*matrix[3] + rmat[4]*matrix[4] + rmat[7]*matrix[5];
724 rmatnew[5] = rmat[2]*matrix[3] + rmat[5]*matrix[4] + rmat[8]*matrix[5];
725 rmatnew[6] = rmat[0]*matrix[6] + rmat[3]*matrix[7] + rmat[6]*matrix[8];
726 rmatnew[7] = rmat[1]*matrix[6] + rmat[4]*matrix[7] + rmat[7]*matrix[8];
727 rmatnew[8] = rmat[2]*matrix[6] + rmat[5]*matrix[7] + rmat[8]*matrix[8];
void Printf(const char *fmt,...)
Using a TBrowser one can browse all ROOT objects.
Buffer base class used for serializing objects.
virtual void ls(Option_t *option="") const
List (ls) all objects in this collection.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
TShape * GetShapeByNumber(Int_t number) const
Return pointer to Shape with number.
Double_t fZ
The global translation of the current node.
Double_t fRotMatrix[kMAXLEVELS][kMatrixSize]
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.
virtual void UpdateTempMatrix(Double_t x=0, Double_t y=0, Double_t z=0, TRotMatrix *matrix=0)
Update temp matrix.
TMaterial ** fMaterialPointer
Pointer to current node.
TMaterial * GetMaterial(const char *name) const
Return pointer to Material with name.
virtual TObject * FindObject(const char *name) const
Search object identified by name in the geometry tree.
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 materials.
TShape ** fShapePointer
Pointers to rotation matrices.
THashList * GetListOfShapes() const
TRotMatrix * GetRotMatrixByNumber(Int_t number) const
Return pointer to RotMatrix with number.
virtual ~TGeometry()
Geometry default destructor.
TNode * fCurrentNode
Pointers to current rotation matrices.
Bool_t fIsReflection[kMAXLEVELS]
virtual void RecursiveRemove(TObject *obj)
Recursively remove object from a Geometry list.
THashList * GetListOfMatrices() const
THashList * GetListOfMaterials() const
Float_t fBomb
Pointers to shapes.
static TObjArray * Get(const char *name)
Static function called by TROOT to search name in the geometry.
TRotMatrix * GetRotMatrix(const char *name) const
Return pointer to RotMatrix with name.
virtual void Browse(TBrowser *b)
Browse.
virtual void Draw(Option_t *option="")
Draw this Geometry.
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=0)
Change Current Geometry to this.
TList * GetListOfNodes() const
TNode * GetNode(const char *name) const
Return pointer to node with name in the geometry tree.
virtual void ls(Option_t *option="rsn2") const
List this geometry.
Double_t fTranslation[kMAXLEVELS][kVectorSize]
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
TObject * FindObject(const char *name) const
Find object using its name.
void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
virtual void RecursiveRemove(TObject *obj)
Remove object from this collection and recursively remove the object from all other objects (and coll...
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
Manages a detector material.
virtual Int_t GetNumber() const
The TNamed class is the base class for all named ROOT classes.
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
virtual void Draw(Option_t *option="")
Draw Referenced node with current parameters.
virtual TNode * GetParent() const
virtual Double_t GetY() const
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
Mother of all ROOT objects.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
@ kNotDeleted
object has not been deleted
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
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