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 10.7)


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