Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4UAtomicDeexcitation.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// $Id: G4UAtomicDeexcitation.cc,v 1.11
27// GEANT4 tag $Name: not supported by cvs2svn $
28//
29// -------------------------------------------------------------------
30//
31// Geant4 Header G4UAtomicDeexcitation
32//
33// Authors: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
34//
35// Created 22 April 2010 from old G4AtomicDeexcitation class
36//
37// Modified:
38// ---------
39//
40//
41// -------------------------------------------------------------------
42//
43// Class description:
44// Implementation of atomic deexcitation
45//
46// -------------------------------------------------------------------
47
48#ifndef G4UAtomicDeexcitation_h
49#define G4UAtomicDeexcitation_h 1
50
52#include "G4AtomicShell.hh"
53#include "globals.hh"
54#include "G4DynamicParticle.hh"
55#include <vector>
56
59class G4EmCorrections;
60class G4Material;
61
63{
64public:
65
67 virtual ~G4UAtomicDeexcitation();
68
69 //=================================================================
70 // methods that are requested to be implemented by the interface
71 //=================================================================
72
73 // initialisation methods
74 virtual void InitialiseForNewRun();
75 virtual void InitialiseForExtraAtom(G4int Z);
76
77
78 // Set threshold energy for fluorescence
80
81 // Set threshold energy for Auger electron production
83
84
85 // Get atomic shell by shell index, used by discrete processes
86 // (for example, photoelectric), when shell vacancy sampled by the model
87 virtual
90
91 // generation of deexcitation for given atom, shell vacancy and cuts
92 virtual void GenerateParticles(std::vector<G4DynamicParticle*>* secVect,
93 const G4AtomicShell*,
94 G4int Z,
95 G4double gammaCut,
96 G4double eCut);
97
98 // access or compute PIXE cross section
99 virtual
101 G4int Z,
103 G4double kinE,
104 const G4Material* mat = 0);
105
106 // access or compute PIXE cross section
107 virtual
109 G4int Z,
111 G4double kinE,
112 const G4Material* mat = 0);
113
114 //=================================================================
115 // concrete methods of the deextation class
116 //=================================================================
117
118private:
119
120 // Decides wether a radiative transition is possible and, if it is,
121 // returns the identity of the starting shell for the transition
122 G4int SelectTypeOfTransition(G4int Z, G4int shellId);
123
124 // Generates a particle from a radiative transition and returns it
125 G4DynamicParticle* GenerateFluorescence(G4int Z, G4int shellId,
126 G4int provShellId);
127
128 // Generates a particle from a non-radiative transition and returns it
129 G4DynamicParticle* GenerateAuger(G4int Z, G4int shellId);
130
131 // copy constructor and hide assignment operator
133 G4UAtomicDeexcitation & operator=(const G4UAtomicDeexcitation &right);
134
135 const G4AtomicTransitionManager* transitionManager;
136
137 // Data member which stores the shells to be filled by
138 // the radiative transition
139 G4int newShellId;
140
141 G4double minGammaEnergy;
142 G4double minElectronEnergy;
143
144 // Data member wich stores the id of the shell where is the vacancy
145 // left from the Auger electron
146 G4int augerVacancyId;
147
148 // Data member for the calculation of the proton and alpha ionisation XS
149
150 G4VhShellCrossSection* PIXEshellCS;
151 G4VhShellCrossSection* anaPIXEshellCS;
152 G4VhShellCrossSection* ePIXEshellCS;
153 G4EmCorrections* emcorr;
154
155 const G4ParticleDefinition* theElectron;
156 const G4ParticleDefinition* thePositron;
157};
158
159#endif
160
161
162
163
G4AtomicShellEnumerator
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
void SetCutForSecondaryPhotons(G4double cut)
virtual G4double GetShellIonisationCrossSectionPerAtom(const G4ParticleDefinition *, G4int Z, G4AtomicShellEnumerator shell, G4double kinE, const G4Material *mat=0)
virtual void InitialiseForExtraAtom(G4int Z)
virtual G4double ComputeShellIonisationCrossSectionPerAtom(const G4ParticleDefinition *, G4int Z, G4AtomicShellEnumerator shell, G4double kinE, const G4Material *mat=0)
virtual void GenerateParticles(std::vector< G4DynamicParticle * > *secVect, const G4AtomicShell *, G4int Z, G4double gammaCut, G4double eCut)
virtual void InitialiseForNewRun()
void SetCutForAugerElectrons(G4double cut)
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)