61 curMaterial =
nullptr;
64 invFanoFactor = 1.0/0.2;
90 if(material != curMaterial) {
91 curMaterial = material;
95 if(0.0 == curMeanEnergy) {
99 if(curMeanEnergy > 0.0) { nion = (edep - niel)/curMeanEnergy; }
107 std::vector<G4ThreeVector>*
110 std::vector<G4ThreeVector>* v = 0;
117 v =
new std::vector<G4ThreeVector>;
120 for(
G4int i=0; i<nion; ++i) {
124 G4cout <<
"### G4ElectronIonPair::SampleIonisationPoints: "
125 << v->size() <<
" ion pairs are added" <<
G4endl;
140 if(2 == subType || 12 == subType || 13 == subType) { nholes = 1; }
153 for(
G4int j=0; j<nMaterials; j++) {
154 if(name == g4MatNames[j]) {
158 G4cout <<
"### G4ElectronIonPair::FindG4MeanEnergyPerIonPair for "
159 << name <<
" Epair= " << res/
eV <<
" eV is set"
175 G4cout <<
"### G4ElectronIonPair: mean energy per ion pair avalable:"
177 for(
G4int i=0; i<nmat; ++i) {
193 G4cout <<
"### G4ElectronIonPair: mean energy per ion pair "
194 <<
" for Geant4 materials" <<
G4endl;
195 for(
G4int i=0; i<nMaterials; ++i) {
196 G4cout <<
" " << g4MatNames[i] <<
" Epair= "
197 << g4MatData[i]/
eV <<
" eV" <<
G4endl;
204 void G4ElectronIonPair::Initialise()
207 g4MatNames.push_back(
"G4_Si");
208 g4MatData.push_back(3.62*
eV);
210 g4MatNames.push_back(
"G4_Ge");
211 g4MatData.push_back(2.97*
eV);
213 g4MatNames.push_back(
"G4_He");
214 g4MatData.push_back(44.4*
eV);
216 g4MatNames.push_back(
"G4_N");
217 g4MatData.push_back(36.4*
eV);
219 g4MatNames.push_back(
"G4_O");
220 g4MatData.push_back(32.3*
eV);
222 g4MatNames.push_back(
"G4_Ne");
223 g4MatData.push_back(36.8*
eV);
225 g4MatNames.push_back(
"G4_Ar");
226 g4MatData.push_back(26.34*
eV);
228 g4MatNames.push_back(
"G4_Kr");
229 g4MatData.push_back(24.1*
eV);
231 g4MatNames.push_back(
"G4_Xe");
232 g4MatData.push_back(21.6*
eV);
234 g4MatNames.push_back(
"G4_lAr");
235 g4MatData.push_back(23.6*
eV);
237 g4MatNames.push_back(
"G4_lKr");
238 g4MatData.push_back(20.5*
eV);
240 g4MatNames.push_back(
"G4_lXe");
241 g4MatData.push_back(15.6*
eV);
243 g4MatNames.push_back(
"G4_AIR");
244 g4MatData.push_back(35.1*
eV);
246 nMaterials = g4MatData.size();
G4IonisParamMat * GetIonisation() const
G4double MeanNumberOfIonsAlongStep(const G4ParticleDefinition *, const G4Material *, G4double edepTotal, G4double edepNIEL=0.0)
virtual ~G4ElectronIonPair()
G4double GetMeanEnergyPerIonPair() const
const G4String & GetName() const
static G4MaterialTable * GetMaterialTable()
std::vector< G4Material * > G4MaterialTable
G4int ResidualeChargePostStep(const G4ParticleDefinition *, const G4TrackVector *secondary=nullptr, G4int processSubType=-1) const
G4StepPoint * GetPreStepPoint() const
G4ElectronIonPair(G4int verb)
G4GLOB_DLL std::ostream G4cout
const G4ThreeVector & GetPosition() const
G4int SampleNumberOfIonsAlongStep(const G4Step *)
static constexpr double eV
static size_t GetNumberOfMaterials()
void DumpG4MeanEnergyPerIonPair() const
std::vector< G4Track * > G4TrackVector
G4StepPoint * GetPostStepPoint() const
std::vector< G4ThreeVector > * SampleIonsAlongStep(const G4Step *)
void DumpMeanEnergyPerIonPair() const
G4double GetPDGCharge() const
G4double FindG4MeanEnergyPerIonPair(const G4Material *) const
void SetMeanEnergyPerIonPair(G4double value)