137 std::map < G4double , std::vector < E_isoAng* >* >::iterator itt;
138 for ( itt = it->second->begin() ; itt != it->second->end() ; itt++ )
140 std::vector< E_isoAng* >::iterator ittt;
141 for ( ittt = itt->second->begin(); ittt != itt->second->end() ; ittt++ )
152 for ( std::map <
G4int , std::map <
G4double , std::vector < std::pair< G4double , G4double >* >* >* >::iterator it =
coherentFSs->begin() ; it !=
coherentFSs->end() ; it++ )
154 std::map < G4double , std::vector < std::pair< G4double , G4double >* >* >::iterator itt;
155 for ( itt = it->second->begin() ; itt != it->second->end() ; itt++ )
157 std::vector < std::pair< G4double , G4double >* >::iterator ittt;
158 for ( ittt = itt->second->begin(); ittt != itt->second->end() ; ittt++ )
171 std::map < G4double , std::vector < E_P_E_isoAng* >* >::iterator itt;
172 for ( itt = it->second->begin() ; itt != it->second->end() ; itt++ )
174 std::vector < E_P_E_isoAng* >::iterator ittt;
175 for ( ittt = itt->second->begin(); ittt != itt->second->end() ; ittt++ )
177 std::vector < E_isoAng* >::iterator it4;
178 for ( it4 = (*ittt)->vE_isoAngle.begin() ; it4 != (*ittt)->vE_isoAngle.end() ; it4++ )
208 std::map < G4double , std::vector < std::pair< G4double , G4double >* >* >* aCoherentFSDATA =
new std::map < G4double , std::vector < std::pair< G4double , G4double >* >* >;
211 std::istringstream theChannel(std::ios::in);
214 std::vector< G4double > vBraggE;
217 while ( theChannel >> dummy )
222 std::vector < std::pair< G4double , G4double >* >* anBragE_P =
new std::vector < std::pair< G4double , G4double >* >;
226 for (
G4int i = 0 ; i <
n ; i++ )
230 if ( aCoherentFSDATA->size() == 0 )
233 vBraggE.push_back( Ei );
240 anBragE_P->push_back (
new std::pair < G4double , G4double > ( Ei , Pi ) );
243 aCoherentFSDATA->insert ( std::pair <
G4double , std::vector < std::pair< G4double , G4double >* >* > ( temp , anBragE_P ) );
246 return aCoherentFSDATA;
253 std::map < G4double , std::vector < E_P_E_isoAng* >* >* anT_E_P_E_isoAng =
new std::map < G4double , std::vector < E_P_E_isoAng* >* >;
256 std::istringstream theChannel(std::ios::in);
260 while ( theChannel >> dummy )
265 std::vector < E_P_E_isoAng* >* vE_P_E_isoAng =
new std::vector < E_P_E_isoAng* >;
268 for (
G4int i = 0 ; i <
n ; i++ )
272 anT_E_P_E_isoAng->insert ( std::pair <
G4double , std::vector < E_P_E_isoAng* >* > ( temp , vE_P_E_isoAng ) );
276 return anT_E_P_E_isoAng;
296 for (
G4int i = 0 ; i < aData->
n ; i++ )
303 anE_isoAng->
n = nl - 2;
304 anE_isoAng->
isoAngle.resize( anE_isoAng->
n );
306 aData->
prob.push_back( prob );
308 for (
G4int j = 0 ; j < anE_isoAng->
n ; j++ )
319 for (
G4int i = 0 ; i < aData->
n - 1 ; i++ )
324 total += ( ( aData->
prob[i] ) * dE );
335 std::map < G4double , std::vector < E_isoAng* >* >* T_E =
new std::map < G4double , std::vector < E_isoAng* >* >;
338 std::istringstream theChannel(std::ios::in);
342 while ( theChannel >> dummy )
347 std::vector < E_isoAng* >* vE_isoAng =
new std::vector < E_isoAng* >;
350 for (
G4int i = 0 ; i <
n ; i++ )
352 T_E->insert ( std::pair <
G4double , std::vector < E_isoAng* >* > ( temp , vE_isoAng ) );
380 for (
G4int i = 0 ; i < aData->
n ; i++ )
406 G4bool findThermalElement =
false;
409 for (
G4int i = 0; i <
n ; i++ )
416 if (
getTS_ID( NULL , theElement ) != -1 )
418 ielement =
getTS_ID( NULL , theElement );
419 findThermalElement =
true;
422 else if (
getTS_ID( theMaterial , theElement ) != -1 )
424 ielement =
getTS_ID( theMaterial , theElement );
425 findThermalElement =
true;
431 if ( findThermalElement ==
true )
443 if ( random <= inelastic/total )
448 std::map < G4double , std::vector< E_P_E_isoAng* >* >::iterator it;
449 std::vector<G4double> v_temp;
451 for ( it =
inelasticFSs->find( ielement )->second->begin() ; it !=
inelasticFSs->find( ielement )->second->end() ; it++ )
453 v_temp.push_back( it->first );
457 std::pair < G4double , G4double > tempLH =
find_LH ( aTemp , &v_temp );
461 std::vector< E_P_E_isoAng* >* vNEP_EPM_TL = 0;
462 std::vector< E_P_E_isoAng* >* vNEP_EPM_TH = 0;
464 if ( tempLH.first != 0.0 && tempLH.second != 0.0 )
466 vNEP_EPM_TL =
inelasticFSs->find( ielement )->second->find ( tempLH.first/
kelvin )->second;
467 vNEP_EPM_TH =
inelasticFSs->find( ielement )->second->find ( tempLH.second/
kelvin )->second;
469 else if ( tempLH.first == 0.0 )
471 std::map < G4double , std::vector< E_P_E_isoAng* >* >::iterator itm;
473 vNEP_EPM_TL = itm->second;
475 vNEP_EPM_TH = itm->second;
476 tempLH.first = tempLH.second;
477 tempLH.second = itm->first;
479 else if ( tempLH.second == 0.0 )
481 std::map < G4double , std::vector< E_P_E_isoAng* >* >::iterator itm;
484 vNEP_EPM_TH = itm->second;
486 vNEP_EPM_TL = itm->second;
487 tempLH.second = tempLH.first;
488 tempLH.first = itm->first;
497 sE =
get_linear_interpolated ( aTemp , std::pair < G4double , G4double > ( tempLH.first , TL.first ) , std::pair < G4double , G4double > ( tempLH.second , TH.first ) );
501 if ( TL.second.n == TH.second.n )
504 anE_isoAng.
n = TL.second.n;
505 for (
G4int i=0 ; i < anE_isoAng.
n ; i++ )
508 angle =
get_linear_interpolated ( aTemp , std::pair< G4double , G4double > ( tempLH.first , TL.second.isoAngle[ i ] ) , std::pair< G4double , G4double > ( tempLH.second , TH.second.isoAngle[ i ] ) );
509 anE_isoAng.
isoAngle.push_back( angle );
511 mu =
getMu( &anE_isoAng );
515 G4HadronicException(__FILE__, __LINE__,
"A problem is found in Thermal Scattering Data! Do not yet supported");
531 std::map < G4double , std::vector< std::pair< G4double , G4double >* >* >::iterator it;
532 std::vector<G4double> v_temp;
534 for ( it =
coherentFSs->find( ielement )->second->begin() ; it !=
coherentFSs->find( ielement )->second->end() ; it++ )
536 v_temp.push_back( it->first );
540 std::pair < G4double , G4double > tempLH =
find_LH ( aTemp , &v_temp );
545 std::vector< std::pair< G4double , G4double >* >* pvE_p_TL = NULL;
546 std::vector< std::pair< G4double , G4double >* >* pvE_p_TH = NULL;
548 if ( tempLH.first != 0.0 && tempLH.second != 0.0 )
550 pvE_p_TL =
coherentFSs->find( ielement )->second->find ( tempLH.first/
kelvin )->second;
551 pvE_p_TH =
coherentFSs->find( ielement )->second->find ( tempLH.first/
kelvin )->second;
553 else if ( tempLH.first == 0.0 )
555 pvE_p_TL =
coherentFSs->find( ielement )->second->find ( v_temp[ 0 ] )->second;
556 pvE_p_TH =
coherentFSs->find( ielement )->second->find ( v_temp[ 1 ] )->second;
557 tempLH.first = tempLH.second;
558 tempLH.second = v_temp[ 1 ];
560 else if ( tempLH.second == 0.0 )
562 pvE_p_TL =
coherentFSs->find( ielement )->second->find ( v_temp.back() )->
second;
563 std::vector< G4double >::iterator itv;
567 pvE_p_TL =
coherentFSs->find( ielement )->second->find ( *itv )->second;
568 tempLH.second = tempLH.first;
574 G4HadronicException(__FILE__, __LINE__,
"A problem is found in Thermal Scattering Data! Unexpected temperature values in data");
577 std::vector< G4double > vE_T;
578 std::vector< G4double > vp_T;
580 G4int n1 = pvE_p_TL->size();
583 for (
G4int i=1 ; i < n1 ; i++ )
585 if ( (*pvE_p_TL)[i]->first != (*pvE_p_TH)[i]->first )
G4HadronicException(__FILE__, __LINE__,
"A problem is found in Thermal Scattering Data!");
586 vE_T.push_back ( (*pvE_p_TL)[i]->first );
587 vp_T.push_back (
get_linear_interpolated ( aTemp , std::pair< G4double , G4double > ( tempLH.first , (*pvE_p_TL)[i]->second ) , std::pair< G4double , G4double > ( tempLH.second , (*pvE_p_TL)[i]->second ) ) );
591 for (
G4int i = 1 ; i <
n ; i++ )
593 if ( E/
eV < vE_T[ i ] )
603 for (
G4int i = 1 ; i < j ; i++ )
605 G4double Pi = vp_T[ i ] / vp_T[ j ];
606 if ( rand_for_mu < Pi )
618 if ( mu < -1.0 ) mu = -1.0;
630 std::map < G4double , std::vector < E_isoAng* >* >::iterator it;
631 std::vector<G4double> v_temp;
635 v_temp.push_back( it->first );
639 std::pair < G4double , G4double > tempLH =
find_LH ( aTemp , &v_temp );
648 if ( tempLH.first != 0.0 && tempLH.second != 0.0 ) {
652 }
else if ( tempLH.first == 0.0 ) {
656 tempLH.first = tempLH.second;
657 tempLH.second = v_temp[ 1 ];
658 }
else if ( tempLH.second == 0.0 ) {
661 std::vector< G4double >::iterator itv;
666 tempLH.second = tempLH.first;
674 if ( anEPM_TL_E.
n == anEPM_TH_E.
n )
676 anEPM_T_E.
n = anEPM_TL_E.
n;
677 for (
G4int i=0 ; i < anEPM_TL_E.
n ; i++ )
680 angle =
get_linear_interpolated ( aTemp , std::pair< G4double , G4double > ( tempLH.first , anEPM_TL_E.
isoAngle[ i ] ) , std::pair< G4double , G4double > ( tempLH.second , anEPM_TH_E.
isoAngle[ i ] ) );
681 anEPM_T_E.
isoAngle.push_back( angle );
683 mu =
getMu ( &anEPM_T_E );
687 G4HadronicException(__FILE__, __LINE__,
"A problem is found in Thermal Scattering Data! Do not yet supported");
717 G4int in = int ( random * ( (*anEPM).n ) );
721 G4double mu_l = (*anEPM).isoAngle[ in-1 ];
722 G4double mu_h = (*anEPM).isoAngle[ in ];
723 result = ( mu_h - mu_l ) * ( random * ( (*anEPM).n ) - in ) + mu_l;
728 G4double D = ( (*anEPM).isoAngle[ 0 ] - ( -1 ) ) + ( 1 - (*anEPM).isoAngle[ (*anEPM).n - 1 ] );
729 G4double ratio = ( (*anEPM).isoAngle[ 0 ] - ( -1 ) ) /
D;
733 G4double mu_h = (*anEPM).isoAngle[ 0 ];
734 result = ( mu_h - mu_l ) * x + mu_l;
738 G4double mu_l = (*anEPM).isoAngle[ (*anEPM).n - 1 ];
740 result = ( mu_h - mu_l ) * x + mu_l;
754 if ( aVector->size() == 1 ) {
755 LL = aVector->front();
756 H = aVector->front();
761 for ( std::vector< G4double >::iterator
762 it = aVector->begin() ; it != aVector->end() ; it++ ) {
765 if ( it != aVector->begin() ) {
777 if ( H == 0.0 ) LL = aVector->back();
780 return std::pair < G4double , G4double > (
LL , H );
788 if ( High.first - Low.first != 0 ) {
789 y = ( High.second - Low.second ) / ( High.first - Low.first ) * ( x - Low.first ) + Low.second;
791 if ( High.second == Low.second ) {
794 G4cout <<
"G4ParticleHPThermalScattering liner interpolation err!!" <<
G4endl;
807 std::vector< E_isoAng* >::iterator iv;
809 std::vector< G4double > v_e;
811 for ( iv = vEPM->begin() ; iv != vEPM->end() ; iv++ )
812 v_e.push_back ( (*iv)->energy );
814 std::pair < G4double , G4double > energyLH =
find_LH ( energy , &v_e );
820 if ( energyLH.first != 0.0 && energyLH.second != 0.0 )
822 for ( iv = vEPM->begin() ; iv != vEPM->end() ; iv++ )
824 if ( energyLH.first == (*iv)->energy )
831 else if ( energyLH.first == 0.0 )
833 panEPM_T_EL = (*vEPM)[0];
834 panEPM_T_EH = (*vEPM)[1];
836 else if ( energyLH.second == 0.0 )
838 panEPM_T_EH = (*vEPM).back();
847 if ( ! (
check_E_isoAng (panEPM_T_EL) ) ) panEPM_T_EL= panEPM_T_EH;
848 if ( ! (
check_E_isoAng (panEPM_T_EH) ) ) panEPM_T_EH= panEPM_T_EL;
850 if ( panEPM_T_EL->
n == panEPM_T_EH->
n )
853 anEPM_T_E.
n = panEPM_T_EL->
n;
855 for (
G4int i=0 ; i < panEPM_T_EL->
n ; i++ )
858 angle =
get_linear_interpolated ( energy , std::pair< G4double , G4double > ( energyLH.first , panEPM_T_EL->
isoAngle[ i ] ) , std::pair< G4double , G4double > ( energyLH.second , panEPM_T_EH->
isoAngle[ i ] ) );
859 anEPM_T_E.
isoAngle.push_back( angle );
864 G4cout <<
"G4ParticleHPThermalScattering Do not Suuport yet." <<
G4endl;
898 for (
G4int i = 0 ; i < n-1 ; i++ )
903 sum_p += ( ( anE_P_E_isoAng->
prob[i] ) * dE );
905 if ( random <= sum_p/total )
907 secondary_energy =
get_linear_interpolated ( random , std::pair < G4double , G4double > ( sum_p_L/total , E_L ) , std::pair < G4double , G4double > ( sum_p/total , E_H ) );
908 secondary_energy = secondary_energy*
eV;
914 return secondary_energy;
922 std::map< G4double , G4int > map_energy;
924 std::vector< G4double > v_energy;
926 std::vector< E_P_E_isoAng* >::iterator itv;
928 for ( itv = vNEP_EPM->begin(); itv != vNEP_EPM->end(); itv++ )
930 v_energy.push_back( (*itv)->energy );
931 map_energy.insert( std::pair < G4double , G4int > ( (*itv)->energy , i ) );
935 std::pair < G4double , G4double > energyLH =
find_LH ( pE , &v_energy );
940 if ( energyLH.first != 0.0 && energyLH.second != 0.0 )
942 pE_P_E_isoAng_EL = (*vNEP_EPM)[ map_energy.find ( energyLH.first )->second ];
943 pE_P_E_isoAng_EH = (*vNEP_EPM)[ map_energy.find ( energyLH.second )->second ];
945 else if ( energyLH.first == 0.0 )
947 pE_P_E_isoAng_EL = (*vNEP_EPM)[ 0 ];
948 pE_P_E_isoAng_EH = (*vNEP_EPM)[ 1 ];
950 if ( energyLH.second == 0.0 )
952 pE_P_E_isoAng_EH = (*vNEP_EPM).back();
953 itv = vNEP_EPM->end();
956 pE_P_E_isoAng_EL = *itv;
968 sE =
get_linear_interpolated ( pE , std::pair < G4double , G4double > ( energyLH.first , sE_L ) , std::pair < G4double , G4double > ( energyLH.second , sE_H ) );
978 if ( E_isoAng_L.
n == E_isoAng_H.
n )
980 anE_isoAng.
n = E_isoAng_L.
n;
981 for (
G4int j=0 ; j < anE_isoAng.
n ; j++ )
985 anE_isoAng.
isoAngle.push_back( angle );
996 return std::pair< G4double , E_isoAng >( sE , anE_isoAng);
1011 std::map < G4String , G4int > co_dic;
1016 for (
size_t i = 0 ; i < numberOfMaterials ; i++ )
1018 G4Material* material = (*theMaterialTable)[i];
1020 for (
size_t j = 0 ; j < numberOfElements ; j++ )
1025 G4int ts_ID_of_this_geometry;
1027 if ( co_dic.find ( ts_ndl_name ) != co_dic.end() )
1029 ts_ID_of_this_geometry = co_dic.find ( ts_ndl_name ) ->
second;
1033 ts_ID_of_this_geometry = co_dic.size();
1034 co_dic.insert ( std::pair< G4String , G4int >( ts_ndl_name , ts_ID_of_this_geometry ) );
1041 dic.insert( std::pair < std::pair < G4Material* , const G4Element* > ,
G4int > ( std::pair < G4Material* , const G4Element* > ( material , element ) , ts_ID_of_this_geometry ) );
1050 for (
size_t i = 0 ; i < numberOfElements ; i++ )
1052 const G4Element* element = (*theElementTable)[i];
1057 G4int ts_ID_of_this_geometry;
1059 if ( co_dic.find ( ts_ndl_name ) != co_dic.end() )
1061 ts_ID_of_this_geometry = co_dic.find ( ts_ndl_name ) ->
second;
1065 ts_ID_of_this_geometry = co_dic.size();
1066 co_dic.insert ( std::pair< G4String , G4int >( ts_ndl_name , ts_ID_of_this_geometry ) );
1073 dic.insert( std::pair < std::pair < const G4Material* , const G4Element* > ,
G4int > ( std::pair < const G4Material* , const G4Element* > ( (
G4Material*)NULL , element ) , ts_ID_of_this_geometry ) );
1079 G4cout <<
"Neutron HP Thermal Scattering: Following material-element pairs or elements are registered." <<
G4endl;
1080 for ( std::map < std::pair < const G4Material* , const G4Element* > ,
G4int >::iterator it =
dic.begin() ; it !=
dic.end() ; it++ )
1082 if ( it->first.first != NULL )
1084 G4cout <<
"Material " << it->first.first->GetName() <<
" - Element " << it->first.second->GetName() <<
", internal thermal scattering id " << it->second <<
G4endl;
1088 G4cout <<
"Element " << it->first.second->GetName() <<
", internal thermal scattering id " << it->second <<
G4endl;
1104 if (
coherentFSs == NULL )
coherentFSs =
new std::map < G4int , std::map < G4double , std::vector < std::pair< G4double , G4double >* >* >* >;
1106 if (
inelasticFSs == NULL )
inelasticFSs =
new std::map < G4int , std::map < G4double , std::vector < E_P_E_isoAng* >* >* >;
1109 if ( !getenv(
"G4NEUTRONHPDATA" ) )
1110 throw G4HadronicException(__FILE__, __LINE__,
"Please setenv G4NEUTRONHPDATA to point to the neutron cross-section files.");
1111 dirName = getenv(
"G4NEUTRONHPDATA" );
1115 for ( std::map < G4String , G4int >::iterator it = co_dic.begin() ; it != co_dic.end() ; it++ )
1118 G4int ts_ID = it->second;
1121 G4String fsName =
"/ThermalScattering/Coherent/FS/";
1122 G4String fileName = dirName + fsName + tsndlName;
1126 fsName =
"/ThermalScattering/Incoherent/FS/";
1127 fileName = dirName + fsName + tsndlName;
1131 fsName =
"/ThermalScattering/Inelastic/FS/";
1132 fileName = dirName + fsName + tsndlName;
1148 if (
dic.find( std::pair < const G4Material* , const G4Element* > ( material , element ) ) !=
dic.end() )
1149 result =
dic.find( std::pair < const G4Material* , const G4Element* > ( material , element ) )->second;
1173 for (
G4int i = 0 ; i <
n ; i++ ) {
1176 if ( sum != 0.0 ) result =
true;
1183 outFile <<
"High Precision model based on thermal scattering data in evaluated nuclear data libraries for neutrons below 5eV on specific materials\n";
static G4ParticleHPManager * GetInstance()
std::map< G4int, std::map< G4double, std::vector< E_isoAng * > * > * > * incoherentFSs
G4bool check_E_isoAng(E_isoAng *)
std::map< G4int, std::map< G4double, std::vector< std::pair< G4double, G4double > * > * > * > * coherentFSs
G4ParticleHPThermalScatteringNames names
~G4ParticleHPThermalScattering()
std::vector< G4double > isoAngle
std::map< G4double, std::vector< std::pair< G4double, G4double > * > * > * readACoherentFSDATA(G4String)
G4double get_secondary_energy_from_E_P_E_isoAng(G4double, E_P_E_isoAng *)
void BuildPhysicsTable(const G4ParticleDefinition &)
const G4String & GetName() const
void AddThermalElement(G4String, G4String)
static G4MaterialTable * GetMaterialTable()
std::vector< G4Material * > G4MaterialTable
void GetDataStream(G4String, std::istringstream &iss)
static G4double angle[DIM]
E_isoAng create_E_isoAng_from_energy(G4double, std::vector< E_isoAng * > *)
std::map< G4int, std::map< G4double, std::vector< E_P_E_isoAng * > * > * > * GetThermalScatteringInelasticFinalStates()
std::pair< G4double, E_isoAng > create_sE_and_EPM_from_pE_and_vE_P_E_isoAng(G4double, G4double, std::vector< E_P_E_isoAng * > *)
const G4Element * GetElement(G4int iel) const
std::map< G4double, std::vector< E_P_E_isoAng * > * > * readAnInelasticFSDATA(G4String)
std::vector< E_isoAng * > vE_isoAngle
std::map< G4int, std::map< G4double, std::vector< E_isoAng * > * > * > * GetThermalScatteringIncoherentFinalStates()
virtual void ModelDescription(std::ostream &outFile) const
G4double GetCoherentCrossSection(const G4DynamicParticle *, const G4Element *, const G4Material *)
std::map< G4int, std::map< G4double, std::vector< std::pair< G4double, G4double > * > * > * > * GetThermalScatteringCoherentFinalStates()
void AddUserThermalScatteringFile(G4String, G4String)
void SetMinEnergy(G4double anEnergy)
std::map< G4double, std::vector< E_isoAng * > * > * readAnIncoherentFSDATA(G4String)
G4GLOB_DLL std::ostream G4cout
static size_t GetNumberOfElements()
const G4ParticleDefinition * GetDefinition() const
E_P_E_isoAng * readAnE_P_E_isoAng(std::istream *)
G4ParticleHPThermalScatteringData * theXSection
std::map< G4int, std::map< G4double, std::vector< E_P_E_isoAng * > * > * > * inelasticFSs
G4double GetKineticEnergy() const
void BuildPhysicsTable(const G4ParticleDefinition &)
G4int getTS_ID(const G4Material *, const G4Element *)
static const double second
static const double perCent
static G4Neutron * Neutron()
E_isoAng * readAnE_isoAng(std::istream *)
static size_t GetNumberOfMaterials()
const G4LorentzVector & Get4Momentum() const
static const double kelvin
G4double getMu(E_isoAng *)
void SetEnergyChange(G4double anEnergy)
void clearCurrentFSData()
G4double total(Particle const *const p1, Particle const *const p2)
G4double get_linear_interpolated(G4double, std::pair< G4double, G4double >, std::pair< G4double, G4double >)
void AddUserThermalScatteringFile(G4String, G4String)
G4double energy(const ThreeVector &p, const G4double m)
void RegisterThermalScatteringInelasticFinalStates(std::map< G4int, std::map< G4double, std::vector< E_P_E_isoAng * > * > * > *val)
G4bool IsThisThermalElement(G4String)
const G4double x[NPOINTSGL]
void RegisterThermalScatteringIncoherentFinalStates(std::map< G4int, std::map< G4double, std::vector< E_isoAng * > * > * > *val)
G4ParticleHPElastic * theHPElastic
static const G4int LL[nN]
std::pair< G4double, G4double > find_LH(G4double, std::vector< G4double > *)
void SetMaxEnergy(const G4double anEnergy)
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &aTargetNucleus)
G4HadFinalState theParticleChange
G4double GetTemperature() const
const G4Material * GetMaterial() const
size_t GetNumberOfElements() const
G4double GetCrossSection(const G4DynamicParticle *, const G4Element *, const G4Material *)
G4String GetTS_NDL_Name(G4String nameG4Element)
std::vector< G4Element * > G4ElementTable
G4double GetInelasticCrossSection(const G4DynamicParticle *, const G4Element *, const G4Material *)
const G4String & GetName() const
static G4ElementTable * GetElementTable()
std::map< std::pair< const G4Material *, const G4Element * >, G4int > dic
virtual const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const
G4ParticleHPThermalScattering()
void BuildPhysicsTable(const G4ParticleDefinition &)
void SetMomentumChange(const G4ThreeVector &aV)
std::vector< G4double > prob
void RegisterThermalScatteringCoherentFinalStates(std::map< G4int, std::map< G4double, std::vector< std::pair< G4double, G4double > * > * > * > *val)