341 G4int MaxIntervals = 0;
342 G4int elm,
c, i, j, jj, k, k1, k2,
c1, n1;
347 std::vector<G4int>
Z(noElm);
349 for ( elm = 0; elm < noElm; elm++ )
351 Z[elm] = (
G4int)(*ElementVector)[elm]->GetZ();
369 fPhotoAbsorptionCof0[
c] = 0.;
370 fPhotoAbsorptionCof1[
c] = 0.;
371 fPhotoAbsorptionCof2[
c] = 0.;
372 fPhotoAbsorptionCof3[
c] = 0.;
373 fPhotoAbsorptionCof4[
c] = 0.;
377 for(i = 0; i < noElm; ++i)
386 for( k1 = n1; k1 < n2; k1++ )
396 for( c1 = 1; c1 <
c; c1++ )
398 if( fPhotoAbsorptionCof0[c1] == I1 )
406 fPhotoAbsorptionCof0[
c] = I1;
409 for( k2 = k1; k2 < n2; k2++ )
413 for( c1 = 1; c1 <
c; c1++ )
430 for( i = 1; i <
c; ++i )
432 for( j = i + 1; j <
c; ++j )
434 if( fPhotoAbsorptionCof0[i] > fPhotoAbsorptionCof0[j] )
437 fPhotoAbsorptionCof0[i] = fPhotoAbsorptionCof0[j];
438 fPhotoAbsorptionCof0[j] =
tmp;
443 G4cout<<i<<
"\t energy = "<<fPhotoAbsorptionCof0[i]<<
G4endl;
452 for( i = 0; i < noElm; ++i )
456 for( i = 0; i < noElm; ++i )
465 for(k = n1; k < n2; ++k)
470 for(
G4int q = 1; q < fMaxInterval-1; q++)
472 G4double E1 = fPhotoAbsorptionCof0[q];
473 G4double E2 = fPhotoAbsorptionCof0[q+1];
477 G4cout<<
"k = "<<k<<
", q = "<<q<<
", B1 = "<<B1<<
", B2 = "<<B2
478 <<
", E1 = "<<E1<<
", E2 = "<<E2<<
G4endl;
480 if( B1 > E1 || B2 < E2 || E1 < I1 )
484 G4cout<<
"continue for: B1 = "<<B1<<
", B2 = "<<B2<<
", E1 = " 485 <<E1<<
", E2 = "<<E2<<
G4endl;
489 fPhotoAbsorptionCof1[q] +=
fSandiaTable[k][1]*fractionW[i];
490 fPhotoAbsorptionCof2[q] +=
fSandiaTable[k][2]*fractionW[i];
491 fPhotoAbsorptionCof3[q] +=
fSandiaTable[k][3]*fractionW[i];
492 fPhotoAbsorptionCof4[q] +=
fSandiaTable[k][4]*fractionW[i];
497 fPhotoAbsorptionCof1[fMaxInterval-1] +=
fSandiaTable[k][1]*fractionW[i];
498 fPhotoAbsorptionCof2[fMaxInterval-1] +=
fSandiaTable[k][2]*fractionW[i];
499 fPhotoAbsorptionCof3[fMaxInterval-1] +=
fSandiaTable[k][3]*fractionW[i];
500 fPhotoAbsorptionCof4[fMaxInterval-1] +=
fSandiaTable[k][4]*fractionW[i];
508 if( fPhotoAbsorptionCof1[c] != 0.0 ||
509 fPhotoAbsorptionCof2[c] != 0.0 ||
510 fPhotoAbsorptionCof3[c] != 0.0 ||
511 fPhotoAbsorptionCof4[c] != 0.0 )
continue;
519 fPhotoAbsorptionCof0[jj-1] = fPhotoAbsorptionCof0[jj];
520 fPhotoAbsorptionCof1[jj-1] = fPhotoAbsorptionCof1[jj];
521 fPhotoAbsorptionCof2[jj-1] = fPhotoAbsorptionCof2[jj];
522 fPhotoAbsorptionCof3[jj-1] = fPhotoAbsorptionCof3[jj];
523 fPhotoAbsorptionCof4[jj-1] = fPhotoAbsorptionCof4[jj];
529 while( c < fMaxInterval - 1 );
531 if( fPhotoAbsorptionCof0[fMaxInterval-1] == 0.0 ) fMaxInterval--;
541 fPhotoAbsorptionCof0[i+1] *=
funitc[0];
559 (*(*fMatSandiaMatrixPAI)[i])[0] =
fH2OlowerI1[i][0];
560 (*(*fMatSandiaMatrixPAI)[i])[1] =
fH2OlowerI1[i][1];
561 (*(*fMatSandiaMatrixPAI)[i])[2] =
fH2OlowerI1[i][2];
562 (*(*fMatSandiaMatrixPAI)[i])[3] =
fH2OlowerI1[i][3];
563 (*(*fMatSandiaMatrixPAI)[i])[4] =
fH2OlowerI1[i][4];
567 (*(*fMatSandiaMatrixPAI)[i])[0] = fPhotoAbsorptionCof0[i+1-fH2OlowerInt];
568 (*(*fMatSandiaMatrixPAI)[i])[1] = fPhotoAbsorptionCof1[i+1-fH2OlowerInt];
569 (*(*fMatSandiaMatrixPAI)[i])[2] = fPhotoAbsorptionCof2[i+1-fH2OlowerInt];
570 (*(*fMatSandiaMatrixPAI)[i])[3] = fPhotoAbsorptionCof3[i+1-fH2OlowerInt];
571 (*(*fMatSandiaMatrixPAI)[i])[4] = fPhotoAbsorptionCof4[i+1-fH2OlowerInt];
583 (*(*fMatSandiaMatrixPAI)[i])[0] = fPhotoAbsorptionCof0[i+1];
584 (*(*fMatSandiaMatrixPAI)[i])[1] = fPhotoAbsorptionCof1[i+1];
585 (*(*fMatSandiaMatrixPAI)[i])[2] = fPhotoAbsorptionCof2[i+1];
586 (*(*fMatSandiaMatrixPAI)[i])[3] = fPhotoAbsorptionCof3[i+1];
587 (*(*fMatSandiaMatrixPAI)[i])[4] = fPhotoAbsorptionCof4[i+1];
595 G4cout<<
"vmg, G4SandiaTable::ComputeMatSandiaMatrixPAI(), mat = " G4OrderedTable * fMatSandiaMatrixPAI
std::vector< G4Element * > G4ElementVector
static const G4double funitc[5]
const G4double * GetFractionVector() const
G4double GetDensity() const
static const G4double fH2OlowerI1[23][5]
G4GLOB_DLL std::ostream G4cout
G4double GetSandiaMatTablePAI(G4int, G4int) const
static const G4int fNbOfIntervals[101]
size_t GetNumberOfElements() const
static const G4int fH2OlowerInt
static const G4double fIonizationPotentials[101]
const G4ElementVector * GetElementVector() const
const G4String & GetName() const
static const G4double fSandiaTable[981][5]