Warning, file /include/Geant4/G4DNARuddIonisationModel.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 G4DNARuddIonisationModel_h
0029 #define G4DNARuddIonisationModel_h 1
0030
0031 #include "G4VEmModel.hh"
0032 #include "G4ParticleChangeForGamma.hh"
0033 #include "G4ProductionCutsTable.hh"
0034
0035 #include "G4DNAGenericIonsManager.hh"
0036 #include "G4DNACrossSectionDataSet.hh"
0037 #include "G4Electron.hh"
0038 #include "G4Proton.hh"
0039 #include "G4LogLogInterpolation.hh"
0040
0041 #include "G4DNAWaterIonisationStructure.hh"
0042 #include "G4VAtomDeexcitation.hh"
0043 #include "G4NistManager.hh"
0044
0045 class G4DNARuddIonisationModel : public G4VEmModel
0046 {
0047
0048 public:
0049
0050 G4DNARuddIonisationModel(const G4ParticleDefinition* p = nullptr,
0051 const G4String& nam = "DNARuddIonisationModel");
0052
0053 ~G4DNARuddIonisationModel() override;
0054
0055 G4DNARuddIonisationModel & operator=(const G4DNARuddIonisationModel &right) = delete;
0056 G4DNARuddIonisationModel(const G4DNARuddIonisationModel&) = delete;
0057
0058 void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
0059
0060 G4double CrossSectionPerVolume( const G4Material* material,
0061 const G4ParticleDefinition* p,
0062 G4double ekin,
0063 G4double emin,
0064 G4double emax) override;
0065
0066 void SampleSecondaries(std::vector<G4DynamicParticle*>*,
0067 const G4MaterialCutsCouple*,
0068 const G4DynamicParticle*,
0069 G4double tmin,
0070 G4double maxEnergy) override;
0071
0072 inline void SelectStationary(G4bool input);
0073
0074 protected:
0075
0076 G4ParticleChangeForGamma* fParticleChangeForGamma = nullptr;
0077
0078 private:
0079
0080 G4bool statCode;
0081
0082
0083 const std::vector<G4double>* fpWaterDensity = nullptr;
0084
0085
0086 G4VAtomDeexcitation* fAtomDeexcitation = nullptr;
0087
0088 std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
0089 std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
0090
0091 G4double lowEnergyLimitForZ1;
0092 G4double lowEnergyLimitForZ2;
0093 G4double lowEnergyLimitOfModelForZ1;
0094 G4double lowEnergyLimitOfModelForZ2;
0095 G4double killBelowEnergyForZ1;
0096 G4double killBelowEnergyForZ2;
0097
0098 G4bool isInitialised{false};
0099 G4int verboseLevel;
0100
0101
0102
0103 using MapFile = std::map<G4String, G4String, std::less<G4String>>;
0104 MapFile tableFile;
0105
0106 using MapData = std::map<G4String, G4DNACrossSectionDataSet *, std::less<G4String>>;
0107 MapData tableData;
0108
0109
0110
0111 G4DNAWaterIonisationStructure waterStructure;
0112
0113 G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition* particleDefinition,
0114 G4double incomingParticleEnergy,
0115 G4int shell);
0116
0117 G4double DifferentialCrossSection(G4ParticleDefinition* particleDefinition,
0118 G4double k,
0119 G4double energyTransfer,
0120 G4int shell);
0121
0122 G4double CorrectionFactor(G4ParticleDefinition* particleDefinition, G4double k);
0123
0124 G4double S_1s(G4double t,
0125 G4double energyTransferred,
0126 G4double slaterEffectiveChg,
0127 G4double shellNumber);
0128
0129 G4double S_2s(G4double t,
0130 G4double energyTransferred,
0131 G4double slaterEffectiveChg,
0132 G4double shellNumber);
0133
0134
0135 G4double S_2p(G4double t,
0136 G4double energyTransferred,
0137 G4double slaterEffectiveChg,
0138 G4double shellNumber);
0139
0140 G4double R(G4double t,
0141 G4double energyTransferred,
0142 G4double slaterEffectiveChg,
0143 G4double shellNumber) ;
0144
0145 G4double slaterEffectiveCharge[3];
0146 G4double sCoefficient[3];
0147
0148
0149
0150 G4double PartialCrossSection(const G4Track& track);
0151
0152 G4double Sum(G4double energy, const G4String& particle);
0153
0154 G4int RandomSelect(G4double energy,const G4String& particle );
0155
0156
0157 G4ParticleDefinition* protonDef = nullptr;
0158 G4ParticleDefinition* hydrogenDef = nullptr;
0159 G4ParticleDefinition* alphaPlusPlusDef = nullptr;
0160 G4ParticleDefinition* alphaPlusDef = nullptr;
0161 G4ParticleDefinition* heliumDef = nullptr;
0162
0163 };
0164
0165
0166
0167 inline void G4DNARuddIonisationModel::SelectStationary (G4bool input)
0168 {
0169 statCode = input;
0170 }
0171
0172
0173
0174 #endif