Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/lowenergy/src/G4hBetheBlochModel.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/lowenergy/src/G4hBetheBlochModel.cc (Version 11.3.0) and /processes/electromagnetic/lowenergy/src/G4hBetheBlochModel.cc (Version ReleaseNotes)


** Warning: Cannot open xref database.

  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:     G4hBetheBlochModel              
 33 //                                                
 34 // Author:        V.Ivanchenko (Vladimir.Ivanc    
 35 //                                                
 36 // Creation date: 20 July 2000                    
 37 //                                                
 38 // Modifications:                                 
 39 // 20/07/2000  V.Ivanchenko First implementati    
 40 // 03/10/2000  V.Ivanchenko clean up accoding     
 41 //                                                
 42 // Class Description:                             
 43 //                                                
 44 // Bethe-Bloch ionisation model                   
 45 //                                                
 46 // Class Description: End                         
 47 //                                                
 48 // -------------------------------------------    
 49 //                                                
 50 //....oooOO0OOooo........oooOO0OOooo........oo    
 51                                                   
 52 #include "G4hBetheBlochModel.hh"                  
 53                                                   
 54 #include "globals.hh"                             
 55 #include "G4PhysicalConstants.hh"                 
 56 #include "G4SystemOfUnits.hh"                     
 57 #include "G4DynamicParticle.hh"                   
 58 #include "G4ParticleDefinition.hh"                
 59 #include "G4Material.hh"                          
 60                                                   
 61 //....oooOO0OOooo........oooOO0OOooo........oo    
 62                                                   
 63 G4hBetheBlochModel::G4hBetheBlochModel(const G    
 64   : G4VLowEnergyModel(name),                      
 65     twoln10(2.*std::log(10.)),                    
 66     bg2lim(0.0169),                               
 67     taulim(8.4146e-3),                            
 68     lowEnergyLimit(1.*MeV),                       
 69     highEnergyLimit(100.*GeV)                     
 70 {;}                                               
 71                                                   
 72 //....oooOO0OOooo........oooOO0OOooo........oo    
 73                                                   
 74 G4hBetheBlochModel::~G4hBetheBlochModel()         
 75 {;}                                               
 76                                                   
 77 //....oooOO0OOooo........oooOO0OOooo........oo    
 78                                                   
 79 G4double G4hBetheBlochModel::TheValue(const G4    
 80                                 const G4Materi    
 81 {                                                 
 82   G4double energy = particle->GetKineticEnergy    
 83   G4double particleMass = particle->GetMass()     
 84                                                   
 85   G4double eloss  = BetheBlochFormula(material    
 86                                                   
 87   return eloss ;                                  
 88 }                                                 
 89                                                   
 90 //....oooOO0OOooo........oooOO0OOooo........oo    
 91                                                   
 92 G4double G4hBetheBlochModel::TheValue(const G4    
 93                                 const G4Materi    
 94               G4double kineticEnergy)             
 95 {                                                 
 96   G4double particleMass = aParticle->GetPDGMas    
 97   G4double eloss  = BetheBlochFormula(material    
 98                                                   
 99   return eloss ;                                  
100 }                                                 
101                                                   
102 //....oooOO0OOooo........oooOO0OOooo........oo    
103                                                   
104 G4double G4hBetheBlochModel::HighEnergyLimit(     
105                              const G4ParticleD    
106                              const G4Material*    
107 {                                                 
108   return highEnergyLimit ;                        
109 }                                                 
110                                                   
111 //....oooOO0OOooo........oooOO0OOooo........oo    
112                                                   
113 G4double G4hBetheBlochModel::LowEnergyLimit(      
114                              const G4ParticleD    
115                              const G4Material*    
116 {                                                 
117   G4double taul = (material->GetIonisation()->    
118                   (aParticle->GetPDGMass()) ;     
119   return taul ;                                   
120 }                                                 
121                                                   
122 //....oooOO0OOooo........oooOO0OOooo........oo    
123                                                   
124 G4double G4hBetheBlochModel::HighEnergyLimit(     
125                              const G4ParticleD    
126 {                                                 
127   return highEnergyLimit ;                        
128 }                                                 
129                                                   
130 //....oooOO0OOooo........oooOO0OOooo........oo    
131                                                   
132 G4double G4hBetheBlochModel::LowEnergyLimit(      
133                              const G4ParticleD    
134 {                                                 
135   return lowEnergyLimit ;                         
136 }                                                 
137                                                   
138 //....oooOO0OOooo........oooOO0OOooo........oo    
139                                                   
140 G4bool G4hBetheBlochModel::IsInCharge(const G4    
141                           const G4Material* )     
142 {                                                 
143   return true ;                                   
144 }                                                 
145                                                   
146 //....oooOO0OOooo........oooOO0OOooo........oo    
147                                                   
148 G4bool G4hBetheBlochModel::IsInCharge(const G4    
149                           const G4Material* )     
150 {                                                 
151   return true ;                                   
152 }                                                 
153                                                   
154 //....oooOO0OOooo........oooOO0OOooo........oo    
155                                                   
156 G4double G4hBetheBlochModel::BetheBlochFormula    
157                              const G4Material*    
158                                    G4double ki    
159                                    G4double pa    
160 {                                                 
161   // This member function is applied normally     
162   G4double ionloss ;                              
163                                                   
164   G4double rateMass = electron_mass_c2/particl    
165                                                   
166   G4double taul = material->GetIonisation()->G    
167   G4double tau  = kineticEnergy/particleMass ;    
168                                                   
169   // It is not normal case for this function      
170   // for low energy parametrisation have to be    
171   if ( tau < taul ) tau = taul ;                  
172                                                   
173   // some local variables                         
174                                                   
175   G4double gamma,bg2,beta2,tmax,x,delta,sh ;      
176   G4double electronDensity = material->GetElec    
177   G4double eexc  = material->GetIonisation()->    
178   G4double eexc2 = eexc*eexc ;                    
179   G4double cden  = material->GetIonisation()->    
180   G4double mden  = material->GetIonisation()->    
181   G4double aden  = material->GetIonisation()->    
182   G4double x0den = material->GetIonisation()->    
183   G4double x1den = material->GetIonisation()->    
184   G4double* shellCorrectionVector =               
185             material->GetIonisation()->GetShel    
186                                                   
187   gamma = tau + 1.0 ;                             
188   bg2 = tau*(tau+2.0) ;                           
189   beta2 = bg2/(gamma*gamma) ;                     
190   tmax = 2.*electron_mass_c2*bg2/(1.+2.*gamma*    
191                                                   
192   ionloss = std::log(2.0*electron_mass_c2*bg2*    
193                                                   
194   // density correction                           
195   x = std::log(bg2)/twoln10 ;                     
196   if ( x < x0den ) {                              
197     delta = 0.0 ;                                 
198                                                   
199   } else {                                        
200     delta = twoln10*x - cden ;                    
201     if ( x < x1den ) delta += aden*std::pow((x    
202   }                                               
203                                                   
204   // shell correction                             
205   sh = 0.0 ;                                      
206   x  = 1.0 ;                                      
207                                                   
208   if ( bg2 > bg2lim ) {                           
209     for (G4int k=0; k<=2; k++) {                  
210   x *= bg2 ;                                      
211   sh += shellCorrectionVector[k]/x;               
212     }                                             
213                                                   
214   } else {                                        
215     for (G4int k=0; k<=2; k++) {                  
216   x *= bg2lim ;                                   
217   sh += shellCorrectionVector[k]/x;               
218     }                                             
219     sh *= std::log(tau/taul)/std::log(taulim/t    
220   }                                               
221                                                   
222   // now compute the total ionization loss        
223                                                   
224   ionloss -= delta + sh ;                         
225   ionloss *= twopi_mc2_rcl2*electronDensity/be    
226                                                   
227   if ( ionloss < 0.0) ionloss = 0.0 ;             
228                                                   
229   return ionloss;                                 
230 }                                                 
231                                                   
232                                                   
233