Warning, file /include/Geant4/G4eIonisationSpectrum.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054 #ifndef G4EIONISATIONSPECTRUM_HH
0055 #define G4EIONISATIONSPECTRUM_HH 1
0056
0057 #include "G4VEnergySpectrum.hh"
0058 #include "G4eIonisationParameters.hh"
0059
0060
0061 class G4DataVector;
0062
0063 class G4eIonisationSpectrum : public G4VEnergySpectrum
0064 {
0065
0066 public:
0067
0068 G4eIonisationSpectrum();
0069
0070 ~G4eIonisationSpectrum();
0071
0072 G4double Probability(G4int Z, G4double tMin, G4double tMax,
0073 G4double kineticEnergy, G4int shell,
0074 const G4ParticleDefinition* pd=0) const;
0075
0076 G4double AverageEnergy(G4int Z, G4double tMin, G4double tMax,
0077 G4double kineticEnergy, G4int shell,
0078 const G4ParticleDefinition* pd=0) const;
0079
0080 G4double SampleEnergy(G4int Z, G4double tMin, G4double tMax,
0081 G4double kineticEnergy, G4int shell,
0082 const G4ParticleDefinition* pd=0) const;
0083
0084 G4double MaxEnergyOfSecondaries(G4double kineticEnergy,
0085 G4int Z = 0,
0086 const G4ParticleDefinition* pd=0) const;
0087
0088 G4double Excitation(G4int Z, G4double e) const;
0089
0090 void PrintData() const;
0091
0092 protected:
0093
0094 private:
0095
0096 G4double IntSpectrum(G4double xMin, G4double xMax,
0097 const G4DataVector& p) const;
0098
0099 G4double AverageValue(G4double xMin, G4double xMax,
0100 const G4DataVector& p) const;
0101
0102 G4double Function(G4double x, const G4DataVector& p) const;
0103
0104
0105 G4eIonisationSpectrum(const G4eIonisationSpectrum&);
0106 G4eIonisationSpectrum & operator = (const G4eIonisationSpectrum &right);
0107
0108 private:
0109
0110 G4eIonisationParameters* theParam;
0111 G4double lowestE;
0112 G4double factor;
0113 G4int iMax;
0114 G4int verbose;
0115 };
0116
0117
0118 inline G4double G4eIonisationSpectrum::Function(G4double x,
0119 const G4DataVector& p) const
0120 {
0121 G4double f = 1.0 - p[0] - p[iMax]*x
0122 + x*x*(1.0 - p[iMax] + (1.0/(1.0 - x) - p[iMax])/(1.0 - x))
0123 + 0.5*p[0]/x;
0124
0125 return f;
0126 }
0127
0128 inline G4double G4eIonisationSpectrum::Excitation(G4int Z, G4double e) const
0129 {
0130 return theParam->Excitation(Z, e);
0131 }
0132
0133
0134 #endif