Line data Source code
1 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 : * See cxx source for full Copyright notice */
3 :
4 : /* $Id$ */
5 : // Revision of includes 07/05/2004
6 :
7 : /// \ingroup geometry
8 : /// \class AliMUONGeometryModuleTransformer
9 : /// \brief Geometry transformer for a detector module
10 : ///
11 : /// Class for definition of the transformation for a detector module
12 : /// and its detection elements
13 : ///
14 : /// \author Ivana Hrivnacova, IPN Orsay
15 :
16 : #ifndef ALI_MUON_GEOMETRY_MODULE_TRANSFORMER_H
17 : #define ALI_MUON_GEOMETRY_MODULE_TRANSFORMER_H
18 :
19 : #include <TObject.h>
20 : #include <TString.h>
21 :
22 : class AliMUONGeometryDetElement;
23 :
24 : class AliMpExMap;
25 :
26 : class TGeoTranslation;
27 : class TGeoRotation;
28 : class TGeoHMatrix;
29 : class TObjArray;
30 : class TArrayI;
31 :
32 : class AliMUONGeometryModuleTransformer : public TObject
33 : {
34 : public:
35 : AliMUONGeometryModuleTransformer(Int_t moduleId);
36 : AliMUONGeometryModuleTransformer(TRootIOCtor* /*ioCtor*/);
37 : virtual ~AliMUONGeometryModuleTransformer();
38 :
39 : // static methods
40 : static const TString& GetModuleNamePrefix();
41 : static TString GetModuleName(Int_t moduleId);
42 :
43 : // methods
44 : void Global2Local(Int_t detElemId,
45 : Float_t xg, Float_t yg, Float_t zg,
46 : Float_t& xl, Float_t& yl, Float_t& zl) const;
47 : void Global2Local(Int_t detElemId,
48 : Double_t xg, Double_t yg, Double_t zg,
49 : Double_t& xl, Double_t& yl, Double_t& zl) const;
50 :
51 : void Local2Global(Int_t detElemId,
52 : Float_t xl, Float_t yl, Float_t zl,
53 : Float_t& xg, Float_t& yg, Float_t& zg) const;
54 : void Local2Global(Int_t detElemId,
55 : Double_t xl, Double_t yl, Double_t zl,
56 : Double_t& xg, Double_t& yg, Double_t& zg) const;
57 :
58 : // set methods
59 : void SetTransformation(const TGeoHMatrix& transform);
60 : void SetVolumePath(const TString& volumePath);
61 :
62 : // get methods
63 : Int_t GetModuleId() const;
64 : TString GetModuleName() const;
65 : TString GetVolumePath() const;
66 : TString GetVolumeName() const;
67 : TString GetMotherVolumeName() const;
68 :
69 : const TGeoHMatrix* GetTransformation() const;
70 : AliMpExMap* GetDetElementStore() const;
71 : AliMUONGeometryDetElement*
72 : GetDetElement(Int_t detElemId, Bool_t warn = true) const;
73 :
74 : protected:
75 : /// Not implemented
76 : AliMUONGeometryModuleTransformer();
77 : /// Not implemented
78 : AliMUONGeometryModuleTransformer(const AliMUONGeometryModuleTransformer& rhs);
79 : /// Not implemented
80 : AliMUONGeometryModuleTransformer&
81 : operator = (const AliMUONGeometryModuleTransformer& rhs);
82 :
83 : private:
84 : // data members
85 : Int_t fModuleId; ///< the module Id
86 : TString fModuleName; ///< the module name
87 : TString fVolumePath; ///< \brief the full path of aligned module volume
88 : /// or envelope in geometry
89 : TGeoHMatrix* fTransformation;///< \brief the module transformation wrt to top
90 : /// volume (world)
91 : AliMpExMap* fDetElements; ///< detection elements
92 :
93 742 : ClassDef(AliMUONGeometryModuleTransformer,3) // MUON geometry module class
94 : };
95 :
96 : // inline functions
97 :
98 : /// Set the full path of aligned module volume or envelope in geometry
99 : inline void
100 : AliMUONGeometryModuleTransformer::SetVolumePath(const TString& volumePath)
101 80 : { fVolumePath = volumePath; }
102 :
103 : /// Return module ID
104 : inline Int_t
105 : AliMUONGeometryModuleTransformer::GetModuleId() const
106 47344 : { return fModuleId; }
107 :
108 : /// Return module name
109 : inline TString
110 : AliMUONGeometryModuleTransformer::GetModuleName() const
111 0 : { return fModuleName; }
112 :
113 : /// Return the full path of aligned module volume or envelope in geometry
114 : inline TString
115 : AliMUONGeometryModuleTransformer::GetVolumePath() const
116 576 : { return fVolumePath; }
117 :
118 : /// Return the module transformation wrt to the top volume (world)
119 : inline const TGeoHMatrix*
120 : AliMUONGeometryModuleTransformer::GetTransformation() const
121 536 : { return fTransformation; }
122 :
123 : /// Return detection elements associated with this module
124 : inline AliMpExMap*
125 : AliMUONGeometryModuleTransformer::GetDetElementStore() const
126 1152 : { return fDetElements; }
127 :
128 : #endif //ALI_MUON_GEOMETRY_MODULE_TRANSFORMER_H
|