Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/dna/utils/src/G4DNAPTBIonisationStructure.cc

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/utils/src/G4DNAPTBIonisationStructure.cc (Version 11.3.0) and /processes/electromagnetic/dna/utils/src/G4DNAPTBIonisationStructure.cc (Version 10.1)


  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 // Authors: S. Meylan and C. Villagrasa (IRSN,    
 26 // Models come from                               
 27 // M. Bug et al, Rad. Phys and Chem. 130, 459-    
 28                                                   
 29 #include "G4DNAPTBIonisationStructure.hh"         
 30 #include "G4Material.hh"                          
 31 #include "G4SystemOfUnits.hh"                     
 32                                                   
 33 G4DNAPTBIonisationStructure::G4DNAPTBIonisatio    
 34 {                                                 
 35   fpTHF = G4Material::GetMaterial("THF", false    
 36   fpPY = G4Material::GetMaterial("PY", false);    
 37   fpPU = G4Material::GetMaterial("PU", false);    
 38   fpTMP = G4Material::GetMaterial("TMP", false    
 39   fpG4_WATER = G4Material::GetMaterial("G4_WAT    
 40   fpBackbone_THF = G4Material::GetMaterial("ba    
 41   fpCytosine_PY = G4Material::GetMaterial("cyt    
 42   fpThymine_PY = G4Material::GetMaterial("thym    
 43   fpAdenine_PU = G4Material::GetMaterial("aden    
 44   fpBackbone_TMP = G4Material::GetMaterial("ba    
 45   fpGuanine_PU = G4Material::GetMaterial("guan    
 46   fpN2 = G4Material::GetMaterial("N2", false);    
 47                                                   
 48   // MPietrzak                                    
 49   if (fpN2 != nullptr) {                          
 50     auto index = fpN2->GetIndex();                
 51     energyConstant[index].push_back(15.58 * eV    
 52     energyConstant[index].push_back(17.07 * eV    
 53     energyConstant[index].push_back(21.00 * eV    
 54     energyConstant[index].push_back(41.72 * eV    
 55     energyConstant[index].push_back(409.9*eV);    
 56   }                                               
 57                                                   
 58   // MPietrzak                                    
 59   if (fpG4_WATER != nullptr) {                    
 60     auto index = fpG4_WATER->GetIndex();          
 61     energyConstant[index].push_back(10.79 * eV    
 62     energyConstant[index].push_back(13.39 * eV    
 63     energyConstant[index].push_back(16.05 * eV    
 64     energyConstant[index].push_back(32.30 * eV    
 65     energyConstant[index].push_back(539.0 * eV    
 66   }                                               
 67   if (fpTHF != nullptr) {                         
 68     auto index = fpTHF->GetIndex();               
 69     energyConstant[index].push_back(9.74 * eV)    
 70     energyConstant[index].push_back(12.31 * eV    
 71     energyConstant[index].push_back(12.99 * eV    
 72     energyConstant[index].push_back(13.57 * eV    
 73     energyConstant[index].push_back(13.60 * eV    
 74     energyConstant[index].push_back(15.11 * eV    
 75     energyConstant[index].push_back(15.97 * eV    
 76     energyConstant[index].push_back(16.28 * eV    
 77     energyConstant[index].push_back(18.19 * eV    
 78     energyConstant[index].push_back(18.69 * eV    
 79     energyConstant[index].push_back(22.14 * eV    
 80     energyConstant[index].push_back(22.25 * eV    
 81     energyConstant[index].push_back(27.21 * eV    
 82     energyConstant[index].push_back(28.97 * eV    
 83     energyConstant[index].push_back(36.97 * eV    
 84     energyConstant[index].push_back(305.07 * e    
 85     energyConstant[index].push_back(305.08 * e    
 86     energyConstant[index].push_back(306.17 * e    
 87     energyConstant[index].push_back(306.17 * e    
 88     energyConstant[index].push_back(557.94 * e    
 89   }                                               
 90                                                   
 91   if (fpPY != nullptr) {                          
 92     auto index = fpPY->GetIndex();                
 93     energyConstant[index].push_back(9.73 * eV)    
 94     energyConstant[index].push_back(10.96 * eV    
 95     energyConstant[index].push_back(11.54 * eV    
 96     energyConstant[index].push_back(12.58 * eV    
 97     energyConstant[index].push_back(15.96 * eV    
 98     energyConstant[index].push_back(16.27 * eV    
 99     energyConstant[index].push_back(16.53 * eV    
100     energyConstant[index].push_back(17.98 * eV    
101     energyConstant[index].push_back(19.37 * eV    
102     energyConstant[index].push_back(20.52 * eV    
103     energyConstant[index].push_back(24.55 * eV    
104     energyConstant[index].push_back(24.64 * eV    
105     energyConstant[index].push_back(29.75 * eV    
106     energyConstant[index].push_back(33.02 * eV    
107     energyConstant[index].push_back(36.57 * eV    
108     energyConstant[index].push_back(305.92 * e    
109     energyConstant[index].push_back(307.09 * e    
110     energyConstant[index].push_back(307.09 * e    
111     energyConstant[index].push_back(307.52 * e    
112     energyConstant[index].push_back(423.44 * e    
113     energyConstant[index].push_back(423.44 * e    
114   }                                               
115                                                   
116   if (fpPU != nullptr) {                          
117     auto index = fpPU->GetIndex();                
118     energyConstant[index].push_back(9.58 * eV)    
119     energyConstant[index].push_back(10.57 * eV    
120     energyConstant[index].push_back(10.97 * eV    
121     energyConstant[index].push_back(12.22 * eV    
122     energyConstant[index].push_back(12.92 * eV    
123     energyConstant[index].push_back(13.44 * eV    
124     energyConstant[index].push_back(15.05 * eV    
125     energyConstant[index].push_back(16.56 * eV    
126     energyConstant[index].push_back(17.18 * eV    
127     energyConstant[index].push_back(17.88 * eV    
128     energyConstant[index].push_back(17.90 * eV    
129     energyConstant[index].push_back(19.11 * eV    
130     energyConstant[index].push_back(20.09 * eV    
131     energyConstant[index].push_back(21.70 * eV    
132     energyConstant[index].push_back(23.52 * eV    
133     energyConstant[index].push_back(24.35 * eV    
134     energyConstant[index].push_back(25.41 * eV    
135     energyConstant[index].push_back(29.34 * eV    
136     energyConstant[index].push_back(32.44 * eV    
137     energyConstant[index].push_back(33.67 * eV    
138     energyConstant[index].push_back(36.26 * eV    
139     energyConstant[index].push_back(38.22 * eV    
140     energyConstant[index].push_back(306.53 * e    
141     energyConstant[index].push_back(307.19 * e    
142     energyConstant[index].push_back(307.64 * e    
143     energyConstant[index].push_back(308.14 * e    
144     energyConstant[index].push_back(308.17 * e    
145     energyConstant[index].push_back(423.31 * e    
146     energyConstant[index].push_back(423.43 * e    
147     energyConstant[index].push_back(423.64 * e    
148     energyConstant[index].push_back(423.98 * e    
149   }                                               
150                                                   
151   if (fpTMP != nullptr) {                         
152     auto index = fpTMP->GetIndex();               
153     energyConstant[index].push_back(10.81 * eV    
154     energyConstant[index].push_back(10.81 * eV    
155     energyConstant[index].push_back(12.90 * eV    
156     energyConstant[index].push_back(13.32 * eV    
157     energyConstant[index].push_back(13.32 * eV    
158     energyConstant[index].push_back(13.59 * eV    
159     energyConstant[index].push_back(14.33 * eV    
160     energyConstant[index].push_back(14.33 * eV    
161     energyConstant[index].push_back(15.90 * eV    
162     energyConstant[index].push_back(17.09 * eV    
163     energyConstant[index].push_back(17.09 * eV    
164     energyConstant[index].push_back(17.13 * eV    
165     energyConstant[index].push_back(17.85 * eV    
166     energyConstant[index].push_back(17.85 * eV    
167     energyConstant[index].push_back(18.44 * eV    
168     energyConstant[index].push_back(19.37 * eV    
169     energyConstant[index].push_back(19.37 * eV    
170     energyConstant[index].push_back(21.40 * eV    
171     energyConstant[index].push_back(26.20 * eV    
172     energyConstant[index].push_back(26.20 * eV    
173     energyConstant[index].push_back(27.43 * eV    
174     energyConstant[index].push_back(35.23 * eV    
175     energyConstant[index].push_back(37.67 * eV    
176     energyConstant[index].push_back(37.67 * eV    
177     energyConstant[index].push_back(39.64 * eV    
178     energyConstant[index].push_back(152.42 * e    
179     energyConstant[index].push_back(152.42 * e    
180     energyConstant[index].push_back(152.44 * e    
181     energyConstant[index].push_back(209.59 * e    
182     energyConstant[index].push_back(306.92 * e    
183     energyConstant[index].push_back(306.92 * e    
184     energyConstant[index].push_back(306.92 * e    
185     energyConstant[index].push_back(557.34 * e    
186     energyConstant[index].push_back(559.40 * e    
187     energyConstant[index].push_back(559.40 * e    
188     energyConstant[index].push_back(559.41 * e    
189     energyConstant[index].push_back(2178.05 *     
190   }                                               
191                                                   
192   for (const auto& [index, levels] : energyCon    
193     nLevels[index] = (G4int)levels.size();        
194   }                                               
195 }                                                 
196                                                   
197 G4double G4DNAPTBIonisationStructure::Ionisati    
198 {                                                 
199   size_t matNameModif = ReplaceMaterial(materi    
200                                                   
201   // check if the material exist in the map       
202   if (energyConstant.find(matNameModif) == ene    
203     std::ostringstream oss;                       
204     oss << "Material name was not found in ene    
205         << materialID;                            
206     G4Exception(                                  
207       "G4DNAPTBIonisationStructure::Ionisation    
208   }                                               
209                                                   
210   G4double ionisation = 0.;                       
211                                                   
212   if (level >= 0 && level < nLevels[matNameMod    
213                                                   
214   return ionisation;                              
215 }                                                 
216                                                   
217 G4int G4DNAPTBIonisationStructure::NumberOfLev    
218 {                                                 
219   auto matNameModif = ReplaceMaterial(material    
220                                                   
221   // check if the material exist in the map       
222   if (nLevels.find(matNameModif) == nLevels.en    
223     std::ostringstream oss;                       
224     oss << "Material name was not found in ene    
225         << matNameModif;                          
226     G4Exception(                                  
227       "G4DNAPTBIonisationStructure::NumberOfLe    
228   }                                               
229                                                   
230   return nLevels[matNameModif];                   
231 }                                                 
232                                                   
233 size_t G4DNAPTBIonisationStructure::ReplaceMat    
234 {                                                 
235   if (fpBackbone_THF != nullptr && materialID     
236     return fpTHF->GetIndex();                     
237   }                                               
238   if (fpBackbone_TMP != nullptr && materialID     
239     return fpTMP->GetIndex();                     
240   }                                               
241   if (fpAdenine_PU != nullptr && materialID ==    
242     return fpPU->GetIndex();                      
243   }                                               
244   if (fpGuanine_PU != nullptr && materialID ==    
245     return fpPU->GetIndex();                      
246   }                                               
247   if (fpThymine_PY != nullptr && materialID ==    
248     return fpPY->GetIndex();                      
249   }                                               
250   if (fpCytosine_PY != nullptr && materialID =    
251     return fpPY->GetIndex();                      
252   }                                               
253   return materialID;                              
254 }                                                 
255