]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONSt2GeometryBuilder.cxx
Extendened class description to include at least 5 subsequent lines required by rule...
[u/mrichter/AliRoot.git] / MUON / AliMUONSt2GeometryBuilder.cxx
1 // $Id$
2 //
3 // Class AliMUONSt2GeometryBuilder
4 // -------------------------------
5 // MUON Station2 coarse geometry construction class.
6 // Extracted from AliMUONv1
7 // by Ivana Hrivnacova, IPN Orsay
8 // Included in AliRoot 2004/01/23
9
10 #include <TVirtualMC.h>
11 #include <TGeoMatrix.h>
12
13 #include "AliMUONSt2GeometryBuilder.h"
14 #include "AliMUON.h"
15 #include "AliMUONChamber.h"
16 #include "AliMUONChamberGeometry.h"
17
18 ClassImp(AliMUONSt2GeometryBuilder)
19
20 //______________________________________________________________________________
21 AliMUONSt2GeometryBuilder::AliMUONSt2GeometryBuilder(AliMUON* muon)
22  : AliMUONVGeometryBuilder(&muon->Chamber(2), &muon->Chamber(3)),
23    fMUON(muon)
24 {
25 // Standard constructor
26
27 }
28
29 //______________________________________________________________________________
30 AliMUONSt2GeometryBuilder::AliMUONSt2GeometryBuilder()
31  : AliMUONVGeometryBuilder(),
32    fMUON(0)
33 {
34 // Default constructor
35 }
36
37
38 //______________________________________________________________________________
39 AliMUONSt2GeometryBuilder::AliMUONSt2GeometryBuilder(const AliMUONSt2GeometryBuilder& rhs)
40   : AliMUONVGeometryBuilder(rhs)
41 {
42   Fatal("Copy constructor", 
43         "Copy constructor is not implemented.");
44 }
45
46 //______________________________________________________________________________
47 AliMUONSt2GeometryBuilder::~AliMUONSt2GeometryBuilder() {
48 //
49 }
50
51 //______________________________________________________________________________
52 AliMUONSt2GeometryBuilder& 
53 AliMUONSt2GeometryBuilder::operator = (const AliMUONSt2GeometryBuilder& rhs) 
54 {
55   // check assignement to self
56   if (this == &rhs) return *this;
57
58   Fatal("operator=", 
59         "Assignment operator is not implemented.");
60     
61   return *this;  
62 }
63
64 //
65 // public methods
66 //
67
68 //______________________________________________________________________________
69 void AliMUONSt2GeometryBuilder::CreateGeometry() 
70 {
71 // From AliMUONv1::CreateGeometry()
72
73 //
74 //********************************************************************
75 //                            Station 2                             **
76 //********************************************************************
77      // indices 1 and 2 for first and second chambers in the station
78      // iChamber (first chamber) kept for other quanties than Z,
79      // assumed to be the same in both chambers
80
81      // Get tracking medias Ids     
82      Int_t *idtmed = fMUON->GetIdtmed()->GetArray()-1099;
83      Int_t idAir= idtmed[1100]; // medium 1
84      Int_t idAlu1=idtmed[1103]; // medium 4
85      Int_t idAlu2=idtmed[1104]; // medium 5
86      Int_t idGas=idtmed[1108];  // medium 9 = Ar-CO2 gas (80%+20%)
87      Bool_t frameCrosses=kTRUE;     
88
89      // Rotation matrices in the x-y plane  
90      // phi= 0 deg
91      Int_t irot1;
92      fMUON->AliMatrix(irot1,  90.,   0., 90.,  90., 0., 0.);
93      // phi= 90 deg
94      Int_t irot2;
95      fMUON->AliMatrix(irot2,  90.,  90., 90., 180., 0., 0.);
96
97      AliMUONChamber* iChamber = GetChamber(2);
98      AliMUONChamber* iChamber1 = iChamber;
99      AliMUONChamber* iChamber2 = GetChamber(3);
100      
101      // Half of the total thickness of frame crosses (including DAlu)
102      // for each chamber in stations 1 and 2:
103      // 3% of X0 of composite material,
104      // but taken as Aluminium here, with same thickness in number of X0
105      Float_t dframez = 3. * 8.9 / 100;
106      // DGas and DAlu not changed from standard values
107      Double_t zfpos=-(iChamber->DGas()+dframez+iChamber->DAlu())/2;
108              // The same parameters are defined in builder for station 1 
109      
110      // Mother volume
111      // Outer excess and inner recess for mother volume radius
112      // with respect to ROuter and RInner
113      Float_t dframep=.001; // Value for station 3 should be 6 ...
114      // Width (RdPhi) of the frame crosses for stations 1 and 2 (cm)
115      // Float_t dframep1=.001;
116      Float_t phi=2*TMath::Pi()/12/2;
117              // The same parameters are defined in builder for station 1 
118
119      Float_t tpar[3];
120      Double_t dstation = (-iChamber2->Z()) - (-iChamber1->Z());
121      tpar[0] = iChamber->RInner()-dframep; 
122      tpar[1] = (iChamber->ROuter()+dframep)/TMath::Cos(phi);
123      tpar[2] = dstation/5;
124
125      gMC->Gsvolu("S03M", "TUBE", idAir, tpar, 3);
126      gMC->Gsvolu("S04M", "TUBE", idAir, tpar, 3);
127
128      // CHANGED
129      //gMC->Gspos("S03M", 1, "ALIC", 0., 0., zpos1 , 0, "ONLY");
130      //gMC->Gspos("S04M", 1, "ALIC", 0., 0., zpos2 , 0, "ONLY");
131      GetChamber(2)->GetGeometry()->AddEnvelope("S03M", false);
132      GetChamber(3)->GetGeometry()->AddEnvelope("S04M", false);
133      
134      gMC->Gsbool("S03M", "L3DO");
135      gMC->Gsbool("S03M", "L3O1");
136      gMC->Gsbool("S03M", "L3O2");
137      gMC->Gsbool("S04M", "L3DO");
138      gMC->Gsbool("S04M", "L3O1");
139      gMC->Gsbool("S04M", "L3O2");
140
141 // // Aluminium frames
142 // // Outer frames
143 //      pgpar[0] = 360/12/2;
144 //      pgpar[1] = 360.;
145 //      pgpar[2] = 12.;
146 //      pgpar[3] =   2;
147 //      pgpar[4] = -dframez/2;
148 //      pgpar[5] = iChamber->ROuter();
149 //      pgpar[6] = pgpar[5]+dframep;
150 //      pgpar[7] = +dframez/2;
151 //      pgpar[8] = pgpar[5];
152 //      pgpar[9] = pgpar[6];
153 //      gMC->Gsvolu("S03O", "PGON", idAlu1, pgpar, 10);
154 //      gMC->Gsvolu("S04O", "PGON", idAlu1, pgpar, 10);
155 //      gMC->Gspos("S03O",1,"S03M", 0.,0.,-zfpos,  0,"ONLY");
156 //      gMC->Gspos("S03O",2,"S03M", 0.,0.,+zfpos,  0,"ONLY");
157 //      gMC->Gspos("S04O",1,"S04M", 0.,0.,-zfpos,  0,"ONLY");
158 //      gMC->Gspos("S04O",2,"S04M", 0.,0.,+zfpos,  0,"ONLY");
159 // //
160 // // Inner frame
161 //      tpar[0]= iChamber->RInner()-dframep;
162 //      tpar[1]= iChamber->RInner();
163 //      tpar[2]= dframez/2;
164 //      gMC->Gsvolu("S03I", "TUBE", idAlu1, tpar, 3);
165 //      gMC->Gsvolu("S04I", "TUBE", idAlu1, tpar, 3);
166
167 //      gMC->Gspos("S03I",1,"S03M", 0.,0.,-zfpos,  0,"ONLY");
168 //      gMC->Gspos("S03I",2,"S03M", 0.,0.,+zfpos,  0,"ONLY");
169 //      gMC->Gspos("S04I",1,"S04M", 0.,0.,-zfpos,  0,"ONLY");
170 //      gMC->Gspos("S04I",2,"S04M", 0.,0.,+zfpos,  0,"ONLY");
171 //
172 // Frame Crosses
173      if (frameCrosses) {
174          // outside gas
175          // security for inside mother volume
176  
177          // ADDED !! Repeated     
178          Float_t dframep1 = 11.0;
179          Float_t dframez = 3. * 8.9 / 100;
180
181          Float_t bpar[3];
182          bpar[0] = (iChamber->ROuter() - iChamber->RInner())
183            * TMath::Cos(TMath::ASin(dframep1 /
184                                    (iChamber->ROuter() - iChamber->RInner())))
185            / 2.0;
186          bpar[1] = dframep1/2;
187          // total thickness will be (4 * bpar[2]) for each chamber,
188          // which has to be equal to (2 * dframez) - DAlu
189          bpar[2] = (2.0 * dframez - iChamber->DAlu()) / 4.0;
190          gMC->Gsvolu("S03B", "BOX", idAlu1, bpar, 3);
191          gMC->Gsvolu("S04B", "BOX", idAlu1, bpar, 3);
192          
193          gMC->Gspos("S03B",1,"S03M", +iChamber->RInner()+bpar[0] , 0,-zfpos, 
194                     irot1,"ONLY");
195          gMC->Gspos("S03B",2,"S03M", -iChamber->RInner()-bpar[0] , 0,-zfpos, 
196                     irot1,"ONLY");
197          gMC->Gspos("S03B",3,"S03M", 0, +iChamber->RInner()+bpar[0] ,-zfpos, 
198                     irot2,"ONLY");
199          gMC->Gspos("S03B",4,"S03M", 0, -iChamber->RInner()-bpar[0] ,-zfpos, 
200                     irot2,"ONLY");
201          gMC->Gspos("S03B",5,"S03M", +iChamber->RInner()+bpar[0] , 0,+zfpos, 
202                     irot1,"ONLY");
203          gMC->Gspos("S03B",6,"S03M", -iChamber->RInner()-bpar[0] , 0,+zfpos, 
204                     irot1,"ONLY");
205          gMC->Gspos("S03B",7,"S03M", 0, +iChamber->RInner()+bpar[0] ,+zfpos, 
206                     irot2,"ONLY");
207          gMC->Gspos("S03B",8,"S03M", 0, -iChamber->RInner()-bpar[0] ,+zfpos, 
208                     irot2,"ONLY");
209          
210          gMC->Gspos("S04B",1,"S04M", +iChamber->RInner()+bpar[0] , 0,-zfpos, 
211                     irot1,"ONLY");
212          gMC->Gspos("S04B",2,"S04M", -iChamber->RInner()-bpar[0] , 0,-zfpos, 
213                     irot1,"ONLY");
214          gMC->Gspos("S04B",3,"S04M", 0, +iChamber->RInner()+bpar[0] ,-zfpos, 
215                     irot2,"ONLY");
216          gMC->Gspos("S04B",4,"S04M", 0, -iChamber->RInner()-bpar[0] ,-zfpos, 
217                     irot2,"ONLY");
218          gMC->Gspos("S04B",5,"S04M", +iChamber->RInner()+bpar[0] , 0,+zfpos, 
219                     irot1,"ONLY");
220          gMC->Gspos("S04B",6,"S04M", -iChamber->RInner()-bpar[0] , 0,+zfpos, 
221                     irot1,"ONLY");
222          gMC->Gspos("S04B",7,"S04M", 0, +iChamber->RInner()+bpar[0] ,+zfpos, 
223                     irot2,"ONLY");
224          gMC->Gspos("S04B",8,"S04M", 0, -iChamber->RInner()-bpar[0] ,+zfpos, 
225                     irot2,"ONLY");
226      }
227 //
228 //   Chamber Material represented by Alu sheet
229      tpar[0]= iChamber->RInner();
230      tpar[1]= iChamber->ROuter();
231      tpar[2] = (iChamber->DGas()+iChamber->DAlu())/2;
232      gMC->Gsvolu("S03A", "TUBE", idAlu2, tpar, 3);
233      gMC->Gsvolu("S04A", "TUBE", idAlu2, tpar, 3);
234      gMC->Gspos("S03A", 1, "S03M", 0., 0., 0.,  0, "ONLY");
235      gMC->Gspos("S04A", 1, "S04M", 0., 0., 0.,  0, "ONLY");
236 //     
237 //   Sensitive volumes
238      // tpar[2] = iChamber->DGas();
239      tpar[2] = iChamber->DGas()/2;
240      gMC->Gsvolu("S03G", "TUBE", idGas, tpar, 3);
241      gMC->Gsvolu("S04G", "TUBE", idGas, tpar, 3);
242      gMC->Gspos("S03G", 1, "S03A", 0., 0., 0.,  0, "ONLY");
243      gMC->Gspos("S04G", 1, "S04A", 0., 0., 0.,  0, "ONLY");
244 //
245 // Frame Crosses to be placed inside gas 
246      // NONE: chambers are sensitive everywhere
247 //      if (frameCrosses) {
248
249 //       dr = (iChamber->ROuter() - iChamber->RInner());
250 //       bpar[0] = TMath::Sqrt(dr*dr-dframep1*dframep1/4)/2;
251 //       bpar[1] = dframep1/2;
252 //       bpar[2] = iChamber->DGas()/2;
253 //       gMC->Gsvolu("S03F", "BOX", idAlu1, bpar, 3);
254 //       gMC->Gsvolu("S04F", "BOX", idAlu1, bpar, 3);
255          
256 //       gMC->Gspos("S03F",1,"S03G", +iChamber->RInner()+bpar[0] , 0, 0, 
257 //                  irot1,"ONLY");
258 //       gMC->Gspos("S03F",2,"S03G", -iChamber->RInner()-bpar[0] , 0, 0, 
259 //                  irot1,"ONLY");
260 //       gMC->Gspos("S03F",3,"S03G", 0, +iChamber->RInner()+bpar[0] , 0, 
261 //                  irot2,"ONLY");
262 //       gMC->Gspos("S03F",4,"S03G", 0, -iChamber->RInner()-bpar[0] , 0, 
263 //                  irot2,"ONLY");
264          
265 //       gMC->Gspos("S04F",1,"S04G", +iChamber->RInner()+bpar[0] , 0, 0, 
266 //                  irot1,"ONLY");
267 //       gMC->Gspos("S04F",2,"S04G", -iChamber->RInner()-bpar[0] , 0, 0, 
268 //                  irot1,"ONLY");
269 //       gMC->Gspos("S04F",3,"S04G", 0, +iChamber->RInner()+bpar[0] , 0, 
270 //                  irot2,"ONLY");
271 //       gMC->Gspos("S04F",4,"S04G", 0, -iChamber->RInner()-bpar[0] , 0, 
272 //                  irot2,"ONLY");
273 //      }
274 /*
275      iChamber1 = iChamber = (AliMUONChamber*) (*fChambers)[2];
276      iChamber2 =(AliMUONChamber*) (*fChambers)[3];
277      zpos1=iChamber1->Z(); 
278      zpos2=iChamber2->Z();
279      dstation = zpos2 - zpos1;
280      // DGas and DAlu not changed from standard values
281      zfpos=-(iChamber->DGas()+dframez+iChamber->DAlu())/2;
282      
283 //
284 //   Mother volume
285      tpar[0] = iChamber->RInner()-dframep; 
286      tpar[1] = (iChamber->ROuter()+dframep)/TMath::Cos(phi);
287      tpar[2] = dstation/5;
288
289      gMC->Gsvolu("S03M", "TUBE", idAir, tpar, 3);
290      gMC->Gsvolu("S04M", "TUBE", idAir, tpar, 3);
291      gMC->Gspos("S03M", 1, "ALIC", 0., 0., zpos1 , 0, "ONLY");
292      gMC->Gspos("S04M", 1, "ALIC", 0., 0., zpos2 , 0, "ONLY");
293      gMC->Gsbool("S03M", "L3DO");
294      gMC->Gsbool("S03M", "L3O1");
295      gMC->Gsbool("S03M", "L3O2");
296      gMC->Gsbool("S04M", "L3DO");
297      gMC->Gsbool("S04M", "L3O1");
298      gMC->Gsbool("S04M", "L3O2");
299
300 // // Aluminium frames
301 // // Outer frames
302 //      pgpar[0] = 360/12/2;
303 //      pgpar[1] = 360.;
304 //      pgpar[2] = 12.;
305 //      pgpar[3] =   2;
306 //      pgpar[4] = -dframez/2;
307 //      pgpar[5] = iChamber->ROuter();
308 //      pgpar[6] = pgpar[5]+dframep;
309 //      pgpar[7] = +dframez/2;
310 //      pgpar[8] = pgpar[5];
311 //      pgpar[9] = pgpar[6];
312 //      gMC->Gsvolu("S03O", "PGON", idAlu1, pgpar, 10);
313 //      gMC->Gsvolu("S04O", "PGON", idAlu1, pgpar, 10);
314 //      gMC->Gspos("S03O",1,"S03M", 0.,0.,-zfpos,  0,"ONLY");
315 //      gMC->Gspos("S03O",2,"S03M", 0.,0.,+zfpos,  0,"ONLY");
316 //      gMC->Gspos("S04O",1,"S04M", 0.,0.,-zfpos,  0,"ONLY");
317 //      gMC->Gspos("S04O",2,"S04M", 0.,0.,+zfpos,  0,"ONLY");
318 // //
319 // // Inner frame
320 //      tpar[0]= iChamber->RInner()-dframep;
321 //      tpar[1]= iChamber->RInner();
322 //      tpar[2]= dframez/2;
323 //      gMC->Gsvolu("S03I", "TUBE", idAlu1, tpar, 3);
324 //      gMC->Gsvolu("S04I", "TUBE", idAlu1, tpar, 3);
325
326 //      gMC->Gspos("S03I",1,"S03M", 0.,0.,-zfpos,  0,"ONLY");
327 //      gMC->Gspos("S03I",2,"S03M", 0.,0.,+zfpos,  0,"ONLY");
328 //      gMC->Gspos("S04I",1,"S04M", 0.,0.,-zfpos,  0,"ONLY");
329 //      gMC->Gspos("S04I",2,"S04M", 0.,0.,+zfpos,  0,"ONLY");
330 //
331 // Frame Crosses
332      if (frameCrosses) {
333          // outside gas
334          // security for inside mother volume
335          bpar[0] = (iChamber->ROuter() - iChamber->RInner())
336            * TMath::Cos(TMath::ASin(dframep1 /
337                                    (iChamber->ROuter() - iChamber->RInner())))
338            / 2.0;
339          bpar[1] = dframep1/2;
340          // total thickness will be (4 * bpar[2]) for each chamber,
341          // which has to be equal to (2 * dframez) - DAlu
342          bpar[2] = (2.0 * dframez - iChamber->DAlu()) / 4.0;
343          gMC->Gsvolu("S03B", "BOX", idAlu1, bpar, 3);
344          gMC->Gsvolu("S04B", "BOX", idAlu1, bpar, 3);
345          
346          gMC->Gspos("S03B",1,"S03M", +iChamber->RInner()+bpar[0] , 0,-zfpos, 
347                     irot1,"ONLY");
348          gMC->Gspos("S03B",2,"S03M", -iChamber->RInner()-bpar[0] , 0,-zfpos, 
349                     irot1,"ONLY");
350          gMC->Gspos("S03B",3,"S03M", 0, +iChamber->RInner()+bpar[0] ,-zfpos, 
351                     irot2,"ONLY");
352          gMC->Gspos("S03B",4,"S03M", 0, -iChamber->RInner()-bpar[0] ,-zfpos, 
353                     irot2,"ONLY");
354          gMC->Gspos("S03B",5,"S03M", +iChamber->RInner()+bpar[0] , 0,+zfpos, 
355                     irot1,"ONLY");
356          gMC->Gspos("S03B",6,"S03M", -iChamber->RInner()-bpar[0] , 0,+zfpos, 
357                     irot1,"ONLY");
358          gMC->Gspos("S03B",7,"S03M", 0, +iChamber->RInner()+bpar[0] ,+zfpos, 
359                     irot2,"ONLY");
360          gMC->Gspos("S03B",8,"S03M", 0, -iChamber->RInner()-bpar[0] ,+zfpos, 
361                     irot2,"ONLY");
362          
363          gMC->Gspos("S04B",1,"S04M", +iChamber->RInner()+bpar[0] , 0,-zfpos, 
364                     irot1,"ONLY");
365          gMC->Gspos("S04B",2,"S04M", -iChamber->RInner()-bpar[0] , 0,-zfpos, 
366                     irot1,"ONLY");
367          gMC->Gspos("S04B",3,"S04M", 0, +iChamber->RInner()+bpar[0] ,-zfpos, 
368                     irot2,"ONLY");
369          gMC->Gspos("S04B",4,"S04M", 0, -iChamber->RInner()-bpar[0] ,-zfpos, 
370                     irot2,"ONLY");
371          gMC->Gspos("S04B",5,"S04M", +iChamber->RInner()+bpar[0] , 0,+zfpos, 
372                     irot1,"ONLY");
373          gMC->Gspos("S04B",6,"S04M", -iChamber->RInner()-bpar[0] , 0,+zfpos, 
374                     irot1,"ONLY");
375          gMC->Gspos("S04B",7,"S04M", 0, +iChamber->RInner()+bpar[0] ,+zfpos, 
376                     irot2,"ONLY");
377          gMC->Gspos("S04B",8,"S04M", 0, -iChamber->RInner()-bpar[0] ,+zfpos, 
378                     irot2,"ONLY");
379      }
380 //
381 //   Chamber Material represented by Alu sheet
382      tpar[0]= iChamber->RInner();
383      tpar[1]= iChamber->ROuter();
384      tpar[2] = (iChamber->DGas()+iChamber->DAlu())/2;
385      gMC->Gsvolu("S03A", "TUBE", idAlu2, tpar, 3);
386      gMC->Gsvolu("S04A", "TUBE", idAlu2, tpar, 3);
387      gMC->Gspos("S03A", 1, "S03M", 0., 0., 0.,  0, "ONLY");
388      gMC->Gspos("S04A", 1, "S04M", 0., 0., 0.,  0, "ONLY");
389 //     
390 //   Sensitive volumes
391      // tpar[2] = iChamber->DGas();
392      tpar[2] = iChamber->DGas()/2;
393      gMC->Gsvolu("S03G", "TUBE", idGas, tpar, 3);
394      gMC->Gsvolu("S04G", "TUBE", idGas, tpar, 3);
395      gMC->Gspos("S03G", 1, "S03A", 0., 0., 0.,  0, "ONLY");
396      gMC->Gspos("S04G", 1, "S04A", 0., 0., 0.,  0, "ONLY");
397 //
398 // Frame Crosses to be placed inside gas 
399      // NONE: chambers are sensitive everywhere
400 //      if (frameCrosses) {
401
402 //       dr = (iChamber->ROuter() - iChamber->RInner());
403 //       bpar[0] = TMath::Sqrt(dr*dr-dframep1*dframep1/4)/2;
404 //       bpar[1] = dframep1/2;
405 //       bpar[2] = iChamber->DGas()/2;
406 //       gMC->Gsvolu("S03F", "BOX", idAlu1, bpar, 3);
407 //       gMC->Gsvolu("S04F", "BOX", idAlu1, bpar, 3);
408          
409 //       gMC->Gspos("S03F",1,"S03G", +iChamber->RInner()+bpar[0] , 0, 0, 
410 //                  irot1,"ONLY");
411 //       gMC->Gspos("S03F",2,"S03G", -iChamber->RInner()-bpar[0] , 0, 0, 
412 //                  irot1,"ONLY");
413 //       gMC->Gspos("S03F",3,"S03G", 0, +iChamber->RInner()+bpar[0] , 0, 
414 //                  irot2,"ONLY");
415 //       gMC->Gspos("S03F",4,"S03G", 0, -iChamber->RInner()-bpar[0] , 0, 
416 //                  irot2,"ONLY");
417          
418 //       gMC->Gspos("S04F",1,"S04G", +iChamber->RInner()+bpar[0] , 0, 0, 
419 //                  irot1,"ONLY");
420 //       gMC->Gspos("S04F",2,"S04G", -iChamber->RInner()-bpar[0] , 0, 0, 
421 //                  irot1,"ONLY");
422 //       gMC->Gspos("S04F",3,"S04G", 0, +iChamber->RInner()+bpar[0] , 0, 
423 //                  irot2,"ONLY");
424 //       gMC->Gspos("S04F",4,"S04G", 0, -iChamber->RInner()-bpar[0] , 0, 
425 //                  irot2,"ONLY");
426 //      }
427      }
428 */
429 }
430
431 //______________________________________________________________________________
432 void AliMUONSt2GeometryBuilder::SetTransformations()
433 {
434 // Defines the transformations for the station2 chambers.
435 // ---
436
437   AliMUONChamber* iChamber1 = GetChamber(2);
438   Double_t zpos1 = - iChamber1->Z(); 
439   iChamber1->GetGeometry()
440     ->SetTranslation(TGeoTranslation(0., 0., zpos1));
441
442   AliMUONChamber* iChamber2 = GetChamber(3);
443   Double_t zpos2 = - iChamber2->Z(); 
444   iChamber2->GetGeometry()
445     ->SetTranslation(TGeoTranslation(0., 0., zpos2));
446 }
447
448 //______________________________________________________________________________
449 void AliMUONSt2GeometryBuilder::SetSensitiveVolumes()
450 {
451 // Defines the sensitive volumes for station2 chambers.
452 // ---
453
454   GetChamber(2)->GetGeometry()->SetSensitiveVolume("S03G");
455   GetChamber(3)->GetGeometry()->SetSensitiveVolume("S04G");
456 }