- Adding volume path attribute (moved from AliMUONGeometryModule)
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryModule.h
CommitLineData
e118b27e 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
692de412 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
e118b27e 16
f29ba3e1 17#ifndef ALI_MUON_GEOMETRY_MODULE_H
18#define ALI_MUON_GEOMETRY_MODULE_H
e118b27e 19
20#include <TObject.h>
21#include <TString.h>
22
6cfb12b4 23#include "AliMUONGeometryModuleTransformer.h"
24
e118b27e 25class TGeoTranslation;
26class TGeoRotation;
27class TGeoCombiTrans;
28class TObjArray;
29class TArrayI;
30
31class AliMUONGeometryEnvelope;
32class AliMUONGeometryEnvelopeStore;
33class AliMUONGeometryDetElement;
34class AliMUONGeometryStore;
35class AliMUONGeometrySVMap;
e118b27e 36
37class AliMUONGeometryModule : public TObject
38{
39 public:
40 AliMUONGeometryModule(Int_t moduleId);
41 AliMUONGeometryModule();
42 virtual ~AliMUONGeometryModule();
43
e118b27e 44 // set methods
6cfb12b4 45 //
e118b27e 46 void SetMotherVolume(const TString& motherVolumeName);
cfbf2f7d 47 void SetVolume(const TString& volumeName);
6cfb12b4 48 void SetTransformation(const TGeoCombiTrans& transform);
e118b27e 49
50 void SetSensitiveVolume(Int_t volId);
51 void SetSensitiveVolume(const TString& name);
52 void SetAlign(Bool_t align);
53
54 // get methods
6cfb12b4 55 //
56 Bool_t IsVirtual() const;
57 Int_t GetModuleId() const;
58 TString GetMotherVolume() const;
59 TString GetVolume() const;
60
e118b27e 61 AliMUONGeometryDetElement* FindBySensitiveVolume(
62 const TString& volumePath) const;
e118b27e 63 Bool_t IsSensitiveVolume(Int_t volId) const;
64 Bool_t IsSensitiveVolume(const TString& volName) const;
65
6cfb12b4 66 AliMUONGeometryEnvelopeStore* GetEnvelopeStore() const;
67 AliMUONGeometrySVMap* GetSVMap() const;
68 AliMUONGeometryModuleTransformer* GetTransformer() const;
69
e118b27e 70 protected:
71 AliMUONGeometryModule(const AliMUONGeometryModule& rhs);
6cfb12b4 72 AliMUONGeometryModule& operator = (const AliMUONGeometryModule& rhs);
e118b27e 73
74 private:
75 // methods
76 Int_t GetSVIndex(Int_t svVolId) const;
77
78 // data members
cfbf2f7d 79 Bool_t fIsVirtual; // true if module is not represented
80 // by a real volume
e118b27e 81 TString fMotherVolume; // mother volume name
cfbf2f7d 82 TString fVolume; // the volume name if not virtual
e118b27e 83 Int_t fNofSVs; // number of sensitive volumes
84 TArrayI* fSVVolumeIds; // densitive volumes IDs
6cfb12b4 85
86 AliMUONGeometryEnvelopeStore* fEnvelopes; // envelopes
87 AliMUONGeometrySVMap* fSVMap; // sensitive volumes map
88 AliMUONGeometryModuleTransformer* fTransformer;// geometry transformations
e118b27e 89
6cfb12b4 90 ClassDef(AliMUONGeometryModule,3) // MUON geometry module class
e118b27e 91};
92
93// inline functions
94
6cfb12b4 95inline
96void AliMUONGeometryModule::SetMotherVolume(const TString& motherVolumeName)
e118b27e 97{ fMotherVolume = motherVolumeName; }
98
cfbf2f7d 99inline Bool_t AliMUONGeometryModule::IsVirtual() const
100{ return fIsVirtual; }
101
e118b27e 102inline Int_t AliMUONGeometryModule::GetModuleId() const
6cfb12b4 103{ return fTransformer->GetModuleId(); }
e118b27e 104
105inline TString AliMUONGeometryModule::GetMotherVolume() const
106{ return fMotherVolume; }
107
cfbf2f7d 108inline TString AliMUONGeometryModule::GetVolume() const
109{ return fVolume; }
110
6cfb12b4 111inline
112AliMUONGeometryEnvelopeStore* AliMUONGeometryModule::GetEnvelopeStore() const
e118b27e 113{ return fEnvelopes; }
114
6cfb12b4 115inline
116AliMUONGeometrySVMap* AliMUONGeometryModule::GetSVMap() const
e118b27e 117{ return fSVMap; }
118
6cfb12b4 119inline
120AliMUONGeometryModuleTransformer* AliMUONGeometryModule::GetTransformer() const
121{ return fTransformer; }
122
f29ba3e1 123#endif //ALI_MUON_GEOMETRY_MODULE_H