Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/dna/models/include/G4DNACPA100IonisationModel.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /processes/electromagnetic/dna/models/include/G4DNACPA100IonisationModel.hh (Version 11.3.0) and /processes/electromagnetic/dna/models/include/G4DNACPA100IonisationModel.hh (Version 10.3.p2)


  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