Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // ********************************************************************
- // * License and Disclaimer *
- // * *
- // * The Geant4 software is copyright of the Copyright Holders of *
- // * the Geant4 Collaboration. It is provided under the terms and *
- // * conditions of the Geant4 Software License, included in the file *
- // * LICENSE and available at http://cern.ch/geant4/license . These *
- // * include a list of copyright holders. *
- // * *
- // * Neither the authors of this software system, nor their employing *
- // * institutes,nor the agencies providing financial support for this *
- // * work make any representation or warranty, express or implied, *
- // * regarding this software system or assume any liability for its *
- // * use. Please see the license in the file LICENSE and URL above *
- // * for the full disclaimer and the limitation of liability. *
- // * *
- // * This code implementation is the result of the scientific and *
- // * technical work of the GEANT4 collaboration. *
- // * By using, copying, modifying or distributing the software (or *
- // * any work based on the software) you agree to acknowledge its *
- // * use in resulting scientific publications, and indicate your *
- // * acceptance of all terms of the Geant4 Software license. *
- // ********************************************************************
- //
- /// \file electromagnetic/TestEm5/src/PrimaryGeneratorAction.cc
- /// \brief Implementation of the PrimaryGeneratorAction class
- //
- // $Id: PrimaryGeneratorAction.cc 77583 2013-11-26 10:28:15Z gcosmo $
- //
- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
- #include "PrimaryGeneratorAction.hh"
- #include "DetectorConstruction.hh"
- #include "PrimaryGeneratorMessenger.hh"
- #include "G4Event.hh"
- #include "G4ParticleTable.hh"
- #include "G4ParticleDefinition.hh"
- #include "G4SystemOfUnits.hh"
- #include "Randomize.hh"
- #include "G4AtomicTransitionManager.hh"
- #include "G4VAtomDeexcitation.hh"
- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
- PrimaryGeneratorAction::PrimaryGeneratorAction(DetectorConstruction* DC)
- :G4VUserPrimaryGeneratorAction(),
- fParticleGun(0),fDetector(DC),fRndmBeam(0),fGunMessenger(0)
- {
- G4int n_particle = 1;
- // fParticleGun = new G4ParticleGun(n_particle);
- /// descomentar para GPS
- fParticleGun = new G4GeneralParticleSource();
- SetDefaultKinematic();
- //create a messenger for this class
- fGunMessenger = new PrimaryGeneratorMessenger(this);
- }
- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
- PrimaryGeneratorAction::~PrimaryGeneratorAction()
- {
- delete fParticleGun;
- delete fGunMessenger;
- }
- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
- void PrimaryGeneratorAction::SetDefaultKinematic()
- {
- /// USANDO A NOVA BIBLOTECA G4AtomicTransitionManager
- // default particle kinematic
- //
- /// descomentar para GPS
- G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
- //G4ParticleDefinition* particle
- // = particleTable->FindParticle("e-");
- /// descomentar para GPS
- G4ParticleDefinition* particle
- = G4ParticleTable::GetParticleTable()->FindParticle("gamma");
- /// descomentar para GPS
- fParticleGun->SetParticleDefinition(particle);
- G4SPSEneDistribution* eneDist = fParticleGun->GetCurrentSource()->GetEneDist();
- eneDist->SetMonoEnergy(15.0*keV);
- //eneDist->SetEnergyDisType("Brem");
- // 30 MeV Photonen
- // eneDist->SetTemp(7.00e10);
- //eneDist->SetEmax(30.0*keV);
- //eneDist->SetEmin(1.0*keV);
- // eneDist->SetTemp(7.00e7);
- // eneDist->SetEnergyDisType("Gauss");
- // eneDist->SetMonoEnergy(15*keV);
- // eneDist->SetBeamSigmaInE(5*keV);
- // eneDist->Calculate();
- //eneDist->SetMonoEnergy(30.0*keV);
- /// descomentar para GPS
- G4SPSPosDistribution* posDist = fParticleGun->GetCurrentSource()->GetPosDist();
- posDist->SetPosDisType("Point");
- posDist->SetCentreCoords(G4ThreeVector(1.0*cm, -0.4142*cm ,0.*cm));
- G4SPSAngDistribution* angDist = fParticleGun->GetCurrentSource()->GetAngDist();
- /// descomentar para GPS
- angDist->SetParticleMomentumDirection(G4ParticleMomentum(-1.0*cm, 0.4142*cm ,0.*cm));
- // angDist->SetParticleMomentumDirection(G4ParticleMomentum(0.0*cm, 1.0*cm,0.*cm));
- //angDist->SetAngDistType("iso");
- /// modelo 3
- //fParticleGun -> SetParticleMomentumDirection(G4ThreeVector(5.4, 2.34,0.)); // cos 65
- // modelo 1
- //fParticleGun -> SetParticleMomentumDirection(G4ThreeVector(-0.25*cm, -0.0 ,0.)); // cos 65
- //fParticleGun -> SetParticleEnergy(energia_max *keV);
- }
- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
- void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
- {
- //this function is called at the begining of event
- //
- //randomize the beam, if requested.
- /*if (fRndmBeam > 0.)
- {
- G4ThreeVector oldPosition = fParticleGun->GetParticlePosition();
- G4double rbeam = 0.5*(fDetector->GetAbsorberSizeYZ())*fRndmBeam;
- G4double x0 = oldPosition.x();
- G4double y0 = oldPosition.y() + (2*G4UniformRand()-1.)*rbeam;
- G4double z0 = oldPosition.z() + (2*G4UniformRand()-1.)*rbeam;
- fParticleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
- fParticleGun->GeneratePrimaryVertex(anEvent);
- fParticleGun->SetParticlePosition(oldPosition);
- }
- else */
- fParticleGun->GeneratePrimaryVertex(anEvent);
- }
- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement