【Geant4】Geometry

合集下载

Geant4基础知识

Geant4基础知识

Geant4基础知识G4模拟粒子过程:建立一次模拟,在G4 中称为一次Run;Run 建立后,需要对几何结构、物理过程进行初始化;初始化完成后就开始模拟过程了,首先发射一个粒子。

在G4 中,发射一个(或一系列)粒子到所有次级粒子死亡的过程成为一次Event 。

而每次发射的初始粒子则有粒子发射器进行控制。

而在每一个event 过程中,粒子与材料反应后会可能生成多个次级粒子,每个粒子都会有一条径迹,称之为track ;而每一个粒子(初始的或次级的)的径迹又是由很多步组成的,称之为step 。

G4模拟的基本算法:A Run Start -> 初始化物理模型/ 几何模型-> An Event Start -> 调用粒子发射器发射粒子-> A Track Start-> A Step Start-> A Step End-> Next Step Start- > ,,-> All Step End-> A Track End-> Next Track Start-> ,,-> All Track End-> An Event End -> Next Event Start- > ,,-> All Event End(All Primaries Shot) -> A Run End -> Next Run Start- > ,,1) main() 中应该包括的内容Geant4 是一个探测器模拟工具, 但它对于某个特定的模拟程序没有固定的main() 函数, 用户在建立模拟程序的过程中需要提供自己的main() 函数. 一个最基本的main() 函数需要包括以下几个方面:G4RunManager( 模拟整个过程)G4VUserDetectorConstruction( 定义探测器材料, 几何形状, 灵敏区和读出方案)G4VUserPhysicsList( 定义粒子种类和物理过程, 还有截断参数)G4VUserPrimaryGeneratorAction( 定义了源粒子的种类, 能量, 出射方向等)一个最简单的main() 函数如下:#include "G4RunManager.hh"#include "G4UImanager.hh"#include "ExN01DetectorConstruction.hh"#include "ExN01PhysicsList.hh"#include "ExN01PrimaryGeneratorAction.hh"int main(){// Construct the default run managerG4RunManager* runManager = new G4RunManager;// set mandatory initialization classesrunManager->SetUserInitialization(new ExN01DetectorConstruction); runManager->SetUserInitialization(new ExN01PhysicsList);// set mandatory user action classrunManager->SetUserAction(new ExN01PrimaryGeneratorAction);// Initialize G4 kernelrunManager->Initialize();// get the pointer to the UI manager and set verbositiesG4UImanager* UI = G4UImanager::GetUIpointer();UI->ApplyCommand("/run/verbose 1");UI->ApplyCommand("/event/verbose 1");UI->ApplyCommand("/tracking/verbose 1");// start a runint numberOfEvent = 3;runManager->BeamOn(numberOfEvent);// job terminationdelete runManager;return 0;}main() 首先生成一个G4RunManager类,这个类是在主程序中用以初始化模拟信息,用来连接子程序,连接方式是通过Set 函数来完成。

Geant4基础知识

Geant4基础知识

Geant4基础知识G4模拟粒子过程:建立一次模拟,在 G4 中称为一次Run;Run 建立后,需要对几何结构、物理过程进行初始化;初始化完成后就开始模拟过程了,首先发射一个粒子。

在G4 中,发射一个(或一系列)粒子到所有次级粒子死亡的过程成为一次 Event。

而每次发射的初始粒子则有粒子发射器进行控制。

而在每一个event过程中,粒子与材料反应后会可能生成多个次级粒子,每个粒子都会有一条径迹,称之为 track;而每一个粒子(初始的或次级的)的径迹又是由很多步组成的,称之为step。

G4模拟的基本算法:A Run Start -> 初始化物理模型/几何模型-> An Event Start -> 调用粒子发射器发射粒子-> A Track Start-> A Step Start-> A Step End-> Next Step Start-> ……-> All Step End-> A Track End-> Next Track Start-> ……-> All Track End-> An Event End -> Next Event Start-> ……-> All Event End(All Primaries Shot) -> A Run End -> Next Run Start-> ……1) main()中应该包括的内容Geant4是一个探测器模拟工具, 但它对于某个特定的模拟程序没有固定的main()函数, 用户在建立模拟程序的过程中需要提供自己的main()函数. 一个最基本的main()函数需要包括以下几个方面:G4RunManager(模拟整个过程)G4VUserDetectorConstruction(定义探测器材料, 几何形状, 灵敏区和读出方案)G4VUserPhysicsList(定义粒子种类和物理过程, 还有截断参数)G4VUserPrimaryGeneratorAction(定义了源粒子的种类, 能量, 出射方向等)一个最简单的main()函数如下:#include "G4RunManager.hh"#include "G4UImanager.hh"#include "ExN01DetectorConstruction.hh"#include "ExN01PhysicsList.hh"#include "ExN01PrimaryGeneratorAction.hh"int main(){// Construct the default run managerG4RunManager* runManager = new G4RunManager;// set mandatory initialization classesrunManager->SetUserInitialization(new ExN01DetectorConstruction);runManager->SetUserInitialization(new ExN01PhysicsList);// set mandatory user action classrunManager->SetUserAction(new ExN01PrimaryGeneratorAction);// Initialize G4 kernelrunManager->Initialize();// get the pointer to the UI manager and set verbositiesG4UImanager* UI = G4UImanager::GetUIpointer();UI->ApplyCommand("/run/verbose 1");UI->ApplyCommand("/event/verbose 1");UI->ApplyCommand("/tracking/verbose 1");// start a runint numberOfEvent = 3;runManager->BeamOn(numberOfEvent); // job terminationdelete runManager;return 0;}main()首先生成一个 G4RunManager类,这个类是在主程序中用以初始化模拟信息,用来连接子程序,连接方式是通过 Set函数来完成。

Geant4Geometry

Geant4Geometry

ContentsIntroductionG4VUserDetectorConstruction class Solid and shapeLogical volumeIntroductionG4VUserDetectorConstructionUser classesmain()Geant4 does not provide main().Note : classes written in yellow are mandatory.Initialization classesUse G4RunManager::SetUserInitialization() to define.Invoked at the initializationG4VUserDetectorConstructionG4VUserPhysicsListAction classesUse G4RunManager::SetUserAction() to define.Invoked during an event loopG4VUserPrimaryGeneratorActionG4UserRunActionG4UserEventActionG4UserStackingActionG4UserTrackingActionG4UserSteppingActionConstruct() should return the pointer of the world physical volume. The world physical volume represents all of yourYour detector construction #ifndef MyDetctorConstruction_h#define MyDetctorConstruction_h1#include “G4VUserDetectorConstruction.hh”class MyDetctorConstruction: public G4VUserDetectorConstruction{public:G4VUserDetectorConstruction();virtual ~G4VUserDetectorConstruction();virtual G4VPhysicalVolume* Construct(); public:// set/get methods if neededprivate:// granular private methods if needed// data members if needed};#endifDescribe your detectorDerive your own concrete class from G4VUserDetectorConstruction abstract base class.Implement the method Construct()1)Construct all necessary materials2)Define shapes/solids3)Define logical volumes4)Place volumes of your detector geometry5)Associate (magnetic) field to geometry (optional)6)Instantiate sensitive detectors / scorers and set them to corres pondingvolumes (optional)7)Define visualization attributes for the detector elements (optional)8)Define regions (optional)Set your construction class to G4RunManagerIt is suggested to modularize Construct() method w.r.t. each component or sub-detector for easier maintenance of your code.Solid and shapeG4VSolidAbstract class. All solids in Geant4 are derived from itIt defines but does not implement all functions required to:compute distances between the shape and a given pointcheck whether a point is inside the shapecompute the extent of theshapecompute the surface normal to the shape at a given pointUser can create his/her own solid classSolidsSolids defined in Geant4:CSG (Constructed Solid Geometry) solidsG4Box, G4Tubs, G4Cons, G4Trd, …Analogous to simple GEANT3 CSG solids Specific solids (CSG like)G4Polycone, G4Polyhedra, G4Hype, …BREP (Boundary REPresented) solidsG4BREPSolidPolycone, G4BSplineSurface, …Any order surfaceBoolean solidsG4UnionSolid, G4SubtractionSolid, …Tessellated solid and Extruded solidCSG: G4Box, G4TubsG4Box(const G4String &pname, // nameG4double half_x, // X half sizeG4double half_y, // Y half sizeG4double half_z); // Z half sizeG4Tubs(const G4String &pname, // nameG4double pRmin, // inner radiusG4double pRmax, // outer radiusG4double pDz, // Z half lengthG4double pSphi, // starting PhiG4double pDphi); // segment angleOther CSG solidsG4ConsG4Para(parallelepiped)G4TrdG4TrapG4SphereG4OrbG4TorusConsult to Section 4.1.2 of Geant4Application Developers Guide forall available shapes.Specific CSG Solids: G4Polycone G4Polycone(const G4String& pName,G4double phiStart,G4double phiTotal,G4int numRZ,const G4double r[],const G4double z[]);numRZ-numbers of corners in the r,z spacer, z-coordinates of cornersOther Specific CSG solidsG4PolyhedraG4EllipticalTubeG4EllipsoidG4EllipticalConeG4HypeG4Tet (tetrahedra)G4TwistedBoxG4TwistedTrdG4TwistedTrapG4TwistedTubsConsult to Section 4.1.2 of Geant4 Application Developers Guide for all available shapes.BREP Solids BREP = Boundary REPresented SolidListing all its surfaces specifies a solide.g. 6 planes for a cubeSurfaces can beplanar, 2nd or higher orderelementary BREPSSplines, B-Splines,NURBS (Non-Uniform B-Splines)advanced BREPSFew elementary BREPS pre-definedbox, cons, tubs, sphere, torus, polycone, polyhedraAdvanced BREPS built through CAD systemsBoolean Solids -exampleG4VSolid* box = new G4Box(“Box",50*cm,60*cm,40*cm);G4VSolid* cylinder= new G4Tubs(“Cylinder”,0.,50.*cm,50.*cm,0.,2*M_PI*rad);G4VSolid* union= new G4UnionSolid("Box+Cylinder", box, cylinder);G4VSolid* subtract= new G4SubtractionSolid("Box-Cylinder", box, cylinder, 0, G4ThreeVector(30.*cm,0.,0.));G4RotationMatrix* rm= new G4RotationMatrix();rm->RotateX(30.*deg);G4VSolid* intersect= new G4IntersectionSolid("Box&&Cylinder",box, cylinder, rm, G4ThreeVector(0.,0.,0.));The origin and the coordinates of the combined solid are the sam e as those of the first solid.Tessellated solidsG4TessellatedSolid(since 8.1)Generic solid defined by a number of facets (G4VFacet)Facets can be triangular (G4TriangularFacet) or quadrangular(G4QuadrangularFacet)Constructs especially important for conversion of complex geometrical shapes imported from CAD systemsBut can also be explicitly defined:By providing the vertices of the facets in anti-clock wise order, inabsolute or relative reference frameGDML bindingA CAD imported assembly with tessellated solids -release 8.1G4ExtrudedSolid G4ExtrudedSolid, which wasintroduced in v8.3, is a specificcase of tessellated solid.G4ExtrudedSolid is a solid whichrepresents the extrusion of anarbitrary polygon with fixedoutline in the defined Z sections.The z-sides of the solid are thescaled versions of the samepolygon.The solid is implemented as aspecification ofG4TessellatedSolid.G4LogicalVolumeG4LogicalVolumeG4LogicalVolume(G4VSolid*pSolid,G4Material*pMaterial,const G4String &name,G4FieldManager *pFieldMgr=0,G4VSensitiveDetector *pSDetector=0,G4UserLimits *pULimits=0);Contains all information of volume except position and rotation Shape and dimension (G4VSolid)Material, sensitivity, visualization attributesPosition of daughter volumesMagnetic field, User limits,RegionPhysical volumes of same type can share the common logical volum e object. The pointers to solid must NOT be null.The pointers to material must NOT be null for tracking geometry.It is not meant to act as a base class.Computing volumes and weightsGeometrical volume of a generic solid or boolean composition can be computed from the solid:G4double GetCubicVolume();Exact volume is determinatively calculated for most of CSG solid s, while estimation based on Monte Carlo integration is given for other s olids.Overall weight of a geometry setup (sub-geometry) can be computed from the logical volume:G4double GetMass(G4bool forced=false,G4bool propagate=true, G4Material* pMaterial=0);The computation may require a considerable amount of time, depen ding on the complexity of the geometry.The return value is cached and reused until forced=true.Daughter volumes will be neglected if propagate=false.Backup (G4Region)RegionA region may have its uniqueProduction thresholds (cuts)If a region in the mass geometry does not have its own productio nthresholds, those of the default region are used (i.e., may not be thoseof the parent region).User limitsYou can set user limits directly to logical volume as well. If b oth logicalvolume and associated region have user limits, those of logical volumewins.User region informationE.g. to implement a fast Boolean method to identify the nature o f theregion.Fast simulation managerShower envelopeRegional user stepping action (new with version 9.0)Please note :World logical volume is recognized as the default region. User is not allowed to define a region to the world logical volume.G4RegionA region is instantiated and defined byG4Region* aRegion= new G4Region(“region_name”);aRegion->AddRootLogicalVolume(aLogicalVolume);Region propagates down to all geometrical hierarchy until the bottom or another root logical volume.Production thresholds (cuts) can be assigned to a region byG4Region* aRegionGetRegion(“region_name”);= G4RegionStore::GetInstance()->GetRegionG4ProductionCuts* cuts = new G4ProductionCuts;cuts->SetProductionCut(cutValue);aRegion->SetProductionCuts(cuts);。

应用Geant4计算光子外照射对人体产生的有效剂量

应用Geant4计算光子外照射对人体产生的有效剂量

应用Geant4计算光子外照射对人体产生的有效剂量李明生;欧向明;牛昊巍;程金生【摘要】在Geant4中构建ORNL程式化混合模体,应用此模体计算不同能量下平行光子入射的人体有效剂量.计算结果以吸收剂量与空气比释动能比值的形式呈现.计算结果与ICRP74值进行了对比验证.【期刊名称】《中国医学装备》【年(卷),期】2010(007)007【总页数】4页(P14-17)【关键词】ORNL模体;有效剂量;蒙特卡洛方法;光子【作者】李明生;欧向明;牛昊巍;程金生【作者单位】中国疾病预防控制中心辐射防护与核安全医学所,北京,100088;中国疾病预防控制中心辐射防护与核安全医学所,北京,100088;中国疾病预防控制中心辐射防护与核安全医学所,北京,100088;中国疾病预防控制中心辐射防护与核安全医学所,北京,100088【正文语种】中文【中图分类】R1441 引言有效剂量是辐射防护中的一个重要的危险评估量,有效剂量作为防护量,无法直接测量。

一种方法是应用蒙卡程序模拟出重要辐射敏感器官的当量剂量,根据ICRP60报告[1]中的辐射敏感器官组织权重因子得到有效剂量;另外一种是通过已经算好的器官剂量转化系数得到人体有效剂量,例如ICRP74报告[2]中的器官剂量转化系数。

在蒙卡软件Geant4中构建一个ORNL[3]混合模体,应用此模体计算人体侧面照射时的有效剂量。

混合模体是指把男性与女性的一些性器官组合到一起形成的模体,应用此模体可以直接计算各种几何条件下人体器官的当量剂量值和人体有效剂量。

模体主要器官体积与参考体积进行了对比,有效剂量值与ICRP74报告中的系数值进行了对比验证。

2 材料和方法2.1 Geant4中构建模体方法Geant是英文“几何与追踪”(Geometry And Tracking)的缩写,是一种利用蒙特卡洛模拟粒子通过物质整个物理过程的软件平台。

这个软件适用于几乎所有已知的物理粒子,并且可以覆盖绝大多数的粒子反映过程。

第六讲——GEANT4探测器几何模型定义

第六讲——GEANT4探测器几何模型定义

猪头Geant4讲座第六讲——几何模型管理提醒: 本帖被medphys 执行压帖操作(2009-10-03)本讲座为蒙卡学术论坛()专题讲座,任何人未经作者本人许可不得转载至其他论坛,作者保留追究转载者相关责任的权利!上一讲我们讲过了,几何结构类(DetectorConstruction)属于强制初始化类,其主要功能是构建模拟问题的几何结构,包括各部分的材料、形状、尺寸、位置等信息。

前面我讲了材料如何定义,今天我主要讲几何模型的建立以及各部分材料的设置。

在讲如何建立几何模型前我想首先讲一下Geant4中所采用的几何建模思想。

学过MCNP或Fluka的都知道MCNP和Fluka采用的是CG模型,所谓CG模型就是Co mbination Geometry,我习惯翻译为组合几何模型,CG模型顾名思义就是整个模型由一块块小模块组合而成,打个不恰当的比方就是搭积木。

这种模型的要求就是“不交不空”,既不能有相交的部分,也不能有空白的地方。

CG模型是粒子输运蒙卡模拟中非常常用的一种。

Geant4采用的模型则不同,目前我没看到有关此模型的确切名称,但我习惯将之称为嵌套模型或盒子模型,因为其建模的方式就如往大盒子里放小盒子。

在Geant4中首先我们要建立一个最大的盒子,称为World Volume,然后往这个大盒子里面放各种各样的小盒子(部件),然后每个小盒子(部件)里面还可以放更小的盒子(零件),放入的小盒子将自动代替大盒子原有部分。

在Geant4中,将大盒子称为Mother Volume(母体),小盒子称为Dau ghter Volume(子体)。

除了World Volume之外,每个Volume(体)都必须且只能有一个母体,但可以没有子体,也可以有多个子体。

Geant4的这种盒子模型的要求是:“不交不超”。

“不交”就是要求同一个大盒子里面的小盒子,即同一等级的子体不能有相交的部分;“不超”就是要求小盒子不能超过大盒子的范围,即子体不能超出母体。

Geant4入门指导与安装

Geant4入门指导与安装

Geant4的安装和入门引言Geant4是由CERN(欧洲核子研究委员会)开发的蒙特卡罗应用软件包, 主要用于模拟高能粒子在探测器中输运的物理过程. 它采用面向对象的C++语言编写, 可以构造复杂的探测器几何结构,定制感兴趣的粒子与物理过程模型, 并且能够跟踪粒子的过程, 显示粒子径迹, 处理在输运过程中产生的大量数据.一. Geant4的发展Geant4最初的发展可以追溯到CERN(European Organization for Nuclear Research)和K EK(High Energy Accelerator Research Organization Japan)在1993年的两个研究,他们都是研究如何在Geant3程序中使用现代化的计算技术。

最后CERN DRDC(Detector Research and Development Committee)听取了他们的建议,组织了来自欧洲、俄罗斯、加拿大、日本和美国的几十个实验室、学校和研究所的超过100位科学家和工程师进行了合作,基于C++语言,利用面向对象设计技术对已有的模拟程序进行了重新构造。

这项工程被称之为RD44,初步研究阶段在1998年12月完成,随后在1999年2月Geant4建立了起来,并且在不断的发展和完善的过程中得到了用户的支持和维护。

Geant4已经可以在多种常用操作系统下安装使用,如UNIX、Linux和Windows,需要注意的是在安装Geant4之前需要确定已经安装了相应的C++编译器。

目前正在开发对在MacOs 系统下的使用版本。

Geant4最新的版本是Geant4.6.2.p01,而且Geant4在不断升级的同时,科学家和工程师们也推出了很多基于Geant4,像MULASSIS(多层防护模拟工具)和GEMAT (Geant4微剂量学分析工具)的应用程序。

通过无数人的共同努力,Geant4已经发展成为核物理和空间物理等许多学科方面研究不可或缺的蒙特卡罗模拟工具。

geant4统计粒子通量

geant4统计粒子通量

geant4统计粒子通量GEANT4(GEometry ANd Tracking)是一个用于模拟粒子在物质中传输和相互作用的软件工具包。

在GEANT4中,可以通过用户编写的代码来实现对统计粒子通量的模拟和记录。

以下是一些通用的步骤,你可以根据实际需求进行调整:1.定义探测器:在你的GEANT4应用程序中,首先需要定义探测器来捕获和记录粒子通量。

探测器可以是一个体素网格、一个表面或一个体积,具体取决于你的模拟需求。

2.设置统计量:GEANT4提供了用于记录各种统计信息的工具。

你可以使用`G4SDManager`类来设置和管理探测器的统计信息,例如通量值、能谱等。

3.实现事件动作:在你的事件动作类中,你可以定义粒子在探测器中相互作用时应执行的动作。

这可能包括更新统计信息、记录粒子轨迹等。

4.运行模拟:运行GEANT4模拟并让粒子与你定义的探测器相互作用。

在每个事件结束时,相应的统计信息将被更新。

5.分析结果:在模拟运行结束后,你可以分析和提取已记录的统计信息。

这可能涉及到生成直方图、输出文件或以其他方式处理模拟结果。

下面是一个简化的例子,用于演示如何在GEANT4中记录和获取粒子通量:```cpp//在你的头文件中定义探测器class MyDetector:public G4VSensitiveDetector{public://实现你的探测器类,包括更新统计信息的方法};//在你的事件动作类中使用探测器class MyEventAction:public G4UserEventAction{public://实现事件动作,包括更新探测器的方法};//在你的主程序中初始化和运行GEANT4int main(){//初始化GEANT4//...//定义和设置探测器MyDetector*myDetector=new MyDetector("MyDetector");//...//设置统计信息G4SDManager*sdManager=G4SDManager::GetSDMpointer();sdManager->AddNewDetector(myDetector);//运行GEANT4模拟//...//分析结果//...}```请注意,这只是一个概念性的示例。

Geant4基础知识

Geant4基础知识

Geant4基础知识G4模拟粒子过程:建立一次模拟,在G4 中称为一次Run;Run 建立后,需要对几何结构、物理过程进行初始化;初始化完成后就开始模拟过程了,首先发射一个粒子。

在G4 中,发射一个(或一系列)粒子到所有次级粒子死亡的过程成为一次Event。

而每次发射的初始粒子则有粒子发射器进行控制。

而在每一个event过程中,粒子与材料反应后会可能生成多个次级粒子,每个粒子都会有一条径迹,称之为track;而每一个粒子(初始的或次级的)的径迹又是由很多步组成的,称之为step。

G4模拟的基本算法:A Run Start -> 初始化物理模型/几何模型-> An Event Start -> 调用粒子发射器发射粒子-> A Track Start-> A Step Start-> A Step End-> Next Step Start-> ……-> All Step End-> A Track End-> Next Track Start-> ……-> All Track End-> An Event End -> Next Event Start-> ……-> All Event End(All Primaries Shot) -> A Run End -> Next Run Start-> ……1) main()中应该包括的内容Geant4是一个探测器模拟工具, 但它对于某个特定的模拟程序没有固定的main()函数, 用户在建立模拟程序的过程中需要提供自己的main()函数. 一个最基本的main()函数需要包括以下几个方面:G4RunManager(模拟整个过程)G4VUserDetectorConstruction(定义探测器材料, 几何形状, 灵敏区和读出方案)G4VUserPhysicsList(定义粒子种类和物理过程, 还有截断参数)G4VUserPrimaryGeneratorAction(定义了源粒子的种类, 能量, 出射方向等)一个最简单的main()函数如下:#include ""#include ""#include ""#include ""#include ""int main(){Geant4的类结构Geant4程序代码是根据这个类结构建立起来的, 类结构如下图所示. 下面就是Geant4中每个类的简单说明.1) Run 和Event这些类与模拟事件相关, 产生次级粒子, 为粒子径迹模拟器提供粒子.2) Tracking 和Track根据粒子在探测器材料中的物理过程模拟粒子运行的轨迹, 给出粒子特定时间段在空间的位置, 或者粒子空间时间的分布.3) Geometry, Magnetic Field 和CAD-Interface这三个类就是用来描述探测器几何结构和探测器中电磁场的分布. 为了使探测器几何结构可以在CAD系统中进行修改, Geant4的几何体模型完全与ISO STEP标准一致. 将来Geant4中几何结构的设计将从程序设计中独立出来. 面向对象设计的方法可以让用户在不影响程序其他部分的同时改变几何参数和场. 4) Particle Definition 和Matter这两个类用于定义粒子和探测器材料.5) Physics它提供了粒子与探测器材料相互作用时所发生物理过程的模型, 允许用户为每次反应或每个反应道添加物理模型. 用户根据粒子的种类, 探测器材料和能量范围选择不同的物理模型. Geant4有电磁物理过程和强子物理过程模型, 同时也提供了散射截面数据库.6) Hits 和Digitization这个两个类用于对用户定义的灵敏区内的响应进行采样和分析.7) Visualization它显示了探测器几何形状, 粒子轨迹和碰撞过程. 由于采用了面向对象设计技术来设计可视化部分, 这允许用户独立开发可视化工具, 如: OpenGL 和OpenInventor(为X11和Windows设计), DAWN, Postscript(via DAWN)和VRML.8) Interfaces支持可视化用户界面以及和外加程序的交流(OODBMS, reconstruction等).①User Verbose output class,定义了一个verbosity 变量;②Run manager,定义了一个运行管理器runManager;③User Initialization class es (mandatory),设置两个强制类ExN02DetectorConstruction 和ExN02PhysicsList;④User Action classes,设置用户干涉类ExN02PrimaryGeneratorAction、ExN02RunAction、ExN02EventAction和ExN02SteppingAction;⑤Initialize G4 kernel,“runManager->Initialize()”,初始化GEANT4 内核。

Geant4程序的一点技巧总结

Geant4程序的一点技巧总结

Geant4程序的一点技巧总结Geant4程序的一点技巧总结1.使用IDE使用G4如果能有一个带代码提示功能的IDE,写程序的效率会高不少。

在Linux下,轻量级的IDE有Codelite、code::blocks等,重量一点的IDE如Eclipse和QtCreator这些。

我用过Codelite,后来改成Eclipse,配置方法大致相同,我在前面的Blog里写过。

QtCreator的配置可以参考cnscott的博客()。

我一直很建议学G4的朋友可以看看他写的一些东西,挺有用的。

2.自动配置G4环境因为G4要求每次运行G4编写的程序前都要手工配置G4WORKDIR变量和执行env.sh 配置其他环境变量。

有没办法省去这个步骤呢,办法是有的,我的方法如下:在用户目录下面建一个名叫g4env的文件,把下面的内容写进去:1export G4WORKDIR=$HOME/Geant4/g4work2export LD_LIBRARY_PATH=$HOME/Geant4/clhep/lib/:$LD_LIBRARY_PATH3exportLD_LIBRARY_PATH=$HOME/Geant4/geant4/geant4.9.3/lib/Linux-g++/:$LD_LIBRARY_PATH 4source$HOME/Geant4/geant4/geant4.9.3/env.sh保存,并将这个文件权限用chmod命令设成可执行。

然后在用户的.bashrc文件的末尾添上一行:5source~/g4env>~/.g4envsetting这样每次打开控制台就自动加载g4env脚本,并且把输出的内容存到一个隐藏的临时文件里。

不用每次输入这么多东西了,而且也不会在开启控制台时候显示一堆东西。

3.自定义常用的命令使用Linux的别名功能定义一些常用的“G4命令”,把这些想定义的命令写到上面提到的g4env文件后面,就可以在以后开启控制台直接用了。

Geant4基础知识

Geant4基础知识

Geant4基础知识G4模拟粒子过程:建立一次模拟,在G4 中称为一次Run;Run 建立后,需要对几何结构、物理过程进行初始化;初始化完成后就开始模拟过程了,首先发射一个粒子。

在G4 中,发射一个(或一系列)粒子到所有次级粒子死亡的过程成为一次Event。

而每次发射的初始粒子则有粒子发射器进行控制。

而在每一个event过程中,粒子与材料反应后会可能生成多个次级粒子,每个粒子都会有一条径迹,称之为track;而每一个粒子(初始的或次级的)的径迹又是由很多步组成的,称之为step。

G4模拟的基本算法:A Run Start -> 初始化物理模型/几何模型-> An Event Start -> 调用粒子发射器发射粒子-> A Track Start-> A Step Start-> A Step End-> Next Step Start-> ……-> All Step End-> A Track End-> Next Track Start-> ……-> All Track End-> An Event End -> Next Event Start-> ……-> All Event End(All Primaries Shot) -> A Run End -> Next Run Start -> ……1) main()中应该包括的内容Geant4是一个探测器模拟工具, 但它对于某个特定的模拟程序没有固定的main()函数, 用户在建立模拟程序的过程中需要提供自己的main()函数. 一个最基本的main()函数需要包括以下几个方面:G4RunManager(模拟整个过程)G4VUserDetectorConstruction(定义探测器材料, 几何形状, 灵敏区和读出方案)G4VUserPhysicsList(定义粒子种类和物理过程, 还有截断参数)G4VUserPrimaryGeneratorAction(定义了源粒子的种类, 能量, 出射方向等)一个最简单的main()函数如下:#include "G4RunManager.hh"#include "G4UImanager.hh"#include "ExN01DetectorConstruction.hh"#include "ExN01PhysicsList.hh"#include "ExN01PrimaryGeneratorAction.hh"int main(){// Construct the default run managerG4RunManager* runManager = new G4RunManager;// set mandatory initialization classesrunManager->SetUserInitialization(new ExN01DetectorConstruction); runManager->SetUserInitialization(new ExN01PhysicsList);// set mandatory user action classrunManager->SetUserAction(new ExN01PrimaryGeneratorAction);// Initialize G4 kernelrunManager->Initialize();// get the pointer to the UI manager and set verbositiesG4UImanager* UI = G4UImanager::GetUIpointer();UI->ApplyCommand("/run/verbose 1");UI->ApplyCommand("/event/verbose 1");UI->ApplyCommand("/tracking/verbose 1");// start a runint numberOfEvent = 3;runManager->BeamOn(numberOfEvent);// job terminationdelete runManager;return 0;}main()首先生成一个G4RunManager类,这个类是在主程序中用以初始化模拟信息,用来连接子程序,连接方式是通过Set函数来完成。

Geant4系列讲座四

Geant4系列讲座四

G4VsensitiveDetector类模拟探测器。其原理是在 粒子输运过程中通过Step创建一系列hit对象。 G4VsensitiveDetector类的ProcessHits()方法使用 G4Step对象作为输入。G4VsensitiveDetector类又 三个主要的虚拟函数:
G4bool ProcessHits(G4Step*,G4TouchableHistory*)
G4int GetTrackID() { return trackID; }; G4int GetChamberNb() { return chamberNb; }; G4double GetEdep() { return edep; }; G4ThreeVector GetPos(){ return pos; };
Void Initialize(G4HCofThisEvent*) 每一次Event开始时调用该方法,此方法传递的参 数为G4HcofThisEvent类指针,Event的Hit可以存 放其中(个人理解是类似指针数组的东西,Hit就 是存放的内容,而G4HCofThisEvent就是一个指 向Hit的指针数组,通过这些指针就能找到对应的 Hit)。

} } void ExN02TrackerHit::Print() {
G4cout << " trackID: " << trackID << " chamberNb: " << chamberNb << " energy deposit: " << G4BestUnit(edep,"Energy") << " position: " << G4BestUnit(pos,"Length") << G4endl;

geant4基础学习知识

geant4基础学习知识

Geant4基础知识G4模拟粒子过程:建立一次模拟,在G4 中称为一次Run;Run 建立后,需要对几何结构、物理过程进行初始化;初始化完成后就开始模拟过程了,首先发射一个粒子。

在G4 中,发射一个(或一系列)粒子到所有次级粒子死亡的过程成为一次Event。

而每次发射的初始粒子则有粒子发射器进行控制。

而在每一个event过程中,粒子与材料反应后会可能生成多个次级粒子,每个粒子都会有一条径迹,称之为track;而每一个粒子(初始的或次级的)的径迹又是由很多步组成的,称之为step。

G4模拟的基本算法:A Run Start -> 初始化物理模型/几何模型-> An Event Start -> 调用粒子发射器发射粒子-> A Track Start-> A Step Start-> A Step End-> Next Step Start-> ……-> All Step End-> A Track End-> Next Track Start-> ……-> All Track End-> An Event End -> Next Event Start-> ……-> All Event End(All Primaries Shot) -> A Run End -> Next Run Start -> ……1) main()中应该包括的内容Geant4是一个探测器模拟工具, 但它对于某个特定的模拟程序没有固定的main()函数, 用户在建立模拟程序的过程中需要提供自己的main()函数. 一个最基本的main()函数需要包括以下几个方面:G4RunManager(模拟整个过程)G4VUserDetectorConstruction(定义探测器材料, 几何形状, 灵敏区和读出方案)G4VUserPhysicsList(定义粒子种类和物理过程, 还有截断参数)G4VUserPrimaryGeneratorAction(定义了源粒子的种类, 能量, 出射方向等)一个最简单的main()函数如下:#include "G4RunManager.hh"#include "G4UImanager.hh"#include "ExN01DetectorConstruction.hh"#include "ExN01PhysicsList.hh"#include "ExN01PrimaryGeneratorAction.hh"int main(){// Construct the default run managerG4RunManager* runManager = new G4RunManager;// set mandatory initialization classesrunManager->SetUserInitialization(newExN01DetectorConstruction);runManager->SetUserInitialization(new ExN01PhysicsList);// set mandatory user action classrunManager->SetUserAction(new ExN01PrimaryGeneratorAction);// Initialize G4 kernelrunManager->Initialize();// get the pointer to the UI manager and set verbositiesG4UImanager* UI = G4UImanager::GetUIpointer();UI->ApplyCommand("/run/verbose 1");UI->ApplyCommand("/event/verbose 1");UI->ApplyCommand("/tracking/verbose 1");// start a runint numberOfEvent = 3;runManager->BeamOn(numberOfEvent);// job terminationdelete runManager;return 0;}main()首先生成一个G4RunManager类,这个类是在主程序中用以初始化模拟信息,用来连接子程序,连接方式是通过Set函数来完成。

geant4基本流程

geant4基本流程

geant4基本流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor.I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!深入理解Geant4:一个基本的使用流程指南Geant4,全称为“Geometry, Tracking and Physics 4”,是一个强大的开源软件工具包,主要用于模拟粒子物理学中的物理过程,如粒子的传播、相互作用和探测器的响应。

Geant4基础知识

Geant4基础知识

Geant4基础知识G4模拟粒子过程:建立一次模拟,在 G4 中称为一次Run;Run 建立后,需要对几何结构、物理过程进行初始化;初始化完成后就开始模拟过程了,首先发射一个粒子。

在G4 中,发射一个(或一系列)粒子到所有次级粒子死亡的过程成为一次 Event。

而每次发射的初始粒子则有粒子发射器进行控制。

而在每一个event过程中,粒子与材料反应后会可能生成多个次级粒子,每个粒子都会有一条径迹,称之为 track;而每一个粒子(初始的或次级的)的径迹又是由很多步组成的,称之为step。

G4模拟的基本算法:A Run Start -> 初始化物理模型/几何模型-> An Event Start -> 调用粒子发射器发射粒子-> A Track Start-> A Step Start-> A Step End-> Next Step Start-> ……-> All Step End-> A Track End-> Next Track Start-> ……-> All Track End-> An Event End -> Next Event Start-> ……-> All Event End(All Primaries Shot) -> A Run End -> Next Run Start-> ……1) main()中应该包括的内容Geant4是一个探测器模拟工具, 但它对于某个特定的模拟程序没有固定的main()函数, 用户在建立模拟程序的过程中需要提供自己的main()函数. 一个最基本的main()函数需要包括以下几个方面:G4RunManager(模拟整个过程)G4VUserDetectorConstruction(定义探测器材料, 几何形状, 灵敏区和读出方案)G4VUserPhysicsList(定义粒子种类和物理过程, 还有截断参数)G4VUserPrimaryGeneratorAction(定义了源粒子的种类, 能量, 出射方向等)一个最简单的main()函数如下:#include "G4RunManager.hh"#include "G4UImanager.hh"#include "ExN01DetectorConstruction.hh"#include "ExN01PhysicsList.hh"#include "ExN01PrimaryGeneratorAction.hh"int main(){// Construct the default run managerG4RunManager* runManager = new G4RunManager;// set mandatory initialization classesrunManager->SetUserInitialization(new ExN01DetectorConstruction);runManager->SetUserInitialization(new ExN01PhysicsList);// set mandatory user action classrunManager->SetUserAction(new ExN01PrimaryGeneratorAction);// Initialize G4 kernelrunManager->Initialize();// get the pointer to the UI manager and set verbositiesG4UImanager* UI = G4UImanager::GetUIpointer();UI->ApplyCommand("/run/verbose 1");UI->ApplyCommand("/event/verbose 1");UI->ApplyCommand("/tracking/verbose 1");// start a runint numberOfEvent = 3;runManager->BeamOn(numberOfEvent); // job terminationdelete runManager;return 0;}main()首先生成一个 G4RunManager类,这个类是在主程序中用以初始化模拟信息,用来连接子程序,连接方式是通过 Set函数来完成。

基于Geant4_的核孔膜生产模拟研究

基于Geant4_的核孔膜生产模拟研究

第38卷第1期2024年2月南华大学学报(自然科学版)Journal of University of South China(Science and Technology)Vol.38No.1Feb.2024收稿日期:2023-09-05基金项目:厦门市青年创新基金资助项目(3502Z20206025)作者简介:张倩影(1990 ),女,工程师,硕士,主要从事核技术应用㊁城市安全评价方面的研究㊂E-mail:skrvvtg@㊂∗通信作者:傅楗强(1990 ),男,助理研究员,博士,主要从事辐射物理与探测技术方面的研究㊂E-mail:fujq12@DOI :10.19431/ki.1673-0062.2024.01.012基于Geant4的核孔膜生产模拟研究张倩影,傅楗强∗(清华海峡研究院(厦门),福建厦门361015)摘㊀要:利用核反应堆产生的裂变重离子碎片辐照固体薄膜,是生产核孔膜的主要方式之一㊂为优化反应堆核孔膜生产工艺参数,给核孔膜生产提供理论指导,本文基于Geant4开发了反应堆生产核孔膜的原理性模拟程序,对铀靶在热中子辐照下裂变碎片的生成及出射物理过程开展模拟,并分析计算了不同厚度下铀靶裂变碎片的出射能量㊁角度分布,从理论上优化了核孔膜生产中的铀靶厚度及固体薄膜厚度㊂结果表明,铀靶厚度为4μm 时裂变碎片出射强度最高;受裂变碎片射程的限制,反应堆生产核孔膜所用的固体薄膜的厚度最大约为8μm ㊂关键词:核孔膜;Geant4;蒙特卡洛模拟中图分类号:TL99文献标志码:A文章编号:1673-0062(2024)01-0090-07Geant 4-based Simulation Study of Nuclear Track-etchedMembrane ProductionZHANG Qianying ,FU Jianqiang ∗(Cross-strait Tsinghua Research Institute,Xiamen,Fujian 361015,China)Abstract :One of the main ways to produce nuclear track-etched membrane is irradiating solid membranes with the fission fragments produced by nuclear reactor.In order to opti-mize the production process parameters of nuclear track-etched membranes and provide theoretical guidance for nuclear track-etched membrane production,a simulation program is developed based on Geant4to simulate the process of nuclear track-etched membrane produced by nuclear reactor.The physical process of generation and emission of neutron-induced Uranium 235fission fragments are studied,and the energy and angular distribu-tions of fission fragments under different thicknesses of the target are analyzed and calculat-ed.The thickness of the Uranium target and solid membrane are optimized theoretically.It9第38卷第1期张倩影等:基于Geant4的核孔膜生产模拟研究2024年2月can be concluded that a4μm thick Uranium target has the highest emission intensity offission fragments.The maximum thickness of the solid membranes is about8μm,which islimited by the range of fission fragments.key words:nuclear track-etched membrane;Geant4;Monte Carlo simulation0㊀引㊀言核孔膜是利用反应堆或加速器产生的重离子辐照绝缘固体薄膜,后经化学蚀刻,在薄膜中生成纳米至微米级的穿透性微孔[1]㊂核孔膜具有表面坚实光滑㊁孔形规则㊁孔径均一等特性,在医药精密过滤㊁精细化工㊁生化分析㊁电池隔膜㊁微量探测等高端领域均有重要应用价值[2-4]㊂重离子辐照固体薄膜是核孔膜生产中的关键环节㊂国内外许多机构已开展加速器生产核孔膜的物理仿真工作[5-6],对影响核孔膜性能的加速器辐照要素进行剖析,进而优化核孔膜生产工艺㊂而针对反应堆生产核孔膜的物理仿真工作,鲜见公开发表文献㊂蒙特卡洛方法是核物理模拟的常用方法[7],本文基于蒙特卡洛程序包Geant4搭建了反应堆生产核孔膜原理性仿真平台,可物理仿真热中子辐照下靶材出射裂变碎片的种类㊁能量㊁角度等数据,及裂变碎片经准直后在固体薄膜中形成潜径迹的过程㊂利用该仿真平台,可对靶材㊁准直器㊁固体薄膜等相关参数开展物理分析及模拟计算,从而优化反应堆生产核孔膜中的物理结构设计和工艺参数㊂1㊀仿真平台设计1.1㊀几何结构模型反应堆生产核孔膜的基本流程可以概括为:热中子与靶材作用,产生裂变碎片;裂变碎片从靶材出射后经准直器准直;准直后的裂变碎片入射固体薄膜,与薄膜基材发生作用形成潜径迹;化学蚀刻潜径迹生成微孔㊂参考生产中的真实结构[8],本文构建了简化的几何结构模型,如图1所示包括中子源㊁靶件㊁准直器㊁固体薄膜四部分㊂1)中子源:反应堆堆芯核裂变产生的快中子,通过慢化技术慢化为热中子㊂本文模拟中将中子源简化为能量分布满足麦克斯韦分布的热中子,入射方向垂直于靶件所在平面㊂2)靶件:靶件为平面结构,常见的靶基材为铝㊂靶材通常为中子诱发可核裂变材料㊂裂变材料镀在200μm厚的铝基材上,镀层的厚度通常为微米量级㊂靶材的材料和厚度均可在程序中设置㊂本文模拟中,靶材材料固定为铀235丰度为90%的金属铀,厚度可调节㊂图1㊀模拟采用的几何结构模型图Fig.1㊀The geometric structure model used inthe simulation3)准直器:由于出射裂变碎片的角度分布具有随机性,生产中通常利用准直器对出射裂变碎片进行角度筛选㊂仿真平台通过设置不同的准直器结构,可对出射裂变碎片进行角度筛选,从而得到不同准直角度下出射裂变碎片的物理数据㊂本文的研究重点在于靶材裂变反应和出射过程的模拟,暂未开展准直器的优化研究工作㊂本文模拟中采用固定结构的准直器,可筛选出射角小于40ʎ的裂变碎片(出射角的定义为:碎片出射方向与靶件平面法线的夹角)㊂4)固体薄膜:常用于制备核孔膜的膜材料有聚对苯二甲酸乙二醇酸(polyethy-lene terephthalate, PET)㊁聚碳酸酯(polycarbonate,PC)等薄膜,厚度从数微米到数十微米不等㊂固体薄膜的基材材料和厚度均可在程序中设置㊂本文模拟中固体薄膜材料采用聚酯材料,化学式为C10H8O4,密度为1.40g/cm3㊂1.2㊀Geant4程序开发本文采用国际通用的成熟开源软件Geant4 (GEometry ANd Tracking4几何与跟踪程序第419第38卷第1期南华大学学报(自然科学版)2024年2月版)对上述过程进行模拟㊂Geant4是由欧洲核子研究组织(European Organization for Nuclear Re-search,简称CERN)开发的专门模拟粒子与物质相互作用的C++开源蒙特卡洛程序包[9]㊂用户可以根据需求自由更改㊁扩充程序㊂Geant4模拟的准确性已被广大科研人员所认可,被广泛的运用在高能物理㊁天文学㊁核医学㊁国土安全等领域㊂本文的模拟工作,程序运行版本为Geant4.10.06㊂1.2.1㊀粒子源设置Geant4中初级事件的生成主要是使用粒子发生器来完成㊂本文模拟使用G4ParticleGun作为粒子发生器,通过G4ParticleGun类,可以定义中子源的发射方向㊁位置㊁能量,从而模拟实际的中子源分布㊂本文模拟中将中子源简化为单一入射方向,能量分布满足麦克斯韦分布的热中子束流,最可几能量为0.0253eV㊂1.2.2㊀物理列表和环境变量设置物理列表和环境变量设置是本文仿真平台开发中的难点㊂物理过程主要描述粒子如何与物质发生相互作用㊂在本文模拟中,热中子与靶材作用发生核反应,进而生成裂变碎片是关键物理过程,为此需在程序中加入相关核裂变物理过程㊂Geant4中对物理过程和粒子的定义主要在Phys-icsList类中进行㊂本文的模拟从Geant4已有的PhysicsList中选择满足中子输运物理过程的列表,并通过相关设置激活裂变碎片的模拟㊂热中子诱发靶材裂变,需要模拟详细的中子输运过程㊂Geant4中可使用NeutronHP程序包(high precision neutron package)来模拟20MeV以下的低能中子反应㊂物理表QGSP_BIC_HP包含了NeutronHP模型,因此在主程序中将PhysicsList 设置为QGSP_BIC_HP㊂针对裂变碎片生成的模拟,B.Wendt开发了一种新的裂变事件模型,命名为裂片碎片生成器FFG(fission fragment generator)[10]㊂FFG可准确地模拟裂变事件,包括裂变碎片的质量和能量等参数㊂FFG已被集成到Geant410.0以上的版本,使用FFG需启用WENDT_FISSION_MODEL㊂裂片碎片生成的产额分布调用了G4NDL4.6/ Fission/FF中的相关截面数据,运行前需确保Geant4的数据库中已下载了G4NDL4.6库㊂由于Geant4的缺省设置里关闭了裂变碎片的生成过程,需要通过环境变量的配置来开启裂变碎片的模拟㊂在QGSP_BIC_HP物理表的基础上,将系统环境变量G4NEUTRONHP_PRODUCE_FISSION_FRAGMENTS和G4NEUTRON_HP_USE_ WENDT_FISSION_MODEL设置为YES㊂通过以上设置,仿真平台方可模拟核裂变并生成裂变碎片㊂物理过程中对反应步长的配置见下一小节㊂1.2.3㊀反应步长设置靶材和固体薄膜的厚度通常在微米量级㊂为了精确记录裂变碎片的运动轨迹,需对Geant4运行中Step的最大步长进行设置㊂设置方法为在文件中,对靶材和固体薄膜对应的逻辑体配置SetUserLimits();在主文件中,对物理列表PhysicsList调用RegisterPhysics (new G4StepLimiterPhysics())命令㊂本文的模拟中,最大步长设置为0.01μm㊂1.2.4㊀数据存储设置Geant4详细地模拟了每个事例中生成各个次级粒子输运过程中的动量㊁能量㊁时间及位置坐标信息㊂本文聚焦裂变碎片的运动径迹和能量沉积过程,在文件中,编写输出文件,将每个事例中裂变碎片Track的详细数据,写入二进制格式文件,用于后续的统计分析㊂2㊀计算结果与讨论2.1㊀初始裂变碎片的统计分析初始裂变碎片是指热中子辐照下铀235靶核发生裂变反应,生成的两个重离子碎片㊂不同厚度的铀靶,生成的初始裂变碎片在理论上具有相同的统计特性,本文以靶材厚度1μm的数据为例进行统计分析㊂图2给出了热中子辐照下铀235靶核发生核裂变,生成的初始裂变碎片按动能和质量数分布的二维散点图,图中分布呈两个明显束团㊂图2㊀裂变碎片按能量与质量数分布的二维散点图Fig.2㊀The scatter plot of fission fragmentsdistribution according to energy and mass29第38卷第1期张倩影等:基于Geant4的核孔膜生产模拟研究2024年2月图3给出了初始裂变碎片按照质量数和能量的裂变产额㊂裂变碎片的质量分布形成双峰,在幻数(A ~132)及其互补(A ~102)碎片附近的核素产额高于其他核素㊂裂变碎片动能主要分布在50~120MeV 的范围内,且明显成两个能带分布,轻碎片的动能高于重碎片的动能,服从动量守恒定律㊂每个碎片的初始动能对应约107m /s 的速度量级㊂图3㊀铀235按裂变碎片质量数的裂变产额和按能量的裂变产额Fig.3㊀The fission yield of U235as a function of product fragments mass number and product fragments energy㊀㊀以铀靶所在平面为XY 平面,铀靶的法线为Z轴,统计初始裂变碎片的出射方向㊂统计结果显示,初始碎片的出射方向为4π立体角内的均匀出射㊂2.2㊀靶材厚度的影响本文模拟中设置了不同的靶材厚度,以此探究不同靶材厚度下出射裂变碎片物理参数的变化㊂2.2.1㊀靶厚对出射强度影响中子通量一定的情况下,铀靶厚度越大,与热中子作用发生裂变的概率越大,产生的初始裂变碎片越多㊂但随着铀靶厚度的增大,裂变碎片从铀靶出射的几率随之减小㊂对不同靶材厚度,模拟计算靶核裂变概率(裂变事例与入射中子数之比)㊁表面出射概率(出射裂变碎片与裂变事例之比),绘制曲线如图4所示㊂从图4中可以看出,靶核裂变概率与靶材厚度成正比增加,表面出射概率随靶材厚度增加逐渐减小㊂定义靶核裂变概率与表面出射概率两者的乘积为出射强度系数㊂提高裂变碎片出射强度可减少辐照时间,对核孔膜的生产是有益㊂中子通量一定的情况下,裂变碎片出射强度随着靶材厚度增加而增强并逐渐达到饱和,靶材厚度为4μm 时出射强度系数达到极值,此时继续增加靶材厚度已经没有意义㊂从出射强度系数变化曲线来看,靶材厚度要控制在4μm 以下,这样既能节省靶材,又能保证较高的裂变碎片出射强度㊂图4㊀靶核裂变概率㊁表面出射概率以及出射强度系数随靶材厚度的变化曲线Fig.4㊀The variation curve of target fission probability ,surface emission probability and emission intensity coefficient with target thickness2.2.2㊀靶厚对出射能量影响如图5所示,裂变碎片在铀靶的运动径迹长度L 与核裂变发生点在靶材的深度D 和出射角θ关系为L =D cos θ(1)㊀㊀从式(1)可见,初始裂变碎片生成点在铀靶中的深度D 越大,出射角θ越大,则出射前裂变碎片在铀靶内的运动径迹L 越长,损失的能量也越39第38卷第1期南华大学学报(自然科学版)2024年2月大,导致出射裂变碎片的能量降低㊂图5㊀裂变碎片在铀靶中运动轨迹示意图Fig.5㊀The schematic diagram of the trajectory offission fragments in the Uranium target模拟计算了不同靶材厚度下,铀靶表面出射裂变碎片的能量分布情况,如图6所示㊂可见随着铀靶厚度的增加,出射能谱向低能区发生弥散㊂出射能谱的低能弥散现象,意味着出射碎片中有大量低能的粒子,这些粒子在固体薄膜内的射程很短㊂若裂变碎片不能穿透固体薄膜,会引起核孔膜中的 盲孔 ㊂为了评估初始裂变碎片在铀靶中的深度D 和出射角θ两个因素对低能弥散现象的贡献,统计了不同靶材厚度下,裂变碎片从靶材表面出射能量与出射角度的分布散点图㊂从图7中可以看出,靶材厚度非常薄时,出射碎片的能量呈明显的两条能带㊂随着靶材厚度的增加,出射碎片的能量向低能出现弥散,且出射角度越大,弥散越严重㊂图6㊀不同靶材厚度下,裂变碎片从靶材表面出射的能谱图Fig.6㊀The energy spectrums of the emission fissionfragments from the target under differenttargetthicknesses图7㊀不同靶材厚度下,裂变碎片从靶材出射能量与出射角度的二维散点图Fig.7㊀The relationship of the energy and angle of the emission fission fragments fromthe target under different target thicknesses49第38卷第1期张倩影等:基于Geant4的核孔膜生产模拟研究2024年2月㊀㊀低能弥散受靶材厚度和出射角度两个因素叠加的影响㊂尤其是出射角度大于50ʎ时,裂变碎片在质量和能量上的分散性都很大,大量能量低的裂变碎片无法贯穿固体薄膜而形成核孔膜的盲孔㊂从这个角度考虑,为了保障核孔膜的通孔率,一方面靶材的厚度应该适当的薄,另一方面需通过准直器屏蔽出射角度过大的低能粒子㊂2.3㊀准直器的作用从图7的分布图可以看出,低能量的裂变碎片主要集中在大出射角区域㊂通过准直器筛选出射角度较小的粒子,同时选用适宜的靶材厚度,可以解决低能弥散的问题㊂准直器的代价是牺牲出射碎片的强度,对于本文模拟中采用的40ʎ准直器,靶材厚度在0.2μm 至1.0μm 区间,出射碎片强度衰减为原先的25%左右㊂不同靶材厚度下,经准直的出射碎片能谱如图8所示,可见随靶材厚度的增加,经准直后的出射碎片的平均能量和最低能量都在逐步下降㊂如靶材厚度为0.6μm 时,出射碎片的最低能量约为40MeV㊂图8㊀不同靶材厚度下,经准直的裂变碎片能谱图Fig.8㊀The energy spectrums of the collimated fissionfragments under different target thicknesses2.4㊀固体薄膜厚度的选取由于裂变碎片出射的种类㊁能量㊁方向均存在差别,导致碎片可穿透固体薄膜的最大深度存在一定的涨落㊂且裂变碎片出射能量有限,最低能量通常低于50MeV,因此生产中对固体薄膜的厚度有较为严苛的限制㊂模拟计算不同靶材厚度下,经准直器后,各裂变碎片可穿透固体薄膜最大深度d (d 为粒子径迹在固体薄膜法线方向的投影长度);然后统计d 的分布,定义概率分布函数F (T )=P {d >T }㊂以核孔膜的盲孔率为0.5%为例,计算不同靶材厚度下,F (T )=0.995时的T 值,此时的T 值即为生产核孔膜时所允许的固体薄膜最大厚度,两者关系绘制图9所示㊂图9㊀不同靶材厚度下,允许的固体薄膜最大厚度值Fig.9㊀The maximum membrane thickness underdifferent target thicknesses参考图9结果,为了确保低的盲孔率,核孔膜生产中固体薄膜的最大厚度不宜超过8μm㊂生产中建议采用0.4μm 厚的靶材,此时选用7μm 厚的固体薄膜㊂3㊀结㊀语利用反应堆产生的裂变重离子碎片辐照固体薄膜,是生产核孔膜的主要方式之一㊂在核孔膜生产过程中,裂变碎片与固体薄膜相互作用,在薄膜中形成潜径迹,是后续化学蚀刻的基础㊂本文利用Geant4搭建了反应堆生产核孔膜原理性仿真平台,可物理仿真热中子辐照下靶材出射裂变碎片的种类㊁能量㊁角度等数据,及裂变碎片经准直后在固体薄膜中形成潜径迹的过程㊂利用该平台,本文重点对靶材厚度㊁固体薄膜厚度等核孔膜生产中的相关参数开展物理分析及模拟计算,并得出了优化后的工艺参数㊂模拟结果表明,铀靶厚度为4μm 时裂变碎片出射强度最高;受裂变碎片射程的限制,反应堆生产核孔膜所用的固体薄膜(聚酯)的厚度不宜超过8μm㊂上述模拟结果与参考文献[8]的结果相吻合,证明了模拟计算的可靠性㊂核孔膜生产中可采用0.4μm 厚的靶材,40度的准直器,此时可选用7μm 厚的固体薄膜(聚酯)㊂后续工作中,以现有的原理性仿真平台为核59第38卷第1期南华大学学报(自然科学版)2024年2月心,逐步丰富靶材㊁固体薄膜等材料数据库,并开发图形化操作界面,实现模拟过程的可视化,最终完成一套反应堆生产核孔膜参数优化辅助平台㊂参考文献:[1]APEL P.Track etching technique in membrane technology [J].Radiation measurements,2001,34(1):559-566.[2]郭洪英,黄正德.离子微孔膜的研究及应用[J].核技术,2002,25(7):559-564.[3]郭士伦,张东海,王宇钢.固体核径迹研究进展[J].山西师范大学学报(自然科学版),2017,31(1): 40-49.[4]蔡畅,陈琪,苗晶,等.聚碳酸酯和聚酯核孔膜的性能研究[J].核技术,2017,40(10):26-32. [5]秦久昌,张桂莲,崔心炜,等.HI-13串列加速器核孔膜辐照专用束流线的研制[J].原子能科学技术,2000,34(6):550-552.[6]刘庆云,周剑良,刘永辉,等.纳米孔径重离子微孔膜的制备[J].原子能科学技术,2012,46(3):341-345.[7]许淑艳.蒙特卡罗方法在实验核物理中的应用[M].北京:原子能出版社,1996:20-25.[8]KOSAREV S A,TUMANOV A A.Measurement of235U fis-sion fragment range in thin lavsan films[J].Atomic energy, 2003,94(4):271-273.[9]ALLISON J,AMAKO K,APOSTOLAKIS J,et al.Recent developments in Geant4[J].Nuclear instruments and methods in physics research,section A:accelerators, spectrometers,detectors and associated equipment,2016, 835:186-225.[10]DUBROUSK I A,KIYAVITSKAYA A I.Simulation ofneutronics of an accelerator driven system[J].Physicsof particles and nuclei letters,2020,17:19-26.(上接第79页)[14]REN F,JI Y,CHEN F,et al.Flower-like bimetal Ni/Co-based metal-organic-frame work materials withadjustable components toward high performance solid-state supercapacitors[J].Materials chemistry frontiers, 2021,5(19):7333-7342.[15]LIU Y X,WANG Y Z,CHEN Y J,et al.NiCo-MOFnanosheets wrapping polypyrrole nanotubes for high-per-formance supercapacitors[J].Applied surface science, 2020,507:145089.69。

g4文件语法

g4文件语法

g4文件语法G4文件语法是指Geant4模拟软件的物理描述文件语言,是一种基于C++语言开发的高级模拟软件。

该语法提供了一种描述粒子传输行为、相互作用等物理过程的形式化方法。

G4文件语法的结构是由一系列的命令和参数组成,用于描述物理实验中大量的模拟场景,从而模拟粒子与物质的相互作用过程,包括初能量、相对论效应、同位素效应、电子传输、电磁束流等多种具有复杂性的物理过程。

G4文件语法的编写可以在图形或命令行界面下完成,在命令行界面下可以用文本编辑器进行编写。

G4文件语法的编辑需要根据Geant4版块的不同,由不同的命令和参数组成。

以下是几种常见的命令:1. /run/beamOn N:运行N个事件。

2. /run/saveRndmState fileName:保存随机数生成器的状态。

3. /event/verbose level:设置事件输出的详细程度。

4. /geometry/verbose level:设置几何体输出的详细程度。

5. /physics_lists/verbose level:设置粒子物理过程输出的详细程度。

6. /tracking/verbose level:设置粒子跟踪过程输出的详细程度。

7. /run/initialize:初始化全局变量。

8. /run/setCut value:设置能量截止值,控制粒子的模拟过程。

G4文件语法的编写需要遵循一些规则,例如所有命令必须以“/”开头,命令和参数之间必须使用空格分隔,不能有中文字符等。

总之,G4文件语法是Geant4模拟软件的重要组成部分,为模拟粒子物理行为和相互作用提供了强大的描述能力,是物理实验研究中不可缺少的工具。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

A unique physical volume which represents the experimental area must exist and fully contain all other components
The world volume
Geant4 Course – M. G. Pia
Dresden, 18 October 2008
http://www.ge.infn.it/geant4/events/nss2008/geant4course.html
This course exploits training material developed by several Geant4 Collaboration members: thanks to all of them!
Geant4 Course – M. G. Pia
24
Solids
Solids defined in Geant4: CSG (Constructed Solid Geometry) solids − G4Box, G4Tubs, G4Cons, G4Trd, … − Analogous to simple GEANT3 CSG solids Specific solids (CSG like) − G4Polycone, G4Polyhedra, G4Hype, … BREP (Boundary REPresented) solids − G4BREPSolidPolycone, G4BSplineSurface, … − Any order surface Boolean solids − G4UnionSolid, G4SubtractionSolid, …
Define detector geometry
Basic strategy
G4VSolid* boxSolid = new G4Box(“aBoxSolid”, 1.*m, 2.*m, 3.*m); G4LogicalVolume* boxLogical = new G4LogicalVolume( boxSolid, boxMaterial, “aBoxLog”, 0, 0, 0); G4VPhysicalVolume* boxPhysical = new G4PVPlacement( rotation, G4ThreeVector(posX, posY, posZ), boxLogical, “aBoxPhys”, motherLogical, 0, copyNo);
Geant4 Course – M. G. Pia
25
CSG: G4Tubs, G4Cons
These are simple shapes you would probably like to exercise in your first application
G4Tubs(const G4String& G4double G4double G4double G4double G4double G4Cons(const G4String& G4double G4double G4double G4double G4double G4double G4double pname, pRmin, pRmax, pDz, pSphi, pDphi); pname, pRmin1, pRmax1, pRmin2, pRmax2, pDz, pSphi, pDphi);
G4VSolid G4LogicalVolume G4VPhysicalVolume
G4Box
G4Material
G4VisAttributes
G4PVPlacement
G4Tubs
G4VSensitiveDetector
Geant4 Course – M. G. Pia
G4PVParameterised
− − −
reduces use of memory Replica
simple repetition, similar to GEANT 3 divisions
placement
Parameterised
A mother volume can contain either
Physical Volume
Define detector geometry
Three conceptual layers
− G4VSolid -- shape, size − G4LogicalVolume -- daughter physical volumes, material, sensitivity, user limits, etc. − G4VPhysicalVolume -- position, rotation
G4LogicalVolume(G4VSolid* solid, G4Material* material, const G4String& name, G4FieldManager* fieldManager=0, G4VSensitiveDetector* sensitiveDet=0, G4UserLimits* userLimits=0, G4bool optimise=true); The pointers to solid and material should NOT be null
Additional constructor using planes
Geant4 Course – M. G. Pia
Logical Volume
Geant4 Course – M. G. Pia
Logical Volume
Contains all information of volume except position: − Shape and dimension (G4VSolid) − Material, sensitivity, visualization attributes − Position of daughter volumes − Magnetic field, User limits − Shower parameterisation
Geant4 Course – M. G. Pia
Geometry
Basic concepts of Geant4 geometry
Special thanks to Gabriele Cosmo for creating the original material for Detector Description to be used in Geant4 training
Geant4 Course – M. G. Pia
Creating a Detector Volume
Recipe
Start with its shape and size
− Box 3x5x7 cm3, sphere R=8 m
Solid Logical Volume
Add properties
− Single placement − Repeated placement (replicas, parameterization, ...)
Volumes are part of a geometrical hierarchy:
− Volumes always have a mother volume (except the world volume) − Volumes may have several daughter volumes G4VPhysicalVolume is the base class of physical volumes
IEEE Nuclear Science Symposium and Medical Imaging Conference
Short Course
Simulation Techniques Using Geant4
Maria Grazia Pia (INFN Genova, Italy)
MariaGrazia.Pia@ge.infn.it
// name // inner radius // outer radius // Z half length // starting Phi // segment angle // name // inner radius -pDz
// // // // // //
outer radius -pDz inner radius +pDz outer radius +pDz Z half length starting Phi segment angle
Solids
Geant4 Course – M. Gபைடு நூலகம் Pia
G4VSolid
Abstract class
− All solids in Geant4 derive from it − All solids can be treated transparently in Geant4 kernel through their base class
− Use the derived classes to place your logical volumes
Geant4 Course – M. G. Pia
Placing Physical Volumes
Placement: one positioned volume Repeated: a volume placed many times
Geant4 Course – M. G. Pia
Specific CSG Solids: G4Polycone
…then you may want to play with more complicated shapes
相关文档
最新文档