BOSS 7.0.1
BESIII Offline Software System
Loading...
Searching...
No Matches
PartProduce.cc
Go to the documentation of this file.
1#include "PartProduce.hh"
2
3#include "G4LogicalVolume.hh"
4#include "G4VPhysicalVolume.hh"
5#include "G4PVPlacement.hh"
6#include "G4Trd.hh"
7#include "G4Box.hh"
8#include "G4Transform3D.hh"
9#include "G4UnionSolid.hh"
10#include "G4Trap.hh"
11#include "G4Tubs.hh"
12#include "G4Cons.hh"
13#include "G4SubtractionSolid.hh"
14#include "G4IntersectionSolid.hh"
15#include "G4VisAttributes.hh"
16
17using namespace std;
18
19G4double smallL = 0.01*mm;
20G4RotationMatrix rot_dummy(0*deg,0*deg,0*deg);
21bool checkOverlap = false;
22std::ostringstream Name;
23
24
26{
27 IniParam();
28}
29
31{
32}
33
35{
37
38 //All the values are in units of mm or deg
39 containerOut_xdown = tofPara->Get("containerOut_xdown");
40 containerOut_xup = tofPara->Get("containerOut_xup");
41 containerOut_y = tofPara->Get("containerOut_y");
42 containerOut_z = tofPara->Get("containerOut_z");
43 container_thickness = tofPara->Get("container_thickness");
44 container_lowBorder = tofPara->Get("container_lowBorder");
45
46 containerIn_xdown = tofPara->Get("containerIn_xdown");
47 containerIn_xup = tofPara->Get("containerIn_xup");
48 containerIn_y = tofPara->Get("containerIn_y");
49 containerIn_z = tofPara->Get("containerIn_z");
50
51 upCover_xdown = tofPara->Get("upCover_xdown");
52 upCover_xup = tofPara->Get("upCover_xup");
53 upCover_y = tofPara->Get("upCover_y");
54 upCover_z = tofPara->Get("upCover_z");
55 upCover_posz = tofPara->Get("upCover_posz");
56
57 lowCover1_xdown = tofPara->Get("lowCover1_xdown");
58 lowCover1_xup = tofPara->Get("lowCover1_xup");
59 lowCover1_y = tofPara->Get("lowCover1_y");
60 lowCover1_z = tofPara->Get("lowCover1_z");
61 lowCover1_addx = tofPara->Get("lowCover1_addx");
62 lowCover1_addz = tofPara->Get("lowCover1_addz");
63 lowCover1_posz = tofPara->Get("lowCover1_posz");
64
65 lowCover2_xdown = tofPara->Get("lowCover2_xdown");
66 lowCover2_xup = tofPara->Get("lowCover2_xup");
67 lowCover2_y = tofPara->Get("lowCover2_y");
68 lowCover2_z = tofPara->Get("lowCover2_z");
69 lowCover2_posz = tofPara->Get("lowCover2_posz");
70
71 upFEE_xdown = tofPara->Get("upFEE_xdown");
72 upFEE_xup = tofPara->Get("upFEE_xup");
73 upFEE_y = tofPara->Get("upFEE_y");
74 upFEE_z = tofPara->Get("upFEE_z");
75 FEE_thickness = tofPara->Get("FEE_thickness");
76 upFEE_posz = tofPara->Get("upFEE_posz");
77
78 upFEE_pcb_xdown = tofPara->Get("upFEE_pcb_xdown");
79 upFEE_pcb_xup = tofPara->Get("upFEE_pcb_xup");
80 upFEE_pcb_y = tofPara->Get("upFEE_pcb_y");
81 upFEE_pcb_z = tofPara->Get("upFEE_pcb_z");
82
83 sideFEE_x = tofPara->Get("sideFEE_x");
84 sideFEE_y = tofPara->Get("sideFEE_y");
85 sideFEE_z = tofPara->Get("sideFEE_z");
86 sideFEE_posl = tofPara->Get("sideFEE_posl");
87
88 sideFEE_pcb_x = tofPara->Get("sideFEE_pcb_x");
89 sideFEE_pcb_y = tofPara->Get("sideFEE_pcb_y");
90 sideFEE_pcb_z = tofPara->Get("sideFEE_pcb_z");
91
92 castingDie_x = tofPara->Get("castingDie_x");
93 castingDie_y = tofPara->Get("castingDie_y");
94 castingDie_z = tofPara->Get("castingDie_z");
95 castingDie_addr = tofPara->Get("castingDie_addr");
96 castingDie_subtractx = tofPara->Get("castingDie_subtractx");
97 castingDie_subtract_posz = tofPara->Get("castingDie_subtract_posz");
98 castingDie_posz1 = tofPara->Get("castingDie_posz1");
99 castingDie_posz2 = tofPara->Get("castingDie_posz2");
100
101 chamber_in_posy = tofPara->Get("chamber_in_posy");
102 chamber_out_posy = tofPara->Get("chamber_out_posy");
103
104 bracket_x = tofPara->Get("bracket_x");
105 bracket_y = tofPara->Get("bracket_y");
106 bracket_z = tofPara->Get("bracket_z");
107 bracket_r = tofPara->Get("bracket_r");
108 bracket_posx = tofPara->Get("bracket_posx");
109
110 upStopBlock_x = tofPara->Get("upStopBlock_x");
111 upStopBlock_y = tofPara->Get("upStopBlock_y");
112 upStopBlock_z = tofPara->Get("upStopBlock_z");
113 upStopBlock_subtractr = tofPara->Get("upStopBlock_subtractr");
114 upStopBlock_subtractposz = tofPara->Get("upStopBlock_subtractposz");
115
116 sideStopBlock_x = tofPara->Get("sideStopBlock_x");
117 sideStopBlock_y = tofPara->Get("sideStopBlock_y");
118 sideStopBlock_z = tofPara->Get("sideStopBlock_z");
119 sideStopBlock_thickness = tofPara->Get("sideStopBlock_thickness");
120 sideStopBlock_posz0 = tofPara->Get("sideStopBlock_posz0");
121 sideStopBlock_posz1 = tofPara->Get("sideStopBlock_posz1");
122
123
124 honeyComb_xdown = tofPara->Get("honeyComb_xdown");
125 honeyComb_xup = tofPara->Get("honeyComb_xup");
126 honeyComb_y = tofPara->Get("honeyComb_y");
127 honeyComb_z = tofPara->Get("honeyComb_z");
128 honeyComb_surface_y = tofPara->Get("honeyComb_surface_y");
129 honeyComb_posz = tofPara->Get("honeyComb_posz");
130
131 tape_mrpc_xdown = tofPara->Get("tape_mrpc_xdown");
132 tape_mrpc_xup = tofPara->Get("tape_mrpc_xup");
133 tape_mrpc_y = tofPara->Get("tape_mrpc_y");
134 tape_mrpc_z = tofPara->Get("tape_mrpc_z");
135 tape_mrpc_posz = tofPara->Get("tape_mrpc_posz");
136
137 pcbBoard_xdown = tofPara->Get("pcbBoard_xdown");
138 pcbBoard_xup = tofPara->Get("pcbBoard_xup");
139 pcbBoard_y0 = tofPara->Get("pcbBoard_y0");
140 pcbBoard_y1 = tofPara->Get("pcbBoard_y1");
141 pcbBoard_z = tofPara->Get("pcbBoard_z");
142
143 strip_x[0] = tofPara->Get("strip_x[0]");
144 strip_x[1] = tofPara->Get("strip_x[1]");
145 strip_x[2] = tofPara->Get("strip_x[2]");
146 strip_x[3] = tofPara->Get("strip_x[3]");
147 strip_x[4] = tofPara->Get("strip_x[4]");
148 strip_x[5] = tofPara->Get("strip_x[5]");
149 strip_x[6] = tofPara->Get("strip_x[6]");
150 strip_x[7] = tofPara->Get("strip_x[7]");
151 strip_x[8] = tofPara->Get("strip_x[8]");
152 strip_x[9] = tofPara->Get("strip_x[9]");
153 strip_x[10] = tofPara->Get("strip_x[10]");
154 strip_x[11] = tofPara->Get("strip_x[11]");
155 strip_y = tofPara->Get("strip_y");
156 strip_z = tofPara->Get("strip_z");
157 strip_gap = tofPara->Get("strip_gap");
158 strip_posz = tofPara->Get("strip_posz");
159
160 mylar_xdown = tofPara->Get("mylar_xdown");
161 mylar_xup = tofPara->Get("mylar_xup");
162 mylar_y = tofPara->Get("mylar_y");
163 mylar_z = tofPara->Get("mylar_z");
164 mylar_posz = tofPara->Get("mylar_posz");
165
166 glass0_xdown = tofPara->Get("glass0_xdown");
167 glass0_xup = tofPara->Get("glass0_xup");
168 glass0_y = tofPara->Get("glass0_y");
169 glass0_z = tofPara->Get("glass0_z");
170 glass0_posz = tofPara->Get("glass0_posz");
171
172 glass1_xdown = tofPara->Get("glass1_xdown");
173 glass1_xup = tofPara->Get("glass1_xup");
174 glass1_y = tofPara->Get("glass1_y");
175 glass1_z = tofPara->Get("glass1_z");
176 glass1_posz = tofPara->Get("glass1_posz");
177
178 gasLayer_xdown = tofPara->Get("gasLayer_xdown");
179 gasLayer_xup = tofPara->Get("gasLayer_xup");
180 gasLayer_y = tofPara->Get("gasLayer_y");
181 gasLayer_z = tofPara->Get("gasLayer_z");
182 gasLayer_posz = tofPara->Get("gasLayer_posz");
183
184 endcap_r = tofPara->Get("endcap_r");
185 endcap_length = tofPara->Get("endcap_length");
186 layer_posz = tofPara->Get("layer_posz");
187 startAngle_east = tofPara->Get("startAngle_east");
188 startAngle_west = tofPara->Get("startAngle_west");
189}
190
191
192G4VSolid* PartProduce::sd_containerOut(double smallL, string name)
193{
194 G4Trd* solid_containerOut = new G4Trd(name, containerOut_xdown/2+smallL, containerOut_xup/2+smallL, containerOut_y/2+smallL, containerOut_y/2+smallL, containerOut_z/2+smallL);
195 return solid_containerOut;
196}
197
198G4VSolid* PartProduce::sd_containerIn(double smallL, string name)
199{
200 G4Trd* solid_containerIn = new G4Trd(name, containerIn_xdown/2+smallL, containerIn_xup/2+smallL, containerIn_y/2+smallL, containerIn_y/2+smallL, containerIn_z/2+smallL);
201 return solid_containerIn;
202}
203
204G4LogicalVolume* PartProduce::lg_containerFrame(string name)
205{
206 Name.str("");
207 Name<<"solid_containerOut_"<<name;
208 G4VSolid* solid_containerOut = sd_containerOut(0, Name.str());
209 Name.str("");
210 Name<<"solid_containerIn_"<<name;
211 G4VSolid* solid_containerIn = sd_containerIn(smallL, Name.str());
212
213 double lz = (container_lowBorder-container_thickness)/2;
214 G4ThreeVector translation_containerFrame(0,0,lz);
215 G4Transform3D transform_containerFrame(rot_dummy, translation_containerFrame);
216 Name.str("");
217 Name<<"solid_containerFrame_"<<name;
218 G4SubtractionSolid* solid_containerFrame = new G4SubtractionSolid(Name.str(), solid_containerOut, solid_containerIn, transform_containerFrame);
219 G4LogicalVolume* logical_containerFrame = new G4LogicalVolume(solid_containerFrame, G4Material::GetMaterial("Aluminium"), name);
220
221 G4VisAttributes* vis = new G4VisAttributes();
222 vis->SetColor(G4Color(0.5,0.5,0.6));
223 logical_containerFrame->SetVisAttributes(vis);
224
225 return logical_containerFrame;
226}
227
228G4VSolid* PartProduce::sd_upCover(double smallL, string name)
229{
230 G4Trd* solid_upCover = new G4Trd(name, upCover_xdown/2+smallL, upCover_xup/2+smallL, upCover_y/2+smallL, upCover_y/2+smallL, upCover_z/2+smallL);
231 return solid_upCover;
232}
233
234G4VSolid* PartProduce::sd_lowCover1(double smallL, string name)
235{
236 Name.str("");
237 Name<<name<<"_1";
238 G4Trd* solid_lowCover1_1 = new G4Trd(Name.str(), lowCover1_xdown/2+smallL, lowCover1_xup/2+smallL, lowCover1_y/2+smallL, lowCover1_y/2+smallL, lowCover1_z/2+smallL);
239
240 Name.str("");
241 Name<<name<<"_2";
242 G4Trd* solid_lowCover1_2 = new G4Trd(Name.str(), lowCover1_addx/2+smallL, lowCover1_addx/2+smallL, lowCover1_y/2+smallL, lowCover1_y/2+smallL, lowCover1_addz/2+smallL);
243
244 G4Transform3D transform_lowCover1(rot_dummy, G4ThreeVector(0,0,-(lowCover1_z+lowCover1_addz)/2));
245 G4UnionSolid* solid_lowCover1 = new G4UnionSolid(name, solid_lowCover1_1, solid_lowCover1_2, transform_lowCover1);
246 return solid_lowCover1;
247}
248
249G4VSolid* PartProduce::sd_lowCover2(double smallL, string name)
250{
251 G4Trd* solid_lowCover2 = new G4Trd(name, lowCover2_xdown/2+smallL, lowCover2_xup/2+smallL, lowCover2_y/2+smallL, lowCover2_y/2+smallL, lowCover2_z/2+smallL);
252 return solid_lowCover2;
253}
254
255G4LogicalVolume* PartProduce::lg_upCover(string name)
256{
257 Name.str("");
258 Name<<"solid_upCover_"<<name;
259 G4VSolid* solid_upCover = sd_upCover(0, Name.str());
260 G4LogicalVolume* logical_upCover = new G4LogicalVolume(solid_upCover, G4Material::GetMaterial("Aluminium"), name);
261
262 G4VisAttributes* vis = new G4VisAttributes();
263 vis->SetColor(G4Color(0.5,0.5,0.6));
264 //vis->SetForceWireframe(true);
265 logical_upCover->SetVisAttributes(vis);
266
267 return logical_upCover;
268}
269
270G4LogicalVolume* PartProduce::lg_lowCover1(string name)
271{
272 Name.str("");
273 Name<<"solid_lowCover1_"<<name;
274 G4VSolid* solid_lowCover1 = sd_lowCover1(0, Name.str());
275 G4LogicalVolume* logical_lowCover1 = new G4LogicalVolume(solid_lowCover1, G4Material::GetMaterial("Aluminium"), name);
276
277 G4VisAttributes* vis = new G4VisAttributes();
278 vis->SetColor(G4Color(0.5,0.5,0.6));
279 //vis->SetForceWireframe(true);
280 logical_lowCover1->SetVisAttributes(vis);
281
282 return logical_lowCover1;
283}
284
285G4LogicalVolume* PartProduce::lg_lowCover2(string name)
286{
287 Name.str("");
288 Name<<"solid_lowCover2_"<<name;
289 G4VSolid* solid_lowCover2 = sd_lowCover2(0, Name.str());
290 G4LogicalVolume* logical_lowCover2 = new G4LogicalVolume(solid_lowCover2, G4Material::GetMaterial("Aluminium"), name);
291
292 G4VisAttributes* vis = new G4VisAttributes();
293 vis->SetColor(G4Color(0.5,0.5,0.6));
294 //vis->SetForceWireframe(true);
295 logical_lowCover2->SetVisAttributes(vis);
296
297 return logical_lowCover2;
298}
299
300G4VSolid* PartProduce::sd_upFEE(double smallL, string name)
301{
302 G4Trd* solid_upFEE = new G4Trd(name, upFEE_xdown/2+smallL, upFEE_xup/2+smallL, upFEE_y/2+smallL, upFEE_y/2+smallL, upFEE_z/2+smallL);
303 return solid_upFEE;
304}
305
306G4LogicalVolume* PartProduce::lg_upFEE_pcb(string name)
307{
308 Name.str("");
309 Name<<"solid_upFEE_pcb_"<<name;
310 G4Trd* solid_upFEE_pcb = new G4Trd(Name.str(), upFEE_pcb_xdown/2, upFEE_pcb_xup/2, upFEE_pcb_y/2, upFEE_pcb_y/2, upFEE_pcb_z/2);
311 G4LogicalVolume* logical_upFEE_pcb = new G4LogicalVolume(solid_upFEE_pcb, G4Material::GetMaterial("insulationBoard"), name);
312
313 G4VisAttributes* vis = new G4VisAttributes();
314 vis->SetForceWireframe(true);
315 vis->SetColor(G4Color(0.2, 1, 0));
316 logical_upFEE_pcb->SetVisAttributes(vis);
317
318 return logical_upFEE_pcb;
319}
320
321G4LogicalVolume* PartProduce::lg_upFEE(string name)
322{
323 Name.str("");
324 Name<<"solid_upFEE_"<<name;
325 G4VSolid* solid_upFEE = sd_upFEE(0, Name.str());
326 G4LogicalVolume* logical_upFEE = new G4LogicalVolume(solid_upFEE, G4Material::GetMaterial("Air"), name);
327
328 Name.str("");
329 Name<<"solid_upFEE_out_"<<name;
330 G4VSolid* solid_upFEE_out = sd_upFEE(-1*smallL, Name.str());
331
332 Name.str("");
333 Name<<"solid_upFEE_in_"<<name;
334 G4Trd* solid_upFEE_in = new G4Trd(Name.str(), upFEE_xdown/2-FEE_thickness, upFEE_xup/2-FEE_thickness, upFEE_y/2, upFEE_y/2, upFEE_z/2-FEE_thickness);
335
336 Name.str("");
337 Name<<"solid_upFEE_box_"<<name;
338 G4Transform3D transform_upFEE(rot_dummy, G4ThreeVector(0, -1*FEE_thickness, 0));
339 G4SubtractionSolid* solid_upFEE_box = new G4SubtractionSolid(Name.str(), solid_upFEE_out, solid_upFEE_in, transform_upFEE);
340
341 Name.str("");
342 Name<<"logical_upFEE_box_"<<name;
343 G4LogicalVolume* logical_upFEE_box = new G4LogicalVolume(solid_upFEE_box, G4Material::GetMaterial("Aluminium"), Name.str());
344
345 Name.str("");
346 Name<<"logical_upFEE_pcb_"<<name;
347 G4LogicalVolume* logical_upFEE_pcb = lg_upFEE_pcb(Name.str());
348
349 Name.str("");
350 Name<<"physical_upFEE_pcb_"<<name;
351 new G4PVPlacement(0, G4ThreeVector(0,0,0), logical_upFEE_pcb, Name.str(), logical_upFEE, false, 0, checkOverlap);
352
353 Name.str("");
354 Name<<"physical_upFEE_box_"<<name;
355 new G4PVPlacement(0, G4ThreeVector(0,0,0), logical_upFEE_box, Name.str(), logical_upFEE, false, 0, checkOverlap);
356
357 G4VisAttributes* vis = new G4VisAttributes();
358 vis->SetColor(G4Color(0.2,0.,1));
359 //vis->SetForceWireframe(true);
360 logical_upFEE_box->SetVisAttributes(vis);
361
362 G4VisAttributes* vis1 = new G4VisAttributes();
363 vis1->SetVisibility(0);
364 logical_upFEE->SetVisAttributes(vis1);
365
366 return logical_upFEE;
367}
368
369
370G4VSolid* PartProduce::sd_sideFEE(double smallL, string name)
371{
372 G4Trd* solid_sideFEE = new G4Trd(name, sideFEE_x/2+smallL, sideFEE_x/2+smallL, sideFEE_y/2+smallL, sideFEE_y/2+smallL, sideFEE_z/2+smallL);
373 return solid_sideFEE;
374}
375
376G4LogicalVolume* PartProduce::lg_sideFEE_pcb(string name)
377{
378 Name.str("");
379 Name<<"solid_sideFEE_pcb_"<<name;
380 G4Trd* solid_sideFEE_pcb = new G4Trd(Name.str(), sideFEE_pcb_x/2, sideFEE_pcb_x/2, sideFEE_pcb_y/2, sideFEE_pcb_y/2, sideFEE_pcb_z/2);
381 G4LogicalVolume* logical_sideFEE_pcb = new G4LogicalVolume(solid_sideFEE_pcb, G4Material::GetMaterial("insulationBoard"), name);
382
383 G4VisAttributes* vis = new G4VisAttributes();
384 vis->SetColor(G4Color(0.2, 1, 0));
385 logical_sideFEE_pcb->SetVisAttributes(vis);
386
387 return logical_sideFEE_pcb;
388}
389
390G4LogicalVolume* PartProduce::lg_sideFEE(string name)
391{
392 Name.str("");
393 Name<<"solid_sideFEE_"<<name;
394 G4VSolid* solid_sideFEE = sd_sideFEE(0, Name.str());
395 G4LogicalVolume* logical_sideFEE = new G4LogicalVolume(solid_sideFEE, G4Material::GetMaterial("Air"), name);
396
397 Name.str("");
398 Name<<"solid_sideFEE_out_"<<name;
399 G4VSolid* solid_sideFEE_out = sd_sideFEE(-1*smallL, Name.str());
400
401 Name.str("");
402 Name<<"solid_sideFEE_in_"<<name;
403 G4Trd* solid_sideFEE_in = new G4Trd(Name.str(), sideFEE_x/2, sideFEE_x/2, sideFEE_y/2-FEE_thickness, sideFEE_y/2-FEE_thickness, sideFEE_z/2-FEE_thickness);
404
405 Name.str("");
406 Name<<"solid_sideFEE_box_"<<name;
407 G4Transform3D transform_sideFEE(rot_dummy, G4ThreeVector(FEE_thickness, 0, 0));
408 G4SubtractionSolid* solid_sideFEE_box = new G4SubtractionSolid(Name.str(), solid_sideFEE_out, solid_sideFEE_in, transform_sideFEE);
409
410 Name.str("");
411 Name<<"logical_sideFEE_box_"<<name;
412 G4LogicalVolume* logical_sideFEE_box = new G4LogicalVolume(solid_sideFEE_box, G4Material::GetMaterial("Aluminium"), Name.str());
413
414 Name.str("");
415 Name<<"logical_sideFEE_pcb_"<<name;
416 G4LogicalVolume* logical_sideFEE_pcb = lg_sideFEE_pcb(Name.str());
417
418 Name.str("");
419 Name<<"physical_sideFEE_pcb_"<<name;
420 new G4PVPlacement(0, G4ThreeVector(0,0,0), logical_sideFEE_pcb, Name.str(), logical_sideFEE, false, 0, checkOverlap);
421
422 Name.str("");
423 Name<<"physical_sideFEE_box_"<<name;
424 new G4PVPlacement(0, G4ThreeVector(0,0,0), logical_sideFEE_box, Name.str(), logical_sideFEE, false, 0, checkOverlap);
425
426 G4VisAttributes* vis = new G4VisAttributes();
427 vis->SetColor(G4Color(0.2,0.,1));
428 //vis->SetForceWireframe(true);
429 logical_sideFEE_box->SetVisAttributes(vis);
430
431 G4VisAttributes* vis1 = new G4VisAttributes();
432 vis1->SetVisibility(0);
433 logical_sideFEE->SetVisAttributes(vis1);
434
435 return logical_sideFEE;
436}
437
438
439G4VSolid* PartProduce::sd_castingDie_outline(double smallL, string name)
440{
441 Name.str("");
442 Name<<name<<"_1";
443 //We make Z larger by 10*smallL to make a successful connection with the cover
444 G4Trd* solid_castingDie_outline_1 = new G4Trd(Name.str(), castingDie_x/2+smallL, castingDie_x/2+smallL, castingDie_y/2+smallL, castingDie_y/2+smallL, castingDie_z/2+smallL*10);
445 Name.str("");
446 Name<<name<<"_2";
447 G4Tubs* solid_castingDie_outline_2 = new G4Tubs(Name.str(), 0, castingDie_addr+smallL, castingDie_z/2+smallL*10, 0*degree, 360*degree);
448
449 //We make a 0.1*mm for successful connection
450 G4Transform3D transform_castingDie_outline_1(rot_dummy, G4ThreeVector(castingDie_x/2-0.1*mm,0,0));
451 Name.str("");
452 Name<<name<<"_3";
453 G4UnionSolid* solid_castingDie_outline_3 = new G4UnionSolid(Name.str(), solid_castingDie_outline_1, solid_castingDie_outline_2, transform_castingDie_outline_1);
454
455 G4Transform3D transform_castingDie_outline_2(rot_dummy, G4ThreeVector(-1*castingDie_x/2+0.1*mm,0,0));
456 G4UnionSolid* solid_castingDie_outline = new G4UnionSolid(name, solid_castingDie_outline_3, solid_castingDie_outline_2, transform_castingDie_outline_2);
457 return solid_castingDie_outline;
458}
459
460G4LogicalVolume* PartProduce::lg_castingDie(string name)
461{
462 Name.str("");
463 Name<<"solid_castingDie_outline_"<<name;
464 G4VSolid* solid_castingDie_outline = sd_castingDie_outline(0, Name.str());
465
466 Name.str("");
467 Name<<"solid_castingDie_subtract_"<<name;
468 G4Trd* solid_castingDie_subtract = new G4Trd(Name.str(), castingDie_subtractx/2, castingDie_subtractx/2, castingDie_y, castingDie_y, castingDie_z/2);
469
470 G4Transform3D transform_castingDie(rot_dummy, G4ThreeVector(0,0,-1*castingDie_subtract_posz));
471 Name.str("");
472 Name<<"solid_castingDie_"<<name;
473 G4SubtractionSolid* solid_castingDie = new G4SubtractionSolid(Name.str(), solid_castingDie_outline, solid_castingDie_subtract, transform_castingDie);
474 G4LogicalVolume* logical_castingDie = new G4LogicalVolume(solid_castingDie, G4Material::GetMaterial("Aluminium"), name);
475
476 G4VisAttributes* vis = new G4VisAttributes();
477 vis->SetColor(G4Color(0.2,0.,1));
478 //vis->SetForceSolid(true);
479 //vis->SetForceWireframe(true);
480 logical_castingDie->SetVisAttributes(vis);
481
482 return logical_castingDie;
483}
484
485G4LogicalVolume* PartProduce::lg_container(int flag, string name)
486{
487 Name.str("");
488 Name<<"solid_containerOut_"<<name;
489 G4VSolid* solid_containerOut = sd_containerOut(smallL, Name.str());
490
491 //add top cover
492 Name.str("");
493 Name<<"solid_upCover_"<<name;
494 G4VSolid* solid_upCover = sd_upCover(smallL, Name.str());
495 G4ThreeVector translation_upCover(0, (containerOut_y+upCover_y)/2, (upCover_z-containerOut_z)/2-upCover_posz);
496 G4Transform3D transform_upCover(rot_dummy, translation_upCover);
497 Name.str("");
498 Name<<"solid_container_"<<name<<"_1";
499 G4UnionSolid* solid_container_1 = new G4UnionSolid(Name.str(), solid_containerOut, solid_upCover, transform_upCover);
500
501 //add FEE on the top cover
502 Name.str("");
503 Name<<"solid_upFEE_"<<name;
504 G4VSolid* solid_upFEE = sd_upFEE(smallL, Name.str());
505 G4ThreeVector translation_upFEE(0, containerOut_y/2+upCover_y+upFEE_y/2, upCover_z-upFEE_posz-upFEE_z/2-upCover_posz-containerOut_z/2);
506 G4Transform3D transform_upFEE(rot_dummy, translation_upFEE);
507 Name.str("");
508 Name<<"solid_container_"<<name<<"_2";
509 G4UnionSolid* solid_container_2 = new G4UnionSolid(Name.str(), solid_container_1, solid_upFEE, transform_upFEE);
510
511 //add FEE at the side
512 Name.str("");
513 Name<<"solid_sideFEE_"<<name;
514 G4VSolid* solid_sideFEE = sd_sideFEE(smallL, Name.str());
515
516 double angle_containerFrameSide = atan((containerOut_xup-containerOut_xdown)/2/containerOut_z) *rad;
517 double l_containerFrameSide = containerOut_z/cos(angle_containerFrameSide);
518 double x_sideFEE = (l_containerFrameSide/2-sideFEE_posl)*sin(angle_containerFrameSide)+(containerOut_xup+containerOut_xdown)/4+sideFEE_x/2*cos(angle_containerFrameSide);
519 double z_sideFEE = (l_containerFrameSide/2-sideFEE_posl)*cos(angle_containerFrameSide)-sideFEE_x/2*sin(angle_containerFrameSide);
520 G4ThreeVector translation_sideFEE_left(-x_sideFEE, 0, z_sideFEE);
521 G4RotationMatrix rot_sideFEE_left;
522 rot_sideFEE_left.rotateY(-angle_containerFrameSide);
523 G4Transform3D transform_sideFEE_left(rot_sideFEE_left, translation_sideFEE_left);
524 Name.str("");
525 Name<<"solid_container_"<<name<<"_3";
526 G4UnionSolid* solid_container_3 = new G4UnionSolid(Name.str(), solid_container_2, solid_sideFEE, transform_sideFEE_left);
527
528 G4ThreeVector translation_sideFEE_right(x_sideFEE, 0, z_sideFEE);
529 G4RotationMatrix rot_sideFEE_right;
530 rot_sideFEE_right.rotateY(angle_containerFrameSide);
531 G4Transform3D transform_sideFEE_right(rot_sideFEE_right, translation_sideFEE_right);
532 Name.str("");
533 Name<<"solid_container_"<<name<<"_4";
534 G4UnionSolid* solid_container_4 = new G4UnionSolid(Name.str(), solid_container_3, solid_sideFEE, transform_sideFEE_right);
535
536 //add casting die
537 Name.str("");
538 Name<<"solid_castingDie_"<<name;
539 G4VSolid* solid_castingDie = sd_castingDie_outline(smallL, Name.str());
540
541 G4RotationMatrix rot_castingDie;
542 rot_castingDie.rotateX(90*deg);
543 G4ThreeVector translation_castingDie_1(0, containerOut_y/2+upCover_y+castingDie_z/2, -containerOut_z/2+upCover_posz+castingDie_posz1);
544 G4Transform3D transform_castingDie_1(rot_castingDie, translation_castingDie_1);
545 Name.str("");
546 Name<<"solid_container_"<<name<<"_5";
547 G4UnionSolid* solid_container_5 = new G4UnionSolid(Name.str(), solid_container_4, solid_castingDie, transform_castingDie_1);
548
549 G4ThreeVector translation_castingDie_2(0, containerOut_y/2+upCover_y+castingDie_z/2, -containerOut_z/2+upCover_posz+castingDie_posz2);
550 G4Transform3D transform_castingDie_2(rot_castingDie, translation_castingDie_2);
551 Name.str("");
552 Name<<"solid_container_"<<name<<"_6";
553 G4UnionSolid* solid_container_6 = new G4UnionSolid(Name.str(), solid_container_5, solid_castingDie, transform_castingDie_2);
554
555 //add bottom cover
556 G4VSolid* solid_lowCover;
557 Name.str("");
558 Name<<"solid_lowCover_"<<name;
559 double z_lowCover;
560 if(flag==0)
561 {
562 z_lowCover = (lowCover1_z-containerOut_z)/2-lowCover1_posz;
563 solid_lowCover = sd_lowCover1(smallL, Name.str());
564 }
565 else if(flag==1)
566 {
567 z_lowCover = (lowCover2_z-containerOut_z)/2-lowCover2_posz;
568 solid_lowCover = sd_lowCover2(smallL, Name.str());
569 }
570 else G4cout<<"!!!!!!!! Wrong lower Board !!!!!!!!!"<<G4endl;
571
572 G4ThreeVector translation_lowCover(0, -1*(containerOut_y+upCover_y)/2, z_lowCover);
573 G4Transform3D transform_lowCover(rot_dummy, translation_lowCover);
574 Name.str("");
575 Name<<"solid_container_"<<name;
576 G4UnionSolid* solid_container = new G4UnionSolid(Name.str(), solid_container_6, solid_lowCover, transform_lowCover);
577 G4LogicalVolume* logical_container = new G4LogicalVolume(solid_container, G4Material::GetMaterial("Air"), name);
578
579 G4VisAttributes* vis = new G4VisAttributes();
580 vis->SetColor(G4Color(0.5,0.5,0.6));
581 vis->SetForceWireframe(true);
582 logical_container->SetVisAttributes(vis);
583 //logical_container->SetVisAttributes(G4VisAttributes::Invisible);
584
585 return logical_container;
586}
587
588
589G4LogicalVolume* PartProduce::lg_gasContainer(string name)
590{
591 Name.str("");
592 Name<<"solid_gasContainer_"<<name;
593 G4VSolid* solid_gasContainer = sd_containerIn(0, Name.str());
594 G4LogicalVolume* logical_gasContainer = new G4LogicalVolume(solid_gasContainer, G4Material::GetMaterial("MRPCGas"), name);
595
596 G4VisAttributes* vis = new G4VisAttributes();
597 //vis->SetVisibility(0);
598 vis->SetForceWireframe(true);
599 logical_gasContainer->SetVisAttributes(vis);
600
601 return logical_gasContainer;
602}
603
604
605G4LogicalVolume* PartProduce::lg_bareChamber(string name)
606{
607 //A trapezoid to contain the bare chamber
608 double xdown = pcbBoard_xdown;
609 double xup = pcbBoard_xup;
610 double y = honeyComb_y*2+tape_mrpc_y*2+pcbBoard_y0*2+pcbBoard_y1+mylar_y*4+glass0_y*4+glass1_y*10+gasLayer_y*12;
611 double z = pcbBoard_z;
612 Name.str("");
613 Name<<"solid_bareChamber_"<<name;
614 G4Trd* solid_bareChamber = new G4Trd(Name.str(), xdown/2.+smallL, xup/2.+smallL, y/2.+smallL, y/2.+smallL, z/2.+smallL);
615 G4LogicalVolume* logical_bareChamber = new G4LogicalVolume(solid_bareChamber, G4Material::GetMaterial("MRPCGas"), name);
616
617 G4VisAttributes* vis = new G4VisAttributes();
618 //vis->SetColor(G4Color(0.3, 0.3, 0.3));
619 vis->SetVisibility(0);
620 //vis->SetForceWireframe(true);
621 logical_bareChamber->SetVisAttributes(vis);
622
623 return logical_bareChamber;
624}
625
626
627G4LogicalVolume* PartProduce::lg_honeyComb(string name)
628{
629 Name.str("");
630 Name<<"solid_honeyComb_"<<name;
631 G4Trd* solid_honeyComb = new G4Trd(Name.str(), honeyComb_xdown/2, honeyComb_xup/2, honeyComb_y/2, honeyComb_y/2, honeyComb_z/2);
632 G4LogicalVolume* logical_honeyComb = new G4LogicalVolume(solid_honeyComb, G4Material::GetMaterial("honeycombCore"), name);
633
634 //Two surfaces
635 Name.str("");
636 Name<<"solid_honeyComb_surface_"<<name;
637 G4Trd* solid_honeyComb_surface = new G4Trd(Name.str(), honeyComb_xdown/2, honeyComb_xup/2, honeyComb_surface_y/2, honeyComb_surface_y/2, honeyComb_z/2);
638
639 Name.str("");
640 Name<<"logical_honeyComb_surface_"<<name;
641 G4LogicalVolume* logical_honeyComb_surface = new G4LogicalVolume(solid_honeyComb_surface, G4Material::GetMaterial("insulationBoard"), Name.str());
642
643 Name.str("");
644 Name<<"physical_honeyComb_surface_"<<name<<"_0";
645 new G4PVPlacement(0, G4ThreeVector(0,(honeyComb_y-honeyComb_surface_y)/2.-smallL,0), logical_honeyComb_surface, Name.str(), logical_honeyComb, false, 0, checkOverlap);
646
647 Name.str("");
648 Name<<"physical_honeyComb_surface_"<<name<<"_1";
649 new G4PVPlacement(0, G4ThreeVector(0,-(honeyComb_y-honeyComb_surface_y)/2.+smallL,0), logical_honeyComb_surface, Name.str(), logical_honeyComb, false, 0, checkOverlap);
650
651 G4VisAttributes* vis1 = new G4VisAttributes();
652 vis1->SetColor(G4Color::Green());
653 //vis1->SetForceWireframe(true);
654 logical_honeyComb_surface->SetVisAttributes(vis1);
655
656 G4VisAttributes* vis = new G4VisAttributes();
657 vis->SetColor(G4Color(0.55, 0.3, 0.3));
658 //vis->SetForceWireframe(true);
659 logical_honeyComb->SetVisAttributes(vis);
660
661 return logical_honeyComb;
662}
663
664G4LogicalVolume* PartProduce::lg_tape_mrpc(string name)
665{
666 Name.str("");
667 Name<<"solid_tape_mrpc_"<<name;
668 G4Trd* solid_tape_mrpc= new G4Trd(Name.str(),tape_mrpc_xdown/2,tape_mrpc_xup/2,tape_mrpc_y/2,tape_mrpc_y/2,tape_mrpc_z/2);
669 G4LogicalVolume* logical_tape_mrpc = new G4LogicalVolume(solid_tape_mrpc,G4Material::GetMaterial("PET"), name);
670
671 G4VisAttributes* vis = new G4VisAttributes();
672 vis->SetColor(G4Color(1, 1, 0));
673 //vis->SetForceWireframe(true);
674 //vis->SetForceSolid(true);
675 logical_tape_mrpc->SetVisAttributes(vis);
676
677 return logical_tape_mrpc;
678}
679
680G4LogicalVolume* PartProduce::lg_pcbBoard(G4int flag, string name) //flag:0:out; 1:inside
681{
682 double pcbBoard_y;
683 if(flag==0) pcbBoard_y=pcbBoard_y0;
684 else pcbBoard_y=pcbBoard_y1;
685
686 Name.str("");
687 Name<<"solid_pcbBoard_"<<name;
688 G4Trd* solid_pcbBoard = new G4Trd(Name.str(),pcbBoard_xdown/2., pcbBoard_xup/2., pcbBoard_y/2., pcbBoard_y/2.,pcbBoard_z/2.);
689 G4LogicalVolume* logical_pcbBoard = new G4LogicalVolume(solid_pcbBoard,G4Material::GetMaterial("insulationBoard"), name);
690
691 G4VisAttributes* vis = new G4VisAttributes();
692 vis->SetColor(G4Color(0.2, 1, 0));
693 //vis->SetForceSolid(true);
694 //vis->SetForceWireframe(true);
695 logical_pcbBoard->SetVisAttributes(vis);
696
697 return logical_pcbBoard;
698}
699
700G4AssemblyVolume* PartProduce::lg_strip(string name)
701{
702 const G4int no=12;
703 G4Trd* solid_strip[no];
704 G4LogicalVolume* logical_strip[no];
705 G4VisAttributes* vis = new G4VisAttributes();
706 vis->SetColor(G4Color(1, 0, 0));
707 vis->SetForceSolid(1);
708 for(G4int i=0; i<no; i++)
709 {
710 Name.str("");
711 Name<<"solid_strip_"<<name<<"_"<<i;
712 solid_strip[i] = new G4Trd(Name.str(), strip_x[i]/2., strip_x[i]/2., strip_y/2., strip_y/2., strip_z/2.);
713 Name.str("");
714 Name<<name<<"_"<<i;
715 logical_strip[i] = new G4LogicalVolume(solid_strip[i], G4Material::GetMaterial("Copper"), Name.str());
716 logical_strip[i]->SetVisAttributes(vis);
717 }
718
719 G4AssemblyVolume* logical_strip_unified = new G4AssemblyVolume();
720 G4ThreeVector translation_strip;
721 G4Transform3D transform_strip;
722 for(G4int i=0; i<no; i++)
723 {
724 translation_strip.set(0, 0, (i-5.5)*(strip_z+strip_gap));
725 transform_strip = G4Transform3D(rot_dummy, translation_strip);
726 logical_strip_unified->AddPlacedVolume(logical_strip[i], transform_strip);
727 }
728
729 return logical_strip_unified;
730}
731
732G4LogicalVolume* PartProduce::lg_mylar(string name)
733{
734 Name.str("");
735 Name<<"solid_mylar_"<<name;
736 G4Trd* solid_mylar = new G4Trd(Name.str(),mylar_xdown/2.,mylar_xup/2.,mylar_y/2.,mylar_y/2.,mylar_z/2.);
737 G4LogicalVolume* logical_mylar = new G4LogicalVolume(solid_mylar,G4Material::GetMaterial("PET"), name);
738
739 G4VisAttributes* vis = new G4VisAttributes();
740 vis->SetColor(G4Color(1, 0., 0.7));
741 //vis->SetForceSolid(true);
742 logical_mylar->SetVisAttributes(vis);
743
744 return logical_mylar;
745}
746
747G4LogicalVolume* PartProduce::lg_glass(G4int flag, string name) //flag:0:out; 1:inside
748{
749 double glass_xdown;
750 double glass_xup;
751 double glass_y;
752 double glass_z;
753 if(flag==0)
754 {
755 glass_xdown = glass0_xdown;
756 glass_xup = glass0_xup;
757 glass_y = glass0_y;
758 glass_z = glass0_z;
759 }
760 else
761 {
762 glass_xdown = glass1_xdown;
763 glass_xup = glass1_xup;
764 glass_y = glass1_y;
765 glass_z = glass1_z;
766 }
767
768 Name.str("");
769 Name<<"solid_glass_"<<name;
770 G4Trd* solid_glass = new G4Trd(Name.str(), glass_xdown/2.,glass_xup/2. ,glass_y/2.,glass_y/2.,glass_z/2.);
771 G4LogicalVolume* logical_glass = new G4LogicalVolume(solid_glass,G4Material::GetMaterial("SiO2"), name);
772
773 G4VisAttributes* vis = new G4VisAttributes();
774 vis->SetColor(G4Color(0.2, 0.4, 1));
775 //vis->SetForceSolid(true);
776 logical_glass->SetVisAttributes(vis);
777
778 return logical_glass;
779}
780
781G4LogicalVolume* PartProduce::lg_gasLayer(string name)
782{
783 Name.str("");
784 Name<<"solid_gasLayer_"<<name;
785 G4Trd* solid_gasLayer = new G4Trd(Name.str(),gasLayer_xdown/2.,gasLayer_xup/2.,gasLayer_y/2.,gasLayer_y/2.,gasLayer_z/2.);
786 G4LogicalVolume* logical_gasLayer = new G4LogicalVolume(solid_gasLayer,G4Material::GetMaterial("MRPCGas"), name);
787
788 G4VisAttributes* vis = new G4VisAttributes();
789 vis->SetColor(G4Color::Blue());
790 //vis->SetForceSolid(true);
791 //logical_gasLayer->SetVisAttributes(vis);
792
793 return logical_gasLayer;
794}
795
796G4LogicalVolume* PartProduce::lg_bracket(string name)
797{
798 Name.str("");
799 Name<<"solid_bracket_"<<name<<"_1";
800 G4Tubs* solid_bracket_1 = new G4Tubs(Name.str(), 0, bracket_r, bracket_z/2, 0*degree, 360*degree);
801
802 Name.str("");
803 Name<<"solid_bracket_"<<name<<"_2";
804 G4Trd* solid_bracket_2 = new G4Trd(Name.str(), bracket_x/2, bracket_x/2, bracket_x/2, bracket_x/2, bracket_y/2);
805
806 G4Transform3D transform_bracket(rot_dummy, G4ThreeVector(0, 0, (bracket_y+bracket_z)/2));
807 Name.str("");
808 Name<<"solid_bracket_"<<name;
809 G4UnionSolid* solid_bracket = new G4UnionSolid(Name.str(), solid_bracket_1, solid_bracket_2, transform_bracket);
810 G4LogicalVolume* logical_bracket = new G4LogicalVolume(solid_bracket, G4Material::GetMaterial("Nylon"), name);
811
812 G4VisAttributes* vis = new G4VisAttributes();
813 vis->SetColor(G4Color(0.3, 0.3, 0.3));
814 //vis->SetForceSolid(true);
815 logical_bracket->SetVisAttributes(vis);
816
817 return logical_bracket;
818}
819
820G4LogicalVolume* PartProduce::lg_upStopBlock(string name)
821{
822 Name.str("");
823 Name<<"solid_upStopBlock_"<<name<<"_1";
824 G4Trd* solid_upStopBlock_1 = new G4Trd(Name.str(), upStopBlock_x/2, upStopBlock_x/2, upStopBlock_y/2, upStopBlock_y/2, upStopBlock_z/2);
825
826 Name.str("");
827 Name<<"solid_upStopBlock_"<<name<<"_2";
828 G4Tubs* solid_upStopBlock_2 = new G4Tubs(Name.str(), 0, upStopBlock_subtractr+smallL, upStopBlock_x/2+smallL, 0*degree, 360*degree);
829
830 G4RotationMatrix rot_upStopBlock;
831 //Rotation outside of the transform3D. In transform3D the 3 angles are Euler
832 rot_upStopBlock.rotateY(90*degree);
833 G4Transform3D transform_upStopBlock(rot_upStopBlock, G4ThreeVector(0,0,(upStopBlock_z-upStopBlock_subtractr)/2-upStopBlock_subtractposz));
834
835 Name.str("");
836 Name<<"solid_upStopBlock_"<<name;
837 G4SubtractionSolid* solid_upStopBlock = new G4SubtractionSolid(Name.str(), solid_upStopBlock_1, solid_upStopBlock_2, transform_upStopBlock);
838 G4LogicalVolume* logical_upStopBlock = new G4LogicalVolume(solid_upStopBlock, G4Material::GetMaterial("Nylon"), name);
839
840 G4VisAttributes* vis = new G4VisAttributes();
841 vis->SetColor(G4Color(0.3, 0.3, 0.3));
842 //vis->SetForceSolid(true);
843 logical_upStopBlock->SetVisAttributes(vis);
844
845 return logical_upStopBlock;
846}
847
848G4LogicalVolume* PartProduce::lg_sideStopBlock(string name)
849{
850 Name.str("");
851 Name<<"solid_sideStopBlock_"<<name<<"_1";
852 G4Trd* solid_sideStopBlock_1 = new G4Trd(Name.str(), sideStopBlock_x/2, sideStopBlock_x/2, sideStopBlock_y/2, sideStopBlock_y/2, sideStopBlock_z/2);
853
854 Name.str("");
855 Name<<"solid_sideStopBlock_"<<name<<"_2";
856 G4Trd* solid_sideStopBlock_2 = new G4Trd(Name.str(), (sideStopBlock_x-sideStopBlock_thickness)/2+smallL, (sideStopBlock_x-sideStopBlock_thickness)/2+smallL, sideStopBlock_y/2+smallL, sideStopBlock_y/2+smallL, sideStopBlock_z/2-sideStopBlock_thickness);
857
858 G4Transform3D transform_upStopBlock(rot_dummy, G4ThreeVector(sideStopBlock_thickness/2, 0, 0));
859
860 Name.str("");
861 Name<<"solid_sideStopBlock_"<<name;
862 G4SubtractionSolid* solid_sideStopBlock = new G4SubtractionSolid(Name.str(), solid_sideStopBlock_1, solid_sideStopBlock_2, transform_upStopBlock);
863 G4LogicalVolume* logical_sideStopBlock = new G4LogicalVolume(solid_sideStopBlock, G4Material::GetMaterial("Nylon"), name);
864
865 G4VisAttributes* vis = new G4VisAttributes();
866 vis->SetColor(G4Color(0.3, 0.3, 0.3));
867 //vis->SetForceSolid(true);
868 logical_sideStopBlock->SetVisAttributes(vis);
869
870 return logical_sideStopBlock;
871}
872
double sin(const BesAngle a)
double cos(const BesAngle a)
G4double smallL
Definition: PartProduce.cc:19
G4RotationMatrix rot_dummy(0 *deg, 0 *deg, 0 *deg)
bool checkOverlap
Definition: PartProduce.cc:21
std::ostringstream Name
Definition: PartProduce.cc:22
double Get(std::string key)
static BesTofGeoParameter * GetInstance()
G4LogicalVolume * lg_sideFEE(string name="")
Definition: PartProduce.cc:390
void IniParam()
Definition: PartProduce.cc:34
G4LogicalVolume * lg_mylar(string name="")
Definition: PartProduce.cc:732
G4LogicalVolume * lg_lowCover1(string name="")
Definition: PartProduce.cc:270
G4LogicalVolume * lg_glass(G4int flag, string name="")
Definition: PartProduce.cc:747
G4VSolid * sd_containerIn(double smallL=0, string name="")
Definition: PartProduce.cc:198
G4LogicalVolume * lg_container(int flag, string name="")
Definition: PartProduce.cc:485
G4VSolid * sd_sideFEE(double smallL=0, string name="")
Definition: PartProduce.cc:370
G4VSolid * sd_upFEE(double smallL=0, string name="")
Definition: PartProduce.cc:300
G4VSolid * sd_lowCover2(double smallL=0, string name="")
Definition: PartProduce.cc:249
G4LogicalVolume * lg_gasContainer(string name="")
Definition: PartProduce.cc:589
G4LogicalVolume * lg_sideStopBlock(string name="")
Definition: PartProduce.cc:848
G4VSolid * sd_upCover(double smallL=0, string name="")
Definition: PartProduce.cc:228
G4AssemblyVolume * lg_strip(string name="")
Definition: PartProduce.cc:700
G4LogicalVolume * lg_upFEE_pcb(string name="")
Definition: PartProduce.cc:306
G4LogicalVolume * lg_honeyComb(string name="")
Definition: PartProduce.cc:627
G4LogicalVolume * lg_sideFEE_pcb(string name="")
Definition: PartProduce.cc:376
G4LogicalVolume * lg_containerFrame(string name="")
Definition: PartProduce.cc:204
G4VSolid * sd_lowCover1(double smallL=0, string name="")
Definition: PartProduce.cc:234
G4LogicalVolume * lg_lowCover2(string name="")
Definition: PartProduce.cc:285
G4LogicalVolume * lg_pcbBoard(G4int flag, string name="")
Definition: PartProduce.cc:680
G4LogicalVolume * lg_bracket(string name="")
Definition: PartProduce.cc:796
G4LogicalVolume * lg_bareChamber(string name="")
Definition: PartProduce.cc:605
G4LogicalVolume * lg_upStopBlock(string name="")
Definition: PartProduce.cc:820
G4LogicalVolume * lg_tape_mrpc(string name="")
Definition: PartProduce.cc:664
G4VSolid * sd_containerOut(double smallL=0, string name="")
Definition: PartProduce.cc:192
G4LogicalVolume * lg_gasLayer(string name="")
Definition: PartProduce.cc:781
G4LogicalVolume * lg_castingDie(string name="")
Definition: PartProduce.cc:460
G4LogicalVolume * lg_upFEE(string name="")
Definition: PartProduce.cc:321
G4VSolid * sd_castingDie_outline(double smallL=0, string name="")
Definition: PartProduce.cc:439
G4LogicalVolume * lg_upCover(string name="")
Definition: PartProduce.cc:255