source: trunk/examples/advanced/hadrontherapy/src/HadrontherapyModulator.cc @ 1332

Last change on this file since 1332 was 1230, checked in by garnier, 14 years ago

update to geant4.9.3

  • Property svn:executable set to *
File size: 72.4 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26// $Id: HadrontherapyModulator.cc;
27// See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
28
29#include "G4Material.hh"
30#include "G4Tubs.hh"
31#include "G4Box.hh"
32#include "G4LogicalVolume.hh"
33#include "G4VPhysicalVolume.hh"
34#include "G4ThreeVector.hh"
35#include "G4PVPlacement.hh"
36#include "globals.hh"
37#include "G4Transform3D.hh"
38#include "G4RotationMatrix.hh"
39#include "G4VisAttributes.hh"
40#include "G4Colour.hh"
41#include "HadrontherapyModulator.hh"
42#include "G4Transform3D.hh"
43#include "G4ios.hh"
44#include <fstream>
45#include "G4RunManager.hh"
46#include "G4NistManager.hh"
47
48HadrontherapyModulator::HadrontherapyModulator():physiMotherMod(0),
49                                                 solidMod0(0),         logicMod0(0),          physiMod0(0),
50                                                 solidMod1(0),         logicMod1(0),          physiMod1(0),
51                                                 solidMod2(0),         logicMod2(0),          physiMod2(0),
52                                                 solidMod3(0),         logicMod3(0),          physiMod3(0),
53                                                 solidMod4(0),         logicMod4(0),          physiMod4(0),
54                                                 solidMod5(0),         logicMod5(0),          physiMod5(0),
55                                                 solidMod6(0),         logicMod6(0),          physiMod6(0),
56                                                 solidMod7(0),         logicMod7(0),          physiMod7(0),
57                                                 solidMod8(0),         logicMod8(0),          physiMod8(0),
58                                                 solidMod9(0),         logicMod9(0),          physiMod9(0),
59                                                 solidMod10(0),        logicMod10(0),         physiMod10(0),
60                                                 solidMod11(0),        logicMod11(0),         physiMod11(0),
61                                                 solidMod12(0),        logicMod12(0),         physiMod12(0),
62                                                 solidMod13(0),        logicMod13(0),         physiMod13(0),
63                                                 solidMod14(0),        logicMod14(0),         physiMod14(0),
64                                                 solidMod15(0),        logicMod15(0),         physiMod15(0),
65                                                 solidMod16(0),        logicMod16(0),         physiMod16(0),
66                                                 solidMod17(0),        logicMod17(0),         physiMod17(0),
67                                                 solidMod18(0),        logicMod18(0),         physiMod18(0),
68                                                 solidMod20(0),        logicMod20(0),         physiMod20(0),
69                                                 solidMod21(0),        logicMod21(0),         physiMod21(0),
70                                                 solidMod22(0),        logicMod22(0),         physiMod22(0),
71                                                 solidMod23(0),        logicMod23(0),         physiMod23(0),
72                                                 solidMod24(0),        logicMod24(0),         physiMod24(0),
73                                                 solidMod25(0),        logicMod25(0),         physiMod25(0),
74                                                 solidMod26(0),        logicMod26(0),         physiMod26(0),
75                                                 solidMod27(0),        logicMod27(0),         physiMod27(0),
76                                                 solidMod28(0),        logicMod28(0),         physiMod28(0),
77                                                 solidMod29(0),        logicMod29(0),         physiMod29(0),
78                                                 solidMod30(0),        logicMod30(0),         physiMod30(0),
79                                                 solidMod31(0),        logicMod31(0),         physiMod31(0),
80                                                 solidMod32(0),        logicMod32(0),         physiMod32(0),
81                                                 solidMod33(0),        logicMod33(0),         physiMod33(0),
82                                                 solidMod34(0),        logicMod34(0),         physiMod34(0),
83                                                 solidMod35(0),        logicMod35(0),         physiMod35(0),
84                                                 solidMod36(0),        logicMod36(0),         physiMod36(0),
85                                                 solidMod37(0),        logicMod37(0),         physiMod37(0),
86                                                 solidMod38(0),        logicMod38(0),         physiMod38(0),
87                                                 solidMod40(0),        logicMod40(0),         physiMod40(0),
88                                                 solidMod41(0),        logicMod41(0),         physiMod41(0),
89                                                 solidMod42(0),        logicMod42(0),         physiMod42(0),
90                                                 solidMod43(0),        logicMod43(0),         physiMod43(0),
91                                                 solidMod44(0),        logicMod44(0),         physiMod44(0),
92                                                 solidMod45(0),        logicMod45(0),         physiMod45(0),
93                                                 solidMod46(0),        logicMod46(0),         physiMod46(0),
94                                                 solidMod47(0),        logicMod47(0),         physiMod47(0),
95                                                 solidMod48(0),        logicMod48(0),         physiMod48(0),
96                                                 solidMod49(0),        logicMod49(0),         physiMod49(0),
97                                                 solidMod50(0),        logicMod50(0),         physiMod50(0),
98                                                 solidMod51(0),        logicMod51(0),         physiMod51(0),
99                                                 solidMod52(0),        logicMod52(0),         physiMod52(0),
100                                                 solidMod53(0),        logicMod53(0),         physiMod53(0),
101                                                 solidMod54(0),        logicMod54(0),         physiMod54(0),
102                                                 solidMod55(0),        logicMod55(0),         physiMod55(0),
103                                                 solidMod56(0),        logicMod56(0),         physiMod56(0),
104                                                 solidMod57(0),        logicMod57(0),         physiMod57(0),
105                                                 solidMod58(0),        logicMod58(0),         physiMod58(0),
106                                                 solidMod60(0),        logicMod60(0),         physiMod60(0),
107                                                 solidMod61(0),        logicMod61(0),         physiMod61(0),
108                                                 solidMod62(0),        logicMod62(0),         physiMod62(0),
109                                                 solidMod63(0),        logicMod63(0),         physiMod63(0),
110                                                 solidMod64(0),        logicMod64(0),         physiMod64(0),
111                                                 solidMod65(0),        logicMod65(0),         physiMod65(0),
112                                                 solidMod66(0),        logicMod66(0),         physiMod66(0),
113                                                 solidMod67(0),        logicMod67(0),         physiMod67(0),
114                                                 solidMod68(0),        logicMod68(0),         physiMod68(0),
115                                                 solidMod69(0),        logicMod69(0),         physiMod69(0),
116                                                 solidMod70(0),        logicMod70(0),         physiMod70(0),
117                                                 solidMod71(0),        logicMod71(0),         physiMod71(0),
118                                                 solidMod72(0),        logicMod72(0),         physiMod72(0),
119                                                 solidMod73(0),        logicMod73(0),         physiMod73(0),
120                                                 solidMod74(0),        logicMod74(0),         physiMod74(0),
121                                                 solidMod75(0),        logicMod75(0),         physiMod75(0),
122                                                 solidMod76(0),        logicMod76(0),         physiMod76(0),
123                                                 solidMod77(0),        logicMod77(0),         physiMod77(0),
124                                                 solidMod78(0),        logicMod78(0),         physiMod78(0) 
125{
126  rm = new G4RotationMatrix(); 
127  G4double phi = 270. *deg;     
128  rm -> rotateY(phi); 
129}
130/////////////////////////////////////////////////////////////////////////////
131HadrontherapyModulator::~HadrontherapyModulator() 
132{
133  delete rm;
134}
135/////////////////////////////////////////////////////////////////////////////
136void HadrontherapyModulator::BuildModulator(G4VPhysicalVolume* motherVolume)
137{
138  G4bool isotopes = false;
139  G4Material* airNist =  G4NistManager::Instance()->FindOrBuildMaterial("G4_AIR", isotopes);
140
141  G4Material* Mod0Mater = airNist;
142  G4Material* ModMater = airNist;
143 
144  G4double innerRadiusOfTheTube = 2.5 *cm;
145  G4double outerRadiusOfTheTube = 9.5 *cm;
146  G4double hightOfTheTube = 0.03*cm;
147
148  // Mother of the modulator wheel 
149  G4ThreeVector positionMotherMod = G4ThreeVector(-1960.50 *mm, 30 *mm, 50 *mm);
150 
151  G4Box* solidMotherMod = new G4Box("MotherMod", 12 *cm, 12 *cm, 12 *cm);
152 
153  G4LogicalVolume * logicMotherMod = new G4LogicalVolume(solidMotherMod, Mod0Mater,"MotherMod",0,0,0);
154
155  physiMotherMod = new G4PVPlacement(rm,positionMotherMod,  "MotherMod", 
156                                     logicMotherMod,                                     
157                                     motherVolume,     
158                                     false,           
159                                     0);             
160 
161  //----------------------------------------------------------
162  // Mother volume of first quarter of the modulator
163  //----------------------------------------------------------
164
165  G4double hightOfTheTube0 = 5.0 *cm;
166  G4double startAngleOfTheTube0 = 45 *deg;
167  G4double spanningAngleOfTheTube0 = 90 *deg;
168 
169  G4RotationMatrix rm2;
170  rm2.rotateZ(0 *deg);
171 
172  G4ThreeVector positionMod0 = G4ThreeVector(0*cm,0*cm,0*cm);
173 
174  solidMod0 = new G4Tubs("Mod0",
175                         innerRadiusOfTheTube, 
176                         outerRadiusOfTheTube,
177                         hightOfTheTube0,
178                         startAngleOfTheTube0, 
179                         spanningAngleOfTheTube0);
180 
181  logicMod0 = new G4LogicalVolume(solidMod0, Mod0Mater, "Mod0",0,0,0);
182 
183  physiMod0 = new G4PVPlacement(G4Transform3D(rm2, positionMod0), 
184                                logicMod0,   
185                                "Mod0",       
186                                logicMotherMod, 
187                                false,         
188                                0);           
189 
190 
191  //----------------------------------------------------------
192  // First modulator sclice
193  //----------------------------------------------------------
194 
195  G4double startAngleOfTheTube1 = 54.267*deg;
196  G4double spanningAngleOfTheTube1 = 71.466*deg;
197
198 
199  G4ThreeVector positionMod1 = G4ThreeVector(0*cm,0*cm,0.51*cm);
200  solidMod1 = new G4Tubs("Mod1",
201                         innerRadiusOfTheTube, 
202                         outerRadiusOfTheTube,
203                         hightOfTheTube,
204                         startAngleOfTheTube1, 
205                         spanningAngleOfTheTube1);
206                               
207  logicMod1 = new G4LogicalVolume(solidMod1, ModMater, "Mod1",0,0,0);
208  physiMod1 = new G4PVPlacement(0,               
209                                positionMod1, 
210                                logicMod1,     
211                                "Mod1",       
212                                logicMod0,     
213                                false,         
214                                0);           
215                                     
216                                     
217  //----------------------------------------------------------
218  // Second modulator slice
219  //----------------------------------------------------------
220 
221  G4double startAngleOfTheTube2 = 57.714*deg;
222  G4double spanningAngleOfTheTube2 = 64.572*deg;
223
224   
225   
226  G4ThreeVector positionMod2 = G4ThreeVector(0*cm,0*cm,0.45*cm);
227  solidMod2 = new G4Tubs("Mod2",
228                         innerRadiusOfTheTube, 
229                         outerRadiusOfTheTube,
230                         hightOfTheTube,
231                         startAngleOfTheTube2, 
232                         spanningAngleOfTheTube2);
233
234  logicMod2 = new G4LogicalVolume(solidMod2, ModMater, "Mod2",0,0,0);
235  physiMod2 = new G4PVPlacement(0,             
236                                positionMod2, 
237                                logicMod2,     
238                                "Mod2",       
239                                logicMod0,     
240                                false,         
241                                0);           
242
243
244  //----------------------------------------------------------
245  // 3th modulator slice
246  //----------------------------------------------------------
247 
248  G4double startAngleOfTheTube3 = 60.478*deg;
249  G4double spanningAngleOfTheTube3 = 59.044*deg;
250
251   
252   
253  G4ThreeVector positionMod3 = G4ThreeVector(0*cm,0*cm,0.39*cm);
254  solidMod3 = new G4Tubs("Mod3",
255                         innerRadiusOfTheTube, 
256                         outerRadiusOfTheTube,
257                         hightOfTheTube,
258                         startAngleOfTheTube3, 
259                         spanningAngleOfTheTube3);
260
261  logicMod3 = new G4LogicalVolume(solidMod3, ModMater, "Mod3",0,0,0);
262  physiMod3 = new G4PVPlacement(0,                 
263                                positionMod3, 
264                                logicMod3,     
265                                "Mod3",       
266                                logicMod0,     
267                                false,         
268                                0);           
269
270 
271  //----------------------------------------------------------
272  //
273  //----------------------------------------------------------
274 
275  G4double startAngleOfTheTube4 = 62.668*deg;
276  G4double spanningAngleOfTheTube4 = 54.664*deg;
277   
278   
279  G4ThreeVector positionMod4 = G4ThreeVector(0*cm,0*cm,0.33*cm);
280  solidMod4 = new G4Tubs("Mod4",
281                         innerRadiusOfTheTube, 
282                         outerRadiusOfTheTube,
283                         hightOfTheTube,
284                         startAngleOfTheTube4, 
285                         spanningAngleOfTheTube4);
286
287  logicMod4 = new G4LogicalVolume(solidMod4, ModMater, "Mod4",0,0,0);
288  physiMod4 = new G4PVPlacement(0,                   // no rotation
289                                positionMod4,  // at (x,y,z)
290                                logicMod4,     // its logical volume                             
291                                "Mod4",        // its name
292                                logicMod0,      // its mother  volume
293                                false,           // no boolean operations
294                                0);              // no particular field
295
296
297  //----------------------------------------------------------
298  //Quinta fetta Modulatore
299  //----------------------------------------------------------
300 
301  G4double startAngleOfTheTube5 = 64.814*deg;
302  G4double spanningAngleOfTheTube5 = 50.372*deg;
303   
304   
305  G4ThreeVector positionMod5 = G4ThreeVector(0*cm,0*cm,0.27*cm);
306  solidMod5 = new G4Tubs("Mod5",
307                         innerRadiusOfTheTube, 
308                         outerRadiusOfTheTube,
309                         hightOfTheTube,
310                         startAngleOfTheTube5, 
311                         spanningAngleOfTheTube5);
312
313  logicMod5 = new G4LogicalVolume(solidMod5, ModMater, "Mod5",0,0,0);
314  physiMod5 = new G4PVPlacement(0,                   // no rotation
315                                positionMod5,  // at (x,y,z)
316                                logicMod5,     // its logical volume                             
317                                "Mod5",        // its name
318                                logicMod0,      // its mother  volume
319                                false,           // no boolean operations
320                                0);              // no particular field
321
322 
323  //----------------------------------------------------------
324  //Sesta fetta Modulatore
325  //----------------------------------------------------------
326 
327  G4double startAngleOfTheTube6 = 66.706*deg;
328  G4double spanningAngleOfTheTube6 = 46.588*deg;
329   
330   
331  G4ThreeVector positionMod6 = G4ThreeVector(0*cm,0*cm,0.21*cm);
332  solidMod6 = new G4Tubs("Mod6",
333                         innerRadiusOfTheTube, 
334                         outerRadiusOfTheTube,
335                         hightOfTheTube,
336                         startAngleOfTheTube6, 
337                         spanningAngleOfTheTube6);
338
339  logicMod6 = new G4LogicalVolume(solidMod6, ModMater, "Mod6",0,0,0);
340  physiMod6 = new G4PVPlacement(0,                   // no rotation
341                                positionMod6,  // at (x,y,z)
342                                logicMod6,     // its logical volume                             
343                                "Mod6",        // its name
344                                logicMod0,      // its mother  volume
345                                false,           // no boolean operations
346                                0);              // no particular field
347
348
349  //----------------------------------------------------------
350  //Settima fetta Modulatore
351  //----------------------------------------------------------
352 
353  G4double startAngleOfTheTube7 = 68.648*deg;
354  G4double spanningAngleOfTheTube7 = 42.704*deg;
355
356   
357   
358  G4ThreeVector positionMod7 = G4ThreeVector(0*cm,0*cm,0.15*cm);
359  solidMod7 = new G4Tubs("Mod7",
360                         innerRadiusOfTheTube, 
361                         outerRadiusOfTheTube,
362                         hightOfTheTube,
363                         startAngleOfTheTube7, 
364                         spanningAngleOfTheTube7);
365
366  logicMod7 = new G4LogicalVolume(solidMod7, ModMater, "Mod7",0,0,0);
367  physiMod7 = new G4PVPlacement(0,                   // no rotation
368                                positionMod7,  // at (x,y,z)
369                                logicMod7,     // its logical volume                             
370                                "Mod7",        // its name
371                                logicMod0,      // its mother  volume
372                                false,           // no boolean operations
373                                0);              // no particular field
374
375
376
377  //----------------------------------------------------------
378  //Ottava fetta Modulatore
379  //----------------------------------------------------------
380   
381  G4double startAngleOfTheTube8 = 70.472*deg;
382  G4double spanningAngleOfTheTube8 = 39.056*deg;
383
384   
385  G4ThreeVector positionMod8 = G4ThreeVector(0*cm,0*cm,0.09*cm);
386  solidMod8 = new G4Tubs("Mod8",
387                         innerRadiusOfTheTube, 
388                         outerRadiusOfTheTube,
389                         hightOfTheTube,
390                         startAngleOfTheTube8, 
391                         spanningAngleOfTheTube8);
392
393  logicMod8 = new G4LogicalVolume(solidMod8, ModMater, "Mod8",0,0,0);
394  physiMod8 = new G4PVPlacement(0,                   // no rotation
395                                positionMod8,  // at (x,y,z)
396                                logicMod8,     // its logical volume                             
397                                "Mod8",        // its name
398                                logicMod0,      // its mother  volume
399                                false,           // no boolean operations
400                                0);              // no particular field
401
402
403
404
405  //----------------------------------------------------------
406  //Nona fetta Modulatore
407  //----------------------------------------------------------
408 
409  G4double startAngleOfTheTube9 = 72.288*deg;
410  G4double spanningAngleOfTheTube9 = 35.424*deg;
411
412   
413  G4ThreeVector positionMod9 = G4ThreeVector(0*cm,0*cm,0.03*cm);
414  solidMod9 = new G4Tubs("Mod9",
415                         innerRadiusOfTheTube, 
416                         outerRadiusOfTheTube,
417                         hightOfTheTube,
418                         startAngleOfTheTube9, 
419                         spanningAngleOfTheTube9);
420
421  logicMod9 = new G4LogicalVolume(solidMod9, ModMater, "Mod9",0,0,0);
422  physiMod9 = new G4PVPlacement(0,                   // no rotation
423                                positionMod9,  // at (x,y,z)
424                                logicMod9,     // its logical volume                             
425                                "Mod9",        // its name
426                                logicMod0,      // its mother  volume
427                                false,           // no boolean operations
428                                0);              // no particular field
429
430
431  //----------------------------------------------------------
432  //Decima fetta Modulatore
433  //----------------------------------------------------------
434 
435  G4double startAngleOfTheTube10 = 74.061*deg;
436  G4double spanningAngleOfTheTube10 = 31.878*deg;
437
438 
439  G4ThreeVector positionMod10 = G4ThreeVector(0*cm,0*cm,-0.03*cm);
440  solidMod10 = new G4Tubs("Mod10",
441                          innerRadiusOfTheTube, 
442                          outerRadiusOfTheTube,
443                          hightOfTheTube,
444                          startAngleOfTheTube10, 
445                          spanningAngleOfTheTube10);
446
447  logicMod10 = new G4LogicalVolume(solidMod10, ModMater, "Mod10",0,0,0);
448  physiMod10 = new G4PVPlacement(0,                   // no rotation
449                                 positionMod10,  // at (x,y,z)
450                                 logicMod10,     // its logical volume                           
451                                 "Mod10",        // its name
452                                 logicMod0,      // its mother  volume
453                                 false,           // no boolean operations
454                                 0);              // no particular field
455
456  //----------------------------------------------------------
457  // Undicesima fetta Modulatore
458  //----------------------------------------------------------
459
460  G4double startAngleOfTheTube11 = 75.793*deg;
461  G4double spanningAngleOfTheTube11 = 28.414*deg;
462   
463   
464  G4ThreeVector positionMod11 = G4ThreeVector(0*cm,0*cm,-0.09*cm);
465  solidMod11 = new G4Tubs("Mod11",
466                          innerRadiusOfTheTube, 
467                          outerRadiusOfTheTube,
468                          hightOfTheTube,
469                          startAngleOfTheTube11, 
470                          spanningAngleOfTheTube11);
471
472  logicMod11 = new G4LogicalVolume(solidMod11, ModMater, "Mod11",0,0,0);
473  physiMod11 = new G4PVPlacement(0,                   // no rotation
474                                 positionMod11,  // at (x,y,z)
475                                 logicMod11,     // its logical volume                           
476                                 "Mod11",        // its name
477                                 logicMod0,      // its mother  volume
478                                 false,           // no boolean operations
479                                 0);              // no particular field
480
481  //----------------------------------------------------------
482  //Dodicesima fetta Modulatore
483  //----------------------------------------------------------
484
485  G4double startAngleOfTheTube12 = 77.579*deg;
486  G4double spanningAngleOfTheTube12 = 24.842*deg;
487
488   
489   
490  G4ThreeVector positionMod12 = G4ThreeVector(0*cm,0*cm,-0.15*cm);
491  solidMod12 = new G4Tubs("Mod12",
492                          innerRadiusOfTheTube, 
493                          outerRadiusOfTheTube,
494                          hightOfTheTube,
495                          startAngleOfTheTube12, 
496                          spanningAngleOfTheTube12);
497
498  logicMod12 = new G4LogicalVolume(solidMod12, ModMater, "Mod12",0,0,0);
499  physiMod12 = new G4PVPlacement(0,                   // no rotation
500                                 positionMod12,  // at (x,y,z)
501                                 logicMod12,     // its logical volume                           
502                                 "Mod12",        // its name
503                                 logicMod0,      // its mother  volume
504                                 false,           // no boolean operations
505                                 0);              // no particular field
506 
507
508  //----------------------------------------------------------
509  //Tredicesima fetta Modulatore
510  //----------------------------------------------------------
511 
512  G4double startAngleOfTheTube13 = 79.273*deg;
513  G4double spanningAngleOfTheTube13 = 21.454*deg;
514   
515 
516  G4ThreeVector positionMod13 = G4ThreeVector(0*cm,0*cm,-0.21*cm);
517  solidMod13 = new G4Tubs("Mod13",
518                          innerRadiusOfTheTube, 
519                          outerRadiusOfTheTube,
520                          hightOfTheTube,
521                          startAngleOfTheTube13, 
522                          spanningAngleOfTheTube13);
523
524  logicMod13 = new G4LogicalVolume(solidMod13, ModMater, "Mod13",0,0,0);
525  physiMod13 = new G4PVPlacement(0,                   // no rotation
526                                 positionMod13,  // at (x,y,z)
527                                 logicMod13,     // its logical volume                           
528                                 "Mod13",        // its name
529                                 logicMod0,      // its mother  volume
530                                 false,           // no boolean operations
531                                 0);              // no particular field
532
533  //----------------------------------------------------------
534  //Quat. fetta Modulatore
535  //----------------------------------------------------------
536 
537  G4double startAngleOfTheTube14 = 81.014*deg;
538  G4double spanningAngleOfTheTube14 = 17.972*deg;
539
540     
541  G4ThreeVector positionMod14 = G4ThreeVector(0*cm,0*cm,-0.27*cm);
542  solidMod14 = new G4Tubs("Mod14",
543                          innerRadiusOfTheTube, 
544                          outerRadiusOfTheTube,
545                          hightOfTheTube,
546                          startAngleOfTheTube14, 
547                          spanningAngleOfTheTube14);
548
549  logicMod14 = new G4LogicalVolume(solidMod14, ModMater, "Mod14",0,0,0);
550  physiMod14 = new G4PVPlacement(0,                   // no rotation
551                                 positionMod14,  // at (x,y,z)
552                                 logicMod14,     // its logical volume                           
553                                 "Mod14",        // its name
554                                 logicMod0,      // its mother  volume
555                                 false,           // no boolean operations
556                                 0);              // no particular field
557
558 
559  //----------------------------------------------------------
560  //Quindicesima fetta Modulatore
561  //----------------------------------------------------------
562 
563  G4double startAngleOfTheTube15 = 82.695*deg;
564  G4double spanningAngleOfTheTube15 = 14.61*deg;
565
566     
567  G4ThreeVector positionMod15 = G4ThreeVector(0*cm,0*cm,-0.33*cm);
568  solidMod15 = new G4Tubs("Mod15",
569                          innerRadiusOfTheTube, 
570                          outerRadiusOfTheTube,
571                          hightOfTheTube,
572                          startAngleOfTheTube15, 
573                          spanningAngleOfTheTube15);
574
575  logicMod15 = new G4LogicalVolume(solidMod15, ModMater, "Mod15",0,0,0);
576  physiMod15 = new G4PVPlacement(0,                   // no rotation
577                                 positionMod15,  // at (x,y,z)
578                                 logicMod15,     // its logical volume                           
579                                 "Mod15",        // its name
580                                 logicMod0,      // its mother  volume
581                                 false,           // no boolean operations
582                                 0);              // no particular field
583
584  //----------------------------------------------------------
585  //Sedic. fetta Modulatore
586  //----------------------------------------------------------
587 
588  G4double startAngleOfTheTube16 = 84.425*deg;
589  G4double spanningAngleOfTheTube16 = 11.15*deg;
590
591   
592  G4ThreeVector positionMod16 = G4ThreeVector(0*cm,0*cm,-0.39*cm);
593  solidMod16 = new G4Tubs("Mod16",
594                          innerRadiusOfTheTube, 
595                          outerRadiusOfTheTube,
596                          hightOfTheTube,
597                          startAngleOfTheTube16, 
598                          spanningAngleOfTheTube16);
599
600  logicMod16 = new G4LogicalVolume(solidMod16, ModMater, "Mod16",0,0,0);
601  physiMod16 = new G4PVPlacement(0,                   // no rotation
602                                 positionMod16,  // at (x,y,z)
603                                 logicMod16,     // its logical volume                           
604                                 "Mod16",        // its name
605                                 logicMod0,      // its mother  volume
606                                 false,           // no boolean operations
607                                 0);              // no particular field
608
609  //----------------------------------------------------------
610  //Dicias. fetta Modulatore
611  //----------------------------------------------------------
612 
613  G4double startAngleOfTheTube17 = 86.203*deg;
614  G4double spanningAngleOfTheTube17 = 7.594*deg;
615
616   
617   
618  G4ThreeVector positionMod17 = G4ThreeVector(0*cm,0*cm,-0.45*cm);
619  solidMod17 = new G4Tubs("Mod17",
620                          innerRadiusOfTheTube, 
621                          outerRadiusOfTheTube,
622                          hightOfTheTube,
623                          startAngleOfTheTube17, 
624                          spanningAngleOfTheTube17);
625
626  logicMod17 = new G4LogicalVolume(solidMod17, ModMater, "Mod17",0,0,0);
627  physiMod17 = new G4PVPlacement(0,                   // no rotation
628                                 positionMod17,  // at (x,y,z)
629                                 logicMod17,     // its logical volume                           
630                                 "Mod17",        // its name
631                                 logicMod0,      // its mother  volume
632                                 false,           // no boolean operations
633                                 0);              // no particular field
634  //----------------------------------------------------------
635  //Diciot. fetta Modulatore
636  //----------------------------------------------------------
637 
638  G4double startAngleOfTheTube18 = 87.910*deg;
639  G4double spanningAngleOfTheTube18 = 4.18*deg;
640
641   
642   
643  G4ThreeVector positionMod18 = G4ThreeVector(0*cm,0*cm,-0.51*cm);
644  solidMod18 = new G4Tubs("Mod18",
645                          innerRadiusOfTheTube, 
646                          outerRadiusOfTheTube,
647                          hightOfTheTube,
648                          startAngleOfTheTube18, 
649                          spanningAngleOfTheTube18);
650
651  logicMod18 = new G4LogicalVolume(solidMod18, ModMater, "Mod18",0,0,0);
652  physiMod18 = new G4PVPlacement(0,                   // no rotation
653                                 positionMod18,  // at (x,y,z)
654                                 logicMod18,     // its logical volume                           
655                                 "Mod18",        // its name
656                                 logicMod0,      // its mother  volume
657                                 false,           // no boolean operations
658                                 0);              // no particular field
659
660
661
662  //----------------------------------------------------------
663  // Mother volume of the second modulator quarter
664  //----------------------------------------------------------
665 
666   
667  G4RotationMatrix rm20;
668  rm20.rotateZ(90 *deg);
669 
670  G4ThreeVector positionMod20 = G4ThreeVector(0*cm,0*cm,0*cm);
671 
672  solidMod20 = new G4Tubs("Mod20",
673                          innerRadiusOfTheTube, 
674                          outerRadiusOfTheTube,
675                          hightOfTheTube0,
676                          startAngleOfTheTube0, 
677                          spanningAngleOfTheTube0);
678 
679  logicMod20 = new G4LogicalVolume(solidMod20, Mod0Mater, "Mod0",0,0,0);
680 
681 
682  physiMod20 = new G4PVPlacement(G4Transform3D(rm20, positionMod20), 
683                                 logicMod20,   
684                                 "Mod20",       
685                                 logicMotherMod, 
686                                 false,         
687                                 0);           
688 
689
690   
691
692  //----------------------------------------------------------
693  // 1st modulator slice (2nd quarter)
694  //----------------------------------------------------------
695 
696  G4ThreeVector positionMod21 = G4ThreeVector(0*cm,0*cm,0.51*cm);
697  solidMod21 = new G4Tubs("Mod21",
698                          innerRadiusOfTheTube, 
699                          outerRadiusOfTheTube,
700                          hightOfTheTube,
701                          startAngleOfTheTube1, 
702                          spanningAngleOfTheTube1);
703 
704  logicMod21 = new G4LogicalVolume(solidMod21, ModMater, "Mod21",0,0,0);
705 
706  physiMod21 = new G4PVPlacement(0,               // no rotation
707                                 positionMod21,  // at (x,y,z)
708                                 logicMod21,     // its logical volume                           
709                                 "Mod21",        // its name
710                                 logicMod20,      // its mother  volume
711                                 false,           // no boolean operations
712                                 0);              // no particular field
713 
714 
715  //----------------------------------------------------------
716  // 2nd modulator slice (2nd quarter)
717  //----------------------------------------------------------
718 
719  G4ThreeVector positionMod22 = G4ThreeVector(0*cm,0*cm,0.45*cm);
720 
721  solidMod22 = new G4Tubs("Mod22",
722                          innerRadiusOfTheTube, 
723                          outerRadiusOfTheTube,
724                          hightOfTheTube,
725                          startAngleOfTheTube2, 
726                          spanningAngleOfTheTube2);
727 
728  logicMod22 = new G4LogicalVolume(solidMod22, ModMater, "Mod22",0,0,0);
729 
730  physiMod22 = new G4PVPlacement(0,               // no rotation
731                                 positionMod22,  // at (x,y,z)
732                                 logicMod22,     // its logical volume                           
733                                 "Mod22",        // its name
734                                 logicMod20,      // its mother  volume
735                                 false,           // no boolean operations
736                                 0);              // no particular field
737 
738 
739  //----------------------------------------------------------
740  // 3rd modulator slice (2nd quarter)
741  //----------------------------------------------------------
742 
743  G4ThreeVector positionMod23 = G4ThreeVector(0*cm,0*cm,0.39*cm);
744
745  solidMod23 = new G4Tubs("Mod23",
746                          innerRadiusOfTheTube, 
747                          outerRadiusOfTheTube,
748                          hightOfTheTube,
749                          startAngleOfTheTube3, 
750                          spanningAngleOfTheTube3);
751
752  logicMod23 = new G4LogicalVolume(solidMod23, ModMater, "Mod23",0,0,0);
753  physiMod23 = new G4PVPlacement(0,                   // no rotation
754                                 positionMod23,  // at (x,y,z)
755                                 logicMod23,     // its logical volume                           
756                                 "Mod23",        // its name
757                                 logicMod20,      // its mother  volume
758                                 false,           // no boolean operations
759                                 0);              // no particular field
760
761 
762  //----------------------------------------------------------
763  // 4th modulator slice (2nd quarter)
764  //----------------------------------------------------------
765   
766   
767  G4ThreeVector positionMod24 = G4ThreeVector(0*cm,0*cm,0.33*cm);
768
769  solidMod24 = new G4Tubs("Mod24",
770                          innerRadiusOfTheTube, 
771                          outerRadiusOfTheTube,
772                          hightOfTheTube,
773                          startAngleOfTheTube4, 
774                          spanningAngleOfTheTube4);
775
776  logicMod24 = new G4LogicalVolume(solidMod24, ModMater, "Mod24",0,0,0);
777 
778  physiMod24 = new G4PVPlacement(0,                   // no rotation
779                                 positionMod24,  // at (x,y,z)
780                                 logicMod24,     // its logical volume                           
781                                 "Mod24",        // its name
782                                 logicMod20,      // its mother  volume
783                                 false,           // no boolean operations
784                                 0);              // no particular field
785
786
787  //----------------------------------------------------------
788  //Quinta fetta Modulatore 2
789  //----------------------------------------------------------
790 
791   
792   
793  G4ThreeVector positionMod25 = G4ThreeVector(0*cm,0*cm,0.27*cm);
794
795  solidMod25 = new G4Tubs("Mod25",
796                          innerRadiusOfTheTube, 
797                          outerRadiusOfTheTube,
798                          hightOfTheTube,
799                          startAngleOfTheTube5, 
800                          spanningAngleOfTheTube5);
801 
802  logicMod25 = new G4LogicalVolume(solidMod25, ModMater, "Mod25",0,0,0);
803  physiMod25 = new G4PVPlacement(0,                   // no rotation
804                                 positionMod25,  // at (x,y,z)
805                                 logicMod25,     // its logical volume                           
806                                 "Mod25",        // its name
807                                 logicMod20,      // its mother  volume
808                                 false,           // no boolean operations
809                                 0);              // no particular field
810
811 
812  //----------------------------------------------------------
813  //Sesta fetta Modulatore 2
814  //----------------------------------------------------------
815 
816   
817  G4ThreeVector positionMod26 = G4ThreeVector(0*cm,0*cm,0.21*cm);
818  solidMod26 = new G4Tubs("Mod26",
819                          innerRadiusOfTheTube, 
820                          outerRadiusOfTheTube,
821                          hightOfTheTube,
822                          startAngleOfTheTube6, 
823                          spanningAngleOfTheTube6);
824
825  logicMod26 = new G4LogicalVolume(solidMod26, ModMater, "Mod26",0,0,0);
826  physiMod26 = new G4PVPlacement(0,                   // no rotation
827                                 positionMod26,  // at (x,y,z)
828                                 logicMod26,     // its logical volume                           
829                                 "Mod26",        // its name
830                                 logicMod20,      // its mother  volume
831                                 false,           // no boolean operations
832                                 0);              // no particular field
833
834
835  //----------------------------------------------------------
836  //Settima fetta Modulatore 2
837  //----------------------------------------------------------
838 
839     
840  G4ThreeVector positionMod27 = G4ThreeVector(0*cm,0*cm,0.15*cm);
841 
842  solidMod27 = new G4Tubs("Mod27",
843                          innerRadiusOfTheTube, 
844                          outerRadiusOfTheTube,
845                          hightOfTheTube,
846                          startAngleOfTheTube7, 
847                          spanningAngleOfTheTube7);
848
849  logicMod27 = new G4LogicalVolume(solidMod27, ModMater, "Mod27",0,0,0);
850  physiMod27 = new G4PVPlacement(0,                   // no rotation
851                                 positionMod27,  // at (x,y,z)
852                                 logicMod27,     // its logical volume                           
853                                 "Mod27",        // its name
854                                 logicMod20,      // its mother  volume
855                                 false,           // no boolean operations
856                                 0);              // no particular field
857
858
859
860  //----------------------------------------------------------
861  //Ottava fetta Modulatore 2
862  //----------------------------------------------------------
863   
864 
865
866   
867  G4ThreeVector positionMod28 = G4ThreeVector(0*cm,0*cm,0.09*cm);
868  solidMod28 = new G4Tubs("Mod28",
869                          innerRadiusOfTheTube, 
870                          outerRadiusOfTheTube,
871                          hightOfTheTube,
872                          startAngleOfTheTube8, 
873                          spanningAngleOfTheTube8);
874
875  logicMod28 = new G4LogicalVolume(solidMod28, ModMater, "Mod28",0,0,0);
876  physiMod28 = new G4PVPlacement(0,                   // no rotation
877                                 positionMod28,  // at (x,y,z)
878                                 logicMod28,     // its logical volume                           
879                                 "Mod28",        // its name
880                                 logicMod20,      // its mother  volume
881                                 false,           // no boolean operations
882                                 0);              // no particular field
883
884
885
886
887  //----------------------------------------------------------
888  //Nona fetta Modulatore 3
889  //----------------------------------------------------------
890 
891
892     
893  G4ThreeVector positionMod29 = G4ThreeVector(0*cm,0*cm,0.03*cm);
894  solidMod29 = new G4Tubs("Mod29",
895                          innerRadiusOfTheTube, 
896                          outerRadiusOfTheTube,
897                          hightOfTheTube,
898                          startAngleOfTheTube9, 
899                          spanningAngleOfTheTube9);
900
901  logicMod29 = new G4LogicalVolume(solidMod29, ModMater, "Mod29",0,0,0);
902  physiMod29 = new G4PVPlacement(0,                   // no rotation
903                                 positionMod29,  // at (x,y,z)
904                                 logicMod29,     // its logical volume                           
905                                 "Mod29",        // its name
906                                 logicMod20,      // its mother  volume
907                                 false,           // no boolean operations
908                                 0);              // no particular field
909
910
911  //----------------------------------------------------------
912  //Decima fetta Modulatore 3
913  //----------------------------------------------------------
914 
915   
916  G4ThreeVector positionMod30 = G4ThreeVector(0*cm,0*cm,-0.03*cm);
917  solidMod30 = new G4Tubs("Mod30",
918                          innerRadiusOfTheTube, 
919                          outerRadiusOfTheTube,
920                          hightOfTheTube,
921                          startAngleOfTheTube10, 
922                          spanningAngleOfTheTube10);
923
924  logicMod30 = new G4LogicalVolume(solidMod30, ModMater, "Mod30",0,0,0);
925  physiMod30 = new G4PVPlacement(0,                   // no rotation
926                                 positionMod30,  // at (x,y,z)
927                                 logicMod30,     // its logical volume                           
928                                 "Mod30",        // its name
929                                 logicMod20,      // its mother  volume
930                                 false,           // no boolean operations
931                                 0);              // no particular field
932
933  //----------------------------------------------------------
934  // Undicesima fetta Modulatore 3
935  //----------------------------------------------------------
936
937  G4ThreeVector positionMod31 = G4ThreeVector(0*cm,0*cm,-0.09*cm);
938  solidMod31 = new G4Tubs("Mod31",
939                          innerRadiusOfTheTube, 
940                          outerRadiusOfTheTube,
941                          hightOfTheTube,
942                          startAngleOfTheTube11, 
943                          spanningAngleOfTheTube11);
944
945  logicMod31 = new G4LogicalVolume(solidMod31, ModMater, "Mod31",0,0,0);
946  physiMod31 = new G4PVPlacement(0,                   // no rotation
947                                 positionMod31,  // at (x,y,z)
948                                 logicMod31,     // its logical volume                           
949                                 "Mod31",        // its name
950                                 logicMod20,      // its mother  volume
951                                 false,           // no boolean operations
952                                 0);              // no particular field
953
954  //----------------------------------------------------------
955  //Dodicesima fetta Modulatore 3
956  //----------------------------------------------------------
957
958  G4ThreeVector positionMod32 = G4ThreeVector(0*cm,0*cm,-0.15*cm);
959  solidMod32 = new G4Tubs("Mod32",
960                          innerRadiusOfTheTube, 
961                          outerRadiusOfTheTube,
962                          hightOfTheTube,
963                          startAngleOfTheTube12, 
964                          spanningAngleOfTheTube12);
965
966  logicMod32 = new G4LogicalVolume(solidMod32, ModMater, "Mod32",0,0,0);
967  physiMod32 = new G4PVPlacement(0,                   // no rotation
968                                 positionMod32,  // at (x,y,z)
969                                 logicMod32,     // its logical volume                           
970                                 "Mod32",        // its name
971                                 logicMod20,      // its mother  volume
972                                 false,           // no boolean operations
973                                 0);              // no particular field
974 
975
976  //----------------------------------------------------------
977  //Tredicesima fetta Modulatore 3
978  //----------------------------------------------------------
979 
980  G4ThreeVector positionMod33 = G4ThreeVector(0*cm,0*cm,-0.21*cm);
981  solidMod33 = new G4Tubs("Mod33",
982                          innerRadiusOfTheTube, 
983                          outerRadiusOfTheTube,
984                          hightOfTheTube,
985                          startAngleOfTheTube13, 
986                          spanningAngleOfTheTube13);
987
988  logicMod33 = new G4LogicalVolume(solidMod33, ModMater, "Mod33",0,0,0);
989  physiMod33 = new G4PVPlacement(0,                   // no rotation
990                                 positionMod33,  // at (x,y,z)
991                                 logicMod33,     // its logical volume                           
992                                 "Mod33",        // its name
993                                 logicMod20,      // its mother  volume
994                                 false,           // no boolean operations
995                                 0);              // no particular field
996
997  //----------------------------------------------------------
998  //Quat. fetta Modulatore 3
999  //----------------------------------------------------------
1000 
1001       
1002  G4ThreeVector positionMod34 = G4ThreeVector(0*cm,0*cm,-0.27*cm);
1003  solidMod34 = new G4Tubs("Mod34",
1004                          innerRadiusOfTheTube, 
1005                          outerRadiusOfTheTube,
1006                          hightOfTheTube,
1007                          startAngleOfTheTube14, 
1008                          spanningAngleOfTheTube14);
1009
1010  logicMod34 = new G4LogicalVolume(solidMod34, ModMater, "Mod34",0,0,0);
1011  physiMod34 = new G4PVPlacement(0,                   // no rotation
1012                                 positionMod34,  // at (x,y,z)
1013                                 logicMod34,     // its logical volume                           
1014                                 "Mod134",        // its name
1015                                 logicMod20,      // its mother  volume
1016                                 false,           // no boolean operations
1017                                 0);              // no particular field
1018
1019 
1020  //----------------------------------------------------------
1021  //Quindicesima fetta Modulatore 2
1022  //----------------------------------------------------------
1023 
1024       
1025  G4ThreeVector positionMod35 = G4ThreeVector(0*cm,0*cm,-0.33*cm);
1026  solidMod35 = new G4Tubs("Mod35",
1027                          innerRadiusOfTheTube, 
1028                          outerRadiusOfTheTube,
1029                          hightOfTheTube,
1030                          startAngleOfTheTube15, 
1031                          spanningAngleOfTheTube15);
1032
1033  logicMod35 = new G4LogicalVolume(solidMod35, ModMater, "Mod35",0,0,0);
1034  physiMod35 = new G4PVPlacement(0,                   // no rotation
1035                                 positionMod35,  // at (x,y,z)
1036                                 logicMod35,     // its logical volume                           
1037                                 "Mod35",        // its name
1038                                 logicMod20,      // its mother  volume
1039                                 false,           // no boolean operations
1040                                 0);              // no particular field
1041
1042  //----------------------------------------------------------
1043  //Sedic. fetta Modulatore 2
1044  //----------------------------------------------------------
1045 
1046   
1047  G4ThreeVector positionMod36 = G4ThreeVector(0*cm,0*cm,-0.39*cm);
1048  solidMod36 = new G4Tubs("Mod36",
1049                          innerRadiusOfTheTube, 
1050                          outerRadiusOfTheTube,
1051                          hightOfTheTube,
1052                          startAngleOfTheTube16, 
1053                          spanningAngleOfTheTube16);
1054
1055  logicMod36 = new G4LogicalVolume(solidMod36, ModMater, "Mod36",0,0,0);
1056  physiMod36 = new G4PVPlacement(0,                   // no rotation
1057                                 positionMod36,  // at (x,y,z)
1058                                 logicMod36,     // its logical volume                           
1059                                 "Mod36",        // its name
1060                                 logicMod20,      // its mother  volume
1061                                 false,           // no boolean operations
1062                                 0);              // no particular field
1063
1064  //----------------------------------------------------------
1065  //Dicias. fetta Modulatore 2
1066  //----------------------------------------------------------
1067   
1068  G4ThreeVector positionMod37 = G4ThreeVector(0*cm,0*cm,-0.45*cm);
1069  solidMod37 = new G4Tubs("Mod37",
1070                          innerRadiusOfTheTube, 
1071                          outerRadiusOfTheTube,
1072                          hightOfTheTube,
1073                          startAngleOfTheTube17, 
1074                          spanningAngleOfTheTube17);
1075
1076  logicMod37 = new G4LogicalVolume(solidMod37, ModMater, "Mod37",0,0,0);
1077  physiMod37 = new G4PVPlacement(0,                   // no rotation
1078                                 positionMod37,  // at (x,y,z)
1079                                 logicMod37,     // its logical volume                           
1080                                 "Mod37",        // its name
1081                                 logicMod20,      // its mother  volume
1082                                 false,           // no boolean operations
1083                                 0);              // no particular field
1084  //----------------------------------------------------------
1085  //Diciot. fetta Modulatore 2
1086  //----------------------------------------------------------
1087   
1088   
1089  G4ThreeVector positionMod38 = G4ThreeVector(0*cm,0*cm,-0.51*cm);
1090  solidMod38 = new G4Tubs("Mod38",
1091                          innerRadiusOfTheTube, 
1092                          outerRadiusOfTheTube,
1093                          hightOfTheTube,
1094                          startAngleOfTheTube18, 
1095                          spanningAngleOfTheTube18);
1096
1097  logicMod38 = new G4LogicalVolume(solidMod38, ModMater, "Mod38",0,0,0);
1098  physiMod38 = new G4PVPlacement(0,                   // no rotation
1099                                 positionMod38,  // at (x,y,z)
1100                                 logicMod38,     // its logical volume                           
1101                                 "Mod38",        // its name
1102                                 logicMod20,      // its mother  volume
1103                                 false,           // no boolean operations
1104                                 0);              // no particular field
1105
1106
1107
1108  //----------------------------------------------------------
1109  //Volume Madre  3/4 del Modulatore  Mod 40
1110  //----------------------------------------------------------
1111 
1112   
1113  G4RotationMatrix rm40;
1114  rm40.rotateZ(180 *deg);
1115 
1116  G4ThreeVector positionMod40 = G4ThreeVector(0*cm,0*cm,0*cm);
1117 
1118  solidMod40 = new G4Tubs("Mod40",
1119                          innerRadiusOfTheTube, 
1120                          outerRadiusOfTheTube,
1121                          hightOfTheTube0,
1122                          startAngleOfTheTube0, 
1123                          spanningAngleOfTheTube0);
1124 
1125  logicMod40 = new G4LogicalVolume(solidMod40, Mod0Mater, "Mod40",0,0,0);
1126 
1127 
1128  physiMod40 = new G4PVPlacement(G4Transform3D(rm40, positionMod40), 
1129                                 logicMod40,    // its logical volume                     
1130                                 "Mod40",        // its name
1131                                 logicMotherMod,  // its mother  volume
1132                                 false,         // no boolean operations
1133                                 0);            // no particular field
1134 
1135
1136
1137
1138
1139  //----------------------------------------------------------
1140  //Prima fetta Modulatore 3
1141  //----------------------------------------------------------
1142 
1143  G4ThreeVector positionMod41 = G4ThreeVector(0*cm,0*cm,0.51*cm);
1144  solidMod41 = new G4Tubs("Mod41",
1145                          innerRadiusOfTheTube, 
1146                          outerRadiusOfTheTube,
1147                          hightOfTheTube,
1148                          startAngleOfTheTube1, 
1149                          spanningAngleOfTheTube1);
1150 
1151  logicMod41 = new G4LogicalVolume(solidMod41, ModMater, "Mod41",0,0,0);
1152 
1153  physiMod41 = new G4PVPlacement(0,               // no rotation
1154                                 positionMod41,  // at (x,y,z)
1155                                 logicMod41,     // its logical volume                           
1156                                 "Mod41",        // its name
1157                                 logicMod40,      // its mother  volume
1158                                 false,           // no boolean operations
1159                                 0);              // no particular field
1160 
1161 
1162  //----------------------------------------------------------
1163  //Seconda fetta Modulatore 3
1164  //----------------------------------------------------------
1165 
1166  G4ThreeVector positionMod42 = G4ThreeVector(0*cm,0*cm,0.45*cm);
1167 
1168  solidMod42 = new G4Tubs("Mod42",
1169                          innerRadiusOfTheTube, 
1170                          outerRadiusOfTheTube,
1171                          hightOfTheTube,
1172                          startAngleOfTheTube2, 
1173                          spanningAngleOfTheTube2);
1174 
1175  logicMod42 = new G4LogicalVolume(solidMod42, ModMater, "Mod42",0,0,0);
1176 
1177  physiMod42 = new G4PVPlacement(0,               // no rotation
1178                                 positionMod42,  // at (x,y,z)
1179                                 logicMod42,     // its logical volume                           
1180                                 "Mod42",        // its name
1181                                 logicMod40,      // its mother  volume
1182                                 false,           // no boolean operations
1183                                 0);              // no particular field
1184 
1185 
1186  //----------------------------------------------------------
1187  //Terza fetta Modulatore 3
1188  //----------------------------------------------------------
1189 
1190  G4ThreeVector positionMod43 = G4ThreeVector(0*cm,0*cm,0.39*cm);
1191
1192  solidMod43 = new G4Tubs("Mod43",
1193                          innerRadiusOfTheTube, 
1194                          outerRadiusOfTheTube,
1195                          hightOfTheTube,
1196                          startAngleOfTheTube3, 
1197                          spanningAngleOfTheTube3);
1198
1199  logicMod43 = new G4LogicalVolume(solidMod43, ModMater, "Mod43",0,0,0);
1200  physiMod43 = new G4PVPlacement(0,                   // no rotation
1201                                 positionMod43,  // at (x,y,z)
1202                                 logicMod43,     // its logical volume                           
1203                                 "Mod43",        // its name
1204                                 logicMod40,      // its mother  volume
1205                                 false,           // no boolean operations
1206                                 0);              // no particular field
1207
1208 
1209  //----------------------------------------------------------
1210  //Quarta fetta Modulatore 3
1211  //----------------------------------------------------------
1212   
1213   
1214  G4ThreeVector positionMod44 = G4ThreeVector(0*cm,0*cm,0.33*cm);
1215
1216  solidMod44 = new G4Tubs("Mod44",
1217                          innerRadiusOfTheTube, 
1218                          outerRadiusOfTheTube,
1219                          hightOfTheTube,
1220                          startAngleOfTheTube4, 
1221                          spanningAngleOfTheTube4);
1222
1223  logicMod44 = new G4LogicalVolume(solidMod44, ModMater, "Mod44",0,0,0);
1224 
1225  physiMod44 = new G4PVPlacement(0,                   // no rotation
1226                                 positionMod44,  // at (x,y,z)
1227                                 logicMod44,     // its logical volume                           
1228                                 "Mod44",        // its name
1229                                 logicMod40,      // its mother  volume
1230                                 false,           // no boolean operations
1231                                 0);              // no particular field
1232
1233
1234  //----------------------------------------------------------
1235  //Quinta fetta Modulatore 3
1236  //----------------------------------------------------------
1237 
1238   
1239   
1240  G4ThreeVector positionMod45 = G4ThreeVector(0*cm,0*cm,0.27*cm);
1241
1242  solidMod45 = new G4Tubs("Mod45",
1243                          innerRadiusOfTheTube, 
1244                          outerRadiusOfTheTube,
1245                          hightOfTheTube,
1246                          startAngleOfTheTube5, 
1247                          spanningAngleOfTheTube5);
1248 
1249  logicMod45 = new G4LogicalVolume(solidMod45, ModMater, "Mod45",0,0,0);
1250  physiMod45 = new G4PVPlacement(0,                   // no rotation
1251                                 positionMod45,  // at (x,y,z)
1252                                 logicMod45,     // its logical volume                           
1253                                 "Mod45",        // its name
1254                                 logicMod40,      // its mother  volume
1255                                 false,           // no boolean operations
1256                                 0);              // no particular field
1257
1258 
1259  //----------------------------------------------------------
1260  //Sesta fetta Modulatore 3
1261  //----------------------------------------------------------
1262 
1263   
1264  G4ThreeVector positionMod46 = G4ThreeVector(0*cm,0*cm,0.21*cm);
1265  solidMod46 = new G4Tubs("Mod46",
1266                          innerRadiusOfTheTube, 
1267                          outerRadiusOfTheTube,
1268                          hightOfTheTube,
1269                          startAngleOfTheTube6, 
1270                          spanningAngleOfTheTube6);
1271
1272  logicMod46 = new G4LogicalVolume(solidMod46, ModMater, "Mod46",0,0,0);
1273  physiMod46 = new G4PVPlacement(0,                   // no rotation
1274                                 positionMod46,  // at (x,y,z)
1275                                 logicMod46,     // its logical volume                           
1276                                 "Mod46",        // its name
1277                                 logicMod40,      // its mother  volume
1278                                 false,           // no boolean operations
1279                                 0);              // no particular field
1280
1281
1282  //----------------------------------------------------------
1283  //Settima fetta Modulatore 3
1284  //----------------------------------------------------------
1285 
1286     
1287  G4ThreeVector positionMod47 = G4ThreeVector(0*cm,0*cm,0.15*cm);
1288 
1289  solidMod47 = new G4Tubs("Mod47",
1290                          innerRadiusOfTheTube, 
1291                          outerRadiusOfTheTube,
1292                          hightOfTheTube,
1293                          startAngleOfTheTube7, 
1294                          spanningAngleOfTheTube7);
1295
1296  logicMod47 = new G4LogicalVolume(solidMod47, ModMater, "Mod47",0,0,0);
1297  physiMod47 = new G4PVPlacement(0,                   // no rotation
1298                                 positionMod47,  // at (x,y,z)
1299                                 logicMod47,     // its logical volume                           
1300                                 "Mod47",        // its name
1301                                 logicMod40,      // its mother  volume
1302                                 false,           // no boolean operations
1303                                 0);              // no particular field
1304
1305
1306
1307  //----------------------------------------------------------
1308  //Ottava fetta Modulatore 3
1309  //----------------------------------------------------------
1310   
1311     
1312  G4ThreeVector positionMod48 = G4ThreeVector(0*cm,0*cm,0.09*cm);
1313  solidMod48 = new G4Tubs("Mod48",
1314                          innerRadiusOfTheTube, 
1315                          outerRadiusOfTheTube,
1316                          hightOfTheTube,
1317                          startAngleOfTheTube8, 
1318                          spanningAngleOfTheTube8);
1319
1320  logicMod48 = new G4LogicalVolume(solidMod48, ModMater, "Mod48",0,0,0);
1321  physiMod48 = new G4PVPlacement(0,                   // no rotation
1322                                 positionMod48,  // at (x,y,z)
1323                                 logicMod48,     // its logical volume                           
1324                                 "Mod48",        // its name
1325                                 logicMod40,      // its mother  volume
1326                                 false,           // no boolean operations
1327                                 0);              // no particular field
1328
1329
1330
1331
1332  //----------------------------------------------------------
1333  //Nona fetta Modulatore 2
1334  //----------------------------------------------------------
1335 
1336
1337     
1338  G4ThreeVector positionMod49 = G4ThreeVector(0*cm,0*cm,0.03*cm);
1339  solidMod49 = new G4Tubs("Mod49",
1340                          innerRadiusOfTheTube, 
1341                          outerRadiusOfTheTube,
1342                          hightOfTheTube,
1343                          startAngleOfTheTube9, 
1344                          spanningAngleOfTheTube9);
1345
1346  logicMod49 = new G4LogicalVolume(solidMod49, ModMater, "Mod49",0,0,0);
1347  physiMod49 = new G4PVPlacement(0,                   // no rotation
1348                                 positionMod49,  // at (x,y,z)
1349                                 logicMod49,     // its logical volume                           
1350                                 "Mod49",        // its name
1351                                 logicMod40,      // its mother  volume
1352                                 false,           // no boolean operations
1353                                 0);              // no particular field
1354
1355
1356  //----------------------------------------------------------
1357  //Decima fetta Modulatore 3
1358  //----------------------------------------------------------
1359 
1360   
1361  G4ThreeVector positionMod50 = G4ThreeVector(0*cm,0*cm,-0.03*cm);
1362  solidMod50 = new G4Tubs("Mod50",
1363                          innerRadiusOfTheTube, 
1364                          outerRadiusOfTheTube,
1365                          hightOfTheTube,
1366                          startAngleOfTheTube10, 
1367                          spanningAngleOfTheTube10);
1368
1369  logicMod50 = new G4LogicalVolume(solidMod50, ModMater, "Mod50",0,0,0);
1370  physiMod50 = new G4PVPlacement(0,                   // no rotation
1371                                 positionMod50,  // at (x,y,z)
1372                                 logicMod50,     // its logical volume                           
1373                                 "Mod50",        // its name
1374                                 logicMod40,      // its mother  volume
1375                                 false,           // no boolean operations
1376                                 0);              // no particular field
1377
1378  //----------------------------------------------------------
1379  // Undicesima fetta Modulatore 3
1380  //----------------------------------------------------------
1381
1382  G4ThreeVector positionMod51 = G4ThreeVector(0*cm,0*cm,-0.09*cm);
1383  solidMod51 = new G4Tubs("Mod51",
1384                          innerRadiusOfTheTube, 
1385                          outerRadiusOfTheTube,
1386                          hightOfTheTube,
1387                          startAngleOfTheTube11, 
1388                          spanningAngleOfTheTube11);
1389
1390  logicMod51 = new G4LogicalVolume(solidMod51, ModMater, "Mod51",0,0,0);
1391  physiMod51 = new G4PVPlacement(0,                   // no rotation
1392                                 positionMod51,  // at (x,y,z)
1393                                 logicMod51,     // its logical volume                           
1394                                 "Mod51",        // its name
1395                                 logicMod40,      // its mother  volume
1396                                 false,           // no boolean operations
1397                                 0);              // no particular field
1398
1399  //----------------------------------------------------------
1400  //Dodicesima fetta Modulatore 3
1401  //----------------------------------------------------------
1402
1403  G4ThreeVector positionMod52 = G4ThreeVector(0*cm,0*cm,-0.15*cm);
1404  solidMod52 = new G4Tubs("Mod52",
1405                          innerRadiusOfTheTube, 
1406                          outerRadiusOfTheTube,
1407                          hightOfTheTube,
1408                          startAngleOfTheTube12, 
1409                          spanningAngleOfTheTube12);
1410
1411  logicMod52 = new G4LogicalVolume(solidMod52, ModMater, "Mod52",0,0,0);
1412  physiMod52 = new G4PVPlacement(0,                   // no rotation
1413                                 positionMod52,  // at (x,y,z)
1414                                 logicMod52,     // its logical volume                           
1415                                 "Mod52",        // its name
1416                                 logicMod40,      // its mother  volume
1417                                 false,           // no boolean operations
1418                                 0);              // no particular field
1419 
1420
1421  //----------------------------------------------------------
1422  //Tredicesima fetta Modulatore 3
1423  //----------------------------------------------------------
1424 
1425  G4ThreeVector positionMod53 = G4ThreeVector(0*cm,0*cm,-0.21*cm);
1426  solidMod53 = new G4Tubs("Mod53",
1427                          innerRadiusOfTheTube, 
1428                          outerRadiusOfTheTube,
1429                          hightOfTheTube,
1430                          startAngleOfTheTube13, 
1431                          spanningAngleOfTheTube13);
1432
1433  logicMod53 = new G4LogicalVolume(solidMod53, ModMater, "Mod53",0,0,0);
1434  physiMod53 = new G4PVPlacement(0,                   // no rotation
1435                                 positionMod53,  // at (x,y,z)
1436                                 logicMod53,     // its logical volume                           
1437                                 "Mod53",        // its name
1438                                 logicMod40,      // its mother  volume
1439                                 false,           // no boolean operations
1440                                 0);              // no particular field
1441
1442  //----------------------------------------------------------
1443  //Quat. fetta Modulatore 3
1444  //----------------------------------------------------------
1445 
1446       
1447  G4ThreeVector positionMod54 = G4ThreeVector(0*cm,0*cm,-0.27*cm);
1448  solidMod54 = new G4Tubs("Mod54",
1449                          innerRadiusOfTheTube, 
1450                          outerRadiusOfTheTube,
1451                          hightOfTheTube,
1452                          startAngleOfTheTube14, 
1453                          spanningAngleOfTheTube14);
1454
1455  logicMod54 = new G4LogicalVolume(solidMod54, ModMater, "Mod54",0,0,0);
1456  physiMod54 = new G4PVPlacement(0,                   // no rotation
1457                                 positionMod54,  // at (x,y,z)
1458                                 logicMod54,     // its logical volume                           
1459                                 "Mod154",        // its name
1460                                 logicMod40,      // its mother  volume
1461                                 false,           // no boolean operations
1462                                 0);              // no particular field
1463
1464 
1465  //----------------------------------------------------------
1466  //Quindicesima fetta Modulatore 3
1467  //----------------------------------------------------------
1468 
1469       
1470  G4ThreeVector positionMod55 = G4ThreeVector(0*cm,0*cm,-0.33*cm);
1471  solidMod55 = new G4Tubs("Mod35",
1472                          innerRadiusOfTheTube, 
1473                          outerRadiusOfTheTube,
1474                          hightOfTheTube,
1475                          startAngleOfTheTube15, 
1476                          spanningAngleOfTheTube15);
1477
1478  logicMod55 = new G4LogicalVolume(solidMod55, ModMater, "Mod55",0,0,0);
1479  physiMod55 = new G4PVPlacement(0,                   // no rotation
1480                                 positionMod55,  // at (x,y,z)
1481                                 logicMod55,     // its logical volume                           
1482                                 "Mod55",        // its name
1483                                 logicMod40,      // its mother  volume
1484                                 false,           // no boolean operations
1485                                 0);              // no particular field
1486
1487  //----------------------------------------------------------
1488  //Sedic. fetta Modulatore 3
1489  //----------------------------------------------------------
1490 
1491   
1492  G4ThreeVector positionMod56 = G4ThreeVector(0*cm,0*cm,-0.39*cm);
1493  solidMod56 = new G4Tubs("Mod56",
1494                          innerRadiusOfTheTube, 
1495                          outerRadiusOfTheTube,
1496                          hightOfTheTube,
1497                          startAngleOfTheTube16, 
1498                          spanningAngleOfTheTube16);
1499
1500  logicMod56 = new G4LogicalVolume(solidMod56, ModMater, "Mod56",0,0,0);
1501  physiMod56 = new G4PVPlacement(0,                   // no rotation
1502                                 positionMod56,  // at (x,y,z)
1503                                 logicMod56,     // its logical volume                           
1504                                 "Mod56",        // its name
1505                                 logicMod40,      // its mother  volume
1506                                 false,           // no boolean operations
1507                                 0);              // no particular field
1508
1509  //----------------------------------------------------------
1510  //Dicias. fetta Modulatore 3
1511  //----------------------------------------------------------
1512   
1513  G4ThreeVector positionMod57 = G4ThreeVector(0*cm,0*cm,-0.45*cm);
1514  solidMod57 = new G4Tubs("Mod57",
1515                          innerRadiusOfTheTube, 
1516                          outerRadiusOfTheTube,
1517                          hightOfTheTube,
1518                          startAngleOfTheTube17, 
1519                          spanningAngleOfTheTube17);
1520
1521  logicMod57 = new G4LogicalVolume(solidMod57, ModMater, "Mod57",0,0,0);
1522  physiMod57 = new G4PVPlacement(0,                   // no rotation
1523                                 positionMod57,  // at (x,y,z)
1524                                 logicMod57,     // its logical volume                           
1525                                 "Mod57",        // its name
1526                                 logicMod40,      // its mother  volume
1527                                 false,           // no boolean operations
1528                                 0);              // no particular field
1529
1530  //----------------------------------------------------------
1531  //Diciot. fetta Modulatore 3
1532  //----------------------------------------------------------
1533   
1534   
1535  G4ThreeVector positionMod58 = G4ThreeVector(0*cm,0*cm,-0.51*cm);
1536  solidMod58 = new G4Tubs("Mod58",
1537                          innerRadiusOfTheTube, 
1538                          outerRadiusOfTheTube,
1539                          hightOfTheTube,
1540                          startAngleOfTheTube18, 
1541                          spanningAngleOfTheTube18);
1542
1543  logicMod58 = new G4LogicalVolume(solidMod58, ModMater, "Mod58",0,0,0);
1544  physiMod58 = new G4PVPlacement(0,                   // no rotation
1545                                 positionMod58,  // at (x,y,z)
1546                                 logicMod58,     // its logical volume                           
1547                                 "Mod58",        // its name
1548                                 logicMod40,      // its mother  volume
1549                                 false,           // no boolean operations
1550                                 0);              // no particular field
1551
1552
1553
1554  //----------------------------------------------------------
1555  //Volume Madre  4/4 del Modulatore  Mod 60
1556  //----------------------------------------------------------
1557 
1558   
1559  G4RotationMatrix rm60;
1560  rm60.rotateZ(270 *deg);
1561 
1562  G4ThreeVector positionMod60 = G4ThreeVector(0*cm,0*cm,0*cm);
1563 
1564  solidMod60 = new G4Tubs("Mod60",
1565                          innerRadiusOfTheTube, 
1566                          outerRadiusOfTheTube,
1567                          hightOfTheTube0,
1568                          startAngleOfTheTube0, 
1569                          spanningAngleOfTheTube0);
1570 
1571  logicMod60 = new G4LogicalVolume(solidMod60, Mod0Mater, "Mod60",0,0,0);
1572 
1573 
1574  physiMod60 = new G4PVPlacement(G4Transform3D(rm60, positionMod60), 
1575                                 logicMod60,    // its logical volume                     
1576                                 "Mod60",        // its name
1577                                 logicMotherMod,  // its mother  volume
1578                                 false,         // no boolean operations
1579                                 0);            // no particular field
1580 
1581
1582
1583  //----------------------------------------------------------
1584  //Prima fetta Modulatore 4
1585  //----------------------------------------------------------
1586 
1587  G4ThreeVector positionMod61 = G4ThreeVector(0*cm,0*cm,0.51*cm);
1588  solidMod61 = new G4Tubs("Mod61",
1589                          innerRadiusOfTheTube, 
1590                          outerRadiusOfTheTube,
1591                          hightOfTheTube,
1592                          startAngleOfTheTube1, 
1593                          spanningAngleOfTheTube1);
1594 
1595  logicMod61 = new G4LogicalVolume(solidMod61, ModMater, "Mod61",0,0,0);
1596 
1597  physiMod61 = new G4PVPlacement(0,               // no rotation
1598                                 positionMod61,  // at (x,y,z)
1599                                 logicMod61,     // its logical volume                           
1600                                 "Mod61",        // its name
1601                                 logicMod60,      // its mother  volume
1602                                 false,           // no boolean operations
1603                                 0);              // no particular field
1604 
1605 
1606  //----------------------------------------------------------
1607  //Seconda fetta Modulatore 4
1608  //----------------------------------------------------------
1609 
1610  G4ThreeVector positionMod62 = G4ThreeVector(0*cm,0*cm,0.45*cm);
1611 
1612  solidMod62 = new G4Tubs("Mod62",
1613                          innerRadiusOfTheTube, 
1614                          outerRadiusOfTheTube,
1615                          hightOfTheTube,
1616                          startAngleOfTheTube2, 
1617                          spanningAngleOfTheTube2);
1618 
1619  logicMod62 = new G4LogicalVolume(solidMod62, ModMater, "Mod62",0,0,0);
1620 
1621  physiMod62 = new G4PVPlacement(0,               // no rotation
1622                                 positionMod62,  // at (x,y,z)
1623                                 logicMod62,     // its logical volume                           
1624                                 "Mod62",        // its name
1625                                 logicMod60,      // its mother  volume
1626                                 false,           // no boolean operations
1627                                 0);              // no particular field
1628 
1629 
1630  //----------------------------------------------------------
1631  //Terza fetta Modulatore 4
1632  //----------------------------------------------------------
1633 
1634  G4ThreeVector positionMod63 = G4ThreeVector(0*cm,0*cm,0.39*cm);
1635
1636  solidMod63 = new G4Tubs("Mod63",
1637                          innerRadiusOfTheTube, 
1638                          outerRadiusOfTheTube,
1639                          hightOfTheTube,
1640                          startAngleOfTheTube3, 
1641                          spanningAngleOfTheTube3);
1642
1643  logicMod63 = new G4LogicalVolume(solidMod63, ModMater, "Mod63",0,0,0);
1644  physiMod63 = new G4PVPlacement(0,                   // no rotation
1645                                 positionMod63,  // at (x,y,z)
1646                                 logicMod63,     // its logical volume                           
1647                                 "Mod63",        // its name
1648                                 logicMod60,      // its mother  volume
1649                                 false,           // no boolean operations
1650                                 0);              // no particular field
1651
1652 
1653  //----------------------------------------------------------
1654  //Quarta fetta Modulatore 4
1655  //----------------------------------------------------------
1656   
1657   
1658  G4ThreeVector positionMod64 = G4ThreeVector(0*cm,0*cm,0.33*cm);
1659
1660  solidMod64 = new G4Tubs("Mod64",
1661                          innerRadiusOfTheTube, 
1662                          outerRadiusOfTheTube,
1663                          hightOfTheTube,
1664                          startAngleOfTheTube4, 
1665                          spanningAngleOfTheTube4);
1666
1667  logicMod64 = new G4LogicalVolume(solidMod64, ModMater, "Mod64",0,0,0);
1668 
1669  physiMod64 = new G4PVPlacement(0,                   // no rotation
1670                                 positionMod64,  // at (x,y,z)
1671                                 logicMod64,     // its logical volume                           
1672                                 "Mod64",        // its name
1673                                 logicMod60,      // its mother  volume
1674                                 false,           // no boolean operations
1675                                 0);              // no particular field
1676
1677
1678  //----------------------------------------------------------
1679  //Quinta fetta Modulatore 3
1680  //----------------------------------------------------------
1681 
1682   
1683   
1684  G4ThreeVector positionMod65 = G4ThreeVector(0*cm,0*cm,0.27*cm);
1685
1686  solidMod65 = new G4Tubs("Mod65",
1687                          innerRadiusOfTheTube, 
1688                          outerRadiusOfTheTube,
1689                          hightOfTheTube,
1690                          startAngleOfTheTube5, 
1691                          spanningAngleOfTheTube5);
1692 
1693  logicMod65 = new G4LogicalVolume(solidMod65, ModMater, "Mod65",0,0,0);
1694  physiMod65 = new G4PVPlacement(0,                   // no rotation
1695                                 positionMod65,  // at (x,y,z)
1696                                 logicMod65,     // its logical volume                           
1697                                 "Mod65",        // its name
1698                                 logicMod60,      // its mother  volume
1699                                 false,           // no boolean operations
1700                                 0);              // no particular field
1701
1702 
1703  //----------------------------------------------------------
1704  //Sesta fetta Modulatore 4
1705  //----------------------------------------------------------
1706 
1707   
1708  G4ThreeVector positionMod66 = G4ThreeVector(0*cm,0*cm,0.21*cm);
1709  solidMod66 = new G4Tubs("Mod66",
1710                          innerRadiusOfTheTube, 
1711                          outerRadiusOfTheTube,
1712                          hightOfTheTube,
1713                          startAngleOfTheTube6, 
1714                          spanningAngleOfTheTube6);
1715
1716  logicMod66 = new G4LogicalVolume(solidMod66, ModMater, "Mod66",0,0,0);
1717  physiMod66 = new G4PVPlacement(0,                   // no rotation
1718                                 positionMod66,  // at (x,y,z)
1719                                 logicMod66,     // its logical volume                           
1720                                 "Mod66",        // its name
1721                                 logicMod60,      // its mother  volume
1722                                 false,           // no boolean operations
1723                                 0);              // no particular field
1724
1725
1726  //----------------------------------------------------------
1727  //Settima fetta Modulatore 4
1728  //----------------------------------------------------------
1729 
1730     
1731  G4ThreeVector positionMod67 = G4ThreeVector(0*cm,0*cm,0.15*cm);
1732 
1733  solidMod67 = new G4Tubs("Mod67",
1734                          innerRadiusOfTheTube, 
1735                          outerRadiusOfTheTube,
1736                          hightOfTheTube,
1737                          startAngleOfTheTube7, 
1738                          spanningAngleOfTheTube7);
1739
1740  logicMod67 = new G4LogicalVolume(solidMod67, ModMater, "Mod67",0,0,0);
1741  physiMod67 = new G4PVPlacement(0,                   // no rotation
1742                                 positionMod67,  // at (x,y,z)
1743                                 logicMod67,     // its logical volume                           
1744                                 "Mod67",        // its name
1745                                 logicMod60,      // its mother  volume
1746                                 false,           // no boolean operations
1747                                 0);              // no particular field
1748
1749
1750
1751  //----------------------------------------------------------
1752  //Ottava fetta Modulatore 4
1753  //----------------------------------------------------------
1754   
1755     
1756  G4ThreeVector positionMod68 = G4ThreeVector(0*cm,0*cm,0.09*cm);
1757  solidMod68 = new G4Tubs("Mod68",
1758                          innerRadiusOfTheTube, 
1759                          outerRadiusOfTheTube,
1760                          hightOfTheTube,
1761                          startAngleOfTheTube8, 
1762                          spanningAngleOfTheTube8);
1763
1764  logicMod68 = new G4LogicalVolume(solidMod68, ModMater, "Mod68",0,0,0);
1765  physiMod68 = new G4PVPlacement(0,                   // no rotation
1766                                 positionMod68,  // at (x,y,z)
1767                                 logicMod68,     // its logical volume                           
1768                                 "Mod68",        // its name
1769                                 logicMod60,      // its mother  volume
1770                                 false,           // no boolean operations
1771                                 0);              // no particular field
1772
1773
1774
1775
1776  //----------------------------------------------------------
1777  //Nona fetta Modulatore 4
1778  //----------------------------------------------------------
1779 
1780
1781     
1782  G4ThreeVector positionMod69 = G4ThreeVector(0*cm,0*cm,0.03*cm);
1783  solidMod69 = new G4Tubs("Mod69",
1784                          innerRadiusOfTheTube, 
1785                          outerRadiusOfTheTube,
1786                          hightOfTheTube,
1787                          startAngleOfTheTube9, 
1788                          spanningAngleOfTheTube9);
1789
1790  logicMod69 = new G4LogicalVolume(solidMod69, ModMater, "Mod69",0,0,0);
1791  physiMod69 = new G4PVPlacement(0,                   // no rotation
1792                                 positionMod69,  // at (x,y,z)
1793                                 logicMod69,     // its logical volume                           
1794                                 "Mod69",        // its name
1795                                 logicMod60,      // its mother  volume
1796                                 false,           // no boolean operations
1797                                 0);              // no particular field
1798
1799
1800  //----------------------------------------------------------
1801  //Decima fetta Modulatore 4
1802  //----------------------------------------------------------
1803 
1804   
1805  G4ThreeVector positionMod70 = G4ThreeVector(0*cm,0*cm,-0.03*cm);
1806  solidMod70 = new G4Tubs("Mod70",
1807                          innerRadiusOfTheTube, 
1808                          outerRadiusOfTheTube,
1809                          hightOfTheTube,
1810                          startAngleOfTheTube10, 
1811                          spanningAngleOfTheTube10);
1812
1813  logicMod70 = new G4LogicalVolume(solidMod70, ModMater, "Mod70",0,0,0);
1814  physiMod70 = new G4PVPlacement(0,                   // no rotation
1815                                 positionMod70,  // at (x,y,z)
1816                                 logicMod70,     // its logical volume                           
1817                                 "Mod70",        // its name
1818                                 logicMod60,      // its mother  volume
1819                                 false,           // no boolean operations
1820                                 0);              // no particular field
1821
1822  //----------------------------------------------------------
1823  // Undicesima fetta Modulatore 4
1824  //----------------------------------------------------------
1825
1826  G4ThreeVector positionMod71 = G4ThreeVector(0*cm,0*cm,-0.09*cm);
1827  solidMod71 = new G4Tubs("Mod71",
1828                          innerRadiusOfTheTube, 
1829                          outerRadiusOfTheTube,
1830                          hightOfTheTube,
1831                          startAngleOfTheTube11, 
1832                          spanningAngleOfTheTube11);
1833
1834  logicMod71 = new G4LogicalVolume(solidMod71, ModMater, "Mod71",0,0,0);
1835  physiMod71 = new G4PVPlacement(0,                   // no rotation
1836                                 positionMod71,  // at (x,y,z)
1837                                 logicMod71,     // its logical volume                           
1838                                 "Mod71",        // its name
1839                                 logicMod60,      // its mother  volume
1840                                 false,           // no boolean operations
1841                                 0);              // no particular field
1842
1843  //----------------------------------------------------------
1844  //Dodicesima fetta Modulatore 4
1845  //----------------------------------------------------------
1846
1847  G4ThreeVector positionMod72 = G4ThreeVector(0*cm,0*cm,-0.15*cm);
1848  solidMod72 = new G4Tubs("Mod72",
1849                          innerRadiusOfTheTube, 
1850                          outerRadiusOfTheTube,
1851                          hightOfTheTube,
1852                          startAngleOfTheTube12, 
1853                          spanningAngleOfTheTube12);
1854
1855  logicMod72 = new G4LogicalVolume(solidMod72, ModMater, "Mod72",0,0,0);
1856  physiMod72 = new G4PVPlacement(0,                   // no rotation
1857                                 positionMod72,  // at (x,y,z)
1858                                 logicMod72,     // its logical volume                           
1859                                 "Mod72",        // its name
1860                                 logicMod60,      // its mother  volume
1861                                 false,           // no boolean operations
1862                                 0);              // no particular field
1863 
1864
1865  //----------------------------------------------------------
1866  //Tredicesima fetta Modulatore 4
1867  //----------------------------------------------------------
1868 
1869  G4ThreeVector positionMod73 = G4ThreeVector(0*cm,0*cm,-0.21*cm);
1870  solidMod73 = new G4Tubs("Mod73",
1871                          innerRadiusOfTheTube, 
1872                          outerRadiusOfTheTube,
1873                          hightOfTheTube,
1874                          startAngleOfTheTube13, 
1875                          spanningAngleOfTheTube13);
1876
1877  logicMod73 = new G4LogicalVolume(solidMod73, ModMater, "Mod73",0,0,0);
1878  physiMod73 = new G4PVPlacement(0,                   // no rotation
1879                                 positionMod73,  // at (x,y,z)
1880                                 logicMod73,     // its logical volume                           
1881                                 "Mod73",        // its name
1882                                 logicMod60,      // its mother  volume
1883                                 false,           // no boolean operations
1884                                 0);              // no particular field
1885
1886  //----------------------------------------------------------
1887  //Quat. fetta Modulatore 4
1888  //----------------------------------------------------------
1889 
1890       
1891  G4ThreeVector positionMod74 = G4ThreeVector(0*cm,0*cm,-0.27*cm);
1892  solidMod74 = new G4Tubs("Mod74",
1893                          innerRadiusOfTheTube, 
1894                          outerRadiusOfTheTube,
1895                          hightOfTheTube,
1896                          startAngleOfTheTube14, 
1897                          spanningAngleOfTheTube14);
1898
1899  logicMod74 = new G4LogicalVolume(solidMod74, ModMater, "Mod74",0,0,0);
1900  physiMod74 = new G4PVPlacement(0,                   // no rotation
1901                                 positionMod74,  // at (x,y,z)
1902                                 logicMod74,     // its logical volume                           
1903                                 "Mod174",        // its name
1904                                 logicMod60,      // its mother  volume
1905                                 false,           // no boolean operations
1906                                 0);              // no particular field
1907
1908 
1909  //----------------------------------------------------------
1910  //Quindicesima fetta Modulatore 4
1911  //----------------------------------------------------------
1912 
1913       
1914  G4ThreeVector positionMod75 = G4ThreeVector(0*cm,0*cm,-0.33*cm);
1915  solidMod75 = new G4Tubs("Mod75",
1916                          innerRadiusOfTheTube, 
1917                          outerRadiusOfTheTube,
1918                          hightOfTheTube,
1919                          startAngleOfTheTube15, 
1920                          spanningAngleOfTheTube15);
1921
1922  logicMod75 = new G4LogicalVolume(solidMod75, ModMater, "Mod75",0,0,0);
1923  physiMod75 = new G4PVPlacement(0,                   // no rotation
1924                                 positionMod75,  // at (x,y,z)
1925                                 logicMod75,     // its logical volume                           
1926                                 "Mod75",        // its name
1927                                 logicMod60,      // its mother  volume
1928                                 false,           // no boolean operations
1929                                 0);              // no particular field
1930
1931  //----------------------------------------------------------
1932  //Sedic. fetta Modulatore 4
1933  //----------------------------------------------------------
1934 
1935   
1936  G4ThreeVector positionMod76 = G4ThreeVector(0*cm,0*cm,-0.39*cm);
1937  solidMod76 = new G4Tubs("Mod76",
1938                          innerRadiusOfTheTube, 
1939                          outerRadiusOfTheTube,
1940                          hightOfTheTube,
1941                          startAngleOfTheTube16, 
1942                          spanningAngleOfTheTube16);
1943
1944  logicMod76 = new G4LogicalVolume(solidMod76, ModMater, "Mod76",0,0,0);
1945  physiMod76 = new G4PVPlacement(0,                   // no rotation
1946                                 positionMod76,  // at (x,y,z)
1947                                 logicMod76,     // its logical volume                           
1948                                 "Mod76",        // its name
1949                                 logicMod60,      // its mother  volume
1950                                 false,           // no boolean operations
1951                                 0);              // no particular field
1952
1953  //----------------------------------------------------------
1954  //Dicias. fetta Modulatore 4
1955  //----------------------------------------------------------
1956   
1957  G4ThreeVector positionMod77 = G4ThreeVector(0*cm,0*cm,-0.45*cm);
1958  solidMod77 = new G4Tubs("Mod57",
1959                          innerRadiusOfTheTube, 
1960                          outerRadiusOfTheTube,
1961                          hightOfTheTube,
1962                          startAngleOfTheTube17, 
1963                          spanningAngleOfTheTube17);
1964
1965  logicMod77 = new G4LogicalVolume(solidMod77, ModMater, "Mod77",0,0,0);
1966  physiMod77 = new G4PVPlacement(0,                   // no rotation
1967                                 positionMod77,  // at (x,y,z)
1968                                 logicMod77,     // its logical volume                           
1969                                 "Mod77",        // its name
1970                                 logicMod60,      // its mother  volume
1971                                 false,           // no boolean operations
1972                                 0);              // no particular field
1973
1974  //----------------------------------------------------------
1975  //Diciot. fetta Modulatore 3
1976  //----------------------------------------------------------
1977   
1978   
1979  G4ThreeVector positionMod78 = G4ThreeVector(0*cm,0*cm,-0.51*cm);
1980  solidMod78 = new G4Tubs("Mod78",
1981                          innerRadiusOfTheTube, 
1982                          outerRadiusOfTheTube,
1983                          hightOfTheTube,
1984                          startAngleOfTheTube18, 
1985                          spanningAngleOfTheTube18);
1986
1987  logicMod78 = new G4LogicalVolume(solidMod78, ModMater, "Mod78",0,0,0);
1988  physiMod78 = new G4PVPlacement(0,                   // no rotation
1989                                 positionMod78,  // at (x,y,z)
1990                                 logicMod78,     // its logical volume                           
1991                                 "Mod78",        // its name
1992                                 logicMod60,      // its mother  volume
1993                                 false,           // no boolean operations
1994                                 0);              // no particular field
1995
1996  G4VisAttributes * red = new G4VisAttributes( G4Colour(1. ,0. ,0.));
1997  red-> SetVisibility(true);
1998  red-> SetForceSolid(true);
1999  logicMotherMod -> SetVisAttributes(G4VisAttributes::Invisible);
2000
2001  logicMod0 ->SetVisAttributes(G4VisAttributes::Invisible);
2002  logicMod20 ->SetVisAttributes(G4VisAttributes::Invisible);
2003  logicMod40 ->SetVisAttributes(G4VisAttributes::Invisible);
2004  logicMod60 ->SetVisAttributes(G4VisAttributes::Invisible);
2005  logicMod1 -> SetVisAttributes(red);
2006  logicMod2 -> SetVisAttributes(red);
2007  logicMod3 -> SetVisAttributes(red);
2008  logicMod4 -> SetVisAttributes(red);
2009  logicMod5 -> SetVisAttributes(red);
2010  logicMod6 -> SetVisAttributes(red);
2011  logicMod7 -> SetVisAttributes(red);
2012  logicMod8 -> SetVisAttributes(red);
2013  logicMod9 -> SetVisAttributes(red);
2014  logicMod10 -> SetVisAttributes(red);
2015  logicMod11 -> SetVisAttributes(red);
2016  logicMod12 -> SetVisAttributes(red);
2017  logicMod13 -> SetVisAttributes(red);
2018  logicMod14 -> SetVisAttributes(red);
2019  logicMod15 -> SetVisAttributes(red);
2020  logicMod16 -> SetVisAttributes(red);
2021  logicMod17 -> SetVisAttributes(red);
2022  logicMod18 -> SetVisAttributes(red);
2023  logicMod21 -> SetVisAttributes(red);
2024  logicMod22 -> SetVisAttributes(red);
2025  logicMod23 -> SetVisAttributes(red);
2026  logicMod24 -> SetVisAttributes(red);
2027  logicMod25 -> SetVisAttributes(red);
2028  logicMod26 -> SetVisAttributes(red);
2029  logicMod27 -> SetVisAttributes(red);
2030  logicMod28 -> SetVisAttributes(red);
2031  logicMod29 -> SetVisAttributes(red);
2032  logicMod30 -> SetVisAttributes(red);
2033  logicMod31 -> SetVisAttributes(red);
2034  logicMod32 -> SetVisAttributes(red);
2035  logicMod33 -> SetVisAttributes(red);
2036  logicMod34 -> SetVisAttributes(red);
2037  logicMod35 -> SetVisAttributes(red);
2038  logicMod36 -> SetVisAttributes(red);
2039  logicMod37 -> SetVisAttributes(red);
2040  logicMod38 -> SetVisAttributes(red);
2041  logicMod41 -> SetVisAttributes(red);
2042  logicMod42 -> SetVisAttributes(red);
2043  logicMod43 -> SetVisAttributes(red);
2044  logicMod44 -> SetVisAttributes(red);
2045  logicMod45 -> SetVisAttributes(red);
2046  logicMod46 -> SetVisAttributes(red);
2047  logicMod47 -> SetVisAttributes(red);
2048  logicMod48 -> SetVisAttributes(red);
2049  logicMod49 -> SetVisAttributes(red);
2050  logicMod50 -> SetVisAttributes(red);
2051  logicMod51 -> SetVisAttributes(red);
2052  logicMod52 -> SetVisAttributes(red);
2053  logicMod53 -> SetVisAttributes(red);
2054  logicMod54 -> SetVisAttributes(red);
2055  logicMod55 -> SetVisAttributes(red);
2056  logicMod56 -> SetVisAttributes(red);
2057  logicMod57 -> SetVisAttributes(red);
2058  logicMod58 -> SetVisAttributes(red);
2059  logicMod61 -> SetVisAttributes(red);
2060  logicMod62 -> SetVisAttributes(red);
2061  logicMod63 -> SetVisAttributes(red);
2062  logicMod64 -> SetVisAttributes(red);
2063  logicMod65 -> SetVisAttributes(red);
2064  logicMod66 -> SetVisAttributes(red);
2065  logicMod67 -> SetVisAttributes(red);
2066  logicMod68 -> SetVisAttributes(red);
2067  logicMod69 -> SetVisAttributes(red);
2068  logicMod70 -> SetVisAttributes(red);
2069  logicMod71 -> SetVisAttributes(red);
2070  logicMod72 -> SetVisAttributes(red);
2071  logicMod73 -> SetVisAttributes(red);
2072  logicMod74 -> SetVisAttributes(red);
2073  logicMod75 -> SetVisAttributes(red);
2074  logicMod76 -> SetVisAttributes(red);
2075  logicMod77 -> SetVisAttributes(red);
2076  logicMod78 -> SetVisAttributes(red);
2077}
2078
2079void HadrontherapyModulator::SetModulatorAngle(G4double angle)
2080{
2081  G4double rotationAngle = angle;
2082  rm -> rotateZ(rotationAngle);
2083  physiMotherMod -> SetRotation(rm); 
2084  G4cout << "MODULATOR HAS BEEN ROTATED OF   " << rotationAngle/deg
2085         << " deg" << G4endl;
2086  G4RunManager::GetRunManager()-> GeometryHasBeenModified(); 
2087}
2088
2089
Note: See TracBrowser for help on using the repository browser.