]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONGeometryBuilder.h
Added new method DisIntegrate(AliMUONHit&, TList& digits) to replace the one in
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryBuilder.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 AliMUONGeometryBuilder
8 /// \brief Manager class for geometry construction via geometry builders.
9 ///
10 /// Author: Ivana Hrivnacova, IPN Orsay
11
12 #ifndef ALI_MUON_GEOMETRY_BUILDER_H
13 #define ALI_MUON_GEOMETRY_BUILDER_H
14
15 #include <TObject.h>
16 #include <TGeoMatrix.h>
17
18 #include "AliMUONGeometry.h"
19
20 class TObjArray;
21
22 class AliModule;
23 class AliMUONVGeometryBuilder;
24
25 class AliMUONGeometryBuilder : public TObject 
26 {
27   public:
28     AliMUONGeometryBuilder(AliModule* detector);
29     AliMUONGeometryBuilder();
30     virtual  ~AliMUONGeometryBuilder();
31     
32     // static methods
33     static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2); 
34     static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2,
35                                 const TGeoMatrix& m3); 
36     static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2,
37                                 const TGeoMatrix& m3, const TGeoMatrix& m4); 
38
39     // methods
40     //
41     void  AddBuilder(AliMUONVGeometryBuilder* geomBuilder);
42     void  CreateGeometry();
43     void  CreateMaterials();
44
45     void  InitGeometry();
46     void  InitGeometry(const TString& svmapFileName);
47
48     void  ReadTransformations();
49     void  ReadTransformations(const TString& fileName);
50
51     void  WriteTransformations();
52     void  WriteTransformations(const TString& fileName);
53
54     void  WriteSVMaps();
55     void  WriteSVMaps(const TString& fileName, Bool_t rebuild = true);
56     
57     // Geometry parametrisation
58     const AliMUONGeometry*            GetGeometry() const;
59     const AliMUONGeometryTransformer* GetTransformer() const;
60
61     // Alignement
62     virtual Bool_t  GetAlign() const;
63     virtual void    SetAlign(Bool_t align = true);
64     virtual void    SetAlign(const TString& fileName, Bool_t align = true);
65  
66   protected:
67     AliMUONGeometryBuilder(const AliMUONGeometryBuilder& right);
68     AliMUONGeometryBuilder&  operator = (const AliMUONGeometryBuilder& right);
69  
70   private:
71     // method
72     void PlaceVolume(const TString& name, const TString& mName, Int_t copyNo, 
73              const TGeoHMatrix& matrix, Int_t npar, Double_t* param,
74              const char* only) const;
75     void SetAlign(AliMUONVGeometryBuilder* builder);         
76
77     // static data members
78     static const TString  fgkDefaultTransformFileName; // default transformations file name                                        
79     static const TString  fgkDefaultSVMapFileName;     // default svmaps file name                                         
80     static const TString  fgkOutFileNameExtension;     // default output file name extension                                       
81
82     // data members
83     AliModule*       fModule;              // the AliRoot module
84     Bool_t           fAlign;               // option to read transformations 
85                                            // from a file
86     TString          fTransformFileName;   // transformations file name                                    
87     TString          fSVMapFileName;       // svmaps file name                                     
88     TGeoCombiTrans   fGlobalTransformation;// global transformation 
89                                            // applied to the whole geometry 
90     TObjArray*       fGeometryBuilders;    // list of Geometry Builders
91     AliMUONGeometry* fGeometry;            // geometry parametrisation
92
93   ClassDef(AliMUONGeometryBuilder,5)  // Geometry builder
94 };
95
96 // inline functions
97
98 inline void  AliMUONGeometryBuilder::InitGeometry()
99 { InitGeometry(fSVMapFileName); }
100
101 inline void  AliMUONGeometryBuilder::ReadTransformations()
102 { ReadTransformations(fTransformFileName); }
103
104 inline void  AliMUONGeometryBuilder::WriteTransformations()
105 { WriteTransformations(fTransformFileName + fgkOutFileNameExtension); }
106
107 inline void  AliMUONGeometryBuilder::WriteSVMaps()
108 { WriteSVMaps(fSVMapFileName + fgkOutFileNameExtension); }
109
110 inline 
111 const AliMUONGeometry* AliMUONGeometryBuilder::GetGeometry() const
112 { return fGeometry; }
113
114 inline 
115 const AliMUONGeometryTransformer* AliMUONGeometryBuilder::GetTransformer() const
116 { return fGeometry->GetTransformer(); }
117
118 inline Bool_t  AliMUONGeometryBuilder::GetAlign() const
119 { return fAlign; }
120
121 #endif //ALI_MUON_GEOMETRY_BUILDER_H
122
123
124
125
126
127
128