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