]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONSt2GeometryBuilderV2.cxx
Updated with refactoring of geometry & segmentation classes;
[u/mrichter/AliRoot.git] / MUON / AliMUONSt2GeometryBuilderV2.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 // $Id$
17 //
18 // Class AliMUONSt2GeometryBuilderV2
19 // -------------------------------
20 // MUON Station2 coarse geometry construction class.
21 //********************************************************************
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
31 #include "AliRun.h"
32 #include "AliLog.h"
33
34 #include "AliMUONSt2GeometryBuilderV2.h"
35 #include "AliMUON.h"
36 #include "AliMUONConstants.h"
37 #include "AliMUONGeometryModule.h"
38 #include "AliMUONGeometryEnvelopeStore.h"
39 #include "AliMUONConstants.h"
40
41 #define PI 3.14159
42 ClassImp(AliMUONSt2GeometryBuilderV2)
43
44 //______________________________________________________________________________
45 AliMUONSt2GeometryBuilderV2::AliMUONSt2GeometryBuilderV2(AliMUON* muon)
46  : AliMUONVGeometryBuilder(2, 3),
47    fMUON(muon)
48 {
49 // Standard constructor
50
51 }
52
53 //______________________________________________________________________________
54 AliMUONSt2GeometryBuilderV2::AliMUONSt2GeometryBuilderV2()
55  : AliMUONVGeometryBuilder(),
56    fMUON(0)
57 {
58 // Default constructor
59 }
60
61
62 //______________________________________________________________________________
63 AliMUONSt2GeometryBuilderV2::AliMUONSt2GeometryBuilderV2(const AliMUONSt2GeometryBuilderV2& rhs)
64   : AliMUONVGeometryBuilder(rhs)
65 {
66 // Protected copy constructor
67
68   AliFatal("Copy constructor is not implemented.");
69 }
70
71 //______________________________________________________________________________
72 AliMUONSt2GeometryBuilderV2::~AliMUONSt2GeometryBuilderV2() {
73 //
74 }
75
76 //______________________________________________________________________________
77 AliMUONSt2GeometryBuilderV2&
78 AliMUONSt2GeometryBuilderV2::operator = (const AliMUONSt2GeometryBuilderV2& rhs)
79 {
80 // Protected assignement operator
81
82   // check assignement to self
83   if (this == &rhs) return *this;
84
85   AliFatal("Assignment operator is not implemented.");
86
87   return *this;
88 }
89
90 //
91 // public methods
92 //
93
94 //______________________________________________________________________________
95 void AliMUONSt2GeometryBuilderV2::CreateGeometry()
96 {
97 // From AliMUONv1::CreateGeometry()
98
99 //
100 //********************************************************************
101 //                            Station 2                             **
102 //********************************************************************
103      // indices 1 and 2 for first and second chambers in the station
104      // iChamber (first chamber) kept for other quanties than Z,
105      // assumed to be the same in both chambers
106
107 //     AliMUONChamber* iChamber = &fMUON->Chamber(2);
108 //     AliMUONChamber* iChamber1 = iChamber;
109 //     AliMUONChamber* iChamber2 = &fMUON->Chamber(3);
110
111
112      // Get tracking medias Ids
113      Int_t *idtmed = fMUON->GetIdtmed()->GetArray()-1099;
114      Int_t idAir  = idtmed[1100]; // medium 1
115      Int_t idGas  = idtmed[1108]; // medium Ar-CO2 gas (80%+20%)
116      Int_t idPCB  = idtmed[1122]; // medium FR4
117      Int_t idCU   = idtmed[1110]; // medium copper
118      Int_t idRoha = idtmed[1113]; // medium roha cell
119      Int_t idPGF30= idtmed[1123]; // medium for Frame Eq.to Bakelite
120      Int_t idScru = idtmed[1128]; // screw material - Stainless Steel(18%Cr,9%Ni,Fe)
121
122
123      Int_t irot1, irot2, irot3, irot4, irot5, irot6;
124
125      fMUON->AliMatrix(irot1,  90.,  13., 90., 103.,  0., 0.);  //+13deg in x-y Plane
126      fMUON->AliMatrix(irot2,  90.,  34., 90., 124.,  0., 0.); // +34deg in x-y plane
127      fMUON->AliMatrix(irot3,  90.,  56., 90., 146.,  0., 0.); // +56 deg in x-y plane
128      fMUON->AliMatrix(irot4,  90.,  76., 90., 166.,  0., 0.); // +76 deg in x-y plane
129      fMUON->AliMatrix(irot5,  90.,  90., 90., 180.,  0., 0.); // +90 deg in x-y plane
130      fMUON->AliMatrix(irot6,  90., 22.5, 90., 112.5, 0., 0.); //22.5 deg in x-y Plane
131
132 /*########################################################################################
133     Create volume for one Quadrant connsist two plane
134 ##########################################################################################*/
135      Float_t tpar1[5];
136      tpar1[0] = 20.6;
137      tpar1[1] = 122.0;
138      tpar1[2] = 6.55555/2;
139      tpar1[3] = -10.0;
140      tpar1[4] = 100.0;
141
142
143      gMC->Gsvolu("SQM3","TUBS", idAir, tpar1, 5);
144      gMC->Gsvolu("SQM4","TUBS", idAir, tpar1, 5);
145
146
147
148 //==================================================================================
149 //                                 Plane - 1       L is used for one Plane while
150 //                                                   R for the other
151 //==================================================================================
152
153 //Thickness of variour parts
154        Float_t zcbb  = 0.04;       //cathode pcb
155        Float_t zcu   = 0.004;      // eff. cu in cathode pcb
156        Float_t zRoha = 2.5;        // Rhocell
157        Float_t zmeb = 0.08;      //Mech. exit board
158        Float_t zcu2 = 0.02;     //Effective electronic exit board
159     //Z-positions of various parts--- in Plane-1
160
161        Float_t zpos_cbb = 0.25;   // 2.5 mm => gap between anode & chatode plane
162        Float_t zpos_cu = zcbb;
163        Float_t zpos_Roha  = zcu;
164        Float_t zpos_meb = zmeb;
165        Float_t zpos_cu2 = zcu2;
166
167        Float_t zpos_cbb_bar = zpos_cbb + zcbb/2.;  //for segment 0 & 6
168        Float_t zpos_cubar = zcbb/2. + zcu/2.;
169        Float_t zpos_Roha_bar = zcu/2. + zRoha/2.;
170        Float_t zpos_meb_bar =  zRoha/2. + zmeb/2.;
171        Float_t zpos_eeb_bar = zmeb/2. + zcu2/2.;
172
173
174  //Cathode PCB + Copper sheet + Rohacell + mech exit board + eff. electronic exit board
175
176  //Segment-0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
177        Float_t bpar_h[3];
178        bpar_h[0] = 95.5/2.;
179        bpar_h[1] = 1.6/2.;
180        bpar_h[2] = zcbb/2.;
181        gMC->Gsvolu("CB0L", "BOX", idPCB, bpar_h, 3);
182
183        bpar_h[2] = zcu/2.;     //Thickness of Copper sheet
184        gMC->Gsvolu("CU0L", "BOX", idCU, bpar_h, 3);
185
186        bpar_h[2] = zRoha/2.;     //Thickness of Roha cell
187        gMC->Gsvolu("RH0L", "BOX", idRoha, bpar_h, 3);
188
189        bpar_h[0] = (100.6/2)-(0.9/2);
190        bpar_h[1] = 2.8/2.;
191        bpar_h[2] = zmeb/2;
192        gMC->Gsvolu("MB0L", "BOX", idPCB, bpar_h, 3);
193
194        bpar_h[2] = zcu2/2;
195        gMC->Gsvolu("EB0L", "BOX", idCU, bpar_h, 3);
196
197  //Segment-1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
198         Float_t pgpar[10];
199         pgpar[0] = 0.;
200         pgpar[1] = 13.;
201         pgpar[2] = 1.;
202         pgpar[3] = 2.;
203         pgpar[4] = 0.;
204         pgpar[5] = 22.5;
205         pgpar[6] = 120.2;
206         pgpar[7] = pgpar[4] + zcbb;
207         pgpar[8] = pgpar[5];
208         pgpar[9] = pgpar[6];
209         gMC->Gsvolu("CB1L", "PGON", idPCB, pgpar, 10);
210
211         pgpar[7] = pgpar[4] + zcu;  // Thickness of copper-sheet
212         gMC->Gsvolu("CU1L", "PGON", idCU, pgpar, 10);
213
214         pgpar[7] = pgpar[4] + zRoha;  // Thickness of Roha cell
215         gMC->Gsvolu("RH1L", "PGON", idRoha, pgpar, 10);
216
217         pgpar[5] = 21.5; // radius of inner rib
218         pgpar[6] = 121.2;
219         pgpar[7] = pgpar[4] + zmeb;
220         pgpar[8] = pgpar[5];
221         pgpar[9] = pgpar[6];
222         gMC->Gsvolu("MB1L", "PGON", idPCB, pgpar, 10);
223
224         pgpar[7] = pgpar[4] + zcu2;
225         gMC->Gsvolu("EB1L", "PGON", idCU, pgpar, 10);
226
227 //Segment-2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
228         pgpar[0] = 0.;
229         pgpar[1] = 21.;
230         pgpar[2] = 1.;
231         pgpar[3] = 2.;
232         pgpar[4] = 0.;
233         pgpar[5] = 22.5;
234         pgpar[6] = 121.5;
235         pgpar[7] = pgpar[4] +zcbb;
236         pgpar[8] = pgpar[5];
237         pgpar[9] = pgpar[6];
238         gMC->Gsvolu("CB2L", "PGON", idPCB, pgpar, 10);
239
240         pgpar[7] = pgpar[4] + zcu;  // Thickness of copper-sheet
241         gMC->Gsvolu("CU2L", "PGON", idCU, pgpar, 10);
242
243         pgpar[7] = pgpar[4] + zRoha;  // Thickness of Roha cell
244         gMC->Gsvolu("RH2L", "PGON", idRoha, pgpar, 10);
245
246         pgpar[5] = 21.5; // radius of inner rib
247         pgpar[6] = 122.5;
248         pgpar[7] = pgpar[4] + zmeb;
249         pgpar[8] = pgpar[5];
250         pgpar[9] = pgpar[6];
251         gMC->Gsvolu("MB2L", "PGON", idPCB, pgpar, 10);
252
253         pgpar[7] = pgpar[4] + zcu2;
254         gMC->Gsvolu("EB2L", "PGON", idCU, pgpar, 10);
255
256 //Segment-3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
257         pgpar[0] = 0.;
258         pgpar[1] = 22.;
259         pgpar[2] = 1.;
260         pgpar[3] = 2.;
261         pgpar[4] = 0.;
262         pgpar[5] = 22.5;
263         pgpar[6] = 119.9;
264         pgpar[7] = pgpar[4] + zcbb;
265         pgpar[8] = pgpar[5];
266         pgpar[9] = pgpar[6];
267         gMC->Gsvolu("CB3L", "PGON", idPCB, pgpar, 10);
268
269         pgpar[7] = pgpar[4] + zcu;  // Thickness of copper-sheet
270         gMC->Gsvolu("CU3L", "PGON", idCU, pgpar, 10);
271
272         pgpar[7] = pgpar[4] + zRoha;  // Thickness of Roha cell
273         gMC->Gsvolu("RH3L", "PGON", idRoha, pgpar, 10);
274
275         pgpar[5] = 21.5; // radius of inner rib
276         pgpar[6] = 120.9;
277         pgpar[7] = pgpar[4] + zmeb;
278         pgpar[8] = pgpar[5];
279         pgpar[9] = pgpar[6];
280         gMC->Gsvolu("MB3L", "PGON", idPCB, pgpar, 10);
281
282         pgpar[7] = pgpar[4] + zcu2;
283         gMC->Gsvolu("EB3L", "PGON", idCU, pgpar, 10);
284
285 //Segment-4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
286         pgpar[0] = 0.;
287         pgpar[1] = 20.;
288         pgpar[2] = 1.;
289         pgpar[3] = 2.;
290         pgpar[4] = 0.;
291         pgpar[5] = 22.5;
292         pgpar[6] = 119.9;
293         pgpar[7] = pgpar[4] + zcbb;
294         pgpar[8] = pgpar[5];
295         pgpar[9] = pgpar[6];
296         gMC->Gsvolu("CB4L", "PGON", idPCB, pgpar, 10);
297
298         pgpar[7] = pgpar[4] + zcu;  // Thickness of copper-sheet
299         gMC->Gsvolu("CU4L", "PGON", idCU, pgpar, 10);
300
301         pgpar[7] = pgpar[4] + zRoha;  // Thickness of Roha cell
302         gMC->Gsvolu("RH4L", "PGON", idRoha, pgpar, 10);
303
304         pgpar[5] = 21.5; // radius of inner rib
305         pgpar[6] = 120.9;
306         pgpar[7] = pgpar[4] + zmeb;
307         pgpar[8] = pgpar[5];
308         pgpar[9] = pgpar[6];
309         gMC->Gsvolu("MB4L", "PGON", idPCB, pgpar, 10);
310
311         pgpar[7] = pgpar[4] + zcu2;
312         gMC->Gsvolu("EB4L", "PGON", idCU, pgpar, 10);
313
314 //Segment-5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
315         pgpar[0] = 0.;
316         pgpar[1] = 14.;
317         pgpar[2] = 1.;
318         pgpar[3] = 2.;
319         pgpar[4] = 0.;
320         pgpar[5] = 22.5;
321         pgpar[6] = 117.5;
322         pgpar[7] = pgpar[4] + zcbb;
323         pgpar[8] = pgpar[5];
324         pgpar[9] = pgpar[6];
325         gMC->Gsvolu("CB5L", "PGON", idPCB, pgpar, 10);
326
327         pgpar[7] = pgpar[4] + zcu;  // Thickness of copper-sheet
328         gMC->Gsvolu("CU5L", "PGON", idCU, pgpar, 10);
329
330         pgpar[7] = pgpar[4] + zRoha;  // Thickness of Roha cell
331         gMC->Gsvolu("RH5L", "PGON", idRoha, pgpar, 10);
332
333         pgpar[5] = 21.5;// radius of inner rib
334         pgpar[6] = 118.5;
335         pgpar[7] = pgpar[4] + zmeb;
336         pgpar[8] = pgpar[5];
337         pgpar[9] = pgpar[6];
338         gMC->Gsvolu("MB5L", "PGON", idPCB, pgpar, 10);
339
340         pgpar[7] = pgpar[4] + zcu2;
341         gMC->Gsvolu("EB5L", "PGON", idCU, pgpar, 10);
342
343 //Segment-6 - vertical box ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
344
345         Float_t bpar_v[3];
346
347         bpar_v[0] = 1.6/2.;
348         bpar_v[1] = 95.5/2.;
349         bpar_v[2] = zcbb/2.;
350         gMC->Gsvolu("CB6L", "BOX", idPCB, bpar_v, 3);
351
352         bpar_v[2] = zcu/2.;
353         gMC->Gsvolu("CU6L", "BOX", idCU, bpar_v, 3);
354
355         bpar_v[2] = zRoha/2.;
356         gMC->Gsvolu("RH6L", "BOX", idRoha, bpar_v, 3);
357
358         bpar_v[0] = 2.8/2.;
359         bpar_v[1] = (97.9/2)-(0.9/2.);
360         bpar_v[2] = zmeb/2;
361         gMC->Gsvolu("MB6L", "BOX", idPCB, bpar_v, 3);
362
363         bpar_v[2] = zcu2/2;
364         gMC->Gsvolu("EB6L", "BOX", idCU, bpar_v, 3);
365
366 //...........................................................................................
367 //Positioning of Electronic exit board
368      gMC->Gspos("EB0L",1, "MB0L", 0.,0.,zpos_eeb_bar,0, "only");
369      gMC->Gspos("EB1L",1, "MB1L", 0.,0.,zpos_cu2,0, "only");
370      gMC->Gspos("EB2L",1, "MB2L", 0.,0.,zpos_cu2,0, "only");
371      gMC->Gspos("EB3L",1, "MB3L", 0.,0.,zpos_cu2,0, "only");
372      gMC->Gspos("EB4L",1, "MB4L", 0.,0.,zpos_cu2,0, "only");
373      gMC->Gspos("EB5L",1, "MB5L", 0.,0.,zpos_cu2,0, "only");
374      gMC->Gspos("EB6L",1, "MB6L", 0.,0.,zpos_eeb_bar,0, "only");
375
376 //Positioning of Mech. exit board
377      Float_t xpos_meb_hor =  1.10;
378      Float_t ypos_meb_hor = -0.60;
379
380      Float_t xpos_meb_ver = -0.60;
381      Float_t ypos_meb_ver = -0.35;
382
383      gMC->Gspos("MB0L",1, "RH0L", xpos_meb_hor,ypos_meb_hor,zpos_meb_bar,0, "only");
384      gMC->Gspos("MB1L",1, "RH1L", 0.,0.,zpos_meb,0, "only");
385      gMC->Gspos("MB2L",1, "RH2L", 0.,0.,zpos_meb,0, "only");
386      gMC->Gspos("MB3L",1, "RH3L", 0.,0.,zpos_meb,0, "only");
387      gMC->Gspos("MB4L",1, "RH4L", 0.,0.,zpos_meb,0, "only");
388      gMC->Gspos("MB5L",1, "RH5L", 0.,0.,zpos_meb,0, "only");
389      gMC->Gspos("MB6L",1, "RH6L", xpos_meb_ver,ypos_meb_ver,zpos_meb_bar,0, "only");
390
391 //Positioning Roha cell over copper sheet
392      gMC->Gspos("RH0L",1, "CU0L", 0.,0.,zpos_Roha_bar,0, "only");// box horizontal
393      gMC->Gspos("RH1L",1, "CU1L", 0.,0.,zpos_Roha,0, "only");
394      gMC->Gspos("RH2L",1, "CU2L", 0.,0.,zpos_Roha,0, "only");
395      gMC->Gspos("RH3L",1, "CU3L", 0.,0.,zpos_Roha,0, "only");
396      gMC->Gspos("RH4L",1, "CU4L", 0.,0.,zpos_Roha,0, "only");
397      gMC->Gspos("RH5L",1, "CU5L", 0.,0.,zpos_Roha,0, "only");
398      gMC->Gspos("RH6L",1, "CU6L", 0.,0.,zpos_Roha_bar,0, "only");
399
400 //Positioning Copper sheet over PCB
401      gMC->Gspos("CU0L",1, "CB0L", 0.,0.,zpos_cubar,0, "only");// box horizontal
402      gMC->Gspos("CU1L",1, "CB1L", 0.,0.,zpos_cu,0, "only");
403      gMC->Gspos("CU2L",1, "CB2L", 0.,0.,zpos_cu,0, "only");
404      gMC->Gspos("CU3L",1, "CB3L", 0.,0.,zpos_cu,0, "only");
405      gMC->Gspos("CU4L",1, "CB4L", 0.,0.,zpos_cu,0, "only");
406      gMC->Gspos("CU5L",1, "CB5L", 0.,0.,zpos_cu,0, "only");
407      gMC->Gspos("CU6L",1, "CB6L", 0.,0.,zpos_cubar,0, "only");
408
409
410 //Positioning the PCB
411       Float_t x_hor_pos = 95.5/2.+ 22.6; // 22.6 is inner radius of PCB
412       Float_t y_hor_pos = -(1.6/2); //
413
414       Float_t x_ver_pos = -(1.6/2); //
415       Float_t y_ver_pos = 95.5/2.+ 22.6; //
416
417       // chamber 3
418      gMC->Gspos("CB0L",1, "SQM3", x_hor_pos,y_hor_pos,zpos_cbb_bar,0, "only");// box horizontal
419      gMC->Gspos("CB1L",1, "SQM3", 0.,0.,zpos_cbb,0, "only");
420      gMC->Gspos("CB2L",1, "SQM3", 0.,0.,zpos_cbb,irot1,"only");
421      gMC->Gspos("CB3L",1, "SQM3", 0.,0.,zpos_cbb,irot2, "only");
422      gMC->Gspos("CB4L",1, "SQM3", 0.,0.,zpos_cbb,irot3, "only");
423      gMC->Gspos("CB5L",1, "SQM3", 0.,0.,zpos_cbb,irot4, "only");
424      gMC->Gspos("CB6L",1, "SQM3", x_ver_pos,y_ver_pos,zpos_cbb_bar,0, "only");// box vertical
425
426       // chamber 4
427      gMC->Gspos("CB0L",1, "SQM4", x_hor_pos,y_hor_pos,zpos_cbb_bar,0, "only");// box horizontal
428      gMC->Gspos("CB1L",1, "SQM4", 0.,0.,zpos_cbb,0, "only");
429      gMC->Gspos("CB2L",1, "SQM4", 0.,0.,zpos_cbb,irot1,"only");
430      gMC->Gspos("CB3L",1, "SQM4", 0.,0.,zpos_cbb,irot2, "only");
431      gMC->Gspos("CB4L",1, "SQM4", 0.,0.,zpos_cbb,irot3, "only");
432      gMC->Gspos("CB5L",1, "SQM4", 0.,0.,zpos_cbb,irot4, "only");
433      gMC->Gspos("CB6L",1, "SQM4", x_ver_pos,y_ver_pos,zpos_cbb,0, "only");// box vertical
434
435 //----------------------------------------------------------------------
436 //                          Frames
437 //----------------------------------------------------------------------
438 //Frame-1
439       Float_t frame1[3] ;                //Index-1 is used for horizontal frame bar
440       frame1[0] = 100.6/2.;              //and 2,3,4..... is used for the next frames
441       frame1[1] = 2.5/2.;                //from hor. to the vertical
442       frame1[2] = .95/2.;
443
444       Float_t rib1[3];
445       rib1[0] = frame1[0] - 0.9/2.;
446       rib1[1] = 1./2.;
447       rib1[2] = 1.84/2.;
448
449       Float_t xpos_fr1 = frame1[0] + 20.6;
450       Float_t ypos_fr1 = -3.7 + frame1[1] ;
451       Float_t zpos_fr1 = frame1[2];
452
453       Float_t xpos_rb1 = 0.9/2;
454       Float_t ypos_rb1 = -frame1[1] + rib1[1]+0.9;
455       Float_t zpos_rb1 = frame1[2] + rib1[2];
456
457       gMC->Gsvolu("FRHL", "BOX", idPGF30, frame1, 3); //Frame - 1
458       gMC->Gsvolu("RBHL", "BOX", idPGF30, rib1, 3); //Rib - 1
459
460 //Fixing Screws ...........................................
461 //---------screw parameters (on frame) M4 ------------------
462    //in this plane screw-length is taken eq. to thickness of frame/frame+rib
463    // the remaining of the actual size is adjusted in the other plane
464
465        Float_t spar[3];
466        spar[0] = 0.0;
467        spar[1] = 0.2;
468        spar[2] = 0.95/2.;
469
470        Float_t s_head[3];
471        s_head[0] = 0.0; // screw-head
472        s_head[1] = 0.4;
473        s_head[2] = 0.4/2.;
474
475        Float_t xpos_h = 0.0;
476        Float_t ypos_h = 0.0;
477        Float_t zpos_h = spar[2] + s_head[2];
478
479        gMC->Gsvolu("SCHL","TUBE",idScru, spar,3);    //screw-vertical part for Frame M4
480        gMC->Gsvolu("HDFL","TUBE",idScru, s_head,3);    //screw-head
481    //positioning head over screws
482        gMC->Gspos("HDFL",1,"SCHL",xpos_h,ypos_h,zpos_h,0,"ONLY");//positioning Screw-head
483
484    //Screws on Frame
485        Float_t xpos_s = frame1[0] - 0.4;
486        Float_t ypos_s = -frame1[1] + 0.4;
487        Float_t zpos_s =  0.0;
488
489        Int_t Tot_Scru1 = 21;   //Total no. of Scru
490        for(Int_t nos1 = 0; nos1 < Tot_Scru1; nos1++)
491           {
492            gMC->Gspos("SCHL",nos1+1,"FRHL",xpos_s,ypos_s,zpos_s,0,"ONLY");
493            xpos_s -= 5.;
494           } // nos1 is no. of scru
495
496        gMC->Gspos("RBHL",1, "FRHL", xpos_rb1, ypos_rb1, zpos_rb1,0, "only");// Rib-1
497 //       gMC->Gspos("FRHL",1, "SQM3", xpos_fr1, ypos_fr1, zpos_fr1,0, "only");// frame -1
498 //       gMC->Gspos("FRHL",1, "SQM4", xpos_fr1, ypos_fr1, zpos_fr1,0, "only");// frame -1
499
500 //......................................................................................
501 //Frame-2
502
503        Float_t frame2[3] ;
504        frame2[0] = 4./2.;
505        frame2[1] = 28.9/2.;
506        frame2[2] = frame1[2];
507
508        Float_t xpos_fr2 = frame1[0]  -frame2[0];
509        Float_t ypos_fr2 = frame2[1]+frame1[1] ;
510        Float_t zpos_fr2 = 0.;
511
512        Float_t rib2[3];
513        rib2[0] = 1./2.;
514        rib2[1] = frame2[1]+0.6;
515        rib2[2] = 1.84/2.;
516
517        Float_t xpos_rb2 = frame2[0] - rib2[0];
518        Float_t ypos_rb2 = - 0.6/2;
519        Float_t zpos_rb2 = frame2[2] + rib2[2];
520
521        gMC->Gsvolu("FR1L", "BOX", idPGF30, frame2, 3); //Frame - 2
522        gMC->Gsvolu("RB1L", "BOX", idPGF30, rib2, 3); //Rib - 2
523
524 //Fixing Screws ...........................................
525    //screw parameters (on Ribs) M4 x 65
526    //Head size & positions remianing the same-----------
527        Float_t spar2[3];
528        spar2[0] = 0.0;
529        spar2[1] = 0.2;
530        spar2[2] = 2.9/2.;
531        gMC->Gsvolu("SCRL","TUBE",idScru, spar2,3);    //screw-vertical part for Rib m4 x 65
532   //positioning head over screws
533        Float_t xpos2_h = 0.0;
534        Float_t ypos2_h = 0.0;
535        Float_t zpos2_h = spar2[2] + s_head[2];
536        gMC->Gspos("HDFL",2,"SCRL",xpos2_h,ypos2_h,zpos2_h,0,"ONLY");//positioning Screw-head
537
538        Float_t xpos2_s = -rib2[0] + 0.4;
539        Float_t ypos2_s = -rib2[1] + 1.7;
540        Float_t zpos2_s = -frame2[2];
541
542        Int_t Tot_Scru2 = 6;   // 6 screws
543        for(Int_t nos2 = 0; nos2 < Tot_Scru2; nos2++)
544           {
545            gMC->Gspos("SCRL",nos2+1,"RB1L",xpos2_s,ypos2_s,zpos2_s,0,"ONLY");
546            ypos2_s += 5.;
547           }
548
549        gMC->Gspos("RB1L",1, "FR1L", xpos_rb2, ypos_rb2, zpos_rb2,0, "only");
550        gMC->Gspos("FR1L",1, "FRHL", xpos_fr2, ypos_fr2, zpos_fr2,0, "only");
551
552 //......................................................................................
553 //Frame-3
554
555       Float_t frame3[3] ;
556       frame3[0] = 4./2.;
557       frame3[1] = 40.67/2.;
558       frame3[2] = frame1[2];
559       Float_t bend_ang = (22.5*PI/180.);  //bending angle of frame-3 w.r.t frame-2
560
561       Float_t xpos_fr3 =-frame3[1]* sin(bend_ang);
562       Float_t ypos_fr3 = frame2[1]+(frame3[1]*cos(bend_ang)-frame3[0]* sin(bend_ang));
563       Float_t zpos_fr3 = 0.;
564
565   //Frame part extended inside
566       Float_t fr_ex[3];
567       fr_ex[0] = 3.53/2.;
568       fr_ex[1] = 56.28/2.;
569       fr_ex[2] = frame1[2];
570
571       Float_t xpos_ex = -frame3[0] - fr_ex[0];
572       Float_t ypos_ex = 0.0;
573       Float_t zpos_ex = 0.0;
574
575       Float_t rib3[3];
576       rib3[0] = 1./2.;
577       rib3[1] = frame3[1];
578       rib3[2] = 1.84/2.;
579
580       Float_t xpos_rb3 = frame3[0] - rib3[0];
581       Float_t ypos_rb3 = 0.0;
582       Float_t zpos_rb3 = frame3[2] + rib3[2];
583
584       gMC->Gsvolu("FR2L", "BOX", idPGF30, frame3, 3); //Frame - 3
585       gMC->Gsvolu("FEXL", "BOX", idPGF30, fr_ex, 3); //frame- extended part
586       gMC->Gsvolu("RB2L", "BOX", idPGF30, rib3, 3); //Rib - 3
587
588       Float_t xpos3_s = -rib3[0] + 0.4;
589       Float_t ypos3_s = -rib3[1] + 1.1;
590       Float_t zpos3_s = -frame3[2];
591
592       Int_t Tot_Scru3 = Tot_Scru2 + 9;      //Toal screw on this rib is 9--index continues
593       for(Int_t nos3 = Tot_Scru2; nos3 < Tot_Scru3; nos3++)
594          {
595           gMC->Gspos("SCRL",nos3+1,"RB2L",xpos3_s,ypos3_s,zpos3_s,0,"ONLY");
596           ypos3_s += 5.;
597          }
598
599       gMC->Gspos("FEXL",1, "FR2L", xpos_ex, ypos_ex, zpos_ex,0, "only");
600       gMC->Gspos("RB2L",1, "FR2L", xpos_rb3, ypos_rb3, zpos_rb3,0, "only");
601       gMC->Gspos("FR2L",1, "FR1L", xpos_fr3, ypos_fr3, zpos_fr3,irot6, "only");
602 //......................................................................................
603 //Frame-4
604
605       Float_t frame4[3] ;
606       frame4[0] = 4./2;
607       frame4[1] = 52.54/2.;
608       frame4[2] = frame1[2];
609
610       Float_t xpos_fr4 =-frame4[1]* sin(bend_ang);
611       Float_t ypos_fr4 = frame3[1]+(frame4[1]*cos(bend_ang)-frame4[0]* sin(bend_ang));
612       Float_t zpos_fr4 =0.;
613
614       Float_t rib4[3];
615       rib4[0] = 1./2.;
616       rib4[1] = frame4[1];
617       rib4[2] = 1.84/2.;
618
619       Float_t xpos_rb4 = frame4[0] - rib4[0];
620       Float_t ypos_rb4 = 0.0;
621       Float_t zpos_rb4 = frame4[2] + rib4[2];
622
623       gMC->Gsvolu("FR3L", "BOX", idPGF30, frame4, 3); //Frame - 4
624       gMC->Gsvolu("RB3L", "BOX", idPGF30, rib4, 3); //Rib - 4
625
626       Float_t xpos4_s = -rib4[0] + 0.4;
627       Float_t ypos4_s = -rib4[1] + 4.33;
628       Float_t zpos4_s = -frame4[2];
629
630       Int_t Tot_Scru4 = Tot_Scru3 + 10;  //Toal screw on this rib is 10--index continues
631       for(Int_t nos4 = Tot_Scru3; nos4 < Tot_Scru4; nos4++)
632          {
633           gMC->Gspos("SCRL",nos4+1,"RB3L",xpos4_s,ypos4_s,zpos4_s,0,"ONLY");
634           ypos4_s += 5.;
635          }
636
637      gMC->Gspos("RB3L",1, "FR3L", xpos_rb4, ypos_rb4, zpos_rb4,0, "only");
638      gMC->Gspos("FR3L",1, "FR2L", xpos_fr4, ypos_fr4, zpos_fr4,irot6, "only");
639 //......................................................................................
640 //Frame-5
641
642       Float_t frame5[3] ;
643       frame5[0] = 4./2;
644       frame5[1] = 41.83/2;
645       frame5[2] = frame1[2];
646
647       Float_t xpos_fr5 =-frame5[1]*sin(bend_ang);
648       Float_t ypos_fr5 = frame4[1]+(frame5[1]*cos(bend_ang)-frame5[0]* sin(bend_ang));
649       Float_t zpos_fr5 = 0.;
650
651       Float_t rib5[3];
652       rib5[0] = 1./2.;
653       rib5[1] = frame5[1];
654       rib5[2] = 1.84/2.;
655
656       Float_t xpos_rb5 = frame5[0] - rib5[0];
657       Float_t ypos_rb5 = 0.0;
658       Float_t zpos_rb5 = frame5[2] + rib5[2];
659
660       gMC->Gsvolu("FR4L", "BOX", idPGF30, frame5, 3); //Frame - 5
661       gMC->Gsvolu("RB4L", "BOX", idPGF30, rib5, 3); //Rib - 5
662
663       Float_t xpos5_s = -rib5[0] + 0.4;
664       Float_t ypos5_s = -rib5[1] + 2.79;
665       Float_t zpos5_s = -frame5[2];
666
667       Int_t Tot_Scru5 = Tot_Scru4 + 8; //Toal screw on this rib is 8--index continues
668       for(Int_t nos5 = Tot_Scru4; nos5 < Tot_Scru5; nos5++)
669          {
670           gMC->Gspos("SCRL",nos5+1,"RB4L",xpos5_s,ypos5_s,zpos5_s,0,"ONLY");
671           ypos5_s += 5.;
672          }
673
674       gMC->Gspos("RB4L",1, "FR4L", xpos_rb5, ypos_rb5, zpos_rb5,0, "only");
675       gMC->Gspos("FR4L",1, "FR3L", xpos_fr5, ypos_fr5, zpos_fr5,irot6, "only");
676 //......................................................................................
677 //Frame-6
678
679       Float_t frame6[3] ;
680       frame6[0] = 3./2.;
681       frame6[1] = 30.84/2.;
682       frame6[2] = frame1[2];
683
684       Float_t xpos_fr6 = (-frame6[1]*sin(bend_ang))+0.5;
685       Float_t ypos_fr6 = frame5[1]+(frame6[1]*cos(bend_ang)-frame6[0]* sin(bend_ang));
686       Float_t zpos_fr6 = 0;
687
688       Float_t rib6[3];
689       rib6[0] = 1./2.;
690       rib6[1] = frame6[1]+0.8;
691       rib6[2] = 1.84/2.;
692
693       Float_t xpos_rb6 = frame6[0] - rib6[0];
694       Float_t ypos_rb6 = 0.4;
695       Float_t zpos_rb6 = frame6[2] + rib6[2];
696
697       gMC->Gsvolu("FR5L", "BOX", idPGF30, frame6, 3); //Frame - 6
698       gMC->Gsvolu("RB5L", "BOX", idPGF30, rib6, 3); //Rib - 6
699
700       Float_t xpos6_s = -rib6[0] + 0.4;
701       Float_t ypos6_s = -rib6[1] + 1.36;
702       Float_t zpos6_s = -frame6[2];
703
704       Int_t Tot_Scru6 = Tot_Scru5 + 6;      //Toal screw on this rib is 7--index continues
705       for(Int_t nos6 = Tot_Scru5; nos6 < Tot_Scru6; nos6++)
706          {
707           gMC->Gspos("SCRL",nos6+1,"RB5L",xpos6_s,ypos6_s,zpos6_s,0,"ONLY");
708           ypos6_s += 5.;
709          }
710
711       gMC->Gspos("RB5L",1, "FR5L", xpos_rb6, ypos_rb6, zpos_rb6,0, "only");
712       gMC->Gspos("FR5L",1, "FR4L", xpos_fr6, ypos_fr6, zpos_fr6,irot6, "only");
713 //......................................................................................
714 //Frame-7 Vertical frame
715
716       Float_t frame7[3] ;
717       frame7[0] = 2.7/2.;
718       frame7[1] = 97.9/2.;
719       frame7[2] = .95/2.;
720
721       Float_t rib7[3];
722       rib7[0] = 1./2.;
723       rib7[1] = frame7[1] - .9/2.;
724       rib7[2] = 1.84/2.;
725
726       Float_t xpos_fr7 =  frame7[0] -3.7;
727       Float_t ypos_fr7 =  frame7[1] +20.6;
728       Float_t zpos_fr7 = frame7[2];
729
730       Float_t xpos_rb7 = -frame7[0] + rib7[0]+0.9;
731       Float_t ypos_rb7 = .9/2.;
732       Float_t zpos_rb7 =  frame7[2] + rib7[2];
733
734       gMC->Gsvolu("FRVL", "BOX", idPGF30, frame7, 3); //Frame - vertical
735       gMC->Gsvolu("RBVL", "BOX", idPGF30, rib7, 3); //Rib
736
737   //Fixing Screws-- screw parameter and screw-head are taken from horizontal frame bar
738       gMC->Gsvolu("SCVL","TUBE",idScru, spar,3);    //screw-vertical part for Frame M4 x 25
739   //positioning head over screws
740       gMC->Gspos("HDFL",3,"SCVL",xpos_h,ypos_h,zpos_h,0,"ONLY");//positioning Screw-head
741  //Screws on Frame
742       Float_t xposv_s = -frame7[0] + 0.4;
743       Float_t yposv_s = -frame7[1] + 0.4;
744       Float_t zposv_s =  0.0;
745
746       Int_t Tot_Scru_v = 20;   //Total no. of Screws
747       for(Int_t nos_v = 0; nos_v < Tot_Scru_v; nos_v++)
748          {
749           gMC->Gspos("SCVL",nos_v+1,"FRVL",xposv_s,yposv_s,zposv_s,0,"ONLY");
750           yposv_s += 5.;
751          } // nos2 is no. of scru
752
753       gMC->Gspos("RBVL",1, "FRVL", xpos_rb7, ypos_rb7, zpos_rb7,0, "only");
754 //    gMC->Gspos("FRVL",1, "SQM3", xpos_fr7, ypos_fr7, zpos_fr7,0, "only");// frame vertical
755 //    gMC->Gspos("FRVL",1, "SQM4", xpos_fr7, ypos_fr7, zpos_fr7,0, "only");// frame vertical
756
757 //......................................................................................
758 //Frame - inner
759       Float_t fr_c[5];   //semi-circular frame
760       fr_c[0] = 20.6;
761       fr_c[1] = 23.1;
762       fr_c[2] = 0.95/2.;
763       fr_c[3] = -3.5;
764       fr_c[4] = 93.5;
765
766       Float_t xpos_frc = 0.0;
767       Float_t ypos_frc = 0.0;
768       Float_t zpos_frc = fr_c[2];
769
770       Float_t rib_c[5];
771       rib_c[0] = 21.5;
772       rib_c[1] = 22.5;
773       rib_c[2] = 1.84/2.;
774       rib_c[3] = fr_c[3]-2.0;
775       rib_c[4] = fr_c[4]+2.0;
776
777       Float_t xpos_rc = 0.0;
778       Float_t ypos_rc = 0.0;
779       Float_t zpos_rc = fr_c[2] + rib_c[2];
780
781       gMC->Gsvolu("FRCL", "TUBS", idPGF30, fr_c, 5); //Frame - semi circular
782       gMC->Gsvolu("RBCL", "TUBS", idPGF30, rib_c, 5); //Rib
783
784 //Screws
785       gMC->Gsvolu("SCYL","TUBE",idScru, spar,3);    //screw-vertical part for extended part in -Y
786       gMC->Gsvolu("SCIL","TUBE",idScru, spar,3);    //screw-vertical part
787       gMC->Gsvolu("SCXL","TUBE",idScru, spar,3);    //screw-vertical part for extended part in -X
788       gMC->Gspos("HDFL",3,"SCIL",xpos_h,ypos_h,zpos_h,0,"ONLY");//positioning Screw-head
789
790     // on circular part
791       Float_t zpos_is2 = 0.0;
792       Float_t theta[7];
793       Float_t radius = fr_c[0] + 0.4 ;   //inner radius + 0.4
794       Float_t arc = 3.667;  // for 10-degree angle
795       for(Int_t i = 0; i<8; i++)
796          {
797           theta[i] = arc/radius;
798           Float_t xpos_is2 = radius * cos(theta[i]);
799           Float_t ypos_is2 = radius * sin(theta[i]);
800           gMC->Gspos("SCIL",i+1,"FRCL",xpos_is2, ypos_is2, zpos_is2,0,"ONLY");
801           arc +=3.667;
802          }
803
804
805
806       gMC->Gspos("RBCL",1, "FRCL", xpos_rc, ypos_rc, zpos_rc,0, "only");  //Rib
807
808        gMC->Gspos("FRHL",1, "SQM3", xpos_fr1, ypos_fr1, zpos_fr1,0, "only");// frame -1
809        gMC->Gspos("FRHL",1, "SQM4", xpos_fr1, ypos_fr1, zpos_fr1,0, "only");// frame -1
810
811        gMC->Gspos("FRVL",1, "SQM3", xpos_fr7, ypos_fr7, zpos_fr7,0, "only");// frame vertical
812        gMC->Gspos("FRVL",1, "SQM4", xpos_fr7, ypos_fr7, zpos_fr7,0, "only");// frame vertical
813
814        gMC->Gspos("FRCL",1, "SQM3", xpos_frc, ypos_frc, zpos_frc,0, "only");// frame semi circular
815        gMC->Gspos("FRCL",1, "SQM4", xpos_frc, ypos_frc, zpos_frc,0, "only");// frame semi circular
816
817 //=============================================================================================
818
819 //                                   Plane - 2
820
821 //=============================================================================================
822
823  //Cathode PCB + Copper sheet over PCB + Roha cell over copper sheet
824
825 //Segment - 0
826        bpar_h[0] = 95.5/2.;
827        bpar_h[1] = 1.6/2.;
828        bpar_h[2] = zcbb/2.;
829        gMC->Gsvolu("CB0R", "BOX", idPCB, bpar_h, 3);
830
831        bpar_h[2] = zcu/2.;     //Thickness of Copper sheet
832        gMC->Gsvolu("CU0R", "BOX", idCU, bpar_h, 3);
833
834        bpar_h[2] = zRoha/2.;     //Thickness of Roha cell
835        gMC->Gsvolu("RH0R", "BOX", idRoha, bpar_h, 3);
836
837        bpar_h[0] = (100.6/2)-(0.9/2);
838        bpar_h[1] = 2.8/2.;
839        bpar_h[2] = zmeb/2.;
840        gMC->Gsvolu("MB0R", "BOX", idPCB, bpar_h, 3);
841
842        bpar_h[2] = zcu2/2;
843        gMC->Gsvolu("EB0R", "BOX", idCU, bpar_h, 3);
844
845 //Segment-1
846         pgpar[1] = 13.;
847         pgpar[5] = 22.5;
848         pgpar[6] = 120.2;
849         pgpar[7] = pgpar[4] - zcbb;
850         pgpar[8] = pgpar[5];
851         pgpar[9] = pgpar[6];
852         gMC->Gsvolu("CB1R", "PGON", idPCB, pgpar, 10);
853
854         pgpar[7] = pgpar[4] - zcu;  // Thickness of copper-sheet
855         gMC->Gsvolu("CU1R", "PGON", idCU, pgpar, 10);
856
857         pgpar[7] = pgpar[4] - zRoha;  // Thickness of Roha cell
858         gMC->Gsvolu("RH1R", "PGON", idRoha, pgpar, 10);
859
860         pgpar[5] = 21.5; // radius of inner rib
861         pgpar[6] = 121.2;
862         pgpar[7] = pgpar[4] - zmeb;
863         pgpar[8] = pgpar[5];
864         pgpar[9] = pgpar[6];
865         gMC->Gsvolu("MB1R", "PGON", idPCB, pgpar, 10);
866
867         pgpar[7] = pgpar[4] - zcu2;
868         gMC->Gsvolu("EB1R", "PGON", idCU, pgpar, 10);
869
870 //Segment-2
871
872         pgpar[1] = 21.;
873         pgpar[5] = 22.5;
874         pgpar[6] = 121.5;
875         pgpar[7] = pgpar[4] - zcbb;
876         pgpar[8] = pgpar[5];
877         pgpar[9] = pgpar[6];
878         gMC->Gsvolu("CB2R", "PGON", idPCB, pgpar, 10);
879
880         pgpar[7] = pgpar[4] - zcu;  // Thickness of copper-sheet
881         gMC->Gsvolu("CU2R", "PGON", idCU, pgpar, 10);
882
883         pgpar[7] = pgpar[4] - zRoha;  // Thickness of Roha cell
884         gMC->Gsvolu("RH2R", "PGON", idRoha, pgpar, 10);
885
886         pgpar[5] = 21.5; // radius of inner rib
887         pgpar[6] = 122.5;
888         pgpar[7] = pgpar[4] - zmeb;
889         pgpar[8] = pgpar[5];
890         pgpar[9] = pgpar[6];
891         gMC->Gsvolu("MB2R", "PGON", idPCB, pgpar, 10);
892
893         pgpar[7] = pgpar[4] - zcu2;
894         gMC->Gsvolu("EB2R", "PGON", idCU, pgpar, 10);
895
896 //Segment-3
897
898         pgpar[1] = 22.;
899         pgpar[5] = 22.5;
900         pgpar[6] = 119.9;
901         pgpar[7] = pgpar[4] - zcbb;
902         pgpar[8] = pgpar[5];
903         pgpar[9] = pgpar[6];
904         gMC->Gsvolu("CB3R", "PGON", idPCB, pgpar, 10);
905
906         pgpar[7] = pgpar[4] - zcu;  // Thickness of copper-sheet
907         gMC->Gsvolu("CU3R", "PGON", idCU, pgpar, 10);
908
909         pgpar[7] = pgpar[4] - zRoha;  // Thickness of Roha cell
910         gMC->Gsvolu("RH3R", "PGON", idRoha, pgpar, 10);
911
912         pgpar[5] = 21.5; // radius of inner rib
913         pgpar[6] = 120.9;
914         pgpar[7] = pgpar[4] - zmeb;
915         pgpar[8] = pgpar[5];
916         pgpar[9] = pgpar[6];
917         gMC->Gsvolu("MB3R", "PGON", idPCB, pgpar, 10);
918
919         pgpar[7] = pgpar[4] - zcu2;
920         gMC->Gsvolu("EB3R", "PGON", idCU, pgpar, 10);
921
922 //Segment-4
923
924         pgpar[1] = 20.;
925         pgpar[5] = 22.5;
926         pgpar[6] = 119.9;
927         pgpar[7] = pgpar[4] - zcbb;
928         pgpar[8] = pgpar[5];
929         pgpar[9] = pgpar[6];
930         gMC->Gsvolu("CB4R", "PGON", idPCB, pgpar, 10);
931
932         pgpar[7] = pgpar[4] - zcu;  // Thickness of copper-sheet
933         gMC->Gsvolu("CU4R", "PGON", idCU, pgpar, 10);
934
935         pgpar[7] = pgpar[4] - zRoha;  // Thickness of Roha cell
936         gMC->Gsvolu("RH4R", "PGON", idRoha, pgpar, 10);
937
938         pgpar[5] = 21.5; // radius of inner rib
939         pgpar[6] = 120.9;
940         pgpar[7] = pgpar[4] - zmeb;
941         pgpar[8] = pgpar[5];
942         pgpar[9] = pgpar[6];
943         gMC->Gsvolu("MB4R", "PGON", idPCB, pgpar, 10);
944
945         pgpar[7] = pgpar[4] - zcu2;
946         gMC->Gsvolu("EB4R", "PGON", idCU, pgpar, 10);
947
948 //Segment-5
949
950         pgpar[1] = 14.;
951         pgpar[5] = 22.5;
952         pgpar[6] = 117.5;
953         pgpar[7] = pgpar[4] - zcbb;
954         pgpar[8] = pgpar[5];
955         pgpar[9] = pgpar[6];
956         gMC->Gsvolu("CB5R", "PGON", idPCB, pgpar, 10);
957
958         pgpar[7] = pgpar[4] - zcu;  // Thickness of copper-sheet
959         gMC->Gsvolu("CU5R", "PGON", idCU, pgpar, 10);
960
961         pgpar[7] = pgpar[4] - zRoha;  // Thickness of Roha cell
962         gMC->Gsvolu("RH5R", "PGON", idRoha, pgpar, 10);
963
964         pgpar[5] = 21.5;// radius of inner rib
965         pgpar[6] = 118.5;
966         pgpar[7] = pgpar[4] - zmeb;
967         pgpar[8] = pgpar[5];
968         pgpar[9] = pgpar[6];
969         gMC->Gsvolu("MB5R", "PGON", idPCB, pgpar, 10);
970
971         pgpar[7] = pgpar[4] - zcu2;
972         gMC->Gsvolu("EB5R", "PGON", idCU, pgpar, 10);
973
974 //Segment-6 - vertical box
975
976         bpar_v[0] = 1.6/2.;
977         bpar_v[1] = 95.5/2.;
978         bpar_v[2] = zcbb/2.;
979         gMC->Gsvolu("CB6R", "BOX", idPCB, bpar_v, 3);
980         bpar_v[2] = zcu/2.;
981         gMC->Gsvolu("CU6R", "BOX", idCU, bpar_v, 3);
982
983         bpar_v[2] = zRoha/2.;
984         gMC->Gsvolu("RH6R", "BOX", idRoha, bpar_v, 3);
985
986         bpar_v[0] = 2.8/2.;
987         bpar_v[1] = (97.9/2)-(0.9/2.);
988         bpar_v[2] = zmeb/2;
989         gMC->Gsvolu("MB6R", "BOX", idPCB, bpar_v, 3);
990
991         bpar_v[2] = zcu2/2;
992         gMC->Gsvolu("EB6R", "BOX", idCU, bpar_v, 3);
993
994
995 //...........................................................................................
996 //Positioning of Electronic exit board
997      gMC->Gspos("EB0R",1, "MB0R", 0.,0.,-zpos_eeb_bar,0, "only");
998      gMC->Gspos("EB1R",1, "MB1R", 0.,0.,-zpos_cu2,0, "only");
999      gMC->Gspos("EB2R",1, "MB2R", 0.,0.,-zpos_cu2,0, "only");
1000      gMC->Gspos("EB3R",1, "MB3R", 0.,0.,-zpos_cu2,0, "only");
1001      gMC->Gspos("EB4R",1, "MB4R", 0.,0.,-zpos_cu2,0, "only");
1002      gMC->Gspos("EB5R",1, "MB5R", 0.,0.,-zpos_cu2,0, "only");
1003      gMC->Gspos("EB6R",1, "MB6R", 0.,0.,-zpos_eeb_bar,0, "only");
1004
1005 //Positioning of Mech. exit board
1006      xpos_meb_hor =  1.1;
1007      ypos_meb_hor = -0.6;
1008      xpos_meb_ver = -0.6;
1009      ypos_meb_ver = -0.35;
1010
1011      gMC->Gspos("MB0R",1, "RH0R", xpos_meb_hor,ypos_meb_hor,-zpos_meb_bar,0, "only");
1012      gMC->Gspos("MB1R",1, "RH1R", 0.,0.,-zpos_meb,0, "only");
1013      gMC->Gspos("MB2R",1, "RH2R", 0.,0.,-zpos_meb,0, "only");
1014      gMC->Gspos("MB3R",1, "RH3R", 0.,0.,-zpos_meb,0, "only");
1015      gMC->Gspos("MB4R",1, "RH4R", 0.,0.,-zpos_meb,0, "only");
1016      gMC->Gspos("MB5R",1, "RH5R", 0.,0.,-zpos_meb,0, "only");
1017      gMC->Gspos("MB6R",1, "RH6R", xpos_meb_ver,ypos_meb_ver,-zpos_meb_bar,0, "only");
1018
1019 //Positioning Roha cell over copper sheet
1020      gMC->Gspos("RH0R",1, "CU0R", 0.,0.,-zpos_Roha_bar,0, "only");// box horizontal
1021      gMC->Gspos("RH1R",1, "CU1R", 0.,0.,-zpos_Roha,0, "only");
1022      gMC->Gspos("RH2R",1, "CU2R", 0.,0.,-zpos_Roha,0, "only");
1023      gMC->Gspos("RH3R",1, "CU3R", 0.,0.,-zpos_Roha,0, "only");
1024      gMC->Gspos("RH4R",1, "CU4R", 0.,0.,-zpos_Roha,0, "only");
1025      gMC->Gspos("RH5R",1, "CU5R", 0.,0.,-zpos_Roha,0, "only");
1026      gMC->Gspos("RH6R",1, "CU6R", 0.,0.,-zpos_Roha_bar,0, "only");
1027
1028 //Positioning Copper sheet over PCB
1029      gMC->Gspos("CU0R",1, "CB0R", 0.,0.,-zpos_cubar,0, "only");// box horizontal
1030      gMC->Gspos("CU1R",1, "CB1R", 0.,0.,-zpos_cu,0, "only");
1031      gMC->Gspos("CU2R",1, "CB2R", 0.,0.,-zpos_cu,0, "only");
1032      gMC->Gspos("CU3R",1, "CB3R", 0.,0.,-zpos_cu,0, "only");
1033      gMC->Gspos("CU4R",1, "CB4R", 0.,0.,-zpos_cu,0, "only");
1034      gMC->Gspos("CU5R",1, "CB5R", 0.,0.,-zpos_cu,0, "only");
1035      gMC->Gspos("CU6R",1, "CB6R", 0.,0.,-zpos_cubar,0, "only");
1036
1037
1038 //Positioning the PCB
1039      x_hor_pos = 95.5/2.+ 22.6; // 22.6 is inner radius of PCB
1040      y_hor_pos = -(1.6/2); //
1041
1042      x_ver_pos = -(1.6/2); //
1043      y_ver_pos = 95.5/2.+ 22.6;
1044
1045      gMC->Gspos("CB0R",1, "SQM3", x_hor_pos,-bpar_h[1],-zpos_cbb_bar,0, "only");// box horizontal
1046      gMC->Gspos("CB1R",1, "SQM3", 0.,0.,-zpos_cbb,0, "only");
1047      gMC->Gspos("CB2R",1, "SQM3", 0.,0.,-zpos_cbb,irot1,"only");
1048      gMC->Gspos("CB3R",1, "SQM3", 0.,0.,-zpos_cbb,irot2, "only");
1049      gMC->Gspos("CB4R",1, "SQM3", 0.,0.,-zpos_cbb,irot3, "only");
1050      gMC->Gspos("CB5R",1, "SQM3", 0.,0.,-zpos_cbb,irot4, "only");
1051      gMC->Gspos("CB6R",1, "SQM3", x_ver_pos,y_ver_pos,-zpos_cbb_bar,0, "only");// box vertical
1052
1053      gMC->Gspos("CB0R",1, "SQM4", x_hor_pos,-bpar_h[1],-zpos_cbb_bar,0, "only");// box horizontal
1054      gMC->Gspos("CB1R",1, "SQM4", 0.,0.,-zpos_cbb,0, "only");
1055      gMC->Gspos("CB2R",1, "SQM4", 0.,0.,-zpos_cbb,irot1,"only");
1056      gMC->Gspos("CB3R",1, "SQM4", 0.,0.,-zpos_cbb,irot2, "only");
1057      gMC->Gspos("CB4R",1, "SQM4", 0.,0.,-zpos_cbb,irot3, "only");
1058      gMC->Gspos("CB5R",1, "SQM4", 0.,0.,-zpos_cbb,irot4, "only");
1059      gMC->Gspos("CB6R",1, "SQM4", x_ver_pos,y_ver_pos,-zpos_cbb_bar,0, "only");// box vertical
1060
1061 //----------------------------------------------------------------------
1062 //                          Frames P2
1063 //----------------------------------------------------------------------
1064 //Frame-1 P2
1065
1066        ypos_s = -frame1[1] + 0.4;
1067        zpos_fr1 = -frame1[2];
1068
1069        zpos_rb1 = -(frame1[2] + rib1[2]);
1070
1071        gMC->Gsvolu("FRHR", "BOX", idPGF30, frame1, 3); //Frame - 1 P2
1072        gMC->Gsvolu("RBHR", "BOX", idPGF30, rib1, 3);   //Rib - 1 P2
1073
1074    //Fixing Screws ...........................................
1075
1076        zpos_h = -(spar[2] + s_head[2]);
1077
1078        gMC->Gsvolu("SCHR","TUBE",idScru, spar,3);    //screw-vertical part for Frame M4 x 25
1079        gMC->Gsvolu("HDFR","TUBE",idScru, s_head,3);    //screw-head
1080    //positioning head over screws
1081        gMC->Gspos("HDFR",1,"SCHR",xpos_h,ypos_h,zpos_h,0,"ONLY");//positioning Screw-head
1082
1083    //Screws on Frame
1084
1085        xpos_s = frame1[0] - 0.4;
1086
1087        Tot_Scru1 = 21;   //Total no. of Scru
1088        for(Int_t nos1 = 0; nos1 < Tot_Scru1; nos1++)
1089           {
1090            gMC->Gspos("SCHR",nos1+1,"FRHR",xpos_s,ypos_s,zpos_s,irot1,"ONLY");
1091            xpos_s -= 5.;
1092           } // nos1 is no. of scru
1093
1094        gMC->Gspos("RBHR",1,"FRHR",xpos_rb1,ypos_rb1,zpos_rb1,0, "only");
1095        gMC->Gspos("FRHR",1,"SQM3",xpos_fr1,ypos_fr1,zpos_fr1,0, "only");
1096        gMC->Gspos("FRHR",1,"SQM4",xpos_fr1,ypos_fr1,zpos_fr1,0, "only");
1097
1098 //......................................................................................
1099
1100 //Frame-2
1101
1102       zpos_rb2 = -(frame2[2] + rib2[2]);
1103
1104       gMC->Gsvolu("FR1R", "BOX", idPGF30, frame2, 3); //Frame - 2
1105       gMC->Gsvolu("RB1R", "BOX", idPGF30, rib2, 3);   //Rib - 2
1106
1107 //Fixing Screws ...........................................
1108 //---------screw parameters (on Ribs) M4
1109
1110        spar2[2] = 2.9/2.;
1111        gMC->Gsvolu("SCRR","TUBE",idScru, spar2,3); //screw-vertical part for Rib m4
1112    //positioning head over screws
1113
1114        zpos2_h = -(spar2[2] + s_head[2]);
1115        gMC->Gspos("HDFR",2,"SCRR",xpos2_h,ypos2_h,zpos2_h,0,"ONLY");//positioning Screw-head
1116
1117        ypos2_s = -rib2[1] + 1.7;
1118        zpos2_s = frame2[2];
1119
1120        Tot_Scru2 = 6;   // 6 screws
1121        for(Int_t nos2 = 0; nos2 < Tot_Scru2; nos2++)
1122           {
1123            gMC->Gspos("SCRR",nos2+1,"RB1R",xpos2_s,ypos2_s,zpos2_s,0,"ONLY");
1124            ypos2_s += 5.;
1125           }
1126
1127        gMC->Gspos("RB1R",1, "FR1R", xpos_rb2, ypos_rb2, zpos_rb2,0, "only");
1128        gMC->Gspos("FR1R",1, "FRHR", xpos_fr2, ypos_fr2, zpos_fr2,0, "only");
1129
1130 //......................................................................................
1131
1132 //Frame-3 P2
1133
1134        zpos_rb3 = -(frame3[2] + rib3[2]);
1135
1136        gMC->Gsvolu("FR2R", "BOX", idPGF30, frame3, 3); //Frame - 3
1137        gMC->Gsvolu("FEXR", "BOX", idPGF30, fr_ex, 3); //frame- extended part
1138        gMC->Gsvolu("RB2R", "BOX", idPGF30, rib3, 3); //Rib - 3
1139
1140    //Fixing Screws ...........................................
1141         ypos3_s = -rib3[1] + 1.1;
1142         zpos3_s = frame3[2];
1143
1144         Tot_Scru3 = Tot_Scru2 + 9;      //Toal screw on this rib is 9--index continues
1145         for(Int_t nos3 = Tot_Scru2; nos3 < Tot_Scru3; nos3++)
1146            {
1147             gMC->Gspos("SCRR",nos3+1,"RB2R",xpos3_s,ypos3_s,zpos3_s,0,"ONLY");
1148             ypos3_s += 5.;
1149            }
1150
1151         gMC->Gspos("FEXR",1, "FR2R", xpos_ex, ypos_ex, zpos_ex,0, "only");
1152         gMC->Gspos("RB2R",1, "FR2R", xpos_rb3, ypos_rb3, zpos_rb3,0, "only");
1153         gMC->Gspos("FR2R",1, "FR1R", xpos_fr3, ypos_fr3, zpos_fr3,irot6, "only");
1154 //......................................................................................
1155
1156 //Frame-4 P2
1157
1158         zpos_rb4 = -(frame4[2] + rib4[2]);
1159
1160         gMC->Gsvolu("FR3R", "BOX", idPGF30, frame4, 3); //Frame - 4
1161         gMC->Gsvolu("RB3R", "BOX", idPGF30, rib4, 3); //Rib - 4
1162
1163    //Fixing Screws ...........................................
1164
1165         ypos4_s = -rib4[1] + 4.33;
1166         zpos4_s = frame4[2];
1167
1168         Tot_Scru4 = Tot_Scru3 + 10;      //Toal screw on this rib is 10--index continues
1169         for(Int_t nos4 = Tot_Scru3; nos4 < Tot_Scru4; nos4++)
1170            {
1171             gMC->Gspos("SCRR",nos4+1,"RB3R",xpos4_s,ypos4_s,zpos4_s,0,"ONLY");
1172             ypos4_s += 5.;
1173            }
1174
1175         gMC->Gspos("RB3R",1, "FR3R", xpos_rb4, ypos_rb4, zpos_rb4,0, "only");
1176         gMC->Gspos("FR3R",1, "FR2R", xpos_fr4, ypos_fr4, zpos_fr4,irot6, "only");
1177 //......................................................................................
1178 //Frame-5 P2
1179
1180         zpos_rb5 = -(frame5[2] + rib5[2]);
1181
1182         gMC->Gsvolu("FR4R", "BOX", idPGF30, frame5, 3); //Frame - 5
1183         gMC->Gsvolu("RB4R", "BOX", idPGF30, rib5, 3); //Rib - 5
1184
1185      //Fixing Screws ...........................................
1186
1187         ypos5_s = -rib5[1] + 2.79;
1188         zpos5_s = frame5[2];
1189
1190         Tot_Scru5 = Tot_Scru4 + 8;      //Toal screw on this rib is 8--index continues
1191         for(Int_t nos5 = Tot_Scru4; nos5 < Tot_Scru5; nos5++)
1192            {
1193             gMC->Gspos("SCRR",nos5+1,"RB4R",xpos5_s,ypos5_s,zpos5_s,0,"ONLY");
1194             ypos5_s += 5.;
1195            }
1196
1197         gMC->Gspos("RB4R",1, "FR4R", xpos_rb5, ypos_rb5, zpos_rb5,0, "only");
1198         gMC->Gspos("FR4R",1, "FR3R", xpos_fr5, ypos_fr5, zpos_fr5,irot6, "only");
1199 //......................................................................................
1200 //Frame-6 P2
1201
1202         zpos_rb6 = -(frame6[2] + rib6[2]);
1203
1204         gMC->Gsvolu("FR5R", "BOX", idPGF30, frame6, 3); //Frame - 6
1205         gMC->Gsvolu("RB5R", "BOX", idPGF30, rib6, 3); //Rib - 6
1206
1207      //Fixing Screws ...........................................
1208
1209         ypos6_s = -rib6[1] + 1.36;
1210         zpos6_s = frame6[2];
1211
1212         Tot_Scru6 = Tot_Scru5 + 6;      //Toal screw on this rib is 7--index continues
1213         for(Int_t nos6 = Tot_Scru5; nos6 < Tot_Scru6; nos6++)
1214            {
1215             gMC->Gspos("SCRR",nos6+1,"RB5R",xpos6_s,ypos6_s,zpos6_s,0,"ONLY");
1216             ypos6_s += 5.;
1217            }
1218
1219         gMC->Gspos("RB5R",1, "FR5R", xpos_rb6, ypos_rb6, zpos_rb6,0, "only");
1220         gMC->Gspos("FR5R",1, "FR4R", xpos_fr6, ypos_fr6, zpos_fr6,irot6, "only");
1221 //......................................................................................
1222
1223 //Frame-7 Vertical frame P2
1224
1225         zpos_fr7 = -frame7[2];
1226         zpos_rb7 =  -(frame7[2] + rib7[2]);
1227
1228         gMC->Gsvolu("FRVR", "BOX", idPGF30, frame7, 3); //Frame - vertical
1229         gMC->Gsvolu("RBVR", "BOX", idPGF30, rib7, 3); //Rib
1230
1231    //Fixing Screws-- screw parameter and screw-head are taken from horizontal frame bar
1232         gMC->Gsvolu("SCVR","TUBE",idScru, spar,3);    //screw-vertical part for Frame M4
1233    //positioning head over screws
1234         gMC->Gspos("HDFR",3,"SCVR",xpos_h,ypos_h,zpos_h,0,"ONLY");//positioning Screw-head
1235
1236        //Screws on Frame
1237        yposv_s = -frame7[1] + 0.4;
1238        zposv_s =  0.0;
1239
1240        Tot_Scru_v = 20;   //Total no. of Screws
1241        for(Int_t nos_v = 0; nos_v < Tot_Scru_v; nos_v++)
1242           {
1243            gMC->Gspos("SCVR",nos_v+1,"FRVR",xposv_s,yposv_s,zposv_s,0,"ONLY");
1244            yposv_s += 5.;
1245           }
1246
1247        gMC->Gspos("RBVR",1, "FRVR", xpos_rb7, ypos_rb7, zpos_rb7,0, "only");
1248        gMC->Gspos("FRVR",1, "SQM3", xpos_fr7, ypos_fr7, zpos_fr7,0, "only");// frame vertical
1249        gMC->Gspos("FRVR",1, "SQM4", xpos_fr7, ypos_fr7, zpos_fr7,0, "only");// frame vertical
1250
1251 //......................................................................................
1252 //Frame - inner
1253
1254        zpos_frc = - fr_c[2];
1255        zpos_rc = -(fr_c[2] + rib_c[2]);
1256
1257        gMC->Gsvolu("FRCR", "TUBS", idPGF30, fr_c, 5); //Frame - semi circular
1258        gMC->Gsvolu("RBCR", "TUBS", idPGF30, rib_c, 5); //Rib
1259
1260    //Screws -------------------------------------------------------
1261        gMC->Gsvolu("SCYR","TUBE",idScru, spar,3);    //screw-vertical part for extended part in -Y
1262        gMC->Gsvolu("SCIR","TUBE",idScru, spar,3);    //screw-vertical part
1263        gMC->Gsvolu("SCXR","TUBE",idScru, spar,3);    //screw-vertical part for extended part in -X
1264        gMC->Gspos("HDFR",3,"SCIR",xpos_h,ypos_h,zpos_h,0,"ONLY");//positioning Screw-head
1265
1266    // on circular part
1267       radius = fr_c[0] + 0.4 ;   //inner radius + 0.4
1268       zpos_is2 = 0.0;
1269       arc = 3.667;  // for 10-degree angle
1270       for(Int_t i = 0; i<8; i++)
1271          {
1272           theta[i] = arc/radius;
1273           Float_t xpos_is2 = radius * cos(theta[i]);
1274           Float_t ypos_is2 = radius * sin(theta[i]);
1275           gMC->Gspos("SCIR",i+1,"FRCR",xpos_is2, ypos_is2, zpos_is2,0,"ONLY");
1276           arc +=3.667;
1277          }
1278
1279       gMC->Gspos("RBCR",1, "FRCR", xpos_rc, ypos_rc, zpos_rc,0, "only");  //Rib
1280       gMC->Gspos("FRCR",1, "SQM3", xpos_frc, ypos_frc, zpos_frc,0, "only");// frame semi circular
1281       gMC->Gspos("FRCR",1, "SQM4", xpos_frc, ypos_frc, zpos_frc,0, "only");// frame semi circular
1282
1283
1284 //Plane 2 -----------------------------------------------------------------------------------
1285
1286 //^^^^^^^^^^^^^^^^^^^^^^^^^ Sensitive volumes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1287
1288        Float_t zsenv = 0.5; // distance between two cathode plane
1289
1290  //Segment-0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1291        bpar_h[0] = 95.5/2.;
1292        bpar_h[1] = 1.6/2.;
1293        bpar_h[2] = zsenv/2.;
1294        gMC->Gsvolu("C3G0", "BOX", idGas, bpar_h, 3);
1295        gMC->Gsvolu("C4G0", "BOX", idGas, bpar_h, 3);
1296
1297  //Segment-1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1298         pgpar[0] = 0.;
1299         pgpar[1] = 13.;
1300         pgpar[2] = 1.;
1301         pgpar[3] = 2.;
1302         pgpar[4] = -zsenv/2.;
1303         pgpar[5] = 22.5;
1304         pgpar[6] = 117.2;
1305         pgpar[7] = zsenv/2.;
1306         pgpar[8] = pgpar[5];
1307         pgpar[9] = pgpar[6];
1308         gMC->Gsvolu("C3G1", "PGON", idGas, pgpar, 10);
1309         gMC->Gsvolu("C4G1", "PGON", idGas, pgpar, 10);
1310
1311 //Segment-2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1312         pgpar[0] = 0.;
1313         pgpar[1] = 21.;
1314         pgpar[2] = 1.;
1315         pgpar[3] = 2.;
1316         pgpar[4] = -zsenv/2.;
1317         pgpar[5] = 22.5;
1318         pgpar[6] = 115.0;
1319         pgpar[7] = zsenv/2.;
1320         pgpar[8] = pgpar[5];
1321         pgpar[9] = pgpar[6];
1322         gMC->Gsvolu("C3G2", "PGON", idGas, pgpar, 10);
1323         gMC->Gsvolu("C4G2", "PGON", idGas, pgpar, 10);
1324
1325 //Segment-3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1326         pgpar[0] = 0.;
1327         pgpar[1] = 22.;
1328         pgpar[2] = 1.;
1329         pgpar[3] = 2.;
1330         pgpar[4] = -zsenv/2.;
1331         pgpar[5] = 22.5;
1332         pgpar[6] = 116.9;
1333         pgpar[7] = zsenv/2.;
1334         pgpar[8] = pgpar[5];
1335         pgpar[9] = pgpar[6];
1336         gMC->Gsvolu("C3G3", "PGON", idGas, pgpar, 10);
1337         gMC->Gsvolu("C4G3", "PGON", idGas, pgpar, 10);
1338
1339 //Segment-4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1340         pgpar[0] = 0.;
1341         pgpar[1] = 20.;
1342         pgpar[2] = 1.;
1343         pgpar[3] = 2.;
1344         pgpar[4] = -zsenv/2.;
1345         pgpar[5] = 22.5;
1346         pgpar[6] = 116.9;
1347         pgpar[7] = zsenv/2.;
1348         pgpar[8] = pgpar[5];
1349         pgpar[9] = pgpar[6];
1350         gMC->Gsvolu("C3G4", "PGON", idGas, pgpar, 10);
1351         gMC->Gsvolu("C4G4", "PGON", idGas, pgpar, 10);
1352
1353 //Segment-5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1354         pgpar[0] = 0.;
1355         pgpar[1] = 14.;
1356         pgpar[2] = 1.;
1357         pgpar[3] = 2.;
1358         pgpar[4] = -zsenv/2.;
1359         pgpar[5] = 22.5;
1360         pgpar[6] = 115.5;
1361         pgpar[7] = zsenv/2.;
1362         pgpar[8] = pgpar[5];
1363         pgpar[9] = pgpar[6];
1364         gMC->Gsvolu("C3G5", "PGON", idGas, pgpar, 10);
1365         gMC->Gsvolu("C4G5", "PGON", idGas, pgpar, 10);
1366
1367 //Segment-6 - vertical box ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1368
1369         bpar_v[0] = 2.16/2.;
1370         bpar_v[1] = 95.5/2.;
1371         bpar_v[2] = zsenv/2.;
1372         gMC->Gsvolu("C3G6", "BOX", idGas, bpar_v, 3);
1373         gMC->Gsvolu("C4G6", "BOX", idGas, bpar_v, 3);
1374
1375 //...........................................................................................
1376
1377 //Positioning the PCB
1378       x_hor_pos = 95.5/2.+ 22.6; // 22.6 is inner radius of PCB
1379       y_hor_pos = -(1.6/2); //
1380
1381       x_ver_pos = -(1.6/2); //
1382       y_ver_pos = 95.5/2.+ 22.6;
1383
1384      gMC->Gspos("C3G0",1, "SQM3", x_hor_pos,y_hor_pos,0.,0, "only");// box horizontal
1385      gMC->Gspos("C3G1",1, "SQM3", 0.,0.,0.,0, "only");
1386      gMC->Gspos("C3G2",1, "SQM3", 0.,0.,0.,irot1,"only");
1387      gMC->Gspos("C3G3",1, "SQM3", 0.,0.,0.,irot2, "only");
1388      gMC->Gspos("C3G4",1, "SQM3", 0.,0.,0.,irot3, "only");
1389      gMC->Gspos("C3G5",1, "SQM3", 0.,0.,0.,irot4, "only");
1390      gMC->Gspos("C3G6",1, "SQM3", x_ver_pos,y_ver_pos,0.,0, "only");// box vertical
1391
1392      gMC->Gspos("C4G0",1, "SQM4", x_hor_pos,y_hor_pos,0.,0, "only");// box horizontal
1393      gMC->Gspos("C4G1",1, "SQM4", 0.,0.,0.,0, "only");
1394      gMC->Gspos("C4G2",1, "SQM4", 0.,0.,0.,irot1,"only");
1395      gMC->Gspos("C4G3",1, "SQM4", 0.,0.,0.,irot2, "only");
1396      gMC->Gspos("C4G4",1, "SQM4", 0.,0.,0.,irot3, "only");
1397      gMC->Gspos("C4G5",1, "SQM4", 0.,0.,0.,irot4, "only");
1398      gMC->Gspos("C4G6",1, "SQM4", x_ver_pos,y_ver_pos,0.,0, "only");// box vertical
1399
1400 //^^^^^^^^^^^^^^^^^^^^^^^^^ Sensitive volumes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1401
1402
1403 //##################################################################################################
1404 //   Positioning Quadrant  in chamber#3 and chamber#4
1405 //##################################################################################################
1406 /******Transformations for  Quadrant**********************************************
1407       ||        I  => Quadrant I:   no rotation
1408       ||
1409   II. || I.    II  => Quadrant II:  Reflaction of Quadrant I in XZ plane
1410       ||           => TGeoRotation("Qrot2",90.,180.,90.,90.,180.,0.);
1411 =============
1412       ||       III => Quadrant III: 180 degree rotation of Quadrant I in XY plane
1413  III. || IV.       => TGeoRotation("Qrot3",90.,180.,90.,90.,180.,0.);
1414       ||        IV => Quadrant IV:-180 degree rotation of Quadrant II in XY plane
1415                    => TGeoRotation("Qrot4",90.,0.,90.,-90.,180.,0.);
1416 **********************************************************************************************/
1417
1418  Int_t detElemId1 =  1;  // quadrant I
1419  Int_t detElemId2 =  0;  // quadrant II
1420  Int_t detElemId3 =  3;  // quadrant III
1421  Int_t detElemId4 =  2;  // quadrant IV
1422
1423 Float_t half_chamber = zcbb + zcu + zRoha + zmeb + zcu2 + zsenv/2;
1424 //   cout<<  "\n half_chamber \t" << half_chamber << endl;
1425 //   Float_t half_chamber =2.894;
1426 //     Float_t half_chamber =3.5;
1427
1428 // ------------------------------St2 Chamber3------------------------------------------------
1429
1430  //    GetEnvelopes(2)->AddEnvelope("S3M0", 300, true,TGeoTranslation(0.,0.,0.));
1431     GetEnvelopes(2)->AddEnvelope("SQM3", 300+detElemId1, 1, TGeoTranslation( 0., 0., - half_chamber));
1432     GetEnvelopes(2)->AddEnvelope("SQM3", 300+detElemId2, 2, TGeoTranslation( 0., 0., + half_chamber),
1433                                  TGeoRotation("Qrot3",90.,180.,90.,90.,180.,0.));
1434     GetEnvelopes(2)->AddEnvelope("SQM3", 300+detElemId3, 3, TGeoTranslation( 0., 0., - half_chamber),
1435                                   TGeoRotation("Qrot3",90.,180.,90.,270.,0.,0.));
1436     GetEnvelopes(2)->AddEnvelope("SQM3", 300+detElemId4, 4, TGeoTranslation( 0., 0., + half_chamber),
1437                                   TGeoRotation("Qrot4",90.,0.,90.,-90.,180.,0.));
1438
1439 //--------------------------------St2 Chamber4-------------------------------------------------
1440
1441     GetEnvelopes(3)->AddEnvelope("SQM4", 400+detElemId1, 1, TGeoTranslation( 0., 0., - half_chamber));
1442     GetEnvelopes(3)->AddEnvelope("SQM4", 400+detElemId2, 2, TGeoTranslation( 0., 0., + half_chamber),
1443                                  TGeoRotation("Qrot2",90.,180.,90.,90.,180.,0.));
1444     GetEnvelopes(3)->AddEnvelope("SQM4", 400+detElemId3, 3, TGeoTranslation( 0., 0., - half_chamber),
1445                                   TGeoRotation("Qrot3",90.,180.,90.,270.,0.,0.));
1446     GetEnvelopes(3)->AddEnvelope("SQM4", 400+detElemId4, 4, TGeoTranslation( 0., 0., + half_chamber),
1447                                   TGeoRotation("Qrot4",90.,0.,90.,-90.,180.,0.));
1448
1449 //**********************************************************************************************
1450
1451    }
1452
1453 //______________________________________________________________________________
1454 void AliMUONSt2GeometryBuilderV2::SetTransformations()
1455 {
1456 // Defines the transformations for the station2 chambers.
1457 // ---
1458
1459   Double_t zpos1 = - AliMUONConstants::DefaultChamberZ(2); 
1460   SetTranslation(2, TGeoTranslation(0., 0., zpos1));
1461
1462   Double_t zpos2 = - AliMUONConstants::DefaultChamberZ(3); 
1463   SetTranslation(3, TGeoTranslation(0., 0., zpos2));
1464 }
1465
1466 //______________________________________________________________________________
1467 void AliMUONSt2GeometryBuilderV2::SetSensitiveVolumes()
1468 {
1469 // Defines the sensitive volumes for station2 chambers.
1470 // ---
1471
1472   GetGeometry(2)->SetSensitiveVolume("C3G0");
1473   GetGeometry(2)->SetSensitiveVolume("C3G1");
1474   GetGeometry(2)->SetSensitiveVolume("C3G2");
1475   GetGeometry(2)->SetSensitiveVolume("C3G3");
1476   GetGeometry(2)->SetSensitiveVolume("C3G4");
1477   GetGeometry(2)->SetSensitiveVolume("C3G5");
1478   GetGeometry(2)->SetSensitiveVolume("C3G6");
1479
1480   GetGeometry(3)->SetSensitiveVolume("C4G0");
1481   GetGeometry(3)->SetSensitiveVolume("C4G1");
1482   GetGeometry(3)->SetSensitiveVolume("C4G2");
1483   GetGeometry(3)->SetSensitiveVolume("C4G3");
1484   GetGeometry(3)->SetSensitiveVolume("C4G4");
1485   GetGeometry(3)->SetSensitiveVolume("C4G5");
1486   GetGeometry(3)->SetSensitiveVolume("C4G6");
1487
1488 }