Geant4入门指导与安装 下载本文

内部资料 Geant4安装和入门 runManager->Initialize();

// get the pointer to the UI manager and set verbosities G4UImanager* UI = G4UImanager::GetUIpointer(); UI->ApplyCommand(\ UI->ApplyCommand(\ UI->ApplyCommand(\ // start a run

int numberOfEvent = 3;

runManager->BeamOn(numberOfEvent); // job termination delete runManager; return 0; }

////////////////////////////////////////////////////////////////////////////////////

3. 定义探测器几何形状 1) 基本概念

Geant4中探测器有大量的几何块组成, 其中最大的几何块被称为\volume\它包含了其他所有的几何块, 后定义的几何块被放置在前面的几何块中.

定义某一个几何块时, 必须提供它的形状和物理特征, 以及所处的位置. 当一个几何块被放置在另一个几何块中时, 前者被称为\volume\, 后者被称为\volume\根据\volume\来确定\volume\的位置. 描述几何块形状时, 必须给出具体的数值, 如:边长为10cm的立方体和半径为30cm, 长75cm的圆柱体.

2) 定义一个简单的几何块 i) 选择一个形状

定义一个简单的长方体, 用户主要给出它的名字和三个轴向的长度. 如下: //////////////////////////////////////////////////////////////////////////////////// G4double expHall_x=3.0*m; G4double expHall_y=1.0*m; G4double expHall_z=1.0*m;

G4Box* experimentalHall_box

= new G4Box(\

9 Geant4安装和入门 内部资料 ////////////////////////////////////////////////////////////////////////////////////

上面这一段代码就定义了一个名为\的长方体, X轴方向从-3*m~3*m, Y轴从-1*m~1*m, Z轴从-1*m~1*m.

定义一个圆柱体也很简单, 需要G4Tubs类. //////////////////////////////////////////////////////////////////////////////////// G4double innerRadiusOfTheTube=0*cm; G4double outerRadiusOfTheTube=60*cm; G4double halfhightOfTheTube=25*cm; G4double startAngleOfTheTube=0*deg; G4double spanningAngleOfTheTube=360*deg;

G4Tubs* tracker_tube

= new G4Tubs(\ innerRadiusOfTheTube, outerRadiusOfTheTube, halfhightOfTheTube, startAngleOfTheTube, spanningAngleOfTheTube); ////////////////////////////////////////////////////////////////////////////////////

上面这段代码就定义了一个名为\半径为60*cm, 长为50*cm的圆柱体. ii) 创建一个逻辑块

在创建一个逻辑块之前, 首先需要定义形状和材料. 如上面所定义的长方体, 材料为氩气, 它的逻辑块定义为:

G4LogicalVolume* experimentalHall_log

= new G4LogicalVolume(experimentHall_box, Ar, \这个逻辑块的名字为\

上面所定义的圆柱体, 材料为铝, 它的逻辑块为: G4LogicalVolume* tracker_log

= new G4LogicalVolume(tracker_tube, Al, \该逻辑块名为\ iii) 创建一个物理块

用户创建一个物理块来确定所定义的几何块的位置. 如下: //////////////////////////////////////////////////////////////////////////////////// G4double trackerPos_x = -1*m; G4double trackerPos_y = 0*m; G4double trackerPos_z = 0*m;

G4VPhysicalVolume* tracker_phys

10 内部资料 Geant4安装和入门 = new G4PVPlacement(0, //无旋转

G4ThreeVector(trackerPos_x,trackerPos_y,trackerPos_z), //中心位置坐标 tracker_log, //逻辑块 \ //名字

experimentalHall_log, //\逻辑块) false, //no boolean operation 0); //复制数 ////////////////////////////////////////////////////////////////////////////////////

对于\volume\来说, 它是最大的几何块, 不可能被其他几何块所包含, 就需要用G4PVPlacement来创建一个无\volume\的物理块, 它必须是无旋转的, 而且中心在整个坐标系的原点. 如下:

//////////////////////////////////////////////////////////////////////////////////// G4VPhysicalVolume* experimentallHall_phys = new G4PVPlacement(0,

G4ThreeVector(0,0,0), experimentalHall_log, \ 0, false, 0);

////////////////////////////////////////////////////////////////////////////////////

4. 定义材料 1) 基本概念

自然界中, 材料(化合物, 混合物)一般是由元素组成, 而元素由同位素组成. Geant4中有三个类用来定义探测器材料的.

类G4Element描述了原子属性:原子量, 原子核中质子数, 原子质量, 壳层能量, 还有每个原子的散射截面等.

类G4Material描述了材料的宏观属性:密度, 状态, 温度, 压强, 还有辐射长度, 平均自由程, dE/dx等.

2) 定义单质材料

如下例, 给出材料名称, 密度, 摩尔质量和原子量, 定义了液态氩. //////////////////////////////////////////////////////////////////////////////////// G4double density = 1.390*g/cm3; G4double a = 39.95*g/mole;

G4Material* lAr = new G4Material(name=\

11 Geant4安装和入门 内部资料 //////////////////////////////////////////////////////////////////////////////////// 这就可以用来确定所定义的逻辑块的材料:

G4LogicalVolume* myLbox = new G4LogicalVolume(abox, lAr, \

3) 定义化合物 如例, 定义水(H2O):

//////////////////////////////////////////////////////////////////////////////////// a = 1.01*g/mole;

G4Element* elH = new G4Element(name=\

a = 16.00*g/mole;

G4Element* elO = new G4Element(\

density=1.0*g/cm3;

G4Material* H2O = new G4Material(\ H2O->AddElement(elH, natoms=2); H2O->AddElement(elO, natoms=1);

////////////////////////////////////////////////////////////////////////////////////

4) 定义混合物 如例, 定义空气(Air):

//////////////////////////////////////////////////////////////////////////////////// a = 14.01*g/mole;

G4Element* elN = new G4Element(\

a = 16.0*g/mole;

G4Element* elO = new G4Element(\

density = 1.290*g/cm3;

G4Material* Air = new G4Material(\ Air->AddElement(elN, fractionmass=70*perCent); Air->AddElement(elO, fractionmass=30*perCent); ////////////////////////////////////////////////////////////////////////////////////

在/home/username/geant4.7.0/examples/novice/N03/ExN03DetectorConstruction.cc文件中介绍了所有定义材料的方法.

5. 指定粒子 1) 一般概念

12