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