54 const G4double G4SandiaTable::funitc[5] =
57 CLHEP::cm2*CLHEP::keV/CLHEP::g,
58 CLHEP::cm2*CLHEP::keV*CLHEP::keV/CLHEP::g,
59 CLHEP::cm2*CLHEP::keV*CLHEP::keV*CLHEP::keV/CLHEP::g,
60 CLHEP::cm2*CLHEP::keV*CLHEP::keV*CLHEP::keV*CLHEP::keV/CLHEP::g
63 const G4double G4SandiaTable::fnulcof[] = {0.0};
65 G4int G4SandiaTable::fCumulInterval[] = {0};
73 fMatSandiaMatrixPAI = 0;
74 fPhotoAbsorptionCof = 0;
76 fMatNbOfIntervals = 0;
82 if(0 == fCumulInterval[0]) {
83 fCumulInterval[0] = 1;
86 fCumulInterval[
Z] = fCumulInterval[
Z-1] + fNbOfIntervals[
Z];
91 fSandiaCofPerAtom.resize(4,0.0);
94 ComputeMatSandiaMatrix();
103 : fMaterial(0),fMatSandiaMatrix(0),
104 fMatSandiaMatrixPAI(0),fPhotoAbsorptionCof(0)
107 fMatNbOfIntervals = 0;
110 fSandiaCofPerAtom.resize(4,0.0);
120 delete fMatSandiaMatrix;
122 if(fMatSandiaMatrixPAI)
125 delete fMatSandiaMatrixPAI;
127 if(fPhotoAbsorptionCof)
129 delete [] fPhotoAbsorptionCof;
137 std::vector<G4double>& coeff)
139 assert(4 <= coeff.size());
140 G4double Emin = fSandiaTable[fCumulInterval[Z-1]][0]*
keV;
142 if (Iopot > Emin) Emin = Iopot;
144 G4int interval = fNbOfIntervals[
Z] - 1;
145 G4int row = fCumulInterval[Z-1] + interval;
146 while ((interval>0) && (energy<fSandiaTable[row][0]*
keV)) {
148 row = fCumulInterval[Z-1] + interval;
154 coeff[0]=AoverAvo*funitc[1]*fSandiaTable[row][1];
155 coeff[1]=AoverAvo*funitc[2]*fSandiaTable[row][2];
156 coeff[2]=AoverAvo*funitc[3]*fSandiaTable[row][3];
157 coeff[3]=AoverAvo*funitc[4]*fSandiaTable[row][4];
161 coeff[0] = coeff[1] = coeff[2] = coeff[3] = 0.;
170 return fZtoAratio[
Z];
175 void G4SandiaTable::ComputeMatSandiaMatrix()
185 G4int MaxIntervals = 0;
188 for ( elm = 0; elm < NbElm; elm++ )
190 Z[elm] = (
G4int)(*ElementVector)[elm]->GetZ();
191 MaxIntervals += fNbOfIntervals[Z[elm]];
201 for ( elm = 0; elm < NbElm; elm++ )
203 IonizationPot = GetIonizationPot(Z[elm]);
205 for (
G4int row = fCumulInterval[Z[elm]-1]; row < fCumulInterval[Z[elm]]; row++)
207 tmp1[interval1++] =
std::max(fSandiaTable[row][0]*
keV,IonizationPot);
222 for (
G4int i1 = 0; i1 < MaxIntervals; i1++ )
224 if (tmp1[i1] < Emin) Emin = tmp1[i1];
226 if (Emin <
DBL_MAX) tmp2[interval2++] = Emin;
228 for (
G4int j1 = 0; j1 < MaxIntervals; j1++ )
230 if (tmp1[j1] <= Emin) tmp1[j1] =
DBL_MAX;
239 for (interval = 0; interval < interval2; interval++ )
249 G4double coef, oldsum(0.), newsum(0.);
250 fMatNbOfIntervals = 0;
252 for ( interval = 0; interval < interval2; interval++ )
254 Emin = (*(*fMatSandiaMatrix)[fMatNbOfIntervals])[0] = tmp2[interval];
256 for (
G4int k = 1; k < 5; k++ ) {
257 (*(*fMatSandiaMatrix)[fMatNbOfIntervals])[k] = 0.;
261 for ( elm = 0; elm < NbElm; elm++ )
265 for (
G4int j = 1; j < 5; j++ )
267 coef = NbOfAtomsPerVolume[elm]*fSandiaCofPerAtom[j-1];
268 (*(*fMatSandiaMatrix)[fMatNbOfIntervals])[j] += coef;
269 newsum += std::fabs(coef);
274 if (newsum != oldsum) { oldsum = newsum; fMatNbOfIntervals++;}
282 if ( fVerbose > 0 && fMaterial->
GetName() ==
"G4_Ar" )
284 G4cout<<
"mma, G4SandiaTable::ComputeMatSandiaMatrix(), mat = "
287 for(
G4int i = 0; i < fMatNbOfIntervals; i++)
302 void G4SandiaTable::ComputeMatSandiaMatrixPAI()
304 G4int MaxIntervals = 0;
305 G4int elm,
c, i, j, jj, k, k1, k2,
c1, n1;
310 std::vector<G4int>
Z(noElm);
312 for ( elm = 0; elm < noElm; elm++ )
314 Z[elm] = (
G4int)(*ElementVector)[elm]->GetZ();
315 MaxIntervals += fNbOfIntervals[Z[elm]];
317 fMaxInterval = MaxIntervals + 2;
332 for( c = 0; c < fMaxInterval; c++ )
334 fPhotoAbsorptionCof0[
c] = 0.;
335 fPhotoAbsorptionCof1[
c] = 0.;
336 fPhotoAbsorptionCof2[
c] = 0.;
337 fPhotoAbsorptionCof3[
c] = 0.;
338 fPhotoAbsorptionCof4[
c] = 0.;
342 for(i = 0; i < noElm; i++)
347 for( j = 1; j < Z[i]; j++ ) n1 += fNbOfIntervals[j];
349 G4int n2 = n1 + fNbOfIntervals[Z[i]];
351 for( k1 = n1; k1 < n2; k1++ )
353 if( I1 > fSandiaTable[k1][0] )
361 for( c1 = 1; c1 <
c; c1++ )
363 if( fPhotoAbsorptionCof0[c1] == I1 )
371 fPhotoAbsorptionCof0[
c] = I1;
374 for( k2 = k1; k2 < n2; k2++ )
378 for( c1 = 1; c1 <
c; c1++ )
380 if( fPhotoAbsorptionCof0[c1] == fSandiaTable[k2][0] )
388 fPhotoAbsorptionCof0[
c] = fSandiaTable[k2][0];
395 for( i = 1; i <
c; i++ )
397 for( j = i + 1; j <
c; j++ )
399 if( fPhotoAbsorptionCof0[i] > fPhotoAbsorptionCof0[j] )
402 fPhotoAbsorptionCof0[i] = fPhotoAbsorptionCof0[j];
403 fPhotoAbsorptionCof0[j] =
tmp;
406 if ( fVerbose > 0 && fMaterial->
GetName() ==
"G4_Ar" )
408 G4cout<<i<<
"\t energy = "<<fPhotoAbsorptionCof0[i]<<
G4endl;
415 if ( fVerbose > 0 && fMaterial->
GetName() ==
"G4_Ar" )
417 for( i = 0; i < noElm; i++ )
G4cout<<i<<
" = elN, fraction = "<<fractionW[i]<<
G4endl;
420 for( i = 0; i < noElm; i++ )
425 for( j = 1; j < Z[i]; j++ ) n1 += fNbOfIntervals[j];
427 G4int n2 = n1 + fNbOfIntervals[Z[i]] - 1;
429 for(k = n1; k < n2; k++)
434 for(
G4int q = 1; q < fMaxInterval-1; q++)
436 G4double E1 = fPhotoAbsorptionCof0[q];
437 G4double E2 = fPhotoAbsorptionCof0[q+1];
441 G4cout<<
"k = "<<k<<
", q = "<<q<<
", B1 = "<<B1<<
", B2 = "<<B2
442 <<
", E1 = "<<E1<<
", E2 = "<<E2<<
G4endl;
444 if( B1 > E1 || B2 < E2 || E1 < I1 )
448 G4cout<<
"continue for: B1 = "<<B1<<
", B2 = "<<B2<<
", E1 = "
449 <<E1<<
", E2 = "<<E2<<
G4endl;
453 fPhotoAbsorptionCof1[q] += fSandiaTable[k][1]*fractionW[i];
454 fPhotoAbsorptionCof2[q] += fSandiaTable[k][2]*fractionW[i];
455 fPhotoAbsorptionCof3[q] += fSandiaTable[k][3]*fractionW[i];
456 fPhotoAbsorptionCof4[q] += fSandiaTable[k][4]*fractionW[i];
461 fPhotoAbsorptionCof1[fMaxInterval-1] += fSandiaTable[k][1]*fractionW[i];
462 fPhotoAbsorptionCof2[fMaxInterval-1] += fSandiaTable[k][2]*fractionW[i];
463 fPhotoAbsorptionCof3[fMaxInterval-1] += fSandiaTable[k][3]*fractionW[i];
464 fPhotoAbsorptionCof4[fMaxInterval-1] += fSandiaTable[k][4]*fractionW[i];
472 if( fPhotoAbsorptionCof1[c] != 0.0 ||
473 fPhotoAbsorptionCof2[c] != 0.0 ||
474 fPhotoAbsorptionCof3[c] != 0.0 ||
475 fPhotoAbsorptionCof4[c] != 0.0 )
continue;
481 for( jj = 2; jj < fMaxInterval; jj++ )
483 fPhotoAbsorptionCof0[jj-1] = fPhotoAbsorptionCof0[jj];
484 fPhotoAbsorptionCof1[jj-1] = fPhotoAbsorptionCof1[jj];
485 fPhotoAbsorptionCof2[jj-1] = fPhotoAbsorptionCof2[jj];
486 fPhotoAbsorptionCof3[jj-1] = fPhotoAbsorptionCof3[jj];
487 fPhotoAbsorptionCof4[jj-1] = fPhotoAbsorptionCof4[jj];
492 while( c < fMaxInterval - 1 );
494 if( fPhotoAbsorptionCof0[fMaxInterval-1] == 0.0 ) fMaxInterval--;
502 for (i = 0; i < fMaxInterval; i++)
504 fPhotoAbsorptionCof0[i+1] *= funitc[0];
505 fPhotoAbsorptionCof1[i+1] *= funitc[1]*
density;
506 fPhotoAbsorptionCof2[i+1] *= funitc[2]*
density;
507 fPhotoAbsorptionCof3[i+1] *= funitc[3]*
density;
508 fPhotoAbsorptionCof4[i+1] *= funitc[4]*
density;
512 if( fMaterial->
GetName() ==
"G4_WATER")
514 fMaxInterval += fH2OlowerInt;
516 for (i = 0; i < fMaxInterval; i++)
518 fMatSandiaMatrixPAI->push_back(
new G4DataVector(5,0.) );
520 for (i = 0; i < fH2OlowerInt; i++)
522 (*(*fMatSandiaMatrixPAI)[i])[0] = fH2OlowerI1[i][0];
523 (*(*fMatSandiaMatrixPAI)[i])[1] = fH2OlowerI1[i][1];
524 (*(*fMatSandiaMatrixPAI)[i])[2] = fH2OlowerI1[i][2];
525 (*(*fMatSandiaMatrixPAI)[i])[3] = fH2OlowerI1[i][3];
526 (*(*fMatSandiaMatrixPAI)[i])[4] = fH2OlowerI1[i][4];
528 for (i = fH2OlowerInt; i < fMaxInterval; i++)
530 (*(*fMatSandiaMatrixPAI)[i])[0] = fPhotoAbsorptionCof0[i+1-fH2OlowerInt];
531 (*(*fMatSandiaMatrixPAI)[i])[1] = fPhotoAbsorptionCof1[i+1-fH2OlowerInt];
532 (*(*fMatSandiaMatrixPAI)[i])[2] = fPhotoAbsorptionCof2[i+1-fH2OlowerInt];
533 (*(*fMatSandiaMatrixPAI)[i])[3] = fPhotoAbsorptionCof3[i+1-fH2OlowerInt];
534 (*(*fMatSandiaMatrixPAI)[i])[4] = fPhotoAbsorptionCof4[i+1-fH2OlowerInt];
540 for (i = 0; i < fMaxInterval; i++)
542 fMatSandiaMatrixPAI->push_back(
new G4DataVector(5,0.) );
544 for (i = 0; i < fMaxInterval; i++)
546 (*(*fMatSandiaMatrixPAI)[i])[0] = fPhotoAbsorptionCof0[i+1];
547 (*(*fMatSandiaMatrixPAI)[i])[1] = fPhotoAbsorptionCof1[i+1];
548 (*(*fMatSandiaMatrixPAI)[i])[2] = fPhotoAbsorptionCof2[i+1];
549 (*(*fMatSandiaMatrixPAI)[i])[3] = fPhotoAbsorptionCof3[i+1];
550 (*(*fMatSandiaMatrixPAI)[i])[4] = fPhotoAbsorptionCof4[i+1];
557 G4cout<<
"vmg, G4SandiaTable::ComputeMatSandiaMatrixPAI(), mat = "
560 for( i = 0; i < fMaxInterval; i++)
581 fMatNbOfIntervals = 0;
582 fMatSandiaMatrix = 0;
583 fMatSandiaMatrixPAI = 0;
584 fPhotoAbsorptionCof = 0;
589 fSandiaCofPerAtom.resize(4,0.0);
594 if ( matIndex >= 0 && matIndex < numberOfMat)
596 fMaterial = (*theMaterialTable)[matIndex];
601 G4Exception(
"G4SandiaTable::G4SandiaTable(G4int matIndex)",
"mat401",
611 fMatNbOfIntervals = 0;
612 fMatSandiaMatrix = 0;
613 fMatSandiaMatrixPAI = 0;
614 fPhotoAbsorptionCof = 0;
620 fSandiaCofPerAtom.resize(4,0.0);
628 ComputeMatSandiaMatrixPAI();
648 if ( matIndex >= 0 && matIndex < numberOfMat )
650 fMaterial = (*theMaterialTable)[matIndex];
655 G4Exception(
"G4SandiaTable::Initialize(G4int matIndex)",
"mat401",
670 if(!fPhotoAbsorptionCof) { ComputeMatTable(); }
671 return fPhotoAbsorptionCof;
681 da[i][0] = da[j][0] ;
689 return fPhotoAbsorptionCof[i][j]*funitc[j];
700 for(
G4int i = 1;i < sz; i++ )
702 for(
G4int j = i + 1;j < sz; j++ )
716 G4int c, i, flag = 0, n1 = 1;
721 for( i = 0; i < el; i++ ) fMaxInterval += fNbOfIntervals[ Z[i] ];
726 G4cout<<
"begin sanInt, fMaxInterval = "<<fMaxInterval<<
G4endl;
729 fPhotoAbsorptionCof =
new G4double* [fMaxInterval];
731 for( i = 0; i < fMaxInterval; i++ ) {
732 fPhotoAbsorptionCof[i] =
new G4double[5];
736 for( c = 0; c < fMaxInterval; c++ ) { fPhotoAbsorptionCof[
c][0] = 0.; }
740 for( i = 0; i < el; i++ )
742 I1 = fIonizationPotentials[ Z[i] ]*
keV;
745 for( j = 1; j < Z[i]; j++ ) n1 += fNbOfIntervals[j];
747 G4int n2 = n1 + fNbOfIntervals[Z[i]];
749 for( k1 = n1; k1 < n2; k1++ )
751 if( I1 > fSandiaTable[k1][0] )
759 for( c1 = 1; c1 <
c; c1++ )
761 if( fPhotoAbsorptionCof[c1][0] == I1 )
769 fPhotoAbsorptionCof[
c][0] = I1;
772 for( k2 = k1; k2 < n2; k2++ )
776 for( c1 = 1; c1 <
c; c1++ )
778 if( fPhotoAbsorptionCof[c1][0] == fSandiaTable[k2][0] )
786 fPhotoAbsorptionCof[
c][0] = fSandiaTable[k2][0];
788 G4cout<<
"sanInt, c = "<<c<<
", E_c = "<<fPhotoAbsorptionCof[
c][0]
799 G4cout<<
"end SanInt, fMaxInterval = "<<fMaxInterval<<
G4endl;
815 G4int i, j, n1, k, c=1, jj, kk;
818 for( i = 0; i < mi; i++ )
820 for( j = 1; j < 5; j++ ) fPhotoAbsorptionCof[i][j] = 0.;
822 for( i = 0; i < el; i++ )
825 I1 = fIonizationPotentials[Z[i]]*
keV;
827 for( j = 1; j < Z[i]; j++ ) n1 += fNbOfIntervals[j];
829 G4int n2 = n1 + fNbOfIntervals[Z[i]] - 1;
831 for( k = n1; k < n2; k++ )
833 B1 = fSandiaTable[k][0];
834 B2 = fSandiaTable[k+1][0];
836 for( c = 1; c < mi-1; c++ )
838 E1 = fPhotoAbsorptionCof[
c][0];
839 E2 = fPhotoAbsorptionCof[c+1][0];
841 if( B1 > E1 || B2 < E2 || E1 < I1 )
continue;
843 for( j = 1; j < 5; j++ )
845 fPhotoAbsorptionCof[
c][j] += fSandiaTable[k][j]*fractionW[i];
848 G4cout<<
"c="<<c<<
"; j="<<j<<
"; fST="<<fSandiaTable[k][j]
849 <<
"; frW="<<fractionW[i]<<
G4endl;
854 for( j = 1; j < 5; j++ )
856 fPhotoAbsorptionCof[mi-1][j] += fSandiaTable[k][j]*fractionW[i];
859 G4cout<<
"mi-1="<<mi-1<<
"; j="<<j<<
"; fST="<<fSandiaTable[k][j]
860 <<
"; frW="<<fractionW[i]<<
G4endl;
870 if( fPhotoAbsorptionCof[c][1] != 0.0 ||
871 fPhotoAbsorptionCof[c][2] != 0.0 ||
872 fPhotoAbsorptionCof[c][3] != 0.0 ||
873 fPhotoAbsorptionCof[c][4] != 0.0 )
continue;
875 for( jj = 2; jj < mi; jj++ )
877 for( kk = 0; kk < 5; kk++ ) {
878 fPhotoAbsorptionCof[jj-1][kk] = fPhotoAbsorptionCof[jj][kk];
886 if( fVerbose > 0 )
G4cout<<
"end SanMix, mi = "<<mi<<
G4endl;
895 return fMatNbOfIntervals;
900 G4int G4SandiaTable::GetNbOfIntervals(
G4int Z)
903 return fNbOfIntervals[
Z];
911 assert (Z>0 && Z<101 && interval>=0 && interval<fNbOfIntervals[Z]
914 G4int row = fCumulInterval[Z-1] + interval;
915 G4double x = fSandiaTable[row][0]*CLHEP::keV;
917 x = Z*CLHEP::amu/fZtoAratio[
Z]*fSandiaTable[row][j]*funitc[j];
927 assert (interval>=0 && interval<fMatNbOfIntervals && j>=0 && j<5);
928 return ((*(*fMatSandiaMatrix)[interval])[j]);
937 if (energy >= (*(*fMatSandiaMatrix)[0])[0]) {
939 G4int interval = fMatNbOfIntervals - 1;
940 while ((interval>0)&&(energy<(*(*fMatSandiaMatrix)[interval])[0]))
942 x = &((*(*fMatSandiaMatrix)[interval])[1]);
952 assert (interval >= 0 && interval < fMaxInterval && j >= 0 && j < 5 );
953 return ((*(*fMatSandiaMatrix)[interval])[j])*funitc[j];
961 assert (interval>=0 && interval<fMatNbOfIntervals && j>=0 && j<5);
962 if(!fMatSandiaMatrixPAI) ComputeMatSandiaMatrixPAI();
963 return ((*(*fMatSandiaMatrixPAI)[interval])[j]);
971 if(!fMatSandiaMatrixPAI) ComputeMatSandiaMatrixPAI();
973 if (energy >= (*(*fMatSandiaMatrixPAI)[0])[0]) {
975 G4int interval = fMatNbOfIntervals - 1;
976 while ((interval>0)&&(energy<(*(*fMatSandiaMatrixPAI)[interval])[0]))
978 x = &((*(*fMatSandiaMatrixPAI)[interval])[1]);
988 assert (interval >= 0 && interval < fMaxInterval && j >= 0 && j < 5 );
989 if(!fMatSandiaMatrixPAI) { ComputeMatSandiaMatrixPAI(); }
990 return ((*(*fMatSandiaMatrixPAI)[interval])[j]);
996 G4SandiaTable::GetIonizationPot(
G4int Z)
999 return fIonizationPotentials[
Z]*CLHEP::eV;
1007 if(!fMatSandiaMatrixPAI) { ComputeMatSandiaMatrixPAI(); }
1008 return fMatSandiaMatrixPAI;
1016 void G4SandiaTable::ComputeMatTable()
1018 G4int MaxIntervals = 0;
1019 G4int elm,
c, i, j, jj, k, kk, k1, k2,
c1, n1;
1025 for (elm = 0; elm<noElm; elm++)
1027 Z[elm] = (
G4int)(*ElementVector)[elm]->GetZ();
1028 MaxIntervals += fNbOfIntervals[Z[elm]];
1032 for(i = 0; i < noElm; i++) fMaxInterval += fNbOfIntervals[Z[i]];
1038 fPhotoAbsorptionCof =
new G4double* [fMaxInterval];
1040 for(i = 0; i < fMaxInterval; i++)
1042 fPhotoAbsorptionCof[i] =
new G4double[5];
1047 for(c = 0; c < fMaxInterval; c++)
1049 fPhotoAbsorptionCof[
c][0] = 0.;
1053 for(i = 0; i < noElm; i++)
1058 for(j = 1; j < Z[i]; j++)
1060 n1 += fNbOfIntervals[j];
1062 G4int n2 = n1 + fNbOfIntervals[Z[i]];
1064 for(k1 = n1; k1 < n2; k1++)
1066 if(I1 > fSandiaTable[k1][0])
1074 for(c1 = 1; c1 <
c; c1++)
1076 if(fPhotoAbsorptionCof[c1][0] == I1)
1084 fPhotoAbsorptionCof[
c][0] = I1;
1087 for(k2 = k1; k2 < n2; k2++)
1091 for(c1 = 1; c1 <
c; c1++)
1093 if(fPhotoAbsorptionCof[c1][0] == fSandiaTable[k2][0])
1101 fPhotoAbsorptionCof[
c][0] = fSandiaTable[k2][0];
1112 for(i = 0; i < fMaxInterval; i++)
1114 for(j = 1; j < 5; j++) fPhotoAbsorptionCof[i][j] = 0.;
1116 for(i = 0; i < noElm; i++)
1121 for(j = 1; j < Z[i]; j++)
1123 n1 += fNbOfIntervals[j];
1125 G4int n2 = n1 + fNbOfIntervals[Z[i]] - 1;
1127 for(k = n1; k < n2; k++)
1130 G4double B2 = fSandiaTable[k+1][0];
1131 for(
G4int q = 1; q < fMaxInterval-1; q++)
1133 G4double E1 = fPhotoAbsorptionCof[q][0];
1134 G4double E2 = fPhotoAbsorptionCof[q+1][0];
1135 if(B1 > E1 || B2 < E2 || E1 < I1)
1139 for(j = 1; j < 5; j++)
1141 fPhotoAbsorptionCof[q][j] += fSandiaTable[k][j]*fractionW[i];
1145 for(j = 1; j < 5; j++)
1147 fPhotoAbsorptionCof[fMaxInterval-1][j] +=
1148 fSandiaTable[k][j]*fractionW[i];
1158 if( fPhotoAbsorptionCof[c][1] != 0.0 ||
1159 fPhotoAbsorptionCof[c][2] != 0.0 ||
1160 fPhotoAbsorptionCof[c][3] != 0.0 ||
1161 fPhotoAbsorptionCof[c][4] != 0.0 )
continue;
1163 for(jj = 2; jj < fMaxInterval; jj++)
1165 for(kk = 0; kk < 5; kk++)
1167 fPhotoAbsorptionCof[jj-1][kk]= fPhotoAbsorptionCof[jj][kk];
1173 while( c < fMaxInterval - 1 );
1181 for (i = 0; i < fMaxInterval; i++)
1185 for ( i = 0; i < fMaxInterval; i++ )
1187 for( j = 0; j < 5; j++ )
1189 (*(*fMatSandiaMatrix)[i])[j] = fPhotoAbsorptionCof[i+1][j];
1192 fMatNbOfIntervals = fMaxInterval;
1196 G4cout<<
"vmg, G4SandiaTable::ComputeMatTable(), mat = "
1199 for ( i = 0; i < fMaxInterval; i++ )
void SandiaSwap(G4double **da, G4int i, G4int j)
std::vector< G4Element * > G4ElementVector
const G4String & GetName() const
static G4MaterialTable * GetMaterialTable()
std::vector< G4Material * > G4MaterialTable
G4double GetDensity() const
G4int GetMaxInterval() const
G4double GetSandiaMatTablePAI(G4int, G4int)
const G4ElementVector * GetElementVector() const
G4int SandiaMixing(G4int Z[], const G4double *fractionW, G4int el, G4int mi)
G4double GetSandiaMatTable(G4int, G4int)
const G4double * GetVecNbOfAtomsPerVolume() const
G4GLOB_DLL std::ostream G4cout
void SandiaSort(G4double **da, G4int sz)
G4double GetSandiaCofForMaterial(G4int, G4int)
static size_t GetNumberOfMaterials()
G4int SandiaIntervals(G4int Z[], G4int el)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
void GetSandiaCofPerAtom(G4int Z, G4double energy, std::vector< G4double > &coeff)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4OrderedTable * GetSandiaMatrixPAI()
G4int GetMatNbOfIntervals()
static G4double GetZtoA(G4int Z)
G4double GetPhotoAbsorpCof(G4int i, G4int j) const
size_t GetNumberOfElements() const
G4double GetSandiaCofForMaterialPAI(G4int, G4int)
G4double ** GetPointerToCof()
const G4double * GetFractionVector() const
void Initialize(G4Material *)