]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONTriggerGeometryBuilder.cxx
Initialisation.
[u/mrichter/AliRoot.git] / MUON / AliMUONTriggerGeometryBuilder.cxx
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
30 #include "AliLog.h"
31 #include "AliRun.h"
32
33 #include "AliMUONTriggerGeometryBuilder.h"
34 #include "AliMUON.h"
35 #include "AliMUONConstants.h"
36 #include "AliMUONGeometryModule.h"
37 #include "AliMUONGeometryEnvelopeStore.h"
38
39 /// \cond CLASSIMP
40 ClassImp(AliMUONTriggerGeometryBuilder)
41 /// \endcond
42
43 //______________________________________________________________________________
44 AliMUONTriggerGeometryBuilder::AliMUONTriggerGeometryBuilder(AliMUON* muon)
45  : AliMUONVGeometryBuilder(16, 4),
46    fMUON(muon)
47 {
48 /// Standard constructor
49
50 }
51
52 //______________________________________________________________________________
53 AliMUONTriggerGeometryBuilder::AliMUONTriggerGeometryBuilder()
54  : AliMUONVGeometryBuilder(),
55    fMUON(0)
56 {
57 /// Default constructor
58 }
59
60 //______________________________________________________________________________
61 AliMUONTriggerGeometryBuilder::~AliMUONTriggerGeometryBuilder() 
62 {
63 /// Destructor
64 }
65
66 //
67 // public methods
68 //
69
70 //______________________________________________________________________________
71 void AliMUONTriggerGeometryBuilder::CreateGeometry()
72 {
73 /// From AliMUONv1::CreateGeometry()
74
75     /* 
76        zpos1 and zpos2 are the middle of the first and second
77        planes of station 1 (+1m for second station):
78        zpos1=(zpos1m+zpos1p)/2=(15999+16071)/2=16035 mm, thick/2=40 mm
79        zpos2=(zpos2m+zpos2p)/2=(16169+16241)/2=16205 mm, thick/2=40 mm
80        zposxm and zposxp= middles of gaz gaps within a detection plane
81        rem: the total thickness accounts for 1 mm of al on both
82        side of the RPCs (see zpos1 and zpos2)
83     */
84     
85     Int_t *idtmed = fMUON->GetIdtmed()->GetArray()-1099;
86     Int_t idAir= idtmed[1100]; // medium 1
87     Int_t idAlu1=idtmed[1103]; // medium 4
88     Int_t idInox = idtmed[1128];       // medium 29 Stainless Steel (18%Cr,9%Ni,Fe) 
89     
90     Int_t detElemId=0;          // Detection Element Number    
91     Float_t tpar[3];
92     Double_t dpar[3];    
93     Double_t spar[3];    
94     Double_t ppar[3];    
95    
96 // vertical gap between right and left chambers (kDXZERO*2=4cm)
97     const Float_t kDXZERO=2.; 
98 // main distances for chamber definition in first plane/first station
99     const Float_t kXMIN=34.;       
100     const Float_t kXMED=51.;                                
101     const Float_t kXMAX=255.; 
102 // 090704 kXMAX changed from 272 to 255.
103 // (see fig.2-4 & 2-5 of Local Trigger Board PRR)
104 // segmentation updated accordingly
105     const Float_t kYMIN=34.;                              
106     const Float_t kYMAX=51.;                              
107 // inner/outer radius of flange between beam shield. and chambers (1/station)
108 //    const Float_t kRMIN[2]={50.,50.};
109 //    const Float_t kRMAX[2]={64.,68.};
110 // z position of the middle of the gas gap in mother vol 
111     const Float_t kZm=-3.6;
112     const Float_t kZp=+3.6;
113     
114 // y positions of vertical supports
115     const Float_t kYVSup[4]={61.45,122.45,192.95,236.95}; 
116 // dimensions of vertical supports 
117     const Float_t kSizeVSupExt[3]={1.5,1.5,306.+5.}; 
118     const Float_t kSizeVSupInt[3]={1.2,1.2,306.+5.};  
119 // transverse dimensions of angular supports 
120     const Float_t kSizeSupport1V[3]={0.,1.5,0.1}; 
121     const Float_t kSizeSupport1H[3]={0.,0.1,1.2}; // z should be 1.4 in the installed set-up 
122     const Float_t kSizeSupport2V[3]={0.,3.0,0.1}; 
123     const Float_t kSizeSupport2H[3]={0.,0.1,1.9}; 
124     const Float_t kSizeSupportXV[3]={0.,1.25,0.25}; 
125     const Float_t kSizeSupportXH[3]={0.,0.25,1.5}; 
126 // transverse dimensions of horizontal cable supports
127     const Float_t kSizeSupportCable[3]={0.,2.,3.}; 
128 // dimensions of gas pipes (inner and outer radius)
129     const Float_t kSizeGasPipe[3]={0.2,0.4,0.}; 
130 // Position of gas pipe with respect to angular support
131     const Float_t kOffsetGasPipe=0.75; 
132 // Small cut on some volumes to avoid extrusion from SC1x
133     const Float_t kAvoidExtrusion=2.7;    
134    
135     Float_t zpos1= AliMUONConstants::DefaultChamberZ(10); 
136     Double_t dstation =  ( ( - AliMUONConstants::DefaultChamberZ(11)) - 
137                            ( - AliMUONConstants::DefaultChamberZ(10)) ) /2.1;
138     Float_t par[3];
139     par[2] = dstation;
140
141 // ratio of zpos1m/zpos1p and inverse for first plane
142     Float_t zmp=(zpos1-3.6)/(zpos1+3.6);
143     Float_t zpm=1./zmp;
144     
145     Int_t icount=0;  // chamber counter (0 1 2 3)
146     
147     for (Int_t istation=0; istation<2; istation++) { // loop on stations
148         for (Int_t iplane=0; iplane<2; iplane++) { // loop on detection planes
149             
150             Int_t iVolNum=1; // counter Volume Number
151             icount = Int_t(iplane<<0)+Int_t(istation<<1);
152             
153             par[0] = AliMUONConstants::Rmin(5+istation); 
154             par[1] = AliMUONConstants::Rmax(5+istation);
155             Char_t volName[6];
156             sprintf(volName,"%s%d", "SC",11+icount);
157             gMC->Gsvolu(volName,"TUBE", idAir, par, 3);
158             //SetVolume(10+icount, volName);
159 //          Float_t zpos =  AliMUONConstants::DefaultChamberZ(10+icount);
160
161 /* removed 03/18/05
162 // Flange between beam shielding and RPC 
163             tpar[0]= kRMIN[istation];
164             tpar[1]= kRMAX[istation];
165             tpar[2]= 4.0;           
166             char volFlange[5];
167             sprintf(volFlange,"SF%dA",icount+1);         
168             gMC->Gsvolu(volFlange,"TUBE",idAlu1,tpar,3);     // Al
169             // changed by ivana
170             //gMC->Gspos(volFlange,1,"ALIC",0.,0.,zpos,0,"MANY");
171             iChamber->GetGeometry()->GetEnvelopeStore()
172               ->AddEnvelope(volFlange, 0, false, "MANY");
173 */
174             
175 // scaling factor
176 //          Float_t zRatio = zpos / zpos1;
177             Float_t zRatio = AliMUONConstants::DefaultRatioTriggerChamber(icount);                  
178
179
180
181     
182 // envelopes (same size except line 5, all virtual)
183             char volEnv[18][5];
184             tpar[1] = kYMIN * zRatio; 
185             tpar[2] = 0.4;
186             Int_t i=0;    // counter
187             for (Int_t icolumn=0; icolumn<2; icolumn++) {
188                 for (Int_t iline=1; iline<10; iline++){
189                     tpar[0] = (kXMAX/2.) * zRatio;
190                     if (iline==5) tpar[0] = ((kXMAX-kXMED)/2.)*zRatio;
191                     if (icolumn==0) 
192                         sprintf(volEnv[i],"S%dR%d",icount,iline);
193                     else
194                         sprintf(volEnv[i],"S%dL%d",icount,iline);
195                     // gMC->Gsvolu(volEnv[i],"BOX",idAir,tpar,0); 
196                     i++;
197                 }
198             }
199
200 // chamber prototype
201             tpar[0]= 0.;
202             tpar[1]= 0.;
203             tpar[2]= 0.;            char volAlu[5];     // Alu 
204             char volBak[5];     // Bakelite
205             char volGaz[5];     // Gas streamer     
206             sprintf(volAlu,"SC%dA",icount+1);
207             sprintf(volBak,"SB%dA",icount+1);
208             sprintf(volGaz,"S%dG",icount+11);
209             gMC->Gsvolu(volAlu,"BOX",idAlu1,tpar,0);         // Al
210             gMC->Gsvolu(volBak,"BOX",idtmed[1107],tpar,0);   // Bakelite
211             gMC->Gsvolu(volGaz,"BOX",idtmed[1106],tpar,0);   // Gas streamer
212             tpar[0] = -1.;
213             tpar[1] = -1.;
214             tpar[2] = 0.1;    
215             gMC->Gsposp(volGaz,1,volBak,0.,0.,0.,0,"ONLY",tpar,3);
216             tpar[2] = 0.3;
217             gMC->Gsposp(volBak,1,volAlu,0.,0.,0.,0,"ONLY",tpar,3);
218
219 // RPC supports (vertical)
220
221             char volAluSupport[5],volAirSupport[5];
222             sprintf(volAluSupport,"SAL%d",icount+1);
223             sprintf(volAirSupport,"SAI%d",icount+1);
224             char volEnvSupport[12][5];
225             for(Int_t jj=0;jj<2;jj++)
226             for(Int_t ii=0;ii<8;ii++){
227               sprintf(volEnvSupport[ii],"A%dV%d",icount+1,ii);
228             }
229             tpar[0]= 0.;
230             tpar[1]= 0.;
231             tpar[2]= 0.;            
232             gMC->Gsvolu(volAluSupport,"BOX",idAlu1,tpar,0);
233             gMC->Gsvolu(volAirSupport,"BOX",idAir,tpar,0);
234             tpar[0]=kSizeVSupInt[0];
235             tpar[1]=kSizeVSupInt[1];
236             tpar[2]=-1.;
237             gMC->Gsposp(volAirSupport,1,volAluSupport,0.,0.,0.,0,"ONLY",tpar,3);
238             
239             TGeoRotation rsupportv;
240             rsupportv.SetAngles(0.,90.,0.);
241             dpar[0]=kSizeVSupExt[0];
242             dpar[1]=kSizeVSupExt[1];
243             dpar[2]=kSizeVSupExt[2]*zRatio;
244             for(Int_t ii=0;ii<4;ii++){
245               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupport[ii], 0, true,
246               TGeoTranslation(-kYVSup[ii]*zRatio,0.,0.),rsupportv);
247               GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupport,volEnvSupport[ii],iVolNum++,3, dpar);
248             }       
249             for(Int_t ii=4;ii<8;ii++){
250               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupport[ii], 0, true,
251               TGeoTranslation(kYVSup[ii-4]*zRatio,0.,0.),rsupportv);
252               GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupport,volEnvSupport[ii],iVolNum++,3, dpar);
253             }   
254                 
255 // RPC supports (horizontal)
256
257 // supports for cables
258             char volAluSupportH[6],volAirSupportH[6];
259             sprintf(volAluSupportH,"SALH%d",icount+1);
260             sprintf(volAirSupportH,"SAIH%d",icount+1);
261             char volEnvSupportHA[6][7],volEnvSupportHBC[12][7],volEnvSupportHD[12][7],volEnvSupportHE[12][7],volEnvSupportHF[12][7];
262             for(Int_t jj=0;jj<2;jj++){
263               for(Int_t ii=0;ii<6;ii++){
264                 if(ii<3)sprintf(volEnvSupportHA[3*jj+ii],"A%dHA%d",icount+1,3*jj+ii);
265                 sprintf(volEnvSupportHBC[6*jj+ii],"A%dHB%d",icount+1,6*jj+ii);
266                 sprintf(volEnvSupportHD[6*jj+ii],"A%dHD%d",icount+1,6*jj+ii);
267                 sprintf(volEnvSupportHE[6*jj+ii],"A%dHE%d",icount+1,6*jj+ii);
268                 sprintf(volEnvSupportHF[6*jj+ii],"A%dHF%d",icount+1,6*jj+ii);
269               }
270             }
271             tpar[0]= 0.;
272             tpar[1]= 0.;
273             tpar[2]= 0.;            
274             gMC->Gsvolu(volAluSupportH,"BOX",idAlu1,tpar,0);
275             gMC->Gsvolu(volAirSupportH,"BOX",idAir,tpar,0);
276             tpar[0]=-1.;
277             tpar[1]=1.9;
278             tpar[2]=2.8;
279             gMC->Gsposp(volAirSupportH,1,volAluSupportH,0.,0.,0.,0,"ONLY",tpar,3);
280             
281 // Angular supports for chambers
282             char volAluAngSupport1V[6],volAluAngSupport1H[6];
283             sprintf(volAluAngSupport1H,"SA1H%d",icount+1);
284             sprintf(volAluAngSupport1V,"SA1V%d",icount+1);
285             char volAluAngSupport2V[6],volAluAngSupport2H[6];
286             sprintf(volAluAngSupport2H,"SA2H%d",icount+1);
287             sprintf(volAluAngSupport2V,"SA2V%d",icount+1);
288             char volAluAngSupport3V[6],volAluAngSupport3H[6];
289             sprintf(volAluAngSupport3H,"SA3H%d",icount+1);
290             sprintf(volAluAngSupport3V,"SA3V%d",icount+1);
291             char volAluAngSupport4V[6],volAluAngSupport4H[6];
292             sprintf(volAluAngSupport4H,"SA4H%d",icount+1);
293             sprintf(volAluAngSupport4V,"SA4V%d",icount+1);
294             char volAluAngSupportXV[6],volAluAngSupportXH[6];
295             sprintf(volAluAngSupportXH,"SAXH%d",icount+1);
296             sprintf(volAluAngSupportXV,"SAXV%d",icount+1);
297             char volEnvSuppAng1HA[2][6],volEnvSuppAng1HBC[4][6],volEnvSuppAng1HD[4][6],volEnvSuppAng1HE[4][6],volEnvSuppAng1HF[4][6];
298             char volEnvSuppAng1VA[2][6],volEnvSuppAng1VBC[4][6],volEnvSuppAng1VD[4][6],volEnvSuppAng1VE[4][6],volEnvSuppAng1VF[4][6];
299             char volEnvSuppAng2HA[2][6],volEnvSuppAng2HBC[4][6],volEnvSuppAng2HD[4][6],volEnvSuppAng2HE[4][6],volEnvSuppAng2HF[4][6];
300             char volEnvSuppAng2VA[2][6],volEnvSuppAng2VBC[4][6],volEnvSuppAng2VD[4][6],volEnvSuppAng2VE[4][6],volEnvSuppAng2VF[4][6];
301             char volEnvSuppAng3HA[2][6],volEnvSuppAng3HBC[4][6],volEnvSuppAng3HD[4][6],volEnvSuppAng3HE[4][6],volEnvSuppAng3HF[4][6];
302             char volEnvSuppAng3VA[2][6],volEnvSuppAng3VBC[4][6],volEnvSuppAng3VD[4][6],volEnvSuppAng3VE[4][6],volEnvSuppAng3VF[4][6];
303             char volEnvSuppAng4HA[2][6],volEnvSuppAng4HBC[4][6],volEnvSuppAng4HD[4][6],volEnvSuppAng4HE[4][6],volEnvSuppAng4HF[4][6];
304             char volEnvSuppAng4VA[2][6],volEnvSuppAng4VBC[4][6],volEnvSuppAng4VD[4][6],volEnvSuppAng4VE[4][6],volEnvSuppAng4VF[4][6];
305             char volEnvSuppAngXHA[2][6],volEnvSuppAngXHBC[4][6],volEnvSuppAngXHD[4][6],volEnvSuppAngXHE[4][6],volEnvSuppAngXHF[4][6];
306             char volEnvSuppAngXVA[2][6],volEnvSuppAngXVBC[4][6],volEnvSuppAngXVD[4][6],volEnvSuppAngXVE[4][6],volEnvSuppAngXVF[4][6];
307             for(Int_t ii=0;ii<4;ii++){
308               if(ii<2)sprintf(volEnvSuppAng1HA[ii],"H1%dA%d",icount+1,ii);
309               sprintf(volEnvSuppAng1HBC[ii],"H1%dB%d",icount+1,ii);
310               sprintf(volEnvSuppAng1HD[ii],"H1%dD%d",icount+1,ii);
311               sprintf(volEnvSuppAng1HE[ii],"H1%dE%d",icount+1,ii);
312               sprintf(volEnvSuppAng1HF[ii],"H1%dF%d",icount+1,ii);
313               if(ii<2)sprintf(volEnvSuppAng1VA[ii],"V1%dA%d",icount+1,ii);
314               sprintf(volEnvSuppAng1VBC[ii],"V1%dB%d",icount+1,ii);
315               sprintf(volEnvSuppAng1VD[ii],"V1%dD%d",icount+1,ii);
316               sprintf(volEnvSuppAng1VE[ii],"V1%dE%d",icount+1,ii);
317               sprintf(volEnvSuppAng1VF[ii],"V1%dF%d",icount+1,ii);
318               if(ii<2)sprintf(volEnvSuppAng2HA[ii],"H2%dA%d",icount+1,ii);
319               sprintf(volEnvSuppAng2HBC[ii],"H2%dB%d",icount+1,ii);
320               sprintf(volEnvSuppAng2HD[ii],"H2%dD%d",icount+1,ii);
321               sprintf(volEnvSuppAng2HE[ii],"H2%dE%d",icount+1,ii);
322               sprintf(volEnvSuppAng2HF[ii],"H2%dF%d",icount+1,ii);
323               if(ii<2)sprintf(volEnvSuppAng2VA[ii],"V2%dA%d",icount+1,ii);
324               sprintf(volEnvSuppAng2VBC[ii],"V2%dB%d",icount+1,ii);
325               sprintf(volEnvSuppAng2VD[ii],"V2%dD%d",icount+1,ii);
326               sprintf(volEnvSuppAng2VE[ii],"V2%dE%d",icount+1,ii);
327               sprintf(volEnvSuppAng2VF[ii],"V2%dF%d",icount+1,ii);
328               if(ii<2)sprintf(volEnvSuppAng3HA[ii],"H3%dA%d",icount+1,ii);
329               sprintf(volEnvSuppAng3HBC[ii],"H3%dB%d",icount+1,ii);
330               sprintf(volEnvSuppAng3HD[ii],"H3%dD%d",icount+1,ii);
331               sprintf(volEnvSuppAng3HE[ii],"H3%dE%d",icount+1,ii);
332               sprintf(volEnvSuppAng3HF[ii],"H3%dF%d",icount+1,ii);
333               if(ii<2)sprintf(volEnvSuppAng3VA[ii],"V3%dA%d",icount+1,ii);
334               sprintf(volEnvSuppAng3VBC[ii],"V3%dB%d",icount+1,ii);
335               sprintf(volEnvSuppAng3VD[ii],"V3%dD%d",icount+1,ii);
336               sprintf(volEnvSuppAng3VE[ii],"V3%dE%d",icount+1,ii);
337               sprintf(volEnvSuppAng3VF[ii],"V3%dF%d",icount+1,ii);
338               if(ii<2)sprintf(volEnvSuppAng4HA[ii],"H4%dA%d",icount+1,ii);
339               sprintf(volEnvSuppAng4HBC[ii],"H4%dB%d",icount+1,ii);
340               sprintf(volEnvSuppAng4HD[ii],"H4%dD%d",icount+1,ii);
341               sprintf(volEnvSuppAng4HE[ii],"H4%dE%d",icount+1,ii);
342               sprintf(volEnvSuppAng4HF[ii],"H4%dF%d",icount+1,ii);
343               if(ii<2)sprintf(volEnvSuppAng4VA[ii],"V4%dA%d",icount+1,ii);
344               sprintf(volEnvSuppAng4VBC[ii],"V4%dB%d",icount+1,ii);
345               sprintf(volEnvSuppAng4VD[ii],"V4%dD%d",icount+1,ii);
346               sprintf(volEnvSuppAng4VE[ii],"V4%dE%d",icount+1,ii);
347               sprintf(volEnvSuppAng4VF[ii],"V4%dF%d",icount+1,ii);
348               if(ii<2)sprintf(volEnvSuppAngXHA[ii],"HX%dA%d",icount+1,ii);
349               sprintf(volEnvSuppAngXHBC[ii],"HX%dB%d",icount+1,ii);
350               sprintf(volEnvSuppAngXHD[ii],"HX%dD%d",icount+1,ii);
351               sprintf(volEnvSuppAngXHE[ii],"HX%dE%d",icount+1,ii);
352               sprintf(volEnvSuppAngXHF[ii],"HX%dF%d",icount+1,ii);
353               if(ii<2)sprintf(volEnvSuppAngXVA[ii],"VX%dA%d",icount+1,ii);
354               sprintf(volEnvSuppAngXVBC[ii],"VX%dB%d",icount+1,ii);
355               sprintf(volEnvSuppAngXVD[ii],"VX%dD%d",icount+1,ii);
356               sprintf(volEnvSuppAngXVE[ii],"VX%dE%d",icount+1,ii);
357               sprintf(volEnvSuppAngXVF[ii],"VX%dF%d",icount+1,ii);
358             }
359             tpar[0]= 0.;
360             tpar[1]= 0.;
361             tpar[2]= 0.;            
362             gMC->Gsvolu(volAluAngSupport1V,"BOX",idAlu1,tpar,0);
363             gMC->Gsvolu(volAluAngSupport1H,"BOX",idAlu1,tpar,0);
364             gMC->Gsvolu(volAluAngSupport2V,"BOX",idAlu1,tpar,0);
365             gMC->Gsvolu(volAluAngSupport2H,"BOX",idAlu1,tpar,0);
366             gMC->Gsvolu(volAluAngSupport3V,"BOX",idAlu1,tpar,0);
367             gMC->Gsvolu(volAluAngSupport3H,"BOX",idAlu1,tpar,0);
368             gMC->Gsvolu(volAluAngSupport4V,"BOX",idAlu1,tpar,0);
369             gMC->Gsvolu(volAluAngSupport4H,"BOX",idAlu1,tpar,0);
370             gMC->Gsvolu(volAluAngSupportXV,"BOX",idAlu1,tpar,0);
371             gMC->Gsvolu(volAluAngSupportXH,"BOX",idAlu1,tpar,0);
372             
373 // gas pipes
374             char volInoxGasPipe[6];
375             sprintf(volInoxGasPipe,"PINO%d",icount+1);
376             char volEnvInoxGasPipe1A[2][6],volEnvInoxGasPipe1BC[4][7],volEnvInoxGasPipe1D[4][6],volEnvInoxGasPipe1E[4][6],volEnvInoxGasPipe1F[4][6];
377             char volEnvInoxGasPipe2A[2][6],volEnvInoxGasPipe2BC[4][7],volEnvInoxGasPipe2D[4][6],volEnvInoxGasPipe2E[4][6],volEnvInoxGasPipe2F[4][6];
378             for(Int_t ii=0;ii<4;ii++){
379               if(ii<2)sprintf(volEnvInoxGasPipe1A[ii],"P1%dA%d",icount+1,ii);
380               sprintf(volEnvInoxGasPipe1BC[ii],"P1%dBC%d",icount+1,ii);
381               sprintf(volEnvInoxGasPipe1D[ii],"P1%dD%d",icount+1,ii);
382               sprintf(volEnvInoxGasPipe1E[ii],"P1%dE%d",icount+1,ii);
383               sprintf(volEnvInoxGasPipe1F[ii],"P1%dF%d",icount+1,ii);
384             }
385             for(Int_t ii=0;ii<4;ii++){
386               if(ii<2)sprintf(volEnvInoxGasPipe2A[ii],"P2%dA%d",icount+1,ii);
387               sprintf(volEnvInoxGasPipe2BC[ii],"P2%dBC%d",icount+1,ii);
388               sprintf(volEnvInoxGasPipe2D[ii],"P2%dD%d",icount+1,ii);
389               sprintf(volEnvInoxGasPipe2E[ii],"P2%dE%d",icount+1,ii);
390               sprintf(volEnvInoxGasPipe2F[ii],"P2%dF%d",icount+1,ii);
391             }
392             tpar[0]= 0.;
393             tpar[1]= 0.;
394             tpar[2]= 0.;            
395             gMC->Gsvolu(volInoxGasPipe,"TUBE",idInox,tpar,0);
396             TGeoRotation rsupportpipe;
397             rsupportpipe.SetAngles(90.,90.,0.);
398            
399
400 // chamber type A
401             Float_t xEnv = (kDXZERO+kXMED+(kXMAX-kXMED)/2.)*zRatio;
402             Float_t yEnvM = 0.;  // y low position of envelope in chamber
403             Float_t yEnvP = 0.;  // y up position of envelope in chamber
404             Float_t yEnvPsave = 0.; // tmp data
405             Float_t yEnvMsave = 0.; // tmp data
406             Float_t xpos = 0.; // x position of RPC in envelope     
407             Float_t ypos = 0.; // y position of RPC in envelope
408             dpar[2] = 0.4;          
409             dpar[0] = ((kXMAX-kXMED)/2.)*zRatio;
410             dpar[1] = kYMIN * zRatio;
411
412             detElemId = (10+icount+1)*100;
413             GetEnvelopes(16+icount)->AddEnvelope(volEnv[4], detElemId, true, TGeoTranslation(xEnv,yEnvP,kZp));
414             detElemId = (10+icount+1)*100+9;
415             GetEnvelopes(16+icount)->AddEnvelope(volEnv[13], detElemId, true, TGeoTranslation(-xEnv,yEnvM,kZm),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
416
417             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[4],iVolNum++,3, dpar);
418             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[13],iVolNum++,3, dpar);      
419
420 // horizontal cable support chamber type A
421
422             spar[0]=((kXMAX/2)-kYVSup[0]/2.)*zRatio;
423             spar[1]=kSizeSupportCable[1];
424             spar[2]=kSizeSupportCable[2];
425             Float_t offsetSuppA = ((kXMAX-kXMED)/2.)*zRatio-(((kXMAX/2)-kYVSup[0]/2.)*zRatio);
426             for(Int_t in=0;in<3;in++){
427               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHA[in], 0, true,
428               TGeoTranslation(xEnv+offsetSuppA/2.,yEnvP+dpar[1]/2.*(in-1),-(kSizeVSupExt[0]+spar[2])));
429               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHA[in+3], 0, true,
430               TGeoTranslation(-(xEnv+offsetSuppA/2.),yEnvM+dpar[1]/2.*(in-1),kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
431             }
432             for(Int_t ii=0;ii<6;ii++) 
433             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHA[ii],iVolNum++,3, spar);
434             
435 // angular supports chamber type A
436 // 1 vertical      
437  
438             spar[0]=dpar[0];
439             spar[1]=kSizeSupport1V[1];
440             spar[2]=kSizeSupport1V[2];
441             Float_t sparysave=spar[1];
442             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VA[0], 0, true,
443             TGeoTranslation(xEnv,yEnvP-dpar[1],kZp+dpar[2]+spar[2]/2.));
444             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VA[1], 0, true,
445             TGeoTranslation(-xEnv,yEnvM-dpar[1],kZm-dpar[2]-spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
446
447             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VA[0],iVolNum++,3, spar);
448             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VA[1],iVolNum++,3, spar);         
449
450 // 1 horizontal    
451  
452             spar[0]=dpar[0];
453             spar[1]=kSizeSupport1H[1];
454             spar[2]=kSizeSupport1H[2];
455             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HA[0], 0, true,
456             TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2]));
457             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HA[1], 0, true,
458             TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
459
460             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HA[0],iVolNum++,3, spar);
461             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HA[1],iVolNum++,3, spar);         
462
463 // gas pipe (low)
464             ppar[0]=kSizeGasPipe[0];
465             ppar[1]=kSizeGasPipe[1];
466             ppar[2]=dpar[0];
467             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1A[0], 0, true,
468             TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe);
469             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1A[1], 0, true,
470             TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe);
471             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1A[0],iVolNum++,3, ppar);
472             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1A[1],iVolNum++,3, ppar);
473
474 // 2 vertical      
475  
476             spar[0]=dpar[0];
477             spar[1]=kSizeSupport2V[1];
478             spar[2]=kSizeSupport2V[2];
479             sparysave=spar[1];
480             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VA[0], 0, true,
481             TGeoTranslation(xEnv,yEnvP-dpar[1],kSizeVSupExt[0]+spar[2]));
482             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VA[1], 0, true,
483             TGeoTranslation(-xEnv,yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
484
485             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VA[0],iVolNum++,3, spar);
486             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VA[1],iVolNum++,3, spar);         
487
488 // 2 horizontal    
489  
490             spar[0]=dpar[0];
491             spar[1]=kSizeSupport2H[1];
492             spar[2]=kSizeSupport2H[2]; 
493             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HA[0], 0, true,
494             TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2]));
495             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HA[1], 0, true,
496             TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
497
498             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HA[0],iVolNum++,3, spar);
499             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HA[1],iVolNum++,3, spar);         
500
501 // 3 vertical      
502  
503             spar[0]=dpar[0];
504             spar[1]=kSizeSupport1V[1];
505             spar[2]=kSizeSupport1V[2];
506             sparysave=spar[1];
507             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VA[0], 0, true,
508             TGeoTranslation(xEnv,yEnvP+dpar[1],kZp+dpar[2]+spar[2]/2.));
509             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VA[1], 0, true,
510             TGeoTranslation(-xEnv,yEnvM+dpar[1],kZm-dpar[2]-spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
511
512             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VA[0],iVolNum++,3, spar);
513             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VA[1],iVolNum++,3, spar);         
514
515 // 3 horizontal    
516  
517             spar[0]=dpar[0];
518             spar[1]=kSizeSupport1H[1];
519             spar[2]=kSizeSupport1H[2];
520             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HA[0], 0, true,
521             TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2]));
522             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HA[1], 0, true,
523             TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
524
525             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HA[0],iVolNum++,3, spar);
526             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HA[1],iVolNum++,3, spar);     
527                 
528 // gas pipe (high)
529             ppar[0]=kSizeGasPipe[0];
530             ppar[1]=kSizeGasPipe[1];
531             ppar[2]=dpar[0];
532             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2A[0], 0, true,
533             TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe);
534             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2A[1], 0, true,
535             TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe);
536             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2A[0],iVolNum++,3, ppar);
537             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2A[1],iVolNum++,3, ppar);
538
539 // 4 vertical      
540  
541             spar[0]=dpar[0];
542             spar[1]=kSizeSupport2V[1];
543             spar[2]=kSizeSupport2V[2];
544             sparysave=spar[1];
545             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VA[0], 0, true,
546             TGeoTranslation(xEnv,yEnvP+dpar[1],kSizeVSupExt[0]+spar[2]));
547             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VA[1], 0, true,
548             TGeoTranslation(-xEnv,yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
549
550             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VA[0],iVolNum++,3, spar);
551             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VA[1],iVolNum++,3, spar);         
552
553 // 4 horizontal    
554  
555             spar[0]=dpar[0];
556             spar[1]=kSizeSupport2H[1];
557             spar[2]=kSizeSupport2H[2];
558             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HA[0], 0, true,
559             TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2]));
560             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HA[1], 0, true,
561             TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
562
563             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HA[0],iVolNum++,3, spar);
564             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HA[1],iVolNum++,3, spar);         
565
566 // X horizontal    
567             spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio;
568             spar[1]=kSizeSupportXH[1];
569             spar[2]=kSizeSupportXH[2];
570             Float_t sparysavex=spar[1];
571             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHA[0], 0, true,
572             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0,kSizeVSupExt[0]+spar[2]));
573             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHA[1], 0, true,
574             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
575
576             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHA[0],iVolNum++,3, spar);         
577             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHA[1],iVolNum++,3, spar);         
578
579 // X vertical      
580             spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio;
581             spar[1]=kSizeSupportXV[1];
582             spar[2]=kSizeSupportXV[2];
583             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVA[0], 0, true,
584             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],kSizeVSupExt[0]+spar[2]));
585             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVA[1], 0, true,
586             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
587
588             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVA[0],iVolNum++,3, spar);         
589             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVA[1],iVolNum++,3, spar);         
590
591 // chamber type B (plus envelope chambers B & C)   
592             xEnv = (kDXZERO+kXMAX/2.)*zRatio;
593             yEnvPsave = yEnvP;
594             yEnvMsave = yEnvM;
595             yEnvP = (yEnvMsave + kYMIN * zRatio ) * zpm + kYMIN * zRatio;
596             yEnvM = (yEnvPsave + kYMIN * zRatio ) * zmp + kYMIN * zRatio;
597             dpar[0] = ((kXMAX-kXMIN)/2.) * zRatio;
598             dpar[1] = ((kYMAX-kYMIN)/2.) * zRatio;
599             Float_t dysave = dpar[1];
600             Float_t dxsave = dpar[0];
601             xpos = kXMIN/2. * zRatio;
602             ypos = (kYMIN - kYMIN/4.) * zRatio;
603             Float_t xpossave = xpos;
604
605             detElemId = (10+icount+1)*100+17;
606             GetEnvelopes(16+icount)->AddEnvelope(volEnv[3], detElemId, true, TGeoTranslation( xEnv,-yEnvM,kZm));            
607             detElemId = (10+icount+1)*100+1;
608             GetEnvelopes(16+icount)->AddEnvelope(volEnv[5], detElemId, true, TGeoTranslation( xEnv, yEnvM,kZm));
609             detElemId = (10+icount+1)*100+10;
610             GetEnvelopes(16+icount)->AddEnvelope(volEnv[12], detElemId, true, TGeoTranslation(-xEnv,-yEnvP,kZp),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
611             detElemId = (10+icount+1)*100+8;
612             GetEnvelopes(16+icount)->AddEnvelope(volEnv[14], detElemId, true, TGeoTranslation(-xEnv, yEnvP,kZp),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
613
614             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[3],iVolNum++,TGeoTranslation(xpos, ypos,0.),3,dpar);
615             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[5],iVolNum++,TGeoTranslation(xpos,-ypos,0.),3,dpar);
616             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[12],iVolNum++,TGeoTranslation(xpos, ypos,0.),3,dpar);
617             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[14],iVolNum++,TGeoTranslation(xpos,-ypos,0.),3,dpar);
618
619                     
620 // chamber type C (note: same Z than type B)
621             dpar[0] = (kXMAX/2)*zRatio;
622             dpar[1] = (kYMAX/2)*zRatio;
623             xpos = 0.;      
624             ypos = ((kYMAX - kYMIN)/2.) * zRatio;
625
626             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[3],iVolNum++,TGeoTranslation(xpos,-ypos,0.),3,dpar);
627             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[5],iVolNum++,TGeoTranslation(xpos, ypos,0.),3,dpar);
628             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[12],iVolNum++,TGeoTranslation(xpos,-ypos,0.),3,dpar);
629             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[14],iVolNum++,TGeoTranslation(xpos, ypos,0.),3,dpar);
630
631 // horizontal cable support chamber type B+C
632
633             spar[0]=dpar[0]-kYVSup[0]/2.;
634             spar[1]=kSizeSupportCable[1];
635             spar[2]=kSizeSupportCable[2];
636             for(Int_t in=0;in<3;in++){
637               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHBC[in], 0, true, TGeoTranslation(xEnv+kYVSup[0]/2.*zRatio,-(yEnvM+(kYMAX-kYMIN/2.*zRatio)/2.*(in-1)),kSizeVSupExt[0]+spar[2]));
638               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHBC[in+3], 0, true, TGeoTranslation(xEnv+kYVSup[0]/2.*zRatio, yEnvM+(kYMAX-kYMIN/2.*zRatio)/2.*(in-1),kSizeVSupExt[0]+spar[2]));
639               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHBC[in+6], 0, true, TGeoTranslation(-(xEnv+kYVSup[0]/2.*zRatio),-(yEnvP+(kYMAX-kYMIN/2.*zRatio)/2.*(in-1)),-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
640               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHBC[in+9], 0, true, TGeoTranslation(-(xEnv+kYVSup[0]/2.*zRatio), yEnvP+(kYMAX-kYMIN/2.*zRatio)/2.*(in-1),-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
641             }
642             for(Int_t ii=0;ii<12;ii++) 
643             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHBC[ii],iVolNum++,3, spar);
644
645 // angular supports chamber type B and C
646 // C       
647 // 1 vertical
648             spar[0]=dpar[0];
649             spar[1]=kSizeSupport1V[1];
650             spar[2]=kSizeSupport1V[2];
651             sparysave=spar[1];
652
653             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VBC[0], 0, true,
654             TGeoTranslation(xEnv,-yEnvM-dpar[1]-dysave,kZm-dpar[2]-spar[2]/2.));
655             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VBC[2], 0, true,
656             TGeoTranslation(-xEnv,-yEnvP-dpar[1]-dysave,kZp+dpar[2]+spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
657             
658             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VBC[0],iVolNum++,3, spar);
659             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VBC[2],iVolNum++,3, spar);
660
661 // 1 horizontal
662             spar[0]=dpar[0];
663             spar[1]=kSizeSupport1H[1];
664             spar[2]=kSizeSupport1H[2];
665             
666             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HBC[0], 0, true,
667             TGeoTranslation(xEnv,-yEnvM-dpar[1]-dysave-sparysave,kZm-(dpar[2]-spar[2])));
668             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HBC[2], 0, true,
669             TGeoTranslation(-xEnv,-yEnvP-dpar[1]-dysave-sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
670
671             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HBC[0],iVolNum++,3, spar);
672             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HBC[2],iVolNum++,3, spar);        
673
674 // gas pipe (low)
675             ppar[0]=kSizeGasPipe[0];
676             ppar[1]=kSizeGasPipe[1];
677             ppar[2]=dpar[0];
678             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1BC[0], 0, true,
679             TGeoTranslation(xEnv,-yEnvM-dpar[1]-dysave-sparysave-kOffsetGasPipe,kZm),rsupportpipe);
680             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1BC[2], 0, true,
681             TGeoTranslation(-xEnv,-yEnvP-dpar[1]-dysave-sparysave-kOffsetGasPipe,kZp),rsupportpipe);
682             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1BC[0],iVolNum++,3, ppar);
683             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1BC[2],iVolNum++,3, ppar);
684
685 // 2 vertical      
686             spar[0]=dpar[0];
687             spar[1]=kSizeSupport2V[1];
688             spar[2]=kSizeSupport2V[2];
689             sparysave=spar[1];
690             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VBC[0], 0, true,
691             TGeoTranslation(xEnv,-yEnvM-dpar[1]-dysave,-(kSizeVSupExt[0]+spar[2])));
692             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VBC[2], 0, true,
693             TGeoTranslation(-xEnv,-yEnvP-dpar[1]-dysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
694             
695             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VBC[0],iVolNum++,3, spar);        
696             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VBC[2],iVolNum++,3, spar);        
697
698 // 2 horizontal    
699             spar[0]=dpar[0];
700             spar[1]=kSizeSupport2H[1];
701             spar[2]=kSizeSupport2H[2];
702             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HBC[0], 0, true,
703             TGeoTranslation(xEnv,-yEnvM-dpar[1]-dysave-sparysave,-(kSizeVSupExt[0]+spar[2])));
704             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HBC[2], 0, true,
705             TGeoTranslation(-xEnv,-yEnvP-dpar[1]-dysave-sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
706
707             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HBC[0],iVolNum++,3, spar);        
708             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HBC[2],iVolNum++,3, spar);        
709
710 // 3 vertical
711             spar[0]=dxsave-kAvoidExtrusion;
712             spar[1]=kSizeSupport1V[1];
713             spar[2]=kSizeSupport1V[2];
714             sparysave=spar[1];
715
716             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VBC[0], 0, true,
717             TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+dysave,kZm-dpar[2]-spar[2]/2.));
718             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VBC[2], 0, true,
719             TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+dysave,kZp+dpar[2]+spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
720             
721             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VBC[0],iVolNum++,3, spar);
722             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VBC[2],iVolNum++,3, spar);
723
724 // 3 horizontal
725             spar[0]=dxsave-kAvoidExtrusion;
726             spar[1]=kSizeSupport1H[1];
727             spar[2]=kSizeSupport1H[2];
728             
729             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HBC[0], 0, true,
730             TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+dysave+sparysave,kZm-(dpar[2]-spar[2])));
731             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HBC[2], 0, true,
732             TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+dysave+sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
733
734             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HBC[0],iVolNum++,3, spar);
735             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HBC[2],iVolNum++,3, spar);        
736                 
737 // gas pipe (high)
738             ppar[0]=kSizeGasPipe[0];
739             ppar[1]=kSizeGasPipe[1];
740             ppar[2]=dxsave-kAvoidExtrusion;
741             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2BC[0], 0, true,
742             TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+dysave+sparysave+kOffsetGasPipe,kZm),rsupportpipe);
743             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2BC[2], 0, true,
744             TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+dysave+sparysave+kOffsetGasPipe,kZp),rsupportpipe);
745             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2BC[0],iVolNum++,3, ppar);
746             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2BC[2],iVolNum++,3, ppar);
747
748 // 4 vertical      
749             spar[0]=dxsave-kAvoidExtrusion;
750             spar[1]=kSizeSupport2V[1];
751             spar[2]=kSizeSupport2V[2];
752             sparysave=spar[1];
753             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VBC[0], 0, true,
754             TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+dysave,-(kSizeVSupExt[0]+spar[2])));
755             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VBC[2], 0, true,
756             TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+dysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
757             
758             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VBC[0],iVolNum++,3, spar);        
759             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VBC[2],iVolNum++,3, spar);        
760
761 // 4 horizontal    
762             spar[0]=dxsave-kAvoidExtrusion;
763             spar[1]=kSizeSupport2H[1];
764             spar[2]=kSizeSupport2H[2];
765             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HBC[0], 0, true,
766             TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+dysave+sparysave,-(kSizeVSupExt[0]+spar[2])));
767             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HBC[2], 0, true,
768             TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+dysave+sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
769
770             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HBC[0],iVolNum++,3, spar);        
771             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HBC[2],iVolNum++,3, spar);        
772
773 // X horizontal    
774             spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio;
775             spar[1]=kSizeSupportXH[1];
776             spar[2]=kSizeSupportXH[2];
777             sparysavex=spar[1];
778             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHBC[0], 0, true,
779             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvM+dpar[1]+dysave+sparysave+1.0,-(kSizeVSupExt[0]+spar[2])));
780             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHBC[2], 0, true,
781             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),-yEnvP+dpar[1]+dysave+sparysave+1.0,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
782
783             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHBC[0],iVolNum++,3, spar);        
784             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHBC[2],iVolNum++,3, spar);        
785
786 // X vertical      
787             spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio;
788             spar[1]=kSizeSupportXV[1];
789             spar[2]=kSizeSupportXV[2];
790             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVBC[0], 0, true,
791             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvM+dpar[1]+dysave+sparysave+1.0+sparysavex+spar[1],-(kSizeVSupExt[0]+spar[2])));
792             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVBC[2], 0, true,
793             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),-yEnvP+dpar[1]+dysave+sparysave+1.0+sparysavex+spar[1],kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
794
795             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVBC[0],iVolNum++,3, spar);        
796             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVBC[2],iVolNum++,3, spar);        
797
798 // B
799 // 1 vertical
800             spar[0]=dxsave-kAvoidExtrusion;
801             spar[1]=kSizeSupport1V[1];
802             spar[2]=kSizeSupport1V[2];
803             sparysave=spar[1];
804             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VBC[1], 0, true,
805             TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-dysave,kZm-dpar[2]-spar[2]/2.));
806             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VBC[3], 0, true,
807             TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-dysave,kZp+dpar[2]+spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
808             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VBC[1],iVolNum++,3, spar);
809             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VBC[3],iVolNum++,3, spar);
810
811
812 // 1 horizontal
813             spar[0]=dxsave-kAvoidExtrusion;
814             spar[1]=kSizeSupport1H[1];
815             spar[2]=kSizeSupport1H[2];
816             
817             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HBC[1], 0, true,
818             TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-dysave-sparysave,kZm-(dpar[2]-spar[2])));
819             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HBC[3], 0, true,
820             TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-dysave-sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
821
822             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HBC[1],iVolNum++,3, spar);
823             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HBC[3],iVolNum++,3, spar);        
824
825 // gas pipe (low)
826             ppar[0]=kSizeGasPipe[0];
827             ppar[1]=kSizeGasPipe[1];
828             ppar[2]=dxsave-kAvoidExtrusion;
829             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1BC[1], 0, true,
830             TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-dysave-sparysave-kOffsetGasPipe,kZm),rsupportpipe);
831             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1BC[3], 0, true,
832             TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-dysave-sparysave-kOffsetGasPipe,kZp),rsupportpipe);
833             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1BC[1],iVolNum++,3, ppar);
834             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1BC[3],iVolNum++,3, ppar);
835
836 // 2 vertical      
837             spar[0]=dxsave-kAvoidExtrusion;
838             spar[1]=kSizeSupport2V[1];
839             spar[2]=kSizeSupport2V[2];
840             sparysave=spar[1];
841             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VBC[1], 0, true,
842             TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-dysave,-(kSizeVSupExt[0]+spar[2])));
843             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VBC[3], 0, true,
844             TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-dysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
845             
846             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VBC[1],iVolNum++,3, spar);        
847             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VBC[3],iVolNum++,3, spar);        
848
849 // 2 horizontal    
850             spar[0]=dxsave-kAvoidExtrusion;
851             spar[1]=kSizeSupport2H[1];
852             spar[2]=kSizeSupport2H[2];
853             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HBC[1], 0, true,
854             TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-dysave-sparysave,-(kSizeVSupExt[0]+spar[2])));
855             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HBC[3], 0, true,
856             TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-dysave-sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
857
858             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HBC[1],iVolNum++,3, spar);        
859             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HBC[3],iVolNum++,3, spar);        
860
861 // 3 vertical
862             spar[0]=dpar[0];
863             spar[1]=kSizeSupport1V[1];
864             spar[2]=kSizeSupport1V[2];
865             sparysave=spar[1];
866             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VBC[1], 0, true,
867             TGeoTranslation(xEnv,yEnvM+dpar[1]+dysave,kZm-dpar[2]-spar[2]/2.));
868             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VBC[3], 0, true,
869             TGeoTranslation(-xEnv,yEnvP+dpar[1]+dysave,kZp+dpar[2]+spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
870             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VBC[1],iVolNum++,3, spar);
871             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VBC[3],iVolNum++,3, spar);
872
873 // 3 horizontal
874             spar[1]=kSizeSupport1H[1];
875             spar[2]=kSizeSupport1H[2];
876             
877             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HBC[1], 0, true,
878             TGeoTranslation(xEnv,yEnvM+dpar[1]+dysave+sparysave,kZm-(dpar[2]-spar[2])));
879             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HBC[3], 0, true,
880             TGeoTranslation(-xEnv,yEnvP+dpar[1]+dysave+sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
881
882             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HBC[1],iVolNum++,3, spar);
883             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HBC[3],iVolNum++,3, spar);        
884
885 // gas pipe (high)
886             ppar[0]=kSizeGasPipe[0];
887             ppar[1]=kSizeGasPipe[1];
888             ppar[2]=dpar[0];
889             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2BC[1], 0, true,
890             TGeoTranslation(xEnv,yEnvM+dpar[1]+dysave+sparysave+kOffsetGasPipe,kZm),rsupportpipe);
891             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2BC[3], 0, true,
892             TGeoTranslation(-xEnv,yEnvP+dpar[1]+dysave+sparysave+kOffsetGasPipe,kZp),rsupportpipe);
893             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2BC[1],iVolNum++,3, ppar);
894             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2BC[3],iVolNum++,3, ppar);
895
896 // 4 vertical      
897             spar[0]=dpar[0];
898             spar[1]=kSizeSupport2V[1];
899             spar[2]=kSizeSupport2V[2];
900             sparysave=spar[1];
901             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VBC[1], 0, true,
902             TGeoTranslation(xEnv,yEnvM+dpar[1]+dysave,-(kSizeVSupExt[0]+spar[2])));
903             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VBC[3], 0, true,
904             TGeoTranslation(-xEnv,yEnvP+dpar[1]+dysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
905             
906             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VBC[1],iVolNum++,3, spar);        
907             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VBC[3],iVolNum++,3, spar);        
908
909 // 4 horizontal    
910             spar[1]=kSizeSupport2H[1];
911             spar[2]=kSizeSupport2H[2];
912             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HBC[1], 0, true,
913             TGeoTranslation(xEnv,yEnvM+dpar[1]+dysave+sparysave,-(kSizeVSupExt[0]+spar[2])));
914             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HBC[3], 0, true,
915             TGeoTranslation(-xEnv,yEnvP+dpar[1]+dysave+sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
916
917             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HBC[1],iVolNum++,3, spar);        
918             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HBC[3],iVolNum++,3, spar);        
919
920 // X horizontal    
921             spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio;
922             spar[1]=kSizeSupportXH[1];
923             spar[2]=kSizeSupportXH[2];
924             sparysavex=spar[1];
925             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHBC[1], 0, true,
926             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvM+dpar[1]+dysave+sparysave+1.0,-(kSizeVSupExt[0]+spar[2])));
927             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHBC[3], 0, true,
928             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),yEnvP+dpar[1]+dysave+sparysave+1.0,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
929
930             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHBC[1],iVolNum++,3, spar);        
931             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHBC[3],iVolNum++,3, spar);        
932
933 // X vertical      
934             spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio;
935             spar[1]=kSizeSupportXV[1];
936             spar[2]=kSizeSupportXV[2];
937             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVBC[1], 0, true,
938             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvM+dpar[1]+dysave+sparysave+1.0+sparysavex+spar[1],-(kSizeVSupExt[0]+spar[2])));
939             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVBC[3], 0, true,
940             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),yEnvP+dpar[1]+dysave+sparysave+1.0+sparysavex+spar[1],kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
941
942             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVBC[1],iVolNum++,3, spar);        
943             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVBC[3],iVolNum++,3, spar);        
944
945
946 // chamber type D, E and F (same size)
947 // D        
948             yEnvPsave = yEnvP;
949             yEnvMsave = yEnvM;
950             yEnvP = (yEnvMsave + kYMIN * zRatio ) * zpm + kYMIN * zRatio;
951             yEnvM = (yEnvPsave + kYMIN * zRatio ) * zmp + kYMIN * zRatio;
952             dpar[0] = (kXMAX/2.)*zRatio;
953             dpar[1] =  kYMIN*zRatio;
954
955             detElemId = (10+icount+1)*100+16;
956             GetEnvelopes(16+icount)->AddEnvelope(volEnv[2], detElemId, true, TGeoTranslation(xEnv,-yEnvP,kZp));
957             detElemId = (10+icount+1)*100+2;
958             GetEnvelopes(16+icount)->AddEnvelope(volEnv[6], detElemId, true, TGeoTranslation(xEnv, yEnvP,kZp));
959             detElemId = (10+icount+1)*100+11;
960             GetEnvelopes(16+icount)->AddEnvelope(volEnv[11], detElemId, true, TGeoTranslation(-xEnv,-yEnvM,kZm),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
961             detElemId = (10+icount+1)*100+7;
962             GetEnvelopes(16+icount)->AddEnvelope(volEnv[15], detElemId, true, TGeoTranslation(-xEnv, yEnvM,kZm),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
963
964             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[2],iVolNum++,3, dpar);
965             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[6],iVolNum++,3, dpar);
966             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[11],iVolNum++,3, dpar);
967             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[15],iVolNum++,3, dpar);
968
969 // horizontal cable support chamber type D
970
971             spar[0]=dpar[0]-(kYVSup[0]/2.)*zRatio;
972             spar[1]=kSizeSupportCable[1];
973             spar[2]=kSizeSupportCable[2];
974             for(Int_t in=0;in<3;in++){
975               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHD[in], 0, true, TGeoTranslation(xEnv+kYVSup[0]/2.*zRatio,-(yEnvP+dpar[1]/2.*(in-1)),-(kSizeVSupExt[0]+spar[2])));
976               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHD[in+3], 0, true, TGeoTranslation(xEnv+kYVSup[0]/2.*zRatio, yEnvP+dpar[1]/2.*(in-1),-(kSizeVSupExt[0]+spar[2])));
977               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHD[in+6], 0, true, TGeoTranslation(-(xEnv+kYVSup[0]/2.*zRatio),-(yEnvM+dpar[1]/2.*(in-1)),kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
978               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHD[in+9], 0, true, TGeoTranslation(-(xEnv+kYVSup[0]/2.*zRatio),yEnvM+dpar[1]/2.*(in-1),kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
979             }
980             for(Int_t ii=0;ii<12;ii++) 
981             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHD[ii],iVolNum++,3, spar);
982             
983 // angular supports chamber type D
984 // 1 vertical      
985  
986             spar[0]=dpar[0];
987             spar[1]=kSizeSupport1V[1];
988             spar[2]=kSizeSupport1V[2];
989             sparysave=spar[1];
990             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VD[0], 0, true,
991             TGeoTranslation(xEnv,-yEnvP-dpar[1],kZp+dpar[2]+spar[2]/2.));
992             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VD[1], 0, true,
993             TGeoTranslation(xEnv,yEnvP-dpar[1],kZp+dpar[2]+spar[2]/2.));
994             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VD[2], 0, true,
995             TGeoTranslation(-xEnv,-yEnvM-dpar[1],kZm-dpar[2]-spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
996             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VD[3], 0, true,
997             TGeoTranslation(-xEnv,yEnvM-dpar[1],kZm-dpar[2]-spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
998
999             for(Int_t i=0;i<4;i++)
1000             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VD[i],iVolNum++,3, spar);
1001
1002
1003 // 1 horizontal    
1004  
1005             spar[0]=dpar[0];
1006             spar[1]=kSizeSupport1H[1];
1007             spar[2]=kSizeSupport1H[2];
1008             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HD[0], 0, true,
1009             TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2]));
1010             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HD[1], 0, true,
1011             TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2]));
1012             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HD[2], 0, true,
1013             TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1014             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HD[3], 0, true,
1015             TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1016
1017             for(Int_t i=0;i<4;i++)
1018             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HD[i],iVolNum++,3, spar);
1019
1020 // gas pipe (low)
1021             ppar[0]=kSizeGasPipe[0];
1022             ppar[1]=kSizeGasPipe[1];
1023             ppar[2]=dpar[0];
1024             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1D[0], 0, true,
1025             TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe);
1026             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1D[1], 0, true,
1027             TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe);
1028             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1D[2], 0, true,
1029             TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe);
1030             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1D[3], 0, true,
1031             TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe);
1032
1033             for(Int_t i=0;i<4;i++)
1034             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1D[i],iVolNum++,3, ppar);
1035
1036 // 2 vertical      
1037  
1038             spar[0]=dpar[0];
1039             spar[1]=kSizeSupport2V[1];
1040             spar[2]=kSizeSupport2V[2];
1041             sparysave=spar[1];
1042             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VD[0], 0, true,
1043             TGeoTranslation(xEnv,-yEnvP-dpar[1],kSizeVSupExt[0]+spar[2]));
1044             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VD[1], 0, true,
1045             TGeoTranslation(xEnv,yEnvP-dpar[1],kSizeVSupExt[0]+spar[2]));
1046             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VD[2], 0, true,
1047             TGeoTranslation(-xEnv,-yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1048             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VD[3], 0, true,
1049             TGeoTranslation(-xEnv,yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1050             
1051             for(Int_t i=0;i<4;i++)
1052             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VD[i],iVolNum++,3, spar);         
1053
1054 // 2 horizontal    
1055  
1056             spar[0]=dpar[0];
1057             spar[1]=kSizeSupport2H[1];
1058             spar[2]=kSizeSupport2H[2];
1059             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HD[0], 0, true,
1060             TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2]));
1061             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HD[1], 0, true,
1062             TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2]));
1063             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HD[2], 0, true,
1064             TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1065             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HD[3], 0, true,
1066             TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1067
1068             for(Int_t i=0;i<4;i++)
1069             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HD[i],iVolNum++,3, spar);         
1070
1071 // 3 vertical      
1072  
1073             spar[0]=dpar[0];
1074             spar[1]=kSizeSupport1V[1];
1075             spar[2]=kSizeSupport1V[2];
1076             sparysave=spar[1];
1077             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VD[0], 0, true,
1078             TGeoTranslation(xEnv,-yEnvP+dpar[1],kZp+dpar[2]+spar[2]/2.));
1079             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VD[1], 0, true,
1080             TGeoTranslation(xEnv,yEnvP+dpar[1],kZp+dpar[2]+spar[2]/2.));
1081             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VD[2], 0, true,
1082             TGeoTranslation(-xEnv,-yEnvM+dpar[1],kZm-dpar[2]-spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1083             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VD[3], 0, true,
1084             TGeoTranslation(-xEnv,yEnvM+dpar[1],kZm-dpar[2]-spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1085
1086             for(Int_t i=0;i<4;i++)
1087             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VD[i],iVolNum++,3, spar);
1088
1089
1090 // 3 horizontal    
1091  
1092             spar[0]=dpar[0];
1093             spar[1]=kSizeSupport1H[1];
1094             spar[2]=kSizeSupport1H[2];
1095             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HD[0], 0, true,
1096             TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2]));
1097             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HD[1], 0, true,
1098             TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2]));
1099             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HD[2], 0, true,
1100             TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1101             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HD[3], 0, true,
1102             TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1103
1104             for(Int_t i=0;i<4;i++)
1105             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HD[i],iVolNum++,3, spar);
1106                 
1107 // gas pipe (high)
1108             ppar[0]=kSizeGasPipe[0];
1109             ppar[1]=kSizeGasPipe[1];
1110             ppar[2]=dpar[0];
1111             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2D[0], 0, true,
1112             TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe);
1113             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2D[1], 0, true,
1114             TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe);
1115             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2D[2], 0, true,
1116             TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe);
1117             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2D[3], 0, true,
1118             TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe);
1119
1120             for(Int_t i=0;i<4;i++)
1121             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2D[i],iVolNum++,3, ppar);
1122
1123 // 4 vertical      
1124  
1125             spar[0]=dpar[0];
1126             spar[1]=kSizeSupport2V[1];
1127             spar[2]=kSizeSupport2V[2];
1128             sparysave=spar[1];
1129             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VD[0], 0, true,
1130             TGeoTranslation(xEnv,-yEnvP+dpar[1],kSizeVSupExt[0]+spar[2]));
1131             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VD[1], 0, true,
1132             TGeoTranslation(xEnv,yEnvP+dpar[1],kSizeVSupExt[0]+spar[2]));
1133             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VD[2], 0, true,
1134             TGeoTranslation(-xEnv,-yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1135             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VD[3], 0, true,
1136             TGeoTranslation(-xEnv,yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1137             
1138             for(Int_t i=0;i<4;i++)
1139             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VD[i],iVolNum++,3, spar);         
1140
1141 // 4 horizontal    
1142  
1143             spar[0]=dpar[0];
1144             spar[1]=kSizeSupport2H[1];
1145             spar[2]=kSizeSupport2H[2];
1146             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HD[0], 0, true,
1147             TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2]));
1148             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HD[1], 0, true,
1149             TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2]));
1150             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HD[2], 0, true,
1151             TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1152             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HD[3], 0, true,
1153             TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1154
1155             for(Int_t i=0;i<4;i++)
1156             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HD[i],iVolNum++,3, spar);         
1157
1158 // X horizontal    
1159             spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio;
1160             spar[1]=kSizeSupportXH[1];
1161             spar[2]=kSizeSupportXH[2];
1162             sparysavex=spar[1];
1163             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHD[0], 0, true,
1164             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvP+dpar[1]+sparysave+1.0,kSizeVSupExt[0]+spar[2]));
1165             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHD[1], 0, true,
1166             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0,kSizeVSupExt[0]+spar[2]));
1167             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHD[2], 0, true,
1168             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1169             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHD[3], 0, true,
1170             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),-yEnvM+dpar[1]+sparysave+1.0,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1171
1172             for(Int_t i=0;i<4;i++)
1173             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHD[i],iVolNum++,3, spar);         
1174
1175 // X vertical      
1176             spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio;
1177             spar[1]=kSizeSupportXV[1];
1178             spar[2]=kSizeSupportXV[2];
1179             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVD[0], 0, true,
1180             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],kSizeVSupExt[0]+spar[2]));
1181             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVD[1], 0, true,
1182             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],kSizeVSupExt[0]+spar[2]));
1183             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVD[2], 0, true,
1184             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1185             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVD[3], 0, true,
1186             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),-yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1187
1188             for(Int_t i=0;i<4;i++)
1189             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVD[i],iVolNum++,3, spar);         
1190
1191 // E
1192             yEnvPsave = yEnvP;
1193             yEnvMsave = yEnvM;
1194             yEnvP = (yEnvMsave + kYMIN * zRatio ) * zpm + kYMIN * zRatio;
1195             yEnvM = (yEnvPsave + kYMIN * zRatio ) * zmp + kYMIN * zRatio;
1196
1197             detElemId = (10+icount+1)*100+15;
1198             GetEnvelopes(16+icount)->AddEnvelope(volEnv[1], detElemId, true, TGeoTranslation(xEnv,-yEnvM,kZm));
1199             detElemId = (10+icount+1)*100+3;
1200             GetEnvelopes(16+icount)->AddEnvelope(volEnv[7], detElemId, true, TGeoTranslation(xEnv, yEnvM,kZm));
1201             detElemId = (10+icount+1)*100+12;
1202             GetEnvelopes(16+icount)->AddEnvelope(volEnv[10], detElemId, true, TGeoTranslation(-xEnv,-yEnvP,kZp),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1203             detElemId = (10+icount+1)*100+6;
1204             GetEnvelopes(16+icount)->AddEnvelope(volEnv[16], detElemId, true, TGeoTranslation(-xEnv, yEnvP,kZp),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1205
1206             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[1],iVolNum++,3,dpar);
1207             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[7],iVolNum++,3,dpar);
1208             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[10],iVolNum++,3,dpar);
1209             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[16],iVolNum++,3,dpar);
1210
1211 // horizontal cable support chamber type E
1212
1213             spar[0]=dpar[0]-(kYVSup[0]/2.)*zRatio;
1214             spar[1]=kSizeSupportCable[1];
1215             spar[2]=kSizeSupportCable[2];
1216             for(Int_t in=0;in<3;in++){
1217               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHE[in], 0, true, TGeoTranslation(xEnv+kYVSup[0]/2.*zRatio,-(yEnvM+dpar[1]/2.*(in-1)),kSizeVSupExt[0]+spar[2]));
1218               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHE[in+3], 0, true, TGeoTranslation(xEnv+kYVSup[0]/2.*zRatio, yEnvM+dpar[1]/2.*(in-1),kSizeVSupExt[0]+spar[2]));
1219               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHE[in+6], 0, true, TGeoTranslation(-(xEnv+kYVSup[0]/2.*zRatio),-(yEnvP+dpar[1]/2.*(in-1)),-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1220               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHE[in+9], 0, true, TGeoTranslation(-(xEnv+kYVSup[0]/2.*zRatio), yEnvP+dpar[1]/2.*(in-1),-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1221             }
1222             for(Int_t ii=0;ii<12;ii++) 
1223             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHE[ii],iVolNum++,3, spar);
1224             
1225 // angular supports chamber type E
1226 // 1 vertical      
1227  
1228             spar[0]=dpar[0];
1229             spar[1]=kSizeSupport1V[1];
1230             spar[2]=kSizeSupport1V[2];
1231             sparysave=spar[1];
1232             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VE[0], 0, true,
1233             TGeoTranslation(xEnv,-yEnvM-dpar[1],kZm-dpar[2]-spar[2]/2.));
1234             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VE[1], 0, true,
1235             TGeoTranslation(xEnv,yEnvM-dpar[1],kZm-dpar[2]-spar[2]/2.));
1236             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VE[2], 0, true,
1237             TGeoTranslation(-xEnv,-yEnvP-dpar[1],kZp+dpar[2]+spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1238             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VE[3], 0, true,
1239             TGeoTranslation(-xEnv,yEnvP-dpar[1],kZp+dpar[2]+spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1240  
1241             for(Int_t i=0;i<4;i++)
1242             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VE[i],iVolNum++,3, spar);
1243
1244
1245 // 1 horizontal    
1246  
1247             spar[0]=dpar[0];
1248             spar[1]=kSizeSupport1H[1];
1249             spar[2]=kSizeSupport1H[2];
1250             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HE[0], 0, true,
1251             TGeoTranslation(xEnv,-yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2])));
1252             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HE[1], 0, true,
1253             TGeoTranslation(xEnv,yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2])));
1254             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HE[2], 0, true,
1255             TGeoTranslation(-xEnv,-yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1256             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HE[3], 0, true,
1257             TGeoTranslation(-xEnv,yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1258
1259             for(Int_t i=0;i<4;i++)
1260             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HE[i],iVolNum++,3, spar);
1261
1262 // gas pipe (low)
1263             ppar[0]=kSizeGasPipe[0];
1264             ppar[1]=kSizeGasPipe[1];
1265             ppar[2]=dpar[0];
1266             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1E[0], 0, true,
1267             TGeoTranslation(xEnv,-yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe);
1268             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1E[1], 0, true,
1269             TGeoTranslation(xEnv,yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe);
1270             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1E[2], 0, true,
1271             TGeoTranslation(-xEnv,-yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe);
1272             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1E[3], 0, true,
1273             TGeoTranslation(-xEnv,yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe);
1274
1275             for(Int_t i=0;i<4;i++)
1276             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1E[i],iVolNum++,3, ppar);
1277
1278 // 2 vertical      
1279  
1280             spar[0]=dpar[0];
1281             spar[1]=kSizeSupport2V[1];
1282             spar[2]=kSizeSupport2V[2];
1283             sparysave=spar[1];
1284             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VE[0], 0, true,
1285             TGeoTranslation(xEnv,-yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2])));
1286             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VE[1], 0, true,
1287             TGeoTranslation(xEnv,yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2])));
1288             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VE[2], 0, true,
1289             TGeoTranslation(-xEnv,-yEnvP-dpar[1],kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1290             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VE[3], 0, true,
1291             TGeoTranslation(-xEnv,yEnvP-dpar[1],kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1292             
1293             for(Int_t i=0;i<4;i++)
1294             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VE[i],iVolNum++,3, spar);         
1295
1296 // 2 horizontal    
1297  
1298             spar[0]=dpar[0];
1299             spar[1]=kSizeSupport2H[1];
1300             spar[2]=kSizeSupport2H[2];
1301             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HE[0], 0, true,
1302             TGeoTranslation(xEnv,-yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2])));
1303             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HE[1], 0, true,
1304             TGeoTranslation(xEnv,yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2])));
1305             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HE[2], 0, true,
1306             TGeoTranslation(-xEnv,-yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1307             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HE[3], 0, true,
1308             TGeoTranslation(-xEnv,yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1309
1310             for(Int_t i=0;i<4;i++)
1311             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HE[i],iVolNum++,3, spar);         
1312
1313 // 3 vertical      
1314  
1315             spar[0]=dpar[0];
1316             spar[1]=kSizeSupport1V[1];
1317             spar[2]=kSizeSupport1V[2];
1318             sparysave=spar[1];
1319             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VE[0], 0, true,
1320             TGeoTranslation(xEnv,-yEnvM+dpar[1],kZm-dpar[2]-spar[2]/2.));
1321             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VE[1], 0, true,
1322             TGeoTranslation(xEnv,yEnvM+dpar[1],kZm-dpar[2]-spar[2]/2.));
1323             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VE[2], 0, true,
1324             TGeoTranslation(-xEnv,-yEnvP+dpar[1],kZp+dpar[2]+spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1325             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VE[3], 0, true,
1326             TGeoTranslation(-xEnv,yEnvP+dpar[1],kZp+dpar[2]+spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1327  
1328             for(Int_t i=0;i<4;i++)
1329             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VE[i],iVolNum++,3, spar);
1330
1331
1332 // 3 horizontal    
1333  
1334             spar[0]=dpar[0];
1335             spar[1]=kSizeSupport1H[1];
1336             spar[2]=kSizeSupport1H[2];
1337             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HE[0], 0, true,
1338             TGeoTranslation(xEnv,-yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2])));
1339             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HE[1], 0, true,
1340             TGeoTranslation(xEnv,yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2])));
1341             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HE[2], 0, true,
1342             TGeoTranslation(-xEnv,-yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1343             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HE[3], 0, true,
1344             TGeoTranslation(-xEnv,yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1345
1346             for(Int_t i=0;i<4;i++)
1347             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HE[i],iVolNum++,3, spar);
1348
1349 // gas pipe (high)
1350             ppar[0]=kSizeGasPipe[0];
1351             ppar[1]=kSizeGasPipe[1];
1352             ppar[2]=dpar[0];
1353             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2E[0], 0, true,
1354             TGeoTranslation(xEnv,-yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe);
1355             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2E[1], 0, true,
1356             TGeoTranslation(xEnv,yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe);
1357             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2E[2], 0, true,
1358             TGeoTranslation(-xEnv,-yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe);
1359             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2E[3], 0, true,
1360             TGeoTranslation(-xEnv,yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe);
1361
1362             for(Int_t i=0;i<4;i++)
1363             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2E[i],iVolNum++,3, ppar);
1364
1365 // 4 vertical      
1366  
1367             spar[0]=dpar[0];
1368             spar[1]=kSizeSupport2V[1];
1369             spar[2]=kSizeSupport2V[2];
1370             sparysave=spar[1];
1371             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VE[0], 0, true,
1372             TGeoTranslation(xEnv,-yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2])));
1373             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VE[1], 0, true,
1374             TGeoTranslation(xEnv,yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2])));
1375             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VE[2], 0, true,
1376             TGeoTranslation(-xEnv,-yEnvP+dpar[1],kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1377             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VE[3], 0, true,
1378             TGeoTranslation(-xEnv,yEnvP+dpar[1],kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1379             
1380             for(Int_t i=0;i<4;i++)
1381             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VE[i],iVolNum++,3, spar);         
1382
1383 // 4 horizontal    
1384  
1385             spar[0]=dpar[0];
1386             spar[1]=kSizeSupport2H[1];
1387             spar[2]=kSizeSupport2H[2];
1388             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HE[0], 0, true,
1389             TGeoTranslation(xEnv,-yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2])));
1390             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HE[1], 0, true,
1391             TGeoTranslation(xEnv,yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2])));
1392             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HE[2], 0, true,
1393             TGeoTranslation(-xEnv,-yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1394             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HE[3], 0, true,
1395             TGeoTranslation(-xEnv,yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1396
1397             for(Int_t i=0;i<4;i++)
1398             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HE[i],iVolNum++,3, spar);         
1399
1400 // X horizontal    
1401             spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio;
1402             spar[1]=kSizeSupportXH[1];
1403             spar[2]=kSizeSupportXH[2];
1404             sparysavex=spar[1];
1405             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHE[0], 0, true,
1406             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvM+dpar[1]+sparysave+1.0,-(kSizeVSupExt[0]+spar[2])));
1407             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHE[1], 0, true,
1408             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvM+dpar[1]+sparysave+1.0,-(kSizeVSupExt[0]+spar[2])));
1409             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHE[2], 0, true,
1410             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),-yEnvP+dpar[1]+sparysave+1.0,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1411             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHE[3], 0, true,
1412             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),yEnvP+dpar[1]+sparysave+1.0,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1413
1414             for(Int_t i=0;i<4;i++)
1415             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHE[i],iVolNum++,3, spar);         
1416
1417 // X vertical      
1418             spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio;
1419             spar[1]=kSizeSupportXV[1];
1420             spar[2]=kSizeSupportXV[2];
1421             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVE[0], 0, true,
1422             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],-(kSizeVSupExt[0]+spar[2])));
1423             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVE[1], 0, true,
1424             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],-(kSizeVSupExt[0]+spar[2])));
1425             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVE[2], 0, true,
1426             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),-yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1427             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVE[3], 0, true,
1428             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1429
1430             for(Int_t i=0;i<4;i++)
1431             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVE[i],iVolNum++,3, spar);         
1432
1433 // F
1434             yEnvPsave = yEnvP;
1435             yEnvMsave = yEnvM;
1436             yEnvP = (yEnvMsave + kYMIN * zRatio ) * zpm + kYMIN * zRatio;
1437             yEnvM = (yEnvPsave + kYMIN * zRatio ) * zmp + kYMIN * zRatio;
1438
1439             detElemId = (10+icount+1)*100+14;
1440             GetEnvelopes(16+icount)->AddEnvelope(volEnv[0], detElemId, true, TGeoTranslation(xEnv,-yEnvP,kZp));
1441             detElemId = (10+icount+1)*100+4;
1442             GetEnvelopes(16+icount)->AddEnvelope(volEnv[8], detElemId, true, TGeoTranslation(xEnv, yEnvP,kZp));
1443             detElemId = (10+icount+1)*100+13;
1444             GetEnvelopes(16+icount)->AddEnvelope(volEnv[9], detElemId, true, TGeoTranslation(-xEnv,-yEnvM,kZm),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1445             detElemId = (10+icount+1)*100+5;
1446             GetEnvelopes(16+icount)->AddEnvelope(volEnv[17], detElemId, true, TGeoTranslation(-xEnv, yEnvM,kZm),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1447             
1448             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[0],iVolNum++,3,dpar);
1449             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[8],iVolNum++,3,dpar);
1450             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[9],iVolNum++,3,dpar);
1451             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[17],iVolNum++,3,dpar);
1452
1453 // horizontal cable support chamber type F
1454
1455             spar[0]=dpar[0]-(kYVSup[0]/2.)*zRatio;
1456             spar[1]=kSizeSupportCable[1];
1457             spar[2]=kSizeSupportCable[2];
1458             for(Int_t in=0;in<3;in++){
1459               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHF[in], 0, true, TGeoTranslation(xEnv+kYVSup[0]/2.*zRatio,-(yEnvP+dpar[1]/2.*(in-1)),-(kSizeVSupExt[0]+spar[2])));
1460               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHF[in+3], 0, true, TGeoTranslation(xEnv+kYVSup[0]/2.*zRatio,yEnvP+dpar[1]/2.*(in-1),-(kSizeVSupExt[0]+spar[2])));
1461               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHF[in+6], 0, true, TGeoTranslation(-(xEnv+kYVSup[0]/2.*zRatio),-(yEnvM+dpar[1]/2.*(in-1)),kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1462               GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHF[in+9], 0, true, TGeoTranslation(-(xEnv+kYVSup[0]/2.*zRatio), yEnvM+dpar[1]/2.*(in-1),kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1463             }
1464             for(Int_t ii=0;ii<12;ii++) 
1465             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHF[ii],iVolNum++,3, spar);
1466
1467 // angular supports chamber type F
1468 // 1 vertical      
1469  
1470             spar[0]=dpar[0];
1471             spar[1]=kSizeSupport1V[1];
1472             spar[2]=kSizeSupport1V[2];
1473             sparysave=spar[1];
1474             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VF[0], 0, true,
1475             TGeoTranslation(xEnv,-yEnvP-dpar[1],kZp+dpar[2]+spar[2]/2.));
1476             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VF[1], 0, true,
1477             TGeoTranslation(xEnv,yEnvP-dpar[1],kZp+dpar[2]+spar[2]/2.));
1478             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VF[2], 0, true,
1479             TGeoTranslation(-xEnv,-yEnvM-dpar[1],kZm-dpar[2]-spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1480             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VF[3], 0, true,
1481             TGeoTranslation(-xEnv,yEnvM-dpar[1],kZm-dpar[2]-spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1482  
1483             for(Int_t i=0;i<4;i++)
1484             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VF[i],iVolNum++,3, spar);
1485
1486 // 1 horizontal    
1487  
1488             spar[0]=dpar[0];
1489             spar[1]=kSizeSupport1H[1];
1490             spar[2]=kSizeSupport1H[2];
1491             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HF[0], 0, true,
1492             TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2]));
1493             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HF[1], 0, true,
1494             TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2]));
1495             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HF[2], 0, true,
1496             TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1497             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HF[3], 0, true,
1498             TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1499
1500             for(Int_t i=0;i<4;i++)
1501             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HF[i],iVolNum++,3, spar);
1502
1503 // gas pipe (low)
1504             ppar[0]=kSizeGasPipe[0];
1505             ppar[1]=kSizeGasPipe[1];
1506             ppar[2]=dpar[0];
1507             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1F[0], 0, true,
1508             TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe);
1509             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1F[1], 0, true,
1510             TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe);
1511             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1F[2], 0, true,
1512             TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe);
1513             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1F[3], 0, true,
1514             TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe);
1515
1516             for(Int_t i=0;i<4;i++)
1517             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1F[i],iVolNum++,3, ppar);
1518
1519 // 2 vertical      
1520  
1521             spar[0]=dpar[0];
1522             spar[1]=kSizeSupport2V[1];
1523             spar[2]=kSizeSupport2V[2];
1524             sparysave=spar[1];
1525             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VF[0], 0, true,
1526             TGeoTranslation(xEnv,-yEnvP-dpar[1],kSizeVSupExt[0]+spar[2]));
1527             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VF[1], 0, true,
1528             TGeoTranslation(xEnv,yEnvP-dpar[1],kSizeVSupExt[0]+spar[2]));
1529             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VF[2], 0, true,
1530             TGeoTranslation(-xEnv,-yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1531             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VF[3], 0, true,
1532             TGeoTranslation(-xEnv,yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1533             
1534             for(Int_t i=0;i<4;i++)
1535             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VF[i],iVolNum++,3, spar);         
1536
1537 // 2 horizontal    
1538  
1539             spar[0]=dpar[0];
1540             spar[1]=kSizeSupport2H[1];
1541             spar[2]=kSizeSupport2H[2];
1542             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HF[0], 0, true,
1543             TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2]));
1544             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HF[1], 0, true,
1545             TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2]));
1546             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HF[2], 0, true,
1547             TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1548             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HF[3], 0, true,
1549             TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1550
1551             for(Int_t i=0;i<4;i++)
1552             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HF[i],iVolNum++,3, spar);         
1553
1554 // 3 vertical      
1555  
1556             spar[0]=dpar[0];
1557             spar[1]=kSizeSupport1V[1];
1558             spar[2]=kSizeSupport1V[2];
1559             sparysave=spar[1];
1560             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VF[0], 0, true,
1561             TGeoTranslation(xEnv,-yEnvP+dpar[1],kZp+dpar[2]+spar[2]/2.));
1562             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VF[1], 0, true,
1563             TGeoTranslation(xEnv,yEnvP+dpar[1],kZp+dpar[2]+spar[2]/2.));
1564             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VF[2], 0, true,
1565             TGeoTranslation(-xEnv,-yEnvM+dpar[1],kZm-dpar[2]-spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1566             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VF[3], 0, true,
1567             TGeoTranslation(-xEnv,yEnvM+dpar[1],kZm-dpar[2]-spar[2]/2.),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1568  
1569             for(Int_t i=0;i<4;i++)
1570             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VF[i],iVolNum++,3, spar);
1571
1572 // 3 horizontal    
1573  
1574             spar[0]=dpar[0];
1575             spar[1]=kSizeSupport1H[1];
1576             spar[2]=kSizeSupport1H[2];
1577             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HF[0], 0, true,
1578             TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2]));
1579             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HF[1], 0, true,
1580             TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2]));
1581             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HF[2], 0, true,
1582             TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1583             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HF[3], 0, true,
1584             TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1585
1586             for(Int_t i=0;i<4;i++)
1587             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HF[i],iVolNum++,3, spar);
1588             
1589 // gas pipe (high)
1590             ppar[0]=kSizeGasPipe[0];
1591             ppar[1]=kSizeGasPipe[1];
1592             ppar[2]=dpar[0];
1593             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2F[0], 0, true,
1594             TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe);
1595             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2F[1], 0, true,
1596             TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe);
1597             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2F[2], 0, true,
1598             TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe);
1599             GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2F[3], 0, true,
1600             TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe);
1601
1602             for(Int_t i=0;i<4;i++)
1603             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2F[i],iVolNum++,3, ppar);
1604
1605 // 4 vertical      
1606  
1607             spar[0]=dpar[0];
1608             spar[1]=kSizeSupport2V[1];
1609             spar[2]=kSizeSupport2V[2];
1610             sparysave=spar[1];
1611             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VF[0], 0, true,
1612             TGeoTranslation(xEnv,-yEnvP+dpar[1],kSizeVSupExt[0]+spar[2]));
1613             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VF[1], 0, true,
1614             TGeoTranslation(xEnv,yEnvP+dpar[1],kSizeVSupExt[0]+spar[2]));
1615             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VF[2], 0, true,
1616             TGeoTranslation(-xEnv,-yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1617             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VF[3], 0, true,
1618             TGeoTranslation(-xEnv,yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1619             
1620             for(Int_t i=0;i<4;i++)
1621             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VF[i],iVolNum++,3, spar);         
1622
1623 // 4 horizontal    
1624  
1625             spar[0]=dpar[0];
1626             spar[1]=kSizeSupport2H[1];
1627             spar[2]=kSizeSupport2H[2];
1628             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HF[0], 0, true,
1629             TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2]));
1630             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HF[1], 0, true,
1631             TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2]));
1632             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HF[2], 0, true,
1633             TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1634             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HF[3], 0, true,
1635             TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1636
1637             for(Int_t i=0;i<4;i++)
1638             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HF[i],iVolNum++,3, spar);         
1639
1640
1641 // X horizontal    
1642             spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio;
1643             spar[1]=kSizeSupportXH[1];
1644             spar[2]=kSizeSupportXH[2];
1645             sparysavex=spar[1];
1646             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHF[0], 0, true,
1647             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvP+dpar[1]+sparysave+1.0,kSizeVSupExt[0]+spar[2]));
1648             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHF[1], 0, true,
1649             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0,kSizeVSupExt[0]+spar[2]));
1650             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHF[2], 0, true,
1651             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),-yEnvM+dpar[1]+sparysave+1.0,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1652             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHF[3], 0, true,
1653             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1654
1655             for(Int_t i=0;i<4;i++)
1656             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHF[i],iVolNum++,3, spar);         
1657
1658 // X vertical      
1659             spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio;
1660             spar[1]=kSizeSupportXV[1];
1661             spar[2]=kSizeSupportXV[2];
1662             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVF[0], 0, true,
1663             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],kSizeVSupExt[0]+spar[2]));
1664             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVF[1], 0, true,
1665             TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],kSizeVSupExt[0]+spar[2]));
1666             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVF[2], 0, true,
1667             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),-yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1668             GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVF[3], 0, true,
1669             TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.));
1670
1671             for(Int_t i=0;i<4;i++)
1672             GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVF[i],iVolNum++,3, spar);
1673                     
1674         } // end loop on detection planes
1675     } // end loop on stations    
1676 }
1677
1678 //______________________________________________________________________________
1679 void AliMUONTriggerGeometryBuilder::SetTransformations() 
1680 {
1681 /// Defines the transformations for the trigger chambers.
1682
1683     if (gAlice->GetModule("SHIL")) {
1684       SetMotherVolume(16, "YOUT2");
1685       SetMotherVolume(17, "YOUT2");
1686       SetMotherVolume(18, "YOUT2");
1687       SetMotherVolume(19, "YOUT2");
1688     }  
1689
1690     SetVolume(16, "SC11");
1691     SetVolume(17, "SC12");
1692     SetVolume(18, "SC13");
1693     SetVolume(19, "SC14");
1694
1695     Double_t zpos1= AliMUONConstants::DefaultChamberZ(10); 
1696     SetTranslation(16, TGeoTranslation(0., 0., zpos1));
1697     
1698     zpos1= AliMUONConstants::DefaultChamberZ(11); 
1699     SetTranslation(17, TGeoTranslation(0., 0., zpos1));
1700
1701     zpos1= AliMUONConstants::DefaultChamberZ(12); 
1702     SetTranslation(18, TGeoTranslation(0., 0., zpos1));
1703
1704     zpos1= AliMUONConstants::DefaultChamberZ(13); 
1705     SetTranslation(19, TGeoTranslation(0., 0., zpos1));
1706 }
1707
1708 //______________________________________________________________________________
1709 void AliMUONTriggerGeometryBuilder::SetSensitiveVolumes()
1710 {
1711 /// Defines the sensitive volumes for trigger station chambers.
1712
1713   GetGeometry(16)->SetSensitiveVolume("S11G");
1714   GetGeometry(17)->SetSensitiveVolume("S12G");
1715   GetGeometry(18)->SetSensitiveVolume("S13G");
1716   GetGeometry(19)->SetSensitiveVolume("S14G");
1717 }
1718