141       std::map < G4double , std::vector < E_isoAng* >* >::iterator itt;
   142       for ( itt = it->second->begin() ; itt != it->second->end() ; itt++ )
   144          std::vector< E_isoAng* >::iterator ittt;
   145          for ( ittt = itt->second->begin(); ittt != itt->second->end() ; ittt++ )
   156    for ( std::map < 
G4int , std::map < 
G4double , std::vector < std::pair< G4double , G4double >* >* >* >::iterator it = 
coherentFSs->begin() ; it != 
coherentFSs->end() ; it++ )
   158       std::map < G4double , std::vector < std::pair< G4double , G4double >* >* >::iterator itt;
   159       for ( itt = it->second->begin() ; itt != it->second->end() ; itt++ )
   161          std::vector < std::pair< G4double , G4double >* >::iterator ittt;
   162          for ( ittt = itt->second->begin(); ittt != itt->second->end() ; ittt++ )
   175       std::map < G4double , std::vector < E_P_E_isoAng* >* >::iterator itt;
   176       for ( itt = it->second->begin() ; itt != it->second->end() ; itt++ )
   178          std::vector < E_P_E_isoAng* >::iterator ittt;
   179          for ( ittt = itt->second->begin(); ittt != itt->second->end() ; ittt++ )
   181             std::vector < E_isoAng* >::iterator it4;
   182             for ( it4 = (*ittt)->vE_isoAngle.begin() ; it4 != (*ittt)->vE_isoAngle.end() ; it4++ )
   212    std::map < G4double , std::vector < std::pair< G4double , G4double >* >* >* aCoherentFSDATA = 
new std::map < G4double , std::vector < std::pair< G4double , G4double >* >* >;
   218    std::vector< G4double > vBraggE;
   221    while ( theChannel >> dummy )   
   226       std::vector < std::pair< G4double , G4double >* >* anBragE_P = 
new std::vector < std::pair< G4double , G4double >* >;
   230       for ( 
G4int i = 0 ; i < 
n ; i++ )
   234           if ( aCoherentFSDATA->size() == 0 ) 
   237              vBraggE.push_back( Ei );
   244           anBragE_P->push_back ( 
new std::pair < G4double , G4double > ( Ei , Pi ) );
   247       aCoherentFSDATA->insert ( std::pair < 
G4double , std::vector < std::pair< G4double , G4double >* >*  > ( temp , anBragE_P ) );
   250    return aCoherentFSDATA;
   257    std::map < G4double , std::vector < E_P_E_isoAng* >* >* anT_E_P_E_isoAng = 
new std::map < G4double , std::vector < E_P_E_isoAng* >* >;
   264    while ( theChannel >> dummy )   
   269       std::vector < E_P_E_isoAng* >* vE_P_E_isoAng = 
new std::vector < E_P_E_isoAng* >;
   272       for ( 
G4int i = 0 ; i < 
n ; i++ )
   276       anT_E_P_E_isoAng->insert ( std::pair < 
G4double , std::vector < E_P_E_isoAng* >* > ( temp , vE_P_E_isoAng ) );
   280    return anT_E_P_E_isoAng; 
   300    for ( 
G4int i = 0 ; i < aData->
n ; i++ )
   307       anE_isoAng->
n = nl - 2;  
   308       anE_isoAng->
isoAngle.resize( anE_isoAng->
n ); 
   310       aData->
prob.push_back( prob );
   312       for ( 
G4int j = 0 ; j < anE_isoAng->
n ; j++ )
   323    for ( 
G4int i = 0 ; i < aData->
n - 1 ; i++ )
   328       total += ( ( aData->
prob[i] ) * dE );
   339    std::map < G4double , std::vector < E_isoAng* >* >* T_E = 
new std::map < G4double , std::vector < E_isoAng* >* >;
   346    while ( theChannel >> dummy )   
   351       std::vector < E_isoAng* >* vE_isoAng = 
new std::vector < E_isoAng* >;
   354       for ( 
G4int i = 0 ; i < 
n ; i++ )
   356       T_E->insert ( std::pair < 
G4double , std::vector < E_isoAng* >* > ( temp , vE_isoAng ) );
   384    for ( 
G4int i = 0 ; i < aData->
n ; i++ )
   410    G4bool findThermalElement = 
false;
   413    for ( 
G4int i = 0; i < 
n ; i++ )
   420          if (  
getTS_ID( NULL , theElement ) != -1 )
   422             ielement = 
getTS_ID( NULL , theElement );
   423             findThermalElement = 
true;
   426          else if (  
getTS_ID( theMaterial , theElement ) != -1 )
   428             ielement = 
getTS_ID( theMaterial , theElement );
   429             findThermalElement = 
true;
   435    if ( findThermalElement == 
true )
   447       if ( random <= inelastic/total ) 
   452          std::map < G4double , std::vector< E_P_E_isoAng* >* >::iterator it; 
   453          std::vector<G4double> v_temp;
   455          for ( it = 
inelasticFSs->find( ielement )->second->begin() ; it != 
inelasticFSs->find( ielement )->second->end() ; it++ )
   457             v_temp.push_back( it->first );
   461          std::pair < G4double , G4double > tempLH = 
find_LH ( aTemp , &v_temp );
   465          std::vector< E_P_E_isoAng* >* vNEP_EPM_TL = 0;
   466          std::vector< E_P_E_isoAng* >* vNEP_EPM_TH = 0;
   468          if ( tempLH.first != 0.0 && tempLH.second != 0.0 ) 
   470             vNEP_EPM_TL = 
inelasticFSs->find( ielement )->second->find ( tempLH.first/
kelvin )->second;
   471             vNEP_EPM_TH = 
inelasticFSs->find( ielement )->second->find ( tempLH.second/
kelvin )->second;
   473          else if ( tempLH.first == 0.0 )
   475             std::map < G4double , std::vector< E_P_E_isoAng* >* >::iterator itm;  
   477             vNEP_EPM_TL = itm->second;
   479             vNEP_EPM_TH = itm->second;
   480             tempLH.first = tempLH.second;
   481             tempLH.second = itm->first;
   483          else if (  tempLH.second == 0.0 )
   485             std::map < G4double , std::vector< E_P_E_isoAng* >* >::iterator itm;  
   488             vNEP_EPM_TH = itm->second;
   490             vNEP_EPM_TL = itm->second;
   491             tempLH.second = tempLH.first;
   492             tempLH.first = itm->first;
   501          sE = 
get_linear_interpolated ( aTemp , std::pair < G4double , G4double > ( tempLH.first , TL.first ) , std::pair < G4double , G4double > ( tempLH.second , TH.first ) );  
   505          if ( TL.second.n == TH.second.n ) 
   508             anE_isoAng.
n =  TL.second.n; 
   509             for ( 
G4int i=0 ; i < anE_isoAng.
n ; i++ )
   512                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 ] ) );  
   513                anE_isoAng.
isoAngle.push_back( angle ); 
   515             mu = 
getMu( &anE_isoAng );
   519             G4HadronicException(__FILE__, __LINE__, 
"A problem is found in Thermal Scattering Data! Do not yet supported");
   535          std::map < G4double , std::vector< std::pair< G4double , G4double >* >* >::iterator it; 
   536          std::vector<G4double> v_temp;
   538          for ( it = 
coherentFSs->find( ielement )->second->begin() ; it != 
coherentFSs->find( ielement )->second->end() ; it++ )
   540             v_temp.push_back( it->first );
   544          std::pair < G4double , G4double > tempLH = 
find_LH ( aTemp , &v_temp );
   549          std::vector< std::pair< G4double , G4double >* >* pvE_p_TL = NULL; 
   550          std::vector< std::pair< G4double , G4double >* >* pvE_p_TH = NULL; 
   552          if ( tempLH.first != 0.0 && tempLH.second != 0.0 ) 
   554             pvE_p_TL = 
coherentFSs->find( ielement )->second->find ( tempLH.first/
kelvin )->second;
   555             pvE_p_TH = 
coherentFSs->find( ielement )->second->find ( tempLH.first/
kelvin )->second;
   557          else if ( tempLH.first == 0.0 )
   559             pvE_p_TL = 
coherentFSs->find( ielement )->second->find ( v_temp[ 0 ] )->second;
   560             pvE_p_TH = 
coherentFSs->find( ielement )->second->find ( v_temp[ 1 ] )->second;
   561             tempLH.first = tempLH.second;
   562             tempLH.second = v_temp[ 1 ];
   564          else if (  tempLH.second == 0.0 )
   566             pvE_p_TH = 
coherentFSs->find( ielement )->second->find ( v_temp.back() )->
second;
   567             std::vector< G4double >::iterator itv;
   571             pvE_p_TL = 
coherentFSs->find( ielement )->second->find ( *itv )->second;
   572             tempLH.second = tempLH.first;
   578             G4HadronicException(__FILE__, __LINE__, 
"A problem is found in Thermal Scattering Data! Unexpected temperature values in data");
   581          std::vector< G4double > vE_T;
   582          std::vector< G4double > vp_T;
   584          G4int n1 = pvE_p_TL->size();  
   587          for ( 
G4int i=1 ; i < n1 ; i++ ) 
   589             if ( (*pvE_p_TL)[i]->first != (*pvE_p_TH)[i]->first ) 
G4HadronicException(__FILE__, __LINE__, 
"A problem is found in Thermal Scattering Data!");
   590             vE_T.push_back ( (*pvE_p_TL)[i]->first );
   591             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 ) ) );  
   595          for ( 
G4int i = 1 ; i < 
n ; i++ ) 
   597             if ( E/
eV < vE_T[ i ] ) 
   607          for ( 
G4int i = 1 ; i < j ; i++ )
   609              G4double Pi = vp_T[ i ] / vp_T[ j ]; 
   610              if ( rand_for_mu < Pi )
   622          if ( mu < -1.0 ) mu = -1.0;
   634          std::map < G4double , std::vector < E_isoAng* >* >::iterator it; 
   635          std::vector<G4double> v_temp;
   639             v_temp.push_back( it->first );
   643          std::pair < G4double , G4double > tempLH = 
find_LH ( aTemp , &v_temp );
   652          if ( tempLH.first != 0.0 && tempLH.second != 0.0 ) {
   656          } 
else if ( tempLH.first == 0.0 ) {
   660             tempLH.first = tempLH.second;
   661             tempLH.second = v_temp[ 1 ];
   662          } 
else if (  tempLH.second == 0.0 ) {
   665             std::vector< G4double >::iterator itv;
   670             tempLH.second = tempLH.first;
   678          if ( anEPM_TL_E.
n == anEPM_TH_E.
n ) 
   680             anEPM_T_E.
n = anEPM_TL_E.
n; 
   681             for ( 
G4int i=0 ; i < anEPM_TL_E.
n ; i++ )
   684                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 ] ) );  
   685                anEPM_T_E.
isoAngle.push_back( angle ); 
   687             mu = 
getMu ( &anEPM_T_E );
   691             G4HadronicException(__FILE__, __LINE__, 
"A problem is found in Thermal Scattering Data! Do not yet supported");
   721    G4int in = int ( random * ( (*anEPM).n ) );
   725        G4double mu_l = (*anEPM).isoAngle[ in-1 ]; 
   727        result = ( mu_h - mu_l ) * ( random * ( (*anEPM).n ) - 
in ) + mu_l; 
   732        G4double D = ( (*anEPM).isoAngle[ 0 ] - ( -1 ) ) + ( 1 - (*anEPM).isoAngle[ (*anEPM).n - 1 ] );
   733        G4double ratio = ( (*anEPM).isoAngle[ 0 ] - ( -1 ) ) / 
D;
   737           G4double mu_h = (*anEPM).isoAngle[ 0 ]; 
   738           result = ( mu_h - mu_l ) * x + mu_l; 
   742           G4double mu_l = (*anEPM).isoAngle[ (*anEPM).n - 1 ]; 
   744           result = ( mu_h - mu_l ) * x + mu_l; 
   758    if ( aVector->size() == 1 ) {
   759       LL = aVector->front();
   760       H = aVector->front();
   765       for ( std::vector< G4double >::iterator 
   766             it = aVector->begin() ; it != aVector->end() ; it++ ) {
   769             if ( it != aVector->begin() ) {
   781       if ( H == 0.0 ) LL = aVector->back();
   784    return std::pair < G4double , G4double > ( 
LL , H ); 
   792    if ( High.first - Low.first != 0 ) {
   793       y = ( High.second - Low.second ) / ( High.first - Low.first ) * ( x - Low.first ) + Low.second;
   795       if ( High.second == Low.second ) {
   798          G4cout << 
"G4ParticleHPThermalScattering liner interpolation err!!" << 
G4endl; 
   811    std::vector< E_isoAng* >::iterator iv;
   813    std::vector< G4double > v_e;
   815    for ( iv = vEPM->begin() ; iv != vEPM->end() ;  iv++ )
   816       v_e.push_back ( (*iv)->energy );
   818    std::pair < G4double , G4double > energyLH = 
find_LH ( energy , &v_e );
   824    if ( energyLH.first != 0.0 && energyLH.second != 0.0 ) 
   826       for ( iv = vEPM->begin() ; iv != vEPM->end() ;  iv++ )
   828          if ( energyLH.first == (*iv)->energy ) 
   835    else if ( energyLH.first == 0.0 )
   837       panEPM_T_EL = (*vEPM)[0];
   838       panEPM_T_EH = (*vEPM)[1];
   840    else if ( energyLH.second == 0.0 )
   842       panEPM_T_EH = (*vEPM).back();
   851    if ( ! ( 
check_E_isoAng (panEPM_T_EL) ) ) panEPM_T_EL= panEPM_T_EH;
   852    if ( ! ( 
check_E_isoAng (panEPM_T_EH) ) ) panEPM_T_EH= panEPM_T_EL;
   854    if ( panEPM_T_EL->
n == panEPM_T_EH->
n ) 
   857       anEPM_T_E.
n = panEPM_T_EL->
n; 
   859       for ( 
G4int i=0 ; i < panEPM_T_EL->
n ; i++ )
   862          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 ] ) );  
   863          anEPM_T_E.
isoAngle.push_back( angle ); 
   868       G4cout << 
"G4ParticleHPThermalScattering Do not Suuport yet." << 
G4endl; 
   902    for ( 
G4int i = 0 ; i < n-1 ; i++ )
   907       sum_p += ( ( anE_P_E_isoAng->
prob[i] ) * dE );
   909       if ( random <= sum_p/total )
   911          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 ) );
   912          secondary_energy = secondary_energy*
eV;  
   918    return secondary_energy; 
   926          std::map< G4double , G4int > map_energy;
   928          std::vector< G4double > v_energy;
   930          std::vector< E_P_E_isoAng* >::iterator itv;
   932          for ( itv = vNEP_EPM->begin(); itv != vNEP_EPM->end(); itv++ )
   934             v_energy.push_back( (*itv)->energy );
   935             map_energy.insert( std::pair < G4double , G4int > ( (*itv)->energy , i ) );
   939          std::pair < G4double , G4double > energyLH = 
find_LH ( pE , &v_energy );
   944          if ( energyLH.first != 0.0 && energyLH.second != 0.0 ) 
   946             pE_P_E_isoAng_EL = (*vNEP_EPM)[ map_energy.find ( energyLH.first )->second ];    
   947             pE_P_E_isoAng_EH = (*vNEP_EPM)[ map_energy.find ( energyLH.second )->second ];    
   949          else if ( energyLH.first == 0.0 ) 
   951             pE_P_E_isoAng_EL = (*vNEP_EPM)[ 0 ];    
   952             pE_P_E_isoAng_EH = (*vNEP_EPM)[ 1 ];    
   954          if ( energyLH.second == 0.0 ) 
   956             pE_P_E_isoAng_EH = (*vNEP_EPM).back();    
   957             itv = vNEP_EPM->end();
   960             pE_P_E_isoAng_EL = *itv;    
   972          sE = 
get_linear_interpolated ( pE , std::pair < G4double , G4double > ( energyLH.first , sE_L ) , std::pair < G4double , G4double > ( energyLH.second , sE_H ) );  
   982          if ( E_isoAng_L.
n == E_isoAng_H.
n ) 
   984             anE_isoAng.
n =  E_isoAng_L.
n; 
   985             for ( 
G4int j=0 ; j < anE_isoAng.
n ; j++ )
   989                anE_isoAng.
isoAngle.push_back( angle ); 
  1000    return std::pair< G4double , E_isoAng >( sE , anE_isoAng); 
  1015    std::map < G4String , G4int > co_dic;   
  1020    for ( 
size_t i = 0 ; i < numberOfMaterials ; i++ )
  1024       for ( 
size_t j = 0 ; j < numberOfElements ; j++ )
  1029             G4int ts_ID_of_this_geometry; 
  1031             if ( co_dic.find ( ts_ndl_name ) != co_dic.end() )
  1033                ts_ID_of_this_geometry = co_dic.find ( ts_ndl_name ) -> 
second;
  1037                ts_ID_of_this_geometry = co_dic.size();
  1038                co_dic.insert ( std::pair< G4String , G4int >( ts_ndl_name , ts_ID_of_this_geometry ) );
  1045             dic.insert( std::pair < std::pair < G4Material* , const G4Element* > , 
G4int > ( std::pair < G4Material* , const G4Element* > ( material , element ) , ts_ID_of_this_geometry ) );
  1054    for ( 
size_t i = 0 ; i < numberOfElements ; i++ )
  1056       const G4Element* element = (*theElementTable)[i];
  1061             G4int ts_ID_of_this_geometry; 
  1063             if ( co_dic.find ( ts_ndl_name ) != co_dic.end() )
  1065                ts_ID_of_this_geometry = co_dic.find ( ts_ndl_name ) -> 
second;
  1069                ts_ID_of_this_geometry = co_dic.size();
  1070                co_dic.insert ( std::pair< G4String , G4int >( ts_ndl_name , ts_ID_of_this_geometry ) );
  1077             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 ) );
  1083    G4cout << 
"Neutron HP Thermal Scattering: Following material-element pairs or elements are registered." << 
G4endl;
  1084    for ( std::map < std::pair < const G4Material* , const G4Element* > , 
G4int >::iterator it = 
dic.begin() ; it != 
dic.end() ; it++ )   
  1086       if ( it->first.first != NULL ) 
  1088          G4cout << 
"Material " << it->first.first->GetName() << 
" - Element " << it->first.second->GetName() << 
",  internal thermal scattering id " << it->second << 
G4endl;
  1092          G4cout << 
"Element " << it->first.second->GetName() << 
",  internal thermal scattering id " << it->second << 
G4endl;
  1108       if ( 
coherentFSs == NULL ) 
coherentFSs = 
new std::map < G4int , std::map < G4double , std::vector < std::pair< G4double , G4double >* >* >* >;
  1110       if ( 
inelasticFSs == NULL ) 
inelasticFSs = 
new std::map < G4int , std::map < G4double , std::vector < E_P_E_isoAng* >* >* >;
  1113        if ( !getenv( 
"G4NEUTRONHPDATA" ) ) 
  1114           throw G4HadronicException(__FILE__, __LINE__, 
"Please setenv G4NEUTRONHPDATA to point to the neutron cross-section files.");
  1115        dirName = getenv( 
"G4NEUTRONHPDATA" );
  1119    for ( std::map < G4String , G4int >::iterator it = co_dic.begin() ; it != co_dic.end() ; it++ )  
  1122       G4int ts_ID = it->second;
  1125       G4String fsName = 
"/ThermalScattering/Coherent/FS/";
  1126       G4String fileName = dirName + fsName + tsndlName;
  1130       fsName = 
"/ThermalScattering/Incoherent/FS/";
  1131       fileName = dirName + fsName + tsndlName;
  1135       fsName = 
"/ThermalScattering/Inelastic/FS/";
  1136       fileName = dirName + fsName + tsndlName;
  1152    if ( 
dic.find( std::pair < const G4Material* , const G4Element* > ( material , element ) ) != 
dic.end() ) 
  1153       result = 
dic.find( std::pair < const G4Material* , const G4Element* > ( material , element ) )->second; 
  1177    for ( 
G4int i = 0 ; i < 
n ; i++ ) {
  1180    if ( sum != 0.0 ) result = 
true;
  1187    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
 
const G4Material * GetMaterial() const
 
G4double get_secondary_energy_from_E_P_E_isoAng(G4double, E_P_E_isoAng *)
 
const G4LorentzVector & Get4Momentum() const
 
void BuildPhysicsTable(const G4ParticleDefinition &)
 
virtual void ModelDescription(std::ostream &outFile) const
 
void AddThermalElement(G4String, G4String)
 
static G4MaterialTable * GetMaterialTable()
 
std::vector< G4Material * > G4MaterialTable
 
std::map< G4double, std::vector< E_P_E_isoAng *> *> * readAnInelasticFSDATA(G4String)
 
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 * > *)
 
std::vector< E_isoAng *> vE_isoAngle
 
std::map< G4int, std::map< G4double, std::vector< E_isoAng *> *> *> * GetThermalScatteringIncoherentFinalStates()
 
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)
 
G4GLOB_DLL std::ostream G4cout
 
static size_t GetNumberOfElements()
 
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
 
void BuildPhysicsTable(const G4ParticleDefinition &)
 
G4int getTS_ID(const G4Material *, const G4Element *)
 
const G4Element * GetElement(G4int iel) const
 
static const double second
 
static const double perCent
 
static G4Neutron * Neutron()
 
G4double GetTemperature() const
 
E_isoAng * readAnE_isoAng(std::istream *)
 
static size_t GetNumberOfMaterials()
 
static const double kelvin
 
const G4ParticleDefinition * GetDefinition() const
 
G4double getMu(E_isoAng *)
 
const G4String & GetName() const
 
void SetEnergyChange(G4double anEnergy)
 
void clearCurrentFSData()
 
G4double GetKineticEnergy() const
 
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)
 
void RegisterThermalScatteringInelasticFinalStates(std::map< G4int, std::map< G4double, std::vector< E_P_E_isoAng * > * > * > *val)
 
G4bool IsThisThermalElement(G4String)
 
void RegisterThermalScatteringIncoherentFinalStates(std::map< G4int, std::map< G4double, std::vector< E_isoAng * > * > * > *val)
 
size_t GetNumberOfElements() const
 
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 GetCrossSection(const G4DynamicParticle *, const G4Element *, const G4Material *)
 
G4String GetTS_NDL_Name(G4String nameG4Element)
 
std::map< G4double, std::vector< std::pair< G4double, G4double > *> *> * readACoherentFSDATA(G4String)
 
std::vector< G4Element * > G4ElementTable
 
G4double GetInelasticCrossSection(const G4DynamicParticle *, const G4Element *, const G4Material *)
 
static G4ElementTable * GetElementTable()
 
const G4String & GetName() const
 
virtual const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const
 
std::map< std::pair< const G4Material *, const G4Element *>, G4int > dic
 
G4ParticleHPThermalScattering()
 
void BuildPhysicsTable(const G4ParticleDefinition &)
 
void SetMomentumChange(const G4ThreeVector &aV)
 
std::vector< G4double > prob
 
std::map< G4double, std::vector< E_isoAng *> *> * readAnIncoherentFSDATA(G4String)
 
void RegisterThermalScatteringCoherentFinalStates(std::map< G4int, std::map< G4double, std::vector< std::pair< G4double, G4double > * > * > * > *val)