#include "primarygenerator.hh" #include "G4ParticleGun.hh" #include "G4SystemOfUnits.hh" #include "G4ParticleTable.hh" #include "G4RunManager.hh" #include "G4ParticleDefinition.hh" #include "G4Event.hh" #include "G4VUserPrimaryGeneratorAction.hh" #include "G4IonTable.hh" #include "ActionInitialization.hh" #include "G4Geantino.hh" primarygenerator::primarygenerator() { //G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); //G4ParticleDefinition* particle= particleTable->FindParticle("alpha"); fparticleGun = new G4ParticleGun(30); //fparticleGun->SetParticleEnergy(10*MeV); } primarygenerator::~primarygenerator() { delete fparticleGun; } void primarygenerator::GeneratePrimaries(G4Event* event) { if (fparticleGun->GetParticleDefinition() == G4Geantino::Geantino()) { G4int Z = 86, A = 222; G4double ionCharge = 0.*eplus; G4double excitEnergy = 0.*MeV; G4ParticleDefinition* ion = G4IonTable::GetIonTable()->GetIon(Z,A,excitEnergy); fparticleGun->SetParticleDefinition(ion); fparticleGun->SetParticleCharge(ionCharge); fparticleGun->SetParticleEnergy(10.*MeV); fparticleGun->SetParticleMomentumDirection(G4ThreeVector(G4UniformRand()*cm,G4UniformRand()*cm,G4UniformRand()*cm)); fparticleGun->SetParticlePosition(G4ThreeVector(G4UniformRand()*cm,G4UniformRand()*cm,G4UniformRand()*cm)); } fparticleGun->GeneratePrimaryVertex(event); }