入射粒子したい(G4ParticleGun
)
1G4int n_particles = 1;
2G4ParticleGun *gun = new G4ParticleGun(n_particles);
G4ParticleGun
はGeant4標準の粒子生成クラスのひとつです。
種類、方向、座標、エネルギーなどを固定した1種類の入射粒子を生成できます。
注意
あくまで1種類のParticleGunを生成するクラスです。
上記のサンプルでn_particles=100
にした場合、
同じ設定の粒子が100個生成されます。
粒子をランダムに入射したい場合は、n_particles=1
に設定し、
BeamOn(100)
のようにイベント数を増やすとよいです。
ランダムに入射したい
1void PrimaryGeneratorAction::GeneratePrimaries(G4Event* /*aEvent*/)
2{
3 // aTargetLogical : 入射標的の論理ボリューム
4
5 G4double target_x = aTargetLogical->GetXHalfLength() * 2.;
6 G4double target_y = aTargetLogical->GetYHalfLength() * 2.;
7 G4double target_z = aTargetLogical->GetZHalfLength() * 2.;
8
9 G4double factor = 0.8;
10 G4double x0 = factor * target_x * (G4UniformRand() - 0.5);
11 G4double x0 = factor * target_y * (G4UniformRand() - 0.5);
12 G4double z = -0.5 * target_z
13
14 position = G4ThreeVector(x0, y0, z0);
15 aParticleGun->SetParticlePosition(position);
16}
G4UniformRand
を使って入射場所をランダムに設定できます。
付属サンプルB1では、標的となる論理ボリュームのサイズを利用して、座標を決めていました。
イベントに追加したい(GeneratePrimaryVertex
)
1// G4EventにGunを追加する
2gun->GeneratePrimaryVertex(aEvent);
GeneratePrimaryVertex
で、作成したParticleGunをイベントに追加します。