46 if ( !dbool || ( Z < 2.5 && ( std::abs(
theBaseZ-Z)>0.0001 || std::abs(
theBaseA-A)>0.0001) ) )
68 while ( theData.good() )
74 theData >> iMT >> iMF >> dummy;
79 std::map< G4double , std::map< G4int , G4double >* >* mEnergyFSPData =
new std::map< G4double , std::map< G4int , G4double >* >;
81 std::map< G4double , G4int >* mInterporation =
new std::map< G4double , G4int >;
82 for (
G4int i = 0 ; i <= imax ; i++ )
95 mInterporation->insert( std::pair<G4double,G4int>(Ei*
eV,ip) );
97 std::map<G4int,G4double>* mFSPYieldData =
new std::map<G4int,G4double>;
103 theData >> FSP >> mFSP >>
Y;
104 G4int k = FSP*100+mFSP;
107 mFSPYieldData->insert( std::pair<G4int,G4double>( k , YY ) );
109 mEnergyFSPData->insert( std::pair<
G4double,std::map<G4int,G4double>*>(Ei*eV,mFSPYieldData) );
112 FissionProductYieldData.insert( std::pair<
G4int , std::map<
G4double , std::map< G4int , G4double >* >* > (iMT,mEnergyFSPData));
113 mMTInterpolation.insert( std::pair<
G4int,std::map<G4double,G4int>*> (iMT,mInterporation) );
133 std::map< G4double , std::map< G4int , G4double >* >* mEnergyFSPData = FissionProductYieldData.find( 454 )->second;
139 if ( mEnergyFSPData->size() == 1 )
141 key_energy = mEnergyFSPData->begin()->first;
148 for ( std::map<
G4double , std::map< G4int , G4double >* >::iterator it = mEnergyFSPData->begin() ;
149 it != mEnergyFSPData->end() ; it++ )
162 std::map<G4int,G4double>* mFSPYieldData = (*mEnergyFSPData)[key_energy];
165 G4double ceilling = mFSPYieldData->rbegin()->second;
166 for ( std::map<G4int,G4double>::iterator it = mFSPYieldData->begin() ; it != mFSPYieldData->end() ; it++ )
169 if ( rand <= it->
second/ceilling )
177 fragZ = ifrag/100000;
178 fragA = (ifrag%100000)/100;