Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/pii/include/G4hRDEnergyLoss.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/pii/include/G4hRDEnergyLoss.hh (Version 11.3.0) and /processes/electromagnetic/pii/include/G4hRDEnergyLoss.hh (Version 8.2.p1)


  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 //      GEANT 4 class header file                 
 30 //                                                
 31 //      History: first implementation, based o    
 32 //      2nd December 1995, G.Cosmo                
 33 //      ---------- G4hEnergyLoss physics proce    
 34 //                by Laszlo Urban, 30 May 1997    
 35 //                                                
 36 // *******************************************    
 37 // It is the first implementation of the NEW U    
 38 // It calculates the continuous energy loss fo    
 39 // Processes giving contribution to the contin    
 40 //   ionisation (= cont.ion.loss + delta ray p    
 41 //   can be added more easily ..........          
 42 // This class creates static proton/antiproton    
 43 // which tables can be used by other processes    
 44 // The energy loss for other charged hadrons i    
 45 // tables with scaled kinetic energy.             
 46 //                                                
 47 // 7/10/98  L.Urban some bugs fixed + some cle    
 48 // 22/10/98 L.Urban cleanup                       
 49 // 02/02/99 L.Urban several bugs fixed            
 50 // 31/03/00 V.Ivanchenko rename to lowenergy a    
 51 // 09/08/00 V.Ivanchenko remove GetContinuousS    
 52 // 23/11/01 V.Ivanchenko Move static member-fu    
 53 // 22/01/03 V.Ivanchenko Cuts per region          
 54 // 18/04/03 V.Ivanchenko Make dRoverRange prot    
 55 //                                                
 56 // 31 Jul 2008 MGP     Short term supply of en    
 57 //                     former G4hLowEnergyLoss    
 58 //                     To be replaced by rewor    
 59 //                     issues properly            
 60 //                                                
 61 // -------------------------------------------    
 62                                                   
 63 // Class description:                             
 64 // Short term supply of energy loss of hadrons    
 65 // (with some initial cleaning)                   
 66 // To be replaced by reworked class to deal wi    
 67                                                   
 68 // -------------------------------------------    
 69                                                   
 70                                                   
 71 #ifndef G4HRDENERGYLOSS_HH                        
 72 #define G4HRDENERGYLOSS_HH 1                      
 73                                                   
 74 #include "G4ios.hh"                               
 75 #include "globals.hh"                             
 76 #include "Randomize.hh"                           
 77 #include "G4VContinuousDiscreteProcess.hh"        
 78 #include "G4Material.hh"                          
 79 #include "G4Element.hh"                           
 80 #include "G4Proton.hh"                            
 81 #include "G4AntiProton.hh"                        
 82 #include "G4Electron.hh"                          
 83 #include "G4VParticleChange.hh"                   
 84 #include "G4Track.hh"                             
 85 #include "G4Step.hh"                              
 86 #include "G4PhysicsLogVector.hh"                  
 87 #include "G4PhysicsLinearVector.hh"               
 88                                                   
 89 class G4EnergyLossMessenger;                      
 90                                                   
 91 class G4hRDEnergyLoss : public G4VContinuousDi    
 92                                                   
 93 {                                                 
 94 public:                                           
 95                                                   
 96   G4hRDEnergyLoss(const G4String& );              
 97                                                   
 98   ~G4hRDEnergyLoss();                             
 99                                                   
100   virtual G4double GetMeanFreePath(               
101            const G4Track& track,                  
102            G4double previousStepSize,             
103            enum  G4ForceCondition* condition      
104            ) = 0 ;                                
105                                                   
106   virtual G4VParticleChange* PostStepDoIt(cons    
107             const G4Step& Step) = 0 ;             
108                                                   
109   // ---- MGP ---- All this static stuff is ex    
110   // development cycle                            
111                                                   
112   //  get the number of processes contributing    
113   static G4int GetNumberOfProcesses();            
114                                                   
115   //  set the number of processes contributing    
116   static void SetNumberOfProcesses(G4int numbe    
117                                                   
118   //  Increment the number of processes contri    
119   static void PlusNumberOfProcesses();            
120                                                   
121   //  decrement the number of processes contri    
122   static void MinusNumberOfProcesses();           
123                                                   
124   static void SetdRoverRange(G4double value);     
125   static void SetRndmStep     (G4bool   value)    
126   static void SetEnlossFluc   (G4bool   value)    
127   static void SetStepFunction (G4double c1, G4    
128                                                   
129 protected:                                        
130                                                   
131   G4bool CutsWhereModified();                     
132                                                   
133   //  G4Material *lastMaterial ;                  
134   const G4double MaxExcitationNumber ;            
135   const G4double probLimFluct ;                   
136   const long nmaxDirectFluct,nmaxCont1,nmaxCon    
137                                                   
138   static void BuildDEDXTable(const G4ParticleD    
139                                                   
140 protected:                                        
141                                                   
142   static G4ThreadLocal G4PhysicsTable* theDEDX    
143   static G4ThreadLocal G4PhysicsTable* theDEDX    
144   static G4ThreadLocal G4PhysicsTable* theRang    
145   static G4ThreadLocal G4PhysicsTable* theRang    
146                                                   
147   //inverse of the range tables                   
148   static G4ThreadLocal G4PhysicsTable* theInve    
149   static G4ThreadLocal G4PhysicsTable* theInve    
150                                                   
151   //lab and proper time tables                    
152   static G4ThreadLocal G4PhysicsTable* theLabT    
153   static G4ThreadLocal G4PhysicsTable* theLabT    
154                                                   
155   static G4ThreadLocal G4PhysicsTable* theProp    
156   static G4ThreadLocal G4PhysicsTable* theProp    
157                                                   
158   //  processes inherited from G4hRDEnergyLoss    
159   //   register themselves  in the static arra    
160   static G4ThreadLocal G4PhysicsTable** Record    
161   static G4ThreadLocal G4PhysicsTable** Record    
162   static G4ThreadLocal G4int CounterOfpProcess    
163   static G4ThreadLocal G4int CounterOfpbarProc    
164                                                   
165   // particle mass                                
166   static G4ThreadLocal G4double ParticleMass ;    
167                                                   
168   // cut in range                                 
169   static G4ThreadLocal G4double ptableElectron    
170   static G4ThreadLocal G4double pbartableElect    
171                                                   
172   static G4ThreadLocal G4double Charge ;          
173                                                   
174   static G4ThreadLocal G4double LowestKineticE    
175   static G4ThreadLocal G4double HighestKinetic    
176   static G4ThreadLocal G4int TotBin; // number    
177   // calculated in BuildPhysicsTable              
178                                                   
179   static G4ThreadLocal G4double RTable,LOGRTab    
180   //          /LowestKineticEnergy)/TotBin        
181   //   RTable = std::exp(LOGRTable)               
182                                                   
183   G4PhysicsTable* theLossTable ;                  
184                                                   
185   G4double linLossLimit ;                         
186                                                   
187   G4double MinKineticEnergy ;                     
188                                                   
189   static G4ThreadLocal G4double dRoverRange ;     
190   //  in one step                                 
191   static G4ThreadLocal G4double finalRange ;      
192   static G4ThreadLocal G4double c1lim,c2lim,c3    
193                                                   
194   static G4ThreadLocal G4bool rndmStepFlag ;      
195   static G4ThreadLocal G4bool EnlossFlucFlag ;    
196                                                   
197                                                   
198 private:                                          
199                                                   
200   // hide  assignment operator                    
201                                                   
202   G4hRDEnergyLoss(G4hRDEnergyLoss &);             
203   G4hRDEnergyLoss & operator=(const G4hRDEnerg    
204                                                   
205   // variables for the integration routines       
206   static G4ThreadLocal G4double Mass,taulow,ta    
207                                                   
208   // =========================================    
209   //  static part of the class                    
210                                                   
211   static void BuildRangeTable(const G4Particle    
212                                                   
213   static void BuildInverseRangeTable(const G4P    
214                                                   
215   static void BuildTimeTables(const G4Particle    
216                                                   
217   static void BuildLabTimeVector(G4int materia    
218          G4PhysicsLogVector* rangeVector);        
219                                                   
220   static void BuildProperTimeVector(G4int mate    
221             G4PhysicsLogVector* rangeVector);     
222                                                   
223   static void InvertRangeVector(G4int material    
224         G4PhysicsLogVector* rangeVector);         
225                                                   
226   static void BuildRangeVector(G4int materialI    
227              G4PhysicsLogVector* rangeVector);    
228                                                   
229   static G4double LabTimeIntLog(G4PhysicsVecto    
230                                                   
231   static G4double ProperTimeIntLog(G4PhysicsVe    
232                                                   
233   static G4double RangeIntLin(G4PhysicsVector*    
234                                                   
235   static G4double RangeIntLog(G4PhysicsVector*    
236                                                   
237   static void BuildRangeCoeffATable( const G4P    
238   static void BuildRangeCoeffBTable( const G4P    
239   static void BuildRangeCoeffCTable(const G4Pa    
240                                                   
241   // =========================================    
242                                                   
243   static G4ThreadLocal G4PhysicsTable* theDEDX    
244                                                   
245   static G4ThreadLocal G4PhysicsTable* theRang    
246   static G4ThreadLocal G4PhysicsTable* theInve    
247                                                   
248   static G4ThreadLocal G4PhysicsTable* theLabT    
249   static G4ThreadLocal G4PhysicsTable* theProp    
250                                                   
251   static G4ThreadLocal G4PhysicsTable** Record    
252   static G4ThreadLocal G4int CounterOfProcess;    
253                                                   
254   static G4ThreadLocal G4PhysicsTable* thepRan    
255   static G4ThreadLocal G4PhysicsTable* thepRan    
256   static G4ThreadLocal G4PhysicsTable* thepRan    
257   static G4ThreadLocal G4PhysicsTable* thepbar    
258   static G4ThreadLocal G4PhysicsTable* thepbar    
259   static G4ThreadLocal G4PhysicsTable* thepbar    
260                                                   
261   static G4ThreadLocal G4PhysicsTable* theRang    
262   static G4ThreadLocal G4PhysicsTable* theRang    
263   static G4ThreadLocal G4PhysicsTable* theRang    
264   static G4ThreadLocal G4int NumberOfProcesses    
265                                                   
266 };                                                
267                                                   
268 #endif                                            
269