43   outFile << 
"G4LEAntiOmegaMinusInelastic is one of the Low Energy\n" 
   44           << 
"Parameterized (LEP) models used to implement inelastic\n" 
   45           << 
"antiOmega- scattering from nuclei.  It is a re-engineered\n" 
   46           << 
"version of the GHEISHA code of H. Fesefeldt.  It divides the\n" 
   47           << 
"initial collision products into backward- and forward-going\n" 
   48           << 
"clusters which are then decayed into final state hadrons.  The\n" 
   49           << 
"model does not conserve energy on an event-by-event basis.  It\n" 
   50           << 
"may be applied to antiOmega- with initial energies between 0\n" 
   72     G4cout << 
"target material = " << targetMaterial->
GetName() << 
", ";
 
   82   modifiedOriginal = *originalIncident;
 
   88   G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) );
 
  100   p = std::sqrt( std::abs((et-amas)*(et+amas)) );
 
  108   targetParticle = *originalTarget;
 
  111   G4bool incidentHasChanged = 
false;
 
  112   G4bool targetHasChanged = 
false;
 
  113   G4bool quasiElastic = 
false;
 
  122     Cascade(vec, vecLen, originalIncident, currentParticle, targetParticle,
 
  123             incidentHasChanged, targetHasChanged, quasiElastic);
 
  126                    modifiedOriginal, targetNucleus, currentParticle,
 
  127                    targetParticle, incidentHasChanged, targetHasChanged,
 
  130   SetUpChange(vec, vecLen, currentParticle, targetParticle, incidentHasChanged);
 
  134   delete originalTarget;
 
  138 void G4LEAntiOmegaMinusInelastic::Cascade(
 
  144    G4bool& incidentHasChanged,
 
  161   G4double centerofmassEnergy = std::sqrt(mOriginal*mOriginal +
 
  162                                           targetMass*targetMass +
 
  163                                           2.0*targetMass*etOriginal);
 
  164   G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal);
 
  170   static G4bool first = 
true;
 
  171   const G4int numMul = 1200;
 
  172   const G4int numSec = 60;
 
  173   static G4double protmul[numMul], protnorm[numSec]; 
 
  174   static G4double neutmul[numMul], neutnorm[numSec]; 
 
  178   G4int npos = 0, nneg = 0, nzero = 0;
 
  185     for (i = 0; i < numMul; ++i) protmul[i] = 0.0;
 
  186     for (i = 0; i < numSec; ++i) protnorm[i] = 0.0;
 
  188     for (npos = 0; npos < (numSec/3); ++npos) {
 
  189       for (nneg = std::max(0,npos-1); nneg <= (npos+1); ++nneg) {
 
  190         for (nzero = 0; nzero < numSec/3; ++nzero) {
 
  191           if (++counter < numMul) {
 
  192             nt = npos+nneg+nzero;
 
  193             if (nt > 0 && nt <= numSec) {
 
  194               protmul[counter] = 
Pmltpc(npos,nneg,nzero,nt,b[0],c);
 
  195               protnorm[nt-1] += protmul[counter];
 
  202     for( i=0; i<numMul; ++i )neutmul[i] = 0.0;
 
  203     for( i=0; i<numSec; ++i )neutnorm[i] = 0.0;
 
  205     for (npos = 0; npos < numSec/3; ++npos) {
 
  206       for (nneg = npos; nneg <= (npos+2); ++nneg) {
 
  207         for (nzero = 0; nzero < numSec/3; ++nzero) {
 
  208           if (++counter < numMul) {
 
  209             nt = npos+nneg+nzero;
 
  210             if ( nt>0 && nt<=numSec ) {
 
  211               neutmul[counter] = 
Pmltpc(npos,nneg,nzero,nt,b[1],c);
 
  212               neutnorm[nt-1] += neutmul[counter];
 
  218     for (i = 0; i < numSec; ++i) {
 
  219       if( protnorm[i] > 0.0 )protnorm[i] = 1.0/protnorm[i];
 
  220       if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i];
 
  238     for (npos = 0; npos < numSec/3 && ran>=excs; ++npos) {
 
  239       for (nneg = std::max(0,npos-1); nneg <= (npos+1) && ran>=excs; ++nneg) {
 
  240         for (nzero = 0; nzero < numSec/3 && ran>=excs; ++nzero) {
 
  241           if ( ++counter < numMul ) {
 
  242             nt = npos+nneg+nzero;
 
  243             if (nt > 0 && nt <= numSec) {
 
  244               test = std::exp(std::min(expxu,
 
  245                               std::max(expxl, -(
pi/4.0)*(nt*nt)/(n*n) ) ) );
 
  246               dum = (
pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n);
 
  247               if (std::fabs(dum) < 1.0) {
 
  248                 if( test >= 1.0
e-10 )excs += dum*
test;
 
  262     npos--; nneg--; nzero--;
 
  270       if (npos+1 == nneg) {
 
  272         incidentHasChanged = 
true;
 
  277         incidentHasChanged = 
true;
 
  280     } 
else if (npos > nneg) {
 
  282       targetHasChanged = 
true;
 
  287     for (npos = 0; npos < numSec/3 && ran >= excs; ++npos) {
 
  288       for (nneg = npos; nneg <= (npos+2) && ran>=excs; ++nneg) {
 
  289         for (nzero = 0; nzero < numSec/3 && ran>=excs; ++nzero) {
 
  290           if (++counter < numMul) {
 
  291             nt = npos+nneg+nzero;
 
  292             if (nt > 0 && nt <= numSec) {
 
  293               test = std::exp( std::min( expxu, std::max( expxl, -(
pi/4.0)*(nt*nt)/(n*n) ) ) );
 
  294               dum = (
pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n);
 
  295               if( std::fabs(dum) < 1.0 )
 
  297                   if( test >= 1.0
e-10 )excs += dum*
test;
 
  311     npos--; nneg--; nzero--;
 
  313       if( npos+2 == nneg) {
 
  315         incidentHasChanged = 
true;
 
  320         incidentHasChanged = 
true;
 
  324       targetHasChanged = 
true;
 
  325     } 
else if (npos+1 == nneg) {
 
  327       targetHasChanged = 
true;
 
  332   for (
G4int i = 0; i < vecLen && nvefix > 0; ++i) {
 
  336       if (nvefix >= 1) vec[i]->SetDefinitionAndUpdateE(aKaonMinus);