76 secondaryParticle(nullptr),
77 buildLambdaTable(
true),
79 theLambdaTable(nullptr),
80 theLambdaTablePrim(nullptr),
86 currentCouple(nullptr),
90 currentModel(nullptr),
92 currentParticle(nullptr)
207 for(
auto & em :
emModels) {
if(em == ptr) {
return; } }
208 emModels.push_back(ptr);
266 if(pname !=
"deuteron" && pname !=
"triton" &&
267 pname !=
"alpha" && pname !=
"He3" &&
268 pname !=
"alpha+" && pname !=
"helium" &&
269 pname !=
"hydrogen") {
277 G4cout <<
"G4VEmProcess::PreparePhysicsTable() for "
375 G4cout <<
"### G4VEmProcess::BuildPhysicsTable() for "
377 <<
" and particle " << num
414 num ==
"e+" || num ==
"mu+" ||
415 num ==
"mu-" || num ==
"proton"||
416 num ==
"pi+" || num ==
"pi-" ||
417 num ==
"kaon+" || num ==
"kaon-" ||
418 num ==
"alpha" || num ==
"anti_proton" ||
419 num ==
"GenericIon"|| num ==
"alpha++" ||
420 num ==
"alpha+" || num ==
"helium" ||
427 G4cout <<
"### G4VEmProcess::BuildPhysicsTable() done for "
429 <<
" and particle " << num
439 G4cout <<
"G4EmProcess::BuildLambdaTable() for process "
459 scale =
G4Log(scale);
463 for(
size_t i=0; i<numOfCouples; ++i) {
473 delete (*theLambdaTable)[i];
486 if(emax <= emin) { emax = 2*
emin; }
488 if(bin < 3) { bin = 3; }
497 delete (*theLambdaTablePrim)[i];
502 if(bin < 3) { bin = 3; }
505 bVectorPrim = aVectorPrim;
523 G4cout <<
"Lambda table is built for "
535 out << std::setprecision(6);
541 if(
integral) { out <<
" integral:1 "; }
542 if(
applyCuts) { out <<
" applyCuts:1 "; }
549 for(
size_t i=0; i<
length; ++i) {
552 out <<
" Lambda table from ";
560 <<
", " <<
G4lrint(nbin/std::log10(emax/emin))
561 <<
" bins/decade, spline: "
567 out <<
" Used Lambda table of "
574 for(
size_t i=0; i<
length; ++i) {
577 out <<
" LambdaPrime table from "
587 out <<
" Used LambdaPrime table of "
597 out << (*theLambdaTable) <<
G4endl;
699 if(e <= epeak && e/lambdaFactor >=
mfpKinEnergy) {
return; }
753 <<
" E(MeV)= " << finalT/
MeV
755 << lx <<
" (postLambda) "
903 <<
" in the directory <" << directory
906 G4cout <<
"Fail to store Physics Table for "
909 <<
" in the directory <" << directory
919 G4cout <<
"Physics table prim is stored for "
922 <<
" in the directory <" << directory
925 G4cout <<
"Fail to store Physics Table Prim for "
928 <<
" in the directory <" << directory
942 G4cout <<
"G4VEmProcess::RetrievePhysicsTable() for "
949 ||
particle != part) {
return yes; }
960 G4cout <<
"Lambda table for " << particleName
961 <<
" is Retrieved from <"
967 for(
size_t i=0; i<
n; ++i) {
969 (* theLambdaTable)[i]->SetSpline(
true);
975 G4cout <<
"Lambda table for " << particleName <<
" in file <"
976 << filename <<
"> is not exist"
988 G4cout <<
"Lambda table prim for " << particleName
989 <<
" is Retrieved from <"
995 for(
size_t i=0; i<
n; ++i) {
997 (* theLambdaTablePrim)[i]->SetSpline(
true);
1003 G4cout <<
"Lambda table prim for " << particleName <<
" in file <"
1004 << filename <<
"> is not exist"
1052 return (0.0 < xs) ? 1.0/xs :
DBL_MAX;
1072 G4cout <<
"### G4VEmProcess::FindLambdaMax: "
1083 for (i=0; i<
n; ++i) {
1084 pv = (*theLambdaTable)[i];
1090 for (
size_t j=0; j<nb; ++j) {
1103 <<
" Max CS at i= " << i <<
" emax(MeV)= " << emax/
MeV
1104 <<
" lambda= " << smax <<
G4endl;
1109 for (i=0; i<
n; ++i) {
1110 pv = (*theLambdaTable)[i];
1112 G4int j = (*theDensityIdx)[i];
1147 G4cout <<
"### SetCrossSectionBiasingFactor: for "
1150 <<
" biasFactor= " << f <<
" weightFlag= " << flag
1164 G4cout <<
"### ActivateForcedInteraction: for "
1167 <<
" length(mm)= " << length/
mm
1168 <<
" in G4Region <" << r
1169 <<
"> weightFlag= " << flag
1183 if (0.0 <= factor) {
1192 G4cout <<
"### ActivateSecondaryBiasing: for "
1194 <<
" factor= " << factor
1195 <<
" in G4Region <" << region
1196 <<
"> energyLimit(MeV)= " << energyLimit/
MeV
1206 if(5 < n && n < 10000000) {
1259 G4String ss =
"G4VEmProcess::" + tit;
1261 ed <<
"Parameter is out of range: " << val
1262 <<
" it will have no effect!\n" <<
" Process "