00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #ifndef G4QAOLowEnergyLoss_hh
00048 #define G4QAOLowEnergyLoss_hh 1
00049
00050 #include "G4VLowEnergyModel.hh"
00051 #include "globals.hh"
00052
00053 class G4QAOLowEnergyLoss : public G4VLowEnergyModel
00054 {
00055 public:
00056
00057 G4QAOLowEnergyLoss(const G4String& name);
00058
00059 ~G4QAOLowEnergyLoss();
00060
00061 G4double HighEnergyLimit(const G4ParticleDefinition* aParticle,
00062 const G4Material* material) const;
00063
00064
00065 G4double LowEnergyLimit(const G4ParticleDefinition* aParticle,
00066 const G4Material* material) const;
00067
00068
00069 G4double HighEnergyLimit(const G4ParticleDefinition* aParticle) const;
00070
00071
00072 G4double LowEnergyLimit(const G4ParticleDefinition* aParticle) const;
00073
00074
00075 G4bool IsInCharge(const G4DynamicParticle* particle,
00076 const G4Material* material) const;
00077
00078
00079
00080 G4bool IsInCharge(const G4ParticleDefinition* aParticle,
00081 const G4Material* material) const;
00082
00083
00084
00085 G4double TheValue(const G4DynamicParticle* particle,
00086 const G4Material* material);
00087
00088
00089 G4double TheValue(const G4ParticleDefinition* aParticle,
00090 const G4Material* material,
00091 G4double kineticEnergy);
00092
00093
00094 private:
00095
00096 G4double EnergyLoss(const G4Material* material,
00097 G4double kineticEnergy,
00098 G4double zParticle) const;
00099
00100
00101
00102 G4int GetNumberOfShell(const G4Material* material) const;
00103
00104 G4double GetShellEnergy(const G4Material* material,G4int nbOfTheShell) const;
00105 G4double GetOscillatorEnergy(const G4Material* material,G4int nbOfTheShell) const;
00106 G4double GetShellStrength(const G4Material* material,G4int nbOfTheShell) const;
00107 G4double GetOccupationNumber(G4int Z, G4int ShellNb) const;
00108
00109
00110 G4double GetL0(G4double normEnergy) const;
00111
00112 G4double GetL1(G4double normEnergy) const;
00113
00114 G4double GetL2(G4double normEnergy) const;
00115
00116
00117
00118 static const G4int materialAvailable[6];
00119
00120
00121
00122 static const G4int nbofShellForMaterial[6];
00123 static G4double alShellEnergy[3];
00124 static G4double alShellStrength[3];
00125 static G4double siShellEnergy[3];
00126 static G4double siShellStrength[3];
00127 static G4double cuShellEnergy[4];
00128 static G4double cuShellStrength[4];
00129 static G4double taShellEnergy[6];
00130 static G4double taShellStrength[6];
00131 static G4double auShellEnergy[6];
00132 static G4double auShellStrength[6];
00133 static G4double ptShellEnergy[6];
00134 static G4double ptShellStrength[6];
00135
00136 G4int numberOfMaterials;
00137
00138
00139 static const G4double L0[67][2];
00140 static const G4double L1[22][2];
00141 static const G4double L2[14][2];
00142 static const G4int nbOfElectronPerSubShell[1540];
00143 static const G4int fNumberOfShells[101];
00144
00145 G4int sizeL0;
00146 G4int sizeL1;
00147 G4int sizeL2;
00148
00149 };
00150
00151 #endif