]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONGeometryEnvelope.cxx
Change Mult binning scheme
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryEnvelope.cxx
... / ...
CommitLineData
1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16// $Id$
17
18//-----------------------------------------------------------------------------
19// Class AliMUONGeometryEnvelope
20// -----------------------------
21// Helper class for definititon of an assembly of volumes.
22// Author: Ivana Hrivnacova, IPN Orsay
23// 23/01/2004
24//-----------------------------------------------------------------------------
25
26#include <TGeoMatrix.h>
27#include <TString.h>
28#include <TObjArray.h>
29
30#include "AliMUONGeometryEnvelope.h"
31#include "AliMUONGeometryConstituent.h"
32#include "AliLog.h"
33
34/// \cond CLASSIMP
35ClassImp(AliMUONGeometryEnvelope)
36/// \endcond
37
38//______________________________________________________________________________
39AliMUONGeometryEnvelope::AliMUONGeometryEnvelope(const TString& name,
40 Int_t id,
41 Bool_t isVirtual,
42 const char* only)
43 : TNamed(name, name),
44 fIsVirtual(isVirtual),
45 fIsMANY(false),
46 fCopyNo(1),
47 fTransformation(0),
48 fConstituents(0)
49{
50/// Standard constructor
51
52 if (TString(only) == TString("MANY")) fIsMANY = true;
53
54 // Create the envelope transformation
55 fTransformation = new TGeoCombiTrans("");
56 fConstituents = new TObjArray(20);
57
58 // Set id
59 SetUniqueID(id);
60}
61
62
63//______________________________________________________________________________
64AliMUONGeometryEnvelope::AliMUONGeometryEnvelope(const TString& name,
65 Int_t id,
66 Int_t copyNo,
67 const char* only)
68 : TNamed(name, name),
69 fIsVirtual(false),
70 fIsMANY(false),
71 fCopyNo(copyNo),
72 fTransformation(0),
73 fConstituents(0)
74{
75/// Standard constructor for a non virtual enevelope with a specified copy
76/// number
77
78 if (TString(only) == TString("MANY")) fIsMANY = true;
79
80 // Create the envelope transformation
81 fTransformation = new TGeoCombiTrans("");
82 fConstituents = new TObjArray(20);
83
84 // Set id
85 SetUniqueID(id);
86}
87
88
89//______________________________________________________________________________
90AliMUONGeometryEnvelope::AliMUONGeometryEnvelope()
91 : TNamed(),
92 fIsVirtual(0),
93 fIsMANY(false),
94 fCopyNo(0),
95 fTransformation(0),
96 fConstituents(0)
97{
98/// Default constructor
99}
100
101//______________________________________________________________________________
102AliMUONGeometryEnvelope::~AliMUONGeometryEnvelope()
103{
104/// Destructor
105
106 // Add deleting rotation matrices
107
108 delete fTransformation;
109
110 if (fConstituents) {
111 fConstituents->Delete();
112 delete fConstituents;
113 }
114}
115
116//
117// public methods
118//
119
120//______________________________________________________________________________
121void AliMUONGeometryEnvelope::AddConstituent(const TString& name, Int_t copyNo)
122{
123/// Add the volume with the specified name and transformation
124/// to the list of envelopes.
125
126 fConstituents->Add(new AliMUONGeometryConstituent(name, copyNo, 0, 0));
127}
128
129//______________________________________________________________________________
130void AliMUONGeometryEnvelope::AddConstituent(const TString& name, Int_t copyNo,
131 const TGeoTranslation& translation)
132{
133/// Add the volume with the specified name and transformation
134/// to the list of envelopes.
135
136 fConstituents
137 ->Add(new AliMUONGeometryConstituent(name, copyNo, translation, 0, 0));
138}
139
140//______________________________________________________________________________
141void AliMUONGeometryEnvelope::AddConstituent(const TString& name, Int_t copyNo,
142 const TGeoTranslation& translation,
143 const TGeoRotation& rotation)
144{
145/// Add the volume with the specified name and transformation
146/// to the list of envelopes.
147
148 fConstituents
149 ->Add(new AliMUONGeometryConstituent(
150 name, copyNo, translation, rotation, 0, 0));
151}
152
153//______________________________________________________________________________
154void AliMUONGeometryEnvelope::AddConstituent(const TString& name, Int_t copyNo,
155 const TGeoCombiTrans& transform )
156{
157/// Add the volume with the specified name and transformation
158/// to the list of envelopes.
159
160 fConstituents
161 ->Add(new AliMUONGeometryConstituent(
162 name, copyNo, transform, 0, 0));
163}
164
165//______________________________________________________________________________
166void AliMUONGeometryEnvelope::AddConstituentParam(const TString& name,
167 Int_t copyNo, Int_t npar, Double_t* param)
168{
169/// Add the volume with the specified name and transformation
170/// to the list of envelopes.
171
172 fConstituents
173 ->Add(new AliMUONGeometryConstituent(name, copyNo, npar, param));
174}
175
176//______________________________________________________________________________
177void AliMUONGeometryEnvelope::AddConstituentParam(const TString& name,
178 Int_t copyNo, const TGeoTranslation& translation,
179 Int_t npar, Double_t* param)
180{
181/// Add the volume with the specified name and transformation
182/// to the list of envelopes.
183
184 fConstituents
185 ->Add(new AliMUONGeometryConstituent(
186 name, copyNo, translation, npar, param));
187}
188
189//______________________________________________________________________________
190void AliMUONGeometryEnvelope::AddConstituentParam(const TString& name,
191 Int_t copyNo, const TGeoTranslation& translation,
192 const TGeoRotation& rotation,
193 Int_t npar, Double_t* param)
194{
195/// Add the volume with the specified name and transformation
196/// to the list of envelopes.
197
198 fConstituents
199 ->Add(new AliMUONGeometryConstituent(
200 name, copyNo, translation, rotation, npar, param));
201}
202
203//______________________________________________________________________________
204void AliMUONGeometryEnvelope::AddConstituentParam(const TString& name,
205 Int_t copyNo,
206 const TGeoCombiTrans& transform,
207 Int_t npar, Double_t* param)
208{
209/// Add the volume with the specified name and transformation
210/// to the list of envelopes.
211
212 fConstituents
213 ->Add(new AliMUONGeometryConstituent(
214 name, copyNo, transform, npar, param));
215}
216
217//______________________________________________________________________________
218void AliMUONGeometryEnvelope::SetTranslation(const TGeoTranslation& translation)
219{
220/// Set the envelope position
221
222 fTransformation
223 ->SetTranslation(const_cast<Double_t*>(translation.GetTranslation()));
224}
225
226//______________________________________________________________________________
227void AliMUONGeometryEnvelope::SetRotation(const TGeoRotation& rotation)
228{
229/// Set the envelope rotation
230
231 TGeoRotation* rot = new TGeoRotation();
232 rot->SetMatrix(const_cast<Double_t*>(rotation.GetRotationMatrix()));
233
234 fTransformation->SetRotation(rot);
235}
236
237//______________________________________________________________________________
238void AliMUONGeometryEnvelope::SetTransform(const TGeoCombiTrans& transform)
239{
240/// Set the envelope transformation
241
242 fTransformation
243 ->SetTranslation(const_cast<Double_t*>(transform.GetTranslation()));
244
245 TGeoRotation* rot = new TGeoRotation();
246 rot->SetMatrix(const_cast<Double_t*>(transform.GetRotationMatrix()));
247
248 fTransformation->SetRotation(rot);
249}