| Message: Problem with define source Na22 or other | Not Logged In (login) |
|
Hi G4 Users,
Unfortunately, I have a problem with define positron source. I read Your advices about this topic and I did this changes in my codes
#include "PrimaryGeneratorAction.hh"
#include "PrimaryGeneratorMessenger.hh" #include "DetectorConstruction.hh" #include "HistoManager.hh"
#include "G4Event.hh" #include "G4GeneralParticleSource.hh" #include "G4ParticleTable.hh" #include "G4ParticleDefinition.hh" #include "Randomize.hh" #include "globals.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PrimaryGeneratorAction::PrimaryGeneratorAction(DetectorConstruction* det,
HistoManager* hist)
:Detector(det),histoManager(hist)
{
G4int n_particle = 1;
particleGun = new G4GeneralParticleSource();
SetDefaultKinematic();
rndmBeam = 0.;
//create a messenger for this class gunMessenger = new PrimaryGeneratorMessenger(this); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PrimaryGeneratorAction::~PrimaryGeneratorAction()
{
delete particleGun;
delete gunMessenger;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PrimaryGeneratorAction::SetDefaultKinematic()
{
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
G4String particleName;
G4ParticleDefinition* particle
= particleTable->FindParticle(particleName="e+");
particleGun->SetParticleDefinition(particle);
particleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.));
particleGun->SetParticleEnergy(545.*keV);
G4double position = -0.5*(Detector->GetWorldSizeX());
particleGun->SetParticlePosition(G4ThreeVector(position,0.*cm,0.*cm));
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
//this function is called at the begining of event
//
//randomize the beam, if requested.
if (rndmBeam > 0.)
{
G4ThreeVector oldPosition = particleGun->GetParticlePosition();
G4double rbeam = 0.5*(Detector->GetCalorSizeYZ())*rndmBeam;
G4double x0 = oldPosition.x();
G4double y0 = oldPosition.y() + (2*G4UniformRand()-1.)*rbeam;
G4double z0 = oldPosition.z() + (2*G4UniformRand()-1.)*rbeam;
particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
particleGun->GeneratePrimaryVertex(anEvent);
particleGun->SetParticlePosition(oldPosition);
}
else particleGun->GeneratePrimaryVertex(anEvent);
I use example TestEm3 and I need positrons from Na22 other source. This code have errors during the compilation. Help me please.
Best Regards
Pawel
|
|
to: |