960 G4double maximumEnergyTransfer1 = 0;
961 G4double maximumEnergyTransfer2 = 0;
968 std::vector<double>::iterator k2 = std::upper_bound(eTdummyVec.begin(),
971 std::vector<double>::iterator k1 = k2 - 1;
985 if (random <= eProbaShellMap[ionizationLevelIndex][(*k1)].back()
986 && random <= eProbaShellMap[ionizationLevelIndex][(*k2)].back())
988 std::vector<double>::iterator prob12 =
989 std::upper_bound(eProbaShellMap[ionizationLevelIndex][(*k1)].begin(),
990 eProbaShellMap[ionizationLevelIndex][(*k1)].end(),
993 std::vector<double>::iterator prob11 = prob12 - 1;
995 std::vector<double>::iterator prob22 =
996 std::upper_bound(eProbaShellMap[ionizationLevelIndex][(*k2)].begin(),
997 eProbaShellMap[ionizationLevelIndex][(*k2)].end(),
1000 std::vector<double>::iterator prob21 = prob22 - 1;
1004 valuePROB21 = *prob21;
1005 valuePROB22 = *prob22;
1006 valuePROB12 = *prob12;
1007 valuePROB11 = *prob11;
1016 else nrjTransf11 = eNrjTransfData[ionizationLevelIndex][valueK1][valuePROB11];
1017 if(valuePROB12 == 1)
1019 if ((valueK1+bindingEnergy)/2. > valueK1) maximumEnergyTransfer1=valueK1;
1022 nrjTransf12 = maximumEnergyTransfer1;
1024 else nrjTransf12 = eNrjTransfData[ionizationLevelIndex][valueK1][valuePROB12];
1027 else nrjTransf21 = eNrjTransfData[ionizationLevelIndex][valueK2][valuePROB21];
1028 if(valuePROB22 == 1)
1030 if ((valueK2+bindingEnergy)/2. > valueK2) maximumEnergyTransfer2=valueK2;
1033 nrjTransf22 = maximumEnergyTransfer2;
1035 else nrjTransf22 = eNrjTransfData[ionizationLevelIndex][valueK2][valuePROB22];
1053 if (random > eProbaShellMap[ionizationLevelIndex][(*k1)].back())
1055 std::vector<double>::iterator prob22 =
1056 std::upper_bound(eProbaShellMap[ionizationLevelIndex][(*k2)].begin(),
1057 eProbaShellMap[ionizationLevelIndex][(*k2)].end(),
1060 std::vector<double>::iterator prob21 = prob22 - 1;
1064 valuePROB21 = *prob21;
1065 valuePROB22 = *prob22;
1069 nrjTransf21 = eNrjTransfData[ionizationLevelIndex][valueK2][valuePROB21];
1070 nrjTransf22 = eNrjTransfData[ionizationLevelIndex][valueK2][valuePROB22];
1072 G4double interpolatedvalue2 = Interpolate(valuePROB21,
1080 G4double value = Interpolate(valueK1, valueK2, k, 0., interpolatedvalue2);
1100 std::vector<double>::iterator k2 = std::upper_bound(pTdummyVec.begin(),
1104 std::vector<double>::iterator k1 = k2 - 1;
1119 if (random <= pProbaShellMap[ionizationLevelIndex][(*k1)].back()
1120 && random <= pProbaShellMap[ionizationLevelIndex][(*k2)].back())
1122 std::vector<double>::iterator prob12 =
1123 std::upper_bound(pProbaShellMap[ionizationLevelIndex][(*k1)].begin(),
1124 pProbaShellMap[ionizationLevelIndex][(*k1)].end(),
1127 std::vector<double>::iterator prob11 = prob12 - 1;
1129 std::vector<double>::iterator prob22 =
1130 std::upper_bound(pProbaShellMap[ionizationLevelIndex][(*k2)].begin(),
1131 pProbaShellMap[ionizationLevelIndex][(*k2)].end(),
1134 std::vector<double>::iterator prob21 = prob22 - 1;
1138 valuePROB21 = *prob21;
1139 valuePROB22 = *prob22;
1140 valuePROB12 = *prob12;
1141 valuePROB11 = *prob11;
1150 else nrjTransf11 = pNrjTransfData[ionizationLevelIndex][valueK1][valuePROB11];
1151 if(valuePROB12 == 1) nrjTransf12 = maximumEnergyTransferP;
1152 else nrjTransf12 = pNrjTransfData[ionizationLevelIndex][valueK1][valuePROB12];
1154 else nrjTransf21 = pNrjTransfData[ionizationLevelIndex][valueK2][valuePROB21];
1155 if(valuePROB22 == 1) nrjTransf22 = maximumEnergyTransferP;
1156 else nrjTransf22 = pNrjTransfData[ionizationLevelIndex][valueK2][valuePROB22];
1175 if (random > pProbaShellMap[ionizationLevelIndex][(*k1)].back())
1177 std::vector<double>::iterator prob22 =
1178 std::upper_bound(pProbaShellMap[ionizationLevelIndex][(*k2)].begin(),
1179 pProbaShellMap[ionizationLevelIndex][(*k2)].end(),
1182 std::vector<double>::iterator prob21 = prob22 - 1;
1186 valuePROB21 = *prob21;
1187 valuePROB22 = *prob22;
1191 nrjTransf21 = pNrjTransfData[ionizationLevelIndex][valueK2][valuePROB21];
1192 nrjTransf22 = pNrjTransfData[ionizationLevelIndex][valueK2][valuePROB22];
1194 G4double interpolatedvalue2 = Interpolate(valuePROB21,
1202 G4double value = Interpolate(valueK1, valueK2, k, 0., interpolatedvalue2);
1219 G4double nrjTransfProduct = nrjTransf11 * nrjTransf12 * nrjTransf21
1223 if (nrjTransfProduct != 0.)
1225 nrj = QuadInterpolator(valuePROB11,
static G4Electron * ElectronDefinition()
static constexpr double proton_mass_c2
static G4Proton * ProtonDefinition()
G4double Energy(G4int level)
static constexpr double electron_mass_c2
const XML_Char int const XML_Char * value
G4double bindingEnergy(G4int A, G4int Z)