Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // 26 // 27 // G4MicroElecElasticModel_new.hh, 2011/08/29 27 // G4MicroElecElasticModel_new.hh, 2011/08/29 A.Valentin, M. Raine are with CEA [a] 28 // 2020/05/20 P. Caro 28 // 2020/05/20 P. Caron, C. Inguimbert are with ONERA [b] 29 // Q. Gibaru is with CEA [a] 29 // Q. Gibaru is with CEA [a], ONERA [b] and CNES [c] 30 // M. Raine and D. Lambert a 30 // M. Raine and D. Lambert are with CEA [a] 31 // 31 // 32 // A part of this work has been funded by the 32 // A part of this work has been funded by the French space agency(CNES[c]) 33 // [a] CEA, DAM, DIF - 91297 ARPAJON, France 33 // [a] CEA, DAM, DIF - 91297 ARPAJON, France 34 // [b] ONERA - DPHY, 2 avenue E.Belin, 31055 T 34 // [b] ONERA - DPHY, 2 avenue E.Belin, 31055 Toulouse, France 35 // [c] CNES, 18 av.E.Belin, 31401 Toulouse CED 35 // [c] CNES, 18 av.E.Belin, 31401 Toulouse CEDEX, France 36 // 36 // 37 // Based on the following publications 37 // Based on the following publications 38 // - A.Valentin, M. Raine, 38 // - A.Valentin, M. Raine, 39 // Inelastic cross-sections of low energy e 39 // Inelastic cross-sections of low energy electrons in silicon 40 // for the simulation of heavy ion trac 40 // for the simulation of heavy ion tracks with the Geant4-DNA toolkit, 41 // NSS Conf. Record 2010, pp. 80-85 41 // NSS Conf. Record 2010, pp. 80-85 42 // https://doi.org/10.1109/NSSMIC. 42 // https://doi.org/10.1109/NSSMIC.2010.5873720 43 // 43 // 44 // - A.Valentin, M. Raine, M.Gaillardin, 44 // - A.Valentin, M. Raine, M.Gaillardin, P.Paillet 45 // Geant4 physics processes for microdo 45 // Geant4 physics processes for microdosimetry simulation: 46 // very low energy electromagnetic mode 46 // very low energy electromagnetic models for electrons in Silicon, 47 // https://doi.org/10.1016/j.nimb. 47 // https://doi.org/10.1016/j.nimb.2012.06.007 48 // NIM B, vol. 288, pp. 66-73, 2012, pa 48 // NIM B, vol. 288, pp. 66-73, 2012, part A 49 // heavy ions in Si, NIM B, vol. 287, p 49 // heavy ions in Si, NIM B, vol. 287, pp. 124-129, 2012, part B 50 // https://doi.org/10.1016/j.nimb. 50 // https://doi.org/10.1016/j.nimb.2012.07.028 51 // 51 // 52 // - M. Raine, M. Gaillardin, P. Paillet 52 // - M. Raine, M. Gaillardin, P. Paillet 53 // Geant4 physics processes for silicon 53 // Geant4 physics processes for silicon microdosimetry simulation: 54 // Improvements and extension of the en 54 // Improvements and extension of the energy-range validity up to 10 GeV/nucleon 55 // NIM B, vol. 325, pp. 97-100, 2014 55 // NIM B, vol. 325, pp. 97-100, 2014 56 // https://doi.org/10.1016/j.nimb. 56 // https://doi.org/10.1016/j.nimb.2014.01.014 57 // 57 // 58 // - J. Pierron, C. Inguimbert, M. Belhaj 58 // - J. Pierron, C. Inguimbert, M. Belhaj, T. Gineste, J. Puech, M. Raine 59 // Electron emission yield for low ener 59 // Electron emission yield for low energy electrons: 60 // Monte Carlo simulation and experimen 60 // Monte Carlo simulation and experimental comparison for Al, Ag, and Si 61 // Journal of Applied Physics 121 (2017 61 // Journal of Applied Physics 121 (2017) 215107. 62 // https://doi.org/10.1063/1.498 62 // https://doi.org/10.1063/1.4984761 63 // 63 // 64 // - P. Caron, 64 // - P. Caron, 65 // Study of Electron-Induced Single-Eve 65 // Study of Electron-Induced Single-Event Upset in Integrated Memory Devices 66 // PHD, 16th October 2019 66 // PHD, 16th October 2019 67 // 67 // 68 // - Q.Gibaru, C.Inguimbert, P.Caron, M.Raine 68 // - Q.Gibaru, C.Inguimbert, P.Caron, M.Raine, D.Lambert, J.Puech, 69 // Geant4 physics processes for microdo 69 // Geant4 physics processes for microdosimetry and secondary electron emission simulation : 70 // Extension of MicroElec to very low e 70 // Extension of MicroElec to very low energies and new materials 71 // NIM B, 2020, in review. 71 // NIM B, 2020, in review. 72 // 72 // 73 // 73 // 74 //....oooOO0OOooo........oooOO0OOooo........oo 74 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 75 75 76 #ifndef G4MICROELECELASTICMODEL_NEW_HH << 76 #ifndef G4MICROELECELASTICMODEL_HH 77 #define G4MICROELECELASTICMODEL_NEW_HH 1 << 77 #define G4MICROELECELASTICMODEL_HH 1 78 78 79 #include <map> 79 #include <map> 80 #include <CLHEP/Units/SystemOfUnits.h> 80 #include <CLHEP/Units/SystemOfUnits.h> >> 81 81 #include "G4MicroElecMaterialStructure.hh" 82 #include "G4MicroElecMaterialStructure.hh" 82 #include "G4MicroElecCrossSectionDataSet_new.h 83 #include "G4MicroElecCrossSectionDataSet_new.hh" 83 #include "G4VEmModel.hh" 84 #include "G4VEmModel.hh" 84 #include "G4Electron.hh" 85 #include "G4Electron.hh" 85 #include "G4ParticleChangeForGamma.hh" 86 #include "G4ParticleChangeForGamma.hh" 86 #include "G4LogLogInterpolation.hh" 87 #include "G4LogLogInterpolation.hh" 87 #include "G4ProductionCutsTable.hh" 88 #include "G4ProductionCutsTable.hh" 88 #include "G4NistManager.hh" 89 #include "G4NistManager.hh" 89 90 90 class G4MicroElecElasticModel_new : public G4V 91 class G4MicroElecElasticModel_new : public G4VEmModel 91 { 92 { 92 93 93 public: 94 public: 94 G4MicroElecElasticModel_new(const G4Particle 95 G4MicroElecElasticModel_new(const G4ParticleDefinition* p = 0, 95 const G4String& nam = "MicroElec 96 const G4String& nam = "MicroElecElasticModel"); 96 ~G4MicroElecElasticModel_new() override; 97 ~G4MicroElecElasticModel_new() override; 97 98 98 void Initialise(const G4ParticleDefinition*, 99 void Initialise(const G4ParticleDefinition*, const G4DataVector&) override; 99 100 100 G4double CrossSectionPerVolume(const G4Mater 101 G4double CrossSectionPerVolume(const G4Material* material, 101 const G4ParticleDefinition* p, 102 const G4ParticleDefinition* p, 102 G4double ekin, 103 G4double ekin, 103 G4double emin, 104 G4double emin, 104 G4double emax) override; 105 G4double emax) override; 105 106 106 G4double AcousticCrossSectionPerVolume(G4dou 107 G4double AcousticCrossSectionPerVolume(G4double ekin, G4double kbz, G4double rho, 107 G4double cs, G4double Aac, G4double 108 G4double cs, G4double Aac, G4double Eac, 108 G4double prefactor); 109 G4double prefactor); 109 110 110 void SampleSecondaries(std::vector<G4Dynamic 111 void SampleSecondaries(std::vector<G4DynamicParticle*>*, 111 const G4MaterialCutsCouple*, 112 const G4MaterialCutsCouple*, 112 const G4DynamicParticle*, 113 const G4DynamicParticle*, 113 G4double tmin, 114 G4double tmin, 114 G4double maxEnergy) override; 115 G4double maxEnergy) override; 115 116 116 void SetKillBelowThreshold (G4double thresho 117 void SetKillBelowThreshold (G4double threshold); 117 118 118 G4double GetKillBelowThreshold () { return k 119 G4double GetKillBelowThreshold () { return killBelowEnergy; } 119 120 120 G4double DamageEnergy(G4double T,G4double A, 121 G4double DamageEnergy(G4double T,G4double A, G4double Z); 121 122 122 protected: 123 protected: 123 G4ParticleChangeForGamma* fParticleChangeFor 124 G4ParticleChangeForGamma* fParticleChangeForGamma; 124 125 125 private: 126 private: 126 127 127 G4MicroElecElasticModel_new & operator=(cons 128 G4MicroElecElasticModel_new & operator=(const G4MicroElecElasticModel_new &right); 128 G4MicroElecElasticModel_new(const G4MicroEl 129 G4MicroElecElasticModel_new(const G4MicroElecElasticModel_new&); 129 130 130 // Final state 131 // Final state 131 G4double Theta(G4ParticleDefinition * aParti 132 G4double Theta(G4ParticleDefinition * aParticleDefinition, G4double k, G4double integrDiff); 132 G4double LinLinInterpolate(G4double e1, G4do 133 G4double LinLinInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2); 133 G4double LogLogInterpolate(G4double e1, G4do 134 G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2); 134 G4double LinLogInterpolate(G4double e1, G4do 135 G4double LinLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2); 135 G4double QuadInterpolator(G4double e11, G4do 136 G4double QuadInterpolator(G4double e11, G4double e12, G4double e21, G4double e22, 136 G4double x11, G4double x12, G4double 137 G4double x11, G4double x12, G4double x21, G4double x22, 137 G4double t1, G4double t2, G4double t 138 G4double t1, G4double t2, G4double t, G4double e); 138 139 139 G4double RandomizeCosTheta(G4double k); 140 G4double RandomizeCosTheta(G4double k); 140 141 141 G4Material* nistSi = nullptr; 142 G4Material* nistSi = nullptr; 142 G4double killBelowEnergy; 143 G4double killBelowEnergy; 143 G4double lowEnergyLimit; 144 G4double lowEnergyLimit; 144 G4double lowEnergyLimitOfModel; 145 G4double lowEnergyLimitOfModel; 145 G4double highEnergyLimit; 146 G4double highEnergyLimit; 146 G4bool isInitialised; 147 G4bool isInitialised; 147 G4int verboseLevel; 148 G4int verboseLevel; 148 // Cross section 149 // Cross section 149 typedef std::map<G4String,G4String,std::less 150 typedef std::map<G4String,G4String,std::less<G4String> > MapFile; 150 MapFile tableFile; 151 MapFile tableFile; 151 typedef std::map<G4String,G4MicroElecCrossSe 152 typedef std::map<G4String,G4MicroElecCrossSectionDataSet_new*,std::less<G4String> > MapData; 152 //MapData tableData; 153 //MapData tableData; 153 154 154 typedef std::map<G4String, MapData*, std::le 155 typedef std::map<G4String, MapData*, std::less<G4String> > TCSMap; 155 TCSMap tableTCS; 156 TCSMap tableTCS; 156 157 157 //Maps for multilayers 158 //Maps for multilayers 158 typedef std::map<G4double, std::map<G4double << 159 typedef std::map<double, std::map<double, double> > TriDimensionMap; 159 160 160 typedef std::map<G4String, TriDimensionMap* 161 typedef std::map<G4String, TriDimensionMap* > ThetaMap; 161 ThetaMap thetaDataStorage; //Storage of angl 162 ThetaMap thetaDataStorage; //Storage of angles (cumulated) 162 163 163 typedef std::map<G4String, std::vector<G4dou << 164 typedef std::map<G4String, std::vector<double>* > energyMap; 164 energyMap eIncidentEnergyStorage; 165 energyMap eIncidentEnergyStorage; 165 166 166 typedef std::map<G4double, std::vector<G4dou << 167 typedef std::map<double, std::vector<double> > VecMap; 167 168 168 typedef std::map<G4String, VecMap* > ProbaMa 169 typedef std::map<G4String, VecMap* > ProbaMap; 169 ProbaMap eProbaStorage; //Storage of probabi 170 ProbaMap eProbaStorage; //Storage of probabilities for cumulated sections 170 171 171 typedef std::map<G4String, G4MicroElecMateri 172 typedef std::map<G4String, G4MicroElecMaterialStructure*, std::less<G4String> > MapStructure; 172 173 173 MapStructure tableMaterialsStructures; //Str 174 MapStructure tableMaterialsStructures; //Structures of all materials simulated 174 175 175 G4MicroElecMaterialStructure* currentMateria 176 G4MicroElecMaterialStructure* currentMaterialStructure = nullptr; 176 typedef std::map<G4String, G4double, std::le 177 typedef std::map<G4String, G4double, std::less<G4String> > MapEnergy; 177 MapEnergy lowEnergyLimitTable; 178 MapEnergy lowEnergyLimitTable; 178 MapEnergy highEnergyLimitTable; 179 MapEnergy highEnergyLimitTable; 179 MapEnergy workFunctionTable; 180 MapEnergy workFunctionTable; 180 181 181 G4bool killElectron, acousticModelEnabled; 182 G4bool killElectron, acousticModelEnabled; 182 G4String currentMaterialName; 183 G4String currentMaterialName; 183 G4bool isOkToBeInitialised; 184 G4bool isOkToBeInitialised; 184 185 185 }; 186 }; 186 187 187 //....oooOO0OOooo........oooOO0OOooo........oo 188 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 188 189 189 #endif 190 #endif 190 191