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 // G4MicroElecElasticModel_new.hh, 2011/08/29 28 // 2020/05/20 P. Caro 29 // Q. Gibaru is with CEA [a] 30 // M. Raine and D. Lambert a 31 // 32 // A part of this work has been funded by the 33 // [a] CEA, DAM, DIF - 91297 ARPAJON, France 34 // [b] ONERA - DPHY, 2 avenue E.Belin, 31055 T 35 // [c] CNES, 18 av.E.Belin, 31401 Toulouse CED 36 // 37 // Based on the following publications 38 // - A.Valentin, M. Raine, 39 // Inelastic cross-sections of low energy e 40 // for the simulation of heavy ion trac 41 // NSS Conf. Record 2010, pp. 80-85 42 // https://doi.org/10.1109/NSSMIC. 43 // 44 // - A.Valentin, M. Raine, M.Gaillardin, 45 // Geant4 physics processes for microdo 46 // very low energy electromagnetic mode 47 // https://doi.org/10.1016/j.nimb. 48 // NIM B, vol. 288, pp. 66-73, 2012, pa 49 // heavy ions in Si, NIM B, vol. 287, p 50 // https://doi.org/10.1016/j.nimb. 51 // 52 // - M. Raine, M. Gaillardin, P. Paillet 53 // Geant4 physics processes for silicon 54 // Improvements and extension of the en 55 // NIM B, vol. 325, pp. 97-100, 2014 56 // https://doi.org/10.1016/j.nimb. 57 // 58 // - J. Pierron, C. Inguimbert, M. Belhaj 59 // Electron emission yield for low ener 60 // Monte Carlo simulation and experimen 61 // Journal of Applied Physics 121 (2017 62 // https://doi.org/10.1063/1.498 63 // 64 // - P. Caron, 65 // Study of Electron-Induced Single-Eve 66 // PHD, 16th October 2019 67 // 68 // - Q.Gibaru, C.Inguimbert, P.Caron, M.Raine 69 // Geant4 physics processes for microdo 70 // Extension of MicroElec to very low e 71 // NIM B, 2020, in review. 72 // 73 // 74 //....oooOO0OOooo........oooOO0OOooo........oo 75 76 #ifndef G4MICROELECELASTICMODEL_NEW_HH 77 #define G4MICROELECELASTICMODEL_NEW_HH 1 78 79 #include <map> 80 #include <CLHEP/Units/SystemOfUnits.h> 81 #include "G4MicroElecMaterialStructure.hh" 82 #include "G4MicroElecCrossSectionDataSet_new.h 83 #include "G4VEmModel.hh" 84 #include "G4Electron.hh" 85 #include "G4ParticleChangeForGamma.hh" 86 #include "G4LogLogInterpolation.hh" 87 #include "G4ProductionCutsTable.hh" 88 #include "G4NistManager.hh" 89 90 class G4MicroElecElasticModel_new : public G4V 91 { 92 93 public: 94 G4MicroElecElasticModel_new(const G4Particle 95 const G4String& nam = "MicroElec 96 ~G4MicroElecElasticModel_new() override; 97 98 void Initialise(const G4ParticleDefinition*, 99 100 G4double CrossSectionPerVolume(const G4Mater 101 const G4ParticleDefinition* p, 102 G4double ekin, 103 G4double emin, 104 G4double emax) override; 105 106 G4double AcousticCrossSectionPerVolume(G4dou 107 G4double cs, G4double Aac, G4double 108 G4double prefactor); 109 110 void SampleSecondaries(std::vector<G4Dynamic 111 const G4MaterialCutsCouple*, 112 const G4DynamicParticle*, 113 G4double tmin, 114 G4double maxEnergy) override; 115 116 void SetKillBelowThreshold (G4double thresho 117 118 G4double GetKillBelowThreshold () { return k 119 120 G4double DamageEnergy(G4double T,G4double A, 121 122 protected: 123 G4ParticleChangeForGamma* fParticleChangeFor 124 125 private: 126 127 G4MicroElecElasticModel_new & operator=(cons 128 G4MicroElecElasticModel_new(const G4MicroEl 129 130 // Final state 131 G4double Theta(G4ParticleDefinition * aParti 132 G4double LinLinInterpolate(G4double e1, G4do 133 G4double LogLogInterpolate(G4double e1, G4do 134 G4double LinLogInterpolate(G4double e1, G4do 135 G4double QuadInterpolator(G4double e11, G4do 136 G4double x11, G4double x12, G4double 137 G4double t1, G4double t2, G4double t 138 139 G4double RandomizeCosTheta(G4double k); 140 141 G4Material* nistSi = nullptr; 142 G4double killBelowEnergy; 143 G4double lowEnergyLimit; 144 G4double lowEnergyLimitOfModel; 145 G4double highEnergyLimit; 146 G4bool isInitialised; 147 G4int verboseLevel; 148 // Cross section 149 typedef std::map<G4String,G4String,std::less 150 MapFile tableFile; 151 typedef std::map<G4String,G4MicroElecCrossSe 152 //MapData tableData; 153 154 typedef std::map<G4String, MapData*, std::le 155 TCSMap tableTCS; 156 157 //Maps for multilayers 158 typedef std::map<G4double, std::map<G4double 159 160 typedef std::map<G4String, TriDimensionMap* 161 ThetaMap thetaDataStorage; //Storage of angl 162 163 typedef std::map<G4String, std::vector<G4dou 164 energyMap eIncidentEnergyStorage; 165 166 typedef std::map<G4double, std::vector<G4dou 167 168 typedef std::map<G4String, VecMap* > ProbaMa 169 ProbaMap eProbaStorage; //Storage of probabi 170 171 typedef std::map<G4String, G4MicroElecMateri 172 173 MapStructure tableMaterialsStructures; //Str 174 175 G4MicroElecMaterialStructure* currentMateria 176 typedef std::map<G4String, G4double, std::le 177 MapEnergy lowEnergyLimitTable; 178 MapEnergy highEnergyLimitTable; 179 MapEnergy workFunctionTable; 180 181 G4bool killElectron, acousticModelEnabled; 182 G4String currentMaterialName; 183 G4bool isOkToBeInitialised; 184 185 }; 186 187 //....oooOO0OOooo........oooOO0OOooo........oo 188 189 #endif 190