Warning, file /include/Geant4/G4PenelopeGammaConversionModel.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 #ifndef G4PENELOPEGAMMACONVERSIONMODEL_HH
0044 #define G4PENELOPEGAMMACONVERSIONMODEL_HH 1
0045
0046 #include "globals.hh"
0047 #include "G4VEmModel.hh"
0048 #include "G4DataVector.hh"
0049 #include "G4ParticleChangeForGamma.hh"
0050
0051 class G4ParticleDefinition;
0052 class G4DynamicParticle;
0053 class G4MaterialCutsCouple;
0054 class G4Material;
0055 class G4PhysicsFreeVector;
0056
0057 class G4PenelopeGammaConversionModel : public G4VEmModel
0058 {
0059 public:
0060 explicit G4PenelopeGammaConversionModel(const G4ParticleDefinition* p=nullptr,
0061 const G4String& processName ="PenConversion");
0062
0063 virtual ~G4PenelopeGammaConversionModel();
0064
0065 void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
0066 void InitialiseLocal(const G4ParticleDefinition*, G4VEmModel*) override;
0067 G4double ComputeCrossSectionPerAtom(
0068 const G4ParticleDefinition*,
0069 G4double kinEnergy,
0070 G4double Z,
0071 G4double A=0,
0072 G4double cut=0,
0073 G4double emax=DBL_MAX) override;
0074
0075 void SampleSecondaries(std::vector<G4DynamicParticle*>*,
0076 const G4MaterialCutsCouple*,
0077 const G4DynamicParticle*,
0078 G4double tmin,
0079 G4double maxEnergy) override;
0080
0081 void SetVerbosityLevel(G4int lev){fVerboseLevel = lev;};
0082 G4int GetVerbosityLevel(){return fVerboseLevel;};
0083
0084 G4PenelopeGammaConversionModel & operator=(const
0085 G4PenelopeGammaConversionModel &right) = delete;
0086 G4PenelopeGammaConversionModel(const G4PenelopeGammaConversionModel&) = delete;
0087
0088 protected:
0089 G4ParticleChangeForGamma* fParticleChange;
0090 const G4ParticleDefinition* fParticle;
0091
0092 private:
0093 void SetParticle(const G4ParticleDefinition*);
0094 void ReadDataFile(const G4int Z);
0095 void InitializeScreeningFunctions(const G4Material*);
0096 std::pair<G4double,G4double> GetScreeningFunctions(G4double);
0097
0098
0099
0100 std::map<const G4Material*,G4double> *fEffectiveCharge;
0101
0102 std::map<const G4Material*,G4double> *fMaterialInvScreeningRadius;
0103
0104 std::map<const G4Material*,std::pair<G4double,G4double> > *fScreeningFunction;
0105
0106 static const G4int fMaxZ =99;
0107 static G4PhysicsFreeVector* fLogAtomicCrossSection[fMaxZ+1];
0108
0109 static G4double fAtomicScreeningRadius[fMaxZ+1];
0110
0111
0112 G4double fIntrinsicLowEnergyLimit;
0113 G4double fIntrinsicHighEnergyLimit;
0114
0115
0116 G4double fSmallEnergy;
0117 G4int fVerboseLevel;
0118 G4bool fIsInitialised;
0119
0120
0121 G4bool fLocalTable;
0122 };
0123
0124
0125
0126 #endif