38 std::map<G4int,std::map<G4double,std::map<G4int,G4double >* >* >::iterator it = FissionProductYieldData.begin();
39 while ( it != FissionProductYieldData.end() ) {
40 std::map<G4double,std::map<G4int,G4double>* >* firstLevel = it->second;
42 std::map<G4double,std::map<G4int,G4double>*>::iterator it2 = firstLevel->begin();
43 while ( it2 != firstLevel->end() ) {
46 firstLevel->erase(it2);
47 it2=firstLevel->begin();
52 FissionProductYieldData.erase(it);
53 it = FissionProductYieldData.begin();
56 std::map< G4int , std::map< G4double , G4int >* >::iterator ii = mMTInterpolation.begin();
57 while ( ii != mMTInterpolation.end() ) {
59 mMTInterpolation.erase(ii);
60 ii = mMTInterpolation.begin();
77 if ( !dbool || (
Z < 2.5 && ( std::abs(
theBaseZ-
Z)>0.0001 || std::abs(
theBaseA-
A)>0.0001) ) )
85 std::istringstream theData(std::ios::in);
101 while ( theData.good() )
107 theData >> iMT >> iMF >> dummy;
112 std::map< G4double , std::map< G4int , G4double >* >* mEnergyFSPData =
new std::map< G4double , std::map< G4int , G4double >* >;
114 std::map< G4double , G4int >* mInterporation =
new std::map< G4double , G4int >;
115 for (
G4int i = 0 ; i <= imax ; i++ )
128 mInterporation->insert( std::pair<G4double,G4int>(Ei*eV,ip) );
130 std::map<G4int,G4double>* mFSPYieldData =
new std::map<G4int,G4double>;
131 for (
G4int j = 0 ; j < jmax ; j++ )
136 theData >> FSP >> mFSP >>
Y;
137 G4int k = FSP*100+mFSP;
140 mFSPYieldData->insert( std::pair<G4int,G4double>( k , YY ) );
142 mEnergyFSPData->insert( std::pair<
G4double,std::map<G4int,G4double>*>(Ei*eV,mFSPYieldData) );
145 FissionProductYieldData.insert( std::pair<
G4int , std::map<
G4double , std::map< G4int , G4double >* >* > (iMT,mEnergyFSPData));
146 mMTInterpolation.insert( std::pair<
G4int,std::map<G4double,G4int>*> (iMT,mInterporation) );
166 std::map< G4double , std::map< G4int , G4double >* >* mEnergyFSPData = FissionProductYieldData.find( 454 )->second;
172 if ( mEnergyFSPData->size() == 1 )
174 key_energy = mEnergyFSPData->cbegin()->first;
180 for (
auto it = mEnergyFSPData->cbegin(); it != mEnergyFSPData->cend(); ++it )
183 G4double d = std::fabs ( energy - e );
192 std::map<G4int,G4double>* mFSPYieldData = (*mEnergyFSPData)[key_energy];
195 G4double ceilling = mFSPYieldData->rbegin()->second;
196 for (
auto it = mFSPYieldData->cbegin(); it != mFSPYieldData->cend(); ++it )
199 if ( rand <= it->second/ceilling )
207 fragZ = ifrag/100000;
208 fragA = (ifrag%100000)/100;
G4double Y(G4double density)
std::vector< G4DynamicParticle * > G4DynamicParticleVector
G4DynamicParticleVector * ApplyYourself(G4int nNeutrons)
~G4ParticleHPFFFissionFS()
void Init(G4double A, G4double Z, G4int M, G4String &dirName, G4String &aFSType, G4ParticleDefinition *)
void GetAFissionFragment(G4double, G4int &, G4int &, G4int &)
G4ParticleHPNames theNames
G4DynamicParticleVector * ApplyYourself(G4int Prompt)
static G4ParticleHPManager * GetInstance()
void GetDataStream(G4String, std::istringstream &iss)
G4ParticleHPDataUsed GetName(G4int A, G4int Z, G4String base, G4String rest, G4bool &active)