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 // ------------------------------------------- 28 // 29 // Geant4 Header G4UAtomicDeexcitation 30 // 31 // Authors: Alfonso Mantero (Alfonso.Mantero@g 32 // 33 // Created 22 April 2010 from old G4AtomicDeex 34 // 35 // Modified: 36 // --------- 37 // 38 // 39 // ------------------------------------------- 40 // 41 // Class description: 42 // Implementation of atomic deexcitation 43 // 44 // ------------------------------------------- 45 46 #ifndef G4UAtomicDeexcitation_h 47 #define G4UAtomicDeexcitation_h 1 48 49 #include "G4VAtomDeexcitation.hh" 50 #include "G4AtomicShell.hh" 51 #include "globals.hh" 52 #include "G4DynamicParticle.hh" 53 #include <vector> 54 55 class G4AtomicTransitionManager; 56 class G4VhShellCrossSection; 57 class G4EmCorrections; 58 class G4Material; 59 60 class G4UAtomicDeexcitation : public G4VAtomDe 61 { 62 public: 63 explicit G4UAtomicDeexcitation(); 64 virtual ~G4UAtomicDeexcitation(); 65 66 //========================================== 67 // methods that are requested to be implemen 68 //========================================== 69 /// initialisation methods 70 void InitialiseForNewRun() override; 71 void InitialiseForExtraAtom(G4int Z) overrid 72 73 /// Set threshold energy for fluorescence 74 void SetCutForSecondaryPhotons(G4double cut) 75 76 /// Set threshold energy for Auger electron 77 void SetCutForAugerElectrons(G4double cut); 78 79 80 /// Get atomic shell by shell index, used by 81 /// (for example, photoelectric), when shell 82 const G4AtomicShell* GetAtomicShell(G4int Z, 83 G4AtomicShellEnumerator shell) o 84 85 /// generation of deexcitation for given ato 86 void GenerateParticles(std::vector<G4Dynamic 87 const G4AtomicShell*, 88 G4int Z, 89 G4double gammaCut, 90 G4double eCut) override; 91 92 /// access or compute PIXE cross section 93 G4double GetShellIonisationCrossSectionPerAt 94 G4int Z, 95 G4AtomicShellEnumerator shell, 96 G4double kinE, 97 98 99 /// access or compute PIXE cross section 100 G4double ComputeShellIonisationCrossSectionP 101 G4int Z, 102 G4AtomicShellEnumerator shell 103 G4double kinE, 104 const G4Material* mat = nullp 105 106 G4UAtomicDeexcitation(G4UAtomicDeexcitation 107 G4UAtomicDeexcitation & operator=(const G4UA 108 109 private: 110 /// Decides wether a radiative transition is 111 /// returns the identity of the starting she 112 G4int SelectTypeOfTransition(G4int Z, G4int 113 114 /// Generates a particle from a radiative tr 115 G4DynamicParticle* GenerateFluorescence(G4in 116 G4int provShellId); 117 118 /// Generates a particle from a non-radiativ 119 G4DynamicParticle* GenerateAuger(G4int Z, G4 120 121 ///Auger cascade by Burkhant Suerfu on March 122 ///Generates auger electron cascade. 123 G4DynamicParticle* GenerateAuger(G4int Z, G4 124 G4AtomicTransitionManager* transitionManager 125 126 /// Data member for the calculation of the p 127 G4VhShellCrossSection* PIXEshellCS; 128 G4VhShellCrossSection* anaPIXEshellCS; 129 G4VhShellCrossSection* ePIXEshellCS; 130 G4EmCorrections* emcorr; 131 132 const G4ParticleDefinition* theElectron; 133 const G4ParticleDefinition* thePositron; 134 135 //Auger cascade by Burkhant Suerfu on March 136 //Data member to keep track of cascading vac 137 std::vector<int> vacancyArray; 138 139 /// Data member which stores the shells to b 140 /// the radiative transition 141 G4double minGammaEnergy; 142 G4double minElectronEnergy; 143 G4int newShellId; 144 }; 145 146 #endif 147 148 149 150 151