163 MaxExcitationNumber (1.
e6),
165 nmaxDirectFluct (100),
170 MinKineticEnergy(0.0)
312 for (
size_t J=0; J<numOfCouples; J++)
329 Value += (*pointer)[J]->
330 GetValue(LowEdgeEnergy,isOutRange) ;
411 for (
size_t J=0; J<numOfCouples; J++)
460 for (
size_t J=0; J<numOfCouples; J++)
498 G4double de = (energy2 - energy1) * del ;
501 for (
G4int i=1; i<
n; i++) {
504 range += 0.5*de*(1.0/dedx1 + 1.0/dedx2);
522 G4double tlim=5.*
keV,parlowen=0.4,ppar=0.5-parlowen ;
524 G4double losslim,clim,taulim,timelim,
525 LowEdgeEnergy,tau,Value ;
530 losslim = physicsVector->
GetValue(tlim,isOut);
546 Value = clim*std::exp(ppar*std::log(tau/taulim)) ;
558 }
while (tau<=taulim) ;
583 G4double tlim=5.*
keV,parlowen=0.4,ppar=0.5-parlowen ;
585 G4double losslim,clim,taulim,timelim,
586 LowEdgeEnergy,tau,Value ;
591 losslim = physicsVector->
GetValue(tlim,isOut);
607 Value = clim*std::exp(ppar*std::log(tau/taulim)) ;
619 }
while (tau<=taulim) ;
642 G4double dtau,Value,taui,ti,lossi,ci;
647 for (
G4int i=0; i<=nbin; i++)
651 lossi = physicsVector->
GetValue(ti,isOut);
674 G4double ltt,dltau,Value,ui,taui,ti,lossi,ci;
680 for (
G4int i=0; i<=nbin; i++)
682 ui = ltaulow+dltau*i;
685 lossi = physicsVector->
GetValue(ti,isOut);
695 Value += ci*taui/lossi;
708 G4double ltt,dltau,Value,ui,taui,ti,lossi,ci;
714 for (
G4int i=0; i<=nbin; i++)
716 ui = ltaulow+dltau*i;
719 lossi = physicsVector->
GetValue(ti,isOut);
742 G4double ltt,dltau,Value,ui,taui,ti,lossi,ci;
748 for (
G4int i=0; i<=nbin; i++)
750 ui = ltaulow+dltau*i;
753 lossi = physicsVector->
GetValue(ti,isOut);
800 G4double w1 = RTable/
w , w2 = -RTable*R1/
w , w3 = R2/
w ;
801 G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ;
805 for (
G4int J=0; J<numOfCouples; J++)
816 Ri = rangeVector->
GetValue(Ti,isOut) ;
833 Rim = rangeVector->
GetValue(Tim,isOut);
840 Rip = rangeVector->
GetValue(Tip,isOut);
842 Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ;
885 G4double w1 = -R1/
w , w2 = R1*(R2+1.)/
w , w3 = -R2*R1/
w ;
886 G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ;
890 for (
G4int J=0; J<numOfCouples; J++)
901 Ri = rangeVector->
GetValue(Ti,isOut) ;
909 Rim = rangeVector->
GetValue(Tim,isOut);
916 Rip = rangeVector->
GetValue(Tip,isOut);
919 Value = (w1*Rip + w2*Ri + w3*Rim)/Ti;
960 G4double w1 = 1./
w , w2 = -RTable*R1/
w , w3 = RTable*R2/
w ;
961 G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ;
965 for (
G4int J=0; J<numOfCouples; J++)
975 Ri = rangeVector->
GetValue(Ti,isOut) ;
981 Rim = rangeVector->
GetValue(Tim,isOut);
988 Rip = rangeVector->
GetValue(Tip,isOut);
990 Value = w1*Rip + w2*Ri + w3*Rim ;
1041 for (
size_t i=0; i<numOfCouples; i++)
1051 if (rlow <
DBL_MIN) rlow = 1.e-8;
1052 if (rhigh > 1.e16) rhigh = 1.e16;
1053 if (rhigh < 1.
e-8) rhigh =1.e-8;
1060 if (tmpTrick <= 0. || tmpTrick <
DBL_MIN) tmpTrick = 1.e-8;
1061 if (tmpTrick > 1.e16) tmpTrick = 1.e16;
1063 rhigh *= std::exp(std::log(tmpTrick)/((
G4double)(nbins-1)));
1075 for (
size_t j=1; j<nbins; j++) {
1079 for (ihigh=ilow+1; ihigh<nbins; ihigh++) {
1082 if(range2 >= range || ihigh == nbins-1) {
1090 G4double e = std::log(energy1) + std::log(energy2/energy1)*std::log(range/range1)/std::log(range2/range1);
1109 G4int binnumber = -1 ;
1118 if( rangebin < LowEdgeRange )
1124 rangebin = (*theRangeTable)(materialIndex)->GetValue(Tbin,isOut) ;
1126 while ((rangebin < LowEdgeRange) && (binnumber < TotBin )) ;
1131 else if(binnumber == TotBin-1)
1135 A = (*(*theRangeCoeffATable)(materialIndex))(binnumber-1) ;
1136 B = (*(*theRangeCoeffBTable)(materialIndex))(binnumber-1) ;
1137 C = (*(*theRangeCoeffCTable)(materialIndex))(binnumber-1) ;
1139 KineticEnergy = (LowEdgeRange -
C )/B ;
1142 discr = B*B - 4.*A*(C-LowEdgeRange);
1143 discr = discr>0. ? std::sqrt(discr) : 0.;
1144 KineticEnergy = 0.5*(discr-
B)/A ;
1148 aVector->
PutValue(i,KineticEnergy) ;
1156 G4bool wasModified =
false;
1161 for (
size_t j=0; j<numOfCouples; j++){