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