// 圆形
void B1PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
G4double envSizeXY = 0.01 *mm;
G4double envSizeZ = 0.01 *mm;
G4double r = (5.0 * G4UniformRand()) *cm;
// 设置一个0~5cm之间的半径
G4double theta = 2.0 * M_PI * G4UniformRand();
// 设置0~2*pi的极角
G4double x0 = (r * cos(theta)) *cm;
G4double y0 = (r * sin(theta)) *cm;
// 用三角函数来设置x0和y0,要用<math.h>头文件
G4double z0 = -10.0 *cm;
fParticleGun->SetParticlePosition(G4ThreeVector(x0, y0, z0));
fParticleGun->GeneratePrimaryVertex(anEvent);
}
// 线形
void B1PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
G4double envSizeX = 0.01 *mm;
G4double envSizeY = 0.01 *mm;
G4double envSizeZ = 0.01 *mm;
G4double x0 = 5 * G4UniformRand() *cm;
// 从-5cm到+5cm的10cm线源
G4double y0 = 0. *cm;
G4double z0 = -10.0 *cm;
fParticleGun->SetParticlePosition(G4ThreeVector(x0, y0, z0));
fParticleGun->GeneratePrimaryVertex(anEvent);
}