Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // Author: Haifa Ben Abdelouahed 26 // Author: Haifa Ben Abdelouahed 27 // 27 // 28 // 28 // 29 // History: 29 // History: 30 // ----------- 30 // ----------- 31 // 23 Apr 2008 H. Ben Abdelouahed 1st imp 31 // 23 Apr 2008 H. Ben Abdelouahed 1st implementation 32 // 28 Apr 2008 MGP Major revision ac 32 // 28 Apr 2008 MGP Major revision according to a design iteration 33 // 21 Apr 2009 ALF Some correction for comp 33 // 21 Apr 2009 ALF Some correction for compatibility to G4VShellCrossSection 34 // and changed name to G4OrlicLiCrossSect 34 // and changed name to G4OrlicLiCrossSection 35 // 21 Mar 2011 ALF some bug fixing (Z check 35 // 21 Mar 2011 ALF some bug fixing (Z checks, ) 36 // 29 Oct 2011 ALF Changed name to G4OrlicL 36 // 29 Oct 2011 ALF Changed name to G4OrlicLiXsModel 37 // 37 // 38 // ------------------------------------------- 38 // ------------------------------------------------------------------- 39 // Class description: 39 // Class description: 40 // Low Energy Electromagnetic Physics, Cross s 40 // Low Energy Electromagnetic Physics, Cross section, proton ionisation, L shell 41 // Further documentation available from http:/ 41 // Further documentation available from http://www.ge.infn.it/geant4/lowE 42 // ------------------------------------------- 42 // ------------------------------------------------------------------- 43 43 44 #include "G4OrlicLiXsModel.hh" 44 #include "G4OrlicLiXsModel.hh" 45 45 46 #include "globals.hh" 46 #include "globals.hh" 47 #include "G4PhysicalConstants.hh" 47 #include "G4PhysicalConstants.hh" 48 #include "G4SystemOfUnits.hh" 48 #include "G4SystemOfUnits.hh" 49 #include "G4Proton.hh" 49 #include "G4Proton.hh" 50 #include "G4Exp.hh" 50 #include "G4Exp.hh" 51 51 52 //******************************************** << 53 << 54 G4OrlicLiXsModel::G4OrlicLiXsModel() 52 G4OrlicLiXsModel::G4OrlicLiXsModel() 55 { 53 { >> 54 56 transitionManager = G4AtomicTransitionManag 55 transitionManager = G4AtomicTransitionManager::Instance(); 57 } << 58 56 59 //******************************************** << 57 } 60 58 61 G4OrlicLiXsModel::~G4OrlicLiXsModel() 59 G4OrlicLiXsModel::~G4OrlicLiXsModel() 62 {;} << 60 { >> 61 >> 62 } 63 63 64 //this L-CrossSection calculation method is do 64 //this L-CrossSection calculation method is done according to 65 //I.ORLIC, C.H.SOW and S.M.TANG,International 65 //I.ORLIC, C.H.SOW and S.M.TANG,International Journal of PIXE.Vol.4(1994) 217-230 66 66 >> 67 67 //******************************************** 68 //******************************************************************************** >> 69 68 G4double G4OrlicLiXsModel::CalculateL1CrossSec 70 G4double G4OrlicLiXsModel::CalculateL1CrossSection(G4int zTarget, G4double energyIncident) 69 71 70 { 72 { 71 73 72 if ( zTarget < 41 )//fixed: no control on z! << 74 if ( /*(energyIncident < 0.1*MeV || energyIncident > 10*MeV) ||*/ zTarget < 41 )//fixed: no control on z! >> 75 73 { 76 { >> 77 //G4cout << "WARNING: L1 Cross-Section exist only for ZTarget between 41 and 92, zero returned " << G4endl; >> 78 //G4cout << "energyIncident(MeV): " << energyIncident/MeV << G4endl; >> 79 //G4cout << "zTarget: " << zTarget << G4endl; 74 return 0; 80 return 0; 75 } 81 } 76 82 >> 83 >> 84 /* >> 85 G4double massIncident; >> 86 G4Proton* aProtone = G4Proton::Proton(); >> 87 massIncident = aProtone->GetPDGMass(); >> 88 */ >> 89 77 G4double l1BindingEnergy = transitionManager 90 G4double l1BindingEnergy = transitionManager->Shell(zTarget,1)->BindingEnergy()/keV; >> 91 // G4double l1BindingEnergy = (transitionManager->Shell(zTarget,1)->BindingEnergy())/keV; >> 92 78 G4double lamda = 1836.109; //massIncident/e 93 G4double lamda = 1836.109; //massIncident/electron_mass_c2; 79 94 80 G4double normalizedEnergy = (energyIncident 95 G4double normalizedEnergy = (energyIncident/keV)/(lamda*l1BindingEnergy); 81 96 82 G4double x = std::log(normalizedEnergy); 97 G4double x = std::log(normalizedEnergy); 83 98 84 G4double a0 = 0.; 99 G4double a0 = 0.; 85 G4double a1 = 0.; 100 G4double a1 = 0.; 86 G4double a2 = 0.; 101 G4double a2 = 0.; 87 G4double a3 = 0.; 102 G4double a3 = 0.; 88 G4double a4 = 0.; 103 G4double a4 = 0.; 89 G4double a5 = 0.; 104 G4double a5 = 0.; 90 G4double a6 = 0.; 105 G4double a6 = 0.; 91 G4double a7 = 0.; 106 G4double a7 = 0.; 92 G4double a8 = 0.; 107 G4double a8 = 0.; 93 G4double a9 = 0.; 108 G4double a9 = 0.; 94 109 >> 110 95 if ( (zTarget>=41 && zTarget<=50) && (norma 111 if ( (zTarget>=41 && zTarget<=50) && (normalizedEnergy>=0.013 && normalizedEnergy<=1) ) 96 { 112 { >> 113 >> 114 //G4cout << "Energy1 (keV) = " << normalizedEnergy * lamda*l1BindingEnergy << G4endl; //debug >> 115 97 a0=11.274881; 116 a0=11.274881; 98 a1=-0.187401; 117 a1=-0.187401; 99 a2=-0.943341; 118 a2=-0.943341; 100 a3=-1.47817; 119 a3=-1.47817; 101 a4=-1.282343; 120 a4=-1.282343; 102 a5=-0.386544; 121 a5=-0.386544; 103 a6=-0.037932; 122 a6=-0.037932; 104 a7=0.; 123 a7=0.; 105 a8=0.; 124 a8=0.; 106 a9=0.; 125 a9=0.; 107 } 126 } >> 127 108 else if ( (zTarget>=51 && zTarget<=60) && ( 128 else if ( (zTarget>=51 && zTarget<=60) && (normalizedEnergy>=0.012 && normalizedEnergy<=0.95)) 109 { 129 { >> 130 >> 131 // G4cout << "Energy2 (keV) = " << normalizedEnergy * lamda*l1BindingEnergy << G4endl; //debug >> 132 110 a0=11.242637; 133 a0=11.242637; 111 a1=-0.162515; 134 a1=-0.162515; 112 a2=1.035774; 135 a2=1.035774; 113 a3=3.970908; 136 a3=3.970908; 114 a4=3.968233; 137 a4=3.968233; 115 a5=1.655714; 138 a5=1.655714; 116 a6=0.058885; 139 a6=0.058885; 117 a7=-0.155743; 140 a7=-0.155743; 118 a8=-0.042228; 141 a8=-0.042228; 119 a9=-0.003371; 142 a9=-0.003371; 120 } 143 } >> 144 121 else if ( (zTarget>=61 && zTarget<=70) && ( 145 else if ( (zTarget>=61 && zTarget<=70) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.6) ) 122 { 146 { >> 147 >> 148 // G4cout << "Energy3 (keV) = " << normalizedEnergy * lamda*l1BindingEnergy << G4endl; //debug >> 149 123 a0=6.476722; 150 a0=6.476722; 124 a1=-25.804787; 151 a1=-25.804787; 125 a2=-54.061629; 152 a2=-54.061629; 126 a3=-56.684589; 153 a3=-56.684589; 127 a4=-33.223367; 154 a4=-33.223367; 128 a5=-11.034979; 155 a5=-11.034979; 129 a6=-2.042851; 156 a6=-2.042851; 130 a7=-0.194075; 157 a7=-0.194075; 131 a8=-0.007252; 158 a8=-0.007252; 132 a9=0.; 159 a9=0.; 133 } 160 } 134 else if ( (zTarget>=71 && zTarget<=80) && ( 161 else if ( (zTarget>=71 && zTarget<=80) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.45) ) 135 { 162 { >> 163 >> 164 // G4cout << "Energy4 (keV) = " << normalizedEnergy * lamda*l1BindingEnergy << G4endl; //debug >> 165 136 a0=12.776794; 166 a0=12.776794; 137 a1=6.562907; 167 a1=6.562907; 138 a2=10.158703; 168 a2=10.158703; 139 a3=7.432592; 169 a3=7.432592; 140 a4=2.332036; 170 a4=2.332036; 141 a5=0.317946; 171 a5=0.317946; 142 a6=0.014479; 172 a6=0.014479; 143 a7=0.; 173 a7=0.; 144 a8=0.; 174 a8=0.; 145 a9=0.; 175 a9=0.; 146 } 176 } 147 else if ( (zTarget>=81 && zTarget<=92) && ( 177 else if ( (zTarget>=81 && zTarget<=92) && (normalizedEnergy>=0.008 && normalizedEnergy<=0.3) ) 148 { 178 { >> 179 >> 180 // G4cout << "Energy5 (keV) = " << normalizedEnergy * lamda*l1BindingEnergy << G4endl; //debug >> 181 149 a0=28.243087; 182 a0=28.243087; 150 a1=50.199585; 183 a1=50.199585; 151 a2=58.281684; 184 a2=58.281684; 152 a3=34.130538; 185 a3=34.130538; 153 a4=10.268531; 186 a4=10.268531; 154 a5=1.525302; 187 a5=1.525302; 155 a6=0.08835; 188 a6=0.08835; 156 a7=0.; 189 a7=0.; 157 a8=0.; 190 a8=0.; 158 a9=0.; 191 a9=0.; 159 } 192 } 160 else {return 0;} 193 else {return 0;} 161 194 162 195 163 G4double analyticalFunction = a0 + (a1*x)+(a << 196 G4double analyticalFunction = a0 + (a1*x)+(a2*x*x)+(a3*std::pow(x,3))+(a4*std::pow(x,4))+(a5*std::pow(x,5))+(a6*std::pow(x,6))+ 164 (a4*std::pow(x,4))+(a5*std::pow(x,5))+(a6* << 197 (a7*std::pow(x,7))+(a8*std::pow(x,8))+(a9*std::pow(x,9)); 165 (a7*std::pow(x,7))+(a8*std::pow(x,8))+(a9* << 198 >> 199 166 200 167 G4double L1crossSection = G4Exp(analyticalF 201 G4double L1crossSection = G4Exp(analyticalFunction)/(l1BindingEnergy*l1BindingEnergy); 168 202 >> 203 169 if (L1crossSection >= 0) { 204 if (L1crossSection >= 0) { 170 return L1crossSection * barn; 205 return L1crossSection * barn; 171 } 206 } 172 else {return 0;} 207 else {return 0;} >> 208 173 } 209 } 174 210 175 //******************************************** << 211 //***************************************************************************************************************************************** >> 212 176 213 177 G4double G4OrlicLiXsModel::CalculateL2CrossSec 214 G4double G4OrlicLiXsModel::CalculateL2CrossSection(G4int zTarget, G4double energyIncident) 178 215 179 { 216 { 180 if ( zTarget < 41) //fixed: no control on z! << 217 >> 218 >> 219 if ( /*(energyIncident < 0.1*MeV || energyIncident > 10*MeV) ||*/zTarget < 41) //fixed: no control on z!) >> 220 181 { 221 { >> 222 //G4cout << "WARNING: L2 Cross-Section exist only for ZTarget between 41 and 92, zero returned " << G4endl; >> 223 // G4cout << "energyIncident(MeV): " << energyIncident/MeV << G4endl; >> 224 //G4cout << "zTarget: " << zTarget << G4endl; 182 return 0; 225 return 0; 183 } 226 } 184 227 >> 228 >> 229 185 G4double massIncident; 230 G4double massIncident; >> 231 186 G4Proton* aProtone = G4Proton::Proton(); 232 G4Proton* aProtone = G4Proton::Proton(); 187 233 188 massIncident = aProtone->GetPDGMass(); 234 massIncident = aProtone->GetPDGMass(); 189 235 190 G4double L2crossSection; 236 G4double L2crossSection; 191 237 192 G4double l2BindingEnergy = (transitionManage 238 G4double l2BindingEnergy = (transitionManager->Shell(zTarget,2)->BindingEnergy())/keV; >> 239 193 G4double lamda = massIncident/electron_mass 240 G4double lamda = massIncident/electron_mass_c2; >> 241 194 G4double normalizedEnergy = (energyIncident 242 G4double normalizedEnergy = (energyIncident/keV)/(lamda*l2BindingEnergy); >> 243 195 G4double x = std::log(normalizedEnergy); 244 G4double x = std::log(normalizedEnergy); 196 245 197 G4double a0 = 0.; 246 G4double a0 = 0.; 198 G4double a1 = 0.; 247 G4double a1 = 0.; 199 G4double a2 = 0.; 248 G4double a2 = 0.; 200 G4double a3 = 0.; 249 G4double a3 = 0.; 201 G4double a4 = 0.; 250 G4double a4 = 0.; 202 G4double a5 = 0.; 251 G4double a5 = 0.; 203 252 204 if ( (zTarget>=41 && zTarget<=50) && (norm 253 if ( (zTarget>=41 && zTarget<=50) && (normalizedEnergy>=0.015 && normalizedEnergy<=1.5)) 205 { 254 { 206 a0=11.194798; 255 a0=11.194798; 207 a1=0.178807; 256 a1=0.178807; 208 a2=-0.449865; 257 a2=-0.449865; 209 a3=-0.063528; 258 a3=-0.063528; 210 a4=-0.015364; 259 a4=-0.015364; 211 a5=0.; 260 a5=0.; 212 } 261 } >> 262 213 else if ( (zTarget>=51 && zTarget<=60) && ( 263 else if ( (zTarget>=51 && zTarget<=60) && (normalizedEnergy>=0.012 && normalizedEnergy<=1.0)) 214 { 264 { 215 a0=11.241409; 265 a0=11.241409; 216 a1=0.149635; 266 a1=0.149635; 217 a2=-0.633269; 267 a2=-0.633269; 218 a3=-0.17834; 268 a3=-0.17834; 219 a4=-0.034743; 269 a4=-0.034743; 220 a5=0.006474; // a little bit better if t 270 a5=0.006474; // a little bit better if this is zero (respect to ecpssr) >> 271 221 } 272 } >> 273 222 else if ( (zTarget>=61 && zTarget<=70) && ( 274 else if ( (zTarget>=61 && zTarget<=70) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.65)) 223 { 275 { 224 a0=11.247424; 276 a0=11.247424; 225 a1=0.203051; 277 a1=0.203051; 226 a2=-0.219083; 278 a2=-0.219083; 227 a3=0.164514; 279 a3=0.164514; 228 a4=0.058692; 280 a4=0.058692; 229 a5=0.007866; 281 a5=0.007866; 230 } 282 } 231 else if ( (zTarget>=71 && zTarget<=80) && ( 283 else if ( (zTarget>=71 && zTarget<=80) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.47)) 232 { 284 { 233 a0=11.229924; 285 a0=11.229924; 234 a1=-0.087241; 286 a1=-0.087241; 235 a2=-0.753908; 287 a2=-0.753908; 236 a3=-0.181546; 288 a3=-0.181546; 237 a4=-0.030406; 289 a4=-0.030406; 238 a5=0.; 290 a5=0.; 239 } 291 } 240 else if ( (zTarget>=81 && zTarget<=92) && ( 292 else if ( (zTarget>=81 && zTarget<=92) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.35)) 241 { 293 { 242 a0=11.586671; 294 a0=11.586671; 243 a1=0.730838; 295 a1=0.730838; 244 a2=-0.056713; 296 a2=-0.056713; 245 a3=0.053262; 297 a3=0.053262; 246 a4=-0.003672; 298 a4=-0.003672; 247 a5=0.; 299 a5=0.; 248 } 300 } 249 else {return 0;} 301 else {return 0;} 250 302 251 G4double analyticalFunction = a0 + (a1*x)+(a << 303 G4double analyticalFunction = a0 + (a1*x)+(a2*x*x)+(a3*std::pow(x,3))+(a4*std::pow(x,4))+(a5*std::pow(x,5)); 252 (a4*std::pow(x,4))+(a5*std::pow(x,5)); << 304 253 305 254 L2crossSection = G4Exp(analyticalFunction)/ 306 L2crossSection = G4Exp(analyticalFunction)/(l2BindingEnergy*l2BindingEnergy); 255 307 >> 308 >> 309 256 if (L2crossSection >= 0) { 310 if (L2crossSection >= 0) { 257 return L2crossSection * barn; 311 return L2crossSection * barn; 258 } 312 } 259 else {return 0;} 313 else {return 0;} >> 314 260 } 315 } 261 316 262 //******************************************** << 317 //***************************************************************************************************************************************** >> 318 263 319 264 G4double G4OrlicLiXsModel::CalculateL3CrossSec 320 G4double G4OrlicLiXsModel::CalculateL3CrossSection(G4int zTarget, G4double energyIncident) 265 321 266 { 322 { 267 323 268 if ( zTarget < 41) //fixed: no control on z! << 324 if ( /*(energyIncident < 0.1*MeV || energyIncident > 10*MeV) ||*/zTarget < 41) //fixed: no control on z! >> 325 269 { 326 { >> 327 //G4cout << "WARNING: L3 Cross-Section exist only for ZTarget between 41 and 92, zero returned " << G4endl; >> 328 //G4cout << "energyIncident(MeV): " << energyIncident/MeV << G4endl; >> 329 //G4cout << "zTarget: " << zTarget << G4endl; 270 return 0; 330 return 0; 271 } 331 } 272 332 273 G4double massIncident; 333 G4double massIncident; >> 334 274 G4Proton* aProtone = G4Proton::Proton(); 335 G4Proton* aProtone = G4Proton::Proton(); >> 336 275 massIncident = aProtone->GetPDGMass(); 337 massIncident = aProtone->GetPDGMass(); 276 338 >> 339 277 G4double L3crossSection; 340 G4double L3crossSection; >> 341 278 G4double l3BindingEnergy = (transitionManage 342 G4double l3BindingEnergy = (transitionManager->Shell(zTarget,3)->BindingEnergy())/keV; 279 343 >> 344 280 G4double lamda = massIncident/electron_mass 345 G4double lamda = massIncident/electron_mass_c2; >> 346 281 G4double normalizedEnergy = (energyIncident 347 G4double normalizedEnergy = (energyIncident/keV)/(lamda*l3BindingEnergy); >> 348 282 G4double x = std::log(normalizedEnergy); 349 G4double x = std::log(normalizedEnergy); 283 350 >> 351 284 G4double a0 = 0.; 352 G4double a0 = 0.; 285 G4double a1 = 0.; 353 G4double a1 = 0.; 286 G4double a2 = 0.; 354 G4double a2 = 0.; 287 G4double a3 = 0.; 355 G4double a3 = 0.; 288 G4double a4 = 0.; 356 G4double a4 = 0.; 289 G4double a5 = 0.; 357 G4double a5 = 0.; 290 358 291 if ( (zTarget>=41 && zTarget<=50 ) && (norm 359 if ( (zTarget>=41 && zTarget<=50 ) && (normalizedEnergy>=0.015 && normalizedEnergy<=1.5)) 292 { 360 { 293 a0=11.91837; 361 a0=11.91837; 294 a1=0.03064; 362 a1=0.03064; 295 a2=-0.657644; 363 a2=-0.657644; 296 a3=-0.14532; 364 a3=-0.14532; 297 a4=-0.026059; 365 a4=-0.026059; 298 //a5=-0.044735; Correction to Orlic mode 366 //a5=-0.044735; Correction to Orlic model as explained in 299 //Abdelhwahed H Incerti S and Mantero A 367 //Abdelhwahed H Incerti S and Mantero A 2009 Nucl. Instrum. Meth.B 267 37 300 } 368 } >> 369 301 else if ( (zTarget>=51 && zTarget<=60 ) && 370 else if ( (zTarget>=51 && zTarget<=60 ) && (normalizedEnergy>=0.013 && normalizedEnergy<=1.1)) 302 { 371 { 303 a0=11.909485; 372 a0=11.909485; 304 a1=0.15918; 373 a1=0.15918; 305 a2=-0.588004; 374 a2=-0.588004; 306 a3=-0.159466; 375 a3=-0.159466; 307 a4=-0.033184; 376 a4=-0.033184; 308 } 377 } >> 378 309 else if ( (zTarget>=61 && zTarget<=70 ) && 379 else if ( (zTarget>=61 && zTarget<=70 ) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.67)) 310 { 380 { 311 a0=11.878472; 381 a0=11.878472; 312 a1=-0.137007; 382 a1=-0.137007; 313 a2=-0.959475; 383 a2=-0.959475; 314 a3=-0.316505; 384 a3=-0.316505; 315 a4=-0.054154; 385 a4=-0.054154; 316 } 386 } 317 else if ( (zTarget>=71 && zTarget<=80 ) && 387 else if ( (zTarget>=71 && zTarget<=80 ) && (normalizedEnergy>=0.013 && normalizedEnergy<=0.5)) 318 { 388 { 319 a0=11.802538; 389 a0=11.802538; 320 a1=-0.371796; 390 a1=-0.371796; 321 a2=-1.052238; 391 a2=-1.052238; 322 a3=-0.28766; 392 a3=-0.28766; 323 a4=-0.042608; 393 a4=-0.042608; 324 } 394 } 325 else if ( (zTarget>=81 && zTarget<=92 ) && 395 else if ( (zTarget>=81 && zTarget<=92 ) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.35)) 326 { 396 { 327 a0=11.423712; 397 a0=11.423712; 328 a1=-1.428823; 398 a1=-1.428823; 329 a2=-1.946979; 399 a2=-1.946979; 330 a3=-0.585198; 400 a3=-0.585198; 331 a4=-0.076467; 401 a4=-0.076467; 332 } 402 } 333 else {return 0;} 403 else {return 0;} 334 404 335 G4double analyticalFunction = a0 + (a1*x)+(a << 405 336 (a3*std::pow(x,3))+(a4*std::pow(x,4))+(a5* << 406 G4double analyticalFunction = a0 + (a1*x)+(a2*x*x)+(a3*std::pow(x,3))+(a4*std::pow(x,4))+(a5*std::pow(x,5)); >> 407 337 408 338 L3crossSection = G4Exp(analyticalFunction)/ 409 L3crossSection = G4Exp(analyticalFunction)/(l3BindingEnergy*l3BindingEnergy); 339 410 >> 411 340 if (L3crossSection >= 0) { 412 if (L3crossSection >= 0) { 341 return L3crossSection * barn; 413 return L3crossSection * barn; 342 } 414 } 343 else {return 0;} 415 else {return 0;} >> 416 >> 417 344 } 418 } 345 419