Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // CPA100 ionisation model class for electrons 27 // 28 // Based on the work of M. Terrissol and M. C. 29 // 30 // Users are requested to cite the following p 31 // - M. Terrissol, A. Baudre, Radiat. Prot. Do 32 // - M.C. Bordage, J. Bordes, S. Edel, M. Terr 33 // M. Bardies, N. Lampe, S. Incerti, Phys. M 34 // 35 // Authors of this class: 36 // M.C. Bordage, M. Terrissol, S. Edel, J. Bor 37 // 38 // 15.01.2014: creation 39 // 40 // Based on the study by S. Zein et. al. Nucl. 41 // 1/2/2023 : Hoang added modification for DNA 42 43 #ifndef G4DNACPA100IonisationModel_h 44 #define G4DNACPA100IonisationModel_h 1 45 46 #include "G4DNACPA100IonisationStructure.hh" 47 #include "G4DNACrossSectionDataSet.hh" 48 #include "G4Electron.hh" 49 #include "G4LogLogInterpolation.hh" 50 #include "G4NistManager.hh" 51 #include "G4ParticleChangeForGamma.hh" 52 #include "G4ProductionCutsTable.hh" 53 #include "G4VAtomDeexcitation.hh" 54 #include "G4VDNAModel.hh" 55 56 class G4DNACPA100IonisationModel : public G4VD 57 { 58 using TriDimensionMap = 59 std::map<std::size_t, 60 std::map<const G4ParticleDefini 61 std::map<G4int, std::m 62 using VecMap = 63 std::map<std::size_t, 64 std::map<const G4ParticleDefini 65 using VecMapWithShell = 66 std::map<std::size_t, 67 std::map<const G4ParticleDefini 68 std::map<G4double, std 69 using PartKineticInMat = 70 const std::tuple<std::size_t /*Mat*/, G4 71 72 public: 73 explicit G4DNACPA100IonisationModel(const 74 const 75 76 ~G4DNACPA100IonisationModel() override = d 77 78 void Initialise(const G4ParticleDefinition 79 80 G4double CrossSectionPerVolume(const G4Mat 81 G4double ek 82 83 void SampleSecondaries(std::vector<G4Dynam 84 const G4DynamicPart 85 86 G4double DifferentialCrossSection(PartKine 87 88 // G4double DifferentialCrossSection(const 89 // const 90 // ioniz 91 92 inline void SelectFasterComputation(G4bool 93 94 inline void SelectUseDcs(G4bool input); 95 96 inline void SelectStationary(G4bool input) 97 98 G4DNACPA100IonisationModel& operator=(cons 99 G4DNACPA100IonisationModel(const G4DNACPA1 100 void ReadDiffCSFile(const std::size_t& mat 101 const G4String& file, 102 103 protected: 104 G4ParticleChangeForGamma* fParticleChangeF 105 106 private: 107 G4bool statCode = false; 108 G4bool fasterCode = true; 109 G4bool useDcs = false; 110 111 // const std::vector<G4double>* fpMolMate 112 113 // Deexcitation manager to produce fluo ph 114 G4VAtomDeexcitation* fAtomDeexcitation = n 115 116 G4bool isInitialised = false; 117 G4int verboseLevel = 0; 118 119 G4DNACPA100IonisationStructure iStructure; 120 121 G4double RandomizeEjectedElectronEnergy(Pa 122 123 G4double RandomizeEjectedElectronEnergyFro 124 125 G4double RandomizeEjectedElectronEnergyFro 126 127 G4double RandomTransferedEnergy(PartKineti 128 129 void RandomizeEjectedElectronDirection(G4P 130 G4d 131 G4d 132 G4d 133 134 G4double Interpolate(G4double e1, G4double 135 136 G4double QuadInterpolator(G4double e11, G4 137 G4double x12, G4 138 G4double t, G4do 139 140 TriDimensionMap diffCrossSectionData, fEne 141 std::map<std::size_t, std::map<const G4Par 142 fTMapWithVec; 143 VecMap fEMapWithVector; 144 VecMapWithShell fProbaShellMap; 145 146 const G4Material* fpGuanine = nullptr; 147 const G4Material* fpG4_WATER = nullptr; 148 const G4Material* fpDeoxyribose = nullptr; 149 const G4Material* fpCytosine = nullptr; 150 const G4Material* fpThymine = nullptr; 151 const G4Material* fpAdenine = nullptr; 152 const G4Material* fpPhosphate = nullptr; 153 const G4ParticleDefinition* fpParticle = n 154 G4DNACPA100IonisationModel* fpModelData = 155 }; 156 157 //....oooOO0OOooo........oooOO0OOooo........oo 158 159 inline void G4DNACPA100IonisationModel::Select 160 { 161 fasterCode = input; 162 } 163 164 //....oooOO0OOooo........oooOO0OOooo........oo 165 166 inline void G4DNACPA100IonisationModel::Select 167 { 168 useDcs = input; 169 } 170 171 //....oooOO0OOooo........oooOO0OOooo........oo 172 173 //....oooOO0OOooo........oooOO0OOooo........oo 174 175 inline void G4DNACPA100IonisationModel::Select 176 { 177 statCode = input; 178 } 179 180 //....oooOO0OOooo........oooOO0OOooo........oo 181 182 #endif 183