58 G4cout <<
"Dingfelder charge increase model is constructed " <<
G4endl;
80 G4cout <<
"Calling G4DNADingfelderChargeIncreaseModel::Initialise()"
112 if (particle==hydrogenDef)
118 if (particle==alphaPlusDef)
124 if (particle==heliumDef)
177 G4cout <<
"Dingfelder charge increase model is initialized " <<
G4endl
205 <<
"Calling CrossSectionPerVolume() of G4DNADingfelderChargeIncreaseModel"
215 particleDefinition != instance->
GetIon(
"hydrogen")
217 particleDefinition != instance->
GetIon(
"alpha+")
219 particleDefinition != instance->
GetIon(
"helium")
232 std::map< G4String,G4double,std::less<G4String> >::iterator pos1;
237 lowLim = pos1->second;
240 std::map< G4String,G4double,std::less<G4String> >::iterator pos2;
245 highLim = pos2->second;
248 if (k >= lowLim && k <= highLim)
251 if (particleDefinition == instance->
GetIon(
"hydrogen"))
263 G4double sigmal = temp * cc * (std::pow(x,dd));
264 G4double sigmah = temp * (aa * std::log(1.0 + x) +
bb) / x;
265 totalCrossSection = 1.0/(1.0/sigmal + 1.0/sigmah) *
m*
m;
269 totalCrossSection =
Sum(k,particleDefinition);
275 G4cout <<
"__________________________________" <<
G4endl;
276 G4cout <<
"G4DNADingfelderChargeIncreaseModel - XS INFO START" <<
G4endl;
277 G4cout <<
"Kinetic energy(eV)=" << k/
eV <<
" particle : " << particleName <<
G4endl;
278 G4cout <<
"Cross section per water molecule (cm^2)=" << totalCrossSection/
cm/
cm <<
G4endl;
279 G4cout <<
"Cross section per water molecule (cm^-1)=" << totalCrossSection*waterDensity/(1./
cm) << G4endl;
282 G4cout <<
"G4DNADingfelderChargeIncreaseModel - XS INFO END" <<
G4endl;
285 return totalCrossSection*waterDensity;
302 <<
"Calling SampleSecondaries() of G4DNADingfelderChargeIncreaseModel"
339 G4Exception(
"G4DNADingfelderChargeIncreaseModel::SampleSecondaries",
"em0004",
347 fvect->push_back(dp);
362 G4int finalStateIndex)
368 if (particleDefinition == instance->
GetIon(
"hydrogen"))
371 if (particleDefinition == instance->
GetIon(
"alpha+"))
374 if (particleDefinition == instance->
GetIon(
"helium"))
376 if (finalStateIndex == 0)
387 G4int finalStateIndex)
391 if (particleDefinition == instance->
GetIon(
"hydrogen"))
394 if (particleDefinition == instance->
GetIon(
"alpha+"))
395 return instance->
GetIon(
"alpha++");
397 if (particleDefinition == instance->
GetIon(
"helium"))
399 if (finalStateIndex == 0)
400 return instance->
GetIon(
"alpha+");
401 return instance->
GetIon(
"alpha++");
410 G4int finalStateIndex)
414 if (particleDefinition == instance->
GetIon(
"hydrogen"))
417 if (particleDefinition == instance->
GetIon(
"alpha+"))
424 if (particleDefinition == instance->
GetIon(
"helium"))
429 if (finalStateIndex == 0)
431 return (54.509 + 24.587) *
eV;
443 G4int particleTypeIndex = 0;
447 if (particleDefinition == instance->
GetIon(
"alpha+"))
448 particleTypeIndex = 0;
450 if (particleDefinition == instance->
GetIon(
"helium"))
451 particleTypeIndex = 1;
472 if (
x1[index][particleTypeIndex] <
x0[index][particleTypeIndex])
483 x1[index][particleTypeIndex] =
x0[index][particleTypeIndex]
484 + std::pow((
a0[index][particleTypeIndex] -
a1[index][particleTypeIndex])
485 / (
c0[index][particleTypeIndex]
486 *
d0[index][particleTypeIndex]),
487 1. / (
d0[index][particleTypeIndex] - 1.));
488 b1[index][particleTypeIndex] = (
a0[index][particleTypeIndex]
489 -
a1[index][particleTypeIndex]) *
x1[index][particleTypeIndex]
490 +
b0[index][particleTypeIndex]
491 -
c0[index][particleTypeIndex]
492 * std::pow(
x1[index][particleTypeIndex]
493 -
x0[index][particleTypeIndex],
494 d0[index][particleTypeIndex]);
500 if (x <
x0[index][particleTypeIndex])
501 y =
a0[index][particleTypeIndex] * x +
b0[index][particleTypeIndex];
502 else if (x <
x1[index][particleTypeIndex])
503 y =
a0[index][particleTypeIndex] * x + b0[index][particleTypeIndex]
504 -
c0[index][particleTypeIndex]
505 * std::pow(x -
x0[index][particleTypeIndex],
506 d0[index][particleTypeIndex]);
508 y =
a1[index][particleTypeIndex] * x +
b1[index][particleTypeIndex];
510 return f0[index][particleTypeIndex] * std::pow(10., y) *
m *
m;
519 G4int particleTypeIndex = 0;
523 if (particleDefinition == instance->
GetIon(
"hydrogen"))
526 if (particleDefinition == instance->
GetIon(
"alpha+"))
527 particleTypeIndex = 0;
529 if (particleDefinition == instance->
GetIon(
"helium"))
530 particleTypeIndex = 1;
551 if (values[i] > value)
567 G4int particleTypeIndex = 0;
571 if (particleDefinition == instance->
GetIon(
"alpha+"))
572 particleTypeIndex = 0;
574 if (particleDefinition == instance->
GetIon(
"helium"))
575 particleTypeIndex = 1;
584 return totalCrossSection;