云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Geant4 程序编写中的常用代码

Geant4 程序编写中的常用代码

  • 62 次阅读
  • 3 次下载
  • 2025/7/12 11:16:57

Geant4 程序编写中的常用代码 2010-06-01 20:51:44| 分类: 学习与工作 | 标签:geant4 |字号 订阅 系个人原创,未经同意请勿转载。cnscott的博客 1. 各种常用源粒子的产生 cnscott的博客 G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); ? 光子:

G4ParticleDefinition* particle

= particleTable->FindParticle(\? 中子:

G4ParticleDefinition* particle

= particleTable->FindParticle(\? 电子:

G4ParticleDefinition* particle

= particleTable->FindParticle(\? Alpha:

G4ParticleDefinition* particle

= particleTable->FindParticle(\? 质子:

G4ParticleDefinition* particle

= particleTable->FindParticle(\? 离子:

G4ParticleDefinition* particle

= particleTable->GetIon(6, 12, 0.0); //原子序数,质量数和激发能量(基态12C)

源粒子的能量、位置、方向、电荷等相关信息要在ParticleGun中设置。

2. 获取日期,记录程序开始运行的时刻 cnscott的博客 #include \ #include \ struct tm *ptr; time_t lt; lt =time(NULL); ptr=gmtime(<);

printf(asctime(ptr)); //格林威治时间 printf(ctime(<)); //本地时间

3. 记录程序运行所用时间 cnscott的博客 #include \ G4Timer myTimer; myTimer.Start(); myTimer.Stop();

G4cout << myTimer << G4endl;

4. 保存文件 cnscott的博客 #include

fstream dataFile(FileName, ios::out); //文件输出流 G4String mydata=”Save my data.”;

dataFile << mydata << G4endl; //数据可以是整数、浮点数或是字符串等。

5. 检查几何体是否重叠 cnscott的博客

G4PVPlacement和G4PVParameterised提供了成员函数: G4bool CheckOverlaps(G4int res=1000, G4double tol=0., G4bool verbose=true)

//当返回值为true时,表明几何存在重叠。

6. 获取相关类的指针 cnscott的博客

G4RunManager* runManager= G4RunManager::GetRunManager(); (MyRunAction *)runManager->GetUserRunAction(); (MyEventAction *)runManager->GetUserEventAction(); (MyStackingAction *)runManager->GetUserStackingAction(); (MySteppingAction *)runManager->GetUserSteppingAction(); (MyTrackingAction *)runManager->GetUserTrackingAction(); G4Run* run = G4RunManager::GetRunManager()->GetCurrentRun(); G4Event* event = G4RunManager::GetRunManager()->GetCurrentEvent(); //版本号

G4String version = G4RunManager::GetRunManager()->GetVersionString()

7. 随机数操作 cnscott的博客

Geant4的随机数产生主要是使用CLHEP函数库。

http://proj-clhep.web.cern.ch/proj-clhep/manual/UserGuide/Random/Random.html

CLHEP::HepRandom::setTheEngine(HepRandomEngine *theNewEngine); //设置随机数引擎,默认引擎为CLHEP::HepJamesRandom。其他可选的引擎包括: CLHEP::DRand48Engine, CLHEP::DualRand, CLHEP::Hurd160Engine, CLHEP::Hurd288Engine, CLHEP::MTwistEngine,

CLHEP::NonRandomEngine, CLHEP::RandEngine, CLHEP::RanecuEngine,

CLHEP::Ranlux64Engine, CLHEP::RanluxEngine, CLHEP::RanshiEngine, and CLHEP::TripleRand.

CLHEP::HepRandom::setTheSeed(long seed, int lux=3); //为默认引擎设置随机数种子,其他引擎可能使用不同函数

G4UniformRand();

//产生均匀分布随机数,等同于CLHEP::HepRandom::getTheEngine()->flat();

G4RandGauss::shoot(double mean, double stdDev);

//产生高斯分布随机数,等同于CLHEP::RandGaussQ::shoot(double mean, double stdDev);

8. 从G4Step中读取有用的信息 cnscott的博客

void MySteppingAction::UserSteppingAction(const G4Step* stp) {

G4Track* theTrack = stp->GetTrack(); //获取G4Track指针

theTrack->GetVolume()->GetName(); //获取当前几何体(PhysicalVolume)名称

G4StepPoint* preStepPoint = stp->GetPreStepPoint();

G4StepPoint* postStepPoint = stp->GetPostStepPoint(); //获取两个StepPoint的指针

if (preStepPoint->GetStepStatus() == fGeomBoundary) //判断是否位于几何体边界

std::cout << \

if (postStepPoint->GetStepStatus() == fGeomBoundary) //判断是否位于几何体边界

std::cout << \

if (theTrack->GetTrackID() == 1) //判断是否是初级粒子(初级粒子TrackID=1) std::cout << \;

搜索更多关于: Geant4 程序编写中的常用代码 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Geant4 程序编写中的常用代码 2010-06-01 20:51:44| 分类: 学习与工作 | 标签:geant4 |字号 订阅 系个人原创,未经同意请勿转载。cnscott的博客 1. 各种常用源粒子的产生 cnscott的博客 G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); ? 光子: G4ParticleDefinition* particle = particleTable->FindParticle(\? 中子: G4ParticleDefinition* particle = particleTable->FindPart

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com