dc34a3c91070ae78769cc6d9cc6c585d6eb6090a
[u/mrichter/AliRoot.git] / MUON / AliMUONChamberGeometry.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 // Revision of includes 07/05/2004
6
7 //
8 // Class AliMUONChamberGeometry
9 // -----------------------------
10 // Class for definititon of the MUON chamber positions in ALIC.
11 //
12 // Author: Ivana Hrivnacova, IPN Orsay
13
14 #ifndef ALI_MUON_CHAMBER_GEOMETRY_H
15 #define ALI_MUON_CHAMBER_GEOMETRY_H
16
17 #include <TObject.h>
18 #include <TString.h>
19
20 class TGeoTranslation;
21 class TGeoRotation;
22 class TGeoCombiTrans;
23 class TObjArray;
24 class TArrayI;
25
26 class AliMUONChamber;
27 class AliMUONGeometryEnvelope;
28 class AliMUONGeometryEnvelopeStore;
29 class AliMUONGeometryTransformStore;
30 class AliMUONGeometrySVMap;
31
32 class AliMUONChamberGeometry : public TObject
33 {
34   public:
35     AliMUONChamberGeometry(Int_t chamberId);
36     AliMUONChamberGeometry();
37     virtual ~AliMUONChamberGeometry();
38
39     // methods
40     void  SetMotherVolume(const TString& motherVolumeName);
41     void  SetTranslation(const TGeoTranslation& translation);
42     void  SetRotation(const TGeoRotation& rotation);
43     
44     void  SetSensitiveVolume(Int_t volId);
45     void  SetSensitiveVolume(const TString& name);
46     void  SetAlign(Bool_t align);
47  
48     // get methods
49     TString                GetMotherVolume() const;
50     const TGeoCombiTrans*  GetTransformation() const;    
51     AliMUONGeometryEnvelopeStore*  GetEnvelopeStore() const;
52     AliMUONGeometryTransformStore* GetTransformStore() const;
53     AliMUONGeometrySVMap*          GetSVMap() const;
54     Bool_t IsSensitiveVolume(Int_t volId) const; 
55     Bool_t IsSensitiveVolume(const TString& volName) const; 
56 //
57 //Int_t  GetDEVolId(Int_t svVolId) const; 
58
59   protected:
60     AliMUONChamberGeometry(const AliMUONChamberGeometry& rhs);
61     // operators  
62     AliMUONChamberGeometry& operator = (const AliMUONChamberGeometry& rhs);
63
64   private:
65     // methods
66     Int_t  GetSVIndex(Int_t svVolId) const; 
67   
68     // data members
69     Int_t            fChamberId;     // the chamber Id
70     TString          fMotherVolume;  // mother volume name
71     Int_t            fNofSVs;        // number of sensitive volumes   
72     TArrayI*         fSVVolumeIds;   // densitive volumes IDs  
73     TGeoCombiTrans*  fTransformation;// the chamber transformation wrt to mother
74                                      // volume
75     AliMUONGeometryTransformStore* fDETransforms; // det elements transformations
76     AliMUONGeometryEnvelopeStore*  fEnvelopes;    // envelopes                                 
77     AliMUONGeometrySVMap*          fSVMap;        // sensitive volumes map
78  
79   ClassDef(AliMUONChamberGeometry,1) // MUON chamber geometry base class
80 };
81
82 // inline functions
83
84 inline void  
85 AliMUONChamberGeometry::SetMotherVolume(const TString& motherVolumeName)
86 { fMotherVolume = motherVolumeName; }
87
88 inline TString  AliMUONChamberGeometry::GetMotherVolume() const
89 { return fMotherVolume; }
90
91 inline const TGeoCombiTrans* AliMUONChamberGeometry::GetTransformation() const 
92 { return fTransformation; }
93
94 inline  AliMUONGeometryEnvelopeStore*  
95 AliMUONChamberGeometry::GetEnvelopeStore() const
96 { return fEnvelopes; }
97
98 inline AliMUONGeometryTransformStore*  
99 AliMUONChamberGeometry::GetTransformStore() const
100 { return fDETransforms; }
101
102 inline AliMUONGeometrySVMap* AliMUONChamberGeometry::GetSVMap() const
103 { return fSVMap; }
104
105 #endif //ALI_MUON_CHAMBER_GEOMETRY_H