]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONGeometryDetElement.h
new digitization and reconstruction corresponded to new data format
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryDetElement.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 AliMUONGeometryDetElement
8 /// \brief Class for storing detection element transformations 
9 ///
10 /// Author: Ivana Hrivnacova, IPN Orsay
11
12 #ifndef ALI_MUON_GEOMETRY_DET_ELEMENT_H
13 #define ALI_MUON_GEOMETRY_DET_ELEMENT_H
14
15 #include <TObject.h>
16 #include <TString.h>
17
18 class TGeoHMatrix;
19
20 class AliMUONGeometryDetElement : public TObject
21 {
22   public:
23     AliMUONGeometryDetElement(Int_t detElemId,
24                               const TString& volumePath);
25     AliMUONGeometryDetElement();
26     virtual ~AliMUONGeometryDetElement();
27
28     // methods
29     void Global2Local(
30                  Float_t xg, Float_t yg, Float_t zg, 
31                  Float_t& xl, Float_t& yl, Float_t& zl) const;
32     void Global2Local(
33                  Double_t xg, Double_t yg, Double_t zg, 
34                  Double_t& xl, Double_t& yl, Double_t& zl) const;
35
36     void Local2Global(
37                  Float_t xl, Float_t yl, Float_t zl, 
38                  Float_t& xg, Float_t& yg, Float_t& zg) const;
39     void Local2Global(
40                  Double_t xl, Double_t yl, Double_t zl, 
41                  Double_t& xg, Double_t& yg, Double_t& zg) const;
42     void PrintLocalTransform() const;
43     void PrintGlobalTransform() const;
44
45     // set methods
46     void SetLocalTransformation(const TGeoHMatrix& transform);
47     void SetGlobalTransformation(const TGeoHMatrix& transform);
48     void SetVolumePath(const TString& volumePath);
49     
50     // get methods
51     Int_t    GetId() const;
52     TString  GetVolumePath() const;
53     TString  GetVolumeName() const;
54     Int_t    GetVolumeCopyNo() const;
55     const TGeoHMatrix*  GetLocalTransformation() const;
56     const TGeoHMatrix*  GetGlobalTransformation() const;
57
58   protected:
59     AliMUONGeometryDetElement(const AliMUONGeometryDetElement& rhs);
60
61     // operators  
62     AliMUONGeometryDetElement& operator = (const AliMUONGeometryDetElement& rhs);
63   
64   private:
65     // methods
66     void PrintTransform(const TGeoHMatrix* transform) const;
67   
68     // data members
69     TString       fVolumePath; // the full path of aligned volume or envelope
70                                // in geometry
71     TGeoHMatrix*  fLocalTransformation;  // the transformation wrt module
72     TGeoHMatrix*  fGlobalTransformation; // the transformation wrt world
73
74   ClassDef(AliMUONGeometryDetElement,2) // MUON det element transformations
75 };
76
77 // inline functions
78
79 inline void AliMUONGeometryDetElement::SetVolumePath(const TString& volumePath)
80 { fVolumePath = volumePath; }
81
82 inline Int_t AliMUONGeometryDetElement::GetId() const
83 { return GetUniqueID(); }
84
85 inline TString AliMUONGeometryDetElement::GetVolumePath() const
86 { return fVolumePath; }
87
88 inline const TGeoHMatrix* 
89 AliMUONGeometryDetElement::GetLocalTransformation() const
90 { return fLocalTransformation; }
91
92 inline const TGeoHMatrix* 
93 AliMUONGeometryDetElement::GetGlobalTransformation() const
94 { return fGlobalTransformation; }
95
96 #endif //ALI_MUON_GEOMETRY_DET_ELEMENT_H