BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
BesSCM Class Reference

#include <BesSCM.hh>

Inheritance diagram for BesSCM:

Public Member Functions

 BesSCM ()
virtual ~BesSCM ()
void Construct (G4LogicalVolume *logicbes)
void DefineMaterial ()
Public Member Functions inherited from BesSubdetector
 BesSubdetector ()
virtual ~BesSubdetector ()
G4LogicalVolume * FindLogicalVolume (const G4String &vn)
 BesSubdetector ()
virtual ~BesSubdetector ()
G4LogicalVolume * FindLogicalVolume (const G4String &vn)
 BesSubdetector ()
virtual ~BesSubdetector ()
G4LogicalVolume * FindLogicalVolume (const G4String &vn)

Additional Inherited Members

Protected Attributes inherited from BesSubdetector
SAXProcessor m_sxp
ProcessingConfigurator m_config

Detailed Description

Definition at line 21 of file BesSCM.hh.

Constructor & Destructor Documentation

◆ BesSCM()

BesSCM::BesSCM ( )

Definition at line 30 of file BesSCM.cc.

30 {
31 scmPar = new BesSCMParameter();
32 scmPar->ReadData();
33 for ( G4int i = 0; i < 3; i++ )
34 {
35 innerCryo[i] = scmPar->getInnerCryo( i );
36 l1Adia[i] = scmPar->getL1Adia( i );
37 innerShield[i] = scmPar->getInnerShield( i );
38 l2Adia[i] = scmPar->getL2Adia( i );
39 outerShield[i] = scmPar->getOuterShield( i );
40 l3Adia[i] = scmPar->getL3Adia( i );
41 l1insu[i] = scmPar->getL1insu( i );
42 coil[i] = scmPar->getCoil( i );
43 l2insu[i] = scmPar->getL2insu( i );
44 supp[i] = scmPar->getSupp( i );
45 l4Adia[i] = scmPar->getL4Adia( i );
46 outerCryo[i] = scmPar->getOuterCryo( i );
47 }
48 for ( G4int i = 0; i < 5; i++ )
49 {
50 endShield[i] = scmPar->getEndShield( i );
51 endCoil[i] = scmPar->getEndCoil( i );
52 endCryo[i] = scmPar->getEndCryo( i );
53 rein[i] = scmPar->getRein( i );
54 }
55
56 for ( G4int i = 0; i < 6; i++ )
57 {
58 pipe1[i] = scmPar->getPipe1( i );
59 pipe2[i] = scmPar->getPipe2( i );
60 pipe3[i] = scmPar->getPipe3( i );
61 }
62
63 for ( G4int i = 0; i < 13; i++ ) { hole[i] = scmPar->getHole( i ); }
64
65 logicalinnCryo = 0;
66 physicalinnCryo = 0;
67
68 logicall1Adia = 0;
69 physicall1Adia = 0;
70
71 logicalinnShield = 0;
72 physicalinnShield = 0;
73
74 logicall2Adia = 0;
75 physicall2Adia = 0;
76
77 logicaloutShield = 0;
78 physicaloutShield = 0;
79
80 logicall3Adia = 0;
81 physicall3Adia = 0;
82
83 logicalendShield = 0;
84 physicalendShield1 = 0;
85 physicalendShield2 = 0;
86
87 logicall1insu = 0;
88 physicall1insu = 0;
89
90 logicalcoil = 0;
91 physicalcoil = 0;
92
93 logicall2insu = 0;
94 physicall2insu = 0;
95
96 logicalsupp = 0;
97 physicalsupp = 0;
98
99 logicall4Adia = 0;
100 physicall4Adia = 0;
101
102 logicalendCoil = 0;
103 physicalendCoil1 = 0;
104 physicalendCoil2 = 0;
105
106 logicalouterCryo = 0;
107 physicalouterCryo = 0;
108
109 logicalendCryo = 0;
110 physicalendCryo1 = 0;
111 physicalendCryo2 = 0;
112
113 logicalrein = 0;
114 physicalrein1 = 0;
115 physicalrein2 = 0;
116
117 logicalpipe1 = 0;
118 physicalpipe1 = 0;
119
120 logicalpipe2 = 0;
121 physicalpipe2 = 0;
122
123 logicalpipe3 = 0;
124 physicalpipe3 = 0;
125
126 liquidhelium = 0;
127 Steel = 0;
128 fibre = 0;
129}

◆ ~BesSCM()

virtual BesSCM::~BesSCM ( )
inlinevirtual

Definition at line 24 of file BesSCM.hh.

24{ ; }

Member Function Documentation

◆ Construct()

void BesSCM::Construct ( G4LogicalVolume * logicbes)
virtual

Implements BesSubdetector.

Definition at line 176 of file BesSCM.cc.

176 {
178
179 G4RotationMatrix* xRot = new G4RotationMatrix;
180 xRot->rotateX( 90 * deg );
181 // the chimney of SCM from outer to inner
182 G4Tubs* hole1 = new G4Tubs( "hole1", hole[0], hole[1], hole[2] / 2, 0, 360 );
183 G4LogicalVolume* logicalhole1 = new G4LogicalVolume( hole1, Steel, "logicalhole1" );
184 // G4VPhysicalVolume* physicalhole1 =
185 new G4PVPlacement( xRot, G4ThreeVector( 0, ( outerCryo[1] + hole[2] / 2 ) * mm, 1640 * mm ),
186 logicalhole1, "physicalhole1", logicalbes, false, 0 );
187
188 G4Tubs* hole2 = new G4Tubs( "hole2", hole[3], hole[4], hole[5] / 2, 0, 360 );
189 G4LogicalVolume* logicalhole2 = new G4LogicalVolume( hole2, Steel, "logicalhole2" );
190 // G4VPhysicalVolume* physicalhole2 =
191 new G4PVPlacement(
192 xRot, G4ThreeVector( 0, ( outerCryo[1] + hole[2] + hole[5] / 2 ) * mm, 1640 * mm ),
193 logicalhole2, "physicalhole2", logicalbes, false, 0 );
194
195 G4Tubs* hole3 = new G4Tubs( "hole3", hole[6], hole[7], hole[12] / 2, 0, 360 );
196 G4LogicalVolume* logicalhole3 = new G4LogicalVolume( hole3, Steel, "logicalhole3" );
197 // G4VPhysicalVolume* physicalhole3 =
198 new G4PVPlacement(
199 xRot, G4ThreeVector( 0, ( outerCryo[1] + hole[2] + hole[12] / 2 ) * mm, 1640 * mm ),
200 logicalhole3, "physicalhole3", logicalbes, false, 0 );
201
202 G4Tubs* hole4 = new G4Tubs( "hole4", hole[8], hole[9], hole[12] / 2, 0, 360 );
203 G4LogicalVolume* logicalhole4 =
204 new G4LogicalVolume( hole4, G4Material::GetMaterial( "Aluminium" ), "logicalhole4" );
205 // G4VPhysicalVolume* physicalhole4 =
206 new G4PVPlacement(
207 xRot,
208 G4ThreeVector( 0, ( l3Adia[1] + pipe2[1] + pipe2[4] + hole[12] / 2 ) * mm, 1640 * mm ),
209 logicalhole4, "physicalhole4", logicalbes, false, 0 );
210
211 G4Box* hole5 = new G4Box( "hole5", hole[10] / 2, hole[11] / 2, hole[12] / 2 );
212 G4LogicalVolume* logicalhole5 =
213 new G4LogicalVolume( hole5, G4Material::GetMaterial( "Aluminium" ), "logicalhole5" );
214 // G4VPhysicalVolume* physicalhole5 =
215 new G4PVPlacement(
216 xRot,
217 G4ThreeVector( 0, ( l3Adia[1] + pipe2[1] + pipe2[4] + hole[12] / 2 ) * mm, 1640 * mm ),
218 logicalhole5, "physicalhole5", logicalbes, false, 0 );
219
220 G4Tubs* solidSCM_tmp = new G4Tubs( "solidSCM_tmp", innerCryo[0] * mm, 1700 * mm,
221 ( outerCryo[2] + 2 * endCryo[2] ) / 2.0 * mm, 0, 360 );
222 G4Tubs* hole_tmp1 =
223 new G4Tubs( "hole_tmp1", 0, hole[1], ( 1700. - 1617.5 + 2 ) / 2. * mm, 0, 360 );
224 G4SubtractionSolid* solidSCM =
225 new G4SubtractionSolid( "solidSCM", solidSCM_tmp, hole_tmp1, xRot,
226 G4ThreeVector( 0, ( 1700. + 1617.5 + 2 ) / 2 * mm, 1640 * mm ) );
227 logicalSCM = new G4LogicalVolume( solidSCM, G4Material::GetMaterial( "Air" ), "logicalSCM" );
228 physicalSCM = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicalSCM, "physicalSCM",
229 logicalbes, false, 0 );
230
231 G4Tubs* tub1 = new G4Tubs( "tub1", innerCryo[0] * mm, innerCryo[1] * mm,
232 innerCryo[2] / 2.0 * mm, 0, 360 );
233 logicalinnCryo = new G4LogicalVolume( tub1, Steel, "logicalinnCryo" );
234 physicalinnCryo = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicalinnCryo,
235 "physicalinnCryo", logicalSCM, false, 0 );
236
237 G4Tubs* tub2 =
238 new G4Tubs( "tub2", l1Adia[0] * mm, l1Adia[1] * mm, l1Adia[2] / 2.0 * mm, 0, 360 );
239 logicall1Adia = new G4LogicalVolume( tub2, fibre, "logicall1Adia" );
240 physicall1Adia = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicall1Adia,
241 "physicall1Adia", logicalSCM, false, 0 );
242
243 G4Tubs* tub3 = new G4Tubs( "tub3", innerShield[0] * mm, innerShield[1] * mm,
244 innerShield[2] / 2.0 * mm, 0, 360 );
245 logicalinnShield =
246 new G4LogicalVolume( tub3, G4Material::GetMaterial( "Aluminium" ), "logicalinnShield" );
247 physicalinnShield = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicalinnShield,
248 "physicalinnShield", logicalSCM, false, 0 );
249
250 G4Tubs* tub4 =
251 new G4Tubs( "tub4", l2Adia[0] * mm, l2Adia[1] * mm, l2Adia[2] / 2.0 * mm, 0, 360 );
252 logicall2Adia = new G4LogicalVolume( tub4, fibre, "logicall2Adia" );
253 physicall2Adia = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicall2Adia,
254 "physicall2Adia", logicalSCM, false, 0 );
255
256 G4Tubs* hole_tmp3 = new G4Tubs( "hole_tmp3", 0, hole[8] * mm, 25 * mm, 0, 360 );
257 G4Tubs* tub5_tmp = new G4Tubs( "tub5_tmp", outerShield[0] * mm, outerShield[1] * mm,
258 outerShield[2] / 2.0 * mm, 0, 360 );
259 G4SubtractionSolid* tub5 = new G4SubtractionSolid(
260 "tub5", tub5_tmp, hole_tmp3, xRot,
261 G4ThreeVector( 0, ( outerShield[0] + outerShield[1] ) / 2 * mm, 1640 * mm ) );
262 logicaloutShield =
263 new G4LogicalVolume( tub5, G4Material::GetMaterial( "Aluminium" ), "logicaloutShield" );
264 physicaloutShield = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicaloutShield,
265 "physicaloutShield", logicalSCM, false, 0 );
266
267 G4Tubs* tub6_tmp =
268 new G4Tubs( "tub6_tmp", l3Adia[0] * mm, l3Adia[1] * mm, l3Adia[2] / 2.0 * mm, 0, 360 );
269 G4SubtractionSolid* tub6 = new G4SubtractionSolid(
270 "tub6", tub6_tmp, hole_tmp3, xRot,
271 G4ThreeVector( 0, ( l3Adia[0] + l3Adia[1] ) / 2 * mm, 1640 * mm ) );
272 logicall3Adia = new G4LogicalVolume( tub6, fibre, "logicall3Adia" );
273 physicall3Adia = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicall3Adia,
274 "physicall3Adia", logicalSCM, false, 0 );
275
276 G4Tubs* tub7 = new G4Tubs( "tub7", endShield[0] * mm, endShield[1] * mm,
277 endShield[2] / 2.0 * mm, 0, 360 );
278 logicalendShield =
279 new G4LogicalVolume( tub7, G4Material::GetMaterial( "Aluminium" ), "logicalendShield" );
280 physicalendShield1 =
281 new G4PVPlacement( 0, G4ThreeVector( 0, 0, endShield[3] * mm ), logicalendShield,
282 "physicalendShield1", logicalSCM, false, 0 );
283 physicalendShield2 =
284 new G4PVPlacement( 0, G4ThreeVector( 0, 0, endShield[4] * mm ), logicalendShield,
285 "physicalendShield2", logicalSCM, false, 1 );
286
287 G4Tubs* tub8 =
288 new G4Tubs( "tub8", l1insu[0] * mm, l1insu[1] * mm, l1insu[2] / 2.0 * mm, 0, 360 );
289 logicall1insu = new G4LogicalVolume( tub8, fibre, "logicall1insu" );
290 physicall1insu = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicall1insu,
291 "physicall1insu", logicalSCM, false, 0 );
292
293 G4Tubs* tub9 = new G4Tubs( "tub9", coil[0] * mm, coil[1] * mm, coil[2] / 2.0 * mm, 0, 360 );
294 logicalcoil =
295 new G4LogicalVolume( tub9, G4Material::GetMaterial( "Aluminium" ), "logicalcoil" );
296 physicalcoil = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicalcoil, "physicalcoil",
297 logicalSCM, false, 0 );
298
299 G4Tubs* tub10 =
300 new G4Tubs( "tub10", l2insu[0] * mm, l2insu[1] * mm, l2insu[2] / 2.0 * mm, 0, 360 );
301 logicall2insu = new G4LogicalVolume( tub10, fibre, "logicall2insu" );
302 physicall2insu = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicall2insu,
303 "physicall2insu", logicalSCM, false, 0 );
304
305 G4Tubs* tub11 =
306 new G4Tubs( "tub11", supp[0] * mm, supp[1] * mm, supp[2] / 2.0 * mm, 0, 360 );
307 logicalsupp =
308 new G4LogicalVolume( tub11, G4Material::GetMaterial( "Aluminium" ), "logicalsupp" );
309 physicalsupp = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicalsupp, "physicalsupp",
310 logicalSCM, false, 0 );
311
312 G4Tubs* tub12 =
313 new G4Tubs( "tub12", l4Adia[0] * mm, l4Adia[1] * mm, l4Adia[2] / 2.0 * mm, 0, 360 );
314 logicall4Adia = new G4LogicalVolume( tub12, fibre, "logicall4Adia" );
315 physicall4Adia = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicall4Adia,
316 "physicall4Adia", logicalSCM, false, 0 );
317
318 G4Tubs* tub13 =
319 new G4Tubs( "tub13", endCoil[0] * mm, endCoil[1] * mm, endCoil[2] / 2.0 * mm, 0, 360 );
320 logicalendCoil =
321 new G4LogicalVolume( tub13, G4Material::GetMaterial( "Aluminium" ), "logicalendCoil" );
322 physicalendCoil1 =
323 new G4PVPlacement( 0, G4ThreeVector( 0, 0, endCoil[3] * mm ), logicalendCoil,
324 "physicalendCoil1", logicalSCM, false, 0 );
325 physicalendCoil2 =
326 new G4PVPlacement( 0, G4ThreeVector( 0, 0, endCoil[4] * mm ), logicalendCoil,
327 "physicalendCoil2", logicalSCM, false, 1 );
328
329 G4Tubs* hole_tmp2 = new G4Tubs( "hole_tmp2", 0, hole[1], 18 * mm, 0, 360 );
330 G4Tubs* tub14_tmp = new G4Tubs( "tub14_tmp", outerCryo[0] * mm, outerCryo[1] * mm,
331 outerCryo[2] / 2.0 * mm, 0, 360 );
332 G4SubtractionSolid* tub14 =
333 new G4SubtractionSolid( "tub14", tub14_tmp, hole_tmp2, xRot,
334 G4ThreeVector( 0, ( outerCryo[1] - 8 ) * mm, 1640 * mm ) );
335 logicalouterCryo = new G4LogicalVolume( tub14, Steel, "logicalouterCryo" );
336 physicalouterCryo = new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicalouterCryo,
337 "physicalouterCryo", logicalSCM, false, 0 );
338
339 G4Tubs* tub15 =
340 new G4Tubs( "tub15", endCryo[0] * mm, endCryo[1] * mm, endCryo[2] / 2.0 * mm, 0, 360 );
341 logicalendCryo = new G4LogicalVolume( tub15, Steel, "logicalendCryo" );
342 physicalendCryo1 =
343 new G4PVPlacement( 0, G4ThreeVector( 0, 0, endCryo[3] * mm ), logicalendCryo,
344 "physicalendCryo1", logicalSCM, false, 0 );
345 physicalendCryo2 =
346 new G4PVPlacement( 0, G4ThreeVector( 0, 0, endCryo[4] * mm ), logicalendCryo,
347 "physicalendCryo2", logicalSCM, false, 1 );
348 /*
349 G4Trap* trap = new
350 G4Trap("trap",rein[2]/2.0*mm,0,0,rein[1]/2*mm,rein[1]*std::tan(pi/8)*mm,2,0,rein[1]/2*mm,rein[1]*std::tan(pi/8)*mm,2,0);
351 G4Tubs* tub16 = new G4Tubs("tub16",0,outerCryo[1]*mm,(rein[2]/2.0+3)*mm,0,360);
352
353 G4SubtractionSolid* solidrein = new
354 G4SubtractionSolid("solidrein",trap,tub16,0,G4ThreeVector(0,847.5*mm,0) ); logicalrein =
355 new G4LogicalVolume(solidrein, Steel,"logicalrein");
356
357 for(int i=0; i<8; i++)
358 {
359 std::ostringstream osnamerein;
360 osnamerein << "physicalrein1_"<<i;
361 G4RotationMatrix* zRot = new G4RotationMatrix;
362 zRot->rotateZ(45*i*deg);
363 physicalrein1 = new
364 G4PVPlacement(zRot,G4ThreeVector(-rein[1]/2*std::sin(pi/4*i)*mm,-rein[1]/2*std::cos(pi/4*i)*mm,rein[3]*mm),logicalrein,osnamerein.str(),logicalSCM,false,i);
365 }
366 for(G4int i=0; i<4; i++)
367 {
368 std::ostringstream osnamerein;
369 osnamerein << "physicalrein2_"<<i;
370 G4RotationMatrix* zRot = new G4RotationMatrix;
371 zRot->rotateZ(45*i*deg);
372 physicalrein2 = new
373 G4PVPlacement(zRot,G4ThreeVector(-rein[1]/2*std::sin(pi/4*i)*mm,-rein[1]/2*std::cos(pi/4*i)*mm,rein[4]*mm),logicalrein,osnamerein.str(),logicalSCM,false,8+i);
374 }
375
376 for(G4int i=5; i<8; i++)
377 {
378 std::ostringstream osnamerein;
379 osnamerein << "physicalrein2_"<<i;
380 G4RotationMatrix* zRot = new G4RotationMatrix;
381 zRot->rotateZ(45*i*deg);
382 physicalrein2 = new
383 G4PVPlacement(zRot,G4ThreeVector(-rein[1]/2*std::sin(pi/4*i)*mm,-rein[1]/2*std::cos(pi/4*i)*mm,rein[4]*mm),logicalrein,osnamerein.str(),logicalSCM,false,8+i);
384 }
385 */
386 // pipe of inner 77k
387 G4Box* solidpipe1 = new G4Box( "solidpipe1", pipe1[2] / 2 * mm,
388 ( pipe1[1] + pipe1[4] ) / 2 * mm, pipe1[5] / 2 * mm );
389 logicalpipe1 =
390 new G4LogicalVolume( solidpipe1, G4Material::GetMaterial( "Air" ), "logicalpipe1" );
391 G4Tubs* tub17 =
392 new G4Tubs( "tub17", pipe1[0] * mm, pipe1[1] * mm, pipe1[5] / 2 * mm, 0, 360 );
393 G4Tubs* tub18 = new G4Tubs( "tub18", 0, pipe1[1] * mm, pipe1[5] / 2 * mm, 0, 360 );
394 G4Tubs* tub19 = new G4Tubs( "tub19", 0, pipe1[0] * mm, pipe1[5] / 2 * mm, 0, 360 );
395 G4Box* solidbox1 =
396 new G4Box( "solidbox1", pipe1[2] / 2 * mm, pipe1[3] / 2 * mm, pipe1[5] / 2 * mm );
397 G4SubtractionSolid* solidsub1 =
398 new G4SubtractionSolid( "solidsub1", solidbox1, tub18, 0,
399 G4ThreeVector( 0, ( pipe1[4] - pipe1[3] / 2 ) * mm, 0 ) );
400 G4LogicalVolume* logicalsub1 =
401 new G4LogicalVolume( solidsub1, G4Material::GetMaterial( "Aluminium" ), "logicalsub1" );
402 G4LogicalVolume* logicaltub17 =
403 new G4LogicalVolume( tub17, G4Material::GetMaterial( "Aluminium" ), "logicaltub17" );
404 G4LogicalVolume* logicaltub19 = new G4LogicalVolume( tub19, liquidhelium, "logicaltub19" );
405 // G4VPhysicalVolume* physicaltub17 =
406 new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicaltub17, "physicaltub17", logicalpipe1,
407 false, 0 );
408 // G4VPhysicalVolume* physicaltub19 =
409 new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicaltub19, "physicaltub19", logicalpipe1,
410 false, 0 );
411 // G4VPhysicalVolume* physicalsub1 =
412 new G4PVPlacement( 0, G4ThreeVector( 0, -( pipe1[4] - pipe1[3] / 2 ) * mm, 0 ), logicalsub1,
413 "physicalsub1", logicalpipe1, false, 0 );
414 for ( G4int i = 0; i < 24; i++ )
415 {
416 std::ostringstream osnamerein;
417 osnamerein << "physicalpipe1_" << i;
418 G4RotationMatrix* zRot = new G4RotationMatrix;
419 zRot->rotateZ( 15 * i * deg );
420 // pipe of inner 77k
421 physicalpipe1 = new G4PVPlacement(
422 zRot,
423 G4ThreeVector(
424 -( std::sqrt( innerShield[0] * innerShield[0] - pipe1[2] / 2 * pipe1[2] / 2 ) -
425 ( pipe1[1] + pipe1[4] ) / 2 ) *
426 std::sin( 15 * pi / 180 * i ) * mm,
427 -( std::sqrt( innerShield[0] * innerShield[0] - pipe1[2] / 2 * pipe1[2] / 2 ) -
428 ( pipe1[1] + pipe1[4] ) / 2 ) *
429 std::cos( 15 * pi / 180 * i ) * mm,
430 0 ),
431 logicalpipe1, osnamerein.str(), logicalSCM, false, 0 );
432 }
433 // pipe of outer 77k
434 G4Box* solidpipe2 = new G4Box( "solidpipe2", pipe2[2] / 2 * mm,
435 ( pipe2[1] + pipe2[4] ) / 2 * mm, pipe2[5] / 2 * mm );
436 logicalpipe2 =
437 new G4LogicalVolume( solidpipe2, G4Material::GetMaterial( "Air" ), "logicalpipe2" );
438 G4Tubs* tub20 =
439 new G4Tubs( "tub20", pipe2[0] * mm, pipe2[1] * mm, pipe2[5] / 2 * mm, 0, 360 );
440 G4Tubs* tub21 = new G4Tubs( "tub21", 0, pipe2[1] * mm, pipe2[5] / 2 * mm, 0, 360 );
441 G4Tubs* tub22 = new G4Tubs( "tub22", 0, pipe2[0] * mm, pipe2[5] / 2 * mm, 0, 360 );
442 G4Box* solidbox2 =
443 new G4Box( "solidbox2", pipe2[2] / 2 * mm, pipe2[3] / 2 * mm, pipe2[5] / 2 * mm );
444 G4SubtractionSolid* solidsub2 =
445 new G4SubtractionSolid( "solidsub2", solidbox2, tub21, 0,
446 G4ThreeVector( 0, ( pipe2[4] - pipe2[3] / 2 ) * mm, 0 ) );
447 G4LogicalVolume* logicalsub2 =
448 new G4LogicalVolume( solidsub2, G4Material::GetMaterial( "Aluminium" ), "logicalsub2" );
449 G4LogicalVolume* logicaltub20 =
450 new G4LogicalVolume( tub20, G4Material::GetMaterial( "Aluminium" ), "logicaltub20" );
451 G4LogicalVolume* logicaltub22 = new G4LogicalVolume( tub22, liquidhelium, "logicaltub22" );
452 // G4VPhysicalVolume* physicaltub20 =
453 new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicaltub20, "physicaltub20", logicalpipe2,
454 false, 0 );
455 // G4VPhysicalVolume* physicaltub22 =
456 new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicaltub22, "physicaltub22", logicalpipe2,
457 false, 0 );
458 // G4VPhysicalVolume* physicalsub2 =
459 new G4PVPlacement( 0, G4ThreeVector( 0, -( pipe2[4] - pipe2[3] / 2 ) * mm, 0 ), logicalsub2,
460 "physicalsub2", logicalpipe2, false, 0 );
461 for ( G4int i = 0; i < 24; i++ )
462 {
463 std::ostringstream osnamerein;
464 osnamerein << "physicalpipe2_" << i;
465 G4RotationMatrix* zRot = new G4RotationMatrix;
466 zRot->rotateZ( 15 * i * deg );
467 physicalpipe2 = new G4PVPlacement(
468 zRot,
469 G4ThreeVector(
470 -( l3Adia[1] + ( pipe2[1] + pipe2[4] ) / 2 ) * std::sin( 15 * pi / 180 * i ) * mm,
471 -( l3Adia[1] + ( pipe2[1] + pipe2[4] ) / 2 ) * std::cos( 15 * pi / 180 * i ) * mm,
472 0 ),
473 logicalpipe2, osnamerein.str(), logicalSCM, false, 0 );
474 }
475
476 // pipe of 4k
477 G4Box* solidpipe3 = new G4Box( "solidpipe3", pipe3[2] / 2 * mm,
478 ( pipe3[1] + pipe3[4] ) / 2 * mm, pipe3[5] / 2 * mm );
479 logicalpipe3 =
480 new G4LogicalVolume( solidpipe3, G4Material::GetMaterial( "Air" ), "logicalpipe3" );
481 G4Tubs* tub23 =
482 new G4Tubs( "tub23", pipe3[0] * mm, pipe3[1] * mm, pipe3[5] / 2 * mm, 0, 360 );
483 G4Tubs* tub24 = new G4Tubs( "tub24", 0, pipe3[1] * mm, pipe3[5] / 2 * mm, 0, 360 );
484 G4Tubs* tub25 = new G4Tubs( "tub25", 0, pipe3[0] * mm, pipe3[5] / 2 * mm, 0, 360 );
485 G4Box* solidbox3 =
486 new G4Box( "solidbox3", pipe3[2] / 2 * mm, pipe3[3] / 2 * mm, pipe3[5] / 2 * mm );
487 G4SubtractionSolid* solidsub3 =
488 new G4SubtractionSolid( "solidsub3", solidbox3, tub24, 0,
489 G4ThreeVector( 0, ( pipe3[4] - pipe3[3] / 2 ) * mm, 0 ) );
490 G4LogicalVolume* logicalsub3 =
491 new G4LogicalVolume( solidsub3, G4Material::GetMaterial( "Aluminium" ), "logicalsub3" );
492 G4LogicalVolume* logicaltub23 =
493 new G4LogicalVolume( tub23, G4Material::GetMaterial( "Aluminium" ), "logicaltub23" );
494 G4LogicalVolume* logicaltub25 = new G4LogicalVolume( tub25, liquidhelium, "logicaltub25" );
495 // G4VPhysicalVolume* physicaltub23 =
496 new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicaltub23, "physicaltub23", logicalpipe3,
497 false, 0 );
498 // G4VPhysicalVolume* physicaltub25 =
499 new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logicaltub25, "physicaltub25", logicalpipe3,
500 false, 0 );
501 // G4VPhysicalVolume* physicalsub3 =
502 new G4PVPlacement( 0, G4ThreeVector( 0, -( pipe3[4] - pipe3[3] / 2 ) * mm, 0 ), logicalsub3,
503 "physicalsub3", logicalpipe3, false, 0 );
504 for ( G4int i = 0; i < 24; i++ )
505 {
506 std::ostringstream osnamerein;
507 osnamerein << "physicalpipe3_" << i;
508 G4RotationMatrix* zRot = new G4RotationMatrix;
509 zRot->rotateZ( 15 * i * deg );
510 physicalpipe3 = new G4PVPlacement(
511 zRot,
512 G4ThreeVector(
513 -( l4Adia[1] + ( pipe3[1] + pipe3[4] ) / 2 ) * std::sin( 15 * pi / 180 * i ) * mm,
514 -( l4Adia[1] + ( pipe3[1] + pipe3[4] ) / 2 ) * std::cos( 15 * pi / 180 * i ) * mm,
515 0 ),
516 logicalpipe3, osnamerein.str(), logicalSCM, false, 0 );
517 }
518
519 // G4VisAttributes* visSCM = new G4VisAttributes(G4Colour(1.,1.,1.));
520 G4VisAttributes* visSCM1 = new G4VisAttributes( G4Colour( 0., 0., 1. ) );
521 logicalSCM->SetVisAttributes( visSCM1 );
522 logicalinnCryo->SetVisAttributes( visSCM1 );
523 // logicalinnCryo->SetVisAttributes(G4VisAttributes::Invisible);
524 logicalouterCryo->SetVisAttributes( visSCM1 );
525 // logicalouterCryo->SetVisAttributes(G4VisAttributes::Invisible);
526 logicalendCryo->SetVisAttributes( visSCM1 );
527 // logicalendCryo->SetVisAttributes(G4VisAttributes::Invisible);
528 G4VisAttributes* visSCM2 = new G4VisAttributes( G4Colour( 0., 1., 0. ) );
529 logicall1Adia->SetVisAttributes( visSCM2 );
530 // logicall1Adia->SetVisAttributes(G4VisAttributes::Invisible);
531 logicall2Adia->SetVisAttributes( visSCM2 );
532 // logicall2Adia->SetVisAttributes(G4VisAttributes::Invisible);
533 logicall3Adia->SetVisAttributes( visSCM2 );
534 // logicall3Adia->SetVisAttributes(G4VisAttributes::Invisible);
535 logicall4Adia->SetVisAttributes( visSCM2 );
536 // logicall4Adia->SetVisAttributes(G4VisAttributes::Invisible);
537 G4VisAttributes* visSCM3 = new G4VisAttributes( G4Colour( 1., 0., 0. ) );
538 logicalinnShield->SetVisAttributes( visSCM3 );
539 // logicalinnShield->SetVisAttributes(G4VisAttributes::Invisible);
540 logicaloutShield->SetVisAttributes( visSCM3 );
541 // logicaloutShield->SetVisAttributes(G4VisAttributes::Invisible);
542 logicalendShield->SetVisAttributes( visSCM3 );
543 // logicalendShield->SetVisAttributes(G4VisAttributes::Invisible);
544
545 G4VisAttributes* visSCM4 = new G4VisAttributes( G4Colour( 0., 1., 1. ) );
546 logicall1insu->SetVisAttributes( visSCM4 );
547 // logicall1insu->SetVisAttributes(G4VisAttributes::Invisible);
548 logicall2insu->SetVisAttributes( visSCM4 );
549 // logicall2insu->SetVisAttributes(G4VisAttributes::Invisible);
550 G4VisAttributes* visSCM5 = new G4VisAttributes( G4Colour( 1., 0., 1. ) );
551 logicalcoil->SetVisAttributes( visSCM5 );
552 // logicalcoil->SetVisAttributes(G4VisAttributes::Invisible);
553 logicalendCoil->SetVisAttributes( visSCM5 );
554 // logicalendCoil->SetVisAttributes(G4VisAttributes::Invisible);
555 G4VisAttributes* visSCM6 = new G4VisAttributes( G4Colour( 1., 1., 0. ) );
556 logicalsupp->SetVisAttributes( visSCM6 );
557 // logicalsupp->SetVisAttributes(G4VisAttributes::Invisible);
558 // G4VisAttributes* visSCM7 = new G4VisAttributes(G4Colour(0.,0.,0.));
559 // logicalrein->SetVisAttributes(G4VisAttributes::Invisible);
560 // logicalpipe1->SetVisAttributes(G4VisAttributes::Invisible);
561 logicalpipe2->SetVisAttributes( visSCM2 );
562 // logicalpipe2->SetVisAttributes(G4VisAttributes::Invisible);
563 // logicalpipe3->SetVisAttributes(G4VisAttributes::Invisible);
564 logicaltub17->SetVisAttributes( visSCM2 );
565 // logicaltub17->SetVisAttributes(G4VisAttributes::Invisible);
566 logicaltub19->SetVisAttributes( visSCM5 );
567 // logicaltub19->SetVisAttributes(G4VisAttributes::Invisible);
568 logicaltub20->SetVisAttributes( visSCM1 );
569 // logicaltub20->SetVisAttributes(G4VisAttributes::Invisible);
570 logicaltub22->SetVisAttributes( visSCM1 );
571 // logicaltub22->SetVisAttributes(G4VisAttributes::Invisible);
572 logicaltub23->SetVisAttributes( visSCM2 );
573 // logicaltub23->SetVisAttributes(G4VisAttributes::Invisible);
574 logicaltub25->SetVisAttributes( visSCM5 );
575 // logicaltub25->SetVisAttributes(G4VisAttributes::Invisible);
576 logicalsub1->SetVisAttributes( visSCM4 );
577 // logicalsub1->SetVisAttributes(G4VisAttributes::Invisible);
578 logicalsub2->SetVisAttributes( visSCM4 );
579 // logicalsub2->SetVisAttributes(G4VisAttributes::Invisible);
580
581 logicalsub3->SetVisAttributes( visSCM4 );
582 // logicalsub3->SetVisAttributes(G4VisAttributes::Invisible);
583 logicalhole1->SetVisAttributes( visSCM3 );
584 // logicalhole1->SetVisAttributes(G4VisAttributes::Invisible);
585 logicalhole2->SetVisAttributes( visSCM3 );
586 // logicalhole2->SetVisAttributes(G4VisAttributes::Invisible);
587 logicalhole3->SetVisAttributes( visSCM3 );
588 // logicalhole3->SetVisAttributes(G4VisAttributes::Invisible);
589 logicalhole4->SetVisAttributes( visSCM3 );
590 // logicalhole4->SetVisAttributes(G4VisAttributes::Invisible);
591 logicalhole5->SetVisAttributes( visSCM3 );
592 // logicalhole5->SetVisAttributes(G4VisAttributes::Invisible);
593}
double pi
void DefineMaterial()
Definition BesSCM.cc:131

◆ DefineMaterial()

void BesSCM::DefineMaterial ( )

Definition at line 131 of file BesSCM.cc.

131 {
132 G4double density, a, z, fractionmass;
133 G4int nel;
134 G4String name, symbol;
135 density = 0.1248 * g / cm3;
136 a = 4.00 * g / mole;
137 liquidhelium = new G4Material( name = "liquidhelium", z = 2.0, a, density );
138
139 density = 7.14 * g / cm3;
140 a = 52.00 * g / mole;
141 G4Material* Chromium = new G4Material( name = "Chromium", z = 24.0, a, density );
142
143 density = 7.87 * g / cm3;
144 a = 55.845 * g / mole;
145 G4Material* Iron = new G4Material( name = "Iron", z = 26.0, a, density );
146
147 density = 8.91 * g / cm3;
148 a = 58.693 * g / mole;
149 G4Material* Nickel = new G4Material( name = "Nickel", z = 28.0, a, density );
150
151 density = 7.47 * g / cm3;
152 a = 54.938 * g / mole;
153 G4Material* Manganese = new G4Material( name = "Manganese", z = 25.0, a, density );
154
155 density = 7.801 * g / cm3;
156 Steel = new G4Material( name = "Steel", density, nel = 4 );
157 Steel->AddMaterial( Iron, fractionmass = 0.69 );
158 Steel->AddMaterial( Chromium, fractionmass = 0.19 );
159 Steel->AddMaterial( Manganese, fractionmass = 0.02 );
160 Steel->AddMaterial( Nickel, fractionmass = 0.10 );
161
162 a = 12.01 * g / mole;
163 G4Element* C = new G4Element( name = "Carbon", symbol = "C", z = 6., a );
164 a = 1.01 * g / mole;
165 G4Element* H = new G4Element( name = "Hydrogen", symbol = "H", z = 1., a );
166 a = 16.00 * g / mole;
167 G4Element* O = new G4Element( name = "Oxygen", symbol = "O", z = 8., a );
168
169 density = 2.25 * mg / cm3;
170 fibre = new G4Material( name = "fibre", density, nel = 3 );
171 fibre->AddElement( C, fractionmass = 0.625 );
172 fibre->AddElement( H, fractionmass = 0.042 );
173 fibre->AddElement( O, fractionmass = 0.333 );
174}
***************************************************************************************Pseudo Class RRes *****************************************************************************************Parameters and physical constants **Maarten sept ************************************************************************DOUBLE PRECISION xsmu **************************************************************************PARTICLE DATA all others are from PDG *Only resonances with known widths into electron pairs are sept ************************************************************************C Declarations C
Definition RRes.h:29
IMPLICIT REAL *A H
Definition myXsection.h:1

Referenced by Construct().


The documentation for this class was generated from the following files: