Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/lowenergy/include/G4MicroElecElasticModel.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/lowenergy/include/G4MicroElecElasticModel.hh (Version 11.3.0) and /processes/electromagnetic/lowenergy/include/G4MicroElecElasticModel.hh (Version 5.2)


  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 // G4MicroElecElasticModel.hh, 2011/08/29 A.Va    
 28 //                                                
 29 // Based on the following publications            
 30 //      - Geant4 physics processes for microdo    
 31 //      very low energy electromagnetic models    
 32 //       NIM B, vol. 288, pp. 66 - 73, 2012.      
 33 //                                                
 34 //                                                
 35 //....oooOO0OOooo........oooOO0OOooo........oo    
 36                                                   
 37 #ifndef G4MicroElecElasticModel_h                 
 38 #define G4MicroElecElasticModel_h 1               
 39                                                   
 40 #include <map>                                    
 41 #include <CLHEP/Units/SystemOfUnits.h>            
 42                                                   
 43 #include "G4MicroElecCrossSectionDataSet.hh"      
 44 #include "G4VEmModel.hh"                          
 45 #include "G4Electron.hh"                          
 46 #include "G4ParticleChangeForGamma.hh"            
 47 #include "G4LogLogInterpolation.hh"               
 48 #include "G4ProductionCutsTable.hh"               
 49 #include "G4NistManager.hh"                       
 50                                                   
 51 class G4MicroElecElasticModel : public G4VEmMo    
 52 {                                                 
 53                                                   
 54 public:                                           
 55   G4MicroElecElasticModel(const G4ParticleDefi    
 56               const G4String& nam = "MicroElec    
 57   virtual ~G4MicroElecElasticModel();             
 58                                                   
 59   void Initialise(const G4ParticleDefinition*,    
 60                                                   
 61   G4double CrossSectionPerVolume(const G4Mater    
 62          const G4ParticleDefinition* p,           
 63          G4double ekin,                           
 64          G4double emin,                           
 65          G4double emax) override;                 
 66                                                   
 67   void SampleSecondaries(std::vector<G4Dynamic    
 68          const G4MaterialCutsCouple*,             
 69          const G4DynamicParticle*,                
 70          G4double tmin,                           
 71          G4double maxEnergy) override;            
 72                                                   
 73   inline void SetKillBelowThreshold (G4double     
 74   G4double GetKillBelowThreshold () { return k    
 75                                                   
 76   G4MicroElecElasticModel & operator=(const  G    
 77   G4MicroElecElasticModel(const  G4MicroElecEl    
 78                                                   
 79 protected:                                        
 80   G4ParticleChangeForGamma* fParticleChangeFor    
 81                                                   
 82 private:                                          
 83   // Final state                                  
 84   G4double Theta(G4ParticleDefinition * aParti    
 85   G4double LinLinInterpolate(G4double e1, G4do    
 86   G4double LogLogInterpolate(G4double e1, G4do    
 87   G4double LinLogInterpolate(G4double e1, G4do    
 88   G4double QuadInterpolator(G4double e11,         
 89                 G4double e12,                     
 90           G4double e21,                           
 91           G4double e22,                           
 92           G4double x11,                           
 93           G4double x12,                           
 94           G4double x21,                           
 95           G4double x22,                           
 96           G4double t1,                            
 97           G4double t2,                            
 98           G4double t,                             
 99           G4double e);                            
100   G4double RandomizeCosTheta(G4double k);         
101                                                   
102   // Cross section                                
103   typedef std::map<G4String,G4String,std::less    
104   MapFile tableFile;                              
105                                                   
106   typedef std::map<G4String,G4MicroElecCrossSe    
107   MapData tableData;                              
108                                                   
109   typedef std::map<G4double, std::map<G4double    
110   TriDimensionMap eDiffCrossSectionData;          
111   std::vector<G4double> eTdummyVec;               
112                                                   
113   typedef std::map<G4double, std::vector<G4dou    
114   VecMap eVecm;                                   
115                                                   
116   G4Material* nistSi;                             
117   G4double killBelowEnergy;                       
118   G4double lowEnergyLimit;                        
119   G4double lowEnergyLimitOfModel;                 
120   G4double highEnergyLimit;                       
121   G4int verboseLevel;                             
122   G4bool isInitialised;                           
123 };                                                
124                                                   
125 inline void G4MicroElecElasticModel::SetKillBe    
126 {                                                 
127     killBelowEnergy = threshold;                  
128                                                   
129     if (threshold < 5*CLHEP::eV)                  
130     {                                             
131        G4Exception ("*** WARNING : the G4Micro    
132        threshold = 5*CLHEP::eV;                   
133     }                                             
134                                                   
135 }                                                 
136                                                   
137                                                   
138 //....oooOO0OOooo........oooOO0OOooo........oo    
139                                                   
140 #endif                                            
141