G4SingleParticleSource Class Reference

#include <G4SingleParticleSource.hh>

Inheritance diagram for G4SingleParticleSource:

G4VPrimaryGenerator

Public Member Functions

 G4SingleParticleSource ()
 ~G4SingleParticleSource ()
void GeneratePrimaryVertex (G4Event *evt)
G4SPSPosDistributionGetPosDist ()
G4SPSAngDistributionGetAngDist ()
G4SPSEneDistributionGetEneDist ()
G4SPSRandomGeneratorGetBiasRndm ()
void SetVerbosity (G4int)
void SetParticleDefinition (G4ParticleDefinition *aParticleDefinition)
G4ParticleDefinitionGetParticleDefinition ()
void SetParticleCharge (G4double aCharge)
void SetParticlePolarization (G4ThreeVector aVal)
G4ThreeVector GetParticlePolarization ()
void SetParticleTime (G4double aTime)
G4double GetParticleTime ()
void SetNumberOfParticles (G4int i)
G4int GetNumberOfParticles ()
G4ThreeVector GetParticlePosition ()
G4ThreeVector GetParticleMomentumDirection ()
G4double GetParticleEnergy ()

Detailed Description

Definition at line 123 of file G4SingleParticleSource.hh.


Constructor & Destructor Documentation

G4SingleParticleSource::G4SingleParticleSource (  ) 

Definition at line 63 of file G4SingleParticleSource.cc.

References G4Geantino::GeantinoDefinition(), G4SPSEneDistribution::SetBiasRndm(), G4SPSAngDistribution::SetBiasRndm(), G4SPSPosDistribution::SetBiasRndm(), and G4SPSAngDistribution::SetPosDistribution().

00063                                                {
00064         // Initialise all variables
00065         // Position distribution Variables
00066 
00067         NumberOfParticlesToBeGenerated = 1;
00068         particle_definition = G4Geantino::GeantinoDefinition();
00069         G4ThreeVector zero;
00070         particle_momentum_direction = G4ParticleMomentum(1, 0, 0);
00071         particle_energy = 1.0 * MeV;
00072         particle_position = zero;
00073         particle_time = 0.0;
00074         particle_polarization = zero;
00075         particle_charge = 0.0;
00076         particle_weight = 1.0;
00077 
00078         biasRndm = new G4SPSRandomGenerator();
00079         posGenerator = new G4SPSPosDistribution();
00080         posGenerator->SetBiasRndm(biasRndm);
00081         angGenerator = new G4SPSAngDistribution();
00082         angGenerator->SetPosDistribution(posGenerator);
00083         angGenerator->SetBiasRndm(biasRndm);
00084         eneGenerator = new G4SPSEneDistribution();
00085         eneGenerator->SetBiasRndm(biasRndm);
00086 
00087         // verbosity
00088         verbosityLevel = 0;
00089 
00090 }

G4SingleParticleSource::~G4SingleParticleSource (  ) 

Definition at line 92 of file G4SingleParticleSource.cc.

00092                                                 {
00093         delete biasRndm;
00094         delete posGenerator;
00095         delete angGenerator;
00096         delete eneGenerator;
00097 }


Member Function Documentation

void G4SingleParticleSource::GeneratePrimaryVertex ( G4Event evt  )  [virtual]

Implements G4VPrimaryGenerator.

Definition at line 113 of file G4SingleParticleSource.cc.

References G4Event::AddPrimaryVertex(), G4cout, G4endl, G4SPSEneDistribution::GenerateOne(), G4SPSAngDistribution::GenerateOne(), G4SPSPosDistribution::GenerateOne(), G4SPSRandomGenerator::GetBiasWeight(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGMass(), G4SPSEneDistribution::GetWeight(), G4PrimaryParticle::SetCharge(), G4PrimaryParticle::SetKineticEnergy(), G4PrimaryParticle::SetMass(), G4PrimaryParticle::SetMomentumDirection(), G4PrimaryParticle::SetPolarization(), G4PrimaryVertex::SetPrimary(), and G4PrimaryParticle::SetWeight().

Referenced by G4AdjointPrimaryGenerator::GenerateAdjointPrimaryVertex().

00113                                                                {
00114         if (particle_definition == NULL)
00115                 return;
00116 
00117         if (verbosityLevel > 1)
00118                 G4cout << " NumberOfParticlesToBeGenerated: "
00119                                 << NumberOfParticlesToBeGenerated << G4endl;
00120 
00121         // Position stuff
00122         particle_position = posGenerator->GenerateOne();
00123 
00124         // create a new vertex
00125         G4PrimaryVertex* vertex = new G4PrimaryVertex(particle_position,
00126                         particle_time);
00127 
00128         for (G4int i = 0; i < NumberOfParticlesToBeGenerated; i++) {
00129                 // Angular stuff
00130                 particle_momentum_direction = angGenerator->GenerateOne();
00131                 // Energy stuff
00132                 particle_energy = eneGenerator->GenerateOne(particle_definition);
00133 
00134                 if (verbosityLevel >= 2)
00135                         G4cout << "Creating primaries and assigning to vertex" << G4endl;
00136                 // create new primaries and set them to the vertex
00137                 G4double mass = particle_definition->GetPDGMass();
00138                 G4PrimaryParticle* particle =
00139                   new G4PrimaryParticle(particle_definition);
00140                 particle->SetKineticEnergy( particle_energy );
00141                 particle->SetMass( mass );
00142                 particle->SetMomentumDirection( particle_momentum_direction );
00143                 particle->SetCharge( particle_charge );
00144                 particle->SetPolarization(particle_polarization.x(),
00145                                           particle_polarization.y(),
00146                                           particle_polarization.z());
00147                 if (verbosityLevel > 1) {
00148                         G4cout << "Particle name: "
00149                                         << particle_definition->GetParticleName() << G4endl;
00150                         G4cout << "       Energy: " << particle_energy << G4endl;
00151                         G4cout << "     Position: " << particle_position << G4endl;
00152                         G4cout << "    Direction: " << particle_momentum_direction
00153                                         << G4endl;
00154                 }
00155                 // Set bweight equal to the multiple of all non-zero weights
00156                 particle_weight = eneGenerator->GetWeight()*biasRndm->GetBiasWeight();
00157                 // pass it to primary particle
00158                 particle->SetWeight(particle_weight);
00159 
00160                 vertex->SetPrimary(particle);
00161 
00162         }
00163         // now pass the weight to the primary vertex. CANNOT be used here!
00164         //  vertex->SetWeight(particle_weight);
00165         evt->AddPrimaryVertex(vertex);
00166         if (verbosityLevel > 1)
00167                 G4cout << " Primary Vetex generated !" << G4endl;
00168 }

G4SPSAngDistribution* G4SingleParticleSource::GetAngDist (  )  [inline]

Definition at line 133 of file G4SingleParticleSource.hh.

Referenced by G4AdjointPrimaryGenerator::G4AdjointPrimaryGenerator(), G4AdjointPrimaryGenerator::GenerateAdjointPrimaryVertex(), G4AdjointPrimaryGenerator::SetAdjointPrimarySourceOnAnExtSurfaceOfAVolume(), G4GeneralParticleSourceMessenger::SetNewValue(), and G4AdjointPrimaryGenerator::SetSphericalAdjointPrimarySource().

00133                                            {
00134                 return angGenerator;
00135         }

G4SPSRandomGenerator* G4SingleParticleSource::GetBiasRndm (  )  [inline]

Definition at line 141 of file G4SingleParticleSource.hh.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00141                                             {
00142                 return biasRndm;
00143         }

G4SPSEneDistribution* G4SingleParticleSource::GetEneDist (  )  [inline]

Definition at line 137 of file G4SingleParticleSource.hh.

Referenced by G4AdjointPrimaryGenerator::G4AdjointPrimaryGenerator(), G4AdjointPrimaryGenerator::GenerateAdjointPrimaryVertex(), and G4GeneralParticleSourceMessenger::SetNewValue().

00137                                            {
00138                 return eneGenerator;
00139         }

G4int G4SingleParticleSource::GetNumberOfParticles (  )  [inline]

Definition at line 186 of file G4SingleParticleSource.hh.

Referenced by G4GeneralParticleSource::GetNumberOfParticles().

00186                                             {
00187                 return NumberOfParticlesToBeGenerated;
00188         }

G4ParticleDefinition* G4SingleParticleSource::GetParticleDefinition (  )  [inline]

Definition at line 151 of file G4SingleParticleSource.hh.

Referenced by G4GeneralParticleSource::GetParticleDefinition().

00151                                                               {
00152                 return particle_definition;
00153         }

G4double G4SingleParticleSource::GetParticleEnergy (  )  [inline]

Definition at line 198 of file G4SingleParticleSource.hh.

Referenced by G4GeneralParticleSource::GetParticleEnergy().

00198                                             {
00199                 return particle_energy;
00200         }

G4ThreeVector G4SingleParticleSource::GetParticleMomentumDirection (  )  [inline]

Definition at line 194 of file G4SingleParticleSource.hh.

Referenced by G4GeneralParticleSource::GetParticleMomentumDirection().

00194                                                             {
00195                 return particle_momentum_direction;
00196         }

G4ThreeVector G4SingleParticleSource::GetParticlePolarization (  )  [inline]

Definition at line 166 of file G4SingleParticleSource.hh.

Referenced by G4GeneralParticleSource::GetParticlePolarization().

00166                                                        {
00167                 return particle_polarization;
00168         }

G4ThreeVector G4SingleParticleSource::GetParticlePosition (  )  [inline]

Reimplemented from G4VPrimaryGenerator.

Definition at line 190 of file G4SingleParticleSource.hh.

Referenced by G4GeneralParticleSource::GetParticlePosition().

00190                                                    {
00191                 return particle_position;
00192         }

G4double G4SingleParticleSource::GetParticleTime (  )  [inline]

Reimplemented from G4VPrimaryGenerator.

Definition at line 176 of file G4SingleParticleSource.hh.

Referenced by G4GeneralParticleSource::GetParticleTime().

00176                                           {
00177                 return particle_time;
00178         }

G4SPSPosDistribution* G4SingleParticleSource::GetPosDist (  )  [inline]

Definition at line 129 of file G4SingleParticleSource.hh.

Referenced by G4AdjointPrimaryGenerator::G4AdjointPrimaryGenerator(), G4AdjointPrimaryGenerator::GenerateAdjointPrimaryVertex(), G4AdjointPrimaryGenerator::SetAdjointPrimarySourceOnAnExtSurfaceOfAVolume(), G4GeneralParticleSourceMessenger::SetNewValue(), and G4AdjointPrimaryGenerator::SetSphericalAdjointPrimarySource().

00129                                            {
00130                 return posGenerator;
00131         }

void G4SingleParticleSource::SetNumberOfParticles ( G4int  i  )  [inline]

Definition at line 181 of file G4SingleParticleSource.hh.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue(), and G4GeneralParticleSource::SetNumberOfParticles().

00181                                                   {
00182                 NumberOfParticlesToBeGenerated = i;
00183         }

void G4SingleParticleSource::SetParticleCharge ( G4double  aCharge  )  [inline]

Definition at line 156 of file G4SingleParticleSource.hh.

Referenced by G4GeneralParticleSource::SetParticleCharge().

00156                                                         {
00157                 particle_charge = aCharge;
00158         }

void G4SingleParticleSource::SetParticleDefinition ( G4ParticleDefinition aParticleDefinition  ) 

Definition at line 107 of file G4SingleParticleSource.cc.

References G4ParticleDefinition::GetPDGCharge().

Referenced by G4AdjointPrimaryGenerator::GenerateAdjointPrimaryVertex(), G4GeneralParticleSourceMessenger::SetNewValue(), and G4GeneralParticleSource::SetParticleDefinition().

00108                                                            {
00109         particle_definition = aParticleDefinition;
00110         particle_charge = particle_definition->GetPDGCharge();
00111 }

void G4SingleParticleSource::SetParticlePolarization ( G4ThreeVector  aVal  )  [inline]

Definition at line 162 of file G4SingleParticleSource.hh.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue(), and G4GeneralParticleSource::SetParticlePolarization().

00162                                                                 {
00163                 particle_polarization = aVal;
00164         }

void G4SingleParticleSource::SetParticleTime ( G4double  aTime  )  [inline]

Reimplemented from G4VPrimaryGenerator.

Definition at line 172 of file G4SingleParticleSource.hh.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue(), and G4GeneralParticleSource::SetParticleTime().

00172                                                     {
00173                 particle_time = aTime;
00174         }

void G4SingleParticleSource::SetVerbosity ( G4int   ) 

Definition at line 99 of file G4SingleParticleSource.cc.

References G4cout, G4endl, G4SPSEneDistribution::SetVerbosity(), G4SPSAngDistribution::SetVerbosity(), and G4SPSPosDistribution::SetVerbosity().

Referenced by G4GeneralParticleSourceMessenger::SetNewValue(), and G4GeneralParticleSource::SetVerbosity().

00099                                                 {
00100         verbosityLevel = vL;
00101         posGenerator->SetVerbosity(vL);
00102         angGenerator->SetVerbosity(vL);
00103         eneGenerator->SetVerbosity(vL);
00104         G4cout << "Verbosity Set to: " << verbosityLevel << G4endl;
00105 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:53:23 2013 for Geant4 by  doxygen 1.4.7