]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONGeometryBuilder.h
Revived the geometry that Alla did orginally. The code is in the classes
[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 class TObjArray;
19
20 class AliModule;
21 class AliMUONVGeometryBuilder;
22
23 class AliMUONGeometryBuilder : public TObject 
24 {
25   public:
26     AliMUONGeometryBuilder(AliModule* detector);
27     AliMUONGeometryBuilder();
28     virtual  ~AliMUONGeometryBuilder();
29     
30     // static methods
31     static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2); 
32     static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2,
33                                 const TGeoMatrix& m3); 
34     static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2,
35                                 const TGeoMatrix& m3, const TGeoMatrix& m4); 
36
37     // methods
38     void  AddBuilder(AliMUONVGeometryBuilder* geomBuilder);
39     void  CreateGeometry();
40     void  CreateMaterials();
41     void  InitGeometry();
42     void  WriteTransformations();
43     void  WriteSVMaps(Bool_t rebuild = true);
44     void  SetGlobalTransformation(const TGeoCombiTrans& transform);
45
46     // Alignement
47     virtual Bool_t  GetAlign() const;
48     virtual void    SetAlign(Bool_t align);
49  
50   protected:
51     AliMUONGeometryBuilder(const AliMUONGeometryBuilder& right);
52     AliMUONGeometryBuilder&  operator = (const AliMUONGeometryBuilder& right);
53  
54   private:
55     // method
56     void PlaceVolume(const TString& name, const TString& mName, Int_t copyNo, 
57              const TGeoHMatrix& matrix, Int_t npar, Double_t* param,
58              const char* only) const;
59     void FillGlobalTransformations(AliMUONVGeometryBuilder* builder);
60     void SetAlign(AliMUONVGeometryBuilder* builder);         
61
62     // data members
63     AliModule*      fModule;              // the AliRoot module
64     Bool_t          fAlign;               // option to read transformations 
65                                           // from a file
66     TGeoCombiTrans  fGlobalTransformation;// global transformation 
67                                           // applied to the whole geometry 
68     TObjArray*      fGeometryBuilders;    // list of Geometry Builders
69
70   ClassDef(AliMUONGeometryBuilder,4)  // Geometry builder
71 };
72
73 // inline functions
74
75 inline Bool_t  AliMUONGeometryBuilder::GetAlign() const
76 { return fAlign; }
77
78 #endif //ALI_MUON_GEOMETRY_BUILDER_H
79
80
81
82
83
84
85