当前位置: 首页 > news >正文

Day 09(下) B2a实例解说----exampleB2a.cc+ActionInitialization+PrimaryGeneratorAction

Day 09(下)exampleB2a.cc+ActionInitialization+PrimaryGeneratorAction

一、exampleB2a.cc

拿到实例怎么样运行(没有类似于cline的软件):首先打开程序所在的文件夹,新建文件夹,进入新文件夹,在终端打开,再cmake

// 打开所在文件夹,进入终端
// 创建新文件夹"b2a",名字任意
mkdir b2a
// 进入文件夹
cd b2a/
// 准备编译
cmake ..
// 编译,正常最好不要出现warning
make
// 打开并可视化生成的范例文件exampleB2a
./exampleB2a  // 此时参数个数为1
./exampleB2a test.mac // 此时参数大于1,运行自写的mac文件test

exampleB2a.cc

// 定义了step max,并且使用了G4写好的physicslist,若不使用,就自写step max
physicsList->RegisterPhysics(new G4StepLimiterPhysics());
// 给可视化界面+一个菜单gui.mac
if (ui->IsGUI()) {UImanager->ApplyCommand("/control/execute gui.mac");}
二、ActionInitialization

该程序中的所有Action类需要在此中进行初始化

// 初始化
void ActionInitialization::BuildForMaster() const
{SetUserAction(new RunAction);//针对于多线程的设置
}
void ActionInitialization::Build() const
{SetUserAction(new PrimaryGeneratorAction);SetUserAction(new RunAction);SetUserAction(new EventAction);
}
三、PrimaryGeneratorAction

G4单位定义上是一个数值,所以设置时的单位都是带上的用*连接,其中

Mev<<Gev<<mm<<cm<<G4endl

// 设置相关数值
G4ParticleDefinition* particleDefinition =G4ParticleTable::GetParticleTable()->FindParticle("proton");//“proton”发射的为质子fParticleGun->SetParticleDefinition(particleDefinition);//发射的是一个质子fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0., 0., 1.));//发射方向001fParticleGun->SetParticleEnergy(3.0 * GeV);//发射能量3Gevvoid PrimaryGeneratorAction::GeneratePrimaries(G4Event* event)
{G4double worldZHalfLength = 0;//设置粒子枪大小时,根据世界大小进行设置,该方法获得设置的世界的logicalvolumeG4LogicalVolume* worldLV = G4LogicalVolumeStore::GetInstance()->GetVolume("World");G4Box* worldBox = nullptr;//根据logicalvolume获取solidvolume,也就是worldBoxif (worldLV) worldBox = dynamic_cast<G4Box*>(worldLV->GetSolid());//然后根据solidvolume获取一半的长度,然后就可以设置粒子枪的位置,一半初始在边界的位置if (worldBox)worldZHalfLength = worldBox->GetZHalfLength();else {G4cerr << "World volume of box not found." << G4endl;G4cerr << "Perhaps you have changed geometry." << G4endl;G4cerr << "The gun will be place in the center." << G4endl;}//粒子枪的位置fParticleGun->SetParticlePosition(G4ThreeVector(0., 0., -worldZHalfLength + 1 * um));
//发射eventfParticleGun->GeneratePrimaryVertex(event);
}
http://www.dtcms.com/a/461470.html

相关文章:

  • 分布式锁:Redisson的可重入锁
  • 计算机硬件相关(AI回答)
  • 网站设计中的用户体验大型网站需要什么样的团队
  • 淘宝网站开发方式网站托管 济南
  • 重庆网站seo案例网站推广用什么方法最好
  • sql报错:java.sql.SQLSyntaxErrorException: Unknown column ‘as0‘ in ‘where clause‘
  • 做网站是什么公司做陶瓷公司网站
  • CentOS 7上安装SonarQube8.9
  • 遗留系统微服务改造(二):数据迁移实战攻略与一致性保证
  • IO操作(Num22)
  • 领码方案|微服务与SOA的世纪对话(6):组织跃迁——智能架构下的团队与文化变革
  • 怎么什么软件可以吧做网站网站被百度收录很重要
  • C++ 单例模式(Singleton)详解
  • 面向未来的数据平台
  • C++5d
  • Transformer实战(21)——文本表示(Text Representation)
  • 网站空间商 权限梵克雅宝
  • 【Vue 3 】——setup、ref、watch
  • 做期货网站违法的吗淄博市住房和城乡建设局网站
  • 使用feign进行远程调用出现的问题(文件服务参数接收为null)
  • 国自然·医工交叉热点|通用医学影像分割基础模型与数据库
  • React Native:关于react自定义css属性的位置
  • 对于el-table中自定义表头中添加el-popover会弹出两个的解决方案,分别针对固定列和非固定列来隐藏最后一个浮框。
  • 电子商务公司简介系统清理优化工具
  • 内网渗透实战:红队作战全解析
  • Verilog和FPGA的自学笔记4——多路选择器1(always语句)
  • 前端架构师,是架构什么
  • Coze源码分析-资源库-编辑数据库-后端源码-安全与错误处理
  • 制作专业网站餐厅网络推广方案
  • 掌握MyBatis Java API:高效操作数据库