#include "PrimaryGeneratorAction.hh" #include "G4RunManager.hh" #include "G4Event.hh" #include "G4ParticleGun.hh" #include "G4ParticleTable.hh" #include "G4IonTable.hh" #include "G4ParticleDefinition.hh" #include "G4ChargedGeantino.hh" #include "G4SystemOfUnits.hh" #include "Randomize.hh" PrimaryGeneratorAction::PrimaryGeneratorAction() : G4VUserPrimaryGeneratorAction(), fParticleGun(0) { G4int n_particle = 1; fParticleGun = new G4ParticleGun(n_particle); //default particle kinematics G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); G4ParticleDefinition* particle = particleTable->FindParticle("chargedgeantino"); fParticleGun->SetParticleDefinition(particle); fParticleGun->SetParticlePosition(G4ThreeVector(0.,0.,0.)); fParticleGun->SetParticleEnergy(0.*eV); fParticleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.)); } PrimaryGeneratorAction::~PrimaryGeneratorAction() { delete fParticleGun; } void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { G4ParticleDefinition* particle = fParticleGun->GetParticleDefinition(); if (particle == G4ChargedGeantino::ChargedGeantino()) { //Cs-137 G4int Z = 55, A = 137; //The example reference used F-18 and set it ionCharge was 0, I changed it and put the real value G4double ionCharge = 0.*eplus; G4double excitEnergy = 0.*keV; G4ParticleDefinition* ion = G4IonTable::GetIonTable()->GetIon(Z,A,excitEnergy); fParticleGun->SetParticleDefinition(ion); fParticleGun->SetParticleCharge(ionCharge); } //Position G4double x0=0.*cm, y0=0.*cm, z0=0.*cm; fParticleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0)); //create vertex fParticleGun->GeneratePrimaryVertex(anEvent); }