114 G4double G4eLowEnergyLoss::LowerBoundEloss = 10.*
eV ;
115 G4double G4eLowEnergyLoss::UpperBoundEloss = 100.*
GeV ;
116 G4int G4eLowEnergyLoss::NbinEloss = 360 ;
118 G4double G4eLowEnergyLoss::LOGRTable ;
130 MinKineticEnergy(1.*
eV),
135 RecorderOfProcess(0),
194 return LowerBoundEloss;
199 return UpperBoundEloss;
216 G4double lrate = std::log(UpperBoundEloss/LowerBoundEloss);
217 LOGRTable=lrate/NbinEloss;
218 RTable =std::exp(LOGRTable);
268 for (
size_t J=0; J<numOfCouples; J++)
273 LowerBoundEloss, UpperBoundEloss, NbinEloss);
276 for (
G4int i=0; i<NbinEloss; i++)
284 pointer= RecorderOfProcess[process];
285 Value += (*pointer)[J]->GetValue(LowEdgeEnergy,isOutRange);
291 theDEDXTable->
insert(aVector) ;
307 LowerBoundEloss,UpperBoundEloss,NbinEloss);
312 LowerBoundEloss,UpperBoundEloss,NbinEloss);
315 LowerBoundEloss,UpperBoundEloss,NbinEloss);
319 theeRangeCoeffATable,
320 LowerBoundEloss,UpperBoundEloss,NbinEloss);
323 theeRangeCoeffBTable,
324 LowerBoundEloss,UpperBoundEloss,NbinEloss);
327 theeRangeCoeffCTable,
328 LowerBoundEloss,UpperBoundEloss,NbinEloss);
332 theeRangeCoeffATable,
333 theeRangeCoeffBTable,
334 theeRangeCoeffCTable,
336 LowerBoundEloss,UpperBoundEloss,NbinEloss);
343 LowerBoundEloss,UpperBoundEloss,NbinEloss);
349 LowerBoundEloss,UpperBoundEloss,NbinEloss);
352 LowerBoundEloss,UpperBoundEloss,NbinEloss);
356 thepRangeCoeffATable,
357 LowerBoundEloss,UpperBoundEloss,NbinEloss);
360 thepRangeCoeffBTable,
361 LowerBoundEloss,UpperBoundEloss,NbinEloss);
364 thepRangeCoeffCTable,
365 LowerBoundEloss,UpperBoundEloss,NbinEloss);
369 thepRangeCoeffATable,
370 thepRangeCoeffBTable,
371 thepRangeCoeffCTable,
373 LowerBoundEloss,UpperBoundEloss,NbinEloss);
393 LowerBoundEloss, UpperBoundEloss, 1.,NbinEloss);
404 static const G4double faclow = 1.5 ;
421 else if ( E< faclow*LowerBoundEloss)
423 if (Step >= fRangeNow) finalT = 0.;
425 else finalT = E*(1.-std::sqrt(Step/fRangeNow)) ;
428 else if (E>=UpperBoundEloss) finalT = E - Step*fdEdx;
430 else if (Step >= fRangeNow) finalT = 0.;
434 if(Step/fRangeNow < linLossLimit) finalT = E-Step*fdEdx ;
446 MeanLoss = E-finalT ;
449 if ((
EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowerBoundEloss))
452 if (finalT < 0.) finalT = 0.;
468 std::vector<G4DynamicParticle*>* deexcitationProducts = 0;
469 if (theFluo) deexcitationProducts =
DeexciteAtom(couple,E,edep);
471 size_t nSecondaries = 0;
472 if (deexcitationProducts != 0) nSecondaries = deexcitationProducts->size();
475 if (nSecondaries > 0) {
488 for (
size_t i=0; i<nSecondaries; i++) {
512 delete deexcitationProducts;