Geant4 Cross Reference

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


  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.hh, 2011/08/29 A.     27 // G4MicroElecInelasticModel.hh, 2011/08/29 A.Valentin, M. Raine
 28 //                                                 28 //
 29 // Based on the following publications             29 // Based on the following publications
 30 //                                                 30 //
 31 //          - Inelastic cross-sections of low      31 //          - Inelastic cross-sections of low energy electrons in silicon
 32 //      for the simulation of heavy ion tracks     32 //      for the simulation of heavy ion tracks with theGeant4-DNA toolkit,
 33 //      NSS Conf. Record 2010, pp. 80-85           33 //      NSS Conf. Record 2010, pp. 80-85
 34 //      - Geant4 physics processes for microdo     34 //      - Geant4 physics processes for microdosimetry simulation:
 35 //      very low energy electromagnetic models     35 //      very low energy electromagnetic models for electrons in Si,
 36 //      NIM B, vol. 288, pp. 66-73, 2012.          36 //      NIM B, vol. 288, pp. 66-73, 2012.
 37 //      - Geant4 physics processes for microdo     37 //      - Geant4 physics processes for microdosimetry simulation:
 38 //      very low energy electromagnetic models     38 //      very low energy electromagnetic models for protons and
 39 //      heavy ions in Si, NIM B, vol. 287, pp.     39 //      heavy ions in Si, NIM B, vol. 287, pp. 124-129, 2012.
 40 //                                                 40 //
 41 //....oooOO0OOooo........oooOO0OOooo........oo     41 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
 42                                                    42 
 43 #ifndef G4MicroElecInelasticModel_h                43 #ifndef G4MicroElecInelasticModel_h
 44 #define G4MicroElecInelasticModel_h 1              44 #define G4MicroElecInelasticModel_h 1
 45                                                    45 
 46                                                    46 
 47 #include "globals.hh"                              47 #include "globals.hh"
 48 #include "G4VEmModel.hh"                           48 #include "G4VEmModel.hh"
 49 #include "G4ParticleChangeForGamma.hh"             49 #include "G4ParticleChangeForGamma.hh"
 50 #include "G4ProductionCutsTable.hh"                50 #include "G4ProductionCutsTable.hh"
 51 #include "G4VAtomDeexcitation.hh"              << 
 52 #include "G4MicroElecSiStructure.hh"           << 
 53                                                    51 
 54 class G4ParticleDefinition;                    <<  52 #include "G4MicroElecCrossSectionDataSet.hh"
 55 class G4NistManager;                           <<  53 #include "G4Electron.hh"
 56 class G4MicroElecCrossSectionDataSet;          <<  54 #include "G4Proton.hh"
                                                   >>  55 #include "G4GenericIon.hh"
                                                   >>  56 #include "G4ParticleDefinition.hh"
                                                   >>  57 
                                                   >>  58 #include "G4LogLogInterpolation.hh"
                                                   >>  59 
                                                   >>  60 #include "G4MicroElecSiStructure.hh"
                                                   >>  61 #include "G4VAtomDeexcitation.hh"
                                                   >>  62 #include "G4NistManager.hh"
 57                                                    63 
 58 class G4MicroElecInelasticModel : public G4VEm     64 class G4MicroElecInelasticModel : public G4VEmModel
 59 {                                                  65 {
 60                                                    66 
 61 public:                                            67 public:
 62                                                    68 
 63   G4MicroElecInelasticModel(const G4ParticleDe <<  69   G4MicroElecInelasticModel(const G4ParticleDefinition* p = 0, 
 64                const G4String& nam = "MicroEle     70                const G4String& nam = "MicroElecInelasticModel");
                                                   >>  71 
 65   virtual ~G4MicroElecInelasticModel();            72   virtual ~G4MicroElecInelasticModel();
 66                                                << 
 67   void Initialise(const G4ParticleDefinition*, << 
 68                                                    73 
 69   G4double CrossSectionPerVolume(  const G4Mat <<  74   virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
 70            const G4ParticleDefinition* p,      <<  75 
 71            G4double ekin,                      <<  76   virtual G4double CrossSectionPerVolume(  const G4Material* material,
 72            G4double emin,                      <<  77              const G4ParticleDefinition* p,
 73            G4double emax) override;            <<  78              G4double ekin,
 74   void SampleSecondaries(std::vector<G4Dynamic <<  79              G4double emin,
 75        const G4MaterialCutsCouple*,            <<  80              G4double emax);
 76        const G4DynamicParticle*,               <<  81 
 77        G4double tmin,                          <<  82   virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
 78        G4double maxEnergy) override;           <<  83          const G4MaterialCutsCouple*,
 79   G4double DifferentialCrossSection(G4Particle <<  84          const G4DynamicParticle*,
 80                                     G4double k <<  85          G4double tmin,
 81                                     G4int shel <<  86          G4double maxEnergy);
 82   G4double TransferedEnergy(G4ParticleDefiniti <<  87 
 83                             G4double incomingP <<  88   double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
 84                                                << 
 85   inline void SelectFasterComputation(G4bool i << 
 86                                                    89 
 87   G4MicroElecInelasticModel & operator=(const  << 
 88   G4MicroElecInelasticModel(const  G4MicroElec << 
 89                                                << 
 90 protected:                                         90 protected:
                                                   >>  91 
 91   G4ParticleChangeForGamma* fParticleChangeFor     92   G4ParticleChangeForGamma* fParticleChangeForGamma;
 92                                                    93 
 93 private:                                           94 private:
 94   G4double RandomizeEjectedElectronEnergy(G4Pa << 
 95             G4double incomingParticleEnergy, G << 
 96   G4double RandomizeEjectedElectronEnergyFromC << 
 97                 G4double incomingParticleEnerg << 
 98   G4double Interpolate(G4double e1, G4double e << 
 99   G4double QuadInterpolator( G4double e11,     << 
100            G4double e12,                       << 
101            G4double e21,                       << 
102            G4double e22,                       << 
103            G4double x11,                       << 
104            G4double x12,                       << 
105            G4double x21,                       << 
106            G4double x22,                       << 
107            G4double t1,                        << 
108            G4double t2,                        << 
109            G4double t,                         << 
110            G4double e);                        << 
111   // Partial cross section                     << 
112   G4int RandomSelect(G4double energy,const G4S << 
113                                                    95 
114   //deexcitation manager to produce fluo photn     96   //deexcitation manager to produce fluo photns and e-
115   G4VAtomDeexcitation*      fAtomDeexcitation;     97   G4VAtomDeexcitation*      fAtomDeexcitation;
                                                   >>  98 
116   G4Material* nistSi;                              99   G4Material* nistSi;
                                                   >> 100 
117   std::map<G4String,G4double,std::less<G4Strin    101   std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
118   std::map<G4String,G4double,std::less<G4Strin    102   std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
119                                                   103 
                                                   >> 104   G4bool isInitialised;
                                                   >> 105   G4int verboseLevel;
                                                   >> 106   
120   // Cross section                                107   // Cross section
                                                   >> 108 
121   typedef std::map<G4String,G4String,std::less    109   typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
122   MapFile tableFile;                              110   MapFile tableFile;
123                                                   111 
124   typedef std::map<G4String,G4MicroElecCrossSe    112   typedef std::map<G4String,G4MicroElecCrossSectionDataSet*,std::less<G4String> > MapData;
125   MapData tableData;                              113   MapData tableData;
126                                                   114   
127   typedef std::map<G4double, std::map<G4double << 115   // Final state
                                                   >> 116   
                                                   >> 117   G4MicroElecSiStructure SiStructure;
                                                   >> 118 
                                                   >> 119   G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4int shell) ;
                                                   >> 120 
                                                   >> 121   void RandomizeEjectedElectronDirection(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4double
                                                   >> 122                                            outgoingParticleEnergy, G4double & cosTheta, G4double & phi );
                                                   >> 123 
                                                   >> 124   G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
                                                   >> 125    
                                                   >> 126   G4double QuadInterpolator( G4double e11, 
                                                   >> 127            G4double e12, 
                                                   >> 128            G4double e21, 
                                                   >> 129            G4double e22, 
                                                   >> 130            G4double x11,
                                                   >> 131            G4double x12, 
                                                   >> 132            G4double x21, 
                                                   >> 133            G4double x22, 
                                                   >> 134            G4double t1, 
                                                   >> 135            G4double t2, 
                                                   >> 136            G4double t, 
                                                   >> 137            G4double e);
                                                   >> 138 
                                                   >> 139   typedef std::map<double, std::map<double, double> > TriDimensionMap;
128   TriDimensionMap eDiffCrossSectionData[7];       140   TriDimensionMap eDiffCrossSectionData[7];
129   TriDimensionMap eNrjTransfData[7]; // for cu << 
130   TriDimensionMap pDiffCrossSectionData[7];       141   TriDimensionMap pDiffCrossSectionData[7];
131   TriDimensionMap pNrjTransfData[7]; // for cu << 142   std::vector<double> eTdummyVec;
132   std::vector<G4double> eTdummyVec;            << 143   std::vector<double> pTdummyVec;
133   std::vector<G4double> pTdummyVec;            << 
134                                                   144 
135   typedef std::map<G4double, std::vector<G4dou << 145   typedef std::map<double, std::vector<double> > VecMap;
136   VecMap eVecm;                                   146   VecMap eVecm;
137   VecMap pVecm;                                   147   VecMap pVecm;
138   VecMap eProbaShellMap[7]; // for cumulated d << 
139   VecMap pProbaShellMap[7]; // for cumulated d << 
140                                                   148   
141   // Final state                               << 149   // Partial cross section
142   G4MicroElecSiStructure SiStructure;          << 150   
                                                   >> 151   G4int RandomSelect(G4double energy,const G4String& particle );
                                                   >> 152    
                                                   >> 153   //
                                                   >> 154    
                                                   >> 155   G4MicroElecInelasticModel & operator=(const  G4MicroElecInelasticModel &right);
                                                   >> 156   G4MicroElecInelasticModel(const  G4MicroElecInelasticModel&);
143                                                   157 
144   G4int verboseLevel;                          << 
145   G4bool isInitialised;                        << 
146   G4bool fasterCode;                           << 
147   //                                           << 
148 };                                                158 };
149                                                << 
150 //....oooOO0OOooo........oooOO0OOooo........oo << 
151                                                << 
152 inline void G4MicroElecInelasticModel::SelectF << 
153 {                                              << 
154     fasterCode = input;                        << 
155 }                                              << 
156                                                   159 
157 //....oooOO0OOooo........oooOO0OOooo........oo    160 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
158                                                   161 
159 #endif                                            162 #endif
160                                                   163