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 等方式告知,谢谢!否则举报

浙公网安备 33010602011771号