Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/utils/src/G4ElectronIonPair.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /processes/electromagnetic/utils/src/G4ElectronIonPair.cc (Version 11.3.0) and /processes/electromagnetic/utils/src/G4ElectronIonPair.cc (Version 1.0)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 //                                                
 27 // -------------------------------------------    
 28 //                                                
 29 // GEANT4 Class file                              
 30 //                                                
 31 //                                                
 32 // File name:     G4ElectronIonPair               
 33 //                                                
 34 // Author:        Vladimir Ivanchenko             
 35 //                                                
 36 // Creation date: 08.07.2008                      
 37 //                                                
 38 // Modifications:                                 
 39 //                                                
 40 // -------------------------------------------    
 41                                                   
 42 //....oooOO0OOooo........oooOO0OOooo........oo    
 43 //....oooOO0OOooo........oooOO0OOooo........oo    
 44                                                   
 45 #include "G4ElectronIonPair.hh"                   
 46 #include "G4SystemOfUnits.hh"                     
 47 #include "G4Material.hh"                          
 48 #include "G4MaterialTable.hh"                     
 49 #include "G4StepPoint.hh"                         
 50 #include "G4VProcess.hh"                          
 51 #include "G4ProcessType.hh"                       
 52 #include "G4Track.hh"                             
 53 #include "Randomize.hh"                           
 54                                                   
 55 //....oooOO0OOooo........oooOO0OOooo........oo    
 56                                                   
 57 G4ElectronIonPair::G4ElectronIonPair(G4int ver    
 58 {                                                 
 59   verbose = verb;                                 
 60   curMaterial = nullptr;                          
 61   curMeanEnergy = 0.0;                            
 62   nMaterials = 0;                                 
 63   invFanoFactor = 1.0/0.2;                        
 64   Initialise();                                   
 65 }                                                 
 66                                                   
 67 //....oooOO0OOooo........oooOO0OOooo........oo    
 68                                                   
 69 G4ElectronIonPair::~G4ElectronIonPair() = defa    
 70                                                   
 71 //....oooOO0OOooo........oooOO0OOooo........oo    
 72                                                   
 73 G4double G4ElectronIonPair::MeanNumberOfIonsAl    
 74            const G4ParticleDefinition* part,      
 75            const G4Material* material,            
 76            G4double edep,                         
 77            G4double niel)                         
 78 {                                                 
 79   G4double nion = 0.0;                            
 80                                                   
 81   // NIEL does not provide ionisation clusters    
 82   if(edep > niel) {                               
 83                                                   
 84     // neutral particles do not produce ionisa    
 85     if(part->GetPDGCharge() != 0.0) {             
 86                                                   
 87       // select material                          
 88       if(material != curMaterial) {               
 89   curMaterial = material;                         
 90   curMeanEnergy = material->GetIonisation()->G    
 91                                                   
 92   // if mean energy is not defined then look i    
 93   if(0.0 == curMeanEnergy) {                      
 94     curMeanEnergy = FindG4MeanEnergyPerIonPair    
 95   }                                               
 96       }                                           
 97       if(curMeanEnergy > 0.0) { nion = (edep -    
 98     }                                             
 99   }                                               
100   return nion;                                    
101 }                                                 
102                                                   
103 //....oooOO0OOooo........oooOO0OOooo........oo    
104                                                   
105 std::vector<G4ThreeVector>*                       
106 G4ElectronIonPair::SampleIonsAlongStep(const G    
107 {                                                 
108   std::vector<G4ThreeVector>* v = nullptr;        
109                                                   
110   G4int nion = SampleNumberOfIonsAlongStep(ste    
111                                                   
112   // sample ionisation along step                 
113   if(nion > 0) {                                  
114                                                   
115     v = new std::vector<G4ThreeVector>;           
116     G4ThreeVector prePos = step->GetPreStepPoi    
117     G4ThreeVector deltaPos = step->GetPostStep    
118     for(G4int i=0; i<nion; ++i) {                 
119       v->push_back( prePos + deltaPos*G4Unifor    
120     }                                             
121     if(verbose > 1 ) {                            
122       G4cout << "### G4ElectronIonPair::Sample    
123        << v->size() << "  ion pairs are added"    
124     }                                             
125   }                                               
126   return v;                                       
127 }                                                 
128                                                   
129 //....oooOO0OOooo........oooOO0OOooo........oo    
130                                                   
131 G4int                                             
132 G4ElectronIonPair::ResidualeChargePostStep(con    
133              const G4TrackVector*,                
134              G4int subType) const                 
135 {                                                 
136   G4int nholes = 0;                               
137                                                   
138   if(2 == subType || 12 == subType || 13 == su    
139   return nholes;                                  
140 }                                                 
141                                                   
142 //....oooOO0OOooo........oooOO0OOooo........oo    
143                                                   
144 G4double                                          
145 G4ElectronIonPair::FindG4MeanEnergyPerIonPair(    
146 {                                                 
147   G4String name = mat->GetName();                 
148   G4double res  = 0.0;                            
149                                                   
150   // is this material in the vector?              
151   for(G4int j=0; j<nMaterials; ++j) {             
152     if(name == g4MatNames[j]) {                   
153       res = g4MatData[j];                         
154       mat->GetIonisation()->SetMeanEnergyPerIo    
155       if(verbose > 0) {                           
156   G4cout << "### G4ElectronIonPair::FindG4Mean    
157          << name << " Epair= " << res/eV << "     
158          << G4endl;                               
159       }                                           
160       break;                                      
161     }                                             
162   }                                               
163   return res;                                     
164 }                                                 
165                                                   
166 //....oooOO0OOooo........oooOO0OOooo........oo    
167                                                   
168 void G4ElectronIonPair:: DumpMeanEnergyPerIonP    
169 {                                                 
170   std::size_t nmat = G4Material::GetNumberOfMa    
171   const G4MaterialTable* mtable = G4Material::    
172   if(nmat > 0) {                                  
173     G4cout << "### G4ElectronIonPair: mean ene    
174      << G4endl;                                   
175     for(std::size_t i=0; i<nmat; ++i) {           
176       const G4Material* mat = (*mtable)[i];       
177       G4double x = mat->GetIonisation()->GetMe    
178       if(x > 0.0) {                               
179   G4cout << "   " << mat->GetName() << "   Epa    
180          << x/eV << " eV" << G4endl;              
181       }                                           
182     }                                             
183   }                                               
184 }                                                 
185                                                   
186 //....oooOO0OOooo........oooOO0OOooo........oo    
187                                                   
188 void G4ElectronIonPair::DumpG4MeanEnergyPerIon    
189 {                                                 
190   if(nMaterials > 0) {                            
191     G4cout << "### G4ElectronIonPair: mean ene    
192      << " for Geant4 materials" << G4endl;        
193     for(G4int i=0; i<nMaterials; ++i) {           
194       G4cout << "   " << g4MatNames[i] << "       
195        << g4MatData[i]/eV << " eV" << G4endl;     
196     }                                             
197   }                                               
198 }                                                 
199                                                   
200 //....oooOO0OOooo........oooOO0OOooo........oo    
201                                                   
202 void G4ElectronIonPair::Initialise()              
203 {                                                 
204   // ICRU Report 31, 1979                         
205   g4MatNames.push_back("G4_Si");                  
206   g4MatData.push_back(3.62*eV);                   
207                                                   
208   g4MatNames.push_back("G4_Ge");                  
209   g4MatData.push_back(2.97*eV);                   
210                                                   
211   g4MatNames.push_back("G4_He");                  
212   g4MatData.push_back(44.4*eV);                   
213                                                   
214   g4MatNames.push_back("G4_N");                   
215   g4MatData.push_back(36.4*eV);                   
216                                                   
217   g4MatNames.push_back("G4_O");                   
218   g4MatData.push_back(32.3*eV);                   
219                                                   
220   g4MatNames.push_back("G4_Ne");                  
221   g4MatData.push_back(36.8*eV);                   
222                                                   
223   g4MatNames.push_back("G4_Ar");                  
224   g4MatData.push_back(26.34*eV);                  
225                                                   
226   g4MatNames.push_back("G4_Kr");                  
227   g4MatData.push_back(24.1*eV);                   
228                                                   
229   g4MatNames.push_back("G4_Xe");                  
230   g4MatData.push_back(21.6*eV);                   
231                                                   
232   g4MatNames.push_back("G4_lAr");                 
233   g4MatData.push_back(23.6*eV);                   
234                                                   
235   g4MatNames.push_back("G4_lKr");                 
236   g4MatData.push_back(20.5*eV);                   
237                                                   
238   g4MatNames.push_back("G4_lXe");                 
239   g4MatData.push_back(15.6*eV);                   
240                                                   
241   g4MatNames.push_back("G4_AIR");                 
242   g4MatData.push_back(35.1*eV);                   
243                                                   
244   nMaterials = (G4int)g4MatData.size();           
245 }                                                 
246                                                   
247 //....oooOO0OOooo........oooOO0OOooo........oo    
248