G4GeneralParticleSource Class Reference

#include <G4GeneralParticleSource.hh>

Inheritance diagram for G4GeneralParticleSource:

G4VPrimaryGenerator

Public Member Functions

 G4GeneralParticleSource ()
 ~G4GeneralParticleSource ()
void GeneratePrimaryVertex (G4Event *)
G4int GetNumberofSource ()
void ListSource ()
void SetCurrentSourceto (G4int)
void SetCurrentSourceIntensity (G4double)
G4SingleParticleSourceGetCurrentSource ()
G4int GetCurrentSourceIndex ()
G4double GetCurrentSourceIntensity ()
void ClearAll ()
void AddaSource (G4double)
void DeleteaSource (G4int)
void SetVerbosity (G4int i)
void SetMultipleVertex (G4bool av)
void SetFlatSampling (G4bool av)
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 151 of file G4GeneralParticleSource.hh.


Constructor & Destructor Documentation

G4GeneralParticleSource::G4GeneralParticleSource (  ) 

Definition at line 64 of file G4GeneralParticleSource.cc.

00065   : multiple_vertex(false), flat_sampling(false)
00066 {
00067   sourceVector.clear();
00068   sourceIntensity.clear();
00069   sourceProbability.clear();
00070   currentSource = new G4SingleParticleSource();
00071   sourceVector.push_back(currentSource);
00072   sourceIntensity.push_back(1.);
00073   currentSourceIdx = G4int(sourceVector.size() - 1);
00074   theMessenger = new G4GeneralParticleSourceMessenger(this);
00075   theMessenger->SetParticleGun(currentSource);
00076   IntensityNormalization();
00077 }

G4GeneralParticleSource::~G4GeneralParticleSource (  ) 

Definition at line 79 of file G4GeneralParticleSource.cc.

00080 {
00081   delete theMessenger;
00082 }


Member Function Documentation

void G4GeneralParticleSource::AddaSource ( G4double   ) 

Definition at line 84 of file G4GeneralParticleSource.cc.

References G4GeneralParticleSourceMessenger::SetParticleGun().

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00085 {
00086   currentSource = new G4SingleParticleSource();
00087   theMessenger->SetParticleGun(currentSource);
00088   sourceVector.push_back(currentSource);
00089   sourceIntensity.push_back(aV);
00090   currentSourceIdx = G4int(sourceVector.size() - 1);
00091   IntensityNormalization();
00092 }

void G4GeneralParticleSource::ClearAll (  ) 

Definition at line 152 of file G4GeneralParticleSource.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00153 {
00154   currentSourceIdx = -1;
00155   currentSource = 0;
00156   sourceVector.clear();
00157   sourceIntensity.clear();
00158   sourceProbability.clear();
00159 }

void G4GeneralParticleSource::DeleteaSource ( G4int   ) 

Definition at line 161 of file G4GeneralParticleSource.cc.

References G4cout, and G4endl.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00162 {
00163   size_t id = size_t (aV) ;
00164   if ( id <= sourceIntensity.size() ) {
00165     sourceVector.erase(sourceVector.begin()+aV);
00166     sourceIntensity.erase(sourceIntensity.begin()+aV);
00167     normalised = false ;
00168     if (currentSourceIdx == aV ) { 
00169         if ( sourceIntensity.size() > 0 ) { 
00170           currentSource = sourceVector[0];
00171           currentSourceIdx = 1;
00172         } else {
00173           currentSource = 0;
00174           currentSourceIdx = -1;
00175         }
00176     }                   
00177   } else {
00178     G4cout << " source index is invalid " << G4endl;
00179     G4cout << "    it shall be <= " << sourceIntensity.size() << G4endl;
00180   }
00181 } 

void G4GeneralParticleSource::GeneratePrimaryVertex ( G4Event  )  [virtual]

Implements G4VPrimaryGenerator.

Definition at line 183 of file G4GeneralParticleSource.cc.

References G4UniformRand.

00184 {
00185   if (!multiple_vertex){
00186     if (sourceIntensity.size() > 1) {
00187       if (!normalised) IntensityNormalization();
00188       G4double rndm = G4UniformRand();
00189       size_t i = 0 ;
00190       if (!flat_sampling) {
00191         while ( rndm > sourceProbability[i] ) i++;
00192         (currentSource = sourceVector[i]);
00193       } else {
00194         i = size_t (sourceIntensity.size()*rndm);
00195         currentSource = sourceVector[i];
00196       }
00197     }
00198     currentSource-> GeneratePrimaryVertex(evt);
00199   } 
00200   else {
00201     for (size_t i = 0; i <  sourceIntensity.size(); i++) {
00202       sourceVector[i]->GeneratePrimaryVertex(evt); 
00203     }
00204   }
00205 }

G4SingleParticleSource* G4GeneralParticleSource::GetCurrentSource (  )  [inline]

Definition at line 165 of file G4GeneralParticleSource.hh.

00165 {return currentSource;};

G4int G4GeneralParticleSource::GetCurrentSourceIndex (  )  [inline]

Definition at line 166 of file G4GeneralParticleSource.hh.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00166 { return currentSourceIdx; };

G4double G4GeneralParticleSource::GetCurrentSourceIntensity (  )  [inline]

Definition at line 167 of file G4GeneralParticleSource.hh.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00167 { return sourceIntensity[currentSourceIdx]; };

G4int G4GeneralParticleSource::GetNumberOfParticles (  )  [inline]

Definition at line 200 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::GetNumberOfParticles().

00200 { return currentSource->GetNumberOfParticles(); };

G4int G4GeneralParticleSource::GetNumberofSource (  )  [inline]

Definition at line 161 of file G4GeneralParticleSource.hh.

00161 { return G4int(sourceVector.size()); };

G4ParticleDefinition* G4GeneralParticleSource::GetParticleDefinition (  )  [inline]

Definition at line 186 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::GetParticleDefinition().

00186 { return currentSource->GetParticleDefinition();} ;

G4double G4GeneralParticleSource::GetParticleEnergy (  )  [inline]

Definition at line 203 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::GetParticleEnergy().

00203 {return currentSource->GetParticleEnergy();};

G4ThreeVector G4GeneralParticleSource::GetParticleMomentumDirection (  )  [inline]

Definition at line 202 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::GetParticleMomentumDirection().

00202 { return currentSource->GetParticleMomentumDirection();};

G4ThreeVector G4GeneralParticleSource::GetParticlePolarization (  )  [inline]

Definition at line 192 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::GetParticlePolarization().

00192 {return currentSource->GetParticlePolarization();};

G4ThreeVector G4GeneralParticleSource::GetParticlePosition (  )  [inline]

Reimplemented from G4VPrimaryGenerator.

Definition at line 201 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::GetParticlePosition().

00201 { return currentSource->GetParticlePosition();};

G4double G4GeneralParticleSource::GetParticleTime (  )  [inline]

Reimplemented from G4VPrimaryGenerator.

Definition at line 196 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::GetParticleTime().

00196 { return currentSource->GetParticleTime(); };

void G4GeneralParticleSource::ListSource (  ) 

Definition at line 125 of file G4GeneralParticleSource.cc.

References G4cout, and G4endl.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00126 {
00127   G4cout << " The number of particle sources is " << sourceIntensity.size() << G4endl;
00128   for (size_t i = 0 ; i < sourceIntensity.size(); i++)
00129     G4cout << "   source " << i << " intensity is " << sourceIntensity[i] << G4endl;
00130 }

void G4GeneralParticleSource::SetCurrentSourceIntensity ( G4double   ) 

Definition at line 146 of file G4GeneralParticleSource.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00147 {
00148   sourceIntensity[currentSourceIdx] = aV;
00149   normalised = false;
00150 }

void G4GeneralParticleSource::SetCurrentSourceto ( G4int   ) 

Definition at line 132 of file G4GeneralParticleSource.cc.

References G4cout, G4endl, and G4GeneralParticleSourceMessenger::SetParticleGun().

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00133 {
00134   size_t id = size_t (aV) ;
00135   if ( id <= sourceIntensity.size() ) {
00136     currentSourceIdx = aV;
00137     currentSource = sourceVector[id];
00138     theMessenger->SetParticleGun(currentSource);
00139     //
00140   } else {
00141     G4cout << " source index is invalid " << G4endl;
00142     G4cout << "    it shall be <= " << sourceIntensity.size() << G4endl;
00143   }
00144 }

void G4GeneralParticleSource::SetFlatSampling ( G4bool  av  )  [inline]

Definition at line 180 of file G4GeneralParticleSource.hh.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00180 {flat_sampling = av; normalised = false;} ;

void G4GeneralParticleSource::SetMultipleVertex ( G4bool  av  )  [inline]

Definition at line 176 of file G4GeneralParticleSource.hh.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00176 {multiple_vertex = av;} ;

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

Definition at line 198 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::SetNumberOfParticles().

00198 { currentSource->SetNumberOfParticles(i); };

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

Definition at line 188 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::SetParticleCharge().

00188 { currentSource->SetParticleCharge(aCharge); } ;

void G4GeneralParticleSource::SetParticleDefinition ( G4ParticleDefinition aParticleDefinition  )  [inline]

Definition at line 183 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::SetParticleDefinition().

00184     {currentSource->SetParticleDefinition(aParticleDefinition); } ;

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

Definition at line 191 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::SetParticlePolarization().

00191 {currentSource->SetParticlePolarization(aVal);};

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

Reimplemented from G4VPrimaryGenerator.

Definition at line 195 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::SetParticleTime().

00195 { currentSource->SetParticleTime(aTime); };

void G4GeneralParticleSource::SetVerbosity ( G4int  i  )  [inline]

Definition at line 173 of file G4GeneralParticleSource.hh.

References G4SingleParticleSource::SetVerbosity().

00173 {currentSource->SetVerbosity(i);} ;


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