Day 03 设置粒子枪 G4ParticleGun -----以B1为实例
Day 03 设置粒子枪 G4ParticleGun -----以B1为实例
想要设置粒子源,必须建立一个自己的类,B1PrimaryGeneratorAction(文件名),该文件继承的是G4VUserPrimaryGeneratorAction。但真正发射粒子的是G4PrimaryGenerator
Action表示这是一个动作类(主要看继承的G4的类是不是动作类),动作类目的:帮助用户提取信息。该文件是一个强制的Action Class(因为必须要,所以强制)
有一个虚函数GeneratorPrimaryies(),这个虚函数必须实现,这是动作类PrimaryGeneratorAction所提供的一个接口/方法。这个类的作用不是用来发射初级粒子的,只有G4PrimaryGenerator才是实现发射粒子的那个类,并且是在GeneratePrimaries()里面实现粒子源初始化定义的
# 设置粒子源的方向
G4ParticleDefinition* particle= particleTable->SetParticleDefinition(paticleName="gama") # 设置粒子为γ粒子,粒子有各自的颜色
fParticleGun->SetParticleDefinition(particle)
fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0,0,1)) # 方向
fParticleGun->SetParticleEnergy(6*Mev) # 能量
# 设置粒子枪的位置,其中x0,y0,z0是根据envSizeXY、envSizeZ计算获得的
fParticleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0))
粒子颜色:nagtive(负):red、neutral(中性):green、positive(正):blue
查看粒子信息:可以打印出来(tracking verbose决定打印信息的详细状况),初始粒子的parent ID为0,track ID(每个粒子都有其特定的ID)为1,次级粒子的parent ID为其上者粒子的ID
G4PrimaryGenerator产生初级粒子的发射器,有三个子类:G4ParticleGun、G4GeneralParticleSource(简称为GPS)、G4HEPEvtlnterface
G4ParticleGun(粒子枪):
实现发射一个粒子:调用方法(GeneratePrimaryVertex):
# 在文件中进行直接设置,再调用即可
fParticleGun->SetParticleDefinition(particle)
fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0,0,1)) # 方向
fParticleGun->SetParticleEnergy(6*Mev) # 能量fParticleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0))fParticleGun->GeneratePrimaryVertex(anEvent) # 必备,实现发射一个event
将定义好的粒子源的所有属性进行调用并发射一个event。
UI命令(在.mac文件中设置的东西,也可以实现修改粒子源的相关属性):/gun/particle gamma、/gun/energy 8 Mev