Compatibility with ROOT trunk
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometry.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 // $Id$
5
6 /// \ingroup geometry
7 /// \class AliMUONGeometry
8 /// \brief Container class for geometry modules
9 ///
10 /// \author Ivana Hrivnacova, IPN Orsay
11
12 #ifndef ALI_MUON_GEOMETRY_H
13 #define ALI_MUON_GEOMETRY_H
14
15 #include <TObject.h>
16 #include <TGeoMatrix.h>
17
18 class AliMUONGeometryModule;
19 class AliMUONGeometryTransformer;
20
21 class TObjArray;
22
23 using std::ifstream;
24 using std::ofstream;
25
26 class AliMUONGeometry : public TObject
27 {
28   public:
29     AliMUONGeometry(Bool_t isOwner);
30     AliMUONGeometry();
31     virtual  ~AliMUONGeometry();
32     
33     // methods
34     void    AddModule(AliMUONGeometryModule* module);
35
36     Bool_t  ReadSVMap(const TString& fileName);
37     Bool_t  WriteSVMap(const TString& fileName) const;
38
39     // get methods
40     const AliMUONGeometryModule* GetModule(
41                                     Int_t index, Bool_t warn = true) const;
42
43     const AliMUONGeometryModule* GetModuleByDEId(
44                                     Int_t detElemId, Bool_t warn = true) const;
45
46     AliMUONGeometryTransformer* GetTransformer() const;
47
48
49   protected:
50     /// Not implemented
51     AliMUONGeometry(const AliMUONGeometry& right);
52     /// Not implemented
53     AliMUONGeometry&  operator = (const AliMUONGeometry& right);
54  
55   private:
56     //methods
57     TString  ComposePath(const TString& volName, Int_t copyNo) const; 
58
59     void    FillData3(const TString& sensVolumePath, Int_t detElemId);             
60     TString ReadData3(ifstream& in);
61     void    WriteData3(ofstream& out) const;
62
63     // data members
64     TObjArray*                  fModules;     ///< Array of geometry modules
65     AliMUONGeometryTransformer* fTransformer; ///< Geometry transformer
66
67   ClassDef(AliMUONGeometry,1)  // Geometry parametrisation
68 };
69
70 /// Return geometry transformer
71 inline AliMUONGeometryTransformer* AliMUONGeometry::GetTransformer() const
72 { return fTransformer; }
73
74 #endif //ALI_MUON_GEOMETRY_H
75
76
77
78
79
80
81