#include <G4GeneralParticleSource.hh>
Inheritance diagram for G4GeneralParticleSource:
Definition at line 151 of file G4GeneralParticleSource.hh.
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 | ( | ) |
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] |
G4int G4GeneralParticleSource::GetCurrentSourceIndex | ( | ) | [inline] |
Definition at line 166 of file G4GeneralParticleSource.hh.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
G4double G4GeneralParticleSource::GetCurrentSourceIntensity | ( | ) | [inline] |
Definition at line 167 of file G4GeneralParticleSource.hh.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
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().
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().
void G4GeneralParticleSource::SetMultipleVertex | ( | G4bool | av | ) | [inline] |
Definition at line 176 of file G4GeneralParticleSource.hh.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
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);} ;