好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Geant4基础知识.doc.docx

19页
  • 卖家[上传人]:tang****xu5
  • 文档编号:292053322
  • 上传时间:2022-05-13
  • 文档格式:DOCX
  • 文档大小:355.87KB
  • / 19 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • Geant4基础知识G4莫拟粒子过程:建立一次模拟,在G4中称为一次Run;Run建立后,需要对几何结构、物理过程进行初始化;初始化完成后就开始模拟过程了,首先发射一个粒子在G4中,发射一个(或一系列)粒子到所有次级粒子死亡的过程成为一次Evento而每次发射的初始粒子则有粒子发射器进行控制而在每一个event过程中,粒子与材料反应后会可能生成多个次级粒子,每个粒子都会有一条径迹,称之为track;而每一个粒子(初始的或次级的)的径迹乂是由很多步组成的,称之为stepG4莫拟的基本算法:ARunStart->初始化物理模型/几何模型->AnEventStart->调用粒子发射器发射粒子->ATrackStart->AStepStart->AStepEnd->NextStepStart->->AllStepEnd->ATrackEnd->NextTrackStart->->AllTrackEnd->AnEventEnd->NextEventStart1) ->->AllEventEnd(AllPrimariesShot)->ARunEnd->NextRunStartmain()中应该包括的内容Geant4是一个探测器模拟工具,但它对于某个特定的模拟程序没有固定的main()函数,用户在建立模拟程序的过程中需要提供自己的main()函数.一个最基本的main()函数需要包括以下几个方面:G4RunManager(模拟整个过程)G4VUserDetectorConstruction(定义探测器材料,几何形状,灵敏区和读出方案)G4VUserPhysicsList(定义粒子种类和物理过程,还有截断参数)G4VUserPrimaryGeneratorAction(定义了源粒子的种类,能量,出射方向等)一个最简单的main()函数如下:#include"G4RunManager.hh”#include"G4UImanager.hh”#include"ExN01DetectorConstruction.hh”#include"ExN01PhysicsList.hh”#include"ExN01PrimaryGeneratorAction.hh"intmain(){//ConstructthedefaultrunmanagerG4RunManager*runManager=newG4RunManager;//setmandatoryinitializationclassesrunManager->SetUserInitialization(newExN01DetectorConstruction);runManager->SetUserInitialization(newExN01PhysicsList);//setmandatoryuseractionclassrunManager->SetUserAction(newExN01PrimaryGeneratorAction);//InitializeG4kernelrunManager->Initialize();//getthepointertotheUImanagerandsetverbositiesG4UImanager*UI=G4UImanager::GetUIpointer();UI->ApplyCommand("/run/verbose1");UI->ApplyCommand("/event/verbose1");UI->ApplyCommand("/tracking/verbose1");//startarunintnumberOfEvent=3;runManager->BeamOn(numberOfEvent);//jobterminationdeleterunManager;return0;}main()首先生成一个G4RunManage啖,这个类是在主程序中用以初始化模拟信息,用来连接子程序,连接方式是通过Set函数来完成。

      例如:BDetectorConstruction*detector=newBDetectorConstruction;runManager->SetUserInitialization(detector);先构造一个探测器几何,再用SET函数初始化用new申请的空间,在程序完成后需要释放空间,否则出错注意:GEANT4,在runManager上面说明的其他类会自动释放所以不需要一一释放其他类按照重要性分为强制类和可选类其中几何结构类(DetectorConstruction)、物理设定类(PhysicsList)、源描述类(PrimaryGenerator)都届于强制类,缺少任一个程&都无法运行而事件处理类(EventAction)、步数据处理类(SteppingAction)、径迹处理类(TrackingAction)、运行处理类(RunAction)都届于可选类,用户可以通过设定这些类来获取感兴趣的数据,可以按照自己的需要添加包含强制类之后程序就可以运行了,但只能检验几何结构的完备性,所以为了获得数据必须设定可选类1. Geant4的类结构Geant4程序代码是根据这个类结构建立起来的,类结构如下图所示.下面就是Geant4中每个类的简单说明.Geant41) Run和Event这些类与模拟事件相关,产生次级粒子,为粒子径迹模拟器提供粒子.2) Tracking和Track根据粒子在探测器材料中的物理过程模拟粒子运行的轨迹,给出粒子特定时间段在空间的位置,或者粒子空间时间的分布.3) Geometry,MagneticField和CAD-Interface这三个类就是用来描述探测器几何结构和探测器中电磁场的分布.为了使探测器几何结构可以在CAD系统中进行修改,Geant4的几何体模型完全与ISOSTEPfe准一致.将来Geant4中几何结构的设计将从程序设计中独立出来.面向对象设计的方法可以让用户在不影响程序其他部分的同时改变几何参数和场.4) ParticleDefinition和Matter5) 这两个类用于定义粒子和探测器材料Physics它提供了粒子与探测器材料相互作用时所发生物理过程的模型,允许用户为每次反应或每个反应道添加物理模型.用户根据粒子的种类,探测器材料和能量范围选择不同的物理模型.Geant4有电磁物理过程和强子物理过程模型,同时也提供了散射截面数据库.6) Hits和Digitization这个两个类用于对用户定义的灵敏区内的响应进行采样和分析^7) Visualization它显示了探测器几何形状,粒子轨迹和碰撞过程.由于采用了面向对象设计技术来设计可视化部分,这允许用户独立开发可视化工具,如:OpenGL和OpenInventor(为X11和Windows设计),DAWN,Postscript(viaDAWN)和VRML.8) Interfaces支持可视化用户界面以及和外加程序的交流(OODBMSreconstruction等).2. UserVerboseoutputclass,定义了一个verbosity变量;Runmanager,定义了一个运行管理器runManager;UserInitializationclasses(mandatory),设置两个强制类ExN02DetectorConstruction和ExN02PhysicsList;UserActionclasses,设置用户十涉类ExN02PrimaryGeneratorAction、ExN02RunAction、ExN02EventAction和ExN02SteppingAction;InitializeG4kernel,“runManager->Initialize()”,初始化GEANT仙核。

      构造探测器,生成物理过程,计算截面以及其他;GetthepointertotheUserInterfacemanager,获取UI管理器的指针;batchmode,定义了批处理模式;interactivemode:definevisualizationandUIterminal;定义了交互模式的可视化和UI终端;构建模型:在Geant4中首先要建立一个最大的盒子,称为WorldVolume,然后往这个大盒子里面放各种各样的小盒子(部件),然后每个小盒子(部件)里面还可以放更小的盒子(零件),放入的小盒子将自动代替大盒子原有部分在Geant4中,将大盒子称为MotherVolume(母体),小盒子称为DaughterVolume(子体)除了WorldVolume之夕卜,每个Volume(体)都必须且只能有一个母体,但可以没有子体,也可以有多个子体Geant4的这种盒子模型的要求是:“不交不超”Geant4中每个这样的盒子的安放乂分为两步第一步是构建盒子,称为LogicalVolume(逻辑体);第二步是将盒子摆放到正确位置,变为PhysicalVolume(物理体)构建盒子乂分为两步,第一步是确定盒子形状,第二步是确定盒子的材料等届性。

      形状在Geant4中被称为Solid在Geant4中提供了多种固有的形状,如球形、长方体、锥体等,可以在$G4INSTALL/source/geometry/solids里面查找用户也可以通过G4VSolid类构建自己的形状,参见:$G4INSTALL/source/geometry/management/include/G4VSolid.hh此外,对于一些复杂的形状,用户也可以利用基本形状通过交并补等布尔运算方式完成,布尔运算的方式请参考$G4INSTALL/source/geometry/solids/Boolean确定了盒子形状后,就是设置盒子的材料、磁场等届性这些届性的设置通过G4LogicalVolume类来完成,设置方法如下:G4LogicalVolume(G4VSolid*pSolid,//形状G4Material*pMaterial,//材料constG4String&name,//逻辑体名字G4FieldManager*pFieldMgr=0,//场管理G4VSensitiveDetector*pSDetector=0,//是否SD探测器G4UserLimits*pULimits=0,//用户限制G4booloptimise=true);//是否优化盒子造完了就该摆放盒子了。

      摆放盒子也有两种方法,一种是直接构建物理体,另一种是指定摆放方法直接构建物理体是通过G4VPhysicalVolume类,其定义方法如下:G4VPhysicalVolume(G4RotationMatrix*pRot,//旋转方式摆放坐标constG4ThreeVector&tlate,//constG4String&pName,//物理体名字G4LogicalVolume*pLogical,//对应的逻辑体G4VPhysicalVolume*pMother);//母体如果pMother=0就表明这个体是一个WorldVolume,WorldVolume必须且只能有一个在实际应用中,我们通常采用指定摆放方法的方式来完成物理体的构建指定摆放方法是通过G4PVPlacement类完成G4PVPlacement类是G4VPhysicalVolume的派生类,该类提供了多种方法描述LogicalVolume的摆放方法具体可以参考:$G4INSTALL/source/geometry/volumes/include/G4PVPlacement.hh用这种方法可以建立具有相同Lo。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.