Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/muons/include/G4EnergyLossForExtrapolator.hh

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/muons/include/G4EnergyLossForExtrapolator.hh (Version 11.3.0) and /processes/electromagnetic/muons/include/G4EnergyLossForExtrapolator.hh (Version 4.1)


  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 // ClassName:    G4EnergyLossForExtrapolator      
 30 //                                                
 31 // Description:  This class provide calculatio    
 32 //               and msc angle                    
 33 //                                                
 34 // Author:       09.12.04 V.Ivanchenko            
 35 //                                                
 36 // Modification:                                  
 37 // 08-04-05 Rename Propogator -> Extrapolator     
 38 // 16-03-06 Add muon tables                       
 39 // 21-03-06 Add verbosity defined in the const    
 40 //          start only when first public metho    
 41 // 03-05-06 Remove unused pointer G4Material*     
 42 // 28-07-07 Add maxEnergyTransfer for computat    
 43 //                                                
 44 //--------------------------------------------    
 45 //                                                
 46                                                   
 47 //....oooOO0OOooo........oooOO0OOooo........oo    
 48                                                   
 49 #ifndef G4EnergyLossForExtrapolator_h             
 50 #define G4EnergyLossForExtrapolator_h 1           
 51                                                   
 52 #include <vector>                                 
 53 #include <CLHEP/Units/PhysicalConstants.h>        
 54                                                   
 55 #include "globals.hh"                             
 56 #include "G4PhysicsTable.hh"                      
 57 #include "G4TablesForExtrapolator.hh"             
 58 #include "G4Log.hh"                               
 59 #include "G4Threading.hh"                         
 60                                                   
 61 class G4ParticleDefinition;                       
 62 class G4Material;                                 
 63 class G4MaterialCutsCouple;                       
 64                                                   
 65 //....oooOO0OOooo........oooOO0OOooo........oo    
 66                                                   
 67 class G4EnergyLossForExtrapolator                 
 68 {                                                 
 69 public:                                           
 70                                                   
 71   explicit G4EnergyLossForExtrapolator(G4int v    
 72                                                   
 73   ~G4EnergyLossForExtrapolator();                 
 74                                                   
 75   void Initialisation();                          
 76                                                   
 77   G4double ComputeDEDX(G4double kinEnergy, con    
 78                        const G4Material*);        
 79                                                   
 80   G4double ComputeRange(G4double kinEnergy, co    
 81                        const G4Material*);        
 82                                                   
 83   G4double ComputeEnergy(G4double range, const    
 84                        const G4Material*);        
 85                                                   
 86   G4double EnergyAfterStep(G4double kinEnergy,    
 87          const G4Material*, const G4ParticleDe    
 88                                                   
 89   G4double EnergyBeforeStep(G4double kinEnergy    
 90                 const G4Material*, const G4Par    
 91                                                   
 92   G4double TrueStepLength(G4double kinEnergy,     
 93         const G4Material*, const G4ParticleDef    
 94                                                   
 95   inline G4double EnergyAfterStep(G4double kin    
 96           const G4Material*,                      
 97                                   const G4Stri    
 98                                                   
 99   inline G4double EnergyBeforeStep(G4double ki    
100            const G4Material*,                     
101                                    const G4Str    
102                                                   
103   G4double AverageScatteringAngle(G4double kin    
104           const G4Material*,                      
105           const G4ParticleDefinition* part);      
106                                                   
107   inline G4double AverageScatteringAngle(G4dou    
108            const G4Material*,                     
109            const G4String& particleName);         
110                                                   
111   inline G4double ComputeTrueStep(const G4Mate    
112           const G4ParticleDefinition* part,       
113           G4double kinEnergy, G4double stepLen    
114                                                   
115   G4double EnergyDispersion(G4double kinEnergy    
116           const G4Material*,                      
117           const G4ParticleDefinition*);           
118                                                   
119   inline G4double EnergyDispersion(G4double ki    
120            const G4Material*,                     
121                                    const G4Str    
122                                                   
123   inline void SetVerbose(G4int val);              
124                                                   
125   inline void SetMinKinEnergy(G4double);          
126                                                   
127   inline void SetMaxKinEnergy(G4double);          
128                                                   
129   inline void SetMaxEnergyTransfer(G4double);     
130                                                   
131   // hide assignment operator                     
132   G4EnergyLossForExtrapolator & operator=         
133   (const G4EnergyLossForExtrapolator &right) =    
134   G4EnergyLossForExtrapolator(const G4EnergyLo    
135                                                   
136 private:                                          
137                                                   
138   G4bool SetupKinematics(const G4ParticleDefin    
139        G4double kinEnergy);                       
140                                                   
141   const G4ParticleDefinition* FindParticle(con    
142                                                   
143   inline G4double ComputeValue(G4double x, con    
144              size_t idxMat);                      
145                                                   
146   inline const G4PhysicsTable* GetPhysicsTable    
147                                                   
148 #ifdef G4MULTITHREADED                            
149   static G4Mutex extrMutex;                       
150 #endif                                            
151   static G4TablesForExtrapolator* tables;         
152                                                   
153   const G4ParticleDefinition* currentParticle     
154   const G4ParticleDefinition* electron = nullp    
155   const G4ParticleDefinition* positron = nullp    
156   const G4ParticleDefinition* muonPlus = nullp    
157   const G4ParticleDefinition* muonMinus= nullp    
158   const G4ParticleDefinition* proton = nullptr    
159   const G4Material* currentMaterial = nullptr;    
160                                                   
161   G4double electronDensity = 0.0;                 
162   G4double radLength = 0.0;                       
163   G4double charge2 = 0.0;                         
164   G4double kineticEnergy = 0.0;                   
165   G4double gam = 1.0;                             
166   G4double bg2 = 0.0;                             
167   G4double beta2 = 0.0;                           
168   G4double tmax = 0.0;                            
169                                                   
170   G4double linLossLimit = 0.01;                   
171   G4double emin = 0.0;                            
172   G4double emax = 0.0;                            
173   G4double maxEnergyTransfer = 0.0;               
174                                                   
175   size_t index = 0;                               
176   size_t  nmat = 0;                               
177   G4int  nbins = 80;                              
178   G4int  verbose = 0;                             
179                                                   
180   G4bool isMaster = false;                        
181 };                                                
182                                                   
183 //....oooOO0OOooo........oooOO0OOooo........oo    
184                                                   
185 inline const G4PhysicsTable*                      
186 G4EnergyLossForExtrapolator::GetPhysicsTable(E    
187 {                                                 
188   return tables->GetPhysicsTable(type);           
189 }                                                 
190                                                   
191 //....oooOO0OOooo........oooOO0OOooo........oo    
192                                                   
193 inline G4double                                   
194 G4EnergyLossForExtrapolator::EnergyAfterStep(G    
195                G4double step,                     
196                const G4Material* mat,             
197                const G4String& name)              
198 {                                                 
199   return EnergyAfterStep(kinEnergy,step,mat,Fi    
200 }                                                 
201                                                   
202 //....oooOO0OOooo........oooOO0OOooo........oo    
203                                                   
204 inline G4double                                   
205 G4EnergyLossForExtrapolator::EnergyBeforeStep(    
206                 G4double step,                    
207                 const G4Material* mat,            
208                 const G4String& name)             
209 {                                                 
210   return EnergyBeforeStep(kinEnergy,step,mat,F    
211 }                                                 
212                                                   
213 //....oooOO0OOooo........oooOO0OOooo........oo    
214                                                   
215 inline G4double                                   
216 G4EnergyLossForExtrapolator::AverageScattering    
217                 G4double step,                    
218                 const G4Material* mat,            
219                 const G4String& name)             
220 {                                                 
221   return AverageScatteringAngle(kinEnergy,step    
222 }                                                 
223                                                   
224 //....oooOO0OOooo........oooOO0OOooo........oo    
225                                                   
226 inline G4double                                   
227 G4EnergyLossForExtrapolator::EnergyDispersion(    
228                 G4double step,                    
229                 const G4Material* mat,            
230                 const G4String& name)             
231 {                                                 
232   return EnergyDispersion(kinEnergy,step,mat,F    
233 }                                                 
234                                                   
235 //....oooOO0OOooo........oooOO0OOooo........oo    
236                                                   
237 inline G4double                                   
238 G4EnergyLossForExtrapolator::ComputeTrueStep(c    
239                const G4ParticleDefinition* par    
240                G4double kinEnergy,                
241                G4double stepLength)               
242 {                                                 
243   G4double theta = AverageScatteringAngle(kinE    
244   return stepLength*std::sqrt(1.0 + 0.625*thet    
245 }                                                 
246                                                   
247 //....oooOO0OOooo........oooOO0OOooo........oo    
248                                                   
249 inline G4double                                   
250 G4EnergyLossForExtrapolator::ComputeValue(G4do    
251             const G4PhysicsTable* table,          
252             size_t idxMat)                        
253 {                                                 
254   return (nullptr != table) ? ((*table)[idxMat    
255 }                                                 
256                                                   
257 //....oooOO0OOooo........oooOO0OOooo........oo    
258                                                   
259 inline void G4EnergyLossForExtrapolator::SetVe    
260 {                                                 
261   verbose = val;                                  
262 }                                                 
263                                                   
264 //....oooOO0OOooo........oooOO0OOooo........oo    
265                                                   
266 inline void G4EnergyLossForExtrapolator::SetMi    
267 {                                                 
268   emin = val;                                     
269 }                                                 
270                                                   
271 //....oooOO0OOooo........oooOO0OOooo........oo    
272                                                   
273 inline void G4EnergyLossForExtrapolator::SetMa    
274 {                                                 
275   emax = val;                                     
276 }                                                 
277                                                   
278 //....oooOO0OOooo........oooOO0OOooo........oo    
279                                                   
280 inline void G4EnergyLossForExtrapolator::SetMa    
281 {                                                 
282   maxEnergyTransfer = val;                        
283 }                                                 
284                                                   
285 //....oooOO0OOooo........oooOO0OOooo........oo    
286                                                   
287 #endif                                            
288                                                   
289