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

Last change on this file since 1013 was 807, checked in by garnier, 16 years ago

update

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