59 G4cout <<
"Dingfelder charge decrease model is constructed " <<
G4endl;
82 G4cout <<
"Calling G4DNADingfelderChargeDecreaseModel::Initialise()"
114 if (particle==protonDef)
120 if (particle==alphaPlusPlusDef)
126 if (particle==alphaPlusDef)
148 f0[0][1]=1.;
a0[0][1]=0.95;
189 G4cout <<
"Dingfelder charge decrease model is initialized " <<
G4endl
218 <<
"Calling CrossSectionPerVolume() of G4DNADingfelderChargeDecreaseModel"
230 particleDefinition != instance->
GetIon(
"alpha++")
232 particleDefinition != instance->
GetIon(
"alpha+")
245 std::map< G4String,G4double,std::less<G4String> >::iterator pos1;
250 lowLim = pos1->second;
253 std::map< G4String,G4double,std::less<G4String> >::iterator pos2;
258 highLim = pos2->second;
261 if (k >= lowLim && k <= highLim)
263 crossSection =
Sum(k,particleDefinition);
268 G4cout <<
"_______________________________________" <<
G4endl;
269 G4cout <<
"G4DNADingfelderChargeDecreaeModel" <<
G4endl;
270 G4cout <<
"Kinetic energy(eV)=" << k/
eV <<
"particle :" << particleName <<
G4endl;
271 G4cout <<
"Cross section per water molecule (cm^2)=" << crossSection/
cm/
cm <<
G4endl;
272 G4cout <<
"Cross section per water molecule (cm^-1)=" << crossSection*
273 waterDensity/(1./
cm) << G4endl;
277 return crossSection*waterDensity;
294 <<
"Calling SampleSecondaries() of G4DNADingfelderChargeDecreaseModel"
315 - waterBindingEnergy + outgoingParticleBindingEnergy;
322 - waterBindingEnergy + outgoingParticleBindingEnergy;
328 G4Exception(
"G4DNADingfelderChargeDecreaseModel::SampleSecondaries",
"em0004",
341 + waterBindingEnergy - outgoingParticleBindingEnergy);
344 + waterBindingEnergy - outgoingParticleBindingEnergy);
350 fvect->push_back(dp);
362 G4int finalStateIndex)
371 if (particleDefinition == instance->
GetIon(
"alpha++"))
373 if (finalStateIndex == 0)
378 if (particleDefinition == instance->
GetIon(
"alpha+"))
387 G4int finalStateIndex)
392 return instance->
GetIon(
"hydrogen");
394 if (particleDefinition == instance->
GetIon(
"alpha++"))
396 if (finalStateIndex == 0)
397 return instance->
GetIon(
"alpha+");
398 return instance->
GetIon(
"helium");
401 if (particleDefinition == instance->
GetIon(
"alpha+"))
402 return instance->
GetIon(
"helium");
410 G4int finalStateIndex)
421 if (particleDefinition == instance->
GetIon(
"alpha++"))
429 if (finalStateIndex == 0)
432 return 10.79 * 2 *
eV;
435 if (particleDefinition == instance->
GetIon(
"alpha+"))
452 G4int finalStateIndex)
459 if (particleDefinition == instance->
GetIon(
"alpha++"))
464 if (finalStateIndex == 0)
467 return (54.509 + 24.587) *
eV;
470 if (particleDefinition == instance->
GetIon(
"alpha+"))
487 G4int particleTypeIndex = 0;
492 particleTypeIndex = 0;
494 if (particleDefinition == instance->
GetIon(
"alpha++"))
495 particleTypeIndex = 1;
497 if (particleDefinition == instance->
GetIon(
"alpha+"))
498 particleTypeIndex = 2;
518 if (
x1[index][particleTypeIndex] <
x0[index][particleTypeIndex])
528 x1[index][particleTypeIndex] =
x0[index][particleTypeIndex]
529 + std::pow((
a0[index][particleTypeIndex] -
a1[index][particleTypeIndex])
530 / (
c0[index][particleTypeIndex]
531 *
d0[index][particleTypeIndex]),
532 1. / (
d0[index][particleTypeIndex] - 1.));
533 b1[index][particleTypeIndex] = (
a0[index][particleTypeIndex]
534 -
a1[index][particleTypeIndex]) *
x1[index][particleTypeIndex]
535 +
b0[index][particleTypeIndex]
536 -
c0[index][particleTypeIndex]
537 * std::pow(
x1[index][particleTypeIndex]
538 -
x0[index][particleTypeIndex],
539 d0[index][particleTypeIndex]);
545 if (x <
x0[index][particleTypeIndex])
546 y =
a0[index][particleTypeIndex] * x +
b0[index][particleTypeIndex];
547 else if (x <
x1[index][particleTypeIndex])
548 y =
a0[index][particleTypeIndex] * x + b0[index][particleTypeIndex]
549 -
c0[index][particleTypeIndex]
550 * std::pow(x -
x0[index][particleTypeIndex],
551 d0[index][particleTypeIndex]);
553 y =
a1[index][particleTypeIndex] * x +
b1[index][particleTypeIndex];
555 return f0[index][particleTypeIndex] * std::pow(10., y) *
m *
m;
562 G4int particleTypeIndex = 0;
567 particleTypeIndex = 0;
569 if (particleDefinition == instance->
GetIon(
"alpha++"))
570 particleTypeIndex = 1;
572 if (particleDefinition == instance->
GetIon(
"alpha+"))
573 particleTypeIndex = 2;
594 if (values[i] > value)
610 G4int particleTypeIndex = 0;
615 particleTypeIndex = 0;
617 if (particleDefinition == instance->
GetIon(
"alpha++"))
618 particleTypeIndex = 1;
620 if (particleDefinition == instance->
GetIon(
"alpha+"))
621 particleTypeIndex = 2;
630 return totalCrossSection;