164     MaxExcitationNumber (1.e6),
 
  166     nmaxDirectFluct (100),
 
  171     MinKineticEnergy(0.0) 
 
  313           for (
size_t J=0; J<numOfCouples; J++)
 
  330                       Value += (*pointer)[J]->
 
  331                         GetValue(LowEdgeEnergy,isOutRange) ;
 
  412   for (
size_t J=0;  J<numOfCouples; J++)
 
  461   for (
size_t J=0;  J<numOfCouples; J++)
 
  499     G4double de = (energy2 - energy1) * del ;
 
  502     for (
G4int i=1; i<
n; i++) {
 
  505       range  += 0.5*de*(1.0/dedx1 + 1.0/dedx2);
 
  523   G4double tlim=5.*
keV,parlowen=0.4,ppar=0.5-parlowen ;
 
  525   G4double losslim,clim,taulim,timelim,
 
  526     LowEdgeEnergy,tau,Value ;
 
  531   losslim = physicsVector->
GetValue(tlim,isOut);
 
  533   clim=std::sqrt(
ParticleMass*tlim/2.)/(c_light*losslim*ppar) ;
 
  547           Value = clim*std::exp(ppar*std::log(tau/taulim)) ;
 
  559     } 
while (tau<=taulim) ;
 
  584   G4double tlim=5.*
keV,parlowen=0.4,ppar=0.5-parlowen ;
 
  586   G4double losslim,clim,taulim,timelim,
 
  587     LowEdgeEnergy,tau,Value ;
 
  592   losslim = physicsVector->
GetValue(tlim,isOut);
 
  594   clim=std::sqrt(
ParticleMass*tlim/2.)/(c_light*losslim*ppar) ;
 
  608           Value = clim*std::exp(ppar*std::log(tau/taulim)) ;
 
  620     } 
while (tau<=taulim) ;
 
  643   G4double dtau,Value,taui,ti,lossi,ci;
 
  648   for (
G4int i=0; i<=nbin; i++)
 
  652       lossi = physicsVector->
GetValue(ti,isOut);
 
  675   G4double ltt,dltau,Value,ui,taui,ti,lossi,ci;
 
  681   for (
G4int i=0; i<=nbin; i++)
 
  683       ui = ltaulow+dltau*i;
 
  686       lossi = physicsVector->
GetValue(ti,isOut);
 
  696       Value += ci*taui/lossi;
 
  709   G4double ltt,dltau,Value,ui,taui,ti,lossi,ci;
 
  715   for (
G4int i=0; i<=nbin; i++)
 
  717       ui = ltaulow+dltau*i;
 
  720       lossi = physicsVector->
GetValue(ti,isOut);
 
  743   G4double ltt,dltau,Value,ui,taui,ti,lossi,ci;
 
  749   for (
G4int i=0; i<=nbin; i++)
 
  751       ui = ltaulow+dltau*i;
 
  754       lossi = physicsVector->
GetValue(ti,isOut);
 
  800   G4double w = R1*(RTable-1.)*(RTable-1.);
 
  801   G4double w1 = RTable/w , w2 = -RTable*R1/w , w3 = R2/w ;
 
  802   G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ;
 
  806   for (
G4int J=0; J<numOfCouples; J++)
 
  817           Ri = rangeVector->
GetValue(Ti,isOut) ;
 
  834               Rim = rangeVector->
GetValue(Tim,isOut);
 
  841               Rip = rangeVector->
GetValue(Tip,isOut);
 
  843           Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ; 
 
  884   G4double w = R1*(RTable-1.)*(RTable-1.);
 
  886   G4double w1 = -R1/w , w2 = R1*(R2+1.)/w , w3 = -R2*R1/w ;
 
  887   G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ;
 
  891   for (
G4int J=0; J<numOfCouples; J++)
 
  902           Ri = rangeVector->
GetValue(Ti,isOut) ;
 
  910               Rim = rangeVector->
GetValue(Tim,isOut);
 
  917               Rip = rangeVector->
GetValue(Tip,isOut);
 
  920           Value = (w1*Rip + w2*Ri + w3*Rim)/Ti;
 
  960   G4double w = R1*(RTable-1.)*(RTable-1.);
 
  961   G4double w1 = 1./w , w2 = -RTable*R1/w , w3 = RTable*R2/w ;
 
  962   G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ;
 
  966   for (
G4int J=0; J<numOfCouples; J++)
 
  976           Ri = rangeVector->
GetValue(Ti,isOut) ;
 
  982               Rim = rangeVector->
GetValue(Tim,isOut);
 
  989               Rip = rangeVector->
GetValue(Tip,isOut);
 
  991           Value = w1*Rip + w2*Ri + w3*Rim ;
 
 1042   for (
size_t i=0;  i<numOfCouples; i++)
 
 1052       if (rlow <
DBL_MIN) rlow = 1.e-8;
 
 1053       if (rhigh > 1.e16) rhigh = 1.e16;
 
 1054       if (rhigh < 1.e-8) rhigh =1.e-8;
 
 1061       if (tmpTrick <= 0. || tmpTrick < 
DBL_MIN) tmpTrick = 1.e-8; 
 
 1062       if (tmpTrick > 1.e16) tmpTrick = 1.e16; 
 
 1064       rhigh *= std::exp(std::log(tmpTrick)/((
G4double)(nbins-1)));
 
 1076       for (
size_t j=1; j<nbins; j++) {
 
 1080         for (ihigh=ilow+1; ihigh<nbins; ihigh++) {
 
 1083           if(range2 >= range || ihigh == nbins-1) {
 
 1091         G4double e = std::log(energy1) + std::log(energy2/energy1)*std::log(range/range1)/std::log(range2/range1);
 
 1107   G4double LowEdgeRange,
A,B,C,discr,KineticEnergy ;
 
 1110   G4int binnumber = -1 ;
 
 1119       if( rangebin < LowEdgeRange )
 
 1125               rangebin = (*theRangeTable)(materialIndex)->GetValue(Tbin,isOut) ;
 
 1127           while ((rangebin < LowEdgeRange) && (binnumber < TotBin )) ;
 
 1132       else if(binnumber == TotBin-1)
 
 1136           A = (*(*theRangeCoeffATable)(materialIndex))(binnumber-1) ;
 
 1137           B = (*(*theRangeCoeffBTable)(materialIndex))(binnumber-1) ;
 
 1138           C = (*(*theRangeCoeffCTable)(materialIndex))(binnumber-1) ;
 
 1140             KineticEnergy = (LowEdgeRange -C )/B ;
 
 1143               discr = B*B - 4.*A*(C-LowEdgeRange);
 
 1144               discr = discr>0. ? std::sqrt(discr) : 0.;
 
 1145               KineticEnergy = 0.5*(discr-B)/A ;
 
 1149       aVector->
PutValue(i,KineticEnergy) ;
 
 1157   G4bool wasModified = 
false;
 
 1162   for (
size_t j=0; j<numOfCouples; j++){
 
static void BuildRangeTable(const G4ParticleDefinition &aParticleType)
 
static G4ThreadLocal G4double RTable
 
static c2_factory< G4double > c2
 
static G4double ProperTimeIntLog(G4PhysicsVector *physicsVector, G4int nbin)
 
static G4ThreadLocal G4PhysicsTable * theProperTimepTable
 
static G4ThreadLocal G4PhysicsTable * theLabTimeTable
 
static G4ThreadLocal G4double LowestKineticEnergy
 
static G4ThreadLocal G4PhysicsTable * theRangepbarTable
 
static G4ThreadLocal G4PhysicsTable * theLabTimepTable
 
static G4ThreadLocal G4PhysicsTable * theDEDXpbarTable
 
G4double GetValue(G4double theEnergy, G4bool &isOutRange) const 
 
static void BuildRangeCoeffBTable(const G4ParticleDefinition &aParticleType)
 
static void MinusNumberOfProcesses()
 
static G4int GetNumberOfProcesses()
 
void insert(G4PhysicsVector *)
 
static G4ThreadLocal G4double ltauhigh
 
static void BuildLabTimeVector(G4int materialIndex, G4PhysicsLogVector *rangeVector)
 
static G4ThreadLocal G4double ltaulow
 
static G4ThreadLocal G4bool rndmStepFlag
 
static G4ThreadLocal G4double c3lim
 
static G4double RangeIntLin(G4PhysicsVector *physicsVector, G4int nbin)
 
static G4ThreadLocal G4double LOGRTable
 
static G4ThreadLocal G4double ParticleMass
 
static G4ThreadLocal G4int NumberOfProcesses
 
static G4ThreadLocal G4double Charge
 
static G4double RangeIntLog(G4PhysicsVector *physicsVector, G4int nbin)
 
G4bool IsRecalcNeeded() const 
 
static G4ThreadLocal G4double c1lim
 
static G4ThreadLocal G4PhysicsTable * thepRangeCoeffATable
 
static G4ThreadLocal G4PhysicsTable * thepbarRangeCoeffCTable
 
static G4ThreadLocal G4PhysicsTable ** RecorderOfpbarProcess
 
static G4ThreadLocal G4PhysicsTable * theProperTimepbarTable
 
static G4ThreadLocal G4PhysicsTable * theRangeTable
 
size_t GetVectorLength() const 
 
static G4ThreadLocal G4double finalRange
 
G4double GetLowEdgeEnergy(size_t binNumber) const 
 
static G4ThreadLocal G4PhysicsTable * thepbarRangeCoeffBTable
 
static G4ThreadLocal G4PhysicsTable * thepRangeCoeffBTable
 
static G4ThreadLocal G4int CounterOfProcess
 
static G4ThreadLocal G4PhysicsTable * theInverseRangepbarTable
 
static G4ThreadLocal G4PhysicsTable * theDEDXTable
 
static G4ThreadLocal G4int TotBin
 
static G4ThreadLocal G4PhysicsTable ** RecorderOfpProcess
 
static G4ThreadLocal G4double taulow
 
static G4ThreadLocal G4PhysicsTable ** RecorderOfProcess
 
static G4double LabTimeIntLog(G4PhysicsVector *physicsVector, G4int nbin)
 
size_t GetTableSize() const 
 
static G4ThreadLocal G4PhysicsTable * theRangepTable
 
static G4AntiProton * AntiProton()
 
static G4ThreadLocal G4double tauhigh
 
static G4ThreadLocal G4PhysicsTable * theRangeCoeffCTable
 
void PutValue(size_t index, G4double theValue)
 
static G4Proton * Proton()
 
static G4ThreadLocal G4double dRoverRange
 
static void BuildRangeCoeffATable(const G4ParticleDefinition &aParticleType)
 
static G4ThreadLocal G4int CounterOfpProcess
 
static const G4double A[nN]
 
static void BuildDEDXTable(const G4ParticleDefinition &aParticleType)
 
static G4ThreadLocal G4double HighestKineticEnergy
 
static void BuildRangeCoeffCTable(const G4ParticleDefinition &aParticleType)
 
static G4ThreadLocal G4PhysicsTable * theProperTimeTable
 
static G4ProductionCutsTable * GetProductionCutsTable()
 
static G4ThreadLocal G4int CounterOfpbarProcess
 
G4double GetPDGMass() const 
 
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const 
 
static void SetNumberOfProcesses(G4int number)
 
static void PlusNumberOfProcesses()
 
static G4ThreadLocal G4double pbartableElectronCutInRange
 
G4double energy(const ThreeVector &p, const G4double m)
 
G4bool CutsWhereModified()
 
static G4ThreadLocal G4PhysicsTable * theInverseRangeTable
 
static G4ThreadLocal G4bool EnlossFlucFlag
 
G4hRDEnergyLoss(const G4String &)
 
static G4ThreadLocal G4double c2lim
 
static G4ThreadLocal G4double Mass
 
static void SetRndmStep(G4bool value)
 
static G4ThreadLocal G4PhysicsTable * thepbarRangeCoeffATable
 
static void BuildRangeVector(G4int materialIndex, G4PhysicsLogVector *rangeVector)
 
static G4ThreadLocal G4PhysicsTable * thepRangeCoeffCTable
 
static void SetdRoverRange(G4double value)
 
G4PhysicsTable * theLossTable
 
static G4ThreadLocal G4PhysicsTable * theLabTimepbarTable
 
static G4ThreadLocal G4PhysicsTable * theRangeCoeffATable
 
static void Register(const G4ParticleDefinition *p, const G4PhysicsTable *tDEDX, const G4PhysicsTable *tRange, const G4PhysicsTable *tInverseRange, const G4PhysicsTable *tLabTime, const G4PhysicsTable *tProperTime, G4double lowestKineticEnergy, G4double highestKineticEnergy, G4double massRatio, G4int NumberOfBins)
 
static const double eplus
 
static G4ThreadLocal G4PhysicsTable * theRangeCoeffBTable
 
static void BuildProperTimeVector(G4int materialIndex, G4PhysicsLogVector *rangeVector)
 
G4double GetPDGCharge() const 
 
static void InvertRangeVector(G4int materialIndex, G4PhysicsLogVector *rangeVector)
 
static void BuildTimeTables(const G4ParticleDefinition &aParticleType)
 
static G4ThreadLocal G4PhysicsTable * theInverseRangepTable
 
static void SetEnlossFluc(G4bool value)
 
static void SetStepFunction(G4double c1, G4double c2)
 
static G4ThreadLocal G4double ptableElectronCutInRange
 
static void BuildInverseRangeTable(const G4ParticleDefinition &aParticleType)
 
static G4ThreadLocal G4PhysicsTable * theDEDXpTable