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_NEW_HH 77 #define G4MICROELECELASTICMODEL_NEW_HH 1 77 #define G4MICROELECELASTICMODEL_NEW_HH 1 78 78 79 #include <map> 79 #include <map> 80 #include <CLHEP/Units/SystemOfUnits.h> 80 #include <CLHEP/Units/SystemOfUnits.h> 81 #include "G4MicroElecMaterialStructure.hh" 81 #include "G4MicroElecMaterialStructure.hh" 82 #include "G4MicroElecCrossSectionDataSet_new.h 82 #include "G4MicroElecCrossSectionDataSet_new.hh" 83 #include "G4VEmModel.hh" 83 #include "G4VEmModel.hh" 84 #include "G4Electron.hh" 84 #include "G4Electron.hh" 85 #include "G4ParticleChangeForGamma.hh" 85 #include "G4ParticleChangeForGamma.hh" 86 #include "G4LogLogInterpolation.hh" 86 #include "G4LogLogInterpolation.hh" 87 #include "G4ProductionCutsTable.hh" 87 #include "G4ProductionCutsTable.hh" 88 #include "G4NistManager.hh" 88 #include "G4NistManager.hh" 89 89 90 class G4MicroElecElasticModel_new : public G4V 90 class G4MicroElecElasticModel_new : public G4VEmModel 91 { 91 { 92 92 93 public: 93 public: 94 G4MicroElecElasticModel_new(const G4Particle 94 G4MicroElecElasticModel_new(const G4ParticleDefinition* p = 0, 95 const G4String& nam = "MicroElec 95 const G4String& nam = "MicroElecElasticModel"); 96 ~G4MicroElecElasticModel_new() override; 96 ~G4MicroElecElasticModel_new() override; 97 97 98 void Initialise(const G4ParticleDefinition*, 98 void Initialise(const G4ParticleDefinition*, const G4DataVector&) override; 99 99 100 G4double CrossSectionPerVolume(const G4Mater 100 G4double CrossSectionPerVolume(const G4Material* material, 101 const G4ParticleDefinition* p, 101 const G4ParticleDefinition* p, 102 G4double ekin, 102 G4double ekin, 103 G4double emin, 103 G4double emin, 104 G4double emax) override; 104 G4double emax) override; 105 105 106 G4double AcousticCrossSectionPerVolume(G4dou 106 G4double AcousticCrossSectionPerVolume(G4double ekin, G4double kbz, G4double rho, 107 G4double cs, G4double Aac, G4double 107 G4double cs, G4double Aac, G4double Eac, 108 G4double prefactor); 108 G4double prefactor); 109 109 110 void SampleSecondaries(std::vector<G4Dynamic 110 void SampleSecondaries(std::vector<G4DynamicParticle*>*, 111 const G4MaterialCutsCouple*, 111 const G4MaterialCutsCouple*, 112 const G4DynamicParticle*, 112 const G4DynamicParticle*, 113 G4double tmin, 113 G4double tmin, 114 G4double maxEnergy) override; 114 G4double maxEnergy) override; 115 115 116 void SetKillBelowThreshold (G4double thresho 116 void SetKillBelowThreshold (G4double threshold); 117 117 118 G4double GetKillBelowThreshold () { return k 118 G4double GetKillBelowThreshold () { return killBelowEnergy; } 119 119 120 G4double DamageEnergy(G4double T,G4double A, 120 G4double DamageEnergy(G4double T,G4double A, G4double Z); 121 121 122 protected: 122 protected: 123 G4ParticleChangeForGamma* fParticleChangeFor 123 G4ParticleChangeForGamma* fParticleChangeForGamma; 124 124 125 private: 125 private: 126 126 127 G4MicroElecElasticModel_new & operator=(cons 127 G4MicroElecElasticModel_new & operator=(const G4MicroElecElasticModel_new &right); 128 G4MicroElecElasticModel_new(const G4MicroEl 128 G4MicroElecElasticModel_new(const G4MicroElecElasticModel_new&); 129 129 130 // Final state 130 // Final state 131 G4double Theta(G4ParticleDefinition * aParti 131 G4double Theta(G4ParticleDefinition * aParticleDefinition, G4double k, G4double integrDiff); 132 G4double LinLinInterpolate(G4double e1, G4do 132 G4double LinLinInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2); 133 G4double LogLogInterpolate(G4double e1, G4do 133 G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2); 134 G4double LinLogInterpolate(G4double e1, G4do 134 G4double LinLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2); 135 G4double QuadInterpolator(G4double e11, G4do 135 G4double QuadInterpolator(G4double e11, G4double e12, G4double e21, G4double e22, 136 G4double x11, G4double x12, G4double 136 G4double x11, G4double x12, G4double x21, G4double x22, 137 G4double t1, G4double t2, G4double t 137 G4double t1, G4double t2, G4double t, G4double e); 138 138 139 G4double RandomizeCosTheta(G4double k); 139 G4double RandomizeCosTheta(G4double k); 140 140 141 G4Material* nistSi = nullptr; 141 G4Material* nistSi = nullptr; 142 G4double killBelowEnergy; 142 G4double killBelowEnergy; 143 G4double lowEnergyLimit; 143 G4double lowEnergyLimit; 144 G4double lowEnergyLimitOfModel; 144 G4double lowEnergyLimitOfModel; 145 G4double highEnergyLimit; 145 G4double highEnergyLimit; 146 G4bool isInitialised; 146 G4bool isInitialised; 147 G4int verboseLevel; 147 G4int verboseLevel; 148 // Cross section 148 // Cross section 149 typedef std::map<G4String,G4String,std::less 149 typedef std::map<G4String,G4String,std::less<G4String> > MapFile; 150 MapFile tableFile; 150 MapFile tableFile; 151 typedef std::map<G4String,G4MicroElecCrossSe 151 typedef std::map<G4String,G4MicroElecCrossSectionDataSet_new*,std::less<G4String> > MapData; 152 //MapData tableData; 152 //MapData tableData; 153 153 154 typedef std::map<G4String, MapData*, std::le 154 typedef std::map<G4String, MapData*, std::less<G4String> > TCSMap; 155 TCSMap tableTCS; 155 TCSMap tableTCS; 156 156 157 //Maps for multilayers 157 //Maps for multilayers 158 typedef std::map<G4double, std::map<G4double 158 typedef std::map<G4double, std::map<G4double, G4double> > TriDimensionMap; 159 159 160 typedef std::map<G4String, TriDimensionMap* 160 typedef std::map<G4String, TriDimensionMap* > ThetaMap; 161 ThetaMap thetaDataStorage; //Storage of angl 161 ThetaMap thetaDataStorage; //Storage of angles (cumulated) 162 162 163 typedef std::map<G4String, std::vector<G4dou 163 typedef std::map<G4String, std::vector<G4double>* > energyMap; 164 energyMap eIncidentEnergyStorage; 164 energyMap eIncidentEnergyStorage; 165 165 166 typedef std::map<G4double, std::vector<G4dou 166 typedef std::map<G4double, std::vector<G4double> > VecMap; 167 167 168 typedef std::map<G4String, VecMap* > ProbaMa 168 typedef std::map<G4String, VecMap* > ProbaMap; 169 ProbaMap eProbaStorage; //Storage of probabi 169 ProbaMap eProbaStorage; //Storage of probabilities for cumulated sections 170 170 171 typedef std::map<G4String, G4MicroElecMateri 171 typedef std::map<G4String, G4MicroElecMaterialStructure*, std::less<G4String> > MapStructure; 172 172 173 MapStructure tableMaterialsStructures; //Str 173 MapStructure tableMaterialsStructures; //Structures of all materials simulated 174 174 175 G4MicroElecMaterialStructure* currentMateria 175 G4MicroElecMaterialStructure* currentMaterialStructure = nullptr; 176 typedef std::map<G4String, G4double, std::le 176 typedef std::map<G4String, G4double, std::less<G4String> > MapEnergy; 177 MapEnergy lowEnergyLimitTable; 177 MapEnergy lowEnergyLimitTable; 178 MapEnergy highEnergyLimitTable; 178 MapEnergy highEnergyLimitTable; 179 MapEnergy workFunctionTable; 179 MapEnergy workFunctionTable; 180 180 181 G4bool killElectron, acousticModelEnabled; 181 G4bool killElectron, acousticModelEnabled; 182 G4String currentMaterialName; 182 G4String currentMaterialName; 183 G4bool isOkToBeInitialised; 183 G4bool isOkToBeInitialised; 184 184 185 }; 185 }; 186 186 187 //....oooOO0OOooo........oooOO0OOooo........oo 187 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 188 188 189 #endif 189 #endif 190 190