62 G4cout <<
"Miller & Green excitation model is constructed " <<
G4endl;
83 G4cout <<
"Calling G4DNAMillerGreenExcitationModel::Initialise()" <<
G4endl;
168 if (particle==protonDef)
174 if (particle==hydrogenDef)
180 if (particle==alphaPlusPlusDef)
186 if (particle==alphaPlusDef)
192 if (particle==heliumDef)
205 G4cout <<
"Miller & Green excitation model is initialized " << G4endl
231 G4cout <<
"Calling CrossSectionPerVolume() of G4DNAMillerGreenExcitationModel" <<
G4endl;
241 particleDefinition != instance->
GetIon(
"hydrogen")
243 particleDefinition != instance->
GetIon(
"alpha++")
245 particleDefinition != instance->
GetIon(
"alpha+")
247 particleDefinition != instance->
GetIon(
"helium")
260 std::map< G4String,G4double,std::less<G4String> >::iterator pos1;
265 lowLim = pos1->second;
268 std::map< G4String,G4double,std::less<G4String> >::iterator pos2;
273 highLim = pos2->second;
276 if (k >= lowLim && k <= highLim)
278 crossSection =
Sum(k,particleDefinition);
333 G4cout <<
"__________________________________" <<
G4endl;
334 G4cout <<
"G4DNAMillerGreenExcitationModel - XS INFO START" <<
G4endl;
336 G4cout <<
"Cross section per water molecule (cm^2)=" << crossSection/
cm/
cm <<
G4endl;
337 G4cout <<
"Cross section per water molecule (cm^-1)=" << crossSection*waterDensity/(1./
cm) << G4endl;
339 G4cout <<
"G4DNAMillerGreenExcitationModel - XS INFO END" <<
G4endl;
342 return crossSection*waterDensity;
355 G4cout <<
"Calling SampleSecondaries() of G4DNAMillerGreenExcitationModel" <<
G4endl;
363 G4double excitationEnergy = excitation[level];
367 if (!
statCode) newEnergy = particleEnergy0 - excitationEnergy;
369 else newEnergy = particleEnergy0;
379 level, theIncomingTrack);
418 const G4double omegaj[]={0.85, 0.88, 0.88, 0.78, 0.78};
423 G4int particleTypeIndex = 0;
428 if (particleDefinition == instance->
GetIon(
"hydrogen")) particleTypeIndex=0;
429 if (particleDefinition == instance->
GetIon(
"alpha++")) particleTypeIndex=1;
430 if (particleDefinition == instance->
GetIon(
"alpha+")) particleTypeIndex=2;
431 if (particleDefinition == instance->
GetIon(
"helium")) particleTypeIndex=3;
437 if (tCorrected < Eliq[excitationLevel])
return 0;
443 numerator = std::pow(z * aj[excitationLevel], omegaj[excitationLevel]) *
444 std::pow(tCorrected - Eliq[excitationLevel], nu);
448 if (particleDefinition == instance->
GetIon(
"hydrogen"))
449 numerator = std::pow(z * 0.75*aj[excitationLevel], omegaj[excitationLevel]) *
450 std::pow(tCorrected - Eliq[excitationLevel], nu);
454 power = omegaj[excitationLevel] + nu;
457 denominator = std::pow(jj[excitationLevel], power) + std::pow(tCorrected, power);
465 if (particleDefinition == instance->
GetIon(
"hydrogen")) zEff = 1.;
467 G4double cross = sigma0 * zEff * zEff * numerator / denominator;
479 std::deque<G4double>
values;
484 if ( particle == instance->
GetIon(
"alpha++") ||
486 particle == instance->
GetIon(
"hydrogen") ||
487 particle == instance->
GetIon(
"alpha+") ||
488 particle == instance->
GetIon(
"helium")
495 values.push_front(partial);
506 if (values[i] > value)
return i;
567 return totalCrossSection;
580 G4double r =
R(t, energyTransferred, _slaterEffectiveCharge, shellNumber);
597 G4double r =
R(t, energyTransferred, _slaterEffectiveCharge, shellNumber);
614 G4double r =
R(t, energyTransferred, _slaterEffectiveCharge, shellNumber);
615 G4double value = 1. -
G4Exp(-2 * r) * (((( 2./3. * r + 4./3.) * r + 2.) * r + 2.) * r + 1.);
634 G4double value = std::sqrt ( 2. * tElectron / H ) / ( energyTransferred / H ) * (_slaterEffectiveCharge/shellNumber);