Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/lowenergy/include/G4MicroElecInelasticModel_new.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/lowenergy/include/G4MicroElecInelasticModel_new.hh (Version 11.3.0) and /processes/electromagnetic/lowenergy/include/G4MicroElecInelasticModel_new.hh (Version 11.2.2)


  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 // G4MicroElecInelasticModel_new.hh, 2011/08/2     27 // G4MicroElecInelasticModel_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 G4MICROELECINELASTICMODEL_NEW_HH           76 #ifndef G4MICROELECINELASTICMODEL_NEW_HH
 77 #define G4MICROELECINELASTICMODEL_NEW_HH 1         77 #define G4MICROELECINELASTICMODEL_NEW_HH 1
 78                                                    78 
 79 #include "globals.hh"                              79 #include "globals.hh"
 80 #include "G4VEmModel.hh"                           80 #include "G4VEmModel.hh"
 81 #include "G4ParticleChangeForGamma.hh"             81 #include "G4ParticleChangeForGamma.hh"
 82 #include "G4ProductionCutsTable.hh"                82 #include "G4ProductionCutsTable.hh"
 83 #include "G4MicroElecMaterialStructure.hh"         83 #include "G4MicroElecMaterialStructure.hh"
 84 #include "G4MicroElecCrossSectionDataSet_new.h     84 #include "G4MicroElecCrossSectionDataSet_new.hh"
 85 #include "G4Electron.hh"                           85 #include "G4Electron.hh"
 86 #include "G4Proton.hh"                             86 #include "G4Proton.hh"
 87 #include "G4GenericIon.hh"                         87 #include "G4GenericIon.hh"
 88 #include "G4ParticleDefinition.hh"                 88 #include "G4ParticleDefinition.hh"
 89 #include "G4LogLogInterpolation.hh"                89 #include "G4LogLogInterpolation.hh"
 90 #include "G4VAtomDeexcitation.hh"                  90 #include "G4VAtomDeexcitation.hh"
 91 #include "G4NistManager.hh"                        91 #include "G4NistManager.hh"
 92                                                    92 
 93 class G4MicroElecInelasticModel_new : public G     93 class G4MicroElecInelasticModel_new : public G4VEmModel
 94 {                                                  94 {
 95                                                    95 
 96 public:                                            96 public:
 97   explicit G4MicroElecInelasticModel_new(const     97   explicit G4MicroElecInelasticModel_new(const G4ParticleDefinition* p = nullptr,
 98         const G4String& nam = "MicroElecInelas     98         const G4String& nam = "MicroElecInelasticModel");
 99   ~G4MicroElecInelasticModel_new() override;       99   ~G4MicroElecInelasticModel_new() override;
100                                                   100   
101   void Initialise(const G4ParticleDefinition*,    101   void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
102                                                   102 
103   G4double CrossSectionPerVolume(const G4Mater    103   G4double CrossSectionPerVolume(const G4Material* material,
104          const G4ParticleDefinition* p,           104          const G4ParticleDefinition* p,
105          G4double ekin,                           105          G4double ekin,
106          G4double emin,                           106          G4double emin,
107          G4double emax) override;                 107          G4double emax) override;
108                                                   108 
109   void SampleSecondaries(std::vector<G4Dynamic    109   void SampleSecondaries(std::vector<G4DynamicParticle*>*,
110        const G4MaterialCutsCouple*,               110        const G4MaterialCutsCouple*,
111        const G4DynamicParticle*,                  111        const G4DynamicParticle*,
112        G4double tmin,                             112        G4double tmin,
113        G4double maxEnergy) override;              113        G4double maxEnergy) override;
114                                                   114 
115   G4double DifferentialCrossSection(const G4Pa    115   G4double DifferentialCrossSection(const G4ParticleDefinition * aParticleDefinition, 
116                                     G4double k    116                                     G4double k, G4double energyTransfer, G4int shell);
117                                                   117 
118   G4double ComputeRelativistVelocity(G4double     118   G4double ComputeRelativistVelocity(G4double E, G4double mass);
119                                                   119 
120   G4double ComputeElasticQmax(G4double T1i, G4    120   G4double ComputeElasticQmax(G4double T1i, G4double T2i, G4double m1, G4double m2);
121                                                   121 
122   G4double BKZ(G4double Ep, G4double mp, G4int    122   G4double BKZ(G4double Ep, G4double mp, G4int Zp, G4double EF);
123   // compute the effective charge according Br    123   // compute the effective charge according Brandt et Kitagawa theory
124                                                   124 
125   G4double stepFunc(G4double x);                  125   G4double stepFunc(G4double x);
126   G4double vrkreussler(G4double v, G4double vF    126   G4double vrkreussler(G4double v, G4double vF);
127                                                   127 
128   G4MicroElecInelasticModel_new & operator=(co    128   G4MicroElecInelasticModel_new & operator=(const  G4MicroElecInelasticModel_new &right) = delete;
129   G4MicroElecInelasticModel_new(const  G4Micro    129   G4MicroElecInelasticModel_new(const  G4MicroElecInelasticModel_new&) = delete;
130                                                   130 
131 private:                                          131 private:
132   //                                              132   //
133   // private methods                              133   // private methods
134   //                                              134   //  
135   G4int RandomSelect(G4double energy,const G4S    135   G4int RandomSelect(G4double energy,const G4String& particle, G4double originalMass, G4int originalZ );
136                                                   136 
137   G4double RandomizeCreatedElectronEnergy(G4do    137   G4double RandomizeCreatedElectronEnergy(G4double secondaryKinetic);
138                                                   138   
139   G4double RandomizeEjectedElectronEnergy(cons    139   G4double RandomizeEjectedElectronEnergy(const G4ParticleDefinition * aParticleDefinition,
140             G4double incomingParticleEnergy, G    140             G4double incomingParticleEnergy, G4int shell,
141             G4double originalMass, G4int origi    141             G4double originalMass, G4int originalZ) ;
142                                                   142   
143   G4double RandomizeEjectedElectronEnergyFromC    143   G4double RandomizeEjectedElectronEnergyFromCumulatedDcs(const G4ParticleDefinition*,
144                 G4double k, G4int shell);         144                 G4double k, G4int shell);
145                                                   145 
146   G4double TransferedEnergy(const G4ParticleDe    146   G4double TransferedEnergy(const G4ParticleDefinition*, G4double k,
147           G4int ionizationLevelIndex, G4double    147           G4int ionizationLevelIndex, G4double random);
148                                                   148 
149   G4double Interpolate(G4double e1, G4double e    149   G4double Interpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
150                                                   150    
151   G4double QuadInterpolator( G4double e11, G4d    151   G4double QuadInterpolator( G4double e11, G4double e12, G4double e21, G4double e22, 
152            G4double x11, G4double x12, G4doubl    152            G4double x11, G4double x12, G4double x21, G4double x22, 
153            G4double t1,  G4double t2,  G4doubl    153            G4double t1,  G4double t2,  G4double t,  G4double e);
154   //                                              154   //
155   // private elements                             155   // private elements
156   //                                              156   //  
157   G4ParticleChangeForGamma* fParticleChangeFor    157   G4ParticleChangeForGamma* fParticleChangeForGamma = nullptr;
158                                                   158   
159   //deexcitation manager to produce fluo photn    159   //deexcitation manager to produce fluo photns and e-
160   G4VAtomDeexcitation* fAtomDeexcitation = nul    160   G4VAtomDeexcitation* fAtomDeexcitation = nullptr;
161   G4Material* nistSi = nullptr;                   161   G4Material* nistSi = nullptr;
162   G4MicroElecMaterialStructure* currentMateria    162   G4MicroElecMaterialStructure* currentMaterialStructure = nullptr;
163                                                   163 
164   typedef std::map<G4String,G4String,std::less    164   typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
165   typedef std::map<G4String,G4MicroElecCrossSe    165   typedef std::map<G4String,G4MicroElecCrossSectionDataSet_new*,std::less<G4String> > MapData;
166   typedef std::map<G4double, std::map<G4double    166   typedef std::map<G4double, std::map<G4double, G4double> > TriDimensionMap; 
167   typedef std::map<G4double, std::vector<G4dou    167   typedef std::map<G4double, std::vector<G4double> > VecMap;
168                                                   168 
169   //Tables for multilayers                        169   //Tables for multilayers
170   typedef std::map<G4String, MapData*, std::le    170   typedef std::map<G4String, MapData*, std::less<G4String> > TCSMap;
171   TCSMap tableTCS; //TCS tables by particle       171   TCSMap tableTCS; //TCS tables by particle
172   typedef std::map<G4String, std::vector<TriDi    172   typedef std::map<G4String, std::vector<TriDimensionMap>* > dataDiffCSMap;
173   dataDiffCSMap eDiffDatatable, pDiffDatatable    173   dataDiffCSMap eDiffDatatable, pDiffDatatable; //Transfer probabilities (for slower code)
174   dataDiffCSMap eNrjTransStorage, pNrjTransSto    174   dataDiffCSMap eNrjTransStorage, pNrjTransStorage; //Transfered energies and corresponding probability (faster code)
175   typedef std::map<G4String, std::vector<VecMa    175   typedef std::map<G4String, std::vector<VecMap>* > dataProbaShellMap;
176   dataProbaShellMap eProbaShellStorage, pProba    176   dataProbaShellMap eProbaShellStorage, pProbaShellStorage; //Cumulated Transfer probabilities (faster code)
177   typedef std::map<G4String, std::vector<G4dou    177   typedef std::map<G4String, std::vector<G4double>* > incidentEnergyMap;
178   incidentEnergyMap eIncidentEnergyStorage, pI    178   incidentEnergyMap eIncidentEnergyStorage, pIncidentEnergyStorage; //Incident energies for interpolation (faster code)
179   typedef std::map<G4String, VecMap* > TranfEn    179   typedef std::map<G4String, VecMap* > TranfEnergyMap;
180   TranfEnergyMap eVecmStorage, pVecmStorage; /    180   TranfEnergyMap eVecmStorage, pVecmStorage; //Transfered energy for interpolation (slower code)
181   typedef std::map<G4String, G4MicroElecMateri    181   typedef std::map<G4String, G4MicroElecMaterialStructure*, std::less<G4String> > MapStructure;
182   MapStructure tableMaterialsStructures; //Str    182   MapStructure tableMaterialsStructures; //Structures of all materials simulated
183                                                   183 
184   G4String currentMaterial = "";                  184   G4String currentMaterial = "";
185   std::map<G4String,G4double,std::less<G4Strin    185   std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
186   std::map<G4String,G4double,std::less<G4Strin    186   std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
187                                                   187  
188   G4int verboseLevel;                             188   G4int verboseLevel;  
189   G4bool isInitialised ;                          189   G4bool isInitialised ;
190   G4bool fasterCode;                              190   G4bool fasterCode;
191   G4bool SEFromFermiLevel;                        191   G4bool SEFromFermiLevel;
192                                                   192 
193 };                                                193 };
194                                                   194 
195 #endif                                            195 #endif
196                                                   196