Warning, file /include/Geant4/G4LivermoreNuclearGammaConversionModel.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 #ifndef G4LivermoreNuclearGammaConversionModel_h
0029 #define G4LivermoreNuclearGammaConversionModel_h 1
0030
0031 #include "G4VEmModel.hh"
0032 #include "G4Electron.hh"
0033 #include "G4Positron.hh"
0034 #include "G4ParticleChangeForGamma.hh"
0035 #include "G4PhysicsFreeVector.hh"
0036 #include "G4ProductionCutsTable.hh"
0037
0038 class G4LivermoreNuclearGammaConversionModel : public G4VEmModel
0039 {
0040
0041 public:
0042
0043 explicit G4LivermoreNuclearGammaConversionModel(const G4ParticleDefinition* p = nullptr,
0044 const G4String& nam = "LivermoreNuclearConversion");
0045
0046 virtual ~G4LivermoreNuclearGammaConversionModel();
0047
0048 void Initialise(const G4ParticleDefinition*,
0049 const G4DataVector&) override;
0050
0051
0052 void InitialiseLocal(const G4ParticleDefinition*,
0053 G4VEmModel* masterModel) override;
0054
0055 void InitialiseForElement(const G4ParticleDefinition*, G4int Z) override;
0056
0057
0058 G4double ComputeCrossSectionPerAtom(
0059 const G4ParticleDefinition*,
0060 G4double kinEnergy,
0061 G4double Z,
0062 G4double A=0,
0063 G4double cut=0,
0064 G4double emax=DBL_MAX) override;
0065
0066 void SampleSecondaries(std::vector<G4DynamicParticle*>*,
0067 const G4MaterialCutsCouple*,
0068 const G4DynamicParticle*,
0069 G4double tmin,
0070 G4double maxEnergy) override;
0071
0072 G4double MinPrimaryEnergy(const G4Material*,
0073 const G4ParticleDefinition*,
0074 G4double) override;
0075
0076 G4LivermoreNuclearGammaConversionModel & operator=(const G4LivermoreNuclearGammaConversionModel &right)
0077 = delete;
0078 G4LivermoreNuclearGammaConversionModel(const G4LivermoreNuclearGammaConversionModel&) = delete;
0079
0080 private:
0081 void ReadData(size_t Z, const char* path = 0);
0082 G4double ScreenFunction1(G4double screenVariable);
0083 G4double ScreenFunction2(G4double screenVariable);
0084
0085 G4ParticleChangeForGamma* fParticleChange;
0086
0087
0088 static const G4int maxZ = 100;
0089 static G4PhysicsFreeVector* data[maxZ+1];
0090
0091
0092 G4double lowEnergyLimit;
0093 G4double smallEnergy;
0094 G4int verboseLevel;
0095 G4bool isInitialised;
0096
0097 };
0098
0099
0100
0101 #endif