Geant4中报错:“已放弃(核心已转储)”可能的原因

  • 问题描述:
    在模拟50亿粒子(多于20亿)run.mac中单个Run只能最多模拟20亿
  • 错误截图:
图片名称
  • 错误原因:
    超过EventID的最大数量 也就是int定义的数量
  • 解决方案:
    对Run进行计数 不同的Run生成不同的文件 每个run最多含有20亿的粒子
    RunAction中输出 RunID
点击查看代码
	void RunAction::BeginOfRunAction(const G4Run* aRun)  
	{  
	    G4RunManager::GetRunManager()->SetRandomNumberStore(false);  
	    //获得runID  
	    fhisto->SetRunID(aRun->GetRunID());  
	    //输出当前runID  
	    printf("!!!!!!!!!!!RUN!!!!!!!");  
	    G4cout<<aRun->GetRunID()<<G4endl;  
	    fhisto->Book();  
	}  

HistoManger中使用RunID判断 并分别输出root文件

点击查看代码
	//输出对应的文件  
	G4bool fileOpen = analysisManager->OpenFile(fFileName+"_"+suffix1+"_sp"+suffix2);  
	G4cout<<"##########"<<suffix2<<"###########"<<G4endl;  
	//创建画布  
	if(suffix2=="0")  
	{  
	    analysisManager->CreateH1("ssp0", "sspEne", 256, 0, 0.662*MeV);  //Id=0  
	    analysisManager->CreateH1("lsp0", "lspEne", 256, 0, 0.662*MeV);  //Id=1  
	}  
	if(suffix2=="1")  
	{  
	    analysisManager->CreateH1("ssp1", "sspEne", 256, 0, 0.662*MeV);    
	    analysisManager->CreateH1("lsp1", "lspEne", 256, 0, 0.662*MeV);    
	}  
	if(suffix2=="2")  
	{  
	    analysisManager->CreateH1("ssp2", "sspEne", 256, 0, 0.662*MeV);    
	    analysisManager->CreateH1("lsp2", "lspEne", 256, 0, 0.662*MeV);    
	}  

修改后的效果:可见有三个result_0_sp0.root 数据组合即可

图片名称

本文作者:绿巨鼠图片名称
文字编辑:Geant4Cat
本文链接:https://www.cnblogs.com/Geant4/articles/16445466.html
⛔转载请附上Geant4Cat的原文链接,并通过 E-mail 等方式告知,谢谢!否则举报

posted @   Geant4Cat  阅读(775)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示