Line data Source code
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 AliMUONTriggerGeometryBuilder
20 : // -----------------------------------
21 : // MUON Trigger stations geometry
22 : // construction class.
23 : // Author: Philippe Crochet (LPCCFd)
24 : // Support for trigger chambers added April 07 by Enrico Scomparin (INFN To)
25 : //-----------------------------------------------------------------------------
26 :
27 : #include <TVirtualMC.h>
28 : #include <TGeoMatrix.h>
29 : #include <TArrayI.h>
30 :
31 : #include "AliLog.h"
32 : #include "AliRun.h"
33 :
34 : #include "AliMUONTriggerGeometryBuilder.h"
35 : #include "AliMUON.h"
36 : #include "AliMUONConstants.h"
37 : #include "AliMUONGeometryModule.h"
38 : #include "AliMUONGeometryEnvelopeStore.h"
39 : #include <iostream>
40 :
41 : using std::endl;
42 : using std::cout;
43 : /// \cond CLASSIMP
44 16 : ClassImp(AliMUONTriggerGeometryBuilder)
45 : /// \endcond
46 :
47 : // vertical gap between right and left chambers (kDXZERO*2=4cm)
48 : const Float_t AliMUONTriggerGeometryBuilder::fgkDXZERO=2.;
49 : // main distances for chamber definition in first plane/first station
50 : const Float_t AliMUONTriggerGeometryBuilder::fgkXMIN=34.;
51 : const Float_t AliMUONTriggerGeometryBuilder::fgkXMED=51.;
52 : const Float_t AliMUONTriggerGeometryBuilder::fgkXMAX=255.;
53 : // 090704 fgkXMAX changed from 272 to 255.
54 : // (see fig.2-4 & 2-5 of Local Trigger Board PRR)
55 : // segmentation updated accordingly
56 : const Float_t AliMUONTriggerGeometryBuilder::fgkYMIN=34.;
57 : const Float_t AliMUONTriggerGeometryBuilder::fgkYMAX=51.;
58 : // inner/outer radius of flange between beam shield. and chambers (1/station)
59 : //const Float_t AliMUONTriggerGeometryBuilder::fgkRMIN[2]={50.,50.};
60 : //const Float_t AliMUONTriggerGeometryBuilder::fgkRMAX[2]={64.,68.};
61 : // z position of the middle of the gas gap in mother vol
62 : const Float_t AliMUONTriggerGeometryBuilder::fgkZm=-3.6;
63 : const Float_t AliMUONTriggerGeometryBuilder::fgkZp=+3.6;
64 :
65 : // y positions of vertical supports
66 : const Float_t AliMUONTriggerGeometryBuilder::fgkYVSup[4]={61.45,122.45,192.95,236.95};
67 : // dimensions of vertical supports
68 : const Float_t AliMUONTriggerGeometryBuilder::fgkSizeVSupExt[3]={1.5,1.5,306.+5.};
69 : const Float_t AliMUONTriggerGeometryBuilder::fgkSizeVSupInt[3]={1.2,1.2,306.+5.};
70 : // transverse dimensions of angular supports
71 : const Float_t AliMUONTriggerGeometryBuilder::fgkSizeSupport1V[3]={0.,1.5,0.1};
72 : const Float_t AliMUONTriggerGeometryBuilder::fgkSizeSupport1H[3]={0.,0.1,1.15}; // z should be 1.4 in the installed set-up
73 : const Float_t AliMUONTriggerGeometryBuilder::fgkSizeSupport2V[3]={0.,3.0,0.1};
74 : const Float_t AliMUONTriggerGeometryBuilder::fgkSizeSupport2H[3]={0.,0.1,1.9};
75 : const Float_t AliMUONTriggerGeometryBuilder::fgkSizeSupportXV[3]={0.,1.25,0.25};
76 : const Float_t AliMUONTriggerGeometryBuilder::fgkSizeSupportXH[3]={0.,0.25,1.5};
77 : // transverse dimensions of horizontal cable supports
78 : const Float_t AliMUONTriggerGeometryBuilder::fgkSizeSupportCable[3]={0.,2.,3.};
79 : // dimensions of gas pipes (inner and outer radius)
80 : const Float_t AliMUONTriggerGeometryBuilder::fgkSizeGasPipe[3]={0.2,0.4,0.};
81 : // Position of gas pipe with respect to angular support
82 : const Float_t AliMUONTriggerGeometryBuilder::fgkOffsetGasPipe=0.75;
83 : // Small cut on some volumes to avoid extrusion from SC1x
84 : const Float_t AliMUONTriggerGeometryBuilder::fgkAvoidExtrusion=2.9;
85 :
86 : //______________________________________________________________________________
87 : AliMUONTriggerGeometryBuilder::AliMUONTriggerGeometryBuilder(AliMUON* muon)
88 1 : : AliMUONVGeometryBuilder(16, 4),
89 1 : fMUON(muon),
90 1 : fIdtmed(0),
91 1 : fIdAir(0),
92 1 : fIdAlu1(0),
93 1 : fIdInox(0),
94 1 : fYEnvPsave(0.),
95 1 : fYEnvMsave(0.),
96 1 : fDYsave(0.),
97 1 : fDXsave(0.),
98 1 : fRsupportpipe()
99 5 : {
100 : /// Standard constructor
101 1 : fRsupportpipe.SetAngles(90.,90.,0.);
102 2 : }
103 :
104 : //______________________________________________________________________________
105 : AliMUONTriggerGeometryBuilder::AliMUONTriggerGeometryBuilder()
106 12 : : AliMUONVGeometryBuilder(),
107 12 : fMUON(0),
108 12 : fIdtmed(0),
109 12 : fIdAir(0),
110 12 : fIdAlu1(0),
111 12 : fIdInox(0),
112 12 : fYEnvPsave(0.),
113 12 : fYEnvMsave(0.),
114 12 : fDYsave(0.),
115 12 : fDXsave(0.),
116 12 : fRsupportpipe()
117 60 : {
118 : /// Default constructor
119 24 : }
120 :
121 : //______________________________________________________________________________
122 : AliMUONTriggerGeometryBuilder::~AliMUONTriggerGeometryBuilder()
123 78 : {
124 : /// Destructor
125 39 : }
126 :
127 : //______________________________________________________________________________
128 : TString AliMUONTriggerGeometryBuilder::GetVolumeName(const TString& volume, Int_t icount) const
129 : {
130 : // Function to generate a short volume name from its long variant
131 :
132 552 : if ( volume == "volAlu" ) {
133 28 : char volAlu[5]; // Alu
134 28 : snprintf(volAlu,5,"SC%dA",icount+1);
135 28 : return volAlu;
136 28 : }
137 248 : else if ( volume == "volAluSupportH") {
138 220 : char volAluSupportH[6];
139 220 : snprintf(volAluSupportH,6,"SALH%d",icount+1);
140 220 : return volAluSupportH;
141 220 : }
142 28 : else if ( volume == "volAirSupportH") {
143 4 : char volAirSupportH[6];
144 4 : snprintf(volAirSupportH,6,"SAIH%d",icount+1);
145 4 : return volAirSupportH;
146 4 : }
147 24 : else if ( volume == "volInoxGasPipe") {
148 24 : char volInoxGasPipe[7];
149 24 : snprintf(volInoxGasPipe,7,"SPINO%d",icount+1);
150 24 : return volInoxGasPipe;
151 24 : }
152 :
153 0 : AliErrorStream() << "Volume " << volume << " name is not defined." << endl;
154 0 : return "";
155 276 : }
156 :
157 : //______________________________________________________________________________
158 : TString AliMUONTriggerGeometryBuilder::GetVolEnvName(Int_t icount, Int_t ienv) const
159 : {
160 : /// Compose envelope names as:
161 : /// S0R1, S0R2, ..., S0R9, S0L1, S0L2, ..., S0L9
162 : /// where ienv = 0, .., 17
163 :
164 144 : TString name = "S";
165 72 : name += icount;
166 72 : if ( ienv < 9 ) {
167 36 : name += "R";
168 36 : name += (ienv + 1);
169 : }
170 : else {
171 36 : name += "L";
172 36 : name += (ienv - 8) ;
173 : }
174 : return name;
175 144 : }
176 :
177 : //______________________________________________________________________________
178 : TString AliMUONTriggerGeometryBuilder::GetVolAluAngSuppName(
179 : const TString& type1234X,
180 : const TString& typeHV,
181 : Int_t icount) const
182 : {
183 : /// Utility function to generate volume name
184 :
185 480 : TString name = "SA";
186 240 : name += type1234X;
187 240 : name += typeHV;
188 240 : name += icount+1;
189 : return name;
190 480 : }
191 :
192 : //______________________________________________________________________________
193 : TString AliMUONTriggerGeometryBuilder::GetVolEnvSuppAngName(
194 : const TString& type1234X,
195 : const TString& typeHV,
196 : const TString& typeABDEF,
197 : Int_t icount, Int_t ivol) const
198 : {
199 : /// Utility function to generate volume name
200 :
201 1440 : TString name = "S";
202 720 : name += typeHV;
203 720 : name += type1234X;
204 720 : name += icount+1;
205 720 : name += typeABDEF;
206 720 : name += ivol;
207 : return name;
208 1440 : }
209 :
210 : //______________________________________________________________________________
211 : TString AliMUONTriggerGeometryBuilder::GetVolEnvInoxGasPipeName(
212 : const TString& type12,
213 : const TString& typeABCDEF,
214 : Int_t icount, Int_t ivol) const
215 : {
216 : /// Utility function to generate volume name
217 :
218 288 : TString name = "SP";
219 144 : name += type12;
220 144 : name += icount+1;
221 144 : name += typeABCDEF;
222 144 : name += ivol;
223 : return name;
224 288 : }
225 :
226 : //______________________________________________________________________________
227 : void AliMUONTriggerGeometryBuilder::BuildChamberPrototype(Int_t icount) const
228 : {
229 : /// Build chamber prototype
230 :
231 8 : Float_t tpar[3];
232 4 : tpar[0]= 0.;
233 4 : tpar[1]= 0.;
234 4 : tpar[2]= 0.;
235 4 : char volBak[5]; // Bakelite
236 4 : char volGaz[5]; // Gas streamer
237 4 : snprintf(volBak,5,"SB%dA",icount+1);
238 4 : snprintf(volGaz,5,"S%dG",icount+11);
239 16 : TVirtualMC::GetMC()->Gsvolu(GetVolumeName("volAlu", icount),"BOX",fIdAlu1,tpar,0); // Al
240 4 : TVirtualMC::GetMC()->Gsvolu(volBak,"BOX",fIdtmed[1107],tpar,0); // Bakelite
241 4 : TVirtualMC::GetMC()->Gsvolu(volGaz,"BOX",fIdtmed[1106],tpar,0); // Gas streamer
242 4 : tpar[0] = -1.;
243 4 : tpar[1] = -1.;
244 4 : tpar[2] = 0.1;
245 4 : TVirtualMC::GetMC()->Gsposp(volGaz,1,volBak,0.,0.,0.,0,"ONLY",tpar,3);
246 4 : tpar[2] = 0.3;
247 16 : TVirtualMC::GetMC()->Gsposp(volBak,1,GetVolumeName("volAlu", icount),0.,0.,0.,0,"ONLY",tpar,3);
248 4 : }
249 :
250 : //______________________________________________________________________________
251 : void AliMUONTriggerGeometryBuilder::BuildRPCSupportsVertical(Int_t& iVolNum, Int_t icount) const
252 : {
253 : /// Build RPC vertical supports
254 :
255 8 : Float_t zRatio = AliMUONConstants::DefaultRatioTriggerChamber(icount);
256 4 : char volAluSupport[5],volAirSupport[5];
257 4 : snprintf(volAluSupport,5,"SAL%d",icount+1);
258 4 : snprintf(volAirSupport,5,"SAI%d",icount+1);
259 4 : char volEnvSupport[12][7];
260 72 : for(Int_t ii=0;ii<8;ii++){
261 32 : snprintf(volEnvSupport[ii],7,"SEA%dV%d",icount+1,ii);
262 : }
263 4 : Float_t tpar[3];
264 4 : tpar[0]= 0.;
265 4 : tpar[1]= 0.;
266 4 : tpar[2]= 0.;
267 4 : TVirtualMC::GetMC()->Gsvolu(volAluSupport,"BOX",fIdAlu1,tpar,0);
268 4 : TVirtualMC::GetMC()->Gsvolu(volAirSupport,"BOX",fIdAir,tpar,0);
269 4 : tpar[0]=fgkSizeVSupInt[0];
270 4 : tpar[1]=fgkSizeVSupInt[1];
271 4 : tpar[2]=-1.;
272 4 : TVirtualMC::GetMC()->Gsposp(volAirSupport,1,volAluSupport,0.,0.,0.,0,"ONLY",tpar,3);
273 :
274 4 : TGeoRotation rsupportv;
275 4 : rsupportv.SetAngles(0.,90.,0.);
276 4 : Double_t dpar[3];
277 4 : dpar[0]=fgkSizeVSupExt[0];
278 4 : dpar[1]=fgkSizeVSupExt[1];
279 4 : dpar[2]=fgkSizeVSupExt[2]*zRatio;
280 40 : for(Int_t ii=0;ii<4;ii++){
281 64 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupport[ii], 0, true,
282 16 : TGeoTranslation(-fgkYVSup[ii]*zRatio,0.,0.),rsupportv);
283 48 : GetEnvelopes(16+icount)
284 48 : ->AddEnvelopeConstituentParam(volAluSupport,volEnvSupport[ii],iVolNum++,3, dpar);
285 : }
286 40 : for(Int_t ii=4;ii<8;ii++){
287 64 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupport[ii], 0, true,
288 16 : TGeoTranslation(fgkYVSup[ii-4]*zRatio,0.,0.),rsupportv);
289 48 : GetEnvelopes(16+icount)
290 48 : ->AddEnvelopeConstituentParam(volAluSupport,volEnvSupport[ii],iVolNum++,3, dpar);
291 : }
292 4 : }
293 :
294 : //______________________________________________________________________________
295 : void AliMUONTriggerGeometryBuilder::BuildRPCSupportsHorizontal(Int_t icount) const
296 : {
297 : /// Build RPC horizontal supports
298 :
299 : // RPC supports (horizontal)
300 :
301 : // supports for cables
302 :
303 8 : Float_t tpar[3];
304 4 : tpar[0]= 0.;
305 4 : tpar[1]= 0.;
306 4 : tpar[2]= 0.;
307 8 : TString volAluSupportH = GetVolumeName("volAluSupportH", icount);
308 12 : TString volAirSupportH = GetVolumeName("volAirSupportH", icount);
309 12 : TVirtualMC::GetMC()->Gsvolu(volAluSupportH,"BOX",fIdAlu1,tpar,0);
310 12 : TVirtualMC::GetMC()->Gsvolu(volAirSupportH,"BOX",fIdAir,tpar,0);
311 4 : tpar[0]=-1.;
312 4 : tpar[1]=1.9;
313 4 : tpar[2]=2.8;
314 16 : TVirtualMC::GetMC()->Gsposp(volAirSupportH,1,volAluSupportH,0.,0.,0.,0,"ONLY",tpar,3);
315 4 : }
316 :
317 : //______________________________________________________________________________
318 : void AliMUONTriggerGeometryBuilder::BuildAngularSupportForChambers(Int_t icount) const
319 : {
320 : /// Build angular supports for chambers
321 :
322 8 : Float_t tpar[3];
323 4 : tpar[0]= 0.;
324 4 : tpar[1]= 0.;
325 4 : tpar[2]= 0.;
326 20 : TVirtualMC::GetMC()->Gsvolu(GetVolAluAngSuppName("1","V",icount),"BOX",fIdAlu1,tpar,0);
327 20 : TVirtualMC::GetMC()->Gsvolu(GetVolAluAngSuppName("1","H",icount),"BOX",fIdAlu1,tpar,0);
328 20 : TVirtualMC::GetMC()->Gsvolu(GetVolAluAngSuppName("2","V",icount),"BOX",fIdAlu1,tpar,0);
329 20 : TVirtualMC::GetMC()->Gsvolu(GetVolAluAngSuppName("2","H",icount),"BOX",fIdAlu1,tpar,0);
330 20 : TVirtualMC::GetMC()->Gsvolu(GetVolAluAngSuppName("3","V",icount),"BOX",fIdAlu1,tpar,0);
331 20 : TVirtualMC::GetMC()->Gsvolu(GetVolAluAngSuppName("3","H",icount),"BOX",fIdAlu1,tpar,0);
332 20 : TVirtualMC::GetMC()->Gsvolu(GetVolAluAngSuppName("4","V",icount),"BOX",fIdAlu1,tpar,0);
333 20 : TVirtualMC::GetMC()->Gsvolu(GetVolAluAngSuppName("4","H",icount),"BOX",fIdAlu1,tpar,0);
334 20 : TVirtualMC::GetMC()->Gsvolu(GetVolAluAngSuppName("X","V",icount),"BOX",fIdAlu1,tpar,0);
335 20 : TVirtualMC::GetMC()->Gsvolu(GetVolAluAngSuppName("X","H",icount),"BOX",fIdAlu1,tpar,0);
336 4 : }
337 :
338 : //______________________________________________________________________________
339 : void AliMUONTriggerGeometryBuilder::BuildGasPipes(Int_t icount) const
340 : {
341 : /// Build gas pipes
342 12 : TString volInoxGasPipe = GetVolumeName("volInoxGasPipe", icount);
343 4 : Float_t tpar[3];
344 4 : tpar[0]= 0.;
345 4 : tpar[1]= 0.;
346 4 : tpar[2]= 0.;
347 12 : TVirtualMC::GetMC()->Gsvolu(volInoxGasPipe,"TUBE",fIdInox,tpar,0);
348 4 : }
349 :
350 : //______________________________________________________________________________
351 : void AliMUONTriggerGeometryBuilder::BuildChamberTypeA(Int_t& iVolNum, Int_t icount)
352 : {
353 : /// Build chamber type A and horizontal support
354 :
355 8 : Double_t dpar[3];
356 4 : Double_t spar[3];
357 4 : Double_t ppar[3];
358 :
359 : // chamber type A
360 4 : Float_t zRatio = AliMUONConstants::DefaultRatioTriggerChamber(icount);
361 4 : Float_t xEnv = (fgkDXZERO+fgkXMED+(fgkXMAX-fgkXMED)/2.)*zRatio;
362 : Float_t yEnvM = 0.; // y low position of envelope in chamber
363 : Float_t yEnvP = 0.; // y up position of envelope in chamber
364 4 : fYEnvPsave = 0.; // tmp data
365 4 : fYEnvMsave = 0.; // tmp data
366 : //Float_t xpos = 0.; // x position of RPC in envelope
367 : //Float_t ypos = 0.; // y position of RPC in envelope
368 4 : dpar[2] = 0.4;
369 4 : dpar[0] = ((fgkXMAX-fgkXMED)/2.)*zRatio;
370 4 : dpar[1] = fgkYMIN * zRatio;
371 :
372 4 : Int_t detElemId = (10+icount+1)*100;
373 4 : TString volEnv4 = GetVolEnvName(icount, 4);
374 4 : TString volEnv13 = GetVolEnvName(icount, 13);
375 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnv4, detElemId, true,
376 4 : TGeoTranslation(xEnv,yEnvP,fgkZp));
377 4 : detElemId = (10+icount+1)*100+9;
378 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnv13, detElemId, true,
379 8 : TGeoTranslation(-xEnv,yEnvM,fgkZm),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
380 :
381 12 : TString volAlu = GetVolumeName("volAlu", icount);
382 8 : GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv4,iVolNum++,3, dpar);
383 8 : GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv13,iVolNum++,3, dpar);
384 :
385 : // horizontal cable support chamber type A
386 4 : char volEnvSupportHA[6][8];
387 24 : for(Int_t jj=0;jj<2;jj++){
388 112 : for(Int_t ii=0;ii<6;ii++){
389 96 : if(ii<3)snprintf(volEnvSupportHA[3*jj+ii],8,"SA%dHA%d",icount+1,3*jj+ii);
390 : }
391 : }
392 :
393 4 : spar[0]=((fgkXMAX/2)-fgkYVSup[0]/2.)*zRatio;
394 4 : spar[1]=fgkSizeSupportCable[1];
395 4 : spar[2]=fgkSizeSupportCable[2];
396 4 : Float_t offsetSuppA = ((fgkXMAX-fgkXMED)/2.)*zRatio-(((fgkXMAX/2)-fgkYVSup[0]/2.)*zRatio);
397 32 : for(Int_t in=0;in<3;in++){
398 48 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHA[in], 0, true,
399 12 : TGeoTranslation(xEnv+offsetSuppA/2.,yEnvP+dpar[1]/2.*(in-1),-(fgkSizeVSupExt[0]+spar[2])));
400 48 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHA[in+3], 0, true,
401 12 : TGeoTranslation(-(xEnv+offsetSuppA/2.),yEnvM+dpar[1]/2.*(in-1),fgkSizeVSupExt[0]+spar[2]),
402 12 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
403 : }
404 56 : for(Int_t ii=0;ii<6;ii++) {
405 72 : TString volAluSupportH = GetVolumeName("volAluSupportH", icount);
406 72 : GetEnvelopes(16+icount)
407 48 : ->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHA[ii],iVolNum++,3, spar);
408 24 : }
409 :
410 4 : spar[0]=dpar[0];
411 4 : spar[1]=fgkSizeSupport1V[1];
412 4 : spar[2]=fgkSizeSupport1V[2];
413 4 : Float_t sparysave=spar[1];
414 20 : TString volEnvSuppAng1VA0 = GetVolEnvSuppAngName("1", "V", "A", icount, 0);
415 20 : TString volEnvSuppAng1VA1 = GetVolEnvSuppAngName("1", "V", "A", icount, 1);
416 :
417 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VA0, 0, true,
418 4 : TGeoTranslation(xEnv,yEnvP-dpar[1],fgkZp+dpar[2]+spar[2]));
419 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VA1, 0, true,
420 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1],fgkZm-dpar[2]-spar[2]),
421 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
422 :
423 16 : TString volAluAngSupport1V = GetVolAluAngSuppName("1", "V", icount);
424 8 : GetEnvelopes(16+icount)
425 4 : ->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VA0,iVolNum++,3, spar);
426 8 : GetEnvelopes(16+icount)
427 4 : ->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VA1,iVolNum++,3, spar);
428 :
429 : // 1 horizontal
430 :
431 4 : spar[0]=dpar[0];
432 4 : spar[1]=fgkSizeSupport1H[1];
433 4 : spar[2]=fgkSizeSupport1H[2];
434 20 : TString volEnvSuppAng1HA0 = GetVolEnvSuppAngName("1", "H", "A", icount, 0);
435 20 : TString volEnvSuppAng1HA1 = GetVolEnvSuppAngName("1", "H", "A", icount, 1);
436 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HA0, 0, true,
437 4 : TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,fgkZp+dpar[2]-spar[2]));
438 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HA1, 0, true,
439 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,fgkZm-(dpar[2]-spar[2])),
440 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
441 :
442 16 : TString volAluAngSupport1H = GetVolAluAngSuppName("1", "H", icount);
443 8 : GetEnvelopes(16+icount)
444 4 : ->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HA0,iVolNum++,3, spar);
445 8 : GetEnvelopes(16+icount)
446 4 : ->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HA1,iVolNum++,3, spar);
447 :
448 : // gas pipe (low)
449 4 : ppar[0]=fgkSizeGasPipe[0];
450 4 : ppar[1]=fgkSizeGasPipe[1];
451 4 : ppar[2]=dpar[0];
452 16 : TString volEnvInoxGasPipe1A0 = GetVolEnvInoxGasPipeName("1", "A", icount, 0);
453 16 : TString volEnvInoxGasPipe1A1 = GetVolEnvInoxGasPipeName("1", "A", icount, 1);
454 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1A0, 0, true,
455 8 : TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZp),fRsupportpipe);
456 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1A1, 0, true,
457 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZm),fRsupportpipe);
458 12 : TString volInoxGasPipe = GetVolumeName("volInoxGasPipe", icount);
459 8 : GetEnvelopes(16+icount)
460 4 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1A0,iVolNum++,3, ppar);
461 8 : GetEnvelopes(16+icount)
462 4 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1A1,iVolNum++,3, ppar);
463 :
464 : // 2 vertical
465 :
466 4 : spar[0]=dpar[0];
467 4 : spar[1]=fgkSizeSupport2V[1];
468 4 : spar[2]=fgkSizeSupport2V[2];
469 4 : sparysave=spar[1]+fgkSizeSupport2H[1];
470 20 : TString volEnvSuppAng2VA0 = GetVolEnvSuppAngName("2", "V", "A", icount, 0);
471 20 : TString volEnvSuppAng2VA1 = GetVolEnvSuppAngName("2", "V", "A", icount, 1);
472 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VA0, 0, true,
473 4 : TGeoTranslation(xEnv,yEnvP-dpar[1],fgkSizeVSupExt[0]+spar[2]));
474 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VA1, 0, true,
475 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1],-(fgkSizeVSupExt[0]+spar[2])),
476 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
477 :
478 16 : TString volAluAngSupport2V = GetVolAluAngSuppName("2", "V", icount);
479 8 : GetEnvelopes(16+icount)
480 4 : ->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VA0,iVolNum++,3, spar);
481 8 : GetEnvelopes(16+icount)
482 4 : ->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VA1,iVolNum++,3, spar);
483 :
484 : // 2 horizontal
485 :
486 4 : spar[0]=dpar[0];
487 4 : spar[1]=fgkSizeSupport2H[1];
488 4 : spar[2]=fgkSizeSupport2H[2];
489 20 : TString volEnvSuppAng2HA0 = GetVolEnvSuppAngName("2", "H", "A", icount, 0);
490 20 : TString volEnvSuppAng2HA1 = GetVolEnvSuppAngName("2", "H", "A", icount, 1);
491 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HA0, 0, true,
492 4 : TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,fgkSizeVSupExt[0]+spar[2]));
493 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HA1, 0, true,
494 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,-(fgkSizeVSupExt[0]+spar[2])),
495 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
496 :
497 16 : TString volAluAngSupport2H = GetVolAluAngSuppName("2", "H", icount);
498 8 : GetEnvelopes(16+icount)
499 4 : ->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HA0,iVolNum++,3, spar);
500 8 : GetEnvelopes(16+icount)
501 4 : ->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HA1,iVolNum++,3, spar);
502 :
503 : // 3 vertical
504 :
505 4 : spar[0]=dpar[0];
506 4 : spar[1]=fgkSizeSupport1V[1];
507 4 : spar[2]=fgkSizeSupport1V[2];
508 4 : sparysave=spar[1];
509 20 : TString volEnvSuppAng3VA0 = GetVolEnvSuppAngName("3", "V", "A", icount, 0);
510 20 : TString volEnvSuppAng3VA1 = GetVolEnvSuppAngName("3", "V", "A", icount, 1);
511 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VA0, 0, true,
512 4 : TGeoTranslation(xEnv,yEnvP+dpar[1],fgkZp+dpar[2]+spar[2]));
513 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VA1, 0, true,
514 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1],fgkZm-dpar[2]-spar[2]),
515 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
516 :
517 16 : TString volAluAngSupport3V = GetVolAluAngSuppName("3", "V", icount);
518 8 : GetEnvelopes(16+icount)
519 4 : ->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VA0,iVolNum++,3, spar);
520 8 : GetEnvelopes(16+icount)
521 4 : ->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VA1,iVolNum++,3, spar);
522 :
523 : // 3 horizontal
524 :
525 4 : spar[0]=dpar[0];
526 4 : spar[1]=fgkSizeSupport1H[1];
527 4 : spar[2]=fgkSizeSupport1H[2];
528 20 : TString volEnvSuppAng3HA0 = GetVolEnvSuppAngName("3", "H", "A", icount, 0);
529 20 : TString volEnvSuppAng3HA1 = GetVolEnvSuppAngName("3", "H", "A", icount, 1);
530 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HA0, 0, true,
531 4 : TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,fgkZp+dpar[2]-spar[2]));
532 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HA1, 0, true,
533 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,fgkZm-(dpar[2]-spar[2])),
534 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
535 :
536 16 : TString volAluAngSupport3H = GetVolAluAngSuppName("3", "H", icount);
537 8 : GetEnvelopes(16+icount)
538 4 : ->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HA0,iVolNum++,3, spar);
539 8 : GetEnvelopes(16+icount)
540 4 : ->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HA1,iVolNum++,3, spar);
541 :
542 : // gas pipe (high)
543 4 : ppar[0]=fgkSizeGasPipe[0];
544 4 : ppar[1]=fgkSizeGasPipe[1];
545 4 : ppar[2]=dpar[0];
546 16 : TString volEnvInoxGasPipe2A0 = GetVolEnvInoxGasPipeName("2", "A", icount, 0);
547 16 : TString volEnvInoxGasPipe2A1 = GetVolEnvInoxGasPipeName("2", "A", icount, 1);
548 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2A0, 0, true,
549 4 : TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZp),fRsupportpipe);
550 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2A1, 0, true,
551 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZm),fRsupportpipe);
552 8 : GetEnvelopes(16+icount)
553 4 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2A0,iVolNum++,3, ppar);
554 8 : GetEnvelopes(16+icount)
555 4 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2A1,iVolNum++,3, ppar);
556 :
557 : // 4 vertical
558 :
559 4 : spar[0]=dpar[0];
560 4 : spar[1]=fgkSizeSupport2V[1];
561 4 : spar[2]=fgkSizeSupport2V[2];
562 4 : sparysave=spar[1]+fgkSizeSupport2H[1];
563 20 : TString volEnvSuppAng4VA0 = GetVolEnvSuppAngName("4", "V", "A", icount, 0);
564 20 : TString volEnvSuppAng4VA1 = GetVolEnvSuppAngName("4", "V", "A", icount, 1);
565 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VA0, 0, true,
566 4 : TGeoTranslation(xEnv,yEnvP+dpar[1],fgkSizeVSupExt[0]+spar[2]));
567 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VA1, 0, true,
568 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1],-(fgkSizeVSupExt[0]+spar[2])),
569 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
570 :
571 16 : TString volAluAngSupport4V = GetVolAluAngSuppName("4", "V", icount);
572 8 : GetEnvelopes(16+icount)
573 4 : ->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VA0,iVolNum++,3, spar);
574 8 : GetEnvelopes(16+icount)
575 4 : ->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VA1,iVolNum++,3, spar);
576 :
577 : // 4 horizontal
578 :
579 4 : spar[0]=dpar[0];
580 4 : spar[1]=fgkSizeSupport2H[1];
581 4 : spar[2]=fgkSizeSupport2H[2];
582 20 : TString volEnvSuppAng4HA0 = GetVolEnvSuppAngName("4", "H", "A", icount, 0);
583 20 : TString volEnvSuppAng4HA1 = GetVolEnvSuppAngName("4", "H", "A", icount, 1);
584 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HA0, 0, true,
585 4 : TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,fgkSizeVSupExt[0]+spar[2]));
586 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HA1, 0, true,
587 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,-(fgkSizeVSupExt[0]+spar[2])),
588 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
589 :
590 16 : TString volAluAngSupport4H = GetVolAluAngSuppName("4", "H", icount);
591 8 : GetEnvelopes(16+icount)
592 4 : ->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HA0,iVolNum++,3, spar);
593 8 : GetEnvelopes(16+icount)
594 4 : ->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HA1,iVolNum++,3, spar);
595 :
596 : // X horizontal
597 4 : spar[0]=(fgkYVSup[3]-fgkYVSup[0])/2.*zRatio;
598 4 : spar[1]=fgkSizeSupportXH[1];
599 4 : spar[2]=fgkSizeSupportXH[2];
600 4 : Float_t sparysavex=spar[1];
601 20 : TString volEnvSuppAngXHA0 = GetVolEnvSuppAngName("X", "H", "A", icount, 0);
602 20 : TString volEnvSuppAngXHA1 = GetVolEnvSuppAngName("X", "H", "A", icount, 1);
603 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHA0, 0, true,
604 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0,
605 4 : fgkSizeVSupExt[0]+spar[2]));
606 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHA1, 0, true,
607 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0,
608 4 : -(fgkSizeVSupExt[0]+spar[2])),
609 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
610 :
611 16 : TString volAluAngSupportXH = GetVolAluAngSuppName("X", "H", icount);
612 8 : GetEnvelopes(16+icount)
613 4 : ->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHA0,iVolNum++,3, spar);
614 8 : GetEnvelopes(16+icount)
615 4 : ->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHA1,iVolNum++,3, spar);
616 :
617 : // X vertical
618 4 : spar[0]=(fgkYVSup[3]-fgkYVSup[0])/2.*zRatio;
619 4 : spar[1]=fgkSizeSupportXV[1];
620 4 : spar[2]=fgkSizeSupportXV[2];
621 20 : TString volEnvSuppAngXVA0 = GetVolEnvSuppAngName("X", "V", "A", icount, 0);
622 20 : TString volEnvSuppAngXVA1 = GetVolEnvSuppAngName("X", "V", "A", icount, 1);
623 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVA0, 0, true,
624 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],
625 4 : fgkSizeVSupExt[0]+spar[2]));
626 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVA1, 0, true,
627 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],
628 4 : -(fgkSizeVSupExt[0]+spar[2])),
629 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
630 :
631 16 : TString volAluAngSupportXV = GetVolAluAngSuppName("X", "V", icount);
632 8 : GetEnvelopes(16+icount)
633 4 : ->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVA0,iVolNum++,3, spar);
634 8 : GetEnvelopes(16+icount)
635 4 : ->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVA1,iVolNum++,3, spar);
636 :
637 : // keep values of yEnvP, yEnvM
638 4 : fYEnvPsave = yEnvP;
639 4 : fYEnvMsave = yEnvM;
640 4 : }
641 :
642 : //______________________________________________________________________________
643 : void AliMUONTriggerGeometryBuilder::BuildChamberTypeB(Int_t& iVolNum, Int_t icount)
644 : {
645 : // ratio of zpos1m/zpos1p and inverse for first plane
646 8 : Float_t zpos1= AliMUONConstants::DefaultChamberZ(10);
647 4 : Float_t zmp=(zpos1-3.6)/(zpos1+3.6);
648 4 : Float_t zpm=1./zmp;
649 :
650 : // chamber type B (plus envelope chambers B & C)
651 4 : Double_t dpar[3];
652 4 : Double_t spar[3];
653 4 : Double_t ppar[3];
654 :
655 : // chamber type B
656 4 : Float_t zRatio = AliMUONConstants::DefaultRatioTriggerChamber(icount);
657 4 : Float_t xEnv = (fgkDXZERO+fgkXMAX/2.)*zRatio;
658 : Float_t yEnvP = 0;
659 : Float_t yEnvM = 0;
660 4 : yEnvP = (fYEnvMsave + fgkYMIN * zRatio ) * zpm + fgkYMIN * zRatio;
661 4 : yEnvM = (fYEnvPsave + fgkYMIN * zRatio ) * zmp + fgkYMIN * zRatio;
662 4 : dpar[0] = ((fgkXMAX-fgkXMIN)/2.) * zRatio;
663 4 : dpar[1] = ((fgkYMAX-fgkYMIN)/2.) * zRatio;
664 4 : dpar[2] = 0.4;
665 4 : fDYsave = dpar[1];
666 4 : fDXsave = dpar[0];
667 4 : Float_t xpos = fgkXMIN/2. * zRatio;
668 4 : Float_t ypos = (fgkYMIN - fgkYMIN/4.) * zRatio;
669 : Float_t xpossave = xpos;
670 :
671 4 : Int_t detElemId = (10+icount+1)*100+17;
672 4 : TString volEnv3 = GetVolEnvName(icount, 3);
673 4 : TString volEnv5 = GetVolEnvName(icount, 5);
674 4 : TString volEnv12 = GetVolEnvName(icount, 12);
675 4 : TString volEnv14 = GetVolEnvName(icount, 14);
676 12 : TString volAlu = GetVolumeName("volAlu", icount);
677 :
678 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnv3, detElemId, true,
679 4 : TGeoTranslation(xEnv,-yEnvM,fgkZm));
680 4 : detElemId = (10+icount+1)*100+1;
681 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnv5, detElemId, true,
682 4 : TGeoTranslation( xEnv, yEnvM,fgkZm));
683 4 : detElemId = (10+icount+1)*100+10;
684 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnv12, detElemId, true,
685 4 : TGeoTranslation(-xEnv,-yEnvP,fgkZp),
686 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
687 4 : detElemId = (10+icount+1)*100+8;
688 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnv14, detElemId, true,
689 4 : TGeoTranslation(-xEnv, yEnvP,fgkZp),
690 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
691 :
692 12 : GetEnvelopes(16+icount)
693 8 : ->AddEnvelopeConstituentParam(volAlu,volEnv3,iVolNum++,TGeoTranslation(xpos, ypos,0.),3,dpar);
694 12 : GetEnvelopes(16+icount)
695 4 : ->AddEnvelopeConstituentParam(volAlu,volEnv5,iVolNum++,TGeoTranslation(xpos,-ypos,0.),3,dpar);
696 12 : GetEnvelopes(16+icount)
697 4 : ->AddEnvelopeConstituentParam(volAlu,volEnv12,iVolNum++,TGeoTranslation(xpos, ypos,0.),3,dpar);
698 12 : GetEnvelopes(16+icount)
699 4 : ->AddEnvelopeConstituentParam(volAlu,volEnv14,iVolNum++,TGeoTranslation(xpos,-ypos,0.),3,dpar);
700 :
701 : // chamber type C (note: same Z than type B)
702 4 : dpar[0] = (fgkXMAX/2)*zRatio;
703 4 : dpar[1] = (fgkYMAX/2)*zRatio;
704 : xpos = 0.;
705 4 : ypos = ((fgkYMAX - fgkYMIN)/2.) * zRatio;
706 :
707 12 : GetEnvelopes(16+icount)
708 4 : ->AddEnvelopeConstituentParam(volAlu,volEnv3,iVolNum++,TGeoTranslation(xpos,-ypos,0.),3,dpar);
709 12 : GetEnvelopes(16+icount)
710 4 : ->AddEnvelopeConstituentParam(volAlu,volEnv5,iVolNum++,TGeoTranslation(xpos, ypos,0.),3,dpar);
711 12 : GetEnvelopes(16+icount)
712 4 : ->AddEnvelopeConstituentParam(volAlu,volEnv12,iVolNum++,TGeoTranslation(xpos,-ypos,0.),3,dpar);
713 12 : GetEnvelopes(16+icount)
714 4 : ->AddEnvelopeConstituentParam(volAlu,volEnv14,iVolNum++,TGeoTranslation(xpos, ypos,0.),3,dpar);
715 :
716 : // horizontal cable support chamber type B+C
717 :
718 4 : char volEnvSupportHBC[12][8];
719 24 : for(Int_t jj=0;jj<2;jj++){
720 112 : for(Int_t ii=0;ii<6;ii++){
721 48 : snprintf(volEnvSupportHBC[6*jj+ii],8,"SA%dHB%d",icount+1,6*jj+ii);
722 : }
723 : }
724 :
725 4 : spar[0]=dpar[0]-fgkYVSup[0]/2.;
726 4 : spar[1]=fgkSizeSupportCable[1];
727 4 : spar[2]=fgkSizeSupportCable[2];
728 32 : for(Int_t in=0;in<3;in++){
729 48 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHBC[in], 0, true,
730 24 : TGeoTranslation(xEnv+fgkYVSup[0]/2.*zRatio,-(yEnvM+(fgkYMAX-fgkYMIN/2.*zRatio)/2.*(in-1)),
731 12 : fgkSizeVSupExt[0]+spar[2]));
732 48 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHBC[in+3], 0, true,
733 12 : TGeoTranslation(xEnv+fgkYVSup[0]/2.*zRatio, yEnvM+(fgkYMAX-fgkYMIN/2.*zRatio)/2.*(in-1),
734 12 : fgkSizeVSupExt[0]+spar[2]));
735 48 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHBC[in+6], 0, true,
736 24 : TGeoTranslation(-(xEnv+fgkYVSup[0]/2.*zRatio),-(yEnvP+(fgkYMAX-fgkYMIN/2.*zRatio)/2.*(in-1)),
737 12 : -(fgkSizeVSupExt[0]+spar[2])),
738 12 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
739 48 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHBC[in+9], 0, true,
740 12 : TGeoTranslation(-(xEnv+fgkYVSup[0]/2.*zRatio), yEnvP+(fgkYMAX-fgkYMIN/2.*zRatio)/2.*(in-1),
741 12 : -(fgkSizeVSupExt[0]+spar[2])),
742 12 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
743 : }
744 104 : for(Int_t ii=0;ii<12;ii++) {
745 144 : TString volAluSupportH = GetVolumeName("volAluSupportH", icount);
746 144 : GetEnvelopes(16+icount)
747 96 : ->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHBC[ii],iVolNum++,3, spar);
748 48 : }
749 :
750 : // angular supports chamber type B and C
751 : // C
752 : // 1 vertical
753 4 : spar[0]=dpar[0];
754 4 : spar[1]=fgkSizeSupport1V[1];
755 4 : spar[2]=fgkSizeSupport1V[2];
756 4 : Float_t sparysave=spar[1];
757 :
758 20 : TString volEnvSuppAng1VBC0 = GetVolEnvSuppAngName("1", "V", "B", icount, 0);
759 20 : TString volEnvSuppAng1VBC2 = GetVolEnvSuppAngName("1", "V", "B", icount, 2);
760 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VBC0, 0, true,
761 4 : TGeoTranslation(xEnv,-yEnvM-dpar[1]-fDYsave,fgkZm-dpar[2]-spar[2]));
762 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VBC2, 0, true,
763 4 : TGeoTranslation(-xEnv,-yEnvP-dpar[1]-fDYsave,fgkZp+dpar[2]+spar[2]),
764 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
765 :
766 16 : TString volAluAngSupport1V = GetVolAluAngSuppName("1", "V", icount);
767 8 : GetEnvelopes(16+icount)
768 4 : ->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VBC0,iVolNum++,3, spar);
769 8 : GetEnvelopes(16+icount)
770 4 : ->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VBC2,iVolNum++,3, spar);
771 :
772 : // 1 horizontal
773 4 : spar[0]=dpar[0];
774 4 : spar[1]=fgkSizeSupport1H[1];
775 4 : spar[2]=fgkSizeSupport1H[2];
776 :
777 20 : TString volEnvSuppAng1HBC0 = GetVolEnvSuppAngName("1", "H", "B", icount, 0);
778 20 : TString volEnvSuppAng1HBC2 = GetVolEnvSuppAngName("1", "H", "B", icount, 2);
779 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HBC0, 0, true,
780 4 : TGeoTranslation(xEnv,-yEnvM-dpar[1]-fDYsave-sparysave,fgkZm-(dpar[2]-spar[2])));
781 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HBC2, 0, true,
782 4 : TGeoTranslation(-xEnv,-yEnvP-dpar[1]-fDYsave-sparysave,fgkZp+dpar[2]-spar[2]),
783 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
784 :
785 16 : TString volAluAngSupport1H = GetVolAluAngSuppName("1", "H", icount);
786 8 : GetEnvelopes(16+icount)
787 4 : ->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HBC0,iVolNum++,3, spar);
788 8 : GetEnvelopes(16+icount)
789 4 : ->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HBC2,iVolNum++,3, spar);
790 :
791 : // gas pipe (low)
792 4 : ppar[0]=fgkSizeGasPipe[0];
793 4 : ppar[1]=fgkSizeGasPipe[1];
794 4 : ppar[2]=dpar[0];
795 16 : TString volEnvInoxGasPipe1BC0 = GetVolEnvInoxGasPipeName("1", "BC", icount, 0);
796 16 : TString volEnvInoxGasPipe1BC2 = GetVolEnvInoxGasPipeName("1", "BC", icount, 2);
797 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1BC0, 0, true,
798 8 : TGeoTranslation(xEnv,-yEnvM-dpar[1]-fDYsave-sparysave-fgkOffsetGasPipe,fgkZm),fRsupportpipe);
799 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1BC2, 0, true,
800 4 : TGeoTranslation(-xEnv,-yEnvP-dpar[1]-fDYsave-sparysave-fgkOffsetGasPipe,fgkZp),fRsupportpipe);
801 12 : TString volInoxGasPipe = GetVolumeName("volInoxGasPipe", icount);
802 8 : GetEnvelopes(16+icount)
803 4 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1BC0,iVolNum++,3, ppar);
804 8 : GetEnvelopes(16+icount)
805 4 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1BC2,iVolNum++,3, ppar);
806 :
807 : // 2 vertical
808 4 : spar[0]=dpar[0];
809 4 : spar[1]=fgkSizeSupport2V[1];
810 4 : spar[2]=fgkSizeSupport2V[2];
811 4 : sparysave=spar[1]+fgkSizeSupport2H[1];
812 20 : TString volEnvSuppAng2VBC0 = GetVolEnvSuppAngName("2", "V", "B", icount, 0);
813 20 : TString volEnvSuppAng2VBC2 = GetVolEnvSuppAngName("2", "V", "B", icount, 2);
814 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VBC0, 0, true,
815 4 : TGeoTranslation(xEnv,-yEnvM-dpar[1]-fDYsave,-(fgkSizeVSupExt[0]+spar[2])));
816 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VBC2, 0, true,
817 4 : TGeoTranslation(-xEnv,-yEnvP-dpar[1]-fDYsave,fgkSizeVSupExt[0]+spar[2]),
818 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
819 :
820 16 : TString volAluAngSupport2V = GetVolAluAngSuppName("2", "V", icount);
821 8 : GetEnvelopes(16+icount)
822 4 : ->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VBC0,iVolNum++,3, spar);
823 8 : GetEnvelopes(16+icount)
824 4 : ->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VBC2,iVolNum++,3, spar);
825 :
826 : // 2 horizontal
827 4 : spar[0]=dpar[0];
828 4 : spar[1]=fgkSizeSupport2H[1];
829 4 : spar[2]=fgkSizeSupport2H[2];
830 20 : TString volEnvSuppAng2HBC0 = GetVolEnvSuppAngName("2", "H", "B", icount, 0);
831 20 : TString volEnvSuppAng2HBC2 = GetVolEnvSuppAngName("2", "H", "B", icount, 2);
832 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HBC0, 0, true,
833 4 : TGeoTranslation(xEnv,-yEnvM-dpar[1]-fDYsave-sparysave,-(fgkSizeVSupExt[0]+spar[2])));
834 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HBC2, 0, true,
835 4 : TGeoTranslation(-xEnv,-yEnvP-dpar[1]-fDYsave-sparysave,fgkSizeVSupExt[0]+spar[2]),
836 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
837 :
838 16 : TString volAluAngSupport2H = GetVolAluAngSuppName("2", "H", icount);
839 8 : GetEnvelopes(16+icount)
840 4 : ->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HBC0,iVolNum++,3, spar);
841 8 : GetEnvelopes(16+icount)
842 4 : ->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HBC2,iVolNum++,3, spar);
843 :
844 : // 3 vertical
845 4 : spar[0]=fDXsave-fgkAvoidExtrusion;
846 4 : spar[1]=fgkSizeSupport1V[1];
847 4 : spar[2]=fgkSizeSupport1V[2];
848 4 : sparysave=spar[1];
849 20 : TString volEnvSuppAng3VBC0 = GetVolEnvSuppAngName("3", "V", "B", icount, 0);
850 20 : TString volEnvSuppAng3VBC2 = GetVolEnvSuppAngName("3", "V", "B", icount, 2);
851 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VBC0, 0, true,
852 4 : TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+fDYsave,fgkZm-dpar[2]-spar[2]));
853 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VBC2, 0, true,
854 4 : TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+fDYsave,fgkZp+dpar[2]+spar[2]),
855 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
856 :
857 16 : TString volAluAngSupport3V = GetVolAluAngSuppName("3", "V", icount);
858 8 : GetEnvelopes(16+icount)
859 4 : ->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VBC0,iVolNum++,3, spar);
860 8 : GetEnvelopes(16+icount)
861 4 : ->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VBC2,iVolNum++,3, spar);
862 :
863 : // 3 horizontal
864 4 : spar[0]=fDXsave-fgkAvoidExtrusion;
865 4 : spar[1]=fgkSizeSupport1H[1];
866 4 : spar[2]=fgkSizeSupport1H[2];
867 20 : TString volEnvSuppAng3HBC0 = GetVolEnvSuppAngName("3", "H", "B", icount, 0);
868 20 : TString volEnvSuppAng3HBC2 = GetVolEnvSuppAngName("3", "H", "B", icount, 2);
869 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HBC0, 0, true,
870 4 : TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+fDYsave+sparysave,fgkZm-(dpar[2]-spar[2])));
871 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HBC2, 0, true,
872 4 : TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+fDYsave+sparysave,fgkZp+dpar[2]-spar[2]),
873 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
874 :
875 16 : TString volAluAngSupport3H = GetVolAluAngSuppName("3", "H", icount);
876 8 : GetEnvelopes(16+icount)
877 4 : ->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HBC0,iVolNum++,3, spar);
878 8 : GetEnvelopes(16+icount)
879 4 : ->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HBC2,iVolNum++,3, spar);
880 :
881 : // gas pipe (high)
882 4 : ppar[0]=fgkSizeGasPipe[0];
883 4 : ppar[1]=fgkSizeGasPipe[1];
884 4 : ppar[2]=fDXsave-fgkAvoidExtrusion;
885 16 : TString volEnvInoxGasPipe2BC0 = GetVolEnvInoxGasPipeName("2", "BC", icount, 0);
886 16 : TString volEnvInoxGasPipe2BC2 = GetVolEnvInoxGasPipeName("2", "BC", icount, 2);
887 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2BC0, 0, true,
888 4 : TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+fDYsave+sparysave+fgkOffsetGasPipe,fgkZm),
889 : fRsupportpipe);
890 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2BC2, 0, true,
891 4 : TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+fDYsave+sparysave+fgkOffsetGasPipe,fgkZp),
892 : fRsupportpipe);
893 8 : GetEnvelopes(16+icount)
894 4 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2BC0,iVolNum++,3, ppar);
895 8 : GetEnvelopes(16+icount)
896 4 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2BC2,iVolNum++,3, ppar);
897 :
898 : // 4 vertical
899 4 : spar[0]=fDXsave-fgkAvoidExtrusion;
900 4 : spar[1]=fgkSizeSupport2V[1];
901 4 : spar[2]=fgkSizeSupport2V[2];
902 4 : sparysave=spar[1]+fgkSizeSupport2H[1];
903 20 : TString volEnvSuppAng4VBC0 = GetVolEnvSuppAngName("4", "V", "B", icount, 0);
904 20 : TString volEnvSuppAng4VBC2 = GetVolEnvSuppAngName("4", "V", "B", icount, 2);
905 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VBC0, 0, true,
906 4 : TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+fDYsave,-(fgkSizeVSupExt[0]+spar[2])));
907 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VBC2, 0, true,
908 4 : TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+fDYsave,fgkSizeVSupExt[0]+spar[2]),
909 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
910 :
911 16 : TString volAluAngSupport4V = GetVolAluAngSuppName("4", "V", icount);
912 8 : GetEnvelopes(16+icount)
913 4 : ->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VBC0,iVolNum++,3, spar);
914 8 : GetEnvelopes(16+icount)
915 4 : ->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VBC2,iVolNum++,3, spar);
916 :
917 : // 4 horizontal
918 4 : spar[0]=fDXsave-fgkAvoidExtrusion;
919 4 : spar[1]=fgkSizeSupport2H[1];
920 4 : spar[2]=fgkSizeSupport2H[2];
921 20 : TString volEnvSuppAng4HBC0 = GetVolEnvSuppAngName("4", "H", "B", icount, 0);
922 20 : TString volEnvSuppAng4HBC2 = GetVolEnvSuppAngName("4", "H", "B", icount, 2);
923 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HBC0, 0, true,
924 4 : TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+fDYsave+sparysave,-(fgkSizeVSupExt[0]+spar[2])));
925 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HBC2, 0, true,
926 4 : TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+fDYsave+sparysave,fgkSizeVSupExt[0]+spar[2]),
927 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
928 :
929 16 : TString volAluAngSupport4H = GetVolAluAngSuppName("4", "H", icount);
930 8 : GetEnvelopes(16+icount)
931 4 : ->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HBC0,iVolNum++,3, spar);
932 8 : GetEnvelopes(16+icount)
933 4 : ->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HBC2,iVolNum++,3, spar);
934 :
935 : // X horizontal
936 4 : spar[0]=(fgkYVSup[3]-fgkYVSup[0])/2.*zRatio;
937 4 : spar[1]=fgkSizeSupportXH[1];
938 4 : spar[2]=fgkSizeSupportXH[2];
939 4 : Float_t sparysavex=spar[1];
940 20 : TString volEnvSuppAngXHBC0 = GetVolEnvSuppAngName("X", "H", "B", icount, 0);
941 20 : TString volEnvSuppAngXHBC2 = GetVolEnvSuppAngName("X", "H", "B", icount, 2);
942 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHBC0, 0, true,
943 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,-yEnvM+dpar[1]+fDYsave+sparysave+1.0,
944 4 : -(fgkSizeVSupExt[0]+spar[2])));
945 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHBC2, 0, true,
946 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),-yEnvP+dpar[1]+fDYsave+sparysave+1.0,
947 4 : fgkSizeVSupExt[0]+spar[2]),
948 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
949 :
950 16 : TString volAluAngSupportXH = GetVolAluAngSuppName("X", "H", icount);
951 8 : GetEnvelopes(16+icount)
952 4 : ->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHBC0,iVolNum++,3, spar);
953 8 : GetEnvelopes(16+icount)
954 4 : ->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHBC2,iVolNum++,3, spar);
955 : // X vertical
956 4 : spar[0]=(fgkYVSup[3]-fgkYVSup[0])/2.*zRatio;
957 4 : spar[1]=fgkSizeSupportXV[1];
958 4 : spar[2]=fgkSizeSupportXV[2];
959 20 : TString volEnvSuppAngXVBC0 = GetVolEnvSuppAngName("X", "V", "B", icount, 0);
960 20 : TString volEnvSuppAngXVBC2 = GetVolEnvSuppAngName("X", "V", "B", icount, 2);
961 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVBC0, 0, true,
962 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,
963 4 : -yEnvM+dpar[1]+fDYsave+sparysave+1.0+sparysavex+spar[1],
964 4 : -(fgkSizeVSupExt[0]+spar[2])));
965 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVBC2, 0, true,
966 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),
967 4 : -yEnvP+dpar[1]+fDYsave+sparysave+1.0+sparysavex+spar[1],
968 4 : fgkSizeVSupExt[0]+spar[2]),
969 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
970 :
971 16 : TString volAluAngSupportXV = GetVolAluAngSuppName("X", "V", icount);
972 8 : GetEnvelopes(16+icount)
973 4 : ->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVBC0,iVolNum++,3, spar);
974 8 : GetEnvelopes(16+icount)
975 4 : ->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVBC2,iVolNum++,3, spar);
976 :
977 : // B
978 : // 1 vertical
979 4 : spar[0]=fDXsave-fgkAvoidExtrusion;
980 4 : spar[1]=fgkSizeSupport1V[1];
981 4 : spar[2]=fgkSizeSupport1V[2];
982 4 : sparysave=spar[1];
983 20 : TString volEnvSuppAng1VBC1 = GetVolEnvSuppAngName("1", "V", "B", icount, 1);
984 20 : TString volEnvSuppAng1VBC3 = GetVolEnvSuppAngName("1", "V", "B", icount, 3);
985 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VBC1, 0, true,
986 4 : TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-fDYsave,fgkZm-dpar[2]-spar[2]));
987 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VBC3, 0, true,
988 4 : TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-fDYsave,fgkZp+dpar[2]+spar[2]),
989 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
990 : //TString volAluAngSupport1V = GetVolAluAngSuppName("1", "V", icount);
991 8 : GetEnvelopes(16+icount)
992 4 : ->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VBC1,iVolNum++,3, spar);
993 8 : GetEnvelopes(16+icount)
994 4 : ->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VBC3,iVolNum++,3, spar);
995 :
996 :
997 : // 1 horizontal
998 4 : spar[0]=fDXsave-fgkAvoidExtrusion;
999 4 : spar[1]=fgkSizeSupport1H[1];
1000 4 : spar[2]=fgkSizeSupport1H[2];
1001 :
1002 20 : TString volEnvSuppAng1HBC1 = GetVolEnvSuppAngName("1", "H", "B", icount, 1);
1003 20 : TString volEnvSuppAng1HBC3 = GetVolEnvSuppAngName("1", "H", "B", icount, 3);
1004 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HBC1, 0, true,
1005 4 : TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-fDYsave-sparysave,fgkZm-(dpar[2]-spar[2])));
1006 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HBC3, 0, true,
1007 4 : TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-fDYsave-sparysave,fgkZp+dpar[2]-spar[2]),
1008 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1009 :
1010 : //TString volAluAngSupport1H = GetVolAluAngSuppName("1", "H", icount);
1011 8 : GetEnvelopes(16+icount)
1012 4 : ->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HBC1,iVolNum++,3, spar);
1013 8 : GetEnvelopes(16+icount)
1014 4 : ->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HBC3,iVolNum++,3, spar);
1015 :
1016 : // gas pipe (low)
1017 4 : ppar[0]=fgkSizeGasPipe[0];
1018 4 : ppar[1]=fgkSizeGasPipe[1];
1019 4 : ppar[2]=fDXsave-fgkAvoidExtrusion;
1020 16 : TString volEnvInoxGasPipe1BC1 = GetVolEnvInoxGasPipeName("1", "BC", icount, 1);
1021 16 : TString volEnvInoxGasPipe1BC3 = GetVolEnvInoxGasPipeName("1", "BC", icount, 3);
1022 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1BC1, 0, true,
1023 4 : TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-fDYsave-sparysave-fgkOffsetGasPipe,fgkZm),
1024 : fRsupportpipe);
1025 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1BC3, 0, true,
1026 4 : TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-fDYsave-sparysave-fgkOffsetGasPipe,fgkZp),
1027 : fRsupportpipe);
1028 8 : GetEnvelopes(16+icount)
1029 4 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1BC1,iVolNum++,3, ppar);
1030 8 : GetEnvelopes(16+icount)
1031 4 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1BC3,iVolNum++,3, ppar);
1032 :
1033 : // 2 vertical
1034 4 : spar[0]=fDXsave-fgkAvoidExtrusion;
1035 4 : spar[1]=fgkSizeSupport2V[1];
1036 4 : spar[2]=fgkSizeSupport2V[2];
1037 4 : sparysave=spar[1]+fgkSizeSupport2H[1];
1038 20 : TString volEnvSuppAng2VBC1 = GetVolEnvSuppAngName("2", "V", "B", icount, 1);
1039 20 : TString volEnvSuppAng2VBC3 = GetVolEnvSuppAngName("2", "V", "B", icount, 3);
1040 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VBC1, 0, true,
1041 4 : TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-fDYsave,-(fgkSizeVSupExt[0]+spar[2])));
1042 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VBC3, 0, true,
1043 4 : TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-fDYsave,fgkSizeVSupExt[0]+spar[2]),
1044 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1045 :
1046 : //TString volAluAngSupport2V = GetVolAluAngSuppName("2", "V", icount);
1047 8 : GetEnvelopes(16+icount)
1048 4 : ->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VBC1,iVolNum++,3, spar);
1049 8 : GetEnvelopes(16+icount)
1050 4 : ->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VBC3,iVolNum++,3, spar);
1051 : // 2 horizontal
1052 4 : spar[0]=fDXsave-fgkAvoidExtrusion;
1053 4 : spar[1]=fgkSizeSupport2H[1];
1054 4 : spar[2]=fgkSizeSupport2H[2];
1055 20 : TString volEnvSuppAng2HBC1 = GetVolEnvSuppAngName("2", "H", "B", icount, 1);
1056 20 : TString volEnvSuppAng2HBC3 = GetVolEnvSuppAngName("2", "H", "B", icount, 3);
1057 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HBC1, 0, true,
1058 4 : TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-fDYsave-sparysave,-(fgkSizeVSupExt[0]+spar[2])));
1059 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HBC3, 0, true,
1060 4 : TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-fDYsave-sparysave,fgkSizeVSupExt[0]+spar[2]),
1061 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1062 :
1063 : //TString volAluAngSupport2H = GetVolAluAngSuppName("2", "H", icount);
1064 8 : GetEnvelopes(16+icount)
1065 4 : ->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HBC1,iVolNum++,3, spar);
1066 8 : GetEnvelopes(16+icount)
1067 4 : ->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HBC3,iVolNum++,3, spar);
1068 :
1069 : // 3 vertical
1070 4 : spar[0]=dpar[0];
1071 4 : spar[1]=fgkSizeSupport1V[1];
1072 4 : spar[2]=fgkSizeSupport1V[2];
1073 4 : sparysave=spar[1];
1074 20 : TString volEnvSuppAng3VBC1 = GetVolEnvSuppAngName("3", "V", "B", icount, 1);
1075 20 : TString volEnvSuppAng3VBC3 = GetVolEnvSuppAngName("3", "V", "B", icount, 3);
1076 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VBC1, 0, true,
1077 4 : TGeoTranslation(xEnv,yEnvM+dpar[1]+fDYsave,fgkZm-dpar[2]-spar[2]));
1078 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VBC3, 0, true,
1079 4 : TGeoTranslation(-xEnv,yEnvP+dpar[1]+fDYsave,fgkZp+dpar[2]+spar[2]),
1080 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1081 :
1082 : //TString volAluAngSupport3V = GetVolAluAngSuppName("3", "V", icount);
1083 8 : GetEnvelopes(16+icount)
1084 4 : ->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VBC1,iVolNum++,3, spar);
1085 8 : GetEnvelopes(16+icount)
1086 4 : ->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VBC3,iVolNum++,3, spar);
1087 :
1088 : // 3 horizontal
1089 4 : spar[1]=fgkSizeSupport1H[1];
1090 4 : spar[2]=fgkSizeSupport1H[2];
1091 :
1092 20 : TString volEnvSuppAng3HBC1 = GetVolEnvSuppAngName("3", "H", "B", icount, 1);
1093 20 : TString volEnvSuppAng3HBC3 = GetVolEnvSuppAngName("3", "H", "B", icount, 3);
1094 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HBC1, 0, true,
1095 4 : TGeoTranslation(xEnv,yEnvM+dpar[1]+fDYsave+sparysave,fgkZm-(dpar[2]-spar[2])));
1096 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HBC3, 0, true,
1097 4 : TGeoTranslation(-xEnv,yEnvP+dpar[1]+fDYsave+sparysave,fgkZp+dpar[2]-spar[2]),
1098 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1099 :
1100 8 : GetEnvelopes(16+icount)
1101 4 : ->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HBC1,iVolNum++,3, spar);
1102 8 : GetEnvelopes(16+icount)
1103 4 : ->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HBC3,iVolNum++,3, spar);
1104 :
1105 : // gas pipe (high)
1106 4 : ppar[0]=fgkSizeGasPipe[0];
1107 4 : ppar[1]=fgkSizeGasPipe[1];
1108 4 : ppar[2]=dpar[0];
1109 16 : TString volEnvInoxGasPipe2BC1 = GetVolEnvInoxGasPipeName("2", "BC", icount, 1);
1110 16 : TString volEnvInoxGasPipe2BC3 = GetVolEnvInoxGasPipeName("2", "BC", icount, 3);
1111 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2BC1, 0, true,
1112 4 : TGeoTranslation(xEnv,yEnvM+dpar[1]+fDYsave+sparysave+fgkOffsetGasPipe,fgkZm),fRsupportpipe);
1113 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2BC3, 0, true,
1114 4 : TGeoTranslation(-xEnv,yEnvP+dpar[1]+fDYsave+sparysave+fgkOffsetGasPipe,fgkZp),fRsupportpipe);
1115 8 : GetEnvelopes(16+icount)
1116 4 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2BC1,iVolNum++,3, ppar);
1117 8 : GetEnvelopes(16+icount)
1118 4 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2BC3,iVolNum++,3, ppar);
1119 :
1120 : // 4 vertical
1121 4 : spar[0]=dpar[0];
1122 4 : spar[1]=fgkSizeSupport2V[1];
1123 4 : spar[2]=fgkSizeSupport2V[2];
1124 4 : sparysave=spar[1]+fgkSizeSupport2H[1];
1125 20 : TString volEnvSuppAng4VBC1 = GetVolEnvSuppAngName("4", "V", "B", icount, 1);
1126 20 : TString volEnvSuppAng4VBC3 = GetVolEnvSuppAngName("4", "V", "B", icount, 3);
1127 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VBC1, 0, true,
1128 4 : TGeoTranslation(xEnv,yEnvM+dpar[1]+fDYsave,-(fgkSizeVSupExt[0]+spar[2])));
1129 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VBC3, 0, true,
1130 4 : TGeoTranslation(-xEnv,yEnvP+dpar[1]+fDYsave,fgkSizeVSupExt[0]+spar[2]),
1131 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1132 :
1133 8 : GetEnvelopes(16+icount)
1134 4 : ->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VBC1,iVolNum++,3, spar);
1135 8 : GetEnvelopes(16+icount)
1136 4 : ->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VBC3,iVolNum++,3, spar);
1137 :
1138 : // 4 horizontal
1139 4 : spar[1]=fgkSizeSupport2H[1];
1140 4 : spar[2]=fgkSizeSupport2H[2];
1141 20 : TString volEnvSuppAng4HBC1 = GetVolEnvSuppAngName("4", "H", "B", icount, 1);
1142 20 : TString volEnvSuppAng4HBC3 = GetVolEnvSuppAngName("4", "H", "B", icount, 3);
1143 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HBC1, 0, true,
1144 4 : TGeoTranslation(xEnv,yEnvM+dpar[1]+fDYsave+sparysave,-(fgkSizeVSupExt[0]+spar[2])));
1145 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HBC3, 0, true,
1146 4 : TGeoTranslation(-xEnv,yEnvP+dpar[1]+fDYsave+sparysave,fgkSizeVSupExt[0]+spar[2]),
1147 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1148 :
1149 8 : GetEnvelopes(16+icount)
1150 4 : ->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HBC1,iVolNum++,3, spar);
1151 8 : GetEnvelopes(16+icount)
1152 4 : ->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HBC3,iVolNum++,3, spar);
1153 :
1154 : // X horizontal
1155 4 : spar[0]=(fgkYVSup[3]-fgkYVSup[0])/2.*zRatio;
1156 4 : spar[1]=fgkSizeSupportXH[1];
1157 4 : spar[2]=fgkSizeSupportXH[2];
1158 4 : sparysavex=spar[1];
1159 20 : TString volEnvSuppAngXHBC1 = GetVolEnvSuppAngName("X", "H", "B", icount, 1);
1160 20 : TString volEnvSuppAngXHBC3 = GetVolEnvSuppAngName("X", "H", "B", icount, 3);
1161 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHBC1, 0, true,
1162 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,yEnvM+dpar[1]+fDYsave+sparysave+1.0,
1163 4 : -(fgkSizeVSupExt[0]+spar[2])));
1164 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHBC3, 0, true,
1165 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),yEnvP+dpar[1]+fDYsave+sparysave+1.0,
1166 4 : fgkSizeVSupExt[0]+spar[2]),
1167 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1168 :
1169 8 : GetEnvelopes(16+icount)
1170 4 : ->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHBC1,iVolNum++,3, spar);
1171 8 : GetEnvelopes(16+icount)
1172 4 : ->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHBC3,iVolNum++,3, spar);
1173 :
1174 : // X vertical
1175 4 : spar[0]=(fgkYVSup[3]-fgkYVSup[0])/2.*zRatio;
1176 4 : spar[1]=fgkSizeSupportXV[1];
1177 4 : spar[2]=fgkSizeSupportXV[2];
1178 20 : TString volEnvSuppAngXVBC1 = GetVolEnvSuppAngName("X", "V", "B", icount, 1);
1179 20 : TString volEnvSuppAngXVBC3 = GetVolEnvSuppAngName("X", "V", "B", icount, 3);
1180 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVBC1, 0, true,
1181 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,
1182 4 : yEnvM+dpar[1]+fDYsave+sparysave+1.0+sparysavex+spar[1],-(fgkSizeVSupExt[0]+spar[2])));
1183 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVBC3, 0, true,
1184 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),
1185 4 : yEnvP+dpar[1]+fDYsave+sparysave+1.0+sparysavex+spar[1],fgkSizeVSupExt[0]+spar[2]),
1186 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1187 :
1188 8 : GetEnvelopes(16+icount)
1189 4 : ->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVBC1,iVolNum++,3, spar);
1190 8 : GetEnvelopes(16+icount)
1191 4 : ->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVBC3,iVolNum++,3, spar);
1192 :
1193 : // keep values of yEnvP, yEnvM
1194 4 : fYEnvPsave = yEnvP;
1195 4 : fYEnvMsave = yEnvM;
1196 4 : }
1197 :
1198 : //______________________________________________________________________________
1199 : void AliMUONTriggerGeometryBuilder::BuildChamberTypeD(Int_t& iVolNum, Int_t icount)
1200 : {
1201 : // ratio of zpos1m/zpos1p and inverse for first plane
1202 8 : Float_t zpos1= AliMUONConstants::DefaultChamberZ(10);
1203 4 : Float_t zmp=(zpos1-3.6)/(zpos1+3.6);
1204 4 : Float_t zpm=1./zmp;
1205 4 : Float_t zRatio = AliMUONConstants::DefaultRatioTriggerChamber(icount);
1206 4 : Float_t xEnv = (fgkDXZERO+fgkXMAX/2.)*zRatio;
1207 :
1208 4 : Double_t dpar[3];
1209 4 : Double_t spar[3];
1210 4 : Double_t ppar[3];
1211 :
1212 : // D
1213 : Float_t yEnvP = 0;
1214 : Float_t yEnvM = 0;
1215 4 : yEnvP = (fYEnvMsave + fgkYMIN * zRatio ) * zpm + fgkYMIN * zRatio;
1216 4 : yEnvM = (fYEnvPsave + fgkYMIN * zRatio ) * zmp + fgkYMIN * zRatio;
1217 4 : dpar[0] = (fgkXMAX/2.)*zRatio;
1218 4 : dpar[1] = fgkYMIN*zRatio;
1219 4 : dpar[2] = 0.4;
1220 :
1221 4 : Int_t detElemId = (10+icount+1)*100+16;
1222 4 : TString volEnv2 = GetVolEnvName(icount, 2);
1223 4 : TString volEnv6 = GetVolEnvName(icount, 6);
1224 4 : TString volEnv11 = GetVolEnvName(icount, 11);
1225 4 : TString volEnv15 = GetVolEnvName(icount, 15);
1226 12 : TString volAlu = GetVolumeName("volAlu", icount);
1227 :
1228 12 : GetEnvelopes(16+icount)
1229 4 : ->AddEnvelope(volEnv2, detElemId, true, TGeoTranslation(xEnv,-yEnvP,fgkZp));
1230 4 : detElemId = (10+icount+1)*100+2;
1231 12 : GetEnvelopes(16+icount)
1232 4 : ->AddEnvelope(volEnv6, detElemId, true, TGeoTranslation(xEnv, yEnvP,fgkZp));
1233 4 : detElemId = (10+icount+1)*100+11;
1234 12 : GetEnvelopes(16+icount)
1235 4 : ->AddEnvelope(volEnv11, detElemId, true, TGeoTranslation(-xEnv,-yEnvM,fgkZm),
1236 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1237 4 : detElemId = (10+icount+1)*100+7;
1238 12 : GetEnvelopes(16+icount)
1239 4 : ->AddEnvelope(volEnv15, detElemId, true, TGeoTranslation(-xEnv, yEnvM,fgkZm),
1240 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1241 :
1242 8 : GetEnvelopes(16+icount)
1243 4 : ->AddEnvelopeConstituentParam(volAlu,volEnv2,iVolNum++,3, dpar);
1244 8 : GetEnvelopes(16+icount)
1245 4 : ->AddEnvelopeConstituentParam(volAlu,volEnv6,iVolNum++,3, dpar);
1246 8 : GetEnvelopes(16+icount)
1247 4 : ->AddEnvelopeConstituentParam(volAlu,volEnv11,iVolNum++,3, dpar);
1248 8 : GetEnvelopes(16+icount)
1249 4 : ->AddEnvelopeConstituentParam(volAlu,volEnv15,iVolNum++,3, dpar);
1250 :
1251 : // horizontal cable support chamber type D
1252 :
1253 4 : char volEnvSupportHD[12][8];
1254 24 : for(Int_t jj=0;jj<2;jj++){
1255 112 : for(Int_t ii=0;ii<6;ii++){
1256 48 : snprintf(volEnvSupportHD[6*jj+ii],8,"SA%dHD%d",icount+1,6*jj+ii);
1257 : }
1258 : }
1259 :
1260 4 : spar[0]=dpar[0]-(fgkYVSup[0]/2.)*zRatio;
1261 4 : spar[1]=fgkSizeSupportCable[1];
1262 4 : spar[2]=fgkSizeSupportCable[2];
1263 32 : for(Int_t in=0;in<3;in++){
1264 48 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHD[in], 0, true,
1265 24 : TGeoTranslation(xEnv+fgkYVSup[0]/2.*zRatio,-(yEnvP+dpar[1]/2.*(in-1)),
1266 12 : -(fgkSizeVSupExt[0]+spar[2])));
1267 48 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHD[in+3], 0, true,
1268 24 : TGeoTranslation(xEnv+fgkYVSup[0]/2.*zRatio, yEnvP+dpar[1]/2.*(in-1),
1269 12 : -(fgkSizeVSupExt[0]+spar[2])));
1270 48 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHD[in+6], 0, true,
1271 24 : TGeoTranslation(-(xEnv+fgkYVSup[0]/2.*zRatio),-(yEnvM+dpar[1]/2.*(in-1)),
1272 24 : fgkSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1273 48 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHD[in+9], 0, true,
1274 24 : TGeoTranslation(-(xEnv+fgkYVSup[0]/2.*zRatio),yEnvM+dpar[1]/2.*(in-1),
1275 24 : fgkSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1276 : }
1277 104 : for(Int_t ii=0;ii<12;ii++) {
1278 144 : TString volAluSupportH = GetVolumeName("volAluSupportH", icount);
1279 144 : GetEnvelopes(16+icount)
1280 96 : ->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHD[ii],iVolNum++,3, spar);
1281 48 : }
1282 :
1283 : // angular supports chamber type D
1284 : // 1 vertical
1285 :
1286 4 : spar[0]=dpar[0];
1287 4 : spar[1]=fgkSizeSupport1V[1];
1288 4 : spar[2]=fgkSizeSupport1V[2];
1289 4 : Double_t sparysave=spar[1];
1290 :
1291 36 : TString volEnvSuppAng1VD[4];
1292 24 : volEnvSuppAng1VD[0] = GetVolEnvSuppAngName("1", "V", "D", icount, 0);
1293 24 : volEnvSuppAng1VD[1] = GetVolEnvSuppAngName("1", "V", "D", icount, 1);
1294 24 : volEnvSuppAng1VD[2] = GetVolEnvSuppAngName("1", "V", "D", icount, 2);
1295 24 : volEnvSuppAng1VD[3] = GetVolEnvSuppAngName("1", "V", "D", icount, 3);
1296 :
1297 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VD[0], 0, true,
1298 4 : TGeoTranslation(xEnv,-yEnvP-dpar[1],fgkZp+dpar[2]+spar[2]));
1299 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VD[1], 0, true,
1300 4 : TGeoTranslation(xEnv,yEnvP-dpar[1],fgkZp+dpar[2]+spar[2]));
1301 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VD[2], 0, true,
1302 4 : TGeoTranslation(-xEnv,-yEnvM-dpar[1],fgkZm-dpar[2]-spar[2]),
1303 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1304 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VD[3], 0, true,
1305 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1],fgkZm-dpar[2]-spar[2]),
1306 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1307 :
1308 :
1309 16 : TString volAluAngSupport1V = GetVolAluAngSuppName("1", "V", icount);
1310 40 : for (Int_t i=0;i<4;i++)
1311 32 : GetEnvelopes(16+icount)
1312 16 : ->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VD[i],iVolNum++,3, spar);
1313 :
1314 :
1315 : // 1 horizontal
1316 :
1317 4 : spar[0]=dpar[0];
1318 4 : spar[1]=fgkSizeSupport1H[1];
1319 4 : spar[2]=fgkSizeSupport1H[2];
1320 :
1321 36 : TString volEnvSuppAng1HD[4];
1322 24 : volEnvSuppAng1HD[0] = GetVolEnvSuppAngName("1", "H", "D", icount, 0);
1323 24 : volEnvSuppAng1HD[1] = GetVolEnvSuppAngName("1", "H", "D", icount, 1);
1324 24 : volEnvSuppAng1HD[2] = GetVolEnvSuppAngName("1", "H", "D", icount, 2);
1325 24 : volEnvSuppAng1HD[3] = GetVolEnvSuppAngName("1", "H", "D", icount, 3);
1326 :
1327 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HD[0], 0, true,
1328 4 : TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave,fgkZp+dpar[2]-spar[2]));
1329 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HD[1], 0, true,
1330 4 : TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,fgkZp+dpar[2]-spar[2]));
1331 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HD[2], 0, true,
1332 4 : TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave,fgkZm-(dpar[2]-spar[2])),
1333 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1334 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HD[3], 0, true,
1335 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,fgkZm-(dpar[2]-spar[2])),
1336 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1337 :
1338 16 : TString volAluAngSupport1H = GetVolAluAngSuppName("1", "H", icount);
1339 40 : for (Int_t i=0;i<4;i++)
1340 32 : GetEnvelopes(16+icount)
1341 16 : ->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HD[i],iVolNum++,3, spar);
1342 :
1343 : // gas pipe (low)
1344 4 : ppar[0]=fgkSizeGasPipe[0];
1345 4 : ppar[1]=fgkSizeGasPipe[1];
1346 4 : ppar[2]=dpar[0];
1347 36 : TString volEnvInoxGasPipe1D[4];
1348 20 : volEnvInoxGasPipe1D[0] = GetVolEnvInoxGasPipeName("1", "D", icount, 0);
1349 20 : volEnvInoxGasPipe1D[1] = GetVolEnvInoxGasPipeName("1", "D", icount, 1);
1350 20 : volEnvInoxGasPipe1D[2] = GetVolEnvInoxGasPipeName("1", "D", icount, 2);
1351 20 : volEnvInoxGasPipe1D[3] = GetVolEnvInoxGasPipeName("1", "D", icount, 3);
1352 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1D[0], 0, true,
1353 8 : TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZp),fRsupportpipe);
1354 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1D[1], 0, true,
1355 4 : TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZp),fRsupportpipe);
1356 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1D[2], 0, true,
1357 4 : TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZm),fRsupportpipe);
1358 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1D[3], 0, true,
1359 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZm),fRsupportpipe);
1360 :
1361 12 : TString volInoxGasPipe = GetVolumeName("volInoxGasPipe", icount);
1362 40 : for (Int_t i=0;i<4;i++)
1363 32 : GetEnvelopes(16+icount)
1364 16 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1D[i],iVolNum++,3, ppar);
1365 :
1366 : // 2 vertical
1367 :
1368 4 : spar[0]=dpar[0];
1369 4 : spar[1]=fgkSizeSupport2V[1];
1370 4 : spar[2]=fgkSizeSupport2V[2];
1371 4 : sparysave=spar[1]+fgkSizeSupport2H[1];
1372 36 : TString volEnvSuppAng2VD[4];
1373 24 : volEnvSuppAng2VD[0] = GetVolEnvSuppAngName("2", "V", "D", icount, 0);
1374 24 : volEnvSuppAng2VD[1] = GetVolEnvSuppAngName("2", "V", "D", icount, 1);
1375 24 : volEnvSuppAng2VD[2] = GetVolEnvSuppAngName("2", "V", "D", icount, 2);
1376 24 : volEnvSuppAng2VD[3] = GetVolEnvSuppAngName("2", "V", "D", icount, 3);
1377 :
1378 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VD[0], 0, true,
1379 4 : TGeoTranslation(xEnv,-yEnvP-dpar[1],fgkSizeVSupExt[0]+spar[2]));
1380 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VD[1], 0, true,
1381 4 : TGeoTranslation(xEnv,yEnvP-dpar[1],fgkSizeVSupExt[0]+spar[2]));
1382 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VD[2], 0, true,
1383 4 : TGeoTranslation(-xEnv,-yEnvM-dpar[1],-(fgkSizeVSupExt[0]+spar[2])),
1384 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1385 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VD[3], 0, true,
1386 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1],-(fgkSizeVSupExt[0]+spar[2])),
1387 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1388 :
1389 16 : TString volAluAngSupport2V = GetVolAluAngSuppName("2", "V", icount);
1390 40 : for (Int_t i=0;i<4;i++)
1391 32 : GetEnvelopes(16+icount)
1392 16 : ->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VD[i],iVolNum++,3, spar);
1393 :
1394 : // 2 horizontal
1395 :
1396 4 : spar[0]=dpar[0];
1397 4 : spar[1]=fgkSizeSupport2H[1];
1398 4 : spar[2]=fgkSizeSupport2H[2];
1399 36 : TString volEnvSuppAng2HD[4];
1400 24 : volEnvSuppAng2HD[0] = GetVolEnvSuppAngName("2", "H", "D", icount, 0);
1401 24 : volEnvSuppAng2HD[1] = GetVolEnvSuppAngName("2", "H", "D", icount, 1);
1402 24 : volEnvSuppAng2HD[2] = GetVolEnvSuppAngName("2", "H", "D", icount, 2);
1403 24 : volEnvSuppAng2HD[3] = GetVolEnvSuppAngName("2", "H", "D", icount, 3);
1404 :
1405 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HD[0], 0, true,
1406 4 : TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave,fgkSizeVSupExt[0]+spar[2]));
1407 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HD[1], 0, true,
1408 4 : TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,fgkSizeVSupExt[0]+spar[2]));
1409 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HD[2], 0, true,
1410 4 : TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave,-(fgkSizeVSupExt[0]+spar[2])),
1411 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1412 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HD[3], 0, true,
1413 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,-(fgkSizeVSupExt[0]+spar[2])),
1414 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1415 :
1416 16 : TString volAluAngSupport2H = GetVolAluAngSuppName("2", "H", icount);
1417 40 : for (Int_t i=0;i<4;i++)
1418 32 : GetEnvelopes(16+icount)
1419 16 : ->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HD[i],iVolNum++,3, spar);
1420 :
1421 : // 3 vertical
1422 :
1423 4 : spar[0]=dpar[0];
1424 4 : spar[1]=fgkSizeSupport1V[1];
1425 4 : spar[2]=fgkSizeSupport1V[2];
1426 4 : sparysave=spar[1];
1427 36 : TString volEnvSuppAng3VD[4];
1428 24 : volEnvSuppAng3VD[0] = GetVolEnvSuppAngName("3", "V", "D", icount, 0);
1429 24 : volEnvSuppAng3VD[1] = GetVolEnvSuppAngName("3", "V", "D", icount, 1);
1430 24 : volEnvSuppAng3VD[2] = GetVolEnvSuppAngName("3", "V", "D", icount, 2);
1431 24 : volEnvSuppAng3VD[3] = GetVolEnvSuppAngName("3", "V", "D", icount, 3);
1432 :
1433 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VD[0], 0, true,
1434 4 : TGeoTranslation(xEnv,-yEnvP+dpar[1],fgkZp+dpar[2]+spar[2]));
1435 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VD[1], 0, true,
1436 4 : TGeoTranslation(xEnv,yEnvP+dpar[1],fgkZp+dpar[2]+spar[2]));
1437 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VD[2], 0, true,
1438 4 : TGeoTranslation(-xEnv,-yEnvM+dpar[1],fgkZm-dpar[2]-spar[2]),
1439 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1440 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VD[3], 0, true,
1441 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1],fgkZm-dpar[2]-spar[2]),
1442 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1443 :
1444 16 : TString volAluAngSupport3V = GetVolAluAngSuppName("3", "V", icount);
1445 40 : for (Int_t i=0;i<4;i++)
1446 32 : GetEnvelopes(16+icount)
1447 16 : ->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VD[i],iVolNum++,3, spar);
1448 :
1449 :
1450 : // 3 horizontal
1451 :
1452 4 : spar[0]=dpar[0];
1453 4 : spar[1]=fgkSizeSupport1H[1];
1454 4 : spar[2]=fgkSizeSupport1H[2];
1455 36 : TString volEnvSuppAng3HD[4];
1456 24 : volEnvSuppAng3HD[0] = GetVolEnvSuppAngName("3", "H", "D", icount, 0);
1457 24 : volEnvSuppAng3HD[1] = GetVolEnvSuppAngName("3", "H", "D", icount, 1);
1458 24 : volEnvSuppAng3HD[2] = GetVolEnvSuppAngName("3", "H", "D", icount, 2);
1459 24 : volEnvSuppAng3HD[3] = GetVolEnvSuppAngName("3", "H", "D", icount, 3);
1460 :
1461 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HD[0], 0, true,
1462 4 : TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave,fgkZp+dpar[2]-spar[2]));
1463 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HD[1], 0, true,
1464 4 : TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,fgkZp+dpar[2]-spar[2]));
1465 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HD[2], 0, true,
1466 4 : TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave,fgkZm-(dpar[2]-spar[2])),
1467 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1468 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HD[3], 0, true,
1469 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,fgkZm-(dpar[2]-spar[2])),
1470 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1471 :
1472 16 : TString volAluAngSupport3H = GetVolAluAngSuppName("3", "H", icount);
1473 40 : for (Int_t i=0;i<4;i++)
1474 32 : GetEnvelopes(16+icount)
1475 16 : ->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HD[i],iVolNum++,3, spar);
1476 :
1477 : // gas pipe (high)
1478 4 : ppar[0]=fgkSizeGasPipe[0];
1479 4 : ppar[1]=fgkSizeGasPipe[1];
1480 4 : ppar[2]=dpar[0];
1481 36 : TString volEnvInoxGasPipe2D[4];
1482 20 : volEnvInoxGasPipe2D[0] = GetVolEnvInoxGasPipeName("2", "D", icount, 0);
1483 20 : volEnvInoxGasPipe2D[1] = GetVolEnvInoxGasPipeName("2", "D", icount, 1);
1484 20 : volEnvInoxGasPipe2D[2] = GetVolEnvInoxGasPipeName("2", "D", icount, 2);
1485 20 : volEnvInoxGasPipe2D[3] = GetVolEnvInoxGasPipeName("2", "D", icount, 3);
1486 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2D[0], 0, true,
1487 4 : TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZp),fRsupportpipe);
1488 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2D[1], 0, true,
1489 4 : TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZp),fRsupportpipe);
1490 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2D[2], 0, true,
1491 4 : TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZm),fRsupportpipe);
1492 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2D[3], 0, true,
1493 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZm),fRsupportpipe);
1494 :
1495 40 : for (Int_t i=0;i<4;i++)
1496 32 : GetEnvelopes(16+icount)
1497 16 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2D[i],iVolNum++,3, ppar);
1498 :
1499 : // 4 vertical
1500 :
1501 4 : spar[0]=dpar[0];
1502 4 : spar[1]=fgkSizeSupport2V[1];
1503 4 : spar[2]=fgkSizeSupport2V[2];
1504 4 : sparysave=spar[1]+fgkSizeSupport2H[1];
1505 36 : TString volEnvSuppAng4VD[4];
1506 24 : volEnvSuppAng4VD[0] = GetVolEnvSuppAngName("4", "V", "D", icount, 0);
1507 24 : volEnvSuppAng4VD[1] = GetVolEnvSuppAngName("4", "V", "D", icount, 1);
1508 24 : volEnvSuppAng4VD[2] = GetVolEnvSuppAngName("4", "V", "D", icount, 2);
1509 24 : volEnvSuppAng4VD[3] = GetVolEnvSuppAngName("4", "V", "D", icount, 3);
1510 :
1511 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VD[0], 0, true,
1512 4 : TGeoTranslation(xEnv,-yEnvP+dpar[1],fgkSizeVSupExt[0]+spar[2]));
1513 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VD[1], 0, true,
1514 4 : TGeoTranslation(xEnv,yEnvP+dpar[1],fgkSizeVSupExt[0]+spar[2]));
1515 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VD[2], 0, true,
1516 4 : TGeoTranslation(-xEnv,-yEnvM+dpar[1],-(fgkSizeVSupExt[0]+spar[2])),
1517 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1518 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VD[3], 0, true,
1519 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1],-(fgkSizeVSupExt[0]+spar[2])),
1520 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1521 :
1522 16 : TString volAluAngSupport4V = GetVolAluAngSuppName("4", "V", icount);
1523 40 : for (Int_t i=0;i<4;i++)
1524 32 : GetEnvelopes(16+icount)
1525 16 : ->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VD[i],iVolNum++,3, spar);
1526 :
1527 : // 4 horizontal
1528 :
1529 4 : spar[0]=dpar[0];
1530 4 : spar[1]=fgkSizeSupport2H[1];
1531 4 : spar[2]=fgkSizeSupport2H[2];
1532 36 : TString volEnvSuppAng4HD[4];
1533 24 : volEnvSuppAng4HD[0] = GetVolEnvSuppAngName("4", "H", "D", icount, 0);
1534 24 : volEnvSuppAng4HD[1] = GetVolEnvSuppAngName("4", "H", "D", icount, 1);
1535 24 : volEnvSuppAng4HD[2] = GetVolEnvSuppAngName("4", "H", "D", icount, 2);
1536 24 : volEnvSuppAng4HD[3] = GetVolEnvSuppAngName("4", "H", "D", icount, 3);
1537 :
1538 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HD[0], 0, true,
1539 4 : TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave,fgkSizeVSupExt[0]+spar[2]));
1540 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HD[1], 0, true,
1541 4 : TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,fgkSizeVSupExt[0]+spar[2]));
1542 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HD[2], 0, true,
1543 4 : TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave,-(fgkSizeVSupExt[0]+spar[2])),
1544 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1545 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HD[3], 0, true,
1546 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,-(fgkSizeVSupExt[0]+spar[2])),
1547 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1548 :
1549 16 : TString volAluAngSupport4H = GetVolAluAngSuppName("4", "H", icount);
1550 40 : for (Int_t i=0;i<4;i++)
1551 32 : GetEnvelopes(16+icount)
1552 16 : ->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HD[i],iVolNum++,3, spar);
1553 :
1554 : // X horizontal
1555 4 : spar[0]=(fgkYVSup[3]-fgkYVSup[0])/2.*zRatio;
1556 4 : spar[1]=fgkSizeSupportXH[1];
1557 4 : spar[2]=fgkSizeSupportXH[2];
1558 4 : Double_t sparysavex=spar[1];
1559 36 : TString volEnvSuppAngXHD[4];
1560 24 : volEnvSuppAngXHD[0] = GetVolEnvSuppAngName("X", "H", "D", icount, 0);
1561 24 : volEnvSuppAngXHD[1] = GetVolEnvSuppAngName("X", "H", "D", icount, 1);
1562 24 : volEnvSuppAngXHD[2] = GetVolEnvSuppAngName("X", "H", "D", icount, 2);
1563 24 : volEnvSuppAngXHD[3] = GetVolEnvSuppAngName("X", "H", "D", icount, 3);
1564 :
1565 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHD[0], 0, true,
1566 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,-yEnvP+dpar[1]+sparysave+1.0,
1567 4 : fgkSizeVSupExt[0]+spar[2]));
1568 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHD[1], 0, true,
1569 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0,
1570 4 : fgkSizeVSupExt[0]+spar[2]));
1571 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHD[2], 0, true,
1572 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0,
1573 8 : -(fgkSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1574 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHD[3], 0, true,
1575 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),-yEnvM+dpar[1]+sparysave+1.0,
1576 8 : -(fgkSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1577 :
1578 16 : TString volAluAngSupportXH = GetVolAluAngSuppName("X", "H", icount);
1579 40 : for (Int_t i=0;i<4;i++)
1580 32 : GetEnvelopes(16+icount)
1581 16 : ->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHD[i],iVolNum++,3, spar);
1582 :
1583 : // X vertical
1584 4 : spar[0]=(fgkYVSup[3]-fgkYVSup[0])/2.*zRatio;
1585 4 : spar[1]=fgkSizeSupportXV[1];
1586 4 : spar[2]=fgkSizeSupportXV[2];
1587 36 : TString volEnvSuppAngXVD[4];
1588 24 : volEnvSuppAngXVD[0] = GetVolEnvSuppAngName("X", "V", "D", icount, 0);
1589 24 : volEnvSuppAngXVD[1] = GetVolEnvSuppAngName("X", "V", "D", icount, 1);
1590 24 : volEnvSuppAngXVD[2] = GetVolEnvSuppAngName("X", "V", "D", icount, 2);
1591 24 : volEnvSuppAngXVD[3] = GetVolEnvSuppAngName("X", "V", "D", icount, 3);
1592 :
1593 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVD[0], 0, true,
1594 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,-yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],
1595 4 : fgkSizeVSupExt[0]+spar[2]));
1596 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVD[1], 0, true,
1597 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],
1598 4 : fgkSizeVSupExt[0]+spar[2]));
1599 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVD[2], 0, true,
1600 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],
1601 8 : -(fgkSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1602 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVD[3], 0, true,
1603 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),-yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],
1604 8 : -(fgkSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1605 :
1606 16 : TString volAluAngSupportXV = GetVolAluAngSuppName("X", "V", icount);
1607 40 : for (Int_t i=0;i<4;i++)
1608 32 : GetEnvelopes(16+icount)
1609 16 : ->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVD[i],iVolNum++,3, spar);
1610 :
1611 : // keep values of yEnvP, yEnvM
1612 4 : fYEnvPsave = yEnvP;
1613 4 : fYEnvMsave = yEnvM;
1614 244 : }
1615 :
1616 : //______________________________________________________________________________
1617 : void AliMUONTriggerGeometryBuilder::BuildChamberTypeE(Int_t& iVolNum, Int_t icount)
1618 : {
1619 : // ratio of zpos1m/zpos1p and inverse for first plane
1620 8 : Float_t zpos1= AliMUONConstants::DefaultChamberZ(10);
1621 4 : Float_t zmp=(zpos1-3.6)/(zpos1+3.6);
1622 4 : Float_t zpm=1./zmp;
1623 4 : Float_t zRatio = AliMUONConstants::DefaultRatioTriggerChamber(icount);
1624 4 : Float_t xEnv = (fgkDXZERO+fgkXMAX/2.)*zRatio;
1625 :
1626 4 : Double_t dpar[3];
1627 4 : Double_t spar[3];
1628 4 : Double_t ppar[3];
1629 :
1630 : // E
1631 : Float_t yEnvP = 0;
1632 : Float_t yEnvM = 0;
1633 4 : yEnvP = (fYEnvMsave + fgkYMIN * zRatio ) * zpm + fgkYMIN * zRatio;
1634 4 : yEnvM = (fYEnvPsave + fgkYMIN * zRatio ) * zmp + fgkYMIN * zRatio;
1635 :
1636 4 : Int_t detElemId = (10+icount+1)*100+15;
1637 4 : TString volEnv1 = GetVolEnvName(icount, 1);
1638 4 : TString volEnv7 = GetVolEnvName(icount, 7);
1639 4 : TString volEnv10 = GetVolEnvName(icount, 10);
1640 4 : TString volEnv16 = GetVolEnvName(icount, 16);
1641 12 : TString volAlu = GetVolumeName("volAlu", icount);
1642 :
1643 12 : GetEnvelopes(16+icount)
1644 4 : ->AddEnvelope(volEnv1, detElemId, true, TGeoTranslation(xEnv,-yEnvM,fgkZm));
1645 4 : detElemId = (10+icount+1)*100+3;
1646 12 : GetEnvelopes(16+icount)
1647 4 : ->AddEnvelope(volEnv7, detElemId, true, TGeoTranslation(xEnv, yEnvM,fgkZm));
1648 4 : detElemId = (10+icount+1)*100+12;
1649 20 : GetEnvelopes(16+icount)->AddEnvelope(volEnv10, detElemId, true, TGeoTranslation(-xEnv,-yEnvP,fgkZp),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1650 4 : detElemId = (10+icount+1)*100+6;
1651 20 : GetEnvelopes(16+icount)->AddEnvelope(volEnv16, detElemId, true, TGeoTranslation(-xEnv, yEnvP,fgkZp),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1652 :
1653 8 : GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv1,iVolNum++,3,dpar);
1654 8 : GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv7,iVolNum++,3,dpar);
1655 8 : GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv10,iVolNum++,3,dpar);
1656 8 : GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv16,iVolNum++,3,dpar);
1657 :
1658 : // horizontal cable support chamber type E
1659 :
1660 4 : char volEnvSupportHE[12][8];
1661 24 : for(Int_t jj=0;jj<2;jj++){
1662 112 : for(Int_t ii=0;ii<6;ii++){
1663 48 : snprintf(volEnvSupportHE[6*jj+ii],8,"SA%dHE%d",icount+1,6*jj+ii);
1664 : }
1665 : }
1666 :
1667 4 : spar[0]=dpar[0]-(fgkYVSup[0]/2.)*zRatio;
1668 4 : spar[1]=fgkSizeSupportCable[1];
1669 4 : spar[2]=fgkSizeSupportCable[2];
1670 32 : for(Int_t in=0;in<3;in++){
1671 60 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHE[in], 0, true, TGeoTranslation(xEnv+fgkYVSup[0]/2.*zRatio,-(yEnvM+dpar[1]/2.*(in-1)),fgkSizeVSupExt[0]+spar[2]));
1672 60 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHE[in+3], 0, true, TGeoTranslation(xEnv+fgkYVSup[0]/2.*zRatio, yEnvM+dpar[1]/2.*(in-1),fgkSizeVSupExt[0]+spar[2]));
1673 72 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHE[in+6], 0, true, TGeoTranslation(-(xEnv+fgkYVSup[0]/2.*zRatio),-(yEnvP+dpar[1]/2.*(in-1)),-(fgkSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1674 72 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHE[in+9], 0, true, TGeoTranslation(-(xEnv+fgkYVSup[0]/2.*zRatio), yEnvP+dpar[1]/2.*(in-1),-(fgkSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1675 : }
1676 104 : for(Int_t ii=0;ii<12;ii++) {
1677 144 : TString volAluSupportH = GetVolumeName("volAluSupportH", icount);
1678 144 : GetEnvelopes(16+icount)
1679 96 : ->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHE[ii],iVolNum++,3, spar);
1680 48 : }
1681 :
1682 : // angular supports chamber type E
1683 : // 1 vertical
1684 :
1685 4 : spar[0]=dpar[0];
1686 4 : spar[1]=fgkSizeSupport1V[1];
1687 4 : spar[2]=fgkSizeSupport1V[2];
1688 4 : Double_t sparysave=spar[1];
1689 :
1690 36 : TString volEnvSuppAng1VE[4];
1691 24 : volEnvSuppAng1VE[0] = GetVolEnvSuppAngName("1", "V", "E", icount, 0);
1692 24 : volEnvSuppAng1VE[1] = GetVolEnvSuppAngName("1", "V", "E", icount, 1);
1693 24 : volEnvSuppAng1VE[2] = GetVolEnvSuppAngName("1", "V", "E", icount, 2);
1694 24 : volEnvSuppAng1VE[3] = GetVolEnvSuppAngName("1", "V", "E", icount, 3);
1695 :
1696 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VE[0], 0, true,
1697 4 : TGeoTranslation(xEnv,-yEnvM-dpar[1],fgkZm-dpar[2]-spar[2]));
1698 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VE[1], 0, true,
1699 4 : TGeoTranslation(xEnv,yEnvM-dpar[1],fgkZm-dpar[2]-spar[2]));
1700 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VE[2], 0, true,
1701 8 : TGeoTranslation(-xEnv,-yEnvP-dpar[1],fgkZp+dpar[2]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1702 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VE[3], 0, true,
1703 8 : TGeoTranslation(-xEnv,yEnvP-dpar[1],fgkZp+dpar[2]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1704 :
1705 16 : TString volAluAngSupport1V = GetVolAluAngSuppName("1", "V", icount);
1706 40 : for (Int_t i=0;i<4;i++)
1707 32 : GetEnvelopes(16+icount)
1708 16 : ->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VE[i],iVolNum++,3, spar);
1709 :
1710 :
1711 : // 1 horizontal
1712 :
1713 4 : spar[0]=dpar[0];
1714 4 : spar[1]=fgkSizeSupport1H[1];
1715 4 : spar[2]=fgkSizeSupport1H[2];
1716 :
1717 36 : TString volEnvSuppAng1HE[4];
1718 24 : volEnvSuppAng1HE[0] = GetVolEnvSuppAngName("1", "H", "E", icount, 0);
1719 24 : volEnvSuppAng1HE[1] = GetVolEnvSuppAngName("1", "H", "E", icount, 1);
1720 24 : volEnvSuppAng1HE[2] = GetVolEnvSuppAngName("1", "H", "E", icount, 2);
1721 24 : volEnvSuppAng1HE[3] = GetVolEnvSuppAngName("1", "H", "E", icount, 3);
1722 :
1723 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HE[0], 0, true,
1724 4 : TGeoTranslation(xEnv,-yEnvM-dpar[1]-sparysave,fgkZm-(dpar[2]-spar[2])));
1725 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HE[1], 0, true,
1726 4 : TGeoTranslation(xEnv,yEnvM-dpar[1]-sparysave,fgkZm-(dpar[2]-spar[2])));
1727 20 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HE[2], 0, true, TGeoTranslation(-xEnv,-yEnvP-dpar[1]-sparysave,fgkZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1728 20 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HE[3], 0, true, TGeoTranslation(-xEnv,yEnvP-dpar[1]-sparysave,fgkZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1729 :
1730 16 : TString volAluAngSupport1H = GetVolAluAngSuppName("1", "H", icount);
1731 40 : for (Int_t i=0;i<4;i++)
1732 32 : GetEnvelopes(16+icount)
1733 16 : ->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HE[i],iVolNum++,3, spar);
1734 :
1735 : // gas pipe (low)
1736 4 : ppar[0]=fgkSizeGasPipe[0];
1737 4 : ppar[1]=fgkSizeGasPipe[1];
1738 4 : ppar[2]=dpar[0];
1739 36 : TString volEnvInoxGasPipe1E[4];
1740 20 : volEnvInoxGasPipe1E[0] = GetVolEnvInoxGasPipeName("1", "E", icount, 0);
1741 20 : volEnvInoxGasPipe1E[1] = GetVolEnvInoxGasPipeName("1", "E", icount, 1);
1742 20 : volEnvInoxGasPipe1E[2] = GetVolEnvInoxGasPipeName("1", "E", icount, 2);
1743 20 : volEnvInoxGasPipe1E[3] = GetVolEnvInoxGasPipeName("1", "E", icount, 3);
1744 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1E[0], 0, true,
1745 8 : TGeoTranslation(xEnv,-yEnvM-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZm),fRsupportpipe);
1746 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1E[1], 0, true,
1747 4 : TGeoTranslation(xEnv,yEnvM-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZm),fRsupportpipe);
1748 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1E[2], 0, true,
1749 4 : TGeoTranslation(-xEnv,-yEnvP-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZp),fRsupportpipe);
1750 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1E[3], 0, true,
1751 4 : TGeoTranslation(-xEnv,yEnvP-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZp),fRsupportpipe);
1752 :
1753 12 : TString volInoxGasPipe = GetVolumeName("volInoxGasPipe", icount);
1754 40 : for (Int_t i=0;i<4;i++)
1755 32 : GetEnvelopes(16+icount)
1756 16 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1E[i],iVolNum++,3, ppar);
1757 :
1758 : // 2 vertical
1759 :
1760 4 : spar[0]=dpar[0];
1761 4 : spar[1]=fgkSizeSupport2V[1];
1762 4 : spar[2]=fgkSizeSupport2V[2];
1763 4 : sparysave=spar[1]+fgkSizeSupport2H[1];
1764 36 : TString volEnvSuppAng2VE[4];
1765 24 : volEnvSuppAng2VE[0] = GetVolEnvSuppAngName("2", "V", "E", icount, 0);
1766 24 : volEnvSuppAng2VE[1] = GetVolEnvSuppAngName("2", "V", "E", icount, 1);
1767 24 : volEnvSuppAng2VE[2] = GetVolEnvSuppAngName("2", "V", "E", icount, 2);
1768 24 : volEnvSuppAng2VE[3] = GetVolEnvSuppAngName("2", "V", "E", icount, 3);
1769 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VE[0], 0, true,
1770 4 : TGeoTranslation(xEnv,-yEnvM-dpar[1],-(fgkSizeVSupExt[0]+spar[2])));
1771 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VE[1], 0, true,
1772 4 : TGeoTranslation(xEnv,yEnvM-dpar[1],-(fgkSizeVSupExt[0]+spar[2])));
1773 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VE[2], 0, true,
1774 8 : TGeoTranslation(-xEnv,-yEnvP-dpar[1],fgkSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1775 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VE[3], 0, true,
1776 8 : TGeoTranslation(-xEnv,yEnvP-dpar[1],fgkSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1777 :
1778 16 : TString volAluAngSupport2V = GetVolAluAngSuppName("2", "V", icount);
1779 40 : for (Int_t i=0;i<4;i++)
1780 32 : GetEnvelopes(16+icount)
1781 16 : ->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VE[i],iVolNum++,3, spar);
1782 :
1783 : // 2 horizontal
1784 :
1785 4 : spar[0]=dpar[0];
1786 4 : spar[1]=fgkSizeSupport2H[1];
1787 4 : spar[2]=fgkSizeSupport2H[2];
1788 :
1789 36 : TString volEnvSuppAng2HE[4];
1790 24 : volEnvSuppAng2HE[0] = GetVolEnvSuppAngName("2", "H", "E", icount, 0);
1791 24 : volEnvSuppAng2HE[1] = GetVolEnvSuppAngName("2", "H", "E", icount, 1);
1792 24 : volEnvSuppAng2HE[2] = GetVolEnvSuppAngName("2", "H", "E", icount, 2);
1793 24 : volEnvSuppAng2HE[3] = GetVolEnvSuppAngName("2", "H", "E", icount, 3);
1794 :
1795 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HE[0], 0, true,
1796 4 : TGeoTranslation(xEnv,-yEnvM-dpar[1]-sparysave,-(fgkSizeVSupExt[0]+spar[2])));
1797 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HE[1], 0, true,
1798 4 : TGeoTranslation(xEnv,yEnvM-dpar[1]-sparysave,-(fgkSizeVSupExt[0]+spar[2])));
1799 20 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HE[2], 0, true, TGeoTranslation(-xEnv,-yEnvP-dpar[1]-sparysave,fgkSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1800 20 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HE[3], 0, true, TGeoTranslation(-xEnv,yEnvP-dpar[1]-sparysave,fgkSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1801 :
1802 16 : TString volAluAngSupport2H = GetVolAluAngSuppName("2", "H", icount);
1803 40 : for (Int_t i=0;i<4;i++)
1804 32 : GetEnvelopes(16+icount)
1805 16 : ->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HE[i],iVolNum++,3, spar);
1806 :
1807 : // 3 vertical
1808 :
1809 4 : spar[0]=dpar[0];
1810 4 : spar[1]=fgkSizeSupport1V[1];
1811 4 : spar[2]=fgkSizeSupport1V[2];
1812 4 : sparysave=spar[1];
1813 36 : TString volEnvSuppAng3VE[4];
1814 24 : volEnvSuppAng3VE[0] = GetVolEnvSuppAngName("3", "V", "E", icount, 0);
1815 24 : volEnvSuppAng3VE[1] = GetVolEnvSuppAngName("3", "V", "E", icount, 1);
1816 24 : volEnvSuppAng3VE[2] = GetVolEnvSuppAngName("3", "V", "E", icount, 2);
1817 24 : volEnvSuppAng3VE[3] = GetVolEnvSuppAngName("3", "V", "E", icount, 3);
1818 :
1819 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VE[0], 0, true,
1820 4 : TGeoTranslation(xEnv,-yEnvM+dpar[1],fgkZm-dpar[2]-spar[2]));
1821 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VE[1], 0, true,
1822 4 : TGeoTranslation(xEnv,yEnvM+dpar[1],fgkZm-dpar[2]-spar[2]));
1823 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VE[2], 0, true,
1824 8 : TGeoTranslation(-xEnv,-yEnvP+dpar[1],fgkZp+dpar[2]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1825 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VE[3], 0, true,
1826 8 : TGeoTranslation(-xEnv,yEnvP+dpar[1],fgkZp+dpar[2]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1827 :
1828 16 : TString volAluAngSupport3V = GetVolAluAngSuppName("3", "V", icount);
1829 40 : for (Int_t i=0;i<4;i++)
1830 32 : GetEnvelopes(16+icount)
1831 16 : ->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VE[i],iVolNum++,3, spar);
1832 :
1833 :
1834 : // 3 horizontal
1835 :
1836 4 : spar[0]=dpar[0];
1837 4 : spar[1]=fgkSizeSupport1H[1];
1838 4 : spar[2]=fgkSizeSupport1H[2];
1839 :
1840 36 : TString volEnvSuppAng3HE[4];
1841 24 : volEnvSuppAng3HE[0] = GetVolEnvSuppAngName("3", "H", "E", icount, 0);
1842 24 : volEnvSuppAng3HE[1] = GetVolEnvSuppAngName("3", "H", "E", icount, 1);
1843 24 : volEnvSuppAng3HE[2] = GetVolEnvSuppAngName("3", "H", "E", icount, 2);
1844 24 : volEnvSuppAng3HE[3] = GetVolEnvSuppAngName("3", "H", "E", icount, 3);
1845 :
1846 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HE[0], 0, true,
1847 4 : TGeoTranslation(xEnv,-yEnvM+dpar[1]+sparysave,fgkZm-(dpar[2]-spar[2])));
1848 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HE[1], 0, true,
1849 4 : TGeoTranslation(xEnv,yEnvM+dpar[1]+sparysave,fgkZm-(dpar[2]-spar[2])));
1850 20 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HE[2], 0, true, TGeoTranslation(-xEnv,-yEnvP+dpar[1]+sparysave,fgkZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1851 20 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HE[3], 0, true, TGeoTranslation(-xEnv,yEnvP+dpar[1]+sparysave,fgkZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1852 :
1853 16 : TString volAluAngSupport3H = GetVolAluAngSuppName("3", "H", icount);
1854 40 : for (Int_t i=0;i<4;i++)
1855 32 : GetEnvelopes(16+icount)
1856 16 : ->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HE[i],iVolNum++,3, spar);
1857 :
1858 : // gas pipe (high)
1859 4 : ppar[0]=fgkSizeGasPipe[0];
1860 4 : ppar[1]=fgkSizeGasPipe[1];
1861 4 : ppar[2]=dpar[0];
1862 36 : TString volEnvInoxGasPipe2E[4];
1863 20 : volEnvInoxGasPipe2E[0] = GetVolEnvInoxGasPipeName("2", "E", icount, 0);
1864 20 : volEnvInoxGasPipe2E[1] = GetVolEnvInoxGasPipeName("2", "E", icount, 1);
1865 20 : volEnvInoxGasPipe2E[2] = GetVolEnvInoxGasPipeName("2", "E", icount, 2);
1866 20 : volEnvInoxGasPipe2E[3] = GetVolEnvInoxGasPipeName("2", "E", icount, 3);
1867 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2E[0], 0, true,
1868 4 : TGeoTranslation(xEnv,-yEnvM+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZm),fRsupportpipe);
1869 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2E[1], 0, true,
1870 4 : TGeoTranslation(xEnv,yEnvM+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZm),fRsupportpipe);
1871 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2E[2], 0, true,
1872 4 : TGeoTranslation(-xEnv,-yEnvP+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZp),fRsupportpipe);
1873 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2E[3], 0, true,
1874 4 : TGeoTranslation(-xEnv,yEnvP+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZp),fRsupportpipe);
1875 :
1876 40 : for (Int_t i=0;i<4;i++)
1877 32 : GetEnvelopes(16+icount)
1878 16 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2E[i],iVolNum++,3, ppar);
1879 :
1880 : // 4 vertical
1881 :
1882 4 : spar[0]=dpar[0];
1883 4 : spar[1]=fgkSizeSupport2V[1];
1884 4 : spar[2]=fgkSizeSupport2V[2];
1885 4 : sparysave=spar[1]+fgkSizeSupport2H[1];
1886 :
1887 36 : TString volEnvSuppAng4VE[4];
1888 24 : volEnvSuppAng4VE[0] = GetVolEnvSuppAngName("4", "V", "E", icount, 0);
1889 24 : volEnvSuppAng4VE[1] = GetVolEnvSuppAngName("4", "V", "E", icount, 1);
1890 24 : volEnvSuppAng4VE[2] = GetVolEnvSuppAngName("4", "V", "E", icount, 2);
1891 24 : volEnvSuppAng4VE[3] = GetVolEnvSuppAngName("4", "V", "E", icount, 3);
1892 :
1893 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VE[0], 0, true,
1894 4 : TGeoTranslation(xEnv,-yEnvM+dpar[1],-(fgkSizeVSupExt[0]+spar[2])));
1895 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VE[1], 0, true,
1896 4 : TGeoTranslation(xEnv,yEnvM+dpar[1],-(fgkSizeVSupExt[0]+spar[2])));
1897 12 : GetEnvelopes(16+icount)
1898 : ->AddEnvelope(volEnvSuppAng4VE[2], 0, true,
1899 4 : TGeoTranslation(-xEnv,-yEnvP+dpar[1],fgkSizeVSupExt[0]+spar[2]),
1900 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1901 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VE[3], 0, true,
1902 4 : TGeoTranslation(-xEnv,yEnvP+dpar[1],fgkSizeVSupExt[0]+spar[2]),
1903 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1904 :
1905 16 : TString volAluAngSupport4V = GetVolAluAngSuppName("4", "V", icount);
1906 40 : for (Int_t i=0;i<4;i++)
1907 32 : GetEnvelopes(16+icount)
1908 16 : ->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VE[i],iVolNum++,3, spar);
1909 :
1910 : // 4 horizontal
1911 :
1912 4 : spar[0]=dpar[0];
1913 4 : spar[1]=fgkSizeSupport2H[1];
1914 4 : spar[2]=fgkSizeSupport2H[2];
1915 :
1916 36 : TString volEnvSuppAng4HE[4];
1917 24 : volEnvSuppAng4HE[0] = GetVolEnvSuppAngName("4", "H", "E", icount, 0);
1918 24 : volEnvSuppAng4HE[1] = GetVolEnvSuppAngName("4", "H", "E", icount, 1);
1919 24 : volEnvSuppAng4HE[2] = GetVolEnvSuppAngName("4", "H", "E", icount, 2);
1920 24 : volEnvSuppAng4HE[3] = GetVolEnvSuppAngName("4", "H", "E", icount, 3);
1921 :
1922 12 : GetEnvelopes(16+icount)
1923 : ->AddEnvelope(volEnvSuppAng4HE[0], 0, true,
1924 4 : TGeoTranslation(xEnv,-yEnvM+dpar[1]+sparysave,-(fgkSizeVSupExt[0]+spar[2])));
1925 12 : GetEnvelopes(16+icount)
1926 : ->AddEnvelope(volEnvSuppAng4HE[1], 0, true,
1927 4 : TGeoTranslation(xEnv,yEnvM+dpar[1]+sparysave,-(fgkSizeVSupExt[0]+spar[2])));
1928 12 : GetEnvelopes(16+icount)
1929 : ->AddEnvelope(volEnvSuppAng4HE[2], 0, true,
1930 4 : TGeoTranslation(-xEnv,-yEnvP+dpar[1]+sparysave,fgkSizeVSupExt[0]+spar[2]),
1931 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1932 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HE[3], 0, true,
1933 4 : TGeoTranslation(-xEnv,yEnvP+dpar[1]+sparysave,fgkSizeVSupExt[0]+spar[2]),
1934 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1935 :
1936 16 : TString volAluAngSupport4H = GetVolAluAngSuppName("4", "H", icount);
1937 40 : for (Int_t i=0;i<4;i++)
1938 32 : GetEnvelopes(16+icount)
1939 16 : ->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HE[i],iVolNum++,3, spar);
1940 :
1941 : // X horizontal
1942 4 : spar[0]=(fgkYVSup[3]-fgkYVSup[0])/2.*zRatio;
1943 4 : spar[1]=fgkSizeSupportXH[1];
1944 4 : spar[2]=fgkSizeSupportXH[2];
1945 4 : Double_t sparysavex=spar[1];
1946 :
1947 36 : TString volEnvSuppAngXHE[4];
1948 24 : volEnvSuppAngXHE[0] = GetVolEnvSuppAngName("X", "H", "E", icount, 0);
1949 24 : volEnvSuppAngXHE[1] = GetVolEnvSuppAngName("X", "H", "E", icount, 1);
1950 24 : volEnvSuppAngXHE[2] = GetVolEnvSuppAngName("X", "H", "E", icount, 2);
1951 24 : volEnvSuppAngXHE[3] = GetVolEnvSuppAngName("X", "H", "E", icount, 3);
1952 :
1953 12 : GetEnvelopes(16+icount)
1954 : ->AddEnvelope(volEnvSuppAngXHE[0], 0, true,
1955 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,-yEnvM+dpar[1]+sparysave+1.0,
1956 4 : -(fgkSizeVSupExt[0]+spar[2])));
1957 12 : GetEnvelopes(16+icount)
1958 : ->AddEnvelope(volEnvSuppAngXHE[1], 0, true,
1959 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,yEnvM+dpar[1]+sparysave+1.0,
1960 4 : -(fgkSizeVSupExt[0]+spar[2])));
1961 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHE[2], 0, true,
1962 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),-yEnvP+dpar[1]+sparysave+1.0,
1963 4 : fgkSizeVSupExt[0]+spar[2]),
1964 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1965 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHE[3], 0, true,
1966 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),yEnvP+dpar[1]+sparysave+1.0,
1967 4 : fgkSizeVSupExt[0]+spar[2]),
1968 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1969 :
1970 16 : TString volAluAngSupportXH = GetVolAluAngSuppName("X", "H", icount);
1971 40 : for (Int_t i=0;i<4;i++)
1972 32 : GetEnvelopes(16+icount)
1973 16 : ->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHE[i],iVolNum++,3, spar);
1974 :
1975 : // X vertical
1976 4 : spar[0]=(fgkYVSup[3]-fgkYVSup[0])/2.*zRatio;
1977 4 : spar[1]=fgkSizeSupportXV[1];
1978 4 : spar[2]=fgkSizeSupportXV[2];
1979 :
1980 36 : TString volEnvSuppAngXVE[4];
1981 24 : volEnvSuppAngXVE[0] = GetVolEnvSuppAngName("X", "V", "E", icount, 0);
1982 24 : volEnvSuppAngXVE[1] = GetVolEnvSuppAngName("X", "V", "E", icount, 1);
1983 24 : volEnvSuppAngXVE[2] = GetVolEnvSuppAngName("X", "V", "E", icount, 2);
1984 24 : volEnvSuppAngXVE[3] = GetVolEnvSuppAngName("X", "V", "E", icount, 3);
1985 :
1986 12 : GetEnvelopes(16+icount)
1987 : ->AddEnvelope(volEnvSuppAngXVE[0], 0, true,
1988 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,-yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],
1989 4 : -(fgkSizeVSupExt[0]+spar[2])));
1990 12 : GetEnvelopes(16+icount)
1991 : ->AddEnvelope(volEnvSuppAngXVE[1], 0, true,
1992 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],
1993 4 : -(fgkSizeVSupExt[0]+spar[2])));
1994 12 : GetEnvelopes(16+icount)
1995 : ->AddEnvelope(volEnvSuppAngXVE[2], 0, true,
1996 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),-yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],
1997 8 : fgkSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1998 12 : GetEnvelopes(16+icount)
1999 : ->AddEnvelope(volEnvSuppAngXVE[3], 0, true,
2000 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],
2001 8 : fgkSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2002 :
2003 16 : TString volAluAngSupportXV = GetVolAluAngSuppName("X", "V", icount);
2004 40 : for (Int_t i=0;i<4;i++)
2005 32 : GetEnvelopes(16+icount)
2006 16 : ->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVE[i],iVolNum++,3, spar);
2007 :
2008 : // keep values of yEnvP, yEnvM
2009 4 : fYEnvPsave = yEnvP;
2010 4 : fYEnvMsave = yEnvM;
2011 244 : }
2012 :
2013 : //______________________________________________________________________________
2014 : void AliMUONTriggerGeometryBuilder::BuildChamberTypeF(Int_t& iVolNum, Int_t icount)
2015 : {
2016 : // ratio of zpos1m/zpos1p and inverse for first plane
2017 8 : Float_t zpos1= AliMUONConstants::DefaultChamberZ(10);
2018 4 : Float_t zmp=(zpos1-3.6)/(zpos1+3.6);
2019 4 : Float_t zpm=1./zmp;
2020 4 : Float_t zRatio = AliMUONConstants::DefaultRatioTriggerChamber(icount);
2021 4 : Float_t xEnv = (fgkDXZERO+fgkXMAX/2.)*zRatio;
2022 :
2023 4 : Double_t dpar[3];
2024 4 : Double_t spar[3];
2025 4 : Double_t ppar[3];
2026 :
2027 : // F
2028 4 : dpar[0] = (fgkXMAX/2.)*zRatio;
2029 4 : dpar[1] = fgkYMIN*zRatio;
2030 4 : dpar[2] = 0.4;
2031 :
2032 : Float_t yEnvP = 0;
2033 : Float_t yEnvM = 0;
2034 4 : yEnvP = (fYEnvMsave + fgkYMIN * zRatio ) * zpm + fgkYMIN * zRatio;
2035 4 : yEnvM = (fYEnvPsave + fgkYMIN * zRatio ) * zmp + fgkYMIN * zRatio;
2036 :
2037 4 : Int_t detElemId = (10+icount+1)*100+14;
2038 4 : TString volEnv0 = GetVolEnvName(icount, 0);
2039 4 : TString volEnv8 = GetVolEnvName(icount, 8);
2040 4 : TString volEnv9 = GetVolEnvName(icount, 9);
2041 4 : TString volEnv17 = GetVolEnvName(icount, 17);
2042 12 : TString volAlu = GetVolumeName("volAlu", icount);
2043 12 : GetEnvelopes(16+icount)
2044 4 : ->AddEnvelope(volEnv0, detElemId, true, TGeoTranslation(xEnv,-yEnvP,fgkZp));
2045 4 : detElemId = (10+icount+1)*100+4;
2046 12 : GetEnvelopes(16+icount)
2047 4 : ->AddEnvelope(volEnv8, detElemId, true, TGeoTranslation(xEnv, yEnvP,fgkZp));
2048 4 : detElemId = (10+icount+1)*100+13;
2049 12 : GetEnvelopes(16+icount)
2050 4 : ->AddEnvelope(volEnv9, detElemId, true, TGeoTranslation(-xEnv,-yEnvM,fgkZm),
2051 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2052 4 : detElemId = (10+icount+1)*100+5;
2053 12 : GetEnvelopes(16+icount)
2054 4 : ->AddEnvelope(volEnv17, detElemId, true, TGeoTranslation(-xEnv, yEnvM,fgkZm),
2055 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2056 :
2057 8 : GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv0,iVolNum++,3,dpar);
2058 8 : GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv8,iVolNum++,3,dpar);
2059 8 : GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv9,iVolNum++,3,dpar);
2060 8 : GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv17,iVolNum++,3,dpar);
2061 :
2062 : // horizontal cable support chamber type F
2063 :
2064 4 : char volEnvSupportHF[12][8];
2065 24 : for(Int_t jj=0;jj<2;jj++){
2066 112 : for(Int_t ii=0;ii<6;ii++){
2067 48 : snprintf(volEnvSupportHF[6*jj+ii],8,"SA%dHF%d",icount+1,6*jj+ii);
2068 : }
2069 : }
2070 :
2071 4 : spar[0]=dpar[0]-(fgkYVSup[0]/2.)*zRatio;
2072 4 : spar[1]=fgkSizeSupportCable[1];
2073 4 : spar[2]=fgkSizeSupportCable[2];
2074 32 : for(Int_t in=0;in<3;in++){
2075 36 : GetEnvelopes(16+icount)
2076 12 : ->AddEnvelope(volEnvSupportHF[in], 0, true,
2077 24 : TGeoTranslation(xEnv+fgkYVSup[0]/2.*zRatio,-(yEnvP+dpar[1]/2.*(in-1)),
2078 12 : -(fgkSizeVSupExt[0]+spar[2])));
2079 36 : GetEnvelopes(16+icount)
2080 12 : ->AddEnvelope(volEnvSupportHF[in+3], 0, true,
2081 24 : TGeoTranslation(xEnv+fgkYVSup[0]/2.*zRatio,yEnvP+dpar[1]/2.*(in-1),
2082 12 : -(fgkSizeVSupExt[0]+spar[2])));
2083 36 : GetEnvelopes(16+icount)
2084 12 : ->AddEnvelope(volEnvSupportHF[in+6], 0, true,
2085 24 : TGeoTranslation(-(xEnv+fgkYVSup[0]/2.*zRatio),-(yEnvM+dpar[1]/2.*(in-1)),
2086 12 : fgkSizeVSupExt[0]+spar[2]),
2087 12 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2088 36 : GetEnvelopes(16+icount)
2089 12 : ->AddEnvelope(volEnvSupportHF[in+9], 0, true,
2090 24 : TGeoTranslation(-(xEnv+fgkYVSup[0]/2.*zRatio), yEnvM+dpar[1]/2.*(in-1),
2091 12 : fgkSizeVSupExt[0]+spar[2]),
2092 12 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2093 : }
2094 104 : for(Int_t ii=0;ii<12;ii++) {
2095 144 : TString volAluSupportH = GetVolumeName("volAluSupportH", icount);
2096 144 : GetEnvelopes(16+icount)
2097 96 : ->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHF[ii],iVolNum++,3, spar);
2098 48 : }
2099 :
2100 : // angular supports chamber type F
2101 : // 1 vertical
2102 :
2103 4 : spar[0]=dpar[0];
2104 4 : spar[1]=fgkSizeSupport1V[1];
2105 4 : spar[2]=fgkSizeSupport1V[2];
2106 4 : Double_t sparysave=spar[1];
2107 36 : TString volEnvSuppAng1VF[4];
2108 24 : volEnvSuppAng1VF[0] = GetVolEnvSuppAngName("1", "V", "F", icount, 0);
2109 24 : volEnvSuppAng1VF[1] = GetVolEnvSuppAngName("1", "V", "F", icount, 1);
2110 24 : volEnvSuppAng1VF[2] = GetVolEnvSuppAngName("1", "V", "F", icount, 2);
2111 24 : volEnvSuppAng1VF[3] = GetVolEnvSuppAngName("1", "V", "F", icount, 3);
2112 :
2113 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VF[0], 0, true,
2114 4 : TGeoTranslation(xEnv,-yEnvP-dpar[1],fgkZp+dpar[2]+spar[2]));
2115 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VF[1], 0, true,
2116 4 : TGeoTranslation(xEnv,yEnvP-dpar[1],fgkZp+dpar[2]+spar[2]));
2117 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VF[2], 0, true,
2118 4 : TGeoTranslation(-xEnv,-yEnvM-dpar[1],fgkZm-dpar[2]-spar[2]),
2119 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2120 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VF[3], 0, true,
2121 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1],fgkZm-dpar[2]-spar[2]),
2122 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2123 :
2124 16 : TString volAluAngSupport1V = GetVolAluAngSuppName("1", "V", icount);
2125 40 : for (Int_t i=0;i<4;i++)
2126 32 : GetEnvelopes(16+icount)
2127 16 : ->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VF[i],iVolNum++,3, spar);
2128 :
2129 : // 1 horizontal
2130 :
2131 4 : spar[0]=dpar[0];
2132 4 : spar[1]=fgkSizeSupport1H[1];
2133 4 : spar[2]=fgkSizeSupport1H[2];
2134 :
2135 36 : TString volEnvSuppAng1HF[4];
2136 24 : volEnvSuppAng1HF[0] = GetVolEnvSuppAngName("1", "H", "F", icount, 0);
2137 24 : volEnvSuppAng1HF[1] = GetVolEnvSuppAngName("1", "H", "F", icount, 1);
2138 24 : volEnvSuppAng1HF[2] = GetVolEnvSuppAngName("1", "H", "F", icount, 2);
2139 24 : volEnvSuppAng1HF[3] = GetVolEnvSuppAngName("1", "H", "F", icount, 3);
2140 :
2141 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HF[0], 0, true,
2142 4 : TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave,fgkZp+dpar[2]-spar[2]));
2143 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HF[1], 0, true,
2144 4 : TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,fgkZp+dpar[2]-spar[2]));
2145 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HF[2], 0, true,
2146 4 : TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave,fgkZm-(dpar[2]-spar[2])),
2147 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2148 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HF[3], 0, true,
2149 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,fgkZm-(dpar[2]-spar[2])),
2150 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2151 :
2152 16 : TString volAluAngSupport1H = GetVolAluAngSuppName("1", "H", icount);
2153 40 : for (Int_t i=0;i<4;i++)
2154 32 : GetEnvelopes(16+icount)
2155 16 : ->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HF[i],iVolNum++,3, spar);
2156 :
2157 : // gas pipe (low)
2158 4 : ppar[0]=fgkSizeGasPipe[0];
2159 4 : ppar[1]=fgkSizeGasPipe[1];
2160 4 : ppar[2]=dpar[0];
2161 36 : TString volEnvInoxGasPipe1F[4];
2162 20 : volEnvInoxGasPipe1F[0] = GetVolEnvInoxGasPipeName("1", "F", icount, 0);
2163 20 : volEnvInoxGasPipe1F[1] = GetVolEnvInoxGasPipeName("1", "F", icount, 1);
2164 20 : volEnvInoxGasPipe1F[2] = GetVolEnvInoxGasPipeName("1", "F", icount, 2);
2165 20 : volEnvInoxGasPipe1F[3] = GetVolEnvInoxGasPipeName("1", "F", icount, 3);
2166 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1F[0], 0, true,
2167 8 : TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZp),fRsupportpipe);
2168 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1F[1], 0, true,
2169 4 : TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZp),fRsupportpipe);
2170 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1F[2], 0, true,
2171 4 : TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZm),fRsupportpipe);
2172 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1F[3], 0, true,
2173 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave-fgkOffsetGasPipe,fgkZm),fRsupportpipe);
2174 :
2175 12 : TString volInoxGasPipe = GetVolumeName("volInoxGasPipe", icount);
2176 40 : for (Int_t i=0;i<4;i++)
2177 32 : GetEnvelopes(16+icount)
2178 16 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1F[i],iVolNum++,3, ppar);
2179 :
2180 : // 2 vertical
2181 :
2182 4 : spar[0]=dpar[0];
2183 4 : spar[1]=fgkSizeSupport2V[1];
2184 4 : spar[2]=fgkSizeSupport2V[2];
2185 4 : sparysave=spar[1]+fgkSizeSupport2H[1];
2186 :
2187 36 : TString volEnvSuppAng2VF[4];
2188 24 : volEnvSuppAng2VF[0] = GetVolEnvSuppAngName("2", "V", "F", icount, 0);
2189 24 : volEnvSuppAng2VF[1] = GetVolEnvSuppAngName("2", "V", "F", icount, 1);
2190 24 : volEnvSuppAng2VF[2] = GetVolEnvSuppAngName("2", "V", "F", icount, 2);
2191 24 : volEnvSuppAng2VF[3] = GetVolEnvSuppAngName("2", "V", "F", icount, 3);
2192 :
2193 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VF[0], 0, true,
2194 4 : TGeoTranslation(xEnv,-yEnvP-dpar[1],fgkSizeVSupExt[0]+spar[2]));
2195 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VF[1], 0, true,
2196 4 : TGeoTranslation(xEnv,yEnvP-dpar[1],fgkSizeVSupExt[0]+spar[2]));
2197 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VF[2], 0, true,
2198 8 : TGeoTranslation(-xEnv,-yEnvM-dpar[1],-(fgkSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2199 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VF[3], 0, true,
2200 8 : TGeoTranslation(-xEnv,yEnvM-dpar[1],-(fgkSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2201 :
2202 16 : TString volAluAngSupport2V = GetVolAluAngSuppName("2", "V", icount);
2203 40 : for (Int_t i=0;i<4;i++)
2204 32 : GetEnvelopes(16+icount)
2205 16 : ->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VF[i],iVolNum++,3, spar);
2206 :
2207 : // 2 horizontal
2208 :
2209 4 : spar[0]=dpar[0];
2210 4 : spar[1]=fgkSizeSupport2H[1];
2211 4 : spar[2]=fgkSizeSupport2H[2];
2212 :
2213 36 : TString volEnvSuppAng2HF[4];
2214 24 : volEnvSuppAng2HF[0] = GetVolEnvSuppAngName("2", "H", "F", icount, 0);
2215 24 : volEnvSuppAng2HF[1] = GetVolEnvSuppAngName("2", "H", "F", icount, 1);
2216 24 : volEnvSuppAng2HF[2] = GetVolEnvSuppAngName("2", "H", "F", icount, 2);
2217 24 : volEnvSuppAng2HF[3] = GetVolEnvSuppAngName("2", "H", "F", icount, 3);
2218 :
2219 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HF[0], 0, true,
2220 4 : TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave,fgkSizeVSupExt[0]+spar[2]));
2221 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HF[1], 0, true,
2222 4 : TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,fgkSizeVSupExt[0]+spar[2]));
2223 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HF[2], 0, true,
2224 4 : TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave,-(fgkSizeVSupExt[0]+spar[2])),
2225 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2226 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HF[3], 0, true,
2227 4 : TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,-(fgkSizeVSupExt[0]+spar[2])),
2228 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2229 :
2230 16 : TString volAluAngSupport2H = GetVolAluAngSuppName("2", "H", icount);
2231 40 : for (Int_t i=0;i<4;i++)
2232 32 : GetEnvelopes(16+icount)
2233 16 : ->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HF[i],iVolNum++,3, spar);
2234 :
2235 : // 3 vertical
2236 :
2237 4 : spar[0]=dpar[0];
2238 4 : spar[1]=fgkSizeSupport1V[1];
2239 4 : spar[2]=fgkSizeSupport1V[2];
2240 4 : sparysave=spar[1];
2241 :
2242 36 : TString volEnvSuppAng3VF[4];
2243 24 : volEnvSuppAng3VF[0] = GetVolEnvSuppAngName("3", "V", "F", icount, 0);
2244 24 : volEnvSuppAng3VF[1] = GetVolEnvSuppAngName("3", "V", "F", icount, 1);
2245 24 : volEnvSuppAng3VF[2] = GetVolEnvSuppAngName("3", "V", "F", icount, 2);
2246 24 : volEnvSuppAng3VF[3] = GetVolEnvSuppAngName("3", "V", "F", icount, 3);
2247 :
2248 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VF[0], 0, true,
2249 4 : TGeoTranslation(xEnv,-yEnvP+dpar[1],fgkZp+dpar[2]+spar[2]));
2250 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VF[1], 0, true,
2251 4 : TGeoTranslation(xEnv,yEnvP+dpar[1],fgkZp+dpar[2]+spar[2]));
2252 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VF[2], 0, true,
2253 4 : TGeoTranslation(-xEnv,-yEnvM+dpar[1],fgkZm-dpar[2]-spar[2]),
2254 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2255 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VF[3], 0, true,
2256 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1],fgkZm-dpar[2]-spar[2]),
2257 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2258 :
2259 16 : TString volAluAngSupport3V = GetVolAluAngSuppName("3", "V", icount);
2260 40 : for (Int_t i=0;i<4;i++)
2261 32 : GetEnvelopes(16+icount)
2262 16 : ->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VF[i],iVolNum++,3, spar);
2263 :
2264 : // 3 horizontal
2265 :
2266 4 : spar[0]=dpar[0];
2267 4 : spar[1]=fgkSizeSupport1H[1];
2268 4 : spar[2]=fgkSizeSupport1H[2];
2269 :
2270 36 : TString volEnvSuppAng3HF[4];
2271 24 : volEnvSuppAng3HF[0] = GetVolEnvSuppAngName("3", "H", "F", icount, 0);
2272 24 : volEnvSuppAng3HF[1] = GetVolEnvSuppAngName("3", "H", "F", icount, 1);
2273 24 : volEnvSuppAng3HF[2] = GetVolEnvSuppAngName("3", "H", "F", icount, 2);
2274 24 : volEnvSuppAng3HF[3] = GetVolEnvSuppAngName("3", "H", "F", icount, 3);
2275 :
2276 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HF[0], 0, true,
2277 4 : TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave,fgkZp+dpar[2]-spar[2]));
2278 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HF[1], 0, true,
2279 4 : TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,fgkZp+dpar[2]-spar[2]));
2280 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HF[2], 0, true,
2281 4 : TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave,fgkZm-(dpar[2]-spar[2])),
2282 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2283 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HF[3], 0, true,
2284 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,fgkZm-(dpar[2]-spar[2])),
2285 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2286 :
2287 16 : TString volAluAngSupport3H = GetVolAluAngSuppName("3", "H", icount);
2288 40 : for (Int_t i=0;i<4;i++)
2289 32 : GetEnvelopes(16+icount)
2290 16 : ->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HF[i],iVolNum++,3, spar);
2291 :
2292 : // gas pipe (high)
2293 4 : ppar[0]=fgkSizeGasPipe[0];
2294 4 : ppar[1]=fgkSizeGasPipe[1];
2295 4 : ppar[2]=dpar[0];
2296 36 : TString volEnvInoxGasPipe2F[4];
2297 20 : volEnvInoxGasPipe2F[0] = GetVolEnvInoxGasPipeName("2", "F", icount, 0);
2298 20 : volEnvInoxGasPipe2F[1] = GetVolEnvInoxGasPipeName("2", "F", icount, 1);
2299 20 : volEnvInoxGasPipe2F[2] = GetVolEnvInoxGasPipeName("2", "F", icount, 2);
2300 20 : volEnvInoxGasPipe2F[3] = GetVolEnvInoxGasPipeName("2", "F", icount, 3);
2301 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2F[0], 0, true,
2302 4 : TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZp),fRsupportpipe);
2303 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2F[1], 0, true,
2304 4 : TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZp),fRsupportpipe);
2305 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2F[2], 0, true,
2306 4 : TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZm),fRsupportpipe);
2307 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2F[3], 0, true,
2308 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave+fgkOffsetGasPipe,fgkZm),fRsupportpipe);
2309 :
2310 40 : for (Int_t i=0;i<4;i++)
2311 32 : GetEnvelopes(16+icount)
2312 16 : ->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2F[i],iVolNum++,3, ppar);
2313 :
2314 : // 4 vertical
2315 :
2316 4 : spar[0]=dpar[0];
2317 4 : spar[1]=fgkSizeSupport2V[1];
2318 4 : spar[2]=fgkSizeSupport2V[2];
2319 4 : sparysave=spar[1]+fgkSizeSupport2H[1];
2320 :
2321 36 : TString volEnvSuppAng4VF[4];
2322 24 : volEnvSuppAng4VF[0] = GetVolEnvSuppAngName("4", "V", "F", icount, 0);
2323 24 : volEnvSuppAng4VF[1] = GetVolEnvSuppAngName("4", "V", "F", icount, 1);
2324 24 : volEnvSuppAng4VF[2] = GetVolEnvSuppAngName("4", "V", "F", icount, 2);
2325 24 : volEnvSuppAng4VF[3] = GetVolEnvSuppAngName("4", "V", "F", icount, 3);
2326 :
2327 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VF[0], 0, true,
2328 4 : TGeoTranslation(xEnv,-yEnvP+dpar[1],fgkSizeVSupExt[0]+spar[2]));
2329 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VF[1], 0, true,
2330 4 : TGeoTranslation(xEnv,yEnvP+dpar[1],fgkSizeVSupExt[0]+spar[2]));
2331 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VF[2], 0, true,
2332 4 : TGeoTranslation(-xEnv,-yEnvM+dpar[1],-(fgkSizeVSupExt[0]+spar[2])),
2333 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2334 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VF[3], 0, true,
2335 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1],-(fgkSizeVSupExt[0]+spar[2])),
2336 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2337 :
2338 16 : TString volAluAngSupport4V = GetVolAluAngSuppName("4", "V", icount);
2339 40 : for (Int_t i=0;i<4;i++)
2340 32 : GetEnvelopes(16+icount)
2341 16 : ->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VF[i],iVolNum++,3, spar);
2342 :
2343 : // 4 horizontal
2344 :
2345 4 : spar[0]=dpar[0];
2346 4 : spar[1]=fgkSizeSupport2H[1];
2347 4 : spar[2]=fgkSizeSupport2H[2];
2348 :
2349 36 : TString volEnvSuppAng4HF[4];
2350 24 : volEnvSuppAng4HF[0] = GetVolEnvSuppAngName("4", "H", "F", icount, 0);
2351 24 : volEnvSuppAng4HF[1] = GetVolEnvSuppAngName("4", "H", "F", icount, 1);
2352 24 : volEnvSuppAng4HF[2] = GetVolEnvSuppAngName("4", "H", "F", icount, 2);
2353 24 : volEnvSuppAng4HF[3] = GetVolEnvSuppAngName("4", "H", "F", icount, 3);
2354 :
2355 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HF[0], 0, true,
2356 4 : TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave,fgkSizeVSupExt[0]+spar[2]));
2357 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HF[1], 0, true,
2358 4 : TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,fgkSizeVSupExt[0]+spar[2]));
2359 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HF[2], 0, true,
2360 4 : TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave,-(fgkSizeVSupExt[0]+spar[2])),
2361 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2362 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HF[3], 0, true,
2363 4 : TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,-(fgkSizeVSupExt[0]+spar[2])),
2364 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2365 :
2366 16 : TString volAluAngSupport4H = GetVolAluAngSuppName("4", "H", icount);
2367 40 : for (Int_t i=0;i<4;i++)
2368 32 : GetEnvelopes(16+icount)
2369 16 : ->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HF[i],iVolNum++,3, spar);
2370 :
2371 :
2372 : // X horizontal
2373 4 : spar[0]=(fgkYVSup[3]-fgkYVSup[0])/2.*zRatio;
2374 4 : spar[1]=fgkSizeSupportXH[1];
2375 4 : spar[2]=fgkSizeSupportXH[2];
2376 4 : Double_t sparysavex=spar[1];
2377 :
2378 36 : TString volEnvSuppAngXHF[4];
2379 24 : volEnvSuppAngXHF[0] = GetVolEnvSuppAngName("X", "H", "F", icount, 0);
2380 24 : volEnvSuppAngXHF[1] = GetVolEnvSuppAngName("X", "H", "F", icount, 1);
2381 24 : volEnvSuppAngXHF[2] = GetVolEnvSuppAngName("X", "H", "F", icount, 2);
2382 24 : volEnvSuppAngXHF[3] = GetVolEnvSuppAngName("X", "H", "F", icount, 3);
2383 :
2384 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHF[0], 0, true,
2385 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,-yEnvP+dpar[1]+sparysave+1.0,
2386 4 : fgkSizeVSupExt[0]+spar[2]));
2387 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHF[1], 0, true,
2388 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0,
2389 4 : fgkSizeVSupExt[0]+spar[2]));
2390 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHF[2], 0, true,
2391 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),-yEnvM+dpar[1]+sparysave+1.0,
2392 8 : -(fgkSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2393 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHF[3], 0, true,
2394 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0,
2395 4 : -(fgkSizeVSupExt[0]+spar[2])),
2396 4 : TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2397 :
2398 16 : TString volAluAngSupportXH = GetVolAluAngSuppName("X", "H", icount);
2399 40 : for (Int_t i=0;i<4;i++)
2400 32 : GetEnvelopes(16+icount)
2401 16 : ->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHF[i],iVolNum++,3, spar);
2402 :
2403 : // X vertical
2404 4 : spar[0]=(fgkYVSup[3]-fgkYVSup[0])/2.*zRatio;
2405 4 : spar[1]=fgkSizeSupportXV[1];
2406 4 : spar[2]=fgkSizeSupportXV[2];
2407 :
2408 36 : TString volEnvSuppAngXVF[4];
2409 24 : volEnvSuppAngXVF[0] = GetVolEnvSuppAngName("X", "V", "F", icount, 0);
2410 24 : volEnvSuppAngXVF[1] = GetVolEnvSuppAngName("X", "V", "F", icount, 1);
2411 24 : volEnvSuppAngXVF[2] = GetVolEnvSuppAngName("X", "V", "F", icount, 2);
2412 24 : volEnvSuppAngXVF[3] = GetVolEnvSuppAngName("X", "V", "F", icount, 3);
2413 :
2414 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVF[0], 0, true,
2415 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,-yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],
2416 4 : fgkSizeVSupExt[0]+spar[2]));
2417 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVF[1], 0, true,
2418 8 : TGeoTranslation(spar[0]+fgkYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],
2419 4 : fgkSizeVSupExt[0]+spar[2]));
2420 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVF[2], 0, true,
2421 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),-yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],
2422 8 : -(fgkSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2423 12 : GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVF[3], 0, true,
2424 8 : TGeoTranslation(-(spar[0]+fgkYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],
2425 8 : -(fgkSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
2426 :
2427 16 : TString volAluAngSupportXV = GetVolAluAngSuppName("X", "V", icount);
2428 40 : for (Int_t i=0;i<4;i++)
2429 32 : GetEnvelopes(16+icount)
2430 16 : ->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVF[i],iVolNum++,3, spar);
2431 :
2432 : // keep values of yEnvP, yEnvM
2433 4 : fYEnvPsave = yEnvP;
2434 4 : fYEnvMsave = yEnvM;
2435 244 : }
2436 :
2437 : //
2438 : // public methods
2439 : //
2440 :
2441 : //______________________________________________________________________________
2442 : void AliMUONTriggerGeometryBuilder::CreateGeometry()
2443 : {
2444 : /// From AliMUONv1::CreateGeometry()
2445 :
2446 : /*
2447 : zpos1 and zpos2 are the middle of the first and second
2448 : planes of station 1 (+1m for second station):
2449 : zpos1=(zpos1m+zpos1p)/2=(15999+16071)/2=16035 mm, thick/2=40 mm
2450 : zpos2=(zpos2m+zpos2p)/2=(16169+16241)/2=16205 mm, thick/2=40 mm
2451 : zposxm and zposxp= middles of gaz gaps within a detection plane
2452 : rem: the total thickness accounts for 1 mm of al on both
2453 : side of the RPCs (see zpos1 and zpos2)
2454 : */
2455 :
2456 2 : fIdtmed = fMUON->GetIdtmed()->GetArray()-1099;
2457 1 : fIdAir= fIdtmed[1100]; // medium 1
2458 1 : fIdAlu1=fIdtmed[1103]; // medium 4
2459 1 : fIdInox = fIdtmed[1128]; // medium 29 Stainless Steel (18%Cr,9%Ni,Fe)
2460 :
2461 2 : Double_t dstation = ( ( - AliMUONConstants::DefaultChamberZ(11)) -
2462 2 : ( - AliMUONConstants::DefaultChamberZ(10)) ) /2.1;
2463 1 : Float_t par[3];
2464 1 : par[2] = dstation;
2465 :
2466 : Int_t icount=0; // chamber counter (0 1 2 3)
2467 :
2468 6 : for (Int_t istation=0; istation<2; istation++) { // loop on stations
2469 12 : for (Int_t iplane=0; iplane<2; iplane++) { // loop on detection planes
2470 :
2471 4 : Int_t iVolNum=1; // counter Volume Number
2472 4 : icount = Int_t(iplane<<0)+Int_t(istation<<1);
2473 :
2474 4 : cout << "## In AliMUONTriggerGeometryBuilder " << icount << endl;
2475 :
2476 4 : par[0] = AliMUONConstants::Rmin(5+istation);
2477 4 : par[1] = AliMUONConstants::Rmax(5+istation);
2478 4 : Char_t volName[6];
2479 4 : snprintf(volName,6,"%s%d", "SC",11+icount);
2480 4 : TVirtualMC::GetMC()->Gsvolu(volName,"TUBE", fIdAir, par, 3);
2481 :
2482 : // chamber prototype
2483 4 : BuildChamberPrototype(icount);
2484 :
2485 : // RPC supports (vertical)
2486 4 : BuildRPCSupportsVertical(iVolNum, icount);
2487 :
2488 : // RPC supports (horizontal)
2489 :
2490 : // supports for cables
2491 4 : BuildRPCSupportsHorizontal(icount);
2492 :
2493 : // Angular supports for chambers
2494 4 : BuildAngularSupportForChambers(icount);
2495 :
2496 : // gas pipes
2497 4 : BuildGasPipes(icount);
2498 :
2499 : // chamber type A
2500 4 : BuildChamberTypeA(iVolNum, icount);
2501 :
2502 : // chamber type B (plus envelope chambers B & C)
2503 4 : BuildChamberTypeB(iVolNum, icount);
2504 :
2505 : // chamber type D, E and F (same size)
2506 4 : BuildChamberTypeD(iVolNum, icount);
2507 4 : BuildChamberTypeE(iVolNum, icount);
2508 4 : BuildChamberTypeF(iVolNum, icount);
2509 4 : } // end loop on detection planes
2510 : } // end loop on stations
2511 1 : }
2512 :
2513 : //______________________________________________________________________________
2514 : void AliMUONTriggerGeometryBuilder::SetVolumes()
2515 : {
2516 : /// Defines the volumes for the trigger chambers.
2517 :
2518 2 : if (gAlice->GetModule("SHIL")) {
2519 2 : SetMotherVolume(16, "YOUT2");
2520 2 : SetMotherVolume(17, "YOUT2");
2521 2 : SetMotherVolume(18, "YOUT2");
2522 2 : SetMotherVolume(19, "YOUT2");
2523 1 : }
2524 :
2525 2 : SetVolume(16, "SC11");
2526 2 : SetVolume(17, "SC12");
2527 2 : SetVolume(18, "SC13");
2528 2 : SetVolume(19, "SC14");
2529 1 : }
2530 :
2531 : //______________________________________________________________________________
2532 : void AliMUONTriggerGeometryBuilder::SetTransformations()
2533 : {
2534 : /// Defines the transformations for the trigger chambers.
2535 :
2536 2 : TGeoRotation st345inclination("rotbeam");
2537 1 : st345inclination.RotateX(-AliMUONConstants::St345Inclination());
2538 :
2539 1 : Double_t zpos1= AliMUONConstants::DefaultChamberZ(10);
2540 3 : SetTransformation(16, TGeoTranslation(0., 0, zpos1), st345inclination);
2541 :
2542 1 : zpos1= AliMUONConstants::DefaultChamberZ(11);
2543 3 : SetTransformation(17, TGeoTranslation(0., 0, zpos1), st345inclination);
2544 :
2545 1 : zpos1= AliMUONConstants::DefaultChamberZ(12);
2546 3 : SetTransformation(18, TGeoTranslation(0., 0, zpos1), st345inclination);
2547 :
2548 1 : zpos1= AliMUONConstants::DefaultChamberZ(13);
2549 3 : SetTransformation(19, TGeoTranslation(0., 0, zpos1), st345inclination);
2550 1 : }
2551 :
2552 : //______________________________________________________________________________
2553 : void AliMUONTriggerGeometryBuilder::SetSensitiveVolumes()
2554 : {
2555 : /// Defines the sensitive volumes for trigger station chambers.
2556 :
2557 3 : GetGeometry(16)->SetSensitiveVolume("S11G");
2558 2 : GetGeometry(17)->SetSensitiveVolume("S12G");
2559 2 : GetGeometry(18)->SetSensitiveVolume("S13G");
2560 2 : GetGeometry(19)->SetSensitiveVolume("S14G");
2561 1 : }
2562 :
|