Correction in the loop over track references. Upper bound has been affected
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryModuleTransformer.h
CommitLineData
4f8b0abb 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 transformationer for detector module
10///
11/// Class for definition of the detector module parameters
12/// (the transformations of detection elements, mapping between
13/// sensitive volumes and detection elements).
14///
15/// Author: Ivana Hrivnacova, IPN Orsay
16
f32e74e9 17#ifndef ALI_MUON_GEOMETRY_MODULE_TRANSFORMER_H
18#define ALI_MUON_GEOMETRY_MODULE_TRANSFORMER_H
4f8b0abb 19
20#include <TObject.h>
21#include <TString.h>
22
ab488200 23class AliMUONGeometryDetElement;
24class AliMUONGeometryStore;
25
4f8b0abb 26class TGeoTranslation;
27class TGeoRotation;
ab488200 28class TGeoHMatrix;
4f8b0abb 29class TObjArray;
30class TArrayI;
31
4f8b0abb 32class AliMUONGeometryModuleTransformer : public TObject
33{
34 public:
35 AliMUONGeometryModuleTransformer(Int_t moduleId);
36 AliMUONGeometryModuleTransformer();
37 virtual ~AliMUONGeometryModuleTransformer();
38
39 // methods
40 void Global2Local(Int_t detElemId,
41 Float_t xg, Float_t yg, Float_t zg,
42 Float_t& xl, Float_t& yl, Float_t& zl) const;
43 void Global2Local(Int_t detElemId,
44 Double_t xg, Double_t yg, Double_t zg,
45 Double_t& xl, Double_t& yl, Double_t& zl) const;
46
47 void Local2Global(Int_t detElemId,
48 Float_t xl, Float_t yl, Float_t zl,
49 Float_t& xg, Float_t& yg, Float_t& zg) const;
50 void Local2Global(Int_t detElemId,
51 Double_t xl, Double_t yl, Double_t zl,
52 Double_t& xg, Double_t& yg, Double_t& zg) const;
53
54 // set methods
ab488200 55 void SetTransformation(const TGeoHMatrix& transform);
56 void SetVolumePath(const TString& volumePath);
4f8b0abb 57
58 // get methods
ab488200 59 Int_t GetModuleId() const;
60 TString GetVolumePath() const;
61 TString GetVolumeName() const;
62 TString GetMotherVolumeName() const;
63
64 const TGeoHMatrix* GetTransformation() const;
4f8b0abb 65
66 AliMUONGeometryStore* GetDetElementStore() const;
b75f649b 67 AliMUONGeometryDetElement* GetDetElement(
68 Int_t detElemId, Bool_t warn = true) const;
4f8b0abb 69
70 protected:
71 AliMUONGeometryModuleTransformer(const AliMUONGeometryModuleTransformer& rhs);
72 // operators
ab488200 73 AliMUONGeometryModuleTransformer&
74 operator = (const AliMUONGeometryModuleTransformer& rhs);
4f8b0abb 75
76 private:
77 // data members
ab488200 78 Int_t fModuleId; // the module Id
79 TString fVolumePath; // the full path of aligned module volume
80 // or envelope in geometry
81 TGeoHMatrix* fTransformation;// the module transformation wrt to top
4f8b0abb 82 // volume
83 AliMUONGeometryStore* fDetElements; // detection elements
84
ab488200 85 ClassDef(AliMUONGeometryModuleTransformer,3) // MUON geometry module class
4f8b0abb 86};
87
88// inline functions
89
ab488200 90inline void
91AliMUONGeometryModuleTransformer::SetVolumePath(const TString& volumePath)
92{ fVolumePath = volumePath; }
93
94inline Int_t
95AliMUONGeometryModuleTransformer::GetModuleId() const
4f8b0abb 96{ return fModuleId; }
97
ab488200 98inline TString
99AliMUONGeometryModuleTransformer::GetVolumePath() const
100{ return fVolumePath; }
101
102inline const TGeoHMatrix*
103AliMUONGeometryModuleTransformer::GetTransformation() const
4f8b0abb 104{ return fTransformation; }
105
ab488200 106inline AliMUONGeometryStore*
107AliMUONGeometryModuleTransformer::GetDetElementStore() const
4f8b0abb 108{ return fDetElements; }
109
f32e74e9 110#endif //ALI_MUON_GEOMETRY_MODULE_TRANSFORMER_H