Index: trunk/source/processes/hadronic/cross_sections/src/G4HadronCrossSections.cc
===================================================================
--- trunk/source/processes/hadronic/cross_sections/src/G4HadronCrossSections.cc	(revision 1337)
+++ trunk/source/processes/hadronic/cross_sections/src/G4HadronCrossSections.cc	(revision 1340)
@@ -25,5 +25,5 @@
 //
 //
-// GEANT4 tag $Name: geant4-09-04-beta-01 $
+// GEANT4 tag $Name: hadr-cross-V09-03-12 $
 //
 //
@@ -1230,10 +1230,10 @@
       G4IsotopeVector* isoVector = element->GetIsotopeVector();
       G4double* abundVector = element->GetRelativeAbundanceVector();
-      G4double ZZ;
-      G4double AA;
+      G4int ZZ;
+      G4int AA;
 
       for (G4int i = 0; i < nIso; i++) {
-        ZZ = G4double( (*isoVector)[i]->GetZ() );
-        AA = G4double( (*isoVector)[i]->GetN() );
+        ZZ = (*isoVector)[i]->GetZ();
+        AA = (*isoVector)[i]->GetN();
         CalcScatteringCrossSections(particle, ZZ, AA);
         cross_section += siginelastic*abundVector[i];
@@ -1241,6 +1241,8 @@
       siginelastic = cross_section;
 
-    } else { 
-      CalcScatteringCrossSections(particle, element->GetZ(), element->GetN());
+    } else {
+      G4int ZZ = G4lrint(element->GetZ());
+      G4int AA = G4lrint(element->GetN());
+      CalcScatteringCrossSections(particle, ZZ, AA);
     }
   }
@@ -1249,7 +1251,7 @@
 
 
-G4double G4HadronCrossSections::GetInelasticCrossSection(
-                          const G4DynamicParticle* particle,
-                          G4double ZZ, G4double AA)
+G4double
+G4HadronCrossSections::GetInelasticCrossSection(const G4DynamicParticle* particle,
+                                                G4int ZZ, G4int AA)
 {
   prevElement = 0; // force new cross section calculation for next call of
@@ -1274,10 +1276,10 @@
       G4IsotopeVector* isoVector = element->GetIsotopeVector();
       G4double* abundVector = element->GetRelativeAbundanceVector();
-      G4double ZZ;
-      G4double AA;
+      G4int ZZ;
+      G4int AA;
 
       for (G4int i = 0; i < nIso; i++) {
-        ZZ = G4double( (*isoVector)[i]->GetZ() );
-        AA = G4double( (*isoVector)[i]->GetN() );
+        ZZ = (*isoVector)[i]->GetZ();
+        AA = (*isoVector)[i]->GetN();
         CalcScatteringCrossSections(particle, ZZ, AA);
         cross_section += sigelastic*abundVector[i];
@@ -1285,6 +1287,8 @@
       sigelastic = cross_section;
 
-    } else { 
-      CalcScatteringCrossSections(particle, element->GetZ(), element->GetN());
+    } else {
+      G4int ZZ = G4lrint(element->GetZ());
+      G4int AA = G4lrint(element->GetN());
+      CalcScatteringCrossSections(particle, ZZ, AA);
     }
   }
@@ -1293,7 +1297,7 @@
 
 
-G4double G4HadronCrossSections::GetElasticCrossSection(
-                          const G4DynamicParticle* particle,
-                          G4double ZZ, G4double AA)
+G4double
+G4HadronCrossSections::GetElasticCrossSection(const G4DynamicParticle* particle,
+                                              G4int ZZ, G4int AA)
 {
   prevElement = 0; // force new cross section calculation for next call of
@@ -1312,5 +1316,5 @@
 G4HadronCrossSections::CalcScatteringCrossSections(
                           const G4DynamicParticle* aParticle,
-                          G4double ZZ, G4double AA)
+                          G4int ZZ, G4int AA)
 {
    G4double sigel, sigin, sigtot;
@@ -1583,5 +1587,5 @@
 G4HadronCrossSections::GetCaptureCrossSection(
                           const G4DynamicParticle* aParticle,
-                          G4double ZZ, G4double /*AA*/)
+                          G4int ZZ, G4int /*AA*/)
 {
    if (GetParticleCode(aParticle) != 16)  { return 0.; }
@@ -1596,5 +1600,5 @@
    }
 
-   G4int izno = static_cast<G4int> (ZZ + 0.01);
+   G4int izno = ZZ;
    if (izno > 100) izno = 100;      // Not in GHESIG
    izno = izno - 1;      // For array indexing
@@ -1609,18 +1613,9 @@
 G4HadronCrossSections::GetFissionCrossSection(
                           const G4DynamicParticle* aParticle,
-                          G4double ZZ, G4double AA)
+                          G4int ZZ, G4int AA)
 {
-   if (AA < 230.) return 0;
+   if (AA < 230) return 0;
 
    G4double ek = aParticle->GetKineticEnergy()/GeV;      
-
-   //   G4int i = NFISS;
-   //   for (G4int ii = 1; i <= NFISS; i++) {
-   //      if (ek < ekfiss[ii - 1]) {
-   //         i = ii;
-   //         break;
-   //      }
-   //   }
-   //   i = i - 1;      // For array indexing
 
    G4int ie1 = 0;
@@ -1638,11 +1633,11 @@
    G4int j = 4;
    if (ek <= 0.01) {
-      if (ZZ == 92. && std::abs(AA - 233.) < 0.5) j = 1;
-      else if (ZZ == 92. && std::abs(AA - 235.) < 0.5) j = 2;
-      else if (ZZ == 94. && std::abs(AA - 239.) < 0.5) j = 3;
+      if (ZZ == 92 && AA == 233) j = 1;
+      else if (ZZ == 92 && AA == 235) j = 2;
+      else if (ZZ == 94 && AA == 239) j = 3;
    }
    G4double z43ba;
    if (j == 4) {
-      z43ba = std::pow(ZZ, 4./3.)/AA;
+      z43ba = std::pow(G4double(ZZ), 4./3.)/G4double(AA);
       z43ba = std::max(-67. + 38.7*z43ba, 0.);
    }
