Index: trunk/source/processes/hadronic/models/incl/CMakeLists.txt
===================================================================
--- trunk/source/processes/hadronic/models/incl/CMakeLists.txt	(revision 1350)
+++ trunk/source/processes/hadronic/models/incl/CMakeLists.txt	(revision 1350)
@@ -0,0 +1,18 @@
+#------------------------------------------------------------------------------
+# CMakeLists.txt
+# Module : G4hadronic_incl_cascade
+# Package: Geant4.src.G4processes.G4hadronic.G4hadronic_models.G4hadronic_incl_cascade
+#
+# CMakeLists.txt for building a single granular library.
+#
+# Generated on : 24/9/2010
+#
+# $Id: CMakeLists.txt,v 1.1 2010/09/29 19:02:35 bmorgan Exp $
+#
+#------------------------------------------------------------------------------
+
+if(GEANT4_BUILD_GRANULAR_LIBS)
+    include(Geant4MacroLibraryTargets)
+    GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
+endif()
+
Index: trunk/source/processes/hadronic/models/incl/include/G4InclInput.hh
===================================================================
--- trunk/source/processes/hadronic/models/incl/include/G4InclInput.hh	(revision 1350)
+++ trunk/source/processes/hadronic/models/incl/include/G4InclInput.hh	(revision 1350)
@@ -0,0 +1,172 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+#ifndef G4INCLINPUT_HH
+#define G4INCLINPUT_HH 1
+
+#include "G4Nucleus.hh"
+#include "G4HadProjectile.hh"
+#include "G4Proton.hh"
+#include "G4Neutron.hh"
+#include "G4Deuteron.hh"
+#include "G4Triton.hh"
+#include "G4He3.hh"
+#include "G4Alpha.hh"
+#include "G4ParticleTable.hh"
+
+#define FSIZE 15
+/**
+ * Initial values of a hadronic cascade problem.
+ */
+class G4InclInput {
+public:
+  G4InclInput() {
+    isExtended = false;
+    breakupThreshold = 10;
+    fTargetA = 0;
+    fTargetZ = 0;
+    fBulletType = 0;
+    fBulletE = 0.0;
+    fTimeScale = 1.0;
+    fNuclearPotential = 45.0; // Nuclear potential
+    icoup = 0;
+    
+    theExtendedProjectileA = 0;
+    theExtendedProjectileZ = 0;
+    isExtended = false;
+
+    fMinProtonE = 0.0;
+    fNuclearPotential = 45.0;
+    fTimeScale = 1.0;
+    fMinNeutronEnergy = 0.0;
+
+    usingInverseKinematics = false;
+  };
+
+  G4InclInput(const G4HadProjectile &aTrack, const G4Nucleus &theNucleus, G4bool inverseKinematics);
+
+  ~G4InclInput();
+  
+  void printInfo();
+
+  static void printProjectileTargetInfo(const G4HadProjectile &aTrack, const G4Nucleus &theNucleus);
+
+  static G4bool canUseInverseKinematics(const G4HadProjectile &aTrack, const G4Nucleus &theNucleus);
+
+  G4double bulletE() {
+    return fBulletE;
+  }
+
+  G4int getClusterOption() { return 0; }; // No clusters (and in 4.2 there never will be!)
+
+  G4int bulletType() {
+    return fBulletType;
+  };
+
+  void setExtendedProjectileInfo(const G4ParticleDefinition *pd);
+
+  G4int getBulletType(const G4ParticleDefinition *pd);
+  static G4ParticleDefinition* getParticleDefinition(G4int inclParticleCode);
+
+  G4bool isInverseKinematics() {
+    return usingInverseKinematics;
+  };
+
+  G4int targetA() { return fTargetA; };
+  G4int targetZ() { return fTargetZ; };
+
+  G4int extendedProjectileA() { return theExtendedProjectileA; };
+  G4int extendedProjectileZ() { return theExtendedProjectileZ; };
+  G4bool isExtendedProjectile() { return isExtended; };
+  void isExtendedProjectile(G4bool ext) { isExtended = ext; };
+
+  G4double getPotential() { return fNuclearPotential; };
+
+  G4int getBreakupThreshold() { return breakupThreshold; };
+  G4double getTimeScale() { return fTimeScale; };
+
+private:
+  G4int theExtendedProjectileA;
+  G4int theExtendedProjectileZ;
+  G4bool isExtended;
+
+  G4int breakupThreshold;
+  /**
+   * Here f is an array containing the following initial values:
+   * - f[0] : target mass number
+   * - f[1] : target charge number
+   */
+  G4int fTargetA, fTargetZ;
+
+  /*
+   * - f[2] : bullet energy
+   */
+  G4double fBulletE;
+
+  /*
+   * - f[3] : minimum proton energy to leave the target (default: 0.0)
+   */
+  G4double fMinProtonE;
+
+  /*
+   * - f[4] : nuclear potential (default: 45.0 MeV)
+   */
+  G4double fNuclearPotential;
+
+  /*
+   * - f[5] : time scale (default: 1.0)
+   */
+  G4double fTimeScale;
+
+  /*
+   * - f[6] : bullet type (1: proton, 2: neutron, 3: pi+, 4: pi0 5: pi-, 6:H2, 7: H3, 8: He3, 9: He4
+   */
+  G4int fBulletType;
+
+  /*
+   * - f[7] : minimum neutron energy to leave the target (default: 0.0)
+   */
+  G4double fMinNeutronEnergy;
+
+  /*
+   * - f[8] : target material identifier (G4Mat)
+   * - f[9] : not used
+   * - f[10] : not used
+   * - f[11] : not used
+   * - f[12] : not used
+   * - f[13] : not used
+   * - f[14] : not used
+   */
+  //  G4double f[FSIZE];
+
+  /**
+   * Number of events to be processed.
+   */
+  G4int icoup;
+
+  G4bool usingInverseKinematics;
+};
+
+#endif
Index: trunk/source/processes/hadronic/models/incl/include/G4InclUtils.hh
===================================================================
--- trunk/source/processes/hadronic/models/incl/include/G4InclUtils.hh	(revision 1350)
+++ trunk/source/processes/hadronic/models/incl/include/G4InclUtils.hh	(revision 1350)
@@ -0,0 +1,49 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+#ifndef G4InclUtils_hh
+#define G4InclUtils_hh 1
+
+#include "globals.hh"
+
+class G4InclUtils
+{
+ public:
+  static G4double calculate4MomentumScaling(G4int A, G4int Z, G4double excitationE, G4double kineticE,
+					    G4double px, G4double py, G4double pz);
+
+protected:
+  G4InclUtils();
+  ~G4InclUtils();
+
+public:
+  // Verbosity levels:
+  static const G4int silent = 0;
+  static const G4int debug = 2;
+  static const G4int verbose = 3;
+  static const G4int verboseAll = 5;
+};
+
+#endif
Index: trunk/source/processes/hadronic/models/incl/include/G4VInclLogger.hh
===================================================================
--- trunk/source/processes/hadronic/models/incl/include/G4VInclLogger.hh	(revision 1350)
+++ trunk/source/processes/hadronic/models/incl/include/G4VInclLogger.hh	(revision 1350)
@@ -0,0 +1,78 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: G4VInclLogger.hh,v 1.2 2010/10/26 02:47:59 kaitanie Exp $ 
+// Translation of INCL4.2/ABLA V3 
+// Pekka Kaitaniemi, HIP (translation)
+// Christelle Schmidt, IPNL (fission code)
+// Alain Boudard, CEA (contact person INCL/ABLA)
+// Aatos Heikkinen, HIP (project coordination)
+
+#ifndef G4VInclLogger_hh
+#define G4VInclLogger_hh 1
+
+#include "globals.hh"
+#include "G4String.hh"
+
+/**
+ * INCL logger interface
+ *
+ * Interface that allows us to generate graphs and histograms of the
+ * INCL internal variables.
+ */
+class G4VInclLogger {
+
+public:
+  G4VInclLogger() {};
+  ~G4VInclLogger() {};
+
+  /**
+   * Book 1D histogram.
+   */
+  virtual void bookHistogram1D(G4String name, G4int bins, G4double xmin, G4double xmax) = 0;
+
+  /**
+   * Book 2D histogram.
+   */
+  virtual void bookHistogram2D(G4String name, G4int binsx, G4double xmin, G4double xmax,
+			       G4int binsy, G4double ymin, G4double ymax) = 0;
+
+  /**
+   * Fill 1D histogram.
+   */
+  virtual void fillHistogram1D(G4String name, G4double value) = 0;
+
+  /**
+   * Fill 2D histogram.
+   */
+  virtual void fillHistogram2D(G4String name, G4double xvalue, G4double yvalue) = 0;
+
+  /**
+   * Save the histograms.
+   */
+  virtual void saveHistograms() = 0;
+};
+
+#endif
Index: trunk/source/processes/hadronic/models/incl/sources.cmake
===================================================================
--- trunk/source/processes/hadronic/models/incl/sources.cmake	(revision 1350)
+++ trunk/source/processes/hadronic/models/incl/sources.cmake	(revision 1350)
@@ -0,0 +1,130 @@
+#------------------------------------------------------------------------------
+# sources.cmake
+# Module : G4hadronic_incl_cascade
+# Package: Geant4.src.G4processes.G4hadronic.G4hadronic_models.G4hadronic_incl_cascade
+#
+# Sources description for a library.
+# Lists the sources and headers of the code explicitely.
+# Lists include paths needed.
+# Lists the internal granular and global dependencies of the library.
+# Source specific properties should be added at the end.
+#
+# Generated on : 24/9/2010
+#
+# $Id: sources.cmake,v 1.7 2010/11/30 11:38:26 bmorgan Exp $
+# GEANT4 Tag $Name: geant4-09-04-ref-00 $
+#
+#------------------------------------------------------------------------------
+
+# List external includes needed.
+include_directories(${CLHEP_INCLUDE_DIRS})
+
+# List internal includes needed.
+include_directories(${CMAKE_SOURCE_DIR}/source/geometry/management/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/geometry/volumes/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPGeometry/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPNumerics/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPRandom/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/global/management/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/materials/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/particles/bosons/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/barions/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/ions/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/mesons/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/particles/leptons/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/particles/management/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/particles/shortlived/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/cross_sections/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/management/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/de_excitation/evaporation/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/de_excitation/fermi_breakup/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/de_excitation/handler/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/de_excitation/management/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/de_excitation/multifragmentation/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/de_excitation/photon_evaporation/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/de_excitation/util/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/management/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/util/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/pre_equilibrium/exciton_model/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/processes/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/util/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/processes/management/include)
+include_directories(${CMAKE_SOURCE_DIR}/source/track/include)
+
+#
+# Define the Geant4 Module.
+#
+include(Geant4MacroDefineModule)
+GEANT4_DEFINE_MODULE(NAME G4hadronic_incl_cascade
+    HEADERS
+        G4Abla.hh
+        G4AblaDataDefs.hh
+        G4AblaEvaporation.hh
+        G4AblaFission.hh
+        G4AblaFissionBase.hh
+        G4AblaFissionSimfis18.hh
+        G4Incl.hh
+        G4InclAblaCascadeInterface.hh
+        G4InclAblaDataFile.hh
+        G4InclAblaLightIonInterface.hh
+        G4InclAblaVirtualData.hh
+        G4InclCascadeInterface.hh
+        G4InclDataDefs.hh
+        G4InclInput.hh
+        G4InclLightIonInterface.hh
+        G4InclRandomNumbers.hh
+        G4InclUtils.hh
+        G4Ranecu.hh
+        G4VInclLogger.hh
+    SOURCES
+        G4Abla.cc
+        G4AblaEvaporation.cc
+        G4AblaFission.cc
+        G4AblaFissionBase.cc
+        G4AblaFissionSimfis18.cc
+        G4Incl.cc
+        G4InclAblaCascadeInterface.cc
+        G4InclAblaDataFile.cc
+        G4InclAblaLightIonInterface.cc
+        G4InclAblaVirtualData.cc
+        G4InclCascadeInterface.cc
+        G4InclInput.cc
+        G4InclLightIonInterface.cc
+        G4InclUtils.cc
+        G4Ranecu.cc
+    GRANULAR_DEPENDENCIES
+        G4baryons
+        G4bosons
+        G4geometrymng
+        G4globman
+        G4had_mod_man
+        G4had_mod_util
+        G4had_preequ_exciton
+        G4hadronic_deex_evaporation
+        G4hadronic_deex_fermi_breakup
+        G4hadronic_deex_handler
+        G4hadronic_mgt
+        G4hadronic_proc
+        G4hadronic_util
+        G4hadronic_xsect
+        G4hepnumerics
+        G4ions
+        G4leptons
+        G4materials
+        G4mesons
+        G4partman
+        G4procman
+        G4shortlived
+        G4track
+        G4volumes
+    GLOBAL_DEPENDENCIES
+        G4geometry
+        G4global
+        G4materials
+        G4particles
+        G4track
+    LINK_LIBRARIES
+)
+
+# List any source specific properties here
+
Index: trunk/source/processes/hadronic/models/incl/src/G4InclInput.cc
===================================================================
--- trunk/source/processes/hadronic/models/incl/src/G4InclInput.cc	(revision 1350)
+++ trunk/source/processes/hadronic/models/incl/src/G4InclInput.cc	(revision 1350)
@@ -0,0 +1,151 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+#include "G4InclInput.hh"
+
+G4InclInput::G4InclInput(const G4HadProjectile &aTrack, const G4Nucleus &theNucleus, G4bool inverseKinematics = false) {
+  usingInverseKinematics = inverseKinematics;
+
+  fTargetA = theNucleus.GetA_asInt(); // Target mass number
+  fTargetZ = theNucleus.GetZ_asInt(); // Target charge number
+  fBulletType = getBulletType(aTrack.GetDefinition()); // Projectile type (INCL particle code)
+  fBulletE = aTrack.GetKineticEnergy() / MeV; // Projectile energy (total, in MeV)
+  fTimeScale = 1.0; // Time scaling
+  fNuclearPotential = 45.0; // Nuclear potential
+  setExtendedProjectileInfo(aTrack.GetDefinition());
+  icoup = 0;
+  breakupThreshold = 10;
+  fMinNeutronEnergy = 0.0;
+  fMinProtonE = 0.0;
+}
+
+G4InclInput::~G4InclInput() {}
+
+void G4InclInput::printInfo() {
+  G4cout <<"Target: A = " << targetA() << " Z = " << targetZ() << G4endl;
+  G4cout <<"Projectile: type = " << bulletType() << " energy = " << bulletE() << G4endl;
+}
+
+void G4InclInput::printProjectileTargetInfo(const G4HadProjectile &aTrack, const G4Nucleus &theNucleus) {
+  G4cout <<"Projectile = " << aTrack.GetDefinition()->GetParticleName() << G4endl;
+  G4cout <<"    four-momentum: " << aTrack.Get4Momentum() << G4endl;
+  G4cout <<"Energy = " << aTrack.GetKineticEnergy() / MeV << G4endl;
+  G4cout <<"Target A = " << theNucleus.GetA_asInt() << " Z = " << theNucleus.GetZ_asInt() << G4endl;
+}
+
+
+G4bool G4InclInput::canUseInverseKinematics(const G4HadProjectile &aTrack, const G4Nucleus &theNucleus) {
+  G4int targetA = theNucleus.GetA_asInt();
+  const G4ParticleDefinition *projectileDef = aTrack.GetDefinition();
+  G4int projectileA = projectileDef->GetAtomicMass();
+  //    G4int projectileZ = projectileDef->GetAtomicNumber();
+  if(targetA > 0 && targetA < 18 && (projectileDef != G4Proton::Proton() &&
+				     projectileDef != G4Neutron::Neutron() &&
+				     projectileDef != G4PionPlus::PionPlus() &&
+				     projectileDef != G4PionZero::PionZero() &&
+				     projectileDef != G4PionMinus::PionMinus()) &&
+			      projectileA > 1) {
+    return true;
+  } else {
+    return false;
+  }
+}
+
+void G4InclInput::setExtendedProjectileInfo(const G4ParticleDefinition *pd) {
+  if(getBulletType(pd) == -666) {
+    theExtendedProjectileA = pd->GetAtomicMass();
+    theExtendedProjectileZ = pd->GetAtomicNumber();
+    isExtended = true;
+  } else {
+    isExtended = false;
+  }
+}
+
+G4int G4InclInput::getBulletType(const G4ParticleDefinition *pd) {
+  //  G4ParticleTable *pt = G4ParticleTable::GetParticleTable();
+
+  if(pd == G4Proton::Proton()) {
+    return 1;
+  } else if(pd == G4Neutron::Neutron()) {
+    return 2;
+  } else if(pd == G4PionPlus::PionPlus()) {
+    return 3;
+  } else if(pd == G4PionMinus::PionMinus()) {
+    return 5;
+  } else if(pd == G4PionZero::PionZero()) {
+    return 4;
+  } else if(pd == G4Deuteron::Deuteron()) {
+    return 6;
+  } else if(pd == G4Triton::Triton()) {
+    return 7;
+  } else if(pd == G4He3::He3()) {
+    return 8;
+  } else if(pd == G4Alpha::Alpha()) {
+    return 9;
+    //  } else if(pd == pt->GetIon(6, 12, 0.0)) { // C12 special case. This should be phased-out in favor of "extended projectile"
+    //    return -12;
+  } else { // Is this extended projectile?
+    G4int A = pd->GetAtomicMass();
+    G4int Z = pd->GetAtomicNumber();
+    if(A > 4 && A <= 16 && Z > 2 && Z <= 8) { // Ions from Lithium to Oxygen
+      return -666; // Code of an extended projectile
+    }
+  }
+  G4cout <<"Error! Projectile " << pd->GetParticleName() << " not defined!" << G4endl;
+  return 0;
+}
+
+G4ParticleDefinition* G4InclInput::getParticleDefinition(G4int inclParticleCode) {
+  switch(inclParticleCode) {
+  case 1:
+    return G4Proton::ProtonDefinition();
+    break;
+  case 2:
+    return G4Neutron::NeutronDefinition();
+    break;
+  case 3:
+    return G4PionPlus::PionPlusDefinition();
+    break;
+  case 4:
+    return G4PionMinus::PionMinusDefinition();
+    break;
+  case 5:
+    return G4PionZero::PionZeroDefinition();
+    break;
+  case 6:
+    return G4Deuteron::DeuteronDefinition();
+    break;
+  case 7:
+    return G4Triton::Triton();
+    break;
+  case 8:
+    return G4He3::He3Definition();
+    break;
+  case 9:
+    return G4Alpha::AlphaDefinition();
+    break;
+  }
+  return 0;
+}
Index: trunk/source/processes/hadronic/models/incl/src/G4InclUtils.cc
===================================================================
--- trunk/source/processes/hadronic/models/incl/src/G4InclUtils.cc	(revision 1350)
+++ trunk/source/processes/hadronic/models/incl/src/G4InclUtils.cc	(revision 1350)
@@ -0,0 +1,34 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+#include "G4InclUtils.hh"
+#include "G4NucleiProperties.hh"
+
+G4double G4InclUtils::calculate4MomentumScaling(G4int A, G4int Z, G4double excitationE, G4double kineticE,
+						G4double px, G4double py, G4double pz)
+{
+  G4double nuclearMass = (G4NucleiProperties::GetNuclearMass(A, Z) / MeV + excitationE) * MeV;
+  return std::sqrt(kineticE*kineticE + 2.0 * kineticE * nuclearMass)/std::sqrt(px*px + py*py + pz*pz);
+}
