]>
Commit | Line | Data |
---|---|---|
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.15}; // 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.9; | |
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][7]; | |
225 | for(Int_t ii=0;ii<8;ii++){ | |
226 | sprintf(volEnvSupport[ii],"SEA%dV%d",icount+1,ii); | |
227 | } | |
228 | tpar[0]= 0.; | |
229 | tpar[1]= 0.; | |
230 | tpar[2]= 0.; | |
231 | gMC->Gsvolu(volAluSupport,"BOX",idAlu1,tpar,0); | |
232 | gMC->Gsvolu(volAirSupport,"BOX",idAir,tpar,0); | |
233 | tpar[0]=kSizeVSupInt[0]; | |
234 | tpar[1]=kSizeVSupInt[1]; | |
235 | tpar[2]=-1.; | |
236 | gMC->Gsposp(volAirSupport,1,volAluSupport,0.,0.,0.,0,"ONLY",tpar,3); | |
237 | ||
238 | TGeoRotation rsupportv; | |
239 | rsupportv.SetAngles(0.,90.,0.); | |
240 | dpar[0]=kSizeVSupExt[0]; | |
241 | dpar[1]=kSizeVSupExt[1]; | |
242 | dpar[2]=kSizeVSupExt[2]*zRatio; | |
243 | for(Int_t ii=0;ii<4;ii++){ | |
244 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSupport[ii], 0, true, | |
245 | TGeoTranslation(-kYVSup[ii]*zRatio,0.,0.),rsupportv); | |
246 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupport,volEnvSupport[ii],iVolNum++,3, dpar); | |
247 | } | |
248 | for(Int_t ii=4;ii<8;ii++){ | |
249 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSupport[ii], 0, true, | |
250 | TGeoTranslation(kYVSup[ii-4]*zRatio,0.,0.),rsupportv); | |
251 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupport,volEnvSupport[ii],iVolNum++,3, dpar); | |
252 | } | |
253 | ||
254 | // RPC supports (horizontal) | |
255 | ||
256 | // supports for cables | |
257 | char volAluSupportH[6],volAirSupportH[6]; | |
258 | sprintf(volAluSupportH,"SALH%d",icount+1); | |
259 | sprintf(volAirSupportH,"SAIH%d",icount+1); | |
260 | char volEnvSupportHA[6][8],volEnvSupportHBC[12][8],volEnvSupportHD[12][8],volEnvSupportHE[12][8],volEnvSupportHF[12][8]; | |
261 | for(Int_t jj=0;jj<2;jj++){ | |
262 | for(Int_t ii=0;ii<6;ii++){ | |
263 | if(ii<3)sprintf(volEnvSupportHA[3*jj+ii],"SA%dHA%d",icount+1,3*jj+ii); | |
264 | sprintf(volEnvSupportHBC[6*jj+ii],"SA%dHB%d",icount+1,6*jj+ii); | |
265 | sprintf(volEnvSupportHD[6*jj+ii],"SA%dHD%d",icount+1,6*jj+ii); | |
266 | sprintf(volEnvSupportHE[6*jj+ii],"SA%dHE%d",icount+1,6*jj+ii); | |
267 | sprintf(volEnvSupportHF[6*jj+ii],"SA%dHF%d",icount+1,6*jj+ii); | |
268 | } | |
269 | } | |
270 | tpar[0]= 0.; | |
271 | tpar[1]= 0.; | |
272 | tpar[2]= 0.; | |
273 | gMC->Gsvolu(volAluSupportH,"BOX",idAlu1,tpar,0); | |
274 | gMC->Gsvolu(volAirSupportH,"BOX",idAir,tpar,0); | |
275 | tpar[0]=-1.; | |
276 | tpar[1]=1.9; | |
277 | tpar[2]=2.8; | |
278 | gMC->Gsposp(volAirSupportH,1,volAluSupportH,0.,0.,0.,0,"ONLY",tpar,3); | |
279 | ||
280 | // Angular supports for chambers | |
281 | char volAluAngSupport1V[6],volAluAngSupport1H[6]; | |
282 | sprintf(volAluAngSupport1H,"SA1H%d",icount+1); | |
283 | sprintf(volAluAngSupport1V,"SA1V%d",icount+1); | |
284 | char volAluAngSupport2V[6],volAluAngSupport2H[6]; | |
285 | sprintf(volAluAngSupport2H,"SA2H%d",icount+1); | |
286 | sprintf(volAluAngSupport2V,"SA2V%d",icount+1); | |
287 | char volAluAngSupport3V[6],volAluAngSupport3H[6]; | |
288 | sprintf(volAluAngSupport3H,"SA3H%d",icount+1); | |
289 | sprintf(volAluAngSupport3V,"SA3V%d",icount+1); | |
290 | char volAluAngSupport4V[6],volAluAngSupport4H[6]; | |
291 | sprintf(volAluAngSupport4H,"SA4H%d",icount+1); | |
292 | sprintf(volAluAngSupport4V,"SA4V%d",icount+1); | |
293 | char volAluAngSupportXV[6],volAluAngSupportXH[6]; | |
294 | sprintf(volAluAngSupportXH,"SAXH%d",icount+1); | |
295 | sprintf(volAluAngSupportXV,"SAXV%d",icount+1); | |
296 | char volEnvSuppAng1HA[2][7],volEnvSuppAng1HBC[4][7],volEnvSuppAng1HD[4][7],volEnvSuppAng1HE[4][7],volEnvSuppAng1HF[4][7]; | |
297 | char volEnvSuppAng1VA[2][7],volEnvSuppAng1VBC[4][7],volEnvSuppAng1VD[4][7],volEnvSuppAng1VE[4][7],volEnvSuppAng1VF[4][7]; | |
298 | char volEnvSuppAng2HA[2][7],volEnvSuppAng2HBC[4][7],volEnvSuppAng2HD[4][7],volEnvSuppAng2HE[4][7],volEnvSuppAng2HF[4][7]; | |
299 | char volEnvSuppAng2VA[2][7],volEnvSuppAng2VBC[4][7],volEnvSuppAng2VD[4][7],volEnvSuppAng2VE[4][7],volEnvSuppAng2VF[4][7]; | |
300 | char volEnvSuppAng3HA[2][7],volEnvSuppAng3HBC[4][7],volEnvSuppAng3HD[4][7],volEnvSuppAng3HE[4][7],volEnvSuppAng3HF[4][7]; | |
301 | char volEnvSuppAng3VA[2][7],volEnvSuppAng3VBC[4][7],volEnvSuppAng3VD[4][7],volEnvSuppAng3VE[4][7],volEnvSuppAng3VF[4][7]; | |
302 | char volEnvSuppAng4HA[2][7],volEnvSuppAng4HBC[4][7],volEnvSuppAng4HD[4][7],volEnvSuppAng4HE[4][7],volEnvSuppAng4HF[4][7]; | |
303 | char volEnvSuppAng4VA[2][7],volEnvSuppAng4VBC[4][7],volEnvSuppAng4VD[4][7],volEnvSuppAng4VE[4][7],volEnvSuppAng4VF[4][7]; | |
304 | char volEnvSuppAngXHA[2][7],volEnvSuppAngXHBC[4][7],volEnvSuppAngXHD[4][7],volEnvSuppAngXHE[4][7],volEnvSuppAngXHF[4][7]; | |
305 | char volEnvSuppAngXVA[2][7],volEnvSuppAngXVBC[4][7],volEnvSuppAngXVD[4][7],volEnvSuppAngXVE[4][7],volEnvSuppAngXVF[4][7]; | |
306 | for(Int_t ii=0;ii<4;ii++){ | |
307 | if(ii<2)sprintf(volEnvSuppAng1HA[ii],"SH1%dA%d",icount+1,ii); | |
308 | sprintf(volEnvSuppAng1HBC[ii],"SH1%dB%d",icount+1,ii); | |
309 | sprintf(volEnvSuppAng1HD[ii],"SH1%dD%d",icount+1,ii); | |
310 | sprintf(volEnvSuppAng1HE[ii],"SH1%dE%d",icount+1,ii); | |
311 | sprintf(volEnvSuppAng1HF[ii],"SH1%dF%d",icount+1,ii); | |
312 | if(ii<2)sprintf(volEnvSuppAng1VA[ii],"SV1%dA%d",icount+1,ii); | |
313 | sprintf(volEnvSuppAng1VBC[ii],"SV1%dB%d",icount+1,ii); | |
314 | sprintf(volEnvSuppAng1VD[ii],"SV1%dD%d",icount+1,ii); | |
315 | sprintf(volEnvSuppAng1VE[ii],"SV1%dE%d",icount+1,ii); | |
316 | sprintf(volEnvSuppAng1VF[ii],"SV1%dF%d",icount+1,ii); | |
317 | if(ii<2)sprintf(volEnvSuppAng2HA[ii],"SH2%dA%d",icount+1,ii); | |
318 | sprintf(volEnvSuppAng2HBC[ii],"SH2%dB%d",icount+1,ii); | |
319 | sprintf(volEnvSuppAng2HD[ii],"SH2%dD%d",icount+1,ii); | |
320 | sprintf(volEnvSuppAng2HE[ii],"SH2%dE%d",icount+1,ii); | |
321 | sprintf(volEnvSuppAng2HF[ii],"SH2%dF%d",icount+1,ii); | |
322 | if(ii<2)sprintf(volEnvSuppAng2VA[ii],"SV2%dA%d",icount+1,ii); | |
323 | sprintf(volEnvSuppAng2VBC[ii],"SV2%dB%d",icount+1,ii); | |
324 | sprintf(volEnvSuppAng2VD[ii],"SV2%dD%d",icount+1,ii); | |
325 | sprintf(volEnvSuppAng2VE[ii],"SV2%dE%d",icount+1,ii); | |
326 | sprintf(volEnvSuppAng2VF[ii],"SV2%dF%d",icount+1,ii); | |
327 | if(ii<2)sprintf(volEnvSuppAng3HA[ii],"SH3%dA%d",icount+1,ii); | |
328 | sprintf(volEnvSuppAng3HBC[ii],"SH3%dB%d",icount+1,ii); | |
329 | sprintf(volEnvSuppAng3HD[ii],"SH3%dD%d",icount+1,ii); | |
330 | sprintf(volEnvSuppAng3HE[ii],"SH3%dE%d",icount+1,ii); | |
331 | sprintf(volEnvSuppAng3HF[ii],"SH3%dF%d",icount+1,ii); | |
332 | if(ii<2)sprintf(volEnvSuppAng3VA[ii],"SV3%dA%d",icount+1,ii); | |
333 | sprintf(volEnvSuppAng3VBC[ii],"SV3%dB%d",icount+1,ii); | |
334 | sprintf(volEnvSuppAng3VD[ii],"SV3%dD%d",icount+1,ii); | |
335 | sprintf(volEnvSuppAng3VE[ii],"SV3%dE%d",icount+1,ii); | |
336 | sprintf(volEnvSuppAng3VF[ii],"SV3%dF%d",icount+1,ii); | |
337 | if(ii<2)sprintf(volEnvSuppAng4HA[ii],"SH4%dA%d",icount+1,ii); | |
338 | sprintf(volEnvSuppAng4HBC[ii],"SH4%dB%d",icount+1,ii); | |
339 | sprintf(volEnvSuppAng4HD[ii],"SH4%dD%d",icount+1,ii); | |
340 | sprintf(volEnvSuppAng4HE[ii],"SH4%dE%d",icount+1,ii); | |
341 | sprintf(volEnvSuppAng4HF[ii],"SH4%dF%d",icount+1,ii); | |
342 | if(ii<2)sprintf(volEnvSuppAng4VA[ii],"SV4%dA%d",icount+1,ii); | |
343 | sprintf(volEnvSuppAng4VBC[ii],"SV4%dB%d",icount+1,ii); | |
344 | sprintf(volEnvSuppAng4VD[ii],"SV4%dD%d",icount+1,ii); | |
345 | sprintf(volEnvSuppAng4VE[ii],"SV4%dE%d",icount+1,ii); | |
346 | sprintf(volEnvSuppAng4VF[ii],"SV4%dF%d",icount+1,ii); | |
347 | if(ii<2)sprintf(volEnvSuppAngXHA[ii],"SHX%dA%d",icount+1,ii); | |
348 | sprintf(volEnvSuppAngXHBC[ii],"SHX%dB%d",icount+1,ii); | |
349 | sprintf(volEnvSuppAngXHD[ii],"SHX%dD%d",icount+1,ii); | |
350 | sprintf(volEnvSuppAngXHE[ii],"SHX%dE%d",icount+1,ii); | |
351 | sprintf(volEnvSuppAngXHF[ii],"SHX%dF%d",icount+1,ii); | |
352 | if(ii<2)sprintf(volEnvSuppAngXVA[ii],"SVX%dA%d",icount+1,ii); | |
353 | sprintf(volEnvSuppAngXVBC[ii],"SVX%dB%d",icount+1,ii); | |
354 | sprintf(volEnvSuppAngXVD[ii],"SVX%dD%d",icount+1,ii); | |
355 | sprintf(volEnvSuppAngXVE[ii],"SVX%dE%d",icount+1,ii); | |
356 | sprintf(volEnvSuppAngXVF[ii],"SVX%dF%d",icount+1,ii); | |
357 | } | |
358 | tpar[0]= 0.; | |
359 | tpar[1]= 0.; | |
360 | tpar[2]= 0.; | |
361 | gMC->Gsvolu(volAluAngSupport1V,"BOX",idAlu1,tpar,0); | |
362 | gMC->Gsvolu(volAluAngSupport1H,"BOX",idAlu1,tpar,0); | |
363 | gMC->Gsvolu(volAluAngSupport2V,"BOX",idAlu1,tpar,0); | |
364 | gMC->Gsvolu(volAluAngSupport2H,"BOX",idAlu1,tpar,0); | |
365 | gMC->Gsvolu(volAluAngSupport3V,"BOX",idAlu1,tpar,0); | |
366 | gMC->Gsvolu(volAluAngSupport3H,"BOX",idAlu1,tpar,0); | |
367 | gMC->Gsvolu(volAluAngSupport4V,"BOX",idAlu1,tpar,0); | |
368 | gMC->Gsvolu(volAluAngSupport4H,"BOX",idAlu1,tpar,0); | |
369 | gMC->Gsvolu(volAluAngSupportXV,"BOX",idAlu1,tpar,0); | |
370 | gMC->Gsvolu(volAluAngSupportXH,"BOX",idAlu1,tpar,0); | |
371 | ||
372 | // gas pipes | |
373 | char volInoxGasPipe[7]; | |
374 | sprintf(volInoxGasPipe,"SPINO%d",icount+1); | |
375 | char volEnvInoxGasPipe1A[2][7],volEnvInoxGasPipe1BC[4][8],volEnvInoxGasPipe1D[4][7],volEnvInoxGasPipe1E[4][7],volEnvInoxGasPipe1F[4][7]; | |
376 | char volEnvInoxGasPipe2A[2][7],volEnvInoxGasPipe2BC[4][8],volEnvInoxGasPipe2D[4][7],volEnvInoxGasPipe2E[4][7],volEnvInoxGasPipe2F[4][7]; | |
377 | for(Int_t ii=0;ii<4;ii++){ | |
378 | if(ii<2)sprintf(volEnvInoxGasPipe1A[ii],"SP1%dA%d",icount+1,ii); | |
379 | sprintf(volEnvInoxGasPipe1BC[ii],"SP1%dBC%d",icount+1,ii); | |
380 | sprintf(volEnvInoxGasPipe1D[ii],"SP1%dD%d",icount+1,ii); | |
381 | sprintf(volEnvInoxGasPipe1E[ii],"SP1%dE%d",icount+1,ii); | |
382 | sprintf(volEnvInoxGasPipe1F[ii],"SP1%dF%d",icount+1,ii); | |
383 | } | |
384 | for(Int_t ii=0;ii<4;ii++){ | |
385 | if(ii<2)sprintf(volEnvInoxGasPipe2A[ii],"SP2%dA%d",icount+1,ii); | |
386 | sprintf(volEnvInoxGasPipe2BC[ii],"SP2%dBC%d",icount+1,ii); | |
387 | sprintf(volEnvInoxGasPipe2D[ii],"SP2%dD%d",icount+1,ii); | |
388 | sprintf(volEnvInoxGasPipe2E[ii],"SP2%dE%d",icount+1,ii); | |
389 | sprintf(volEnvInoxGasPipe2F[ii],"SP2%dF%d",icount+1,ii); | |
390 | } | |
391 | tpar[0]= 0.; | |
392 | tpar[1]= 0.; | |
393 | tpar[2]= 0.; | |
394 | gMC->Gsvolu(volInoxGasPipe,"TUBE",idInox,tpar,0); | |
395 | TGeoRotation rsupportpipe; | |
396 | rsupportpipe.SetAngles(90.,90.,0.); | |
397 | ||
398 | ||
399 | // chamber type A | |
400 | Float_t xEnv = (kDXZERO+kXMED+(kXMAX-kXMED)/2.)*zRatio; | |
401 | Float_t yEnvM = 0.; // y low position of envelope in chamber | |
402 | Float_t yEnvP = 0.; // y up position of envelope in chamber | |
403 | Float_t yEnvPsave = 0.; // tmp data | |
404 | Float_t yEnvMsave = 0.; // tmp data | |
405 | Float_t xpos = 0.; // x position of RPC in envelope | |
406 | Float_t ypos = 0.; // y position of RPC in envelope | |
407 | dpar[2] = 0.4; | |
408 | dpar[0] = ((kXMAX-kXMED)/2.)*zRatio; | |
409 | dpar[1] = kYMIN * zRatio; | |
410 | ||
411 | detElemId = (10+icount+1)*100; | |
412 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[4], detElemId, true, TGeoTranslation(xEnv,yEnvP,kZp)); | |
413 | detElemId = (10+icount+1)*100+9; | |
414 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[13], detElemId, true, TGeoTranslation(-xEnv,yEnvM,kZm),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
415 | ||
416 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[4],iVolNum++,3, dpar); | |
417 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[13],iVolNum++,3, dpar); | |
418 | ||
419 | // horizontal cable support chamber type A | |
420 | ||
421 | spar[0]=((kXMAX/2)-kYVSup[0]/2.)*zRatio; | |
422 | spar[1]=kSizeSupportCable[1]; | |
423 | spar[2]=kSizeSupportCable[2]; | |
424 | Float_t offsetSuppA = ((kXMAX-kXMED)/2.)*zRatio-(((kXMAX/2)-kYVSup[0]/2.)*zRatio); | |
425 | for(Int_t in=0;in<3;in++){ | |
426 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHA[in], 0, true, | |
427 | TGeoTranslation(xEnv+offsetSuppA/2.,yEnvP+dpar[1]/2.*(in-1),-(kSizeVSupExt[0]+spar[2]))); | |
428 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHA[in+3], 0, true, | |
429 | TGeoTranslation(-(xEnv+offsetSuppA/2.),yEnvM+dpar[1]/2.*(in-1),kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
430 | } | |
431 | for(Int_t ii=0;ii<6;ii++) | |
432 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHA[ii],iVolNum++,3, spar); | |
433 | ||
434 | // angular supports chamber type A | |
435 | // 1 vertical | |
436 | ||
437 | spar[0]=dpar[0]; | |
438 | spar[1]=kSizeSupport1V[1]; | |
439 | spar[2]=kSizeSupport1V[2]; | |
440 | Float_t sparysave=spar[1]; | |
441 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VA[0], 0, true, | |
442 | TGeoTranslation(xEnv,yEnvP-dpar[1],kZp+dpar[2]+spar[2])); | |
443 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VA[1], 0, true, | |
444 | TGeoTranslation(-xEnv,yEnvM-dpar[1],kZm-dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
445 | ||
446 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VA[0],iVolNum++,3, spar); | |
447 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VA[1],iVolNum++,3, spar); | |
448 | ||
449 | // 1 horizontal | |
450 | ||
451 | spar[0]=dpar[0]; | |
452 | spar[1]=kSizeSupport1H[1]; | |
453 | spar[2]=kSizeSupport1H[2]; | |
454 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HA[0], 0, true, | |
455 | TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2])); | |
456 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HA[1], 0, true, | |
457 | TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
458 | ||
459 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HA[0],iVolNum++,3, spar); | |
460 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HA[1],iVolNum++,3, spar); | |
461 | ||
462 | // gas pipe (low) | |
463 | ppar[0]=kSizeGasPipe[0]; | |
464 | ppar[1]=kSizeGasPipe[1]; | |
465 | ppar[2]=dpar[0]; | |
466 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1A[0], 0, true, | |
467 | TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe); | |
468 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1A[1], 0, true, | |
469 | TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe); | |
470 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1A[0],iVolNum++,3, ppar); | |
471 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1A[1],iVolNum++,3, ppar); | |
472 | ||
473 | // 2 vertical | |
474 | ||
475 | spar[0]=dpar[0]; | |
476 | spar[1]=kSizeSupport2V[1]; | |
477 | spar[2]=kSizeSupport2V[2]; | |
478 | sparysave=spar[1]+kSizeSupport2H[1]; | |
479 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VA[0], 0, true, | |
480 | TGeoTranslation(xEnv,yEnvP-dpar[1],kSizeVSupExt[0]+spar[2])); | |
481 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VA[1], 0, true, | |
482 | TGeoTranslation(-xEnv,yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
483 | ||
484 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VA[0],iVolNum++,3, spar); | |
485 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VA[1],iVolNum++,3, spar); | |
486 | ||
487 | // 2 horizontal | |
488 | ||
489 | spar[0]=dpar[0]; | |
490 | spar[1]=kSizeSupport2H[1]; | |
491 | spar[2]=kSizeSupport2H[2]; | |
492 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HA[0], 0, true, | |
493 | TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2])); | |
494 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HA[1], 0, true, | |
495 | TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
496 | ||
497 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HA[0],iVolNum++,3, spar); | |
498 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HA[1],iVolNum++,3, spar); | |
499 | ||
500 | // 3 vertical | |
501 | ||
502 | spar[0]=dpar[0]; | |
503 | spar[1]=kSizeSupport1V[1]; | |
504 | spar[2]=kSizeSupport1V[2]; | |
505 | sparysave=spar[1]; | |
506 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VA[0], 0, true, | |
507 | TGeoTranslation(xEnv,yEnvP+dpar[1],kZp+dpar[2]+spar[2])); | |
508 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VA[1], 0, true, | |
509 | TGeoTranslation(-xEnv,yEnvM+dpar[1],kZm-dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
510 | ||
511 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VA[0],iVolNum++,3, spar); | |
512 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VA[1],iVolNum++,3, spar); | |
513 | ||
514 | // 3 horizontal | |
515 | ||
516 | spar[0]=dpar[0]; | |
517 | spar[1]=kSizeSupport1H[1]; | |
518 | spar[2]=kSizeSupport1H[2]; | |
519 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HA[0], 0, true, | |
520 | TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2])); | |
521 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HA[1], 0, true, | |
522 | TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
523 | ||
524 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HA[0],iVolNum++,3, spar); | |
525 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HA[1],iVolNum++,3, spar); | |
526 | ||
527 | // gas pipe (high) | |
528 | ppar[0]=kSizeGasPipe[0]; | |
529 | ppar[1]=kSizeGasPipe[1]; | |
530 | ppar[2]=dpar[0]; | |
531 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2A[0], 0, true, | |
532 | TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe); | |
533 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2A[1], 0, true, | |
534 | TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe); | |
535 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2A[0],iVolNum++,3, ppar); | |
536 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2A[1],iVolNum++,3, ppar); | |
537 | ||
538 | // 4 vertical | |
539 | ||
540 | spar[0]=dpar[0]; | |
541 | spar[1]=kSizeSupport2V[1]; | |
542 | spar[2]=kSizeSupport2V[2]; | |
543 | sparysave=spar[1]+kSizeSupport2H[1]; | |
544 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VA[0], 0, true, | |
545 | TGeoTranslation(xEnv,yEnvP+dpar[1],kSizeVSupExt[0]+spar[2])); | |
546 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VA[1], 0, true, | |
547 | TGeoTranslation(-xEnv,yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
548 | ||
549 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VA[0],iVolNum++,3, spar); | |
550 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VA[1],iVolNum++,3, spar); | |
551 | ||
552 | // 4 horizontal | |
553 | ||
554 | spar[0]=dpar[0]; | |
555 | spar[1]=kSizeSupport2H[1]; | |
556 | spar[2]=kSizeSupport2H[2]; | |
557 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HA[0], 0, true, | |
558 | TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2])); | |
559 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HA[1], 0, true, | |
560 | TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
561 | ||
562 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HA[0],iVolNum++,3, spar); | |
563 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HA[1],iVolNum++,3, spar); | |
564 | ||
565 | // X horizontal | |
566 | spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio; | |
567 | spar[1]=kSizeSupportXH[1]; | |
568 | spar[2]=kSizeSupportXH[2]; | |
569 | Float_t sparysavex=spar[1]; | |
570 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHA[0], 0, true, | |
571 | TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0,kSizeVSupExt[0]+spar[2])); | |
572 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHA[1], 0, true, | |
573 | TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
574 | ||
575 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHA[0],iVolNum++,3, spar); | |
576 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHA[1],iVolNum++,3, spar); | |
577 | ||
578 | // X vertical | |
579 | spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio; | |
580 | spar[1]=kSizeSupportXV[1]; | |
581 | spar[2]=kSizeSupportXV[2]; | |
582 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVA[0], 0, true, | |
583 | TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],kSizeVSupExt[0]+spar[2])); | |
584 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVA[1], 0, true, | |
585 | 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.)); | |
586 | ||
587 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVA[0],iVolNum++,3, spar); | |
588 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVA[1],iVolNum++,3, spar); | |
589 | ||
590 | // chamber type B (plus envelope chambers B & C) | |
591 | xEnv = (kDXZERO+kXMAX/2.)*zRatio; | |
592 | yEnvPsave = yEnvP; | |
593 | yEnvMsave = yEnvM; | |
594 | yEnvP = (yEnvMsave + kYMIN * zRatio ) * zpm + kYMIN * zRatio; | |
595 | yEnvM = (yEnvPsave + kYMIN * zRatio ) * zmp + kYMIN * zRatio; | |
596 | dpar[0] = ((kXMAX-kXMIN)/2.) * zRatio; | |
597 | dpar[1] = ((kYMAX-kYMIN)/2.) * zRatio; | |
598 | Float_t dysave = dpar[1]; | |
599 | Float_t dxsave = dpar[0]; | |
600 | xpos = kXMIN/2. * zRatio; | |
601 | ypos = (kYMIN - kYMIN/4.) * zRatio; | |
602 | Float_t xpossave = xpos; | |
603 | ||
604 | detElemId = (10+icount+1)*100+17; | |
605 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[3], detElemId, true, TGeoTranslation( xEnv,-yEnvM,kZm)); | |
606 | detElemId = (10+icount+1)*100+1; | |
607 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[5], detElemId, true, TGeoTranslation( xEnv, yEnvM,kZm)); | |
608 | detElemId = (10+icount+1)*100+10; | |
609 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[12], detElemId, true, TGeoTranslation(-xEnv,-yEnvP,kZp),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
610 | detElemId = (10+icount+1)*100+8; | |
611 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[14], detElemId, true, TGeoTranslation(-xEnv, yEnvP,kZp),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
612 | ||
613 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[3],iVolNum++,TGeoTranslation(xpos, ypos,0.),3,dpar); | |
614 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[5],iVolNum++,TGeoTranslation(xpos,-ypos,0.),3,dpar); | |
615 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[12],iVolNum++,TGeoTranslation(xpos, ypos,0.),3,dpar); | |
616 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[14],iVolNum++,TGeoTranslation(xpos,-ypos,0.),3,dpar); | |
617 | ||
618 | ||
619 | // chamber type C (note: same Z than type B) | |
620 | dpar[0] = (kXMAX/2)*zRatio; | |
621 | dpar[1] = (kYMAX/2)*zRatio; | |
622 | xpos = 0.; | |
623 | ypos = ((kYMAX - kYMIN)/2.) * zRatio; | |
624 | ||
625 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[3],iVolNum++,TGeoTranslation(xpos,-ypos,0.),3,dpar); | |
626 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[5],iVolNum++,TGeoTranslation(xpos, ypos,0.),3,dpar); | |
627 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[12],iVolNum++,TGeoTranslation(xpos,-ypos,0.),3,dpar); | |
628 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[14],iVolNum++,TGeoTranslation(xpos, ypos,0.),3,dpar); | |
629 | ||
630 | // horizontal cable support chamber type B+C | |
631 | ||
632 | spar[0]=dpar[0]-kYVSup[0]/2.; | |
633 | spar[1]=kSizeSupportCable[1]; | |
634 | spar[2]=kSizeSupportCable[2]; | |
635 | for(Int_t in=0;in<3;in++){ | |
636 | 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])); | |
637 | 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])); | |
638 | 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.)); | |
639 | 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.)); | |
640 | } | |
641 | for(Int_t ii=0;ii<12;ii++) | |
642 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHBC[ii],iVolNum++,3, spar); | |
643 | ||
644 | // angular supports chamber type B and C | |
645 | // C | |
646 | // 1 vertical | |
647 | spar[0]=dpar[0]; | |
648 | spar[1]=kSizeSupport1V[1]; | |
649 | spar[2]=kSizeSupport1V[2]; | |
650 | sparysave=spar[1]; | |
651 | ||
652 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VBC[0], 0, true, | |
653 | TGeoTranslation(xEnv,-yEnvM-dpar[1]-dysave,kZm-dpar[2]-spar[2])); | |
654 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VBC[2], 0, true, | |
655 | TGeoTranslation(-xEnv,-yEnvP-dpar[1]-dysave,kZp+dpar[2]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
656 | ||
657 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VBC[0],iVolNum++,3, spar); | |
658 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VBC[2],iVolNum++,3, spar); | |
659 | ||
660 | // 1 horizontal | |
661 | spar[0]=dpar[0]; | |
662 | spar[1]=kSizeSupport1H[1]; | |
663 | spar[2]=kSizeSupport1H[2]; | |
664 | ||
665 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HBC[0], 0, true, | |
666 | TGeoTranslation(xEnv,-yEnvM-dpar[1]-dysave-sparysave,kZm-(dpar[2]-spar[2]))); | |
667 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HBC[2], 0, true, | |
668 | TGeoTranslation(-xEnv,-yEnvP-dpar[1]-dysave-sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
669 | ||
670 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HBC[0],iVolNum++,3, spar); | |
671 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HBC[2],iVolNum++,3, spar); | |
672 | ||
673 | // gas pipe (low) | |
674 | ppar[0]=kSizeGasPipe[0]; | |
675 | ppar[1]=kSizeGasPipe[1]; | |
676 | ppar[2]=dpar[0]; | |
677 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1BC[0], 0, true, | |
678 | TGeoTranslation(xEnv,-yEnvM-dpar[1]-dysave-sparysave-kOffsetGasPipe,kZm),rsupportpipe); | |
679 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1BC[2], 0, true, | |
680 | TGeoTranslation(-xEnv,-yEnvP-dpar[1]-dysave-sparysave-kOffsetGasPipe,kZp),rsupportpipe); | |
681 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1BC[0],iVolNum++,3, ppar); | |
682 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1BC[2],iVolNum++,3, ppar); | |
683 | ||
684 | // 2 vertical | |
685 | spar[0]=dpar[0]; | |
686 | spar[1]=kSizeSupport2V[1]; | |
687 | spar[2]=kSizeSupport2V[2]; | |
688 | sparysave=spar[1]+kSizeSupport2H[1]; | |
689 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VBC[0], 0, true, | |
690 | TGeoTranslation(xEnv,-yEnvM-dpar[1]-dysave,-(kSizeVSupExt[0]+spar[2]))); | |
691 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VBC[2], 0, true, | |
692 | TGeoTranslation(-xEnv,-yEnvP-dpar[1]-dysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
693 | ||
694 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VBC[0],iVolNum++,3, spar); | |
695 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VBC[2],iVolNum++,3, spar); | |
696 | ||
697 | // 2 horizontal | |
698 | spar[0]=dpar[0]; | |
699 | spar[1]=kSizeSupport2H[1]; | |
700 | spar[2]=kSizeSupport2H[2]; | |
701 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HBC[0], 0, true, | |
702 | TGeoTranslation(xEnv,-yEnvM-dpar[1]-dysave-sparysave,-(kSizeVSupExt[0]+spar[2]))); | |
703 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HBC[2], 0, true, | |
704 | TGeoTranslation(-xEnv,-yEnvP-dpar[1]-dysave-sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
705 | ||
706 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HBC[0],iVolNum++,3, spar); | |
707 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HBC[2],iVolNum++,3, spar); | |
708 | ||
709 | // 3 vertical | |
710 | spar[0]=dxsave-kAvoidExtrusion; | |
711 | spar[1]=kSizeSupport1V[1]; | |
712 | spar[2]=kSizeSupport1V[2]; | |
713 | sparysave=spar[1]; | |
714 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VBC[0], 0, true, | |
715 | TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+dysave,kZm-dpar[2]-spar[2])); | |
716 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VBC[2], 0, true, | |
717 | TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+dysave,kZp+dpar[2]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
718 | ||
719 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VBC[0],iVolNum++,3, spar); | |
720 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VBC[2],iVolNum++,3, spar); | |
721 | ||
722 | // 3 horizontal | |
723 | spar[0]=dxsave-kAvoidExtrusion; | |
724 | spar[1]=kSizeSupport1H[1]; | |
725 | spar[2]=kSizeSupport1H[2]; | |
726 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HBC[0], 0, true, | |
727 | TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+dysave+sparysave,kZm-(dpar[2]-spar[2]))); | |
728 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HBC[2], 0, true, | |
729 | TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+dysave+sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
730 | ||
731 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HBC[0],iVolNum++,3, spar); | |
732 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HBC[2],iVolNum++,3, spar); | |
733 | ||
734 | // gas pipe (high) | |
735 | ppar[0]=kSizeGasPipe[0]; | |
736 | ppar[1]=kSizeGasPipe[1]; | |
737 | ppar[2]=dxsave-kAvoidExtrusion; | |
738 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2BC[0], 0, true, | |
739 | TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+dysave+sparysave+kOffsetGasPipe,kZm),rsupportpipe); | |
740 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2BC[2], 0, true, | |
741 | TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+dysave+sparysave+kOffsetGasPipe,kZp),rsupportpipe); | |
742 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2BC[0],iVolNum++,3, ppar); | |
743 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2BC[2],iVolNum++,3, ppar); | |
744 | ||
745 | // 4 vertical | |
746 | spar[0]=dxsave-kAvoidExtrusion; | |
747 | spar[1]=kSizeSupport2V[1]; | |
748 | spar[2]=kSizeSupport2V[2]; | |
749 | sparysave=spar[1]+kSizeSupport2H[1]; | |
750 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VBC[0], 0, true, | |
751 | TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+dysave,-(kSizeVSupExt[0]+spar[2]))); | |
752 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VBC[2], 0, true, | |
753 | TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+dysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
754 | ||
755 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VBC[0],iVolNum++,3, spar); | |
756 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VBC[2],iVolNum++,3, spar); | |
757 | ||
758 | // 4 horizontal | |
759 | spar[0]=dxsave-kAvoidExtrusion; | |
760 | spar[1]=kSizeSupport2H[1]; | |
761 | spar[2]=kSizeSupport2H[2]; | |
762 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HBC[0], 0, true, | |
763 | TGeoTranslation(xEnv+xpossave,-yEnvM+dpar[1]+dysave+sparysave,-(kSizeVSupExt[0]+spar[2]))); | |
764 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HBC[2], 0, true, | |
765 | TGeoTranslation(-xEnv-xpossave,-yEnvP+dpar[1]+dysave+sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
766 | ||
767 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HBC[0],iVolNum++,3, spar); | |
768 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HBC[2],iVolNum++,3, spar); | |
769 | ||
770 | // X horizontal | |
771 | spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio; | |
772 | spar[1]=kSizeSupportXH[1]; | |
773 | spar[2]=kSizeSupportXH[2]; | |
774 | sparysavex=spar[1]; | |
775 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHBC[0], 0, true, | |
776 | TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvM+dpar[1]+dysave+sparysave+1.0,-(kSizeVSupExt[0]+spar[2]))); | |
777 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHBC[2], 0, true, | |
778 | 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.)); | |
779 | ||
780 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHBC[0],iVolNum++,3, spar); | |
781 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHBC[2],iVolNum++,3, spar); | |
782 | ||
783 | // X vertical | |
784 | spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio; | |
785 | spar[1]=kSizeSupportXV[1]; | |
786 | spar[2]=kSizeSupportXV[2]; | |
787 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVBC[0], 0, true, | |
788 | TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvM+dpar[1]+dysave+sparysave+1.0+sparysavex+spar[1],-(kSizeVSupExt[0]+spar[2]))); | |
789 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVBC[2], 0, true, | |
790 | 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.)); | |
791 | ||
792 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVBC[0],iVolNum++,3, spar); | |
793 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVBC[2],iVolNum++,3, spar); | |
794 | ||
795 | // B | |
796 | // 1 vertical | |
797 | spar[0]=dxsave-kAvoidExtrusion; | |
798 | spar[1]=kSizeSupport1V[1]; | |
799 | spar[2]=kSizeSupport1V[2]; | |
800 | sparysave=spar[1]; | |
801 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VBC[1], 0, true, | |
802 | TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-dysave,kZm-dpar[2]-spar[2])); | |
803 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VBC[3], 0, true, | |
804 | TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-dysave,kZp+dpar[2]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
805 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VBC[1],iVolNum++,3, spar); | |
806 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VBC[3],iVolNum++,3, spar); | |
807 | ||
808 | ||
809 | // 1 horizontal | |
810 | spar[0]=dxsave-kAvoidExtrusion; | |
811 | spar[1]=kSizeSupport1H[1]; | |
812 | spar[2]=kSizeSupport1H[2]; | |
813 | ||
814 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HBC[1], 0, true, | |
815 | TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-dysave-sparysave,kZm-(dpar[2]-spar[2]))); | |
816 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HBC[3], 0, true, | |
817 | TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-dysave-sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
818 | ||
819 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HBC[1],iVolNum++,3, spar); | |
820 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HBC[3],iVolNum++,3, spar); | |
821 | ||
822 | // gas pipe (low) | |
823 | ppar[0]=kSizeGasPipe[0]; | |
824 | ppar[1]=kSizeGasPipe[1]; | |
825 | ppar[2]=dxsave-kAvoidExtrusion; | |
826 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1BC[1], 0, true, | |
827 | TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-dysave-sparysave-kOffsetGasPipe,kZm),rsupportpipe); | |
828 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1BC[3], 0, true, | |
829 | TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-dysave-sparysave-kOffsetGasPipe,kZp),rsupportpipe); | |
830 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1BC[1],iVolNum++,3, ppar); | |
831 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1BC[3],iVolNum++,3, ppar); | |
832 | ||
833 | // 2 vertical | |
834 | spar[0]=dxsave-kAvoidExtrusion; | |
835 | spar[1]=kSizeSupport2V[1]; | |
836 | spar[2]=kSizeSupport2V[2]; | |
837 | sparysave=spar[1]+kSizeSupport2H[1]; | |
838 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VBC[1], 0, true, | |
839 | TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-dysave,-(kSizeVSupExt[0]+spar[2]))); | |
840 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VBC[3], 0, true, | |
841 | TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-dysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
842 | ||
843 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VBC[1],iVolNum++,3, spar); | |
844 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VBC[3],iVolNum++,3, spar); | |
845 | ||
846 | // 2 horizontal | |
847 | spar[0]=dxsave-kAvoidExtrusion; | |
848 | spar[1]=kSizeSupport2H[1]; | |
849 | spar[2]=kSizeSupport2H[2]; | |
850 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HBC[1], 0, true, | |
851 | TGeoTranslation(xEnv+xpossave,yEnvM-dpar[1]-dysave-sparysave,-(kSizeVSupExt[0]+spar[2]))); | |
852 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HBC[3], 0, true, | |
853 | TGeoTranslation(-xEnv-xpossave,yEnvP-dpar[1]-dysave-sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
854 | ||
855 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HBC[1],iVolNum++,3, spar); | |
856 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HBC[3],iVolNum++,3, spar); | |
857 | ||
858 | // 3 vertical | |
859 | spar[0]=dpar[0]; | |
860 | spar[1]=kSizeSupport1V[1]; | |
861 | spar[2]=kSizeSupport1V[2]; | |
862 | sparysave=spar[1]; | |
863 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VBC[1], 0, true, | |
864 | TGeoTranslation(xEnv,yEnvM+dpar[1]+dysave,kZm-dpar[2]-spar[2])); | |
865 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VBC[3], 0, true, | |
866 | TGeoTranslation(-xEnv,yEnvP+dpar[1]+dysave,kZp+dpar[2]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
867 | ||
868 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VBC[1],iVolNum++,3, spar); | |
869 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VBC[3],iVolNum++,3, spar); | |
870 | ||
871 | // 3 horizontal | |
872 | spar[1]=kSizeSupport1H[1]; | |
873 | spar[2]=kSizeSupport1H[2]; | |
874 | ||
875 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HBC[1], 0, true, | |
876 | TGeoTranslation(xEnv,yEnvM+dpar[1]+dysave+sparysave,kZm-(dpar[2]-spar[2]))); | |
877 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HBC[3], 0, true, | |
878 | TGeoTranslation(-xEnv,yEnvP+dpar[1]+dysave+sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
879 | ||
880 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HBC[1],iVolNum++,3, spar); | |
881 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HBC[3],iVolNum++,3, spar); | |
882 | ||
883 | // gas pipe (high) | |
884 | ppar[0]=kSizeGasPipe[0]; | |
885 | ppar[1]=kSizeGasPipe[1]; | |
886 | ppar[2]=dpar[0]; | |
887 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2BC[1], 0, true, | |
888 | TGeoTranslation(xEnv,yEnvM+dpar[1]+dysave+sparysave+kOffsetGasPipe,kZm),rsupportpipe); | |
889 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2BC[3], 0, true, | |
890 | TGeoTranslation(-xEnv,yEnvP+dpar[1]+dysave+sparysave+kOffsetGasPipe,kZp),rsupportpipe); | |
891 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2BC[1],iVolNum++,3, ppar); | |
892 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2BC[3],iVolNum++,3, ppar); | |
893 | ||
894 | // 4 vertical | |
895 | spar[0]=dpar[0]; | |
896 | spar[1]=kSizeSupport2V[1]; | |
897 | spar[2]=kSizeSupport2V[2]; | |
898 | sparysave=spar[1]+kSizeSupport2H[1]; | |
899 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VBC[1], 0, true, | |
900 | TGeoTranslation(xEnv,yEnvM+dpar[1]+dysave,-(kSizeVSupExt[0]+spar[2]))); | |
901 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VBC[3], 0, true, | |
902 | TGeoTranslation(-xEnv,yEnvP+dpar[1]+dysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
903 | ||
904 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VBC[1],iVolNum++,3, spar); | |
905 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VBC[3],iVolNum++,3, spar); | |
906 | ||
907 | // 4 horizontal | |
908 | spar[1]=kSizeSupport2H[1]; | |
909 | spar[2]=kSizeSupport2H[2]; | |
910 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HBC[1], 0, true, | |
911 | TGeoTranslation(xEnv,yEnvM+dpar[1]+dysave+sparysave,-(kSizeVSupExt[0]+spar[2]))); | |
912 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HBC[3], 0, true, | |
913 | TGeoTranslation(-xEnv,yEnvP+dpar[1]+dysave+sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
914 | ||
915 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HBC[1],iVolNum++,3, spar); | |
916 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HBC[3],iVolNum++,3, spar); | |
917 | ||
918 | // X horizontal | |
919 | spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio; | |
920 | spar[1]=kSizeSupportXH[1]; | |
921 | spar[2]=kSizeSupportXH[2]; | |
922 | sparysavex=spar[1]; | |
923 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHBC[1], 0, true, | |
924 | TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvM+dpar[1]+dysave+sparysave+1.0,-(kSizeVSupExt[0]+spar[2]))); | |
925 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHBC[3], 0, true, | |
926 | 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.)); | |
927 | ||
928 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHBC[1],iVolNum++,3, spar); | |
929 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHBC[3],iVolNum++,3, spar); | |
930 | ||
931 | // X vertical | |
932 | spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio; | |
933 | spar[1]=kSizeSupportXV[1]; | |
934 | spar[2]=kSizeSupportXV[2]; | |
935 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVBC[1], 0, true, | |
936 | TGeoTranslation(spar[0]+kYVSup[0]*zRatio,yEnvM+dpar[1]+dysave+sparysave+1.0+sparysavex+spar[1],-(kSizeVSupExt[0]+spar[2]))); | |
937 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVBC[3], 0, true, | |
938 | 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.)); | |
939 | ||
940 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVBC[1],iVolNum++,3, spar); | |
941 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVBC[3],iVolNum++,3, spar); | |
942 | ||
943 | ||
944 | // chamber type D, E and F (same size) | |
945 | // D | |
946 | yEnvPsave = yEnvP; | |
947 | yEnvMsave = yEnvM; | |
948 | yEnvP = (yEnvMsave + kYMIN * zRatio ) * zpm + kYMIN * zRatio; | |
949 | yEnvM = (yEnvPsave + kYMIN * zRatio ) * zmp + kYMIN * zRatio; | |
950 | dpar[0] = (kXMAX/2.)*zRatio; | |
951 | dpar[1] = kYMIN*zRatio; | |
952 | ||
953 | detElemId = (10+icount+1)*100+16; | |
954 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[2], detElemId, true, TGeoTranslation(xEnv,-yEnvP,kZp)); | |
955 | detElemId = (10+icount+1)*100+2; | |
956 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[6], detElemId, true, TGeoTranslation(xEnv, yEnvP,kZp)); | |
957 | detElemId = (10+icount+1)*100+11; | |
958 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[11], detElemId, true, TGeoTranslation(-xEnv,-yEnvM,kZm),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
959 | detElemId = (10+icount+1)*100+7; | |
960 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[15], detElemId, true, TGeoTranslation(-xEnv, yEnvM,kZm),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
961 | ||
962 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[2],iVolNum++,3, dpar); | |
963 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[6],iVolNum++,3, dpar); | |
964 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[11],iVolNum++,3, dpar); | |
965 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[15],iVolNum++,3, dpar); | |
966 | ||
967 | // horizontal cable support chamber type D | |
968 | ||
969 | spar[0]=dpar[0]-(kYVSup[0]/2.)*zRatio; | |
970 | spar[1]=kSizeSupportCable[1]; | |
971 | spar[2]=kSizeSupportCable[2]; | |
972 | for(Int_t in=0;in<3;in++){ | |
973 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHD[in], 0, true, TGeoTranslation(xEnv+kYVSup[0]/2.*zRatio,-(yEnvP+dpar[1]/2.*(in-1)),-(kSizeVSupExt[0]+spar[2]))); | |
974 | 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]))); | |
975 | 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.)); | |
976 | 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.)); | |
977 | } | |
978 | for(Int_t ii=0;ii<12;ii++) | |
979 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHD[ii],iVolNum++,3, spar); | |
980 | ||
981 | // angular supports chamber type D | |
982 | // 1 vertical | |
983 | ||
984 | spar[0]=dpar[0]; | |
985 | spar[1]=kSizeSupport1V[1]; | |
986 | spar[2]=kSizeSupport1V[2]; | |
987 | sparysave=spar[1]; | |
988 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VD[0], 0, true, | |
989 | TGeoTranslation(xEnv,-yEnvP-dpar[1],kZp+dpar[2]+spar[2])); | |
990 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VD[1], 0, true, | |
991 | TGeoTranslation(xEnv,yEnvP-dpar[1],kZp+dpar[2]+spar[2])); | |
992 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VD[2], 0, true, | |
993 | TGeoTranslation(-xEnv,-yEnvM-dpar[1],kZm-dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
994 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VD[3], 0, true, | |
995 | TGeoTranslation(-xEnv,yEnvM-dpar[1],kZm-dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
996 | ||
997 | for(i=0;i<4;i++) | |
998 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VD[i],iVolNum++,3, spar); | |
999 | ||
1000 | ||
1001 | // 1 horizontal | |
1002 | ||
1003 | spar[0]=dpar[0]; | |
1004 | spar[1]=kSizeSupport1H[1]; | |
1005 | spar[2]=kSizeSupport1H[2]; | |
1006 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HD[0], 0, true, | |
1007 | TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2])); | |
1008 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HD[1], 0, true, | |
1009 | TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2])); | |
1010 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HD[2], 0, true, | |
1011 | TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1012 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HD[3], 0, true, | |
1013 | TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1014 | ||
1015 | for(i=0;i<4;i++) | |
1016 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HD[i],iVolNum++,3, spar); | |
1017 | ||
1018 | // gas pipe (low) | |
1019 | ppar[0]=kSizeGasPipe[0]; | |
1020 | ppar[1]=kSizeGasPipe[1]; | |
1021 | ppar[2]=dpar[0]; | |
1022 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1D[0], 0, true, | |
1023 | TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe); | |
1024 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1D[1], 0, true, | |
1025 | TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe); | |
1026 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1D[2], 0, true, | |
1027 | TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe); | |
1028 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1D[3], 0, true, | |
1029 | TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe); | |
1030 | ||
1031 | for(i=0;i<4;i++) | |
1032 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1D[i],iVolNum++,3, ppar); | |
1033 | ||
1034 | // 2 vertical | |
1035 | ||
1036 | spar[0]=dpar[0]; | |
1037 | spar[1]=kSizeSupport2V[1]; | |
1038 | spar[2]=kSizeSupport2V[2]; | |
1039 | sparysave=spar[1]+kSizeSupport2H[1]; | |
1040 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VD[0], 0, true, | |
1041 | TGeoTranslation(xEnv,-yEnvP-dpar[1],kSizeVSupExt[0]+spar[2])); | |
1042 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VD[1], 0, true, | |
1043 | TGeoTranslation(xEnv,yEnvP-dpar[1],kSizeVSupExt[0]+spar[2])); | |
1044 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VD[2], 0, true, | |
1045 | TGeoTranslation(-xEnv,-yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1046 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VD[3], 0, true, | |
1047 | TGeoTranslation(-xEnv,yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1048 | ||
1049 | for(i=0;i<4;i++) | |
1050 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VD[i],iVolNum++,3, spar); | |
1051 | ||
1052 | // 2 horizontal | |
1053 | ||
1054 | spar[0]=dpar[0]; | |
1055 | spar[1]=kSizeSupport2H[1]; | |
1056 | spar[2]=kSizeSupport2H[2]; | |
1057 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HD[0], 0, true, | |
1058 | TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2])); | |
1059 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HD[1], 0, true, | |
1060 | TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2])); | |
1061 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HD[2], 0, true, | |
1062 | TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1063 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HD[3], 0, true, | |
1064 | TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1065 | ||
1066 | for(i=0;i<4;i++) | |
1067 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HD[i],iVolNum++,3, spar); | |
1068 | ||
1069 | // 3 vertical | |
1070 | ||
1071 | spar[0]=dpar[0]; | |
1072 | spar[1]=kSizeSupport1V[1]; | |
1073 | spar[2]=kSizeSupport1V[2]; | |
1074 | sparysave=spar[1]; | |
1075 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VD[0], 0, true, | |
1076 | TGeoTranslation(xEnv,-yEnvP+dpar[1],kZp+dpar[2]+spar[2])); | |
1077 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VD[1], 0, true, | |
1078 | TGeoTranslation(xEnv,yEnvP+dpar[1],kZp+dpar[2]+spar[2])); | |
1079 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VD[2], 0, true, | |
1080 | TGeoTranslation(-xEnv,-yEnvM+dpar[1],kZm-dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1081 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VD[3], 0, true, | |
1082 | TGeoTranslation(-xEnv,yEnvM+dpar[1],kZm-dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1083 | ||
1084 | for(i=0;i<4;i++) | |
1085 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VD[i],iVolNum++,3, spar); | |
1086 | ||
1087 | ||
1088 | // 3 horizontal | |
1089 | ||
1090 | spar[0]=dpar[0]; | |
1091 | spar[1]=kSizeSupport1H[1]; | |
1092 | spar[2]=kSizeSupport1H[2]; | |
1093 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HD[0], 0, true, | |
1094 | TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2])); | |
1095 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HD[1], 0, true, | |
1096 | TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2])); | |
1097 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HD[2], 0, true, | |
1098 | TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1099 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HD[3], 0, true, | |
1100 | TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1101 | ||
1102 | for(i=0;i<4;i++) | |
1103 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HD[i],iVolNum++,3, spar); | |
1104 | ||
1105 | // gas pipe (high) | |
1106 | ppar[0]=kSizeGasPipe[0]; | |
1107 | ppar[1]=kSizeGasPipe[1]; | |
1108 | ppar[2]=dpar[0]; | |
1109 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2D[0], 0, true, | |
1110 | TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe); | |
1111 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2D[1], 0, true, | |
1112 | TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe); | |
1113 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2D[2], 0, true, | |
1114 | TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe); | |
1115 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2D[3], 0, true, | |
1116 | TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe); | |
1117 | ||
1118 | for(i=0;i<4;i++) | |
1119 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2D[i],iVolNum++,3, ppar); | |
1120 | ||
1121 | // 4 vertical | |
1122 | ||
1123 | spar[0]=dpar[0]; | |
1124 | spar[1]=kSizeSupport2V[1]; | |
1125 | spar[2]=kSizeSupport2V[2]; | |
1126 | sparysave=spar[1]+kSizeSupport2H[1]; | |
1127 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VD[0], 0, true, | |
1128 | TGeoTranslation(xEnv,-yEnvP+dpar[1],kSizeVSupExt[0]+spar[2])); | |
1129 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VD[1], 0, true, | |
1130 | TGeoTranslation(xEnv,yEnvP+dpar[1],kSizeVSupExt[0]+spar[2])); | |
1131 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VD[2], 0, true, | |
1132 | TGeoTranslation(-xEnv,-yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1133 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VD[3], 0, true, | |
1134 | TGeoTranslation(-xEnv,yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1135 | ||
1136 | for(i=0;i<4;i++) | |
1137 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VD[i],iVolNum++,3, spar); | |
1138 | ||
1139 | // 4 horizontal | |
1140 | ||
1141 | spar[0]=dpar[0]; | |
1142 | spar[1]=kSizeSupport2H[1]; | |
1143 | spar[2]=kSizeSupport2H[2]; | |
1144 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HD[0], 0, true, | |
1145 | TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2])); | |
1146 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HD[1], 0, true, | |
1147 | TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2])); | |
1148 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HD[2], 0, true, | |
1149 | TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1150 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HD[3], 0, true, | |
1151 | TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1152 | ||
1153 | for(i=0;i<4;i++) | |
1154 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HD[i],iVolNum++,3, spar); | |
1155 | ||
1156 | // X horizontal | |
1157 | spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio; | |
1158 | spar[1]=kSizeSupportXH[1]; | |
1159 | spar[2]=kSizeSupportXH[2]; | |
1160 | sparysavex=spar[1]; | |
1161 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHD[0], 0, true, | |
1162 | TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvP+dpar[1]+sparysave+1.0,kSizeVSupExt[0]+spar[2])); | |
1163 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHD[1], 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[2], 0, true, | |
1166 | TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),yEnvM+dpar[1]+sparysave+1.0,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1167 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHD[3], 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 | ||
1170 | for(i=0;i<4;i++) | |
1171 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHD[i],iVolNum++,3, spar); | |
1172 | ||
1173 | // X vertical | |
1174 | spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio; | |
1175 | spar[1]=kSizeSupportXV[1]; | |
1176 | spar[2]=kSizeSupportXV[2]; | |
1177 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVD[0], 0, true, | |
1178 | TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],kSizeVSupExt[0]+spar[2])); | |
1179 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVD[1], 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[2], 0, true, | |
1182 | 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.)); | |
1183 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVD[3], 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 | ||
1186 | for(i=0;i<4;i++) | |
1187 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVD[i],iVolNum++,3, spar); | |
1188 | ||
1189 | // E | |
1190 | yEnvPsave = yEnvP; | |
1191 | yEnvMsave = yEnvM; | |
1192 | yEnvP = (yEnvMsave + kYMIN * zRatio ) * zpm + kYMIN * zRatio; | |
1193 | yEnvM = (yEnvPsave + kYMIN * zRatio ) * zmp + kYMIN * zRatio; | |
1194 | ||
1195 | detElemId = (10+icount+1)*100+15; | |
1196 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[1], detElemId, true, TGeoTranslation(xEnv,-yEnvM,kZm)); | |
1197 | detElemId = (10+icount+1)*100+3; | |
1198 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[7], detElemId, true, TGeoTranslation(xEnv, yEnvM,kZm)); | |
1199 | detElemId = (10+icount+1)*100+12; | |
1200 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[10], detElemId, true, TGeoTranslation(-xEnv,-yEnvP,kZp),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1201 | detElemId = (10+icount+1)*100+6; | |
1202 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[16], detElemId, true, TGeoTranslation(-xEnv, yEnvP,kZp),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1203 | ||
1204 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[1],iVolNum++,3,dpar); | |
1205 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[7],iVolNum++,3,dpar); | |
1206 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[10],iVolNum++,3,dpar); | |
1207 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[16],iVolNum++,3,dpar); | |
1208 | ||
1209 | // horizontal cable support chamber type E | |
1210 | ||
1211 | spar[0]=dpar[0]-(kYVSup[0]/2.)*zRatio; | |
1212 | spar[1]=kSizeSupportCable[1]; | |
1213 | spar[2]=kSizeSupportCable[2]; | |
1214 | for(Int_t in=0;in<3;in++){ | |
1215 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHE[in], 0, true, TGeoTranslation(xEnv+kYVSup[0]/2.*zRatio,-(yEnvM+dpar[1]/2.*(in-1)),kSizeVSupExt[0]+spar[2])); | |
1216 | 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])); | |
1217 | 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.)); | |
1218 | 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.)); | |
1219 | } | |
1220 | for(Int_t ii=0;ii<12;ii++) | |
1221 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHE[ii],iVolNum++,3, spar); | |
1222 | ||
1223 | // angular supports chamber type E | |
1224 | // 1 vertical | |
1225 | ||
1226 | spar[0]=dpar[0]; | |
1227 | spar[1]=kSizeSupport1V[1]; | |
1228 | spar[2]=kSizeSupport1V[2]; | |
1229 | sparysave=spar[1]; | |
1230 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VE[0], 0, true, | |
1231 | TGeoTranslation(xEnv,-yEnvM-dpar[1],kZm-dpar[2]-spar[2])); | |
1232 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VE[1], 0, true, | |
1233 | TGeoTranslation(xEnv,yEnvM-dpar[1],kZm-dpar[2]-spar[2])); | |
1234 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VE[2], 0, true, | |
1235 | TGeoTranslation(-xEnv,-yEnvP-dpar[1],kZp+dpar[2]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1236 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VE[3], 0, true, | |
1237 | TGeoTranslation(-xEnv,yEnvP-dpar[1],kZp+dpar[2]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1238 | ||
1239 | for(i=0;i<4;i++) | |
1240 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VE[i],iVolNum++,3, spar); | |
1241 | ||
1242 | ||
1243 | // 1 horizontal | |
1244 | ||
1245 | spar[0]=dpar[0]; | |
1246 | spar[1]=kSizeSupport1H[1]; | |
1247 | spar[2]=kSizeSupport1H[2]; | |
1248 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HE[0], 0, true, | |
1249 | TGeoTranslation(xEnv,-yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2]))); | |
1250 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HE[1], 0, true, | |
1251 | TGeoTranslation(xEnv,yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2]))); | |
1252 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HE[2], 0, true, | |
1253 | TGeoTranslation(-xEnv,-yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1254 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HE[3], 0, true, | |
1255 | TGeoTranslation(-xEnv,yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1256 | ||
1257 | for(i=0;i<4;i++) | |
1258 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HE[i],iVolNum++,3, spar); | |
1259 | ||
1260 | // gas pipe (low) | |
1261 | ppar[0]=kSizeGasPipe[0]; | |
1262 | ppar[1]=kSizeGasPipe[1]; | |
1263 | ppar[2]=dpar[0]; | |
1264 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1E[0], 0, true, | |
1265 | TGeoTranslation(xEnv,-yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe); | |
1266 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1E[1], 0, true, | |
1267 | TGeoTranslation(xEnv,yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe); | |
1268 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1E[2], 0, true, | |
1269 | TGeoTranslation(-xEnv,-yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe); | |
1270 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1E[3], 0, true, | |
1271 | TGeoTranslation(-xEnv,yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe); | |
1272 | ||
1273 | for(i=0;i<4;i++) | |
1274 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1E[i],iVolNum++,3, ppar); | |
1275 | ||
1276 | // 2 vertical | |
1277 | ||
1278 | spar[0]=dpar[0]; | |
1279 | spar[1]=kSizeSupport2V[1]; | |
1280 | spar[2]=kSizeSupport2V[2]; | |
1281 | sparysave=spar[1]+kSizeSupport2H[1]; | |
1282 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VE[0], 0, true, | |
1283 | TGeoTranslation(xEnv,-yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2]))); | |
1284 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VE[1], 0, true, | |
1285 | TGeoTranslation(xEnv,yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2]))); | |
1286 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VE[2], 0, true, | |
1287 | TGeoTranslation(-xEnv,-yEnvP-dpar[1],kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1288 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VE[3], 0, true, | |
1289 | TGeoTranslation(-xEnv,yEnvP-dpar[1],kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1290 | ||
1291 | for(i=0;i<4;i++) | |
1292 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VE[i],iVolNum++,3, spar); | |
1293 | ||
1294 | // 2 horizontal | |
1295 | ||
1296 | spar[0]=dpar[0]; | |
1297 | spar[1]=kSizeSupport2H[1]; | |
1298 | spar[2]=kSizeSupport2H[2]; | |
1299 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HE[0], 0, true, | |
1300 | TGeoTranslation(xEnv,-yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2]))); | |
1301 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HE[1], 0, true, | |
1302 | TGeoTranslation(xEnv,yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2]))); | |
1303 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HE[2], 0, true, | |
1304 | TGeoTranslation(-xEnv,-yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1305 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HE[3], 0, true, | |
1306 | TGeoTranslation(-xEnv,yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1307 | ||
1308 | for(i=0;i<4;i++) | |
1309 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HE[i],iVolNum++,3, spar); | |
1310 | ||
1311 | // 3 vertical | |
1312 | ||
1313 | spar[0]=dpar[0]; | |
1314 | spar[1]=kSizeSupport1V[1]; | |
1315 | spar[2]=kSizeSupport1V[2]; | |
1316 | sparysave=spar[1]; | |
1317 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VE[0], 0, true, | |
1318 | TGeoTranslation(xEnv,-yEnvM+dpar[1],kZm-dpar[2]-spar[2])); | |
1319 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VE[1], 0, true, | |
1320 | TGeoTranslation(xEnv,yEnvM+dpar[1],kZm-dpar[2]-spar[2])); | |
1321 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VE[2], 0, true, | |
1322 | TGeoTranslation(-xEnv,-yEnvP+dpar[1],kZp+dpar[2]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1323 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VE[3], 0, true, | |
1324 | TGeoTranslation(-xEnv,yEnvP+dpar[1],kZp+dpar[2]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1325 | ||
1326 | for(i=0;i<4;i++) | |
1327 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VE[i],iVolNum++,3, spar); | |
1328 | ||
1329 | ||
1330 | // 3 horizontal | |
1331 | ||
1332 | spar[0]=dpar[0]; | |
1333 | spar[1]=kSizeSupport1H[1]; | |
1334 | spar[2]=kSizeSupport1H[2]; | |
1335 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HE[0], 0, true, | |
1336 | TGeoTranslation(xEnv,-yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2]))); | |
1337 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HE[1], 0, true, | |
1338 | TGeoTranslation(xEnv,yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2]))); | |
1339 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HE[2], 0, true, | |
1340 | TGeoTranslation(-xEnv,-yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1341 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HE[3], 0, true, | |
1342 | TGeoTranslation(-xEnv,yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1343 | ||
1344 | for(i=0;i<4;i++) | |
1345 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HE[i],iVolNum++,3, spar); | |
1346 | ||
1347 | // gas pipe (high) | |
1348 | ppar[0]=kSizeGasPipe[0]; | |
1349 | ppar[1]=kSizeGasPipe[1]; | |
1350 | ppar[2]=dpar[0]; | |
1351 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2E[0], 0, true, | |
1352 | TGeoTranslation(xEnv,-yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe); | |
1353 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2E[1], 0, true, | |
1354 | TGeoTranslation(xEnv,yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe); | |
1355 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2E[2], 0, true, | |
1356 | TGeoTranslation(-xEnv,-yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe); | |
1357 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2E[3], 0, true, | |
1358 | TGeoTranslation(-xEnv,yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe); | |
1359 | ||
1360 | for(i=0;i<4;i++) | |
1361 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2E[i],iVolNum++,3, ppar); | |
1362 | ||
1363 | // 4 vertical | |
1364 | ||
1365 | spar[0]=dpar[0]; | |
1366 | spar[1]=kSizeSupport2V[1]; | |
1367 | spar[2]=kSizeSupport2V[2]; | |
1368 | sparysave=spar[1]+kSizeSupport2H[1]; | |
1369 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VE[0], 0, true, | |
1370 | TGeoTranslation(xEnv,-yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2]))); | |
1371 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VE[1], 0, true, | |
1372 | TGeoTranslation(xEnv,yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2]))); | |
1373 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VE[2], 0, true, | |
1374 | TGeoTranslation(-xEnv,-yEnvP+dpar[1],kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1375 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VE[3], 0, true, | |
1376 | TGeoTranslation(-xEnv,yEnvP+dpar[1],kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1377 | ||
1378 | for(i=0;i<4;i++) | |
1379 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VE[i],iVolNum++,3, spar); | |
1380 | ||
1381 | // 4 horizontal | |
1382 | ||
1383 | spar[0]=dpar[0]; | |
1384 | spar[1]=kSizeSupport2H[1]; | |
1385 | spar[2]=kSizeSupport2H[2]; | |
1386 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HE[0], 0, true, | |
1387 | TGeoTranslation(xEnv,-yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2]))); | |
1388 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HE[1], 0, true, | |
1389 | TGeoTranslation(xEnv,yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2]))); | |
1390 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HE[2], 0, true, | |
1391 | TGeoTranslation(-xEnv,-yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1392 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HE[3], 0, true, | |
1393 | TGeoTranslation(-xEnv,yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1394 | ||
1395 | for(i=0;i<4;i++) | |
1396 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HE[i],iVolNum++,3, spar); | |
1397 | ||
1398 | // X horizontal | |
1399 | spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio; | |
1400 | spar[1]=kSizeSupportXH[1]; | |
1401 | spar[2]=kSizeSupportXH[2]; | |
1402 | sparysavex=spar[1]; | |
1403 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHE[0], 0, true, | |
1404 | TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvM+dpar[1]+sparysave+1.0,-(kSizeVSupExt[0]+spar[2]))); | |
1405 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHE[1], 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[2], 0, true, | |
1408 | TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),-yEnvP+dpar[1]+sparysave+1.0,kSizeVSupExt[0]+spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1409 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHE[3], 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 | ||
1412 | for(i=0;i<4;i++) | |
1413 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHE[i],iVolNum++,3, spar); | |
1414 | ||
1415 | // X vertical | |
1416 | spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio; | |
1417 | spar[1]=kSizeSupportXV[1]; | |
1418 | spar[2]=kSizeSupportXV[2]; | |
1419 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVE[0], 0, true, | |
1420 | TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvM+dpar[1]+sparysave+1.0+sparysavex+spar[1],-(kSizeVSupExt[0]+spar[2]))); | |
1421 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVE[1], 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[2], 0, true, | |
1424 | 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.)); | |
1425 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVE[3], 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 | ||
1428 | for(i=0;i<4;i++) | |
1429 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVE[i],iVolNum++,3, spar); | |
1430 | ||
1431 | // F | |
1432 | yEnvPsave = yEnvP; | |
1433 | yEnvMsave = yEnvM; | |
1434 | yEnvP = (yEnvMsave + kYMIN * zRatio ) * zpm + kYMIN * zRatio; | |
1435 | yEnvM = (yEnvPsave + kYMIN * zRatio ) * zmp + kYMIN * zRatio; | |
1436 | ||
1437 | detElemId = (10+icount+1)*100+14; | |
1438 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[0], detElemId, true, TGeoTranslation(xEnv,-yEnvP,kZp)); | |
1439 | detElemId = (10+icount+1)*100+4; | |
1440 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[8], detElemId, true, TGeoTranslation(xEnv, yEnvP,kZp)); | |
1441 | detElemId = (10+icount+1)*100+13; | |
1442 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[9], detElemId, true, TGeoTranslation(-xEnv,-yEnvM,kZm),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1443 | detElemId = (10+icount+1)*100+5; | |
1444 | GetEnvelopes(16+icount)->AddEnvelope(volEnv[17], detElemId, true, TGeoTranslation(-xEnv, yEnvM,kZm),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1445 | ||
1446 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[0],iVolNum++,3,dpar); | |
1447 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[8],iVolNum++,3,dpar); | |
1448 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[9],iVolNum++,3,dpar); | |
1449 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAlu,volEnv[17],iVolNum++,3,dpar); | |
1450 | ||
1451 | // horizontal cable support chamber type F | |
1452 | ||
1453 | spar[0]=dpar[0]-(kYVSup[0]/2.)*zRatio; | |
1454 | spar[1]=kSizeSupportCable[1]; | |
1455 | spar[2]=kSizeSupportCable[2]; | |
1456 | for(Int_t in=0;in<3;in++){ | |
1457 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSupportHF[in], 0, true, TGeoTranslation(xEnv+kYVSup[0]/2.*zRatio,-(yEnvP+dpar[1]/2.*(in-1)),-(kSizeVSupExt[0]+spar[2]))); | |
1458 | 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]))); | |
1459 | 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.)); | |
1460 | 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.)); | |
1461 | } | |
1462 | for(Int_t ii=0;ii<12;ii++) | |
1463 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluSupportH,volEnvSupportHF[ii],iVolNum++,3, spar); | |
1464 | ||
1465 | // angular supports chamber type F | |
1466 | // 1 vertical | |
1467 | ||
1468 | spar[0]=dpar[0]; | |
1469 | spar[1]=kSizeSupport1V[1]; | |
1470 | spar[2]=kSizeSupport1V[2]; | |
1471 | sparysave=spar[1]; | |
1472 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VF[0], 0, true, | |
1473 | TGeoTranslation(xEnv,-yEnvP-dpar[1],kZp+dpar[2]+spar[2])); | |
1474 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VF[1], 0, true, | |
1475 | TGeoTranslation(xEnv,yEnvP-dpar[1],kZp+dpar[2]+spar[2])); | |
1476 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VF[2], 0, true, | |
1477 | TGeoTranslation(-xEnv,-yEnvM-dpar[1],kZm-dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1478 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1VF[3], 0, true, | |
1479 | TGeoTranslation(-xEnv,yEnvM-dpar[1],kZm-dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1480 | ||
1481 | for(i=0;i<4;i++) | |
1482 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1V,volEnvSuppAng1VF[i],iVolNum++,3, spar); | |
1483 | ||
1484 | // 1 horizontal | |
1485 | ||
1486 | spar[0]=dpar[0]; | |
1487 | spar[1]=kSizeSupport1H[1]; | |
1488 | spar[2]=kSizeSupport1H[2]; | |
1489 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HF[0], 0, true, | |
1490 | TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2])); | |
1491 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HF[1], 0, true, | |
1492 | TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,kZp+dpar[2]-spar[2])); | |
1493 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HF[2], 0, true, | |
1494 | TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1495 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng1HF[3], 0, true, | |
1496 | TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1497 | ||
1498 | for(i=0;i<4;i++) | |
1499 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport1H,volEnvSuppAng1HF[i],iVolNum++,3, spar); | |
1500 | ||
1501 | // gas pipe (low) | |
1502 | ppar[0]=kSizeGasPipe[0]; | |
1503 | ppar[1]=kSizeGasPipe[1]; | |
1504 | ppar[2]=dpar[0]; | |
1505 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1F[0], 0, true, | |
1506 | TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe); | |
1507 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1F[1], 0, true, | |
1508 | TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave-kOffsetGasPipe,kZp),rsupportpipe); | |
1509 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1F[2], 0, true, | |
1510 | TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe); | |
1511 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe1F[3], 0, true, | |
1512 | TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave-kOffsetGasPipe,kZm),rsupportpipe); | |
1513 | ||
1514 | for(i=0;i<4;i++) | |
1515 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe1F[i],iVolNum++,3, ppar); | |
1516 | ||
1517 | // 2 vertical | |
1518 | ||
1519 | spar[0]=dpar[0]; | |
1520 | spar[1]=kSizeSupport2V[1]; | |
1521 | spar[2]=kSizeSupport2V[2]; | |
1522 | sparysave=spar[1]+kSizeSupport2H[1]; | |
1523 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VF[0], 0, true, | |
1524 | TGeoTranslation(xEnv,-yEnvP-dpar[1],kSizeVSupExt[0]+spar[2])); | |
1525 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VF[1], 0, true, | |
1526 | TGeoTranslation(xEnv,yEnvP-dpar[1],kSizeVSupExt[0]+spar[2])); | |
1527 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VF[2], 0, true, | |
1528 | TGeoTranslation(-xEnv,-yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1529 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2VF[3], 0, true, | |
1530 | TGeoTranslation(-xEnv,yEnvM-dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1531 | ||
1532 | for(i=0;i<4;i++) | |
1533 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2V,volEnvSuppAng2VF[i],iVolNum++,3, spar); | |
1534 | ||
1535 | // 2 horizontal | |
1536 | ||
1537 | spar[0]=dpar[0]; | |
1538 | spar[1]=kSizeSupport2H[1]; | |
1539 | spar[2]=kSizeSupport2H[2]; | |
1540 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HF[0], 0, true, | |
1541 | TGeoTranslation(xEnv,-yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2])); | |
1542 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HF[1], 0, true, | |
1543 | TGeoTranslation(xEnv,yEnvP-dpar[1]-sparysave,kSizeVSupExt[0]+spar[2])); | |
1544 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HF[2], 0, true, | |
1545 | TGeoTranslation(-xEnv,-yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1546 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng2HF[3], 0, true, | |
1547 | TGeoTranslation(-xEnv,yEnvM-dpar[1]-sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1548 | ||
1549 | for(i=0;i<4;i++) | |
1550 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport2H,volEnvSuppAng2HF[i],iVolNum++,3, spar); | |
1551 | ||
1552 | // 3 vertical | |
1553 | ||
1554 | spar[0]=dpar[0]; | |
1555 | spar[1]=kSizeSupport1V[1]; | |
1556 | spar[2]=kSizeSupport1V[2]; | |
1557 | sparysave=spar[1]; | |
1558 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VF[0], 0, true, | |
1559 | TGeoTranslation(xEnv,-yEnvP+dpar[1],kZp+dpar[2]+spar[2])); | |
1560 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VF[1], 0, true, | |
1561 | TGeoTranslation(xEnv,yEnvP+dpar[1],kZp+dpar[2]+spar[2])); | |
1562 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VF[2], 0, true, | |
1563 | TGeoTranslation(-xEnv,-yEnvM+dpar[1],kZm-dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1564 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3VF[3], 0, true, | |
1565 | TGeoTranslation(-xEnv,yEnvM+dpar[1],kZm-dpar[2]-spar[2]),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1566 | ||
1567 | for(i=0;i<4;i++) | |
1568 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3V,volEnvSuppAng3VF[i],iVolNum++,3, spar); | |
1569 | ||
1570 | // 3 horizontal | |
1571 | ||
1572 | spar[0]=dpar[0]; | |
1573 | spar[1]=kSizeSupport1H[1]; | |
1574 | spar[2]=kSizeSupport1H[2]; | |
1575 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HF[0], 0, true, | |
1576 | TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2])); | |
1577 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HF[1], 0, true, | |
1578 | TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,kZp+dpar[2]-spar[2])); | |
1579 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HF[2], 0, true, | |
1580 | TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1581 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng3HF[3], 0, true, | |
1582 | TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,kZm-(dpar[2]-spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1583 | ||
1584 | for(i=0;i<4;i++) | |
1585 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport3H,volEnvSuppAng3HF[i],iVolNum++,3, spar); | |
1586 | ||
1587 | // gas pipe (high) | |
1588 | ppar[0]=kSizeGasPipe[0]; | |
1589 | ppar[1]=kSizeGasPipe[1]; | |
1590 | ppar[2]=dpar[0]; | |
1591 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2F[0], 0, true, | |
1592 | TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe); | |
1593 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2F[1], 0, true, | |
1594 | TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave+kOffsetGasPipe,kZp),rsupportpipe); | |
1595 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2F[2], 0, true, | |
1596 | TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe); | |
1597 | GetEnvelopes(16+icount)->AddEnvelope(volEnvInoxGasPipe2F[3], 0, true, | |
1598 | TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave+kOffsetGasPipe,kZm),rsupportpipe); | |
1599 | ||
1600 | for(i=0;i<4;i++) | |
1601 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volInoxGasPipe,volEnvInoxGasPipe2F[i],iVolNum++,3, ppar); | |
1602 | ||
1603 | // 4 vertical | |
1604 | ||
1605 | spar[0]=dpar[0]; | |
1606 | spar[1]=kSizeSupport2V[1]; | |
1607 | spar[2]=kSizeSupport2V[2]; | |
1608 | sparysave=spar[1]+kSizeSupport2H[1]; | |
1609 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VF[0], 0, true, | |
1610 | TGeoTranslation(xEnv,-yEnvP+dpar[1],kSizeVSupExt[0]+spar[2])); | |
1611 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VF[1], 0, true, | |
1612 | TGeoTranslation(xEnv,yEnvP+dpar[1],kSizeVSupExt[0]+spar[2])); | |
1613 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VF[2], 0, true, | |
1614 | TGeoTranslation(-xEnv,-yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1615 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4VF[3], 0, true, | |
1616 | TGeoTranslation(-xEnv,yEnvM+dpar[1],-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1617 | ||
1618 | for(i=0;i<4;i++) | |
1619 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4V,volEnvSuppAng4VF[i],iVolNum++,3, spar); | |
1620 | ||
1621 | // 4 horizontal | |
1622 | ||
1623 | spar[0]=dpar[0]; | |
1624 | spar[1]=kSizeSupport2H[1]; | |
1625 | spar[2]=kSizeSupport2H[2]; | |
1626 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HF[0], 0, true, | |
1627 | TGeoTranslation(xEnv,-yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2])); | |
1628 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HF[1], 0, true, | |
1629 | TGeoTranslation(xEnv,yEnvP+dpar[1]+sparysave,kSizeVSupExt[0]+spar[2])); | |
1630 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HF[2], 0, true, | |
1631 | TGeoTranslation(-xEnv,-yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1632 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAng4HF[3], 0, true, | |
1633 | TGeoTranslation(-xEnv,yEnvM+dpar[1]+sparysave,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1634 | ||
1635 | for(i=0;i<4;i++) | |
1636 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupport4H,volEnvSuppAng4HF[i],iVolNum++,3, spar); | |
1637 | ||
1638 | ||
1639 | // X horizontal | |
1640 | spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio; | |
1641 | spar[1]=kSizeSupportXH[1]; | |
1642 | spar[2]=kSizeSupportXH[2]; | |
1643 | sparysavex=spar[1]; | |
1644 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHF[0], 0, true, | |
1645 | TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvP+dpar[1]+sparysave+1.0,kSizeVSupExt[0]+spar[2])); | |
1646 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHF[1], 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[2], 0, true, | |
1649 | TGeoTranslation(-(spar[0]+kYVSup[0]*zRatio),-yEnvM+dpar[1]+sparysave+1.0,-(kSizeVSupExt[0]+spar[2])),TGeoRotation("rot1",90.,180.,90.,90.,180.,0.)); | |
1650 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXHF[3], 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 | ||
1653 | for(i=0;i<4;i++) | |
1654 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXH,volEnvSuppAngXHF[i],iVolNum++,3, spar); | |
1655 | ||
1656 | // X vertical | |
1657 | spar[0]=(kYVSup[3]-kYVSup[0])/2.*zRatio; | |
1658 | spar[1]=kSizeSupportXV[1]; | |
1659 | spar[2]=kSizeSupportXV[2]; | |
1660 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVF[0], 0, true, | |
1661 | TGeoTranslation(spar[0]+kYVSup[0]*zRatio,-yEnvP+dpar[1]+sparysave+1.0+sparysavex+spar[1],kSizeVSupExt[0]+spar[2])); | |
1662 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVF[1], 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[2], 0, true, | |
1665 | 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.)); | |
1666 | GetEnvelopes(16+icount)->AddEnvelope(volEnvSuppAngXVF[3], 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 | ||
1669 | for(i=0;i<4;i++) | |
1670 | GetEnvelopes(16+icount)->AddEnvelopeConstituentParam(volAluAngSupportXV,volEnvSuppAngXVF[i],iVolNum++,3, spar); | |
1671 | ||
1672 | } // end loop on detection planes | |
1673 | } // end loop on stations | |
1674 | } | |
1675 | ||
1676 | //______________________________________________________________________________ | |
1677 | void AliMUONTriggerGeometryBuilder::SetVolumes() | |
1678 | { | |
1679 | /// Defines the volumes for the trigger chambers. | |
1680 | ||
1681 | if (gAlice->GetModule("SHIL")) { | |
1682 | SetMotherVolume(16, "YOUT2"); | |
1683 | SetMotherVolume(17, "YOUT2"); | |
1684 | SetMotherVolume(18, "YOUT2"); | |
1685 | SetMotherVolume(19, "YOUT2"); | |
1686 | } | |
1687 | ||
1688 | SetVolume(16, "SC11"); | |
1689 | SetVolume(17, "SC12"); | |
1690 | SetVolume(18, "SC13"); | |
1691 | SetVolume(19, "SC14"); | |
1692 | } | |
1693 | ||
1694 | //______________________________________________________________________________ | |
1695 | void AliMUONTriggerGeometryBuilder::SetTransformations() | |
1696 | { | |
1697 | /// Defines the transformations for the trigger chambers. | |
1698 | ||
1699 | TGeoRotation st345inclination("rotbeam"); | |
1700 | st345inclination.RotateX(-AliMUONConstants::St345Inclination()); | |
1701 | ||
1702 | Double_t zpos1= AliMUONConstants::DefaultChamberZ(10); | |
1703 | SetTransformation(16, TGeoTranslation(0., 0, zpos1), st345inclination); | |
1704 | ||
1705 | zpos1= AliMUONConstants::DefaultChamberZ(11); | |
1706 | SetTransformation(17, TGeoTranslation(0., 0, zpos1), st345inclination); | |
1707 | ||
1708 | zpos1= AliMUONConstants::DefaultChamberZ(12); | |
1709 | SetTransformation(18, TGeoTranslation(0., 0, zpos1), st345inclination); | |
1710 | ||
1711 | zpos1= AliMUONConstants::DefaultChamberZ(13); | |
1712 | SetTransformation(19, TGeoTranslation(0., 0, zpos1), st345inclination); | |
1713 | } | |
1714 | ||
1715 | //______________________________________________________________________________ | |
1716 | void AliMUONTriggerGeometryBuilder::SetSensitiveVolumes() | |
1717 | { | |
1718 | /// Defines the sensitive volumes for trigger station chambers. | |
1719 | ||
1720 | GetGeometry(16)->SetSensitiveVolume("S11G"); | |
1721 | GetGeometry(17)->SetSensitiveVolume("S12G"); | |
1722 | GetGeometry(18)->SetSensitiveVolume("S13G"); | |
1723 | GetGeometry(19)->SetSensitiveVolume("S14G"); | |
1724 | } | |
1725 |