#include <G4SandiaTable.hh>
|  | 
|  | G4SandiaTable (G4Material *) | 
|  | 
|  | ~G4SandiaTable () | 
|  | 
| void | GetSandiaCofPerAtom (G4int Z, G4double energy, std::vector< G4double > &coeff) const | 
|  | 
| void | GetSandiaCofWater (G4double energy, std::vector< G4double > &coeff) const | 
|  | 
| G4double | GetWaterEnergyLimit () const | 
|  | 
| G4double | GetWaterCofForMaterial (G4int, G4int) const | 
|  | 
| G4int | GetMatNbOfIntervals () const | 
|  | 
| G4double | GetSandiaCofForMaterial (G4int, G4int) const | 
|  | 
| G4double | GetSandiaMatTable (G4int, G4int) const | 
|  | 
| const G4double * | GetSandiaCofForMaterial (G4double energy) const | 
|  | 
| G4double | GetSandiaMatTablePAI (G4int, G4int) const | 
|  | 
| const G4double * | GetSandiaCofForMaterialPAI (G4double energy) const | 
|  | 
| void | SetVerbose (G4int ver) | 
|  | 
|  | G4SandiaTable (__void__ &) | 
|  | 
|  | G4SandiaTable (G4int matIndex) | 
|  | 
|  | G4SandiaTable () | 
|  | 
| void | Initialize (G4Material *) | 
|  | 
| G4int | SandiaIntervals (G4int Z[], G4int el) | 
|  | 
| G4int | SandiaMixing (G4int Z[], const G4double *fractionW, G4int el, G4int mi) | 
|  | 
| G4double | GetPhotoAbsorpCof (G4int i, G4int j) const | 
|  | 
| G4int | GetMaxInterval () const | 
|  | 
| G4bool | GetLowerI1 () | 
|  | 
| void | SetLowerI1 (G4bool flag) | 
|  | 
Definition at line 66 of file G4SandiaTable.hh.
 
      
        
          | G4SandiaTable::G4SandiaTable | ( | G4Material * | material | ) |  | 
      
 
Definition at line 68 of file G4SandiaTable.cc.
   71   fMatSandiaMatrix    = 
nullptr; 
 
   72   fMatSandiaMatrixPAI = 
nullptr;
 
   73   fPhotoAbsorptionCof = 
nullptr;
 
   75   fMatNbOfIntervals   = 0;
 
   81   if(0 == fCumulInterval[0]) {
 
   82     fCumulInterval[0] = 1;
 
   90   fSandiaCofPerAtom.resize(4,0.0);
 
   93   ComputeMatSandiaMatrix(); 
 
static const G4int fNbOfIntervals[101]
 
 
 
      
        
          | G4SandiaTable::~G4SandiaTable | ( |  | ) |  | 
      
 
Definition at line 114 of file G4SandiaTable.cc.
  119     delete fMatSandiaMatrix;
 
  121   if(fMatSandiaMatrixPAI) 
 
  124     delete fMatSandiaMatrixPAI;
 
  126   if(fPhotoAbsorptionCof)
 
  128     delete [] fPhotoAbsorptionCof;
 
 
 
 
      
        
          | G4SandiaTable::G4SandiaTable | ( | __void__ & |  | ) |  | 
      
 
Definition at line 101 of file G4SandiaTable.cc.
  102   : fMaterial(
nullptr),fMatSandiaMatrix(
nullptr),
 
  103     fMatSandiaMatrixPAI(
nullptr),fPhotoAbsorptionCof(
nullptr)
 
  106   fMatNbOfIntervals = 0;
 
  109   fSandiaCofPerAtom.resize(4,0.0);
 
 
 
      
        
          | G4SandiaTable::G4SandiaTable | ( | G4int | matIndex | ) |  | 
      
 
Definition at line 661 of file G4SandiaTable.cc.
  664   fMatNbOfIntervals   = 0;
 
  665   fMatSandiaMatrix    = 0; 
 
  666   fMatSandiaMatrixPAI = 0;
 
  667   fPhotoAbsorptionCof = 0;
 
  673   fSandiaCofPerAtom.resize(4,0.0);
 
  678   if ( matIndex >= 0 && matIndex < numberOfMat)
 
  680       fMaterial = (*theMaterialTable)[matIndex];
 
  684       G4Exception(
"G4SandiaTable::G4SandiaTable(G4int matIndex)", 
"mat401",
 
static G4MaterialTable * GetMaterialTable()
std::vector< G4Material * > G4MaterialTable
static size_t GetNumberOfMaterials()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
 
 
      
        
          | G4SandiaTable::G4SandiaTable | ( |  | ) |  | 
      
 
Definition at line 691 of file G4SandiaTable.cc.
  694   fMatNbOfIntervals   = 0;
 
  695   fMatSandiaMatrix    = 0; 
 
  696   fMatSandiaMatrixPAI = 0;
 
  697   fPhotoAbsorptionCof = 0;
 
  703   fSandiaCofPerAtom.resize(4,0.0);
 
 
 
 
  
  | 
        
          | G4bool G4SandiaTable::GetLowerI1 | ( |  | ) |  |  | inline | 
 
 
      
        
          | G4int G4SandiaTable::GetMatNbOfIntervals | ( |  | ) | const | 
      
 
 
      
        
          | G4int G4SandiaTable::GetMaxInterval | ( |  | ) | const | 
      
 
 
Definition at line 742 of file G4SandiaTable.cc.
  744   return  fPhotoAbsorptionCof[i][j]*funitc[j];
 
 
 
 
Definition at line 983 of file G4SandiaTable.cc.
  986   if(interval<0 || interval>=fMatNbOfIntervals) {
 
  987     PrintErrorV(
"GetSandiaCofForMaterial");
 
  988     interval = (interval<0) ? 0 : fMatNbOfIntervals-1;
 
  991     PrintErrorV(
"GetSandiaCofForMaterial");
 
  995   return ((*(*fMatSandiaMatrix)[interval])[j]); 
 
 
 
 
      
        
          | const G4double * G4SandiaTable::GetSandiaCofForMaterial | ( | G4double | energy | ) | const | 
      
 
Definition at line 1001 of file G4SandiaTable.cc.
 1004   if (
energy > (*(*fMatSandiaMatrix)[0])[0]) { 
 
 1005     interval = fMatNbOfIntervals - 1;
 
 1007     while ((interval>0)&&(
energy<(*(*fMatSandiaMatrix)[interval])[0])) 
 
 1010   return &((*(*fMatSandiaMatrix)[interval])[1]);
 
G4double energy(const ThreeVector &p, const G4double m)
 
 
 
      
        
          | const G4double* G4SandiaTable::GetSandiaCofForMaterialPAI | ( | G4double | energy | ) | const | 
      
 
 
Definition at line 135 of file G4SandiaTable.cc.
  139   if(Z < 1 || Z > 100) {
 
  140     Z = PrintErrorZ(
Z, 
"GetSandiaCofPerAtom");
 
  142   if(4 > coeff.size()) { 
 
  143     PrintErrorV(
"GetSandiaCofPerAtom(): input vector is resized"); 
 
  157     row = fCumulInterval[
Z-1] + interval;
 
  159     while ((interval>0) && (
energy<fSandiaTable[row][0]*CLHEP::keV)) {
 
  161       row = fCumulInterval[
Z-1] + interval;
 
  167   coeff[0]=AoverAvo*funitc[1]*fSandiaTable[row][1];     
 
  168   coeff[1]=AoverAvo*funitc[2]*fSandiaTable[row][2];     
 
  169   coeff[2]=AoverAvo*funitc[3]*fSandiaTable[row][3];     
 
  170   coeff[3]=AoverAvo*funitc[4]*fSandiaTable[row][4];              
 
static constexpr double keV
static const G4double fZtoAratio[101]
G4double energy(const ThreeVector &p, const G4double m)
static const G4double Emin
static const G4int fNbOfIntervals[101]
 
 
 
Definition at line 176 of file G4SandiaTable.cc.
  180   if(4 > coeff.size()) { 
 
  181     PrintErrorV(
"GetSandiaCofWater: input vector is resized"); 
 
  187     i = fH2OlowerInt - 1;
 
  193   coeff[1]=funitc[2]*fH2OlowerI1[i][2];     
 
  194   coeff[2]=funitc[3]*fH2OlowerI1[i][3];     
 
  195   coeff[3]=funitc[4]*fH2OlowerI1[i][4];
 
static const G4double fH2OlowerI1[23][5]
static constexpr double keV
G4double energy(const ThreeVector &p, const G4double m)
 
 
 
Definition at line 1016 of file G4SandiaTable.cc.
 1019   if(interval<0 || interval>=fMatNbOfIntervals) {
 
 1020     PrintErrorV(
"GetSandiaCofForMaterial");
 
 1021     interval = (interval<0) ? 0 : fMatNbOfIntervals-1;
 
 1024     PrintErrorV(
"GetSandiaCofForMaterial");
 
 1028   return ((*(*fMatSandiaMatrix)[interval])[j])*funitc[j]; 
 
 
 
 
Definition at line 1034 of file G4SandiaTable.cc.
 1037   if(interval<0 || interval>=fMaxInterval) {
 
 1038     PrintErrorV(
"GetSandiaCofForMaterialPAI");
 
 1039     interval = (interval<0) ? 0 : fMaxInterval-1;
 
 1042     PrintErrorV(
"GetSandiaCofForMaterialPAI");
 
 1046   return ((*(*fMatSandiaMatrixPAI)[interval])[j]); 
 
 
 
 
      
        
          | G4double G4SandiaTable::GetWaterEnergyLimit | ( |  | ) | const | 
      
 
Definition at line 200 of file G4SandiaTable.cc.
static const G4double fH2OlowerI1[23][5]
static constexpr double keV
 
 
 
Definition at line 214 of file G4SandiaTable.cc.
  217   if(Z < 1 || Z > 100) {
 
  218     Z = PrintErrorZ(
Z, 
"GetSandiaCofPerAtom");
 
static const G4double fZtoAratio[101]
 
 
 
Definition at line 769 of file G4SandiaTable.cc.
  771   G4int c,  i, flag = 0, n1 = 1;
 
  781     G4cout<<
"begin sanInt, fMaxInterval = "<<fMaxInterval<<
G4endl;
 
  784   fPhotoAbsorptionCof = 
new G4double* [fMaxInterval];
 
  786   for( i = 0; i < fMaxInterval; ++i ) {
 
  787     fPhotoAbsorptionCof[i] = 
new G4double[5];
 
  791   for( c = 0; c < fMaxInterval; ++
c ) { fPhotoAbsorptionCof[
c][0] = 0.; }
 
  795   for( i = 0; i < el; ++i )
 
  804     for( k1 = n1; k1 < n2; k1++ )
 
  806       if( I1  > fSandiaTable[k1][0] )
 
  814     for( c1 = 1; c1 < 
c; c1++ )
 
  816       if( fPhotoAbsorptionCof[c1][0] == I1 ) 
 
  824       fPhotoAbsorptionCof[
c][0] = I1;
 
  827     for( k2 = k1; k2 < n2; k2++ )
 
  831       for( c1 = 1; c1 < 
c; c1++ )
 
  833         if( fPhotoAbsorptionCof[c1][0] == fSandiaTable[k2][0] )
 
  841         fPhotoAbsorptionCof[
c][0] = fSandiaTable[k2][0];
 
  843       G4cout<<
"sanInt, c = "<<c<<
", E_c = "<<fPhotoAbsorptionCof[
c][0]
 
  851   SandiaSort(fPhotoAbsorptionCof,c);
 
  854     G4cout<<
"end SanInt, fMaxInterval = "<<fMaxInterval<<
G4endl;
 
static const G4double fIonizationPotentials[101]
G4GLOB_DLL std::ostream G4cout
static constexpr double keV
static const G4int fNbOfIntervals[101]
 
 
 
Definition at line 865 of file G4SandiaTable.cc.
  870   G4int i, j, n1, k, 
c=1, jj, kk;
 
  873   for( i = 0; i < mi; ++i )
 
  875     for( j = 1; j < 5; ++j ) fPhotoAbsorptionCof[i][j] = 0.;
 
  877   for( i = 0; i < el; ++i )
 
  886     for( k = n1; k < n2; ++k )
 
  888       B1 = fSandiaTable[k][0];
 
  889       B2 = fSandiaTable[k+1][0];
 
  891       for( c = 1; c < mi-1; ++
c )
 
  893         E1 = fPhotoAbsorptionCof[
c][0];
 
  894         E2 = fPhotoAbsorptionCof[c+1][0];
 
  896         if( B1 > E1 || B2 < E2 || E1 < I1 )   
continue;
 
  898     for( j = 1; j < 5; ++j ) 
 
  900           fPhotoAbsorptionCof[
c][j] += fSandiaTable[k][j]*fractionW[i];
 
  903         G4cout<<
"c="<<c<<
"; j="<<j<<
"; fST="<<fSandiaTable[k][j]
 
  904           <<
"; frW="<<fractionW[i]<<
G4endl;
 
  909     for( j = 1; j < 5; ++j )   
 
  911       fPhotoAbsorptionCof[mi-1][j] += fSandiaTable[k][j]*fractionW[i];
 
  914     G4cout<<
"mi-1="<<mi-1<<
"; j="<<j<<
"; fST="<<fSandiaTable[k][j]
 
  915           <<
"; frW="<<fractionW[i]<<
G4endl;
 
  925     if( fPhotoAbsorptionCof[c][1] != 0.0 ||
 
  926     fPhotoAbsorptionCof[c][2] != 0.0 ||
 
  927         fPhotoAbsorptionCof[c][3] != 0.0 || 
 
  928     fPhotoAbsorptionCof[c][4] != 0.0     )  
continue;
 
  930     for( jj = 2; jj < mi; ++jj )
 
  932       for( kk = 0; kk < 5; ++kk ) {
 
  933     fPhotoAbsorptionCof[jj-1][kk] = fPhotoAbsorptionCof[jj][kk];
 
  942   if( fVerbose > 0 ) 
G4cout<<
"end SanMix, mi = "<<mi<<
G4endl;
 
static const G4double fIonizationPotentials[101]
G4GLOB_DLL std::ostream G4cout
static constexpr double keV
static const G4int fNbOfIntervals[101]
 
 
 
The documentation for this class was generated from the following files: