欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Geant4基础知识.docx

    • 资源ID:5772856       资源大小:80.29KB        全文页数:19页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Geant4基础知识.docx

    1、Geant4基础知识Geant4基础知识 G4模拟粒子过程:建立一次模拟,在 G4 中称为一次Run;Run 建立后,需要对几何结构、物理过程进行初始化;初始化完成后就开始模拟过程了,首先发射一个粒子。在G4 中,发射一个(或一系列)粒子到所有次级粒子死亡的过程成为一次 Event。而每次发射的初始粒子则有粒子发射器进行控制。而在每一个event过程中,粒子与材料反应后会可能生成多个次级粒子,每个粒子都会有一条径 迹,称之为 track;而每一个粒子(初始的或次级的)的径迹又是由很多步组成的,称之为step。G4模拟的基本算法:A Run Start - 初始化物理模型/几何模型- An Ev

    2、ent 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是一个探测器模拟工具, 但它对于某个特

    3、定的模拟程序没有固定的main()函数, 用户在建立模拟程序的过程中需要提供自己的main()函数. 一个最基本的main()函数需要包括以下几个方面: G4RunManager(模拟整个过程) G4VUserDetectorConstruction(定义探测器材料, 几何形状, 灵敏区和读出方案) G4VUserPhysicsList(定义粒子种类和物理过程, 还有截断参数) G4VUserPrimaryGeneratorAction(定义了源粒子的种类, 能量, 出射方向等) 一个最简单的main()函数如下:#include G4RunManager.hh#include G4UIman

    4、ager.hh #include ExN01DetectorConstruction.hh#include ExN01PhysicsList.hh#include ExN01PrimaryGeneratorAction.hhint main() / Construct the default run manager G4RunManager* runManager = new G4RunManager; / set mandatory initialization classes runManager-SetUserInitialization(new ExN01DetectorConstru

    5、ction); runManager-SetUserInitialization(new ExN01PhysicsList); / set mandatory user action class runManager-SetUserAction(new ExN01PrimaryGeneratorAction); / Initialize G4 kernel runManager-Initialize();/ get the pointer to the UI manager and set verbosities G4UImanager* UI = G4UImanager:GetUIpoint

    6、er(); UI-ApplyCommand(/run/verbose 1); UI-ApplyCommand(/event/verbose 1); UI-ApplyCommand(/tracking/verbose 1); / start a run int numberOfEvent = 3; runManager-BeamOn(numberOfEvent); / job termination delete runManager; return 0;main()首先生成一个 G4RunManager类,这个类是在主程序中用以初始化模拟信息,用来连接子程序,连接方式是通过 Set函数来完成。

    7、 例如:BDetectorConstruction* detector = new BDetectorConstruction; runManager-SetUserInitialization(detector);先构造一个探测器几何,再用 SET 函数初始化。用 new申请的空间,在程序完成后需要释放空间,否则出错。注意:GEANT4中,在runManager上面说明的其他类会自动释放。所以不需要一一释放。其 他类按照重要性分为强制类和可选类。 其中几何结构类(DetectorConstruction)、物理设定类(PhysicsList)、源描述类(PrimaryGenerator)都

    8、属于强制类,缺少任一个程序都无法运行。而事件处理类(EventAction)、步数据处理类(SteppingAction)、径迹处理类 (TrackingAction)、运行处理类(RunAction)都属于可选类,用户可以通过设定这些类来获取感兴趣的数据,可以按照自己的需要添 加。包含强制类之后程序就可以运行了,但只能检验几何结构的完备性,所以为了获得数据必须设定可选类。1. Geant4的类结构 Geant4程序代码是根据这个类结构建立起来的, 类结构如下图所示. 下面就是Geant4中每个类的简单说明. 1) Run 和 Event 这些类与模拟事件相关, 产生次级粒子, 为粒子径迹模拟

    9、器提供粒子. 2) Tracking 和 Track 根据粒子在探测器材料中的物理过程模拟粒子运行的轨迹, 给出粒子特定时间段在空间的位置, 或者粒子空间时间的分布.3) Geometry, Magnetic Field 和 CAD-Interface 这三个类就是用来描述探测器几何结构和探测器中电磁场的分布. 为了使探测器几何结构可以在CAD系统中进行修改, Geant4的几何体模型完全与ISO STEP标准一致. 将来Geant4中几何结构的设计将从程序设计中独立出来. 面向对象设计的方法可以让用户在不影响程序其他部分的同时改变几何参数和场. 4) Particle Definition

    10、和 Matter 这两个类用于定义粒子和探测器材料.5) Physics 它提供了粒子与探测器材料相互作用时所发生物理过程的模型, 允许用户为每次反应或每个反应道添加物理模型. 用户根据粒子的种类, 探测器材料和能量范围选择不同的物理模型. Geant4有电磁物理过程和强子物理过程模型, 同时也提供了散射截面数据库. 6) Hits 和 Digitization 这个两个类用于对用户定义的灵敏区内的响应进行采样和分析. 7) Visualization 它显示了探测器几何形状, 粒子轨迹和碰撞过程. 由于采用了面向对象设计技术来设计可视化部分, 这允许用户独立开发可视化工具, 如: OpenG

    11、L 和 OpenInventor(为X11和Windows设计), DAWN, Postscript(via DAWN)和VRML.8) Interfaces 支持可视化用户界面以及和外加程序的交流(OODBMS, reconstruction等).User Verbose output class,定义了一个verbosity 变量; Run manager,定义了一个运行管理器runManager; User Initialization classes (mandatory),设置两个强制类 ExN02DetectorConstruction 和ExN02PhysicsList;User

    12、 Action classes,设置用户干涉类 ExN02PrimaryGeneratorAction、ExN02RunAction、 ExN02EventAction和 ExN02SteppingAction; Initialize G4 kernel,“runManager-Initialize()”,初始化GEANT4 内核。构造探测器,生成物理过程,计算截面以及其他; Get the pointer to the User Interface manager,获取 UI管理器的指针; batch mode,定义了批处理模式; interactive mode : define visu

    13、alization and UI terminal; 定义了交互模式的可视化和UI终端;2.构建模型:在Geant4 中首先要建立一个最大的盒子,称为World Volume,然后往这个大盒子里面放各种各样的小盒子(部件),然后每个小盒子 (部件) 里面还可以放更小的盒子 (零件) , 放入的小盒子将自动代替大盒子原有部分。在 Geant4中,将大盒子称为 Mother Volume (母体),小盒子称为 Daughter Volume (子体)。除了World Volume之外,每个 Volume(体)都必须且只能有一个母体,但可以没有子体,也可以有多个子体。Geant4 的这种盒子模型的要

    14、求是:“不交不超”。Geant4 中每个这样的盒子的安放又分为两步。第一步是构建盒子,称为 Logical Volume(逻辑体);第二步是将盒子摆放到正确位置,变为 Physical Volume(物理体)。 构 建盒子又分为两步,第一步是确定盒子形状,第二步是确定盒子的材料等属性。 形状在Geant4 中被称为 Solid。在 Geant4 中提供了多种固有的形状,如球形、长方体、锥体等,可以在$G4INSTALL/source/geometry/solids 里面查找。 用户也可以通过 G4VSolid类构建自己的形状,参见:$G4INSTALL/source/geometry/mana

    15、gement/include /G4VSolid.hh。 此外,对于一些复杂的形状,用户也可以利用基本形状通过交并补等布尔运算方式完成,布尔运算的方式请参考$G4INSTALL/source/geometry/solids/Boolean。确定了盒子形状后,就是设置盒子的材料、磁场等属性。这些属性的设置通过G4LogicalVolume类来完成,设置方法如下:G4LogicalVolume(G4VSolid* pSolid, /形状 G4Material* pMaterial, /材料 const G4String& name, /逻辑体名字 G4FieldManager* pFieldMgr

    16、=0, /场管理 G4VSensitiveDetector* pSDetector=0, /是否 SD 探测器 G4UserLimits* pULimits=0, /用户限制 G4bool optimise=true); /是否优化 盒子造完了就该摆放盒子了。摆放盒子也有两种方法,一种是直接构建物理体,另一种是指定摆放方法。直接构建物理体是通过 G4VPhysicalVolume 类,其定义方法如下: G4VPhysicalVolume(G4RotationMatrix *pRot, /旋转方式 const G4ThreeVector &tlate, /摆放坐标 const G4String

    17、&pName, /物理体名字 G4LogicalVolume *pLogical, /对应的逻辑体 G4VPhysicalVolume *pMother); /母体 如果 pMother=0就表明这个体是一个World Volume,World Volume 必须且只能有一个。 在实际应用中,我们通常采用指定摆放方法的方式来完成物理体的构建。 指定摆放方法是通过G4PVPlacement 类完成。G4PVPlacement类是 G4VPhysicalVolume 的派生类,该类提供了多种方法描述Logical Volume的摆放方法。具体可以参考:$G4INSTALL/source /geom

    18、etry/volumes/include /G4PVPlacement.hh。用这种方法可以建立具有相同Logical Volume 的物理体,同时给可以给每个物理体分配一个编号,以便区分具有相同Logical Volume的物理体。这些编号在 UserSteppingAction 等类中处理数据时有时会非常有用处。 需要注意的是,在Geant4中摆放坐标都是指的相对坐标,是子体中心相对母体中心的坐标。而World Volume 建立后就等于建立了几何模型的绝对坐标系。3. 定义材料 1) 基本概念 自然界中, 材料(化合物, 混合物)一般是由元素组成, 而元素由同位素组成. Geant4中有

    19、三个类用来定义探测器材料的. 类G4Element描述了原子属性:原子量, 原子核中质子数, 原子质量, 壳层能量, 还有每个原子的散射截面等. 类G4Material描述了材料的宏观属性:密度, 状态, 温度, 压强, 还有辐射长度, 平均自由程, dE/dx等.2) 定义单质材料 如下例, 给出材料名称, 密度, 摩尔质量和原子量, 定义了液态氩./ G4double density = 1.390*g/cm3; G4double a = 39.95*g/mole; G4Material* lAr = new G4Material(name=liquidArgon, z=18., a, d

    20、ensity);/这就可以用来确定所定义的逻辑块的材料: G4LogicalVolume* myLbox = new G4LogicalVolume(abox, lAr, Lbox, 0, 0, 0); 3) 定义化合物 如例, 定义水(H2O):/a = 1.01*g/mole; G4Element* elH = new G4Element(name=Hydrogen, symbol=H, z=1, a); a = 16.00*g/mole; G4Element* elO = new G4Element(Oxygen, O, z=8, a); density=1.0*g/cm3; G4Mat

    21、erial* H2O = new G4Material(water, density, ncomponents=2); H2O-AddElement(elH, natoms=2); H2O-AddElement(elO, natoms=1);/4) 定义混合物 如例, 定义空气(Air):/ a = 14.01*g/mole;G4Element* elN = new G4Element(Nitrogen, N, z=7, a); a = 16.0*g/mole; G4Element* elO = new G4Element(Oxygen, O, z=8., a); density = 1.29

    22、0*g/cm3; G4Material* Air = new G4Material(Air, density, ncomponents=2); Air-AddElement(elN, fractionmass=70*perCent); Air-AddElement(elO, fractionmass=30*perCent);/ 在/home/username/geant4.7.0/examples/novice/N03/ExN03DetectorConstruction.cc文件中介绍了所有定义材料的方法.4. 指定粒子 1) 一般概念 Geant4能够模拟多种粒子. 基本粒子:电子, 质子,

    23、 和gamma等. 短寿命的共振粒子:媒质介子和delta重子. 核子:氘, alpha粒子和重离子等. 夸克, D夸克和胶子. G4ParticleDefinition类提供了粒子的定义, 而且每种粒子都有自己的类. 粒子主要分为6个大类: 轻子(lepton) 介子(meson) 强子(baryon) 波色子(boson) 短寿命粒子(shortlived) 离子(ion) G4ParticleDefinition类包含了单个粒子的属性:名称, 质量, 带电电荷, 自旋等. 其中大部分的属性都不可修改, 除非重新建立库. Geant4定义了上百种粒子用于不同的物理过程, 在一般应用中, 用

    24、户不需要自己定义粒子. 粒子在连接的过程中注册启用了, 用户不须要(也不能)自行执行注册粒子.2) 指定粒子和物理过程 G4VUserPhysicsList类让用户可以指定粒子以及它们的物理过程, 用户还可以指定截断参数. 一个用户从G4VUserPhysicsList中创建自己的类要利用以下几个步骤: ConstructParticle(): 调用粒子ConstructPhysics(): 调用粒子的物理过程 SetCuts(): 设置粒子的截断值 用户利用ConstructParticle()来调用所需要的粒子的函数, 如用户需要质子和geantino, 代码如下:/ void ExN01

    25、PhysicsList:ConstructParticle() G4Proton:ProtonDefinition(); G4Geantino:GeantinoDefinition(); / Geant4中预先定义的粒子有100多个, 用户不可能用这种方法来调用每一个粒子的函数, Geant4中有一些类可以让用户调用一类粒子, 相对于6个粒子大类, 总共有6个类来调用这批粒子.他们是: G4BosonConstructor G4LeptonConstructor G4MesonConstructor G4BarionConstructor G4IonConstructor G4Shortliv

    26、edConstructor使用方法如下例:/ void ExN04PhysicsList:ConstructLeptons() /Construct all leptons G4LeptonConstructor pConstructor; pConstructor.ConstructorParticle(); /3) 设定截断值 用户必须为每个粒子设定截断值, 所谓截断值, 就是程序在粒子输运距离为截断值时记录粒子位置, 能量的信息. 在一般的模拟程序中, 用户可以为所有的粒子设定一个截断值. 如下:/ void ExN04PhysicsList:SetCuts() / the G4VUse

    27、rPhysicsList:SetCutsWithDefault() method sets/ the default cut value for all particle types SetCutsWithDefault(); / 系统默认的截断值为1*mm, 当然用户可以为自己调用的粒子和物理过程设定不用的默认值.如下:/ ExN04PhysicsList:ExN04PhysicsList(): G4VUserPhysicsList() / default cut value (1.0*mm) defaultCutValue = 1*mm; /用户可以为gamma射线, 电子, 正电子, 或者为不用的几何区域设定不同的截断值. 这种情况下, 由于Geant4的物理过程(特别是计算能量损失的物理过程)是根据特定的截断值编写的, 它们输出就会改变, 所以用户应该特别小心. 为不同粒子设


    注意事项

    本文(Geant4基础知识.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开