Added SetAlign() function for switching on/off alignement (Working week effort)
[u/mrichter/AliRoot.git] / MUON / AliMUONChamberGeometry.h
CommitLineData
30178c30 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
d1cd2474 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
19class TGeoTranslation;
20class TGeoRotation;
21class TGeoCombiTrans;
22class TObjArray;
23class TArrayI;
24
25class AliMUONChamber;
26class AliMUONGeometryEnvelope;
27
28class AliMUONChamberGeometry : public TObject
29{
30 public:
31 AliMUONChamberGeometry(Int_t chamberId);
32 AliMUONChamberGeometry();
d1cd2474 33 virtual ~AliMUONChamberGeometry();
34
d1cd2474 35 // methods
36
37 // adding virtual envelopes
38 // (not placed in MC geometry, only logical assembly of volumes,
39 // cannot have more copies)
d1cd2474 40 void AddEnvelope(const TString& name, Bool_t isVirtual,
6b82c1f0 41 const char* only="ONLY");
d1cd2474 42 void AddEnvelope(const TString& name, Bool_t isVirtual,
43 const TGeoTranslation& translation,
6b82c1f0 44 const char* only="ONLY");
45 void AddEnvelope(const TString& name, Bool_t isVirtual,
46 const TGeoTranslation& translation,
47 const TGeoRotation& rotation,
48 const char* only="ONLY");
d1cd2474 49
50 // adding non-virtual envelopes
51 // (placed in MC geometry with transformation composed
52 // of transformation of chamber and their transformation,
53 // can have more copies )
d1cd2474 54 void AddEnvelope(const TString& name, Int_t copyNo,
6b82c1f0 55 const char* only="ONLY");
56 void AddEnvelope(const TString& name, Int_t copyNo,
57 const TGeoTranslation& translation,
58 const char* only="ONLY");
d1cd2474 59 void AddEnvelope(const TString& name, Int_t copyNo,
60 const TGeoTranslation& translation,
6b82c1f0 61 const TGeoRotation& rotation,
62 const char* only="ONLY");
d1cd2474 63
64 // adding constituents to virtual envelopes
65 // (placed in MC geometry with transformation composed
66 // of transformation of chamber, envelope and their own
67 // transformation )
68 void AddEnvelopeConstituent(const TString& name, const TString& envName,
69 Int_t copyNo);
70 void AddEnvelopeConstituent(const TString& name, const TString& envName,
71 Int_t copyNo, const TGeoTranslation& translation);
72 void AddEnvelopeConstituent(const TString& name, const TString& envName,
73 Int_t copyNo, const TGeoTranslation& translation,
74 const TGeoRotation& rotation);
75
76 // adding constituents to virtual envelopes with specified shape
77 // parameters
78 // (placed in MC geometry with transformation composed
79 // of transformation of chamber, envelope and their own
80 // transformation )
81 void AddEnvelopeConstituentParam(const TString& name, const TString& envName,
82 Int_t copyNo, Int_t npar, Double_t* param);
83 void AddEnvelopeConstituentParam(const TString& name, const TString& envName,
84 Int_t copyNo, const TGeoTranslation& translation,
85 Int_t npar, Double_t* param);
86 void AddEnvelopeConstituentParam(const TString& name, const TString& envName,
87 Int_t copyNo, const TGeoTranslation& translation,
88 const TGeoRotation& rotation, Int_t npar, Double_t* param);
89
90 void SetMotherVolume(const TString& motherVolumeName);
91 void SetTranslation(const TGeoTranslation& translation);
92 void SetRotation(const TGeoRotation& rotation);
93
94 void SetSensitiveVolume(Int_t volId);
95 void SetSensitiveVolume(const TString& name);
96 void SetDebug(Bool_t debug);
97
98 // get methods
99 TString GetMotherVolume() const;
100 const TGeoCombiTrans* GetTransformation() const;
101 const TObjArray* GetEnvelopes() const;
102 Bool_t IsSensitiveVolume(Int_t volId) const;
103
30178c30 104 protected:
105 AliMUONChamberGeometry(const AliMUONChamberGeometry& rhs);
106 // operators
107 AliMUONChamberGeometry& operator = (const AliMUONChamberGeometry& rhs);
108
d1cd2474 109 private:
110 // methods
111 AliMUONGeometryEnvelope* FindEnvelope(const TString& name) const;
112
113 // data members
114 Int_t fChamberId; // the chamber Id
115 TString fMotherVolume; // mother volume name
116 TGeoCombiTrans* fTransformation;// the chamber transformation wrt to mother
117 // volume
118 TObjArray* fEnvelopes; // the envelopes names and transformations
119 // wrt to the chamber position in mother volume
120 Int_t fNofSensVolumeIds; // Number of sensitive volumes IDs
121 TArrayI* fSensVolumeIds; // Sensitive volumes IDs
122 Bool_t fDebug; // Switch for debugging
123
124 ClassDef(AliMUONChamberGeometry,1) // MUON chamber geometry base class
125};
126
127// inline functions
128
129inline void AliMUONChamberGeometry::SetMotherVolume(const TString& motherVolumeName)
130{ fMotherVolume = motherVolumeName; }
131
132inline void AliMUONChamberGeometry::SetDebug(Bool_t debug)
133{ fDebug = debug; }
134
135inline TString AliMUONChamberGeometry::GetMotherVolume() const
136{ return fMotherVolume; }
137
138inline const TGeoCombiTrans* AliMUONChamberGeometry::GetTransformation() const
139{ return fTransformation; }
140
141inline const TObjArray* AliMUONChamberGeometry::GetEnvelopes() const
142{ return fEnvelopes; }
143
144#endif //ALI_MUON_V_CHAMBER_GEOMETRY_H