Geant4 Cross Reference |
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