Latest version
[u/mrichter/AliRoot.git] / GEODB / AliGeometry.h
CommitLineData
3da30618 1#ifndef ALIGEOMETRY_H
2#define ALIGEOMETRY_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
ab2f6604 8// -*- C++ -*-
9//
10// 1999/01/05
11// ---------------------------------------------------------------------------
12//
13// AliGeometry Class
14//
15// This file is part of the ALICE Geometry Database .
16//
17// Author: Joana E. Santo
18//
19// ---------------------------------------------------------------------------
20// The Geometry class holds the detector,s geometry. Essentially it has a pointer
21// to the Top Level AliGNode and an array of pointers to rules that specify the
22// complete desgn below that node.
23
ab2f6604 24#include <TFile.h>
25#include <TNamed.h>
26#include <TObjString.h>
27#include <TList.h>
28#include "AliGNode.h"
29
30const Int_t kMAXLEVELS = 20;
31const Int_t kMatrixSize = 16;
32const Int_t kVectorSize = 4;
33
34class AliGeometry: public TNamed {
35
36 protected:
37 Float_t fBomb; //Bomb factor for exploded geometry
38 Int_t fGeomLevel;
39 Int_t fMaxDepth;
40 TList* fRules;
41 TString fTopNode;
42 TList* fTransformation;
43
44 public:
45 AliGeometry( Text_t* name, Text_t* title, AliGNode* topNode, int maxDepth=0 ); // Constructor
46 AliGeometry( AliGeometry* Geom=NULL ); // Copy or Default Constructor
47 virtual ~AliGeometry(); // Destructor
48 AliGeometry* operator=( const AliGeometry* Geom );
49
50 TList* GetfTransf() const {return fTransformation;}
51 Float_t GetBomb() const {return fBomb;}
52 TString GetTop() const {return fTopNode;}
53 TList* GetRules() const {return fRules;}
54 AliGNode* FileToMemTree( TFile* file );
55 //AliGNode* FileToMemTree( Text_t* root_file, Text_t* geom_file );
56 void Local2Master( Float_t *local, Float_t *master);
57 virtual Int_t PopLevel(){return fGeomLevel>0?fGeomLevel--:0;}
58 virtual Int_t PushLevel(){return fGeomLevel++;}
59 TVector* PopMatrix();
60 void PushMatrix(TVector* matrix);
61 AliGNode* RecurToMem( const char* node_name, TFile* file, AliGNode* father, char* subtransf );
62 void RulesList( TList *fRules, AliGNode* node, int position );
63 virtual void SetBomb(Float_t bomb=1.4) {fBomb = bomb;}
64 void UpdateMatrix(AliGTransform* trans);
65
66
67 ClassDef(AliGeometry,1) //Generic Geometry class
68};
69
70R__EXTERN AliGeometry *gAliGeometry;
71R__EXTERN TVector* gMatrix;
72
73#endif