88   maxZForFermiBreakUp(9),maxAForFermiBreakUp(17),minEForMultiFrag(4*
GeV),
 
   89   minExcitation(
keV),OPTxs(3),useSICB(false),isEvapLocal(true)
 
   93   theMultiFragmentation = 
new G4StatMF;
 
  103   if(isEvapLocal) { 
delete theEvaporation; }
 
  104   delete theMultiFragmentation;
 
  105   delete theFermiModel;
 
  108 void G4ExcitationHandler::SetParameters()
 
  113   theEvaporation->
UseSICB(useSICB);
 
  126   std::list<G4Fragment*> theEvapList;        
 
  127   std::list<G4Fragment*> thePhotoEvapList;   
 
  128   std::list<G4Fragment*> theResults;         
 
  142       theResults.push_back( theInitialStatePtr );
 
  145   else if(exEnergy < minExcitation && nist->GetIsotopeAbundance(Z, A) > 0.0)
 
  147       theResults.push_back( theInitialStatePtr );
 
  156       if((A<maxAForFermiBreakUp && Z<maxZForFermiBreakUp) 
 
  157      || exEnergy <= minEForMultiFrag*A) 
 
  159       theEvapList.push_back(theInitialStatePtr); 
 
  163           theTempResult = theMultiFragmentation->
BreakItUp(theInitialState);
 
  164       if(!theTempResult) { theEvapList.push_back(theInitialStatePtr); }
 
  166         size_t nsec = theTempResult->size();
 
  167         if(0 == nsec) { theEvapList.push_back(theInitialStatePtr); }
 
  171           G4bool deletePrimary = 
true;
 
  172           G4FragmentVector::iterator j;
 
  173           for (j = theTempResult->begin(); j != theTempResult->end(); ++j) {  
 
  174         if((*j) == theInitialStatePtr) { deletePrimary = 
false; }
 
  175         A = (*j)->GetA_asInt();  
 
  178         if(A <= 1) { theResults.push_back(*j); }
 
  182           G4double exEnergy1 = (*j)->GetExcitationEnergy();
 
  185           if(exEnergy1 < minExcitation) {
 
  186             Z = (*j)->GetZ_asInt(); 
 
  188               theResults.push_back(*j); 
 
  195             if(ffrag->
IsStable()) { theResults.push_back(*j); }
 
  196             else                  { theEvapList.push_back(*j); }
 
  200             theEvapList.push_back(*j); 
 
  205           } 
else { theEvapList.push_back(*j); } 
 
  208           if( deletePrimary ) { 
delete theInitialStatePtr; }
 
  210         delete theTempResult;
 
  223   std::list<G4Fragment*>::iterator iList;
 
  224   for (iList = theEvapList.begin(); iList != theEvapList.end(); ++iList)
 
  229       Z = (*iList)->GetZ_asInt();
 
  233       if (A < maxAForFermiBreakUp && Z < maxZForFermiBreakUp) 
 
  235       theTempResult = theFermiModel->
BreakItUp(*(*iList));
 
  238           if(1 == theTempResult->size()) {
 
  239             delete theTempResult;
 
  240         theTempResult = theEvaporation->
BreakItUp(*(*iList)); 
 
  245       theTempResult = theEvaporation->
BreakItUp(*(*iList));
 
  248       G4bool deletePrimary = 
true;
 
  249       size_t nsec = theTempResult->size();
 
  254     G4FragmentVector::iterator j;
 
  255     for (j = theTempResult->begin(); j != theTempResult->end(); ++j) {
 
  256       if((*j) == (*iList)) { deletePrimary = 
false; }
 
  259       A = (*j)->GetA_asInt();
 
  260       exEnergy = (*j)->GetExcitationEnergy();
 
  262       if(A <= 1) { theResults.push_back(*j); }    
 
  266         if(exEnergy < minExcitation) { theResults.push_back(*j); }
 
  267         else                         { thePhotoEvapList.push_back(*j); }
 
  272         if(exEnergy < minExcitation) {
 
  273           Z = (*j)->GetZ_asInt();
 
  277         theResults.push_back(*j); 
 
  284           if(ffrag->
IsStable()) { theResults.push_back(*j); }
 
  285           else                  { theEvapList.push_back(*j); }
 
  289           theEvapList.push_back(*j);
 
  295           thePhotoEvapList.push_back(*j); 
 
  297           theEvapList.push_back(*j);        
 
  302       if( deletePrimary ) { 
delete (*iList); }
 
  303       delete theTempResult;
 
  315   for(iList = thePhotoEvapList.begin(); iList != thePhotoEvapList.end(); ++iList)
 
  322       if(exEnergy >= minExcitation) {  
 
  324     size_t nsec = theTempResult->size();
 
  330         G4FragmentVector::iterator j;
 
  331         for (j = theTempResult->begin(); j != theTempResult->end(); ++j)
 
  333         theResults.push_back(*j); 
 
  336     delete theTempResult;
 
  340       theResults.push_back(*iList); 
 
  352   theReactionProductVector->reserve( theResults.size() );
 
  354   G4int theFragmentA, theFragmentZ;
 
  356   std::list<G4Fragment*>::iterator i;
 
  357   for (i = theResults.begin(); i != theResults.end(); ++i) 
 
  359       theFragmentA = (*i)->GetA_asInt();
 
  360       theFragmentZ = (*i)->GetZ_asInt();
 
  362       if (theFragmentA == 0) {       
 
  363     theKindOfFragment = (*i)->GetParticleDefinition();   
 
  364       } 
else if (theFragmentA == 1 && theFragmentZ == 0) { 
 
  366       } 
else if (theFragmentA == 1 && theFragmentZ == 1) { 
 
  368       } 
else if (theFragmentA == 2 && theFragmentZ == 1) { 
 
  370       } 
else if (theFragmentA == 3 && theFragmentZ == 1) { 
 
  372       } 
else if (theFragmentA == 3 && theFragmentZ == 2) { 
 
  374       } 
else if (theFragmentA == 4 && theFragmentZ == 2) { 
 
  378       theTableOfIons->
GetIon(theFragmentZ,theFragmentA,0.0);
 
  380       if (theKindOfFragment != 0) 
 
  386       theReactionProductVector->push_back(theNew);
 
  391   return theReactionProductVector;
 
  396   if(ptr && ptr != theEvaporation) {
 
  397     delete theEvaporation; 
 
  398     theEvaporation = ptr;
 
  408   if(ptr && ptr != theMultiFragmentation) {
 
  409     delete theMultiFragmentation;
 
  410     theMultiFragmentation = ptr;
 
  416   if(ptr && ptr != theFermiModel) {
 
  417     delete theFermiModel;
 
  425   if(ptr && ptr != thePhotonEvaporation) {
 
  426     thePhotonEvaporation = ptr;
 
  433   maxZForFermiBreakUp = aZ;
 
  438   maxAForFermiBreakUp = std::min(5,anA);
 
  449   minEForMultiFrag = anE;