Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/standard/include/G4SeltzerBergerModel.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/G4SeltzerBergerModel.hh (Version 11.3.0) and /processes/electromagnetic/standard/include/G4SeltzerBergerModel.hh (Version 9.3)


  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 header file                       
 30 //                                                
 31 //                                                
 32 // File name:     G4SeltzerBergerModel            
 33 //                                                
 34 // Author:        Andreas Schaelicke & Vladimi    
 35 //                                                
 36 // Creation date: 04.10.2011                      
 37 //                                                
 38 // Modifications:                                 
 39 //                                                
 40 // 24.07.2018 Introduced possibility to use sa    
 41 //            emitted photon energy (instead o    
 42 //            Seltzer-Berger scalled DCS for b    
 43 //            Using these sampling tables opti    
 44 //            state generation than the origin    
 45 //            extra memory (+ ~6MB in the case    
 46 //            (M Novak)                           
 47 //                                                
 48 // Class Description:                             
 49 //                                                
 50 // Implementation of the bremssrahlung energy     
 51 // 1. S.M. Seltzer and M.J. Berger Nucl. Instr    
 52 // 2. S.M. Seltzer and M.J. Berger Atomic data    
 53 //    Tables 35 (1986) 345                        
 54                                                   
 55 // -------------------------------------------    
 56 //                                                
 57                                                   
 58 #ifndef G4SeltzerBergerModel_h                    
 59 #define G4SeltzerBergerModel_h 1                  
 60                                                   
 61 #include "G4VEmModel.hh"                          
 62 #include "G4eBremsstrahlungRelModel.hh"           
 63 #include "globals.hh"                             
 64                                                   
 65 class G4Physics2DVector;                          
 66 class G4SBBremTable;                              
 67 class G4ParticleChangeForLoss;                    
 68                                                   
 69 class G4SeltzerBergerModel : public G4VEmModel    
 70 {                                                 
 71                                                   
 72 public:                                           
 73                                                   
 74   explicit G4SeltzerBergerModel(const G4Partic    
 75                                 const G4String    
 76                                                   
 77   ~G4SeltzerBergerModel() override;               
 78                                                   
 79   void Initialise(const G4ParticleDefinition*,    
 80                                                   
 81   void InitialiseLocal(const G4ParticleDefinit    
 82                        G4VEmModel* masterModel    
 83                                                   
 84   G4double ComputeDEDXPerVolume(const G4Materi    
 85                                 const G4Partic    
 86                                 G4double ekin,    
 87                                 G4double cutEn    
 88                                                   
 89   G4double ComputeCrossSectionPerAtom(const G4    
 90                                       G4double    
 91                                       G4double    
 92                                       G4double    
 93                                       G4double    
 94                                       G4double    
 95                                                   
 96   void SampleSecondaries(std::vector<G4Dynamic    
 97                          const G4MaterialCutsC    
 98                          const G4DynamicPartic    
 99        G4double cutEnergy,                        
100                          G4double maxEnergy) o    
101                                                   
102   void SetupForMaterial(const G4ParticleDefini    
103                         const G4Material*, G4d    
104                                                   
105   G4double MinPrimaryEnergy(const G4Material*,    
106                             const G4ParticleDe    
107                             G4double cutEnergy    
108                                                   
109   inline void SetBicubicInterpolationFlag(G4bo    
110   { fIsUseBicubicInterpolation = val; };          
111                                                   
112   // hide assignment operator and cctr            
113   G4SeltzerBergerModel & operator=(const G4Sel    
114   G4SeltzerBergerModel(const G4SeltzerBergerMo    
115                                                   
116 private:                                          
117                                                   
118   void SetParticle(const G4ParticleDefinition*    
119                                                   
120   void ReadData(G4int Z);                         
121                                                   
122   G4double ComputeBremLoss(G4double cutEnergy)    
123                                                   
124   G4double ComputeXSectionPerAtom(G4double cut    
125                                                   
126   G4double ComputeDXSectionPerAtom(G4double ga    
127                                                   
128   G4double SampleEnergyTransfer(const G4double    
129                                 const G4double    
130                                 const G4double    
131                                 const G4double    
132                                                   
133 protected:                                        
134                                                   
135   G4ParticleChangeForLoss* fParticleChange{nul    
136                                                   
137 private:                                          
138                                                   
139   static constexpr G4int gMaxZet{101};            
140   static constexpr G4double gExpNumLimit{-12.}    
141   static G4double gYLimitData[gMaxZet];           
142   static G4Physics2DVector* gSBDCSData[gMaxZet    
143   static G4SBBremTable* gSBSamplingTable;         
144   static const G4double gBremFactor;              
145   static const G4double gMigdalConstant;          
146                                                   
147   G4bool fIsUseBicubicInterpolation{false};       
148   G4bool fIsUseSamplingTables{true};              
149   G4bool fIsElectron{true};                       
150   G4bool fIsScatOffElectron{false};               
151   G4bool isInitializer{false};                    
152   //                                              
153   G4int fCurrentIZ{0};                            
154   G4int fNumWarnings{0};                          
155                                                   
156   const G4ParticleDefinition* fPrimaryParticle    
157   G4ParticleDefinition* fGammaParticle;           
158                                                   
159   // cash                                         
160   G4double fPrimaryKinEnergy{0.};                 
161   G4double fPrimaryTotalEnergy{0.};               
162   G4double fDensityFactor{0.};                    
163   G4double fDensityCorr{0.};                      
164   G4double fLowestKinEnergy;                      
165                                                   
166   std::size_t fIndx{0};                           
167   std::size_t fIndy{0};                           
168 };                                                
169                                                   
170 #endif                                            
171