Line data Source code
1 : /**************************************************************************
2 : * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 : * *
4 : * Author: The ALICE Off-line Project. *
5 : * Contributors are mentioned in the code where appropriate. *
6 : * *
7 : * Permission to use, copy, modify and distribute this software and its *
8 : * documentation strictly for non-commercial purposes is hereby granted *
9 : * without fee, provided that the above copyright notice appears in all *
10 : * copies and that both the copyright notice and this permission notice *
11 : * appear in the supporting documentation. The authors make no claims *
12 : * about the suitability of this software for any purpose. It is *
13 : * provided "as is" without express or implied warranty. *
14 : **************************************************************************/
15 :
16 : // $Id$
17 :
18 : //-----------------------------------------------------------------------------
19 : // Class AliMUONSt2GeometryBuilderV2
20 : // ---------------------------------
21 : // MUON Station2 coarse geometry construction class.
22 : // Author: SANJOY PAL ,Prof. SUKALYAN CHATTOPADHAYAY [SINP, KOLKATA]
23 : // & Dr.SHAKEEL AHMAD (AMU), INDIA
24 : //-----------------------------------------------------------------------------
25 :
26 :
27 : #include <TVirtualMC.h>
28 : #include <TGeoMatrix.h>
29 : #include <Riostream.h>
30 : #include <TArrayI.h>
31 :
32 : #include "AliRun.h"
33 : #include "AliLog.h"
34 :
35 : #include "AliMUONSt2GeometryBuilderV2.h"
36 : #include "AliMUON.h"
37 : #include "AliMUONConstants.h"
38 : #include "AliMUONGeometryModule.h"
39 : #include "AliMUONGeometryEnvelopeStore.h"
40 : #include "AliMUONConstants.h"
41 :
42 : #define PI 3.14159
43 :
44 : /// \cond CLASSIMP
45 16 : ClassImp(AliMUONSt2GeometryBuilderV2)
46 : /// \endcond
47 :
48 : //______________________________________________________________________________
49 : AliMUONSt2GeometryBuilderV2::AliMUONSt2GeometryBuilderV2(AliMUON* muon)
50 1 : : AliMUONVGeometryBuilder(2, 2),
51 1 : fMUON(muon)
52 5 : {
53 : /// Standard constructor
54 :
55 2 : }
56 :
57 : //______________________________________________________________________________
58 : AliMUONSt2GeometryBuilderV2::AliMUONSt2GeometryBuilderV2()
59 12 : : AliMUONVGeometryBuilder(),
60 12 : fMUON(0)
61 60 : {
62 : /// Default constructor
63 24 : }
64 :
65 : //______________________________________________________________________________
66 : AliMUONSt2GeometryBuilderV2::~AliMUONSt2GeometryBuilderV2()
67 52 : {
68 : /// Destructor
69 52 : }
70 :
71 : //
72 : // public methods
73 : //
74 :
75 : //______________________________________________________________________________
76 : void AliMUONSt2GeometryBuilderV2::CreateGeometry()
77 : {
78 : /// Geometry construction
79 :
80 : //
81 : //********************************************************************
82 : // Station 2 **
83 : //********************************************************************
84 : // indices 1 and 2 for first and second chambers in the station
85 : // iChamber (first chamber) kept for other quanties than Z,
86 : // assumed to be the same in both chambers
87 :
88 : // Get tracking medias Ids
89 2 : Int_t *idtmed = fMUON->GetIdtmed()->GetArray()-1099;
90 1 : Int_t idAir = idtmed[1100]; // medium 1
91 1 : Int_t idGas = idtmed[1108]; // medium Ar-CO2 gas (80%+20%)
92 1 : Int_t idPCB = idtmed[1122]; // medium FR4
93 1 : Int_t idCU = idtmed[1110]; // medium copper
94 1 : Int_t idRoha = idtmed[1113]; // medium roha cell
95 1 : Int_t idPGF30= idtmed[1123]; // medium for Frame Eq.to Bakelite
96 : //Int_t idScru = idtmed[1128]; // screw material - Stainless Steel(18%Cr,9%Ni,Fe)
97 :
98 :
99 :
100 : /*########################################################################################
101 : Create volume for one Quadrant
102 : ##########################################################################################*/
103 1 : Float_t tpar1[5];
104 1 : tpar1[0] = 20.55;
105 1 : tpar1[1] = 123.5;
106 1 : tpar1[2] = 6.8/2;
107 1 : tpar1[3] = -12.0;
108 1 : tpar1[4] = 102.0;
109 :
110 :
111 1 : TVirtualMC::GetMC()->Gsvolu("SQM3","TUBS", idAir, tpar1, 5);
112 1 : TVirtualMC::GetMC()->Gsvolu("SQM4","TUBS", idAir, tpar1, 5);
113 :
114 :
115 : //==================================================================================
116 : // Plane
117 : //==================================================================================
118 :
119 : //Thickness of variour parts
120 : Float_t zCu = 0.005; // eff. cu in cathode pcb
121 : Float_t zCbb = 0.04; //cathode pcb
122 : Float_t zRoha = 2.5; // Rhocell
123 : Float_t zMeb = 0.04; //Mech. exit board //0.08
124 : Float_t zEeb = 0.04; //Effective electronic readout board //0.02
125 :
126 : //starting Z-positions of various parts--- in Plane-1
127 : Float_t zposCu = 0.25; // 2.5 mm => gap between anode & chatode plane
128 : Float_t zposCbb = zposCu + zCu;
129 : Float_t zposRoha = zposCbb + zCbb;
130 : Float_t zposMeb = zposRoha + zRoha;
131 : Float_t zposEeb = zposMeb + zMeb;
132 :
133 1 : Float_t zposCuBar = zposCu + zCu/2.; //for segment 0 & 6
134 1 : Float_t zposCbbBar = zposCbb + zCbb/2.;
135 1 : Float_t zposRohaBar = zposRoha + zRoha/2.;
136 1 : Float_t zposMebBar = zposMeb + zMeb/2.;
137 1 : Float_t zposEebBar = zposEeb + zEeb/2.;
138 :
139 :
140 : //Cathode PCB + Copper sheet + Rohacell + mech exit board + eff. electronic exit board
141 :
142 : //Segment-0 ~~~Horizantal box ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
143 1 : Float_t bparH[3];
144 1 : bparH[0] = 95.5/2.; // extension beyond 0 deg in x direction // 94.5
145 1 : bparH[1] = 1.2/2.; // extension beyond 0 deg in y direction (3.7[total extn] - 2.5[frame dim])
146 1 : bparH[2] = zCu/2.; //Thickness of Copper sheet
147 1 : TVirtualMC::GetMC()->Gsvolu("SCU0L", "BOX", idCU, bparH, 3);
148 :
149 1 : bparH[2] = zCbb/2.; // thickness of cathode sheet in z direction
150 1 : TVirtualMC::GetMC()->Gsvolu("SCB0L", "BOX", idPCB, bparH, 3);
151 :
152 1 : bparH[2] = zRoha/2.; //Thickness of Roha cell
153 1 : TVirtualMC::GetMC()->Gsvolu("SRH0L", "BOX", idRoha, bparH, 3);
154 :
155 1 : bparH[2] = zMeb/2; //Thickness of mechanical exit board
156 1 : TVirtualMC::GetMC()->Gsvolu("SMB0L", "BOX", idPCB, bparH, 3);
157 :
158 1 : bparH[2] = zEeb/2; //Thickness of effective electronic exit board
159 1 : TVirtualMC::GetMC()->Gsvolu("SEB0L", "BOX", idCU, bparH, 3);
160 :
161 : //Segment-1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
162 1 : Float_t pgpar[10]; // polygon
163 1 : pgpar[0] = 0.; // initial angle
164 1 : pgpar[1] = 90.; // increment in angle starting from initial angle
165 1 : pgpar[2] = 5; // number of side
166 1 : pgpar[3] = 2.; // number of plane
167 1 : pgpar[4] = -zCu/2.; // z-position of the first plane
168 1 : pgpar[5] = 23.1; // innner radius first plane
169 1 : pgpar[6] = 117.6; // outer radious first plane
170 1 : pgpar[7] = zCu/2.; // z-position of the second plane
171 1 : pgpar[8] = pgpar[5]; // innner radius of second plane
172 1 : pgpar[9] = pgpar[6]; // outer radious of second plane
173 1 : TVirtualMC::GetMC()->Gsvolu("SCU1L", "PGON", idCU, pgpar, 10);
174 :
175 1 : pgpar[4] = -zCbb/2.; // z-position of the first plane
176 1 : pgpar[7] = zCbb/2.; // Thickness of copper-sheet
177 1 : TVirtualMC::GetMC()->Gsvolu("SCB1L", "PGON", idPCB, pgpar, 10);
178 :
179 1 : pgpar[4] = -zRoha/2.; // Thickness of Roha cell
180 1 : pgpar[7] = zRoha/2.; // Thickness of Roha cell
181 1 : TVirtualMC::GetMC()->Gsvolu("SRH1L", "PGON", idRoha, pgpar, 10);
182 :
183 1 : pgpar[4] = -zMeb/2.; // Thickness of mechanical exit board
184 1 : pgpar[7] = zMeb/2.; // Thickness of mechanical exit board
185 1 : TVirtualMC::GetMC()->Gsvolu("SMB1L", "PGON", idPCB, pgpar, 10);
186 :
187 1 : pgpar[4] = -zEeb/2.; // Thickness of electronic readout board
188 1 : pgpar[7] = zEeb/2.; // Thickness of electronic readout board
189 1 : TVirtualMC::GetMC()->Gsvolu("SEB1L", "PGON", idCU, pgpar, 10);
190 :
191 :
192 : //Segment-2 - vertical box (simalar to horizontal bar as in Segment 0)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
193 :
194 1 : Float_t bparV[3];
195 :
196 1 : bparV[0] = 1.0/2.;
197 1 : bparV[1] = 95.5/2.; // 94.5
198 1 : bparV[2] = zCu/2.;
199 1 : TVirtualMC::GetMC()->Gsvolu("SCU2L", "BOX", idCU, bparV, 3);
200 :
201 1 : bparV[2] = zCbb/2.;
202 1 : TVirtualMC::GetMC()->Gsvolu("SCB2L", "BOX", idPCB, bparV, 3);
203 :
204 :
205 1 : bparV[2] = zRoha/2.;
206 1 : TVirtualMC::GetMC()->Gsvolu("SRH2L", "BOX", idRoha, bparV, 3);
207 :
208 1 : bparV[2] = zMeb/2;
209 1 : TVirtualMC::GetMC()->Gsvolu("SMB2L", "BOX", idPCB, bparV, 3);
210 :
211 1 : bparV[2] = zEeb/2;
212 1 : TVirtualMC::GetMC()->Gsvolu("SEB2L", "BOX", idCU, bparV, 3);
213 :
214 : //....(Setting posion of Segment 0,1,2)..................................................................
215 :
216 1 : Float_t xposHorBox = bparH[0] + 23.1; // 23.1 = 20.6(inner radius of qrd) + 2.5 (width of frame)
217 1 : Float_t yposHorBox = -bparH[1];
218 :
219 1 : Float_t xposVerBox = -bparV[0];
220 1 : Float_t yposVerBox = bparV[1] + 23.1;
221 :
222 :
223 : //Positioning the PCB
224 :
225 :
226 : // chamber 3
227 1 : TVirtualMC::GetMC()->Gspos("SCB0L",1, "SQM3",xposHorBox,yposHorBox,zposCbbBar,0, "ONLY");
228 1 : TVirtualMC::GetMC()->Gspos("SCB1L",1, "SQM3", 0.0,0.0,zposCbbBar,0, "ONLY");
229 1 : TVirtualMC::GetMC()->Gspos("SCB2L",1, "SQM3",xposVerBox,yposVerBox,zposCbbBar,0, "ONLY");
230 :
231 1 : TVirtualMC::GetMC()->Gspos("SCB0L",2, "SQM3",xposHorBox,yposHorBox,-zposCbbBar,0, "ONLY");
232 1 : TVirtualMC::GetMC()->Gspos("SCB1L",2, "SQM3", 0.0,0.0,-zposCbbBar,0, "ONLY");
233 1 : TVirtualMC::GetMC()->Gspos("SCB2L",2, "SQM3",xposVerBox,yposVerBox,-zposCbbBar,0, "ONLY");
234 :
235 : // chamber 4
236 1 : TVirtualMC::GetMC()->Gspos("SCB0L",3, "SQM4",xposHorBox,yposHorBox,zposCbbBar,0, "ONLY");
237 1 : TVirtualMC::GetMC()->Gspos("SCB1L",3, "SQM4", 0.0,0.0,zposCbbBar,0, "ONLY");
238 1 : TVirtualMC::GetMC()->Gspos("SCB2L",3, "SQM4",xposVerBox,yposVerBox,zposCbbBar,0, "ONLY");
239 :
240 1 : TVirtualMC::GetMC()->Gspos("SCB0L",4, "SQM4",xposHorBox,yposHorBox,-zposCbbBar,0, "ONLY");
241 1 : TVirtualMC::GetMC()->Gspos("SCB1L",4, "SQM4", 0.0,0.0,-zposCbbBar,0, "ONLY");
242 1 : TVirtualMC::GetMC()->Gspos("SCB2L",4, "SQM4",xposVerBox,yposVerBox,-zposCbbBar,0, "ONLY");
243 :
244 :
245 : //Positioning Copper sheet
246 :
247 : // chamber 3
248 :
249 1 : TVirtualMC::GetMC()->Gspos("SCU0L",1, "SQM3",xposHorBox,yposHorBox,zposCuBar,0, "ONLY");
250 1 : TVirtualMC::GetMC()->Gspos("SCU1L",1, "SQM3", 0.0,0.0,zposCuBar,0, "ONLY");
251 1 : TVirtualMC::GetMC()->Gspos("SCU2L",1, "SQM3",xposVerBox,yposVerBox,zposCuBar,0, "ONLY");
252 :
253 1 : TVirtualMC::GetMC()->Gspos("SCU0L",2, "SQM3",xposHorBox,yposHorBox,-zposCuBar,0, "ONLY");
254 1 : TVirtualMC::GetMC()->Gspos("SCU1L",2, "SQM3", 0.0,0.0,-zposCuBar,0, "ONLY");
255 1 : TVirtualMC::GetMC()->Gspos("SCU2L",2, "SQM3",xposVerBox,yposVerBox,-zposCuBar,0, "ONLY");
256 :
257 : // chamber 4
258 1 : TVirtualMC::GetMC()->Gspos("SCU0L",3, "SQM4",xposHorBox,yposHorBox,zposCuBar,0, "ONLY");
259 1 : TVirtualMC::GetMC()->Gspos("SCU1L",3, "SQM4", 0.0,0.0,zposCuBar,0, "ONLY");
260 1 : TVirtualMC::GetMC()->Gspos("SCU2L",3, "SQM4",xposVerBox,yposVerBox,zposCuBar,0, "ONLY");
261 :
262 1 : TVirtualMC::GetMC()->Gspos("SCU0L",4, "SQM4",xposHorBox,yposHorBox,-zposCuBar,0, "ONLY");
263 1 : TVirtualMC::GetMC()->Gspos("SCU1L",4, "SQM4", 0.0,0.0,-zposCuBar,0, "ONLY");
264 1 : TVirtualMC::GetMC()->Gspos("SCU2L",4, "SQM4",xposVerBox,yposVerBox,-zposCuBar,0, "ONLY");
265 :
266 : //Positioning Roha cell
267 :
268 : // chamber 3
269 :
270 1 : TVirtualMC::GetMC()->Gspos("SRH0L",1, "SQM3",xposHorBox,yposHorBox,zposRohaBar,0, "ONLY");
271 1 : TVirtualMC::GetMC()->Gspos("SRH1L",1, "SQM3", 0.0,0.0,zposRohaBar,0, "ONLY");
272 1 : TVirtualMC::GetMC()->Gspos("SRH2L",1, "SQM3",xposVerBox,yposVerBox,zposRohaBar,0, "ONLY");
273 :
274 1 : TVirtualMC::GetMC()->Gspos("SRH0L",2, "SQM3",xposHorBox,yposHorBox,-zposRohaBar,0, "ONLY");
275 1 : TVirtualMC::GetMC()->Gspos("SRH1L",2, "SQM3", 0.0,0.0,-zposRohaBar,0, "ONLY");
276 1 : TVirtualMC::GetMC()->Gspos("SRH2L",2, "SQM3",xposVerBox,yposVerBox,-zposRohaBar,0, "ONLY");
277 :
278 : // chamber 4
279 :
280 1 : TVirtualMC::GetMC()->Gspos("SRH0L",3, "SQM4",xposHorBox,yposHorBox,zposRohaBar,0, "ONLY");
281 1 : TVirtualMC::GetMC()->Gspos("SRH1L",3, "SQM4", 0.0,0.0,zposRohaBar,0, "ONLY");
282 1 : TVirtualMC::GetMC()->Gspos("SRH2L",3, "SQM4",xposVerBox,yposVerBox,zposRohaBar,0, "ONLY");
283 :
284 1 : TVirtualMC::GetMC()->Gspos("SRH0L",4, "SQM4",xposHorBox,yposHorBox,-zposRohaBar,0, "ONLY");
285 1 : TVirtualMC::GetMC()->Gspos("SRH1L",4, "SQM4", 0.0,0.0,-zposRohaBar,0, "ONLY");
286 1 : TVirtualMC::GetMC()->Gspos("SRH2L",4, "SQM4",xposVerBox,yposVerBox,-zposRohaBar,0, "ONLY");
287 :
288 : //Positioning of Mech. exit board
289 :
290 : // chamber 3
291 :
292 1 : TVirtualMC::GetMC()->Gspos("SMB0L",1, "SQM3",xposHorBox,yposHorBox,zposMebBar,0, "ONLY");
293 1 : TVirtualMC::GetMC()->Gspos("SMB1L",1, "SQM3", 0.0,0.0,zposMebBar,0, "ONLY");
294 1 : TVirtualMC::GetMC()->Gspos("SMB2L",1, "SQM3",xposVerBox,yposVerBox,zposMebBar,0, "ONLY");
295 :
296 1 : TVirtualMC::GetMC()->Gspos("SMB0L",2, "SQM3",xposHorBox,yposHorBox,-zposMebBar,0, "ONLY");
297 1 : TVirtualMC::GetMC()->Gspos("SMB1L",2, "SQM3", 0.0,0.0,-zposMebBar,0, "ONLY");
298 1 : TVirtualMC::GetMC()->Gspos("SMB2L",2, "SQM3",xposVerBox,yposVerBox,-zposMebBar,0, "ONLY");
299 : // chamber 4
300 :
301 1 : TVirtualMC::GetMC()->Gspos("SMB0L",3, "SQM4",xposHorBox,yposHorBox,zposMebBar,0, "ONLY");
302 1 : TVirtualMC::GetMC()->Gspos("SMB1L",3, "SQM4", 0.0,0.0,zposMebBar,0, "ONLY");
303 1 : TVirtualMC::GetMC()->Gspos("SMB2L",3, "SQM4",xposVerBox,yposVerBox,zposMebBar,0, "ONLY");
304 :
305 1 : TVirtualMC::GetMC()->Gspos("SMB0L",4, "SQM4",xposHorBox,yposHorBox,-zposMebBar,0, "ONLY");
306 1 : TVirtualMC::GetMC()->Gspos("SMB1L",4, "SQM4", 0.0,0.0,-zposMebBar,0, "ONLY");
307 1 : TVirtualMC::GetMC()->Gspos("SMB2L",4, "SQM4",xposVerBox,yposVerBox,-zposMebBar,0, "ONLY");
308 :
309 : //Positioning of Electronic exit board
310 :
311 :
312 : // chamber 3
313 :
314 1 : TVirtualMC::GetMC()->Gspos("SEB0L",1, "SQM3",xposHorBox,yposHorBox,zposEebBar,0, "ONLY");
315 1 : TVirtualMC::GetMC()->Gspos("SEB1L",1, "SQM3", 0.0,0.0,zposEebBar,0, "ONLY");
316 1 : TVirtualMC::GetMC()->Gspos("SEB2L",1, "SQM3",xposVerBox,yposVerBox,zposEebBar,0, "ONLY");
317 :
318 1 : TVirtualMC::GetMC()->Gspos("SEB0L",2, "SQM3",xposHorBox,yposHorBox,-zposEebBar,0, "ONLY");
319 1 : TVirtualMC::GetMC()->Gspos("SEB1L",2, "SQM3", 0.0,0.0,-zposEebBar,0, "ONLY");
320 1 : TVirtualMC::GetMC()->Gspos("SEB2L",2, "SQM3",xposVerBox,yposVerBox,-zposEebBar,0, "ONLY");
321 : // chamber 4
322 :
323 1 : TVirtualMC::GetMC()->Gspos("SEB0L",3, "SQM4",xposHorBox,yposHorBox,zposEebBar,0, "ONLY");
324 1 : TVirtualMC::GetMC()->Gspos("SEB1L",3, "SQM4", 0.0,0.0,zposEebBar,0, "ONLY");
325 1 : TVirtualMC::GetMC()->Gspos("SEB2L",3, "SQM4",xposVerBox,yposVerBox,zposEebBar,0, "ONLY");
326 :
327 1 : TVirtualMC::GetMC()->Gspos("SEB0L",4, "SQM4",xposHorBox,yposHorBox,-zposEebBar,0, "ONLY");
328 1 : TVirtualMC::GetMC()->Gspos("SEB1L",4, "SQM4", 0.0,0.0,-zposEebBar,0, "ONLY");
329 1 : TVirtualMC::GetMC()->Gspos("SEB2L",4, "SQM4",xposVerBox,yposVerBox,-zposEebBar,0, "ONLY");
330 :
331 :
332 : //----------------------------------------------------------------------
333 : // Frames
334 : //----------------------------------------------------------------------
335 : //Frame-1
336 :
337 1 : Float_t frame1[3] ;
338 1 : frame1[0] = 101.0/2.; //100.6 = 94.5 + 2.5 + 3.6
339 1 : frame1[1] = 2.5/2.;
340 1 : frame1[2] = 5.0/2.;
341 :
342 1 : TVirtualMC::GetMC()->Gsvolu("SFRM1", "BOX", idPGF30, frame1, 3); //Frame - 1 // fill with pkk GF30
343 :
344 1 : Float_t arib1[3];
345 1 : arib1[0] = frame1[0];
346 1 : arib1[1] = 0.9/2.;
347 1 : arib1[2] =(frame1[2]-0.95)/2.0;
348 :
349 1 : TVirtualMC::GetMC()->Gsvolu("SFRA1", "BOX", idAir, arib1, 3); // fill with air
350 :
351 : Float_t xposarib1 = 0;
352 1 : Float_t yposarib1 = -frame1[1] + arib1[1];
353 1 : Float_t zposarib1 = frame1[2] - arib1[2];
354 :
355 1 : TVirtualMC::GetMC()->Gspos("SFRA1",1, "SFRM1", xposarib1, yposarib1, zposarib1,0, "ONLY"); //replace pkk GF30 with air(b)
356 1 : TVirtualMC::GetMC()->Gspos("SFRA1",2, "SFRM1", xposarib1, yposarib1, -zposarib1,0, "ONLY"); //replace pkk GF30 with air(nb)
357 :
358 1 : Float_t rrib1[3];
359 1 : rrib1[0] = frame1[0];
360 1 : rrib1[1] = 0.6/2.;
361 1 : rrib1[2] =(frame1[2]-0.95)/2.0;
362 :
363 1 : TVirtualMC::GetMC()->Gsvolu("SFRR1", "BOX", idRoha, rrib1, 3); // fill with rohacell
364 :
365 : Float_t xposrrib1 = 0.0;
366 1 : Float_t yposrrib1 = frame1[1] - rrib1[1];
367 1 : Float_t zposrrib1 = frame1[2] - rrib1[2];
368 :
369 1 : TVirtualMC::GetMC()->Gspos("SFRR1",1, "SFRM1", xposrrib1, yposrrib1, zposrrib1,0, "ONLY");//replace pkk GF30 with rohacell
370 1 : TVirtualMC::GetMC()->Gspos("SFRR1",2, "SFRM1", xposrrib1, yposrrib1, -zposrrib1,0, "ONLY");//replace pkk GF30 with rohacell
371 :
372 :
373 1 : Float_t xposFr1 = frame1[0] + 20.6;
374 1 : Float_t yposFr1 = -3.7 + frame1[1] ;
375 : Float_t zposFr1 = 0.0;
376 :
377 1 : TVirtualMC::GetMC()->Gspos("SFRM1",1, "SQM3", xposFr1, yposFr1, zposFr1,0, "ONLY");// frame -1
378 1 : TVirtualMC::GetMC()->Gspos("SFRM1",2, "SQM4", xposFr1, yposFr1, zposFr1,0, "ONLY");// frame -1
379 :
380 :
381 : //......................................................................................
382 : //Frame-2
383 :
384 1 : Float_t frame2[3];
385 1 : frame2[0] = 4.0/2.;
386 1 : frame2[1] = 1.2/2.;
387 1 : frame2[2] = 5.0/2;
388 :
389 1 : TVirtualMC::GetMC()->Gsvolu("SFRM2", "BOX", idPGF30, frame2, 3); //Frame - 2
390 :
391 1 : Float_t rrib2[3];
392 1 : rrib2[0] = frame2[0]-1.0/2.0;
393 1 : rrib2[1] = frame2[1];
394 1 : rrib2[2] =(frame2[2]-0.95)/2.0;
395 :
396 1 : TVirtualMC::GetMC()->Gsvolu("SFRR2", "BOX", idRoha, rrib2, 3);
397 :
398 : Float_t xposrrib2 = -1.0/2.0;
399 : Float_t yposrrib2 = 0.0;
400 1 : Float_t zposrrib2 = frame2[2] - rrib2[2];
401 :
402 1 : TVirtualMC::GetMC()->Gspos("SFRR2",1, "SFRM2", xposrrib2, yposrrib2, zposrrib2,0, "ONLY");//replace pkk GF30 with rohacell
403 1 : TVirtualMC::GetMC()->Gspos("SFRR2",2, "SFRM2", xposrrib2, yposrrib2, -zposrrib2,0, "ONLY");//replace pkk GF30 with roha
404 :
405 :
406 :
407 1 : Float_t xposFr2 = frame2[0] + 117.6;
408 1 : Float_t yposFr2 = -frame2[1];
409 : Float_t zposFr2 = 0.0;
410 :
411 1 : TVirtualMC::GetMC()->Gspos("SFRM2",1, "SQM3", xposFr2, yposFr2, zposFr2,0, "MANY");//global positing of frame in SQM3
412 1 : TVirtualMC::GetMC()->Gspos("SFRM2",2, "SQM4", xposFr2, yposFr2, zposFr2,0, "MANY");//global positing of frame in SQM4
413 :
414 :
415 : //......................................................................................
416 :
417 : //Frame-3
418 :
419 1 : Float_t pgparFr3[10];
420 1 : pgparFr3[0] = 0.;
421 1 : pgparFr3[1] = 90.;
422 1 : pgparFr3[2] = 5;
423 1 : pgparFr3[3] = 2.;
424 1 : pgparFr3[4] = 0.;
425 1 : pgparFr3[5] = 117.6;
426 1 : pgparFr3[6] = 121.6;
427 1 : pgparFr3[7] = pgparFr3[4] + 5.0;
428 1 : pgparFr3[8] = pgparFr3[5];
429 1 : pgparFr3[9] = pgparFr3[6];
430 :
431 1 : TVirtualMC::GetMC()->Gsvolu("SFRM3", "PGON", idPGF30, pgparFr3, 10);
432 :
433 1 : Float_t pgparRrib3[10];
434 1 : pgparRrib3[0] = 0.;
435 1 : pgparRrib3[1] = 90.;
436 1 : pgparRrib3[2] = 5;
437 1 : pgparRrib3[3] = 2.;
438 1 : pgparRrib3[4] = 0.;
439 1 : pgparRrib3[5] = 117.6;
440 1 : pgparRrib3[6] = 120.6;
441 1 : pgparRrib3[7] = pgparRrib3[4] +1.55 ;
442 1 : pgparRrib3[8] = pgparRrib3[5];
443 1 : pgparRrib3[9] = pgparRrib3[6];
444 :
445 1 : TVirtualMC::GetMC()->Gsvolu("SFRR3", "PGON", idRoha, pgparRrib3, 10);
446 :
447 : Float_t xposrrib3 = 0.0;
448 : Float_t yposrrib3 = 0.0;
449 : Float_t zposrrib3 = 0.0;
450 :
451 1 : TVirtualMC::GetMC()->Gspos("SFRR3",1, "SFRM3", xposrrib3, yposrrib3, zposrrib3,0, "ONLY");
452 :
453 : zposrrib3 = 3.45;
454 :
455 1 : TVirtualMC::GetMC()->Gspos("SFRR3",2, "SFRM3", xposrrib3, yposrrib3, zposrrib3,0, "ONLY");
456 :
457 :
458 :
459 : Float_t xposFr3 = 0.0;
460 : Float_t yposFr3 = 0.0;
461 1 : Float_t zposFr3 = -frame1[2];
462 :
463 1 : TVirtualMC::GetMC()->Gspos("SFRM3",1, "SQM3", xposFr3, yposFr3, zposFr3,0, "ONLY");// frame -1
464 1 : TVirtualMC::GetMC()->Gspos("SFRM3",2, "SQM4", xposFr3, yposFr3, zposFr3,0, "ONLY");// frame -1
465 :
466 :
467 : //......................................................................................
468 : //Frame-4
469 :
470 1 : Float_t frame4[3];
471 1 : frame4[0] = 1.0/2.;
472 1 : frame4[1] = 4.0/2.;
473 1 : frame4[2] = frame1[2];
474 :
475 1 : TVirtualMC::GetMC()->Gsvolu("SFRM4", "BOX", idPGF30, frame4, 3);
476 :
477 1 : Float_t rrib4[3];
478 1 : rrib4[0] = frame4[0];
479 1 : rrib4[1] = frame4[1]-1.0/2;
480 1 : rrib4[2] =(frame4[2]-0.95)/2.0;
481 :
482 1 : TVirtualMC::GetMC()->Gsvolu("SFRR4", "BOX", idRoha, rrib4, 3);
483 :
484 : Float_t xposrrib4 = 0.0;
485 : Float_t yposrrib4 = -1.0/2;
486 1 : Float_t zposrrib4 = frame4[2] - rrib4[2];
487 :
488 1 : TVirtualMC::GetMC()->Gspos("SFRR4",1, "SFRM4", xposrrib4, yposrrib4, zposrrib4,0, "ONLY");
489 1 : TVirtualMC::GetMC()->Gspos("SFRR4",2, "SFRM4", xposrrib4, yposrrib4, -zposrrib4,0, "ONLY");
490 :
491 :
492 :
493 1 : Float_t xposFr4 = -frame4[0];
494 1 : Float_t yposFr4 = -frame4[1] + 117.6;
495 : Float_t zposFr4 = 0.0;
496 :
497 1 : TVirtualMC::GetMC()->Gspos("SFRM4",1, "SQM3", xposFr4, yposFr4, zposFr4,0, "MANY");
498 1 : TVirtualMC::GetMC()->Gspos("SFRM4",2, "SQM4", xposFr4, yposFr4, zposFr4,0, "MANY");
499 :
500 :
501 : //......................................................................................
502 : //Frame-5
503 1 : Float_t frame5[3] ;
504 1 : frame5[0] = 2.7/2.;
505 1 : frame5[1] = 101.0/2.;
506 1 : frame5[2] = 5.0/2.;
507 :
508 1 : TVirtualMC::GetMC()->Gsvolu("SFRM5", "BOX", idPGF30, frame5, 3); //Frame - 1
509 :
510 1 : Float_t arib5[3];
511 1 : arib5[0] = 0.9/2.0;
512 1 : arib5[1] = frame5[1];
513 1 : arib5[2] = (frame5[2]-0.95)/2.0;
514 :
515 1 : TVirtualMC::GetMC()->Gsvolu("SFRA5", "BOX", idAir, arib5, 3);
516 :
517 1 : Float_t xposarib5 = -frame5[0] + arib5[0];
518 : Float_t yposarib5 = 0.0;
519 1 : Float_t zposarib5 = frame5[2] - arib5[2];
520 :
521 1 : TVirtualMC::GetMC()->Gspos("SFRA5",1, "SFRM5", xposarib5, yposarib5, zposarib5,0, "ONLY");
522 1 : TVirtualMC::GetMC()->Gspos("SFRA5",2, "SFRM5", xposarib5, yposarib5, -zposarib5,0, "ONLY");
523 :
524 1 : Float_t rrib5[3];
525 1 : rrib5[0] = 0.8/2.0;
526 1 : rrib5[1] = frame5[1];
527 1 : rrib5[2] = (frame5[2]-0.95)/2.0;
528 :
529 1 : TVirtualMC::GetMC()->Gsvolu("SFRR5", "BOX", idRoha, rrib5, 3);
530 :
531 1 : Float_t xposrrib5 = frame5[0] - rrib5[0];
532 : Float_t yposrrib5 = 0.0;
533 1 : Float_t zposrrib5 = frame5[2] - rrib5[2];
534 :
535 1 : TVirtualMC::GetMC()->Gspos("SFRR5",1, "SFRM5", xposrrib5, yposrrib5, zposrrib5,0, "ONLY");
536 1 : TVirtualMC::GetMC()->Gspos("SFRR5",2, "SFRM5", xposrrib5, yposrrib5, -zposrrib5,0, "ONLY");
537 :
538 1 : Float_t xposFr5 = -3.7 + frame5[0];
539 1 : Float_t yposFr5 = frame5[1] + 20.6;
540 : Float_t zposFr5 = 0.0;
541 :
542 1 : TVirtualMC::GetMC()->Gspos("SFRM5",1, "SQM3", xposFr5, yposFr5, zposFr5,0, "ONLY");
543 1 : TVirtualMC::GetMC()->Gspos("SFRM5",2, "SQM4", xposFr5, yposFr5, zposFr5,0, "ONLY");
544 :
545 : //......................................................................................
546 : //Frame -6
547 :
548 1 : Float_t frame6[3];
549 1 : frame6[0] = 1.0/2.;
550 1 : frame6[1] = 2.5/2.;
551 1 : frame6[2] = frame1[2];
552 :
553 1 : TVirtualMC::GetMC()->Gsvolu("SFRM6", "BOX", idPGF30, frame6, 3);
554 :
555 1 : Float_t rrib6[3];
556 1 : rrib6[0] = frame6[0];
557 1 : rrib6[1] = 1.5/2.;
558 1 : rrib6[2] =(frame2[2]-0.95)/2.0;
559 :
560 1 : TVirtualMC::GetMC()->Gsvolu("SFRR6", "BOX", idRoha, rrib6, 3);
561 :
562 : Float_t xposrrib6 = 0.0;
563 : Float_t yposrrib6 = 1.0/2.0;
564 1 : Float_t zposrrib6 = frame6[2] - rrib6[2];
565 :
566 1 : TVirtualMC::GetMC()->Gspos("SFRR6",1, "SFRM6", xposrrib6, yposrrib6, zposrrib6,0, "ONLY");
567 1 : TVirtualMC::GetMC()->Gspos("SFRR6",2, "SFRM6", xposrrib6, yposrrib6, -zposrrib6,0, "ONLY");
568 :
569 :
570 :
571 1 : Float_t xposFr6 = -frame6[0];
572 1 : Float_t yposFr6 = frame6[1] + 20.6;
573 : Float_t zposFr6 = 0.0;
574 :
575 1 : TVirtualMC::GetMC()->Gspos("SFRM6",1, "SQM3", xposFr6, yposFr6, zposFr6,0, "ONLY");
576 1 : TVirtualMC::GetMC()->Gspos("SFRM6",2, "SQM4", xposFr6, yposFr6, zposFr6,0, "ONLY");
577 :
578 :
579 : //......................................................................................
580 : //Frame - 7 inner pgon
581 :
582 1 : Float_t pgparFr7[10];
583 1 : pgparFr7[0] = 0.;
584 1 : pgparFr7[1] = 90.;
585 1 : pgparFr7[2] = 5;
586 1 : pgparFr7[3] = 2.;
587 1 : pgparFr7[4] = 0.;
588 1 : pgparFr7[5] = 20.6;
589 1 : pgparFr7[6] = 23.1;
590 1 : pgparFr7[7] = pgparFr7[4] + 5.0;
591 1 : pgparFr7[8] = pgparFr7[5];
592 1 : pgparFr7[9] = pgparFr7[6];
593 :
594 1 : TVirtualMC::GetMC()->Gsvolu("SFRM7", "PGON", idPGF30, pgparFr7, 10);
595 :
596 1 : Float_t pgparRrib7[10];
597 1 : pgparRrib7[0] = 0.;
598 1 : pgparRrib7[1] = 90.;
599 1 : pgparRrib7[2] = 5;
600 1 : pgparRrib7[3] = 2.;
601 1 : pgparRrib7[4] = 0.;
602 1 : pgparRrib7[5] = 21.6;
603 1 : pgparRrib7[6] = 23.1;
604 1 : pgparRrib7[7] = pgparRrib7[4] + 1.55;
605 1 : pgparRrib7[8] = pgparRrib7[5];
606 1 : pgparRrib7[9] = pgparRrib7[6];
607 :
608 1 : TVirtualMC::GetMC()->Gsvolu("SFRR7", "PGON", idRoha, pgparRrib7, 10);
609 :
610 : Float_t xposrrib7 = 0.0;
611 : Float_t yposrrib7 = 0.0;
612 : Float_t zposrrib7 = 0.0;
613 :
614 1 : TVirtualMC::GetMC()->Gspos("SFRR7",1, "SFRM7", xposrrib7, yposrrib7, zposrrib7,0, "ONLY");
615 :
616 : zposrrib7 = 3.45;
617 :
618 1 : TVirtualMC::GetMC()->Gspos("SFRR7",2, "SFRM7", xposrrib7, yposrrib7, zposrrib7,0, "ONLY");
619 :
620 : Float_t xposFr7 = 0.0;
621 : Float_t yposFr7 = 0.0;
622 1 : Float_t zposFr7 = -frame1[2];
623 :
624 1 : TVirtualMC::GetMC()->Gspos("SFRM7",1, "SQM3", xposFr7, yposFr7, zposFr7,0, "ONLY");
625 1 : TVirtualMC::GetMC()->Gspos("SFRM7",2, "SQM4", xposFr7, yposFr7, zposFr7,0, "ONLY");
626 :
627 :
628 : //......................................................................................
629 : //Frame - 8
630 :
631 :
632 1 : Float_t frame8[3] ;
633 1 : frame8[0] = 2.5/2.0;
634 1 : frame8[1] = 1.2/2.0;
635 1 : frame8[2] = frame1[2];
636 :
637 1 : TVirtualMC::GetMC()->Gsvolu("SFRM8", "BOX", idPGF30, frame8, 3); //Frame - 2
638 :
639 1 : Float_t rrib8[3];
640 1 : rrib8[0] = frame8[0]-1.0/2;
641 1 : rrib8[1] = frame8[1];
642 1 : rrib8[2] =(frame8[2]-0.95)/2.0;
643 :
644 1 : TVirtualMC::GetMC()->Gsvolu("SFRR8", "BOX", idRoha, rrib8, 3);
645 :
646 : Float_t xposrrib8 = -1.0/2;
647 : Float_t yposrrib8 = 0.0;
648 1 : Float_t zposrrib8 = frame8[2] - rrib8[2];
649 :
650 1 : TVirtualMC::GetMC()->Gspos("SFRR8",1, "SFRM8", xposrrib8, yposrrib8, zposrrib8,0, "ONLY");
651 1 : TVirtualMC::GetMC()->Gspos("SFRR8",2, "SFRM8", xposrrib8, yposrrib8, -zposrrib8,0, "ONLY");
652 :
653 :
654 :
655 1 : Float_t xposFr8 = frame8[0] + 20.6;
656 1 : Float_t yposFr8 = -frame8[1];
657 : Float_t zposFr8 = 0.0;
658 :
659 1 : TVirtualMC::GetMC()->Gspos("SFRM8",1, "SQM3", xposFr8, yposFr8, zposFr8,0, "ONLY");
660 1 : TVirtualMC::GetMC()->Gspos("SFRM8",2, "SQM4", xposFr8, yposFr8, zposFr8,0, "ONLY");
661 :
662 :
663 :
664 :
665 : //^^^^^^^^^^^^^^^^^^^^^^^^^ Sensitive volumes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
666 :
667 : Float_t zsenv = 0.5; // distance between two cathode plane
668 :
669 : //Segment-0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
670 1 : bparH[0] = 94.5/2.;
671 1 : bparH[1] = 1.2/2.;
672 1 : bparH[2] = zsenv/2.;
673 1 : TVirtualMC::GetMC()->Gsvolu("SC3G0", "BOX", idGas, bparH, 3);
674 1 : TVirtualMC::GetMC()->Gsvolu("SC4G0", "BOX", idGas, bparH, 3);
675 :
676 : //Segment-1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
677 1 : pgpar[0] = 0.;
678 1 : pgpar[1] = 90.;
679 1 : pgpar[2] = 5;
680 1 : pgpar[3] = 2.;
681 1 : pgpar[4] = -zsenv/2.;
682 1 : pgpar[5] = 23.1;
683 1 : pgpar[6] = 117.6;
684 1 : pgpar[7] = zsenv/2.;
685 1 : pgpar[8] = pgpar[5];
686 1 : pgpar[9] = pgpar[6];
687 1 : TVirtualMC::GetMC()->Gsvolu("SC3G1", "PGON", idGas, pgpar, 10);
688 1 : TVirtualMC::GetMC()->Gsvolu("SC4G1", "PGON", idGas, pgpar, 10);
689 :
690 :
691 : //Segment-2 - vertical box ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
692 :
693 1 : bparV[0] = 1.0/2.;
694 1 : bparV[1] = 95.5/2.;
695 1 : bparV[2] = zsenv/2.;
696 1 : TVirtualMC::GetMC()->Gsvolu("SC3G2", "BOX", idGas, bparV, 3);
697 1 : TVirtualMC::GetMC()->Gsvolu("SC4G2", "BOX", idGas, bparV, 3);
698 :
699 : //...........................................................................................
700 :
701 1 : xposHorBox = bparH[0] + 23.1;
702 1 : yposHorBox = -bparH[1];
703 :
704 1 : xposVerBox = -bparV[0];
705 1 : yposVerBox = bparV[1] + 23.1;
706 :
707 1 : TVirtualMC::GetMC()->Gspos("SC3G0",1, "SQM3", xposHorBox,yposHorBox,0.,0, "ONLY");
708 1 : TVirtualMC::GetMC()->Gspos("SC3G1",1, "SQM3", 0.,0.,0.,0, "ONLY");
709 1 : TVirtualMC::GetMC()->Gspos("SC3G2",1, "SQM3", xposVerBox,yposVerBox,0.,0, "ONLY");
710 :
711 :
712 1 : TVirtualMC::GetMC()->Gspos("SC4G0",1, "SQM4", xposHorBox,yposHorBox,0.,0, "ONLY");
713 1 : TVirtualMC::GetMC()->Gspos("SC4G1",1, "SQM4", 0.,0.,0.,0, "ONLY");
714 1 : TVirtualMC::GetMC()->Gspos("SC4G2",1, "SQM4", xposVerBox,yposVerBox,0.,0, "ONLY");
715 :
716 :
717 : //^^^^^^^^^^^^^^^^^^^^^^^^^ Sensitive volumes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
718 :
719 :
720 :
721 : //##################################################################################################
722 : // Positioning Quadrant in chamber#3 and chamber#4
723 : //##################################################################################################
724 : /******Transformations for Quadrant**********************************************
725 : || I => Quadrant I: no rotation
726 : ||
727 : II. || I. II => Quadrant II: Reflaction of Quadrant I in XZ plane
728 : || => TGeoRotation("Qrot2",90.,180.,90.,90.,180.,0.);
729 : =============
730 : || III => Quadrant III: 180 degree rotation of Quadrant I in XY plane
731 : III. || IV. => TGeoRotation("Qrot3",90.,180.,90.,90.,180.,0.);
732 : || IV => Quadrant IV:-180 degree rotation of Quadrant II in XY plane
733 : => TGeoRotation("Qrot4",90.,0.,90.,-90.,180.,0.);
734 : **********************************************************************************************/
735 :
736 : Int_t detElemId1 = 1; // quadrant I
737 : Int_t detElemId2 = 0; // quadrant II
738 : Int_t detElemId3 = 3; // quadrant III
739 : Int_t detElemId4 = 2; // quadrant IV
740 :
741 : //Float_t halfChamber = zCbb + zCu + zRoha + zMeb + zEeb + zsenv/2;
742 : // cout<< "\n half_chamber \t" << half_chamber << endl;
743 :
744 1 : Float_t halfChamber = tpar1[2];// tpar1[2] = 6.8/2;
745 :
746 : // ------------------------------St2 Chamber3------------------------------------------------
747 :
748 : // GetEnvelopes(2)->AddEnvelope("S3M0", 300, true,TGeoTranslation(0.,0.,0.));
749 3 : GetEnvelopes(2)->AddEnvelope("SQM3", 300+detElemId1, 1, TGeoTranslation( 0., 0., - halfChamber));
750 3 : GetEnvelopes(2)->AddEnvelope("SQM3", 300+detElemId2, 2, TGeoTranslation( 0., 0., + halfChamber),
751 1 : TGeoRotation("Qrot3",90.,180.,90.,90.,180.,0.));
752 3 : GetEnvelopes(2)->AddEnvelope("SQM3", 300+detElemId3, 3, TGeoTranslation( 0., 0., - halfChamber),
753 1 : TGeoRotation("Qrot3",90.,180.,90.,270.,0.,0.));
754 3 : GetEnvelopes(2)->AddEnvelope("SQM3", 300+detElemId4, 4, TGeoTranslation( 0., 0., + halfChamber),
755 1 : TGeoRotation("Qrot4",90.,0.,90.,-90.,180.,0.));
756 :
757 : //--------------------------------St2 Chamber4-------------------------------------------------
758 :
759 3 : GetEnvelopes(3)->AddEnvelope("SQM4", 400+detElemId1, 1, TGeoTranslation( 0., 0., - halfChamber));
760 3 : GetEnvelopes(3)->AddEnvelope("SQM4", 400+detElemId2, 2, TGeoTranslation( 0., 0., + halfChamber),
761 1 : TGeoRotation("Qrot2",90.,180.,90.,90.,180.,0.));
762 3 : GetEnvelopes(3)->AddEnvelope("SQM4", 400+detElemId3, 3, TGeoTranslation( 0., 0., - halfChamber),
763 1 : TGeoRotation("Qrot3",90.,180.,90.,270.,0.,0.));
764 3 : GetEnvelopes(3)->AddEnvelope("SQM4", 400+detElemId4, 4, TGeoTranslation( 0., 0., + halfChamber),
765 1 : TGeoRotation("Qrot4",90.,0.,90.,-90.,180.,0.));
766 :
767 : //**********************************************************************************************
768 :
769 1 : }
770 : //______________________________________________________________________________
771 : void AliMUONSt2GeometryBuilderV2::SetVolumes()
772 : {
773 : /// Defines the volumes for the station2 chambers.
774 :
775 2 : if (gAlice->GetModule("SHIL")) {
776 2 : SetMotherVolume(2, "YOUT1");
777 2 : SetMotherVolume(3, "YOUT1");
778 1 : }
779 :
780 : // Define chamber volumes as virtual
781 2 : SetVolume(2, "SC03", true);
782 2 : SetVolume(3, "SC04", true);
783 1 : }
784 :
785 : //______________________________________________________________________________
786 : void AliMUONSt2GeometryBuilderV2::SetTransformations()
787 : {
788 : /// Defines the transformations for the station2 chambers.
789 :
790 2 : Double_t zpos1 = - AliMUONConstants::DefaultChamberZ(2);
791 2 : SetTranslation(2, TGeoTranslation(0., 0., zpos1));
792 :
793 1 : Double_t zpos2 = - AliMUONConstants::DefaultChamberZ(3);
794 2 : SetTranslation(3, TGeoTranslation(0., 0., zpos2));
795 1 : }
796 :
797 : //______________________________________________________________________________
798 : void AliMUONSt2GeometryBuilderV2::SetSensitiveVolumes()
799 : {
800 : /// Defines the sensitive volumes for station2 chambers.
801 :
802 3 : GetGeometry(2)->SetSensitiveVolume("SC3G0");
803 2 : GetGeometry(2)->SetSensitiveVolume("SC3G1");
804 2 : GetGeometry(2)->SetSensitiveVolume("SC3G2");
805 :
806 2 : GetGeometry(3)->SetSensitiveVolume("SC4G0");
807 2 : GetGeometry(3)->SetSensitiveVolume("SC4G1");
808 2 : GetGeometry(3)->SetSensitiveVolume("SC4G2");
809 1 : }
810 :
|