Message: how can i emitting particle in space | Not Logged In (login) |
|
|
please i used this command in primary generation action but i don't obtain isotropic source, i need to emit positron particle in space to obtain isotropic dource direction
PSPrimaryGeneratorAction::PSPrimaryGeneratorAction(PSDetectorConstruction* DC) :Detector(DC) { } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PSPrimaryGeneratorAction::~PSPrimaryGeneratorAction() { delete particleGun; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PSPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { //this function is called at the begining of event //
G4int n_particle = 1; particleGun = new G4ParticleGun(n_particle); // default particle kinematic //G4cout<<"-----------------------------------------------------------"<<G4endl;
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); G4String particleName; G4ParticleDefinition* particle = particleTable->FindParticle(particleName="e+"); particleGun->SetParticleDefinition(particle); particleGun->SetParticleEnergy(1.*MeV); particleGun->SetParticlePosition(G4ThreeVector(0.0*cm,0.0*cm,-0.0150*cm)); G4double Px,Py,Pz; //G4cout<<Px<<" * "<<Py<<" * "<<Pz<<G4endl;
//G4cout<<"-----------------------------------------------------------"<<G4endl;
Px=(0.5-G4UniformRand())*2.; Py=(0.5-G4UniformRand())*2.; Pz=(0.5-G4UniformRand())*2.;
double module= sqrt(Px*Px+Py*Py+Pz*Pz); Px=Px/module; Py=Py/module; Pz=Pz/module; particleGun->SetParticleMomentumDirection(G4ThreeVector(Px,Py,Pz)); particleGun->GeneratePrimaryVertex(anEvent); }
|
Inline Depth: |
|
|
Outline Depth: |
|
|
|
Add message: ![]() |
|
to: |
|