#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: