Geant4-11
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
G4GeneralParticleSourceData Class Reference

#include <G4GeneralParticleSourceData.hh>

Public Member Functions

void AddASource (G4double intensity)
 
void ClearSources ()
 
void DeleteASource (G4int idx)
 
G4SingleParticleSourceGetCurrentSource () const
 
G4SingleParticleSourceGetCurrentSource (G4int idx)
 
G4int GetCurrentSourceIdx () const
 
G4bool GetFlatSampling () const
 
G4double GetIntensity (G4int idx) const
 
G4int GetIntensityVectorSize () const
 
G4bool GetMultipleVertex () const
 
G4double GetSourceProbability (G4int idx) const
 
G4int GetSourceVectorSize () const
 
void IntensityNormalise ()
 
void Lock ()
 
G4bool Normalised () const
 
void SetCurrentSourceIntensity (G4double)
 
void SetFlatSampling (G4bool fSamp)
 
void SetMultipleVertex (G4bool flag)
 
void SetVerbosityAllSources (G4int vl)
 
void Unlock ()
 

Static Public Member Functions

static G4GeneralParticleSourceDataInstance ()
 

Private Member Functions

 G4GeneralParticleSourceData ()
 
 ~G4GeneralParticleSourceData ()
 

Private Attributes

G4SingleParticleSourcecurrentSource = nullptr
 
G4int currentSourceIdx = 0
 
G4bool flat_sampling = false
 
G4bool multiple_vertex = false
 
G4Mutex mutex
 
G4bool normalised = false
 
std::vector< G4doublesourceIntensity
 
std::vector< G4doublesourceProbability
 
std::vector< G4SingleParticleSource * > sourceVector
 

Detailed Description

Definition at line 56 of file G4GeneralParticleSourceData.hh.

Constructor & Destructor Documentation

◆ G4GeneralParticleSourceData()

G4GeneralParticleSourceData::G4GeneralParticleSourceData ( )
private

Definition at line 40 of file G4GeneralParticleSourceData.cc.

41{
43
44 sourceVector.clear();
45 sourceIntensity.clear();
46 sourceProbability.clear();
47
49 sourceVector.push_back(currentSource);
50 sourceIntensity.push_back(1.);
51}
#define G4MUTEXINIT(mutex)
Definition: G4Threading.hh:87
std::vector< G4SingleParticleSource * > sourceVector

References currentSource, G4MUTEXINIT, sourceIntensity, sourceProbability, and sourceVector.

◆ ~G4GeneralParticleSourceData()

G4GeneralParticleSourceData::~G4GeneralParticleSourceData ( )
private

Definition at line 53 of file G4GeneralParticleSourceData.cc.

54{
56 for ( auto it = sourceVector.cbegin(); it != sourceVector.cend(); ++it )
57 {
58 delete *it;
59 }
60 sourceVector.clear();
61}
#define G4MUTEXDESTROY(mutex)
Definition: G4Threading.hh:90

References G4MUTEXDESTROY, and sourceVector.

Member Function Documentation

◆ AddASource()

void G4GeneralParticleSourceData::AddASource ( G4double  intensity)

◆ ClearSources()

void G4GeneralParticleSourceData::ClearSources ( )

Definition at line 145 of file G4GeneralParticleSourceData.cc.

146{
147 currentSourceIdx = -1;
148 currentSource = nullptr;
149 for ( auto it = sourceVector.cbegin(); it != sourceVector.cend(); ++it )
150 {
151 delete *it;
152 }
153 sourceVector.clear();
154 sourceIntensity.clear();
155 normalised = false;
156}

References currentSource, currentSourceIdx, normalised, sourceIntensity, and sourceVector.

Referenced by G4GeneralParticleSource::ClearAll().

◆ DeleteASource()

void G4GeneralParticleSourceData::DeleteASource ( G4int  idx)

Definition at line 124 of file G4GeneralParticleSourceData.cc.

125{
126 delete sourceVector[idx];
127 sourceVector.erase(sourceVector.begin() + idx);
128 sourceIntensity.erase(sourceIntensity.begin()+idx);
129 normalised = false ;
130 if (currentSourceIdx == idx )
131 {
132 if ( GetIntensityVectorSize() > 0 )
133 {
136 }
137 else
138 {
139 currentSource = nullptr;
140 currentSourceIdx = -1;
141 }
142 }
143}
G4SingleParticleSource * GetCurrentSource() const

References currentSource, currentSourceIdx, GetCurrentSource(), GetIntensityVectorSize(), normalised, sourceIntensity, and sourceVector.

Referenced by G4GeneralParticleSource::DeleteaSource().

◆ GetCurrentSource() [1/2]

G4SingleParticleSource * G4GeneralParticleSourceData::GetCurrentSource ( ) const
inline

Definition at line 72 of file G4GeneralParticleSourceData.hh.

73 { return currentSource; }

References currentSource.

Referenced by DeleteASource(), and IntensityNormalise().

◆ GetCurrentSource() [2/2]

G4SingleParticleSource * G4GeneralParticleSourceData::GetCurrentSource ( G4int  idx)

◆ GetCurrentSourceIdx()

G4int G4GeneralParticleSourceData::GetCurrentSourceIdx ( ) const
inline

◆ GetFlatSampling()

G4bool G4GeneralParticleSourceData::GetFlatSampling ( ) const
inline

◆ GetIntensity()

G4double G4GeneralParticleSourceData::GetIntensity ( G4int  idx) const
inline

◆ GetIntensityVectorSize()

G4int G4GeneralParticleSourceData::GetIntensityVectorSize ( ) const
inline

◆ GetMultipleVertex()

G4bool G4GeneralParticleSourceData::GetMultipleVertex ( ) const
inline

◆ GetSourceProbability()

G4double G4GeneralParticleSourceData::GetSourceProbability ( G4int  idx) const
inline

Definition at line 81 of file G4GeneralParticleSourceData.hh.

82 { return sourceProbability.at(idx); }

References sourceProbability.

Referenced by G4GeneralParticleSource::GeneratePrimaryVertex().

◆ GetSourceVectorSize()

G4int G4GeneralParticleSourceData::GetSourceVectorSize ( ) const
inline

◆ Instance()

G4GeneralParticleSourceData * G4GeneralParticleSourceData::Instance ( )
static

◆ IntensityNormalise()

void G4GeneralParticleSourceData::IntensityNormalise ( )

Definition at line 70 of file G4GeneralParticleSourceData.cc.

71{
72 G4double total = 0.;
73 std::size_t i = 0 ;
74 for (i = 0; i < sourceIntensity.size(); ++i)
75 {
77 }
78 sourceProbability.clear();
79 std::vector <G4double> sourceNormalizedIntensity;
80 sourceNormalizedIntensity.clear();
81
82 sourceNormalizedIntensity.push_back(sourceIntensity[0]/total);
83 sourceProbability.push_back(sourceNormalizedIntensity[0]);
84
85 for (i = 1 ; i < sourceIntensity.size(); ++i)
86 {
87 sourceNormalizedIntensity.push_back(sourceIntensity[i]/total);
88 sourceProbability.push_back(sourceNormalizedIntensity[i]+sourceProbability[i-1]);
89 }
90
91 // set source weights here based on sampling scheme (analog/flat)
92 // and intensities
93 //
94 for (i = 0 ; i < sourceIntensity.size(); ++i)
95 {
96 if (!flat_sampling)
97 {
99 }
100 else
101 {
103 ->SetIntensityWeight(sourceNormalizedIntensity[i]*sourceIntensity.size());
104 }
105 }
106 normalised = true;
107}
double G4double
Definition: G4Types.hh:83
void SetIntensityWeight(G4double weight)
G4SPSRandomGenerator * GetBiasRndm() const
G4double total(Particle const *const p1, Particle const *const p2)

References flat_sampling, G4SingleParticleSource::GetBiasRndm(), GetCurrentSource(), normalised, G4SPSRandomGenerator::SetIntensityWeight(), sourceIntensity, sourceProbability, and G4INCL::CrossSections::total().

Referenced by G4GeneralParticleSource::IntensityNormalization().

◆ Lock()

void G4GeneralParticleSourceData::Lock ( )

◆ Normalised()

G4bool G4GeneralParticleSourceData::Normalised ( ) const
inline

◆ SetCurrentSourceIntensity()

void G4GeneralParticleSourceData::SetCurrentSourceIntensity ( G4double  intensity)

Definition at line 109 of file G4GeneralParticleSourceData.cc.

110{
111 sourceIntensity.at(currentSourceIdx) = intensity;
112 normalised = false;
113}

References currentSourceIdx, normalised, and sourceIntensity.

Referenced by G4GeneralParticleSource::SetCurrentSourceIntensity().

◆ SetFlatSampling()

void G4GeneralParticleSourceData::SetFlatSampling ( G4bool  fSamp)
inline

Definition at line 86 of file G4GeneralParticleSourceData.hh.

87 { flat_sampling = fSamp; }

References flat_sampling.

Referenced by G4GeneralParticleSource::SetFlatSampling().

◆ SetMultipleVertex()

void G4GeneralParticleSourceData::SetMultipleVertex ( G4bool  flag)
inline

Definition at line 91 of file G4GeneralParticleSourceData.hh.

92 { multiple_vertex = flag; }

References multiple_vertex.

Referenced by G4GeneralParticleSource::SetMultipleVertex().

◆ SetVerbosityAllSources()

void G4GeneralParticleSourceData::SetVerbosityAllSources ( G4int  vl)

Definition at line 158 of file G4GeneralParticleSourceData.cc.

159{
160 for ( auto it = sourceVector.cbegin(); it != sourceVector.cend(); ++it )
161 {
162 (*it)->SetVerbosity(vl);
163 }
164}

References sourceVector.

Referenced by G4GeneralParticleSource::SetVerbosity().

◆ Unlock()

void G4GeneralParticleSourceData::Unlock ( )

Field Documentation

◆ currentSource

G4SingleParticleSource* G4GeneralParticleSourceData::currentSource = nullptr
private

◆ currentSourceIdx

G4int G4GeneralParticleSourceData::currentSourceIdx = 0
private

◆ flat_sampling

G4bool G4GeneralParticleSourceData::flat_sampling = false
private

◆ multiple_vertex

G4bool G4GeneralParticleSourceData::multiple_vertex = false
private

Definition at line 116 of file G4GeneralParticleSourceData.hh.

Referenced by GetMultipleVertex(), and SetMultipleVertex().

◆ mutex

G4Mutex G4GeneralParticleSourceData::mutex
private

Definition at line 122 of file G4GeneralParticleSourceData.hh.

◆ normalised

G4bool G4GeneralParticleSourceData::normalised = false
private

◆ sourceIntensity

std::vector<G4double> G4GeneralParticleSourceData::sourceIntensity
private

◆ sourceProbability

std::vector<G4double> G4GeneralParticleSourceData::sourceProbability
private

◆ sourceVector

std::vector<G4SingleParticleSource*> G4GeneralParticleSourceData::sourceVector
private

The documentation for this class was generated from the following files: