source: trunk/examples/advanced/medical_linac/src/MedLinacTargetAndFilterDecorator.cc

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

update

File size: 20.2 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//
27// $Id: MedLinacTargetAndFilterDecorator.cc,v 1.3 2006/06/29 16:04:49 gunter Exp $
28//
29// Code developed by: M. Piergentili
30//
31//
32#include "MedLinacVGeometryComponent.hh"
33#include "G4Material.hh"
34#include "MedLinacTargetAndFilterDecorator.hh"
35#include "MedLinacDecorator.hh"
36
37#include "globals.hh"
38#include "G4LogicalVolume.hh"
39#include "G4RotationMatrix.hh"
40#include "G4Transform3D.hh"
41#include "G4VPhysicalVolume.hh"
42#include "G4PVPlacement.hh"
43#include "G4Material.hh"
44#include "G4MaterialPropertiesTable.hh"
45#include "G4MaterialTable.hh"
46#include "G4MaterialPropertyVector.hh"
47#include "G4Element.hh"
48#include "G4ElementTable.hh"
49#include "G4Box.hh"
50#include "G4Cons.hh"
51#include "G4Tubs.hh"
52#include "G4ThreeVector.hh"
53#include "G4VisAttributes.hh"
54#include "G4GeometryManager.hh"
55#include "G4BooleanSolid.hh"
56#include "G4SubtractionSolid.hh"
57#include "G4VSolid.hh"
58#include "G4PhysicalVolumeStore.hh"
59#include "G4LogicalVolumeStore.hh"
60#include "G4SolidStore.hh"
61#include "G4Colour.hh"
62
63#include "G4ios.hh"
64MedLinacTargetAndFilterDecorator::MedLinacTargetAndFilterDecorator(MedLinacVGeometryComponent* comp)
65  : MedLinacDecorator(comp)
66{
67 
68}
69MedLinacTargetAndFilterDecorator::~MedLinacTargetAndFilterDecorator()
70{
71  ;
72}
73void MedLinacTargetAndFilterDecorator::ConstructComponent(G4VPhysicalVolume* world, G4VPhysicalVolume* vacuumBlock)
74{
75   MedLinacDecorator::ConstructComponent(world,vacuumBlock);
76   ConstructTargetAndFilter(world,vacuumBlock);
77}
78
79void MedLinacTargetAndFilterDecorator::DestroyComponent()
80{
81  ;
82}
83void MedLinacTargetAndFilterDecorator::ConstructTargetAndFilter(G4VPhysicalVolume* world, G4VPhysicalVolume* vacuumBlock)
84{
85
86  //    materials
87
88  G4double a;  // atomic mass
89  G4double z;  // atomic number
90  G4double density;
91  //G4int natoms;
92  G4String symbol;
93  G4String name;
94  G4double fractionmass;
95  G4int ncomponents;
96
97  a = 14.00674*g/mole;
98  G4Element* elN = new G4Element(name="Nitrogen" ,symbol="N", z=7., a);
99
100  a = 16.00*g/mole;
101  G4Element* elO = new G4Element(name="Oxygen",symbol="O", z=8., a);
102
103
104  density = 8.960*g/cm3;
105  a = 63.55*g/mole;
106  G4Material* Cu = new G4Material(name="Copper"   , z=29., a, density);
107
108  density = 18.*g/cm3;
109  a = 183.85*g/mole;
110  G4Material* W = new G4Material(name="Tungsten"  , z=74., a, density)
111;
112  density = 1.290*mg/cm3;
113  G4Material* Air = new G4Material(name="Air",density, ncomponents=2);
114  Air->AddElement(elN, fractionmass=70*perCent);
115  Air->AddElement(elO, fractionmass=30*perCent);
116
117  //    colors
118
119   G4Colour  cyan    (0.0, 1.0, 1.0);
120  G4Colour  magenta (1.0, 0.0, 1.0); 
121 
122 //---------rotation matrix first collimator and filter--------
123
124  G4RotationMatrix*  rotateMatrix=new G4RotationMatrix();
125  rotateMatrix->rotateX(180.0*deg);
126
127
128  //    volumes
129  //    beam line along z axis
130//------------------------target 6MV------------------------
131  //G4double targetADim_x = 0.3576*cm;
132  //G4double targetADim_y = 0.3576*cm;
133  G4double targetADim_x = 0.6*cm;
134  G4double targetADim_y = 0.6*cm;
135  G4double targetADim_z = 0.04445*cm;
136  G4Box* targetA_box = new G4Box("targetA_box",targetADim_x,targetADim_y,targetADim_z);
137  targetA_log = new G4LogicalVolume(targetA_box,W,"targetA_log",0,0,0);
138  G4double targetAPos_x = 0.0*m;
139  G4double targetAPos_y = 0.0*m;
140  G4double targetAPos_z = 0.20055*cm;
141  targetA_phys = new G4PVPlacement(0,
142            G4ThreeVector(targetAPos_x,targetAPos_y,targetAPos_z),
143            "targetA",targetA_log,vacuumBlock,false,0);
144
145  //G4double targetBDim_x = 0.3576*cm;
146  //G4double targetBDim_y = 0.3576*cm;
147  G4double targetBDim_x = 0.6*cm;
148  G4double targetBDim_y = 0.6*cm;
149  G4double targetBDim_z = 0.07874*cm;
150  G4Box* targetB_box = new G4Box("targetB_box",targetBDim_x,targetBDim_y,targetBDim_z);
151  targetB_log = new G4LogicalVolume(targetB_box,Cu,"targetB_log",0,0,0);
152  G4double targetBPos_x = 0.0*m;
153  G4double targetBPos_y = 0.0*m;
154  G4double targetBPos_z = 0.07736*cm;
155  targetB_phys = new G4PVPlacement(0,
156            G4ThreeVector(targetBPos_x,targetBPos_y,targetBPos_z),
157            "targetB",targetB_log,vacuumBlock,false,0);
158
159  //--------------Flattening Filter---------------
160  G4double  layerRmin1 = 0.*cm;
161  G4double  layerRmin2 = 0.*cm;
162  G4double layerPos_x = 0.0*m;
163  G4double layerPos_y = 0.0*m;
164
165    //-----------layer1-----------------------------
166  G4double  layer1Rmax1 = 0.00000001*cm;
167  G4double  layer1Rmax2 = 0.025*cm;
168  G4double  layer1HightOfTheCone = 0.006*cm;
169  G4double  startAngleOfTheCone = 0.*deg;
170  G4double  spanningAngleOfTheCone = 360.*deg;
171  G4Cons* layer1 = new G4Cons("layer1",layerRmin1,layer1Rmax1,layerRmin2,
172                           layer1Rmax2,layer1HightOfTheCone,startAngleOfTheCone,
173                           spanningAngleOfTheCone);
174
175  layer1_log = new G4LogicalVolume(layer1,Cu,"layer1_log",0,0,0);
176
177  G4double layer1Pos_z = 103.301*cm;
178  layer1_phys = new G4PVPlacement(rotateMatrix,
179             G4ThreeVector(layerPos_x,layerPos_y,layer1Pos_z),
180             "layer1",layer1_log,world,false,0);
181
182   //-----------layer2-----------------------------
183  G4double  layer2Rmax1 = 0.025*cm;
184  G4double  layer2Rmax2 = 0.050*cm;
185  G4double  layer2HightOfTheCone = 0.0065*cm;
186  G4Cons* layer2 = new G4Cons("layer2",layerRmin1,layer2Rmax1,layerRmin2,
187                           layer2Rmax2,layer2HightOfTheCone,startAngleOfTheCone,
188                           spanningAngleOfTheCone);
189
190  layer2_log = new G4LogicalVolume(layer2,Cu,"layer2_log",0,0,0);
191
192  G4double layer2Pos_z = 103.2885*cm;
193  layer2_phys = new G4PVPlacement(rotateMatrix,
194             G4ThreeVector(layerPos_x,layerPos_y,layer2Pos_z),
195             "layer2",layer2_log,world,false,0);
196    //-----------layer3-----------------------------
197  G4double  layer3Rmax1 = 0.050*cm;
198  G4double  layer3Rmax2 = 0.075*cm;
199  G4double  layer3HightOfTheCone = 0.0075*cm;
200  G4Cons* layer3 = new G4Cons("layer3",layerRmin1,layer3Rmax1,layerRmin2,
201                           layer3Rmax2,layer3HightOfTheCone,startAngleOfTheCone,
202                           spanningAngleOfTheCone);
203
204  layer3_log = new G4LogicalVolume(layer3,Cu,"layer3_log",0,0,0);
205
206  G4double layer3Pos_z = 103.2745*cm;
207  layer3_phys = new G4PVPlacement(rotateMatrix,
208             G4ThreeVector(layerPos_x,layerPos_y,layer3Pos_z),
209             "layer3",layer3_log,world,false,0);
210
211  //-----------layer4-----------------------------
212  G4double  layer4Rmax1 = 0.075*cm;
213  G4double  layer4Rmax2 = 0.100*cm;
214  G4double  layer4HightOfTheCone = 0.009*cm;
215  G4Cons* layer4 = new G4Cons("layer4",layerRmin1,layer4Rmax1,layerRmin2,
216                           layer4Rmax2,layer4HightOfTheCone,startAngleOfTheCone,
217                           spanningAngleOfTheCone);
218
219  layer4_log = new G4LogicalVolume(layer4,Cu,"layer4_log",0,0,0);
220
221  G4double layer4Pos_z = 103.258*cm;
222  layer4_phys = new G4PVPlacement(rotateMatrix,
223             G4ThreeVector(layerPos_x,layerPos_y,layer4Pos_z),
224             "layer4",layer4_log,world,false,0);
225  //-----------layer5-----------------------------
226  G4double  layer5Rmax1 = 0.100*cm;
227  G4double  layer5Rmax2 = 0.150*cm;
228  G4double  layer5HightOfTheCone = 0.022*cm;
229  G4Cons* layer5 = new G4Cons("layer5",layerRmin1,layer5Rmax1,layerRmin2,
230                           layer5Rmax2,layer5HightOfTheCone,startAngleOfTheCone,
231                           spanningAngleOfTheCone);
232
233  layer5_log = new G4LogicalVolume(layer5,Cu,"layer5_log",0,0,0);
234
235  G4double layer5Pos_z = 103.227*cm;
236  layer5_phys = new G4PVPlacement(rotateMatrix,
237             G4ThreeVector(layerPos_x,layerPos_y,layer5Pos_z),
238             "layer5",layer5_log,world,false,0);
239
240   //-----------layer6-----------------------------
241  G4double  layer6Rmax1 = 0.150*cm;
242  G4double  layer6Rmax2 = 0.200*cm;
243  G4double  layer6HightOfTheCone = 0.024*cm;
244  G4Cons* layer6 = new G4Cons("layer6",layerRmin1,layer6Rmax1,layerRmin2,
245                           layer6Rmax2,layer6HightOfTheCone,startAngleOfTheCone,
246                           spanningAngleOfTheCone);
247
248  layer6_log = new G4LogicalVolume(layer6,Cu,"layer6_log",0,0,0);
249
250  G4double layer6Pos_z = 103.181*cm;
251  layer6_phys = new G4PVPlacement(rotateMatrix,
252             G4ThreeVector(layerPos_x,layerPos_y,layer6Pos_z),
253             "layer6",layer6_log,world,false,0);
254
255    //-----------layer7-----------------------------
256  G4double  layer7Rmax1 = 0.200*cm;
257  G4double  layer7Rmax2 = 0.250*cm;
258  G4double  layer7HightOfTheCone = 0.023*cm;
259  G4Cons* layer7 = new G4Cons("layer7",layerRmin1,layer7Rmax1,layerRmin2,
260                           layer7Rmax2,layer7HightOfTheCone,startAngleOfTheCone,
261                           spanningAngleOfTheCone);
262
263  layer7_log = new G4LogicalVolume(layer7,Cu,"layer7_log",0,0,0);
264
265  G4double layer7Pos_z = 103.134*cm;
266  layer7_phys = new G4PVPlacement(rotateMatrix,
267             G4ThreeVector(layerPos_x,layerPos_y,layer7Pos_z),
268             "layer7",layer7_log,world,false,0);
269
270 //-----------layer8-----------------------------
271  G4double  layer8Rmax1 = 0.250*cm;
272  G4double  layer8Rmax2 = 0.300*cm;
273  G4double  layer8HightOfTheCone = 0.023*cm;
274  G4Cons* layer8 = new G4Cons("layer8",layerRmin1,layer8Rmax1,layerRmin2,
275                           layer8Rmax2,layer8HightOfTheCone,startAngleOfTheCone,
276                           spanningAngleOfTheCone);
277
278  layer8_log = new G4LogicalVolume(layer8,Cu,"layer8_log",0,0,0);
279
280  G4double layer8Pos_z = 103.088*cm;
281  layer8_phys = new G4PVPlacement(rotateMatrix,
282             G4ThreeVector(layerPos_x,layerPos_y,layer8Pos_z),
283             "layer8",layer8_log,world,false,0);
284
285   //-----------layer9-----------------------------
286  G4double  layer9Rmax1 = 0.300*cm;
287  G4double  layer9Rmax2 = 0.350*cm;
288  G4double  layer9HightOfTheCone = 0.0225*cm;
289  G4Cons* layer9 = new G4Cons("layer9",layerRmin1,layer9Rmax1,layerRmin2,
290                           layer9Rmax2,layer9HightOfTheCone,startAngleOfTheCone,
291                           spanningAngleOfTheCone);
292
293  layer9_log = new G4LogicalVolume(layer9,Cu,"layer9_log",0,0,0);
294
295  G4double layer9Pos_z = 103.0425*cm;
296  layer9_phys = new G4PVPlacement(rotateMatrix,
297             G4ThreeVector(layerPos_x,layerPos_y,layer9Pos_z),
298             "layer9",layer9_log,world,false,0);
299
300  //-----------layer10-----------------------------
301  G4double  layer10Rmax1 = 0.350*cm;
302  G4double  layer10Rmax2 = 0.400*cm;
303  G4double  layer10HightOfTheCone = 0.022*cm;
304  G4Cons* layer10 = new G4Cons("layer10",layerRmin1,layer10Rmax1,layerRmin2,
305                           layer10Rmax2,layer10HightOfTheCone,startAngleOfTheCone,
306                           spanningAngleOfTheCone);
307
308  layer10_log = new G4LogicalVolume(layer10,Cu,"layer10_log",0,0,0);
309
310  G4double layer10Pos_z = 102.998*cm;
311  layer10_phys = new G4PVPlacement(rotateMatrix,
312             G4ThreeVector(layerPos_x,layerPos_y,layer10Pos_z),
313             "layer10",layer10_log,world,false,0);
314   //-----------layer11-----------------------------
315  G4double  layer11Rmax1 = 0.400*cm;
316  G4double  layer11Rmax2 = 0.500*cm;
317  G4double  layer11HightOfTheCone = 0.0425*cm;
318  G4Cons* layer11 = new G4Cons("layer11",layerRmin1,layer11Rmax1,layerRmin2,
319                           layer11Rmax2,layer11HightOfTheCone,startAngleOfTheCone,
320                           spanningAngleOfTheCone);
321
322  layer11_log = new G4LogicalVolume(layer11,Cu,"layer11_log",0,0,0);
323
324  G4double layer11Pos_z = 102.9335*cm;
325  layer11_phys = new G4PVPlacement(rotateMatrix,
326             G4ThreeVector(layerPos_x,layerPos_y,layer11Pos_z),
327             "layer11",layer11_log,world,false,0);
328
329  //-----------layer12-----------------------------
330  G4double  layer12Rmax1 = 0.500*cm;
331  G4double  layer12Rmax2 = 0.600*cm;
332  G4double  layer12HightOfTheCone = 0.0395*cm;
333  G4Cons* layer12 = new G4Cons("layer12",layerRmin1,layer12Rmax1,layerRmin2,
334                           layer12Rmax2,layer12HightOfTheCone,startAngleOfTheCone,
335                           spanningAngleOfTheCone);
336
337  layer12_log = new G4LogicalVolume(layer12,Cu,"layer12_log",0,0,0);
338
339  G4double layer12Pos_z = 102.8515*cm;
340  layer12_phys = new G4PVPlacement(rotateMatrix,
341             G4ThreeVector(layerPos_x,layerPos_y,layer12Pos_z),
342             "layer12",layer12_log,world,false,0);
343
344  //-----------layer13-----------------------------
345  G4double  layer13Rmax1 = 0.600*cm;
346  G4double  layer13Rmax2 = 0.700*cm;
347  G4double  layer13HightOfTheCone = 0.038*cm;
348  G4Cons* layer13 = new G4Cons("layer13",layerRmin1,layer13Rmax1,layerRmin2,
349                           layer13Rmax2,layer13HightOfTheCone,startAngleOfTheCone,
350                           spanningAngleOfTheCone);
351
352  layer13_log = new G4LogicalVolume(layer13,Cu,"layer13_log",0,0,0);
353
354  G4double layer13Pos_z = 102.774*cm;
355  layer13_phys = new G4PVPlacement(rotateMatrix,
356             G4ThreeVector(layerPos_x,layerPos_y,layer13Pos_z),
357             "layer13",layer13_log,world,false,0);
358 //-----------layer14-----------------------------
359  G4double  layer14Rmax1 = 0.700*cm;
360  G4double  layer14Rmax2 = 0.800*cm;
361  G4double  layer14HightOfTheCone = 0.0335*cm;
362  G4Cons* layer14 = new G4Cons("layer14",layerRmin1,layer14Rmax1,layerRmin2,
363                           layer14Rmax2,layer14HightOfTheCone,startAngleOfTheCone,
364                           spanningAngleOfTheCone);
365
366  layer14_log = new G4LogicalVolume(layer14,Cu,"layer14_log",0,0,0);
367
368  G4double layer14Pos_z = 102.7025*cm;
369  layer14_phys = new G4PVPlacement(rotateMatrix,
370             G4ThreeVector(layerPos_x,layerPos_y,layer14Pos_z),
371             "layer14",layer14_log,world,false,0);
372
373   //-----------layer15-----------------------------
374  G4double  layer15Rmax1 = 0.800*cm;
375  G4double  layer15Rmax2 = 0.900*cm;
376  G4double  layer15HightOfTheCone = 0.0325*cm;
377  G4Cons* layer15 = new G4Cons("layer15",layerRmin1,layer15Rmax1,layerRmin2,
378                           layer15Rmax2,layer15HightOfTheCone,startAngleOfTheCone,
379                           spanningAngleOfTheCone);
380
381  layer15_log = new G4LogicalVolume(layer15,Cu,"layer15_log",0,0,0);
382
383  G4double layer15Pos_z = 102.6365*cm;
384  layer15_phys = new G4PVPlacement(rotateMatrix,
385             G4ThreeVector(layerPos_x,layerPos_y,layer15Pos_z),
386             "layer15",layer15_log,world,false,0);
387  //-----------layer16-----------------------------
388  G4double  layer16Rmax1 = 0.900*cm;
389  G4double  layer16Rmax2 = 1.000*cm;
390  G4double  layer16HightOfTheCone = 0.028*cm;
391  G4Cons* layer16 = new G4Cons("layer16",layerRmin1,layer16Rmax1,layerRmin2,
392                           layer16Rmax2,layer16HightOfTheCone,startAngleOfTheCone,
393                           spanningAngleOfTheCone);
394
395  layer16_log = new G4LogicalVolume(layer16,Cu,"layer16_log",0,0,0);
396
397  G4double layer16Pos_z = 102.576*cm;
398  layer16_phys = new G4PVPlacement(rotateMatrix,
399             G4ThreeVector(layerPos_x,layerPos_y,layer16Pos_z),
400             "layer16",layer16_log,world,false,0);
401
402  //-----------layer17-----------------------------
403  G4double  layer17Rmax1 = 1.000*cm;
404  G4double  layer17Rmax2 = 1.100*cm;
405  G4double  layer17HightOfTheCone = 0.0275*cm;
406  G4Cons* layer17 = new G4Cons("layer17",layerRmin1,layer17Rmax1,layerRmin2,
407                           layer17Rmax2,layer17HightOfTheCone,startAngleOfTheCone,
408                           spanningAngleOfTheCone);
409
410  layer17_log = new G4LogicalVolume(layer17,Cu,"layer17_log",0,0,0);
411
412  G4double layer17Pos_z = 102.5205*cm;
413  layer17_phys = new G4PVPlacement(rotateMatrix,
414             G4ThreeVector(layerPos_x,layerPos_y,layer17Pos_z),
415             "layer17",layer17_log,world,false,0);
416
417    //-----------layer18-----------------------------
418  G4double  layer18Rmax1 = 1.100*cm;
419  G4double  layer18Rmax2 = 1.205*cm;
420  G4double  layer18HightOfTheCone = 0.019*cm;
421  G4Cons* layer18 = new G4Cons("layer18",layerRmin1,layer18Rmax1,layerRmin2,
422                           layer18Rmax2,layer18HightOfTheCone,startAngleOfTheCone,
423                           spanningAngleOfTheCone);
424
425  layer18_log = new G4LogicalVolume(layer18,Cu,"layer18_log",0,0,0);
426
427  G4double layer18Pos_z = 102.474*cm;
428  layer18_phys = new G4PVPlacement(rotateMatrix,
429             G4ThreeVector(layerPos_x,layerPos_y,layer18Pos_z),
430             "layer18",layer18_log,world,false,0);
431  //-----------layer19-----------------------------
432  G4double innerRadiusOfTheLayer19 = 0.0*cm;
433  G4double outerRadiusOfTheLayer19 = 1.325*cm;
434  G4double hightOfTheLayer19 = 0.040*cm;
435  G4double startAngleOfTheLayer19 = 0.*deg;
436  G4double spanningAngleOfTheLayer19 = 360.*deg;
437  G4Tubs* layer19 = new G4Tubs("layer19",innerRadiusOfTheLayer19,
438                                    outerRadiusOfTheLayer19,hightOfTheLayer19,
439                                    startAngleOfTheLayer19,spanningAngleOfTheLayer19);
440  layer19_log = new G4LogicalVolume(layer19,Cu,"layer19_log",0,0,0);
441
442  G4double layer19PosX = 0.*cm;
443  G4double layer19PosY = 0.*cm;
444  G4double layer19PosZ = 102.415*cm;
445
446  layer19_phys = new G4PVPlacement(0,
447                                           G4ThreeVector(layer19PosX,layer19PosY,
448                                                         layer19PosZ),"layer19",
449                                           layer19_log,world,false,0);
450  //-----------layer20-----------------------------
451  G4double innerRadiusOfTheLayer20A = 1.300*cm;
452  G4double outerRadiusOfTheLayer20A = 1.325*cm;
453  G4double hightOfTheLayer20A = 0.0225*cm;
454  G4double startAngleOfTheLayer20A = 0.*deg;
455  G4double spanningAngleOfTheLayer20A = 360.*deg;
456  G4Tubs* layer20A = new G4Tubs("layer20A",innerRadiusOfTheLayer20A,
457                                    outerRadiusOfTheLayer20A,hightOfTheLayer20A,
458                                    startAngleOfTheLayer20A,spanningAngleOfTheLayer20A);
459  layer20A_log = new G4LogicalVolume(layer20A,Cu,"layer20A_log",0,0,0);
460 
461//ho dovuto aumentare di 0.001 cm le dim cone20Rmax2 cone20Rmax1 per far funzionare il G4SubtractionSolid
462
463  G4double  cone20Rmin1 = 0.*cm;
464  G4double  cone20Rmax1 = 1.326*cm;
465  G4double  cone20Rmin2 = 0.*cm;
466  G4double  cone20Rmax2 = 1.301*cm;
467  G4double  hightOfThecone20 =0.0225*cm;
468  G4double  startAngleOfThecone20 = 0.*deg;
469  G4double  spanningAngleOfThecone20 = 360.*deg;
470
471  G4Cons* cone20 = new G4Cons("cone20",cone20Rmin1,cone20Rmax1,cone20Rmin2,
472                                   cone20Rmax2,hightOfThecone20,startAngleOfThecone20,
473                                   spanningAngleOfThecone20);
474  cone20_log = new G4LogicalVolume(cone20,Air,"cone20_log",0,0,0);
475
476  G4SubtractionSolid* layer20 = new G4SubtractionSolid("layer20",layer20A,cone20);
477  layer20_log = new G4LogicalVolume(layer20,Cu,"layer20_log",0,0,0);
478
479  G4double layer20PosX = 0.*cm;
480  G4double layer20PosY = 0.*cm;
481  G4double layer20PosZ = 102.4775*cm;
482  layer20_phys = new G4PVPlacement(0,
483                                           G4ThreeVector(layer20PosX,layer20PosY,
484                                                         layer20PosZ),"layer20",
485                                   layer20_log,world,false,0);
486
487  //-----------layer21-----------------------------
488  G4double innerRadiusOfTheLayer21 = 1.325*cm;
489  G4double outerRadiusOfTheLayer21 = 1.500*cm;
490  G4double hightOfTheLayer21 = 0.0625*cm;
491  G4double startAngleOfTheLayer21 = 0.*deg;
492  G4double spanningAngleOfTheLayer21 = 360.*deg;
493  G4Tubs* layer21 = new G4Tubs("layer21",innerRadiusOfTheLayer21,
494                                    outerRadiusOfTheLayer21,hightOfTheLayer21,
495                                    startAngleOfTheLayer21,spanningAngleOfTheLayer21);
496  layer21_log = new G4LogicalVolume(layer21,Cu,"layer21_log",0,0,0);
497
498  G4double layer21PosX = 0.*cm;
499  G4double layer21PosY = 0.*cm;
500  G4double layer21PosZ = 102.4375*cm;
501
502  layer21_phys = new G4PVPlacement(0,
503                                           G4ThreeVector(layer21PosX,layer21PosY,
504                                                         layer21PosZ),"layer19",
505                                           layer21_log,world,false,0);
506
507  //    Visualization attributes
508
509   G4VisAttributes* simpleCopperSVisAtt= new G4VisAttributes(cyan);
510   simpleCopperSVisAtt->SetVisibility(true);
511   simpleCopperSVisAtt->SetForceSolid(true);
512   targetB_log->SetVisAttributes(simpleCopperSVisAtt);
513
514   G4VisAttributes* simpleTungstenSVisAtt= new G4VisAttributes(magenta);
515   simpleTungstenSVisAtt->SetVisibility(true);
516   simpleTungstenSVisAtt->SetForceSolid(true);
517   targetA_log->SetVisAttributes(simpleTungstenSVisAtt);
518}
Note: See TracBrowser for help on using the repository browser.