Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/standard/include/G4LindhardSorensenIonModel.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/standard/include/G4LindhardSorensenIonModel.hh (Version 11.3.0) and /processes/electromagnetic/standard/include/G4LindhardSorensenIonModel.hh (Version 10.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 // GEANT4 Class header file                       
 29 //                                                
 30 //                                                
 31 // File name:     G4LindhardSorensenIonModel      
 32 //                                                
 33 // Author:        Alexander Bagulya & Vladimir    
 34 //                                                
 35 // Creation date: 16.04.2018                      
 36 //                                                
 37 //                                                
 38 // Class Description:                             
 39 //                                                
 40 // Implementation of ion ionisation energy los    
 41 // production by heavy charged particles accor    
 42 // J. Lindhard & A.H. Sorensen, Phys. Rev. A 5    
 43                                                   
 44 // -------------------------------------------    
 45 //                                                
 46                                                   
 47 #ifndef G4LindhardSorensenIonModel_h              
 48 #define G4LindhardSorensenIonModel_h 1            
 49                                                   
 50 #include <vector>                                 
 51                                                   
 52 #include "G4VEmModel.hh"                          
 53 #include "G4NistManager.hh"                       
 54                                                   
 55 class G4EmCorrections;                            
 56 class G4ParticleChangeForLoss;                    
 57 class G4LindhardSorensenData;                     
 58 class G4BraggModel;                               
 59 class G4BetheBlochModel;                          
 60 class G4IonICRU73Data;                            
 61                                                   
 62 class G4LindhardSorensenIonModel : public G4VE    
 63 {                                                 
 64 public:                                           
 65                                                   
 66   explicit G4LindhardSorensenIonModel(const G4    
 67               const G4String& nam = "LindhardS    
 68                                                   
 69   ~G4LindhardSorensenIonModel() override;         
 70                                                   
 71   void Initialise(const G4ParticleDefinition*,    
 72                                                   
 73   G4double MinEnergyCut(const G4ParticleDefini    
 74                         const G4MaterialCutsCo    
 75                                                   
 76   G4double ComputeCrossSectionPerElectron(        
 77                      const G4ParticleDefinitio    
 78          G4double kineticEnergy,                  
 79          G4double cutEnergy,                      
 80          G4double maxEnergy);                     
 81                                                   
 82   G4double ComputeCrossSectionPerAtom(            
 83          const G4ParticleDefinition*,             
 84          G4double kineticEnergy,                  
 85          G4double Z, G4double A,                  
 86          G4double cutEnergy,                      
 87          G4double maxEnergy) override;            
 88                                                   
 89   G4double CrossSectionPerVolume(const G4Mater    
 90          const G4ParticleDefinition*,             
 91          G4double kineticEnergy,                  
 92          G4double cutEnergy,                      
 93          G4double maxEnergy) override;            
 94                                                   
 95   G4double ComputeDEDXPerVolume(const G4Materi    
 96                                 const G4Partic    
 97                                 G4double kinet    
 98                                 G4double cutEn    
 99                                                   
100   G4double GetChargeSquareRatio(const G4Partic    
101                                 const G4Materi    
102                                 G4double kinet    
103                                                   
104   G4double GetParticleCharge(const G4ParticleD    
105            const G4Material* mat,                 
106                              G4double kineticE    
107                                                   
108   void CorrectionsAlongStep(const G4MaterialCu    
109                             const G4DynamicPar    
110                             const G4double& le    
111                             G4double& eloss) o    
112                                                   
113   void SampleSecondaries(std::vector<G4Dynamic    
114                          const G4MaterialCutsC    
115              const G4DynamicParticle*,            
116        G4double tmin,                             
117                    G4double maxEnergy) overrid    
118                                                   
119   // hide assignment operator                     
120   G4LindhardSorensenIonModel & operator=          
121   (const  G4LindhardSorensenIonModel &right) =    
122   G4LindhardSorensenIonModel(const  G4Lindhard    
123                                                   
124 protected:                                        
125                                                   
126   G4double MaxSecondaryEnergy(const G4Particle    
127                               G4double kinEner    
128                                                   
129   inline void SetChargeSquareRatio(G4double va    
130                                                   
131 private:                                          
132                                                   
133   void SetupParameters();                         
134                                                   
135   void InitialiseLS();                            
136                                                   
137   G4double ComputeDEDXPerVolumeLS(const G4Mate    
138                                   const G4Part    
139           G4double kinEnergy, G4double cutEner    
140                                                   
141   inline void SetParticle(const G4ParticleDefi    
142                                                   
143   //  static const G4int MAXZION = 93;            
144                                                   
145   static G4IonICRU73Data* fIonData;               
146   static G4LindhardSorensenData* lsdata;          
147                                                   
148   const G4ParticleDefinition* particle = nullp    
149   G4ParticleDefinition* theElectron;              
150   G4EmCorrections* corr;                          
151   G4ParticleChangeForLoss* fParticleChange = n    
152   G4NistManager* nist;                            
153   G4BraggModel* fBraggModel;                      
154   G4BetheBlochModel* fBBModel;                    
155                                                   
156   G4int Zin = 1;                                  
157   G4double mass = 0.0;                            
158   G4double tlimit = DBL_MAX;                      
159   G4double spin = 0.0;                            
160   G4double magMoment2 = 0.0;                      
161   G4double chargeSquare = 1.0;                    
162   G4double charge = 1.0;                          
163   G4double eRatio = 0.0;                          
164   G4double pRatio = 1.0;                          
165   G4double formfact = 0.0;                        
166   G4double twoln10;                               
167   G4double fElimit;                               
168   G4bool isFirst = false;                         
169 };                                                
170                                                   
171 //....oooOO0OOooo........oooOO0OOooo........oo    
172                                                   
173 inline void                                       
174 G4LindhardSorensenIonModel::SetParticle(const     
175 {                                                 
176   if(particle != p) {                             
177     particle = p;                                 
178     SetupParameters();                            
179   }                                               
180 }                                                 
181                                                   
182 //....oooOO0OOooo........oooOO0OOooo........oo    
183                                                   
184 inline void G4LindhardSorensenIonModel::SetCha    
185 {                                                 
186   chargeSquare = val;                             
187 }                                                 
188                                                   
189 //....oooOO0OOooo........oooOO0OOooo........oo    
190                                                   
191 #endif                                            
192