]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONGeometryModule.h
new trigger code set to default
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryModule.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 /// \ingroup geometry
8 /// \class AliMUONGeometryModule
9 /// \brief Geometry parameters 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
17 #ifndef ALI_MUON_GEOMETRY_MODULE_H
18 #define ALI_MUON_GEOMETRY_MODULE_H
19
20 #include "AliMUONGeometryModuleTransformer.h"
21
22 #include <TObject.h>
23 #include <TString.h>
24
25 class AliMUONGeometryEnvelope;
26 class AliMUONGeometryEnvelopeStore;
27 class AliMUONGeometryDetElement;
28 class AliMUONGeometryStore;
29 class AliMUONStringIntMap;
30
31 class TGeoTranslation;
32 class TGeoRotation;
33 class TGeoCombiTrans;
34 class TObjArray;
35 class TArrayI;
36
37 class AliMUONGeometryModule : public TObject
38 {
39   public:
40     AliMUONGeometryModule(Int_t moduleId);
41     AliMUONGeometryModule();
42     virtual ~AliMUONGeometryModule();
43
44     // set methods
45     //
46     void  SetTransformation(const TGeoCombiTrans& transform);
47     void  SetVolumePath(const TString& volumePath);
48     void  SetIsVirtual(Bool_t isVirtual);
49     
50     void  SetSensitiveVolume(Int_t volId);
51     void  SetSensitiveVolume(const TString& name);
52     void  SetAlign(Bool_t align);
53  
54     // get methods
55     //
56     Bool_t   IsVirtual() const;  
57     Int_t    GetModuleId() const;
58     TString  GetVolumePath() const;
59     
60     AliMUONGeometryDetElement* FindBySensitiveVolume(
61                                          const TString& volumePath) const;
62     Bool_t IsSensitiveVolume(Int_t volId) const; 
63     Bool_t IsSensitiveVolume(const TString& volName) const; 
64
65     AliMUONGeometryEnvelopeStore*     GetEnvelopeStore() const;
66     AliMUONStringIntMap*              GetSVMap() const;
67     AliMUONGeometryModuleTransformer* GetTransformer() const;
68
69   protected:
70     AliMUONGeometryModule(const AliMUONGeometryModule& rhs);
71     AliMUONGeometryModule& operator = (const AliMUONGeometryModule& rhs);
72
73   private:
74     // methods
75     Int_t  GetSVIndex(Int_t svVolId) const; 
76   
77     // data members
78     Bool_t           fIsVirtual;     ///< \brief true if module is not represented
79                                      /// by a real volume
80     Int_t            fNofSVs;        ///< number of sensitive volumes   
81     TArrayI*         fSVVolumeIds;   ///< sensitive volumes IDs  
82
83     AliMUONGeometryEnvelopeStore*     fEnvelopes;  ///< envelopes                                 
84     AliMUONStringIntMap*              fSVMap;      ///< sensitive volumes map
85     AliMUONGeometryModuleTransformer* fTransformer;///< geometry transformations
86  
87   ClassDef(AliMUONGeometryModule,4) // MUON geometry module class
88 };
89
90 // inline functions
91
92 /// Set virtuality (true if module is not represented by a real volume)
93 inline void  AliMUONGeometryModule::SetIsVirtual(Bool_t isVirtual)
94 { fIsVirtual = isVirtual; }
95
96 /// Return true if module is not represented by a real volume
97 inline Bool_t AliMUONGeometryModule::IsVirtual() const
98 { return fIsVirtual; }  
99
100 /// Return module ID
101 inline Int_t  AliMUONGeometryModule::GetModuleId() const
102 { return fTransformer->GetModuleId(); }
103
104 /// Return the full path of aligned module volume or envelope in geometry
105 inline TString AliMUONGeometryModule::GetVolumePath() const
106 { return fTransformer->GetVolumePath(); }
107
108 /// Return envelopes associated with this module
109 inline  
110 AliMUONGeometryEnvelopeStore* AliMUONGeometryModule::GetEnvelopeStore() const
111 { return fEnvelopes; }
112
113 /// Return sensitive volume map
114 inline 
115 AliMUONStringIntMap* AliMUONGeometryModule::GetSVMap() const
116 { return fSVMap; }
117
118 /// Return transformer
119 inline 
120 AliMUONGeometryModuleTransformer* AliMUONGeometryModule::GetTransformer() const
121 { return fTransformer; }
122
123 #endif //ALI_MUON_GEOMETRY_MODULE_H