基本概念
detector由多个volumes组成
- World
- 最大的volume是world volume,所有其他detector volumes都必须被包含在world里
- 描述world最简单高效的形状是一个box
- 必须创建为具有空母指针的G4PVPlacement
- 必须是未旋转的,它必须放在全局坐标系的原点
- volumes间关系
- 有包含关系的volumes,内部的为子体daughter volume,外部的为母体mother volume
- 子体与母体使用相同坐标系
- world没有母体,它本身是最大的母体
- volume构成
- 描述形状的solid volume
- 描述属性的logical volume
- 物理特性、材料、有无sensitive detector、磁场,等等
- 描述位置的physical volume
创建volume
如何创建volume
- 创建一个实体solid
- 使用该solid volume创建logical volume
- 并添加其他属性
1. 选择solid
Listing 2.4:创建box
G4double world_hx = 3.0*m; //X轴范围-3m到3m
G4double world_hy = 1.0*m;//Y轴范围-1m到1m
G4double world_hz = 1.0*m;//Z轴范围-1m到1m
G4Box* worldBox
= new G4Box("World", //box命名为World
world_hx, world_hy, world_hz); //G4Box构造函数是box长度的半长
G4Tubs 类构造圆柱体
Listing 2.5:创建圆柱体
G4double innerRadius = 0.*cm;
G4double outerRadius = 60.*cm;//半径60cm
G4double hz = 25.*cm; //hz参数同样表示z轴的一半长度
G4double startAngle = 0.*deg;
G4double spanningAngle = 360.*deg;//完整圆柱体
G4Tubs* trackerTube
= new G4Tubs("Tracker", //圆柱体命名为Tracker
innerRadius,
outerRadius,
hz,
startAngle,
spanningAngle);
2. 创建logical volume
创建logical volume必须从solid和材料设置开始
//为填充氩气的六面体solid volume创建logical volume
G4LogicalVolume* worldLog
= new G4LogicalVolume(worldBox, Ar, "World");
//为填充铝的圆柱体solid volume创建logical volume
G4LogicalVolume* trackerLog
= new G4LogicalVolume(trackerTube, Al, "Tracker");
3. 创建physical volume
Listing 2.6 physical volume示例代码
G4double pos_x = -1.0*meter;
G4double pos_y = 0.0*meter;
G4double pos_z = 0.0*meter;
G4VPhysicalVolume* trackerPhys
= new G4PVPlacement(0, // no rotation
G4ThreeVector(pos_x, pos_y, pos_z), // translation position
trackerLog, // teaker的logical volume命名为了trackerLog
"Tracker", // its name
worldLog, // its mother (logical) volume world的logical volume命名为了worldLog
false, // no boolean operations 没有布尔操作(如和其他volume相交)
0); // its copy number 拷贝数为0
4. 坐标系和旋转
- 与放置的physical volume相关的旋转,表示该volume
相对母体的旋转
其他
如何快速创建一个volume并在world里出现多次,仅坐标不同
- for循环+random随机坐标
- copy+random
本文介绍如何在G4中定义探测器几何结构,包括世界体积World的设定,描述volume间的关系,以及volume的创建步骤,如创建实体solid、logical volume和physical volume。还提及了如何在world中放置多个volume,利用for循环和随机坐标实现。

655

被折叠的 条评论
为什么被折叠?



