Index: unk/source/particles/management/include/G4NucleiPropertiesTable.hh
===================================================================
--- /trunk/source/particles/management/include/G4NucleiPropertiesTable.hh	(revision 1197)
+++ 	(revision )
@@ -1,155 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4NucleiPropertiesTable.hh,v 1.14 2008/10/22 12:35:46 kurasige Exp $
-// GEANT4 tag $Name: geant4-09-02-ref-02 $
-//
-// -------------------------------------------------------------------
-//      GEANT 4 class file --- Copyright CERN 1997
-//      CERN Geneva Switzerland
-//
-//
-//      File name:     G4NucleiPropertiesTable.cc 
-//
-//      Authors:       Vicente Lara (Vicente.Lara@cern.ch)
-//                     Christian V"olcker (Christian.Volcker@cern.ch),
-//
-//      Creation date: November 1997
-//
-//      Testfiles:
-//
-//      Modifications: 
-//
-// Migrate into particles category by H.Kurashige (17 Nov. 98)
-// Subtract electron mass by H.Kurashige
-// Avoid substraction of electron mass in Atomic masses by V.Lara (12 May 99)
-// Remove "theInstance"  by H.Kurashige (12 Dec. 03)
-// -------------------------------------------------------------------
-#include "globals.hh"
-#include <cmath>
-
-
-#ifndef G4NucleiPropertiesTable_h
-#define G4NucleiPropertiesTable_h 1
-
-// Class Description
-// Class: G4NucleiPropertiesTable
-//	Encapsulates Data from G. Audi and A.H. Wapstra, Nucl.
-//	Physics,A595 vol 4 p 409-480,
-//	25. Dec. 1995.
-//	Name, Z, A,
-//	Mass Excess
-//	Binding Energy
-//	Beta Decay Energy
-//	Atomic Mass
-
-class G4NucleiProperties;
-
-class G4NucleiPropertiesTable 
-{
-private:
-  
-  // Default constructor - this class should exist only once!
-  G4NucleiPropertiesTable(){};
-
-public:
-
-  // Destructor (generated)
-  ~G4NucleiPropertiesTable() { };
-
-  enum  {nEntries = 2931,MaxA = 273}; 
-
-  // Other Operations 
-  // all methods are private and can be used only by G4NucleiProperties
-
-  friend class G4NucleiProperties;  
-
-private:
-
-  // Operation: GetMassExcess
-  static G4double GetMassExcess(G4int Z, G4int A); 
-
-  // Operation: GetNuclearMass
-  static G4double GetNuclearMass(G4int Z, G4int A);
-
-  // Operation: GetBindingEnergy
-  static G4double GetBindingEnergy(G4int Z, G4int A);
-
-  // Operation: GetBetaDecayEnergy
-  static G4double GetBetaDecayEnergy(G4int Z, G4int A);
-
-  // Operation: GetAtomicMass .. in Geant4 Energy units!
-  static G4double GetAtomicMass(G4int Z, G4int A);
-
-  // Is the nucleus (A,Z) in table?
-  static G4bool IsInTable(G4int Z, G4int A);
-
-  static G4int MaxZ(G4int A);
-  static G4int MinZ(G4int A);
-
-
-private:
-
-  // Operation: GetIndex
-  static G4int GetIndex(G4int Z, G4int A);
-  
-
-  // Data Members for Class Attributes
-  //----------------------------------  
-
-  // The following arrays are static for allow inicialization.
-  // The inicialization is Done in G4NucleiPropertiesTable.cc
-
-  // Mass Excess
-  static G4double MassExcess[nEntries];
-  
-  
-  // Beta Decay Energy
-  static G4double BetaEnergy[nEntries];
-
-    
-  // Table of Z (number of protons) and A (number of nucleons)
-  //        indexArray[0][ ] --> Z
-  //        indexArray[1][ ] --> A
-  static G4int indexArray[2][nEntries];
-
-  // Reduced Table of A for shorter index search.
-  //         The index in this table coincide with A-1
-  //         For each A value shortTable[A-1] has the index of the 1st occurrence in
-  //         the indexArray[][]
-  static G4int shortTable[MaxA+1];
-
-
-};
-
-
-#endif
-
-
-
-
-
-
Index: unk/source/particles/management/src/G4NucleiPropertiesTableA.cc
===================================================================
--- /trunk/source/particles/management/src/G4NucleiPropertiesTableA.cc	(revision 1197)
+++ 	(revision )
@@ -1,155 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4NucleiPropertiesTableA.cc,v 1.11 2008/10/23 13:34:59 kurasige Exp $
-// GEANT4 tag $Name: geant4-09-02-ref-02 $
-//
-// -------------------------------------------------------------------
-//      GEANT 4 class file --- Copyright CERN 1997
-//      CERN Geneva Switzerland
-//
-//
-//      File name:     G4NucleiPropertiesTable.cc 
-//
-//      Authors:       Vicente Lara (Vicente.Lara@cern.ch)
-//                     Christian V'olcker (Christian.Volcker@cern.ch),
-//
-//      Creation date: November 1997
-//
-//      Modifications: 
-// -------------------------------------------------------------------
-// Migrate into particles category by H.Kurashige (17 Nov. 98)
-// Remove "theInstance"  by H.Kurashige (12 Dec. 03)
-
-#include "G4NucleiPropertiesTable.hh"
-
-// Class G4NucleiPropertiesTable 
-
-// Determine the table index for a Nuclide with Z protons and A nucleons
-
-G4int G4NucleiPropertiesTable::GetIndex(G4int Z, G4int A) 
-{
-  if(A>G4NucleiPropertiesTable::MaxA) {
-    G4Exception("G4NucleiPropertiesTable::GetIndex",
-		"Illegal arguemnt",
-		EventMustBeAborted,"Nucleon number larger than 273!");
-  } else if(A<1) {
-    G4Exception("G4NucleiPropertiesTable::GetIndex",
-		"Illegal arguemnt",
-		EventMustBeAborted," Nucleon number is negative!"); 
-  } else if(Z>A) {
-    G4Exception("G4NucleiPropertiesTable::GetIndex",
-		"Illegal arguemnt",
-		EventMustBeAborted, "Nucleon number smaller than Z!"); 
-  }
-   
-  G4int i = shortTable[A-1];
-  while ( i < shortTable[A] ) {
-    if (indexArray[0][i] != Z ) {
-      i++;
-    } else {
-      return i;
-    }
-  }
-  return -1;
-}
-
-
-G4int G4NucleiPropertiesTable::MinZ(G4int A)
-{
-  G4int i = shortTable[A-1];
-  return indexArray[0][i];
-}
-
-
-G4int G4NucleiPropertiesTable::MaxZ(G4int A)
-{
-  G4int i = shortTable[A]-1;
-  return indexArray[0][i];
-}
-
-
-
-
-G4double G4NucleiPropertiesTable::GetNuclearMass(G4int Z, G4int A)
-{
-  G4int i=GetIndex(Z, A);	
-  if (i >= 0){
-    const G4double NuclearMass = GetAtomicMass(Z,A) - G4double(Z)*electron_mass_c2 +
-      1.433e-5*MeV*std::pow(G4double(Z),2.39);
-    return NuclearMass;
-  } else { 
-    return 0.0;
-  }
-}
-
-
-G4double G4NucleiPropertiesTable::GetMassExcess(G4int Z, G4int A) 
-{
-    G4int i=GetIndex(Z, A);
-    if (i >= 0) {
-      return MassExcess[i]*keV;
-    } else {
-        return 0.0;
-    }
-}
-
-G4double G4NucleiPropertiesTable::GetBindingEnergy(G4int Z, G4int A)
-{
-  G4int i=GetIndex(Z, A);
-  if (i >= 0){
-      return (G4double(A-Z)*MassExcess[0] + G4double(Z)*MassExcess[1] - MassExcess[i])*keV;
-  } else { 
-    return 0.0;
-  }
-}
-
-G4double  G4NucleiPropertiesTable::GetBetaDecayEnergy(G4int Z, G4int A)
-{
-  G4int i=GetIndex(Z, A);
-    if (i >= 0){
-      return BetaEnergy[i]*keV;
-    } else { 
-      return 0.0;
-    }
-}
-
-G4double  G4NucleiPropertiesTable::GetAtomicMass(G4int Z, G4int A)
-{
-  G4int i=GetIndex(Z, A);	
-  if (i >= 0){
-    return MassExcess[i]*keV + G4double(A)*amu_c2;
-  } else { 
-    return 0.0;
-  }	
-}
-
-
-G4bool G4NucleiPropertiesTable::IsInTable(G4int Z, G4int A)
-{
-  return (Z <= A && A >= 1 && A <= 273 && Z >= 0 && Z <= 110 && GetIndex(Z, A) >= 0);
-}
-
Index: unk/source/particles/management/src/G4NucleiPropertiesTableB.cc
===================================================================
--- /trunk/source/particles/management/src/G4NucleiPropertiesTableB.cc	(revision 1197)
+++ 	(revision )
@@ -1,1186 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4NucleiPropertiesTableB.cc,v 1.9 2006/06/29 19:25:44 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-ref-02 $
-//
-// -------------------------------------------------------------------
-//      GEANT 4 class implementation file 
-//
-//      File name:     G4NucleiPropertiesTable.cc 
-//
-//      Authors:       Vicente Lara (Vicente.Lara@cern.ch)
-//                     Christian V"olcker (Christian.Volcker@cern.ch),
-//
-//      Creation date: November 1997
-//
-//      Modifications: 
-// -------------------------------------------------------------------
-// Migrate into particles category by H.Kurashige (17 Nov. 98)
-// Add shortTable initialization by H.Kurashige (12 Dec. 03)
-
-#include "G4NucleiPropertiesTable.hh"
-
-
-// Class G4NucleiPropertiesTable 
-
-
-//+------------------------------------------------------------+
-//| Table of Z (number of protons) and A (number of nucleons)  |
-//|        indexArray[0][ ] --> Z                              |
-//|        indexArray[1][ ] --> A                              |
-//+------------------------------------------------------------+
-G4int G4NucleiPropertiesTable::indexArray[2][G4NucleiPropertiesTable::nEntries] = {
-  // ---------- Z ----------
-  {
-  0,   1,   1,   1,   2,   1,   2,   3,   1,   2,   3, 
-  4,   1,   2,   3,   4,   2,   3,   4,   5,   2,   3, 
-  4,   5,   6,   2,   3,   4,   5,   6,   2,   3,   4, 
-  5,   6,   7,   3,   4,   5,   6,   7,   3,   4,   5, 
-  6,   7,   8,   4,   5,   6,   7,   8,   4,   5,   6, 
-  7,   8,   9,   5,   6,   7,   8,   9,   5,   6,   7, 
-  8,   9,  10,   5,   6,   7,   8,   9,  10,   5,   6, 
-  7,   8,   9,  10,  11,   5,   6,   7,   8,   9,  10, 
- 11,   6,   7,   8,   9,  10,  11,  12,   6,   7,   8, 
-  9,  10,  11,  12,  13,   6,   7,   8,   9,  10,  11, 
- 12,  13,  14,   7,   8,   9,  10,  11,  12,  13,  14, 
-  7,   8,   9,  10,  11,  12,  13,  14,  15,   8,   9, 
- 10,  11,  12,  13,  14,  15,   8,   9,  10,  11,  12, 
- 13,  14,  15,  16,   9,  10,  11,  12,  13,  14,  15, 
- 16,   9,  10,  11,  12,  13,  14,  15,  16,  17,   9, 
- 10,  11,  12,  13,  14,  15,  16,  17,  10,  11,  12, 
- 13,  14,  15,  16,  17,  18,  10,  11,  12,  13,  14, 
- 15,  16,  17,  18,  10,  11,  12,  13,  14,  15,  16, 
- 17,  18,  19,  11,  12,  13,  14,  15,  16,  17,  18, 
- 19,  11,  12,  13,  14,  15,  16,  17,  18,  19,  20, 
- 11,  12,  13,  14,  15,  16,  17,  18,  19,  20,  12, 
- 13,  14,  15,  16,  17,  18,  19,  20,  21,  12,  13, 
- 14,  15,  16,  17,  18,  19,  20,  21,  13,  14,  15, 
- 16,  17,  18,  19,  20,  21,  22,  13,  14,  15,  16, 
- 17,  18,  19,  20,  21,  22,  14,  15,  16,  17,  18, 
- 19,  20,  21,  22,  23,  14,  15,  16,  17,  18,  19, 
- 20,  21,  22,  23,  14,  15,  16,  17,  18,  19,  20, 
- 21,  22,  23,  24,  15,  16,  17,  18,  19,  20,  21, 
- 22,  23,  24,  15,  16,  17,  18,  19,  20,  21,  22, 
- 23,  24,  25,  15,  16,  17,  18,  19,  20,  21,  22, 
- 23,  24,  25,  26,  15,  16,  17,  18,  19,  20,  21, 
- 22,  23,  24,  25,  26,  16,  17,  18,  19,  20,  21, 
- 22,  23,  24,  25,  26,  16,  17,  18,  19,  20,  21, 
- 22,  23,  24,  25,  26,  27,  16,  17,  18,  19,  20, 
- 21,  22,  23,  24,  25,  26,  27,  17,  18,  19,  20, 
- 21,  22,  23,  24,  25,  26,  27,  28,  17,  18,  19, 
- 20,  21,  22,  23,  24,  25,  26,  27,  28,  18,  19, 
- 20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  18, 
- 19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29, 
- 19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29, 
- 30,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28, 
- 29,  30,  20,  21,  22,  23,  24,  25,  26,  27,  28, 
- 29,  30,  31,  20,  21,  22,  23,  24,  25,  26,  27, 
- 28,  29,  30,  31,  21,  22,  23,  24,  25,  26,  27, 
- 28,  29,  30,  31,  32,  21,  22,  23,  24,  25,  26, 
- 27,  28,  29,  30,  31,  32,  22,  23,  24,  25,  26, 
- 27,  28,  29,  30,  31,  32,  33,  22,  23,  24,  25, 
- 26,  27,  28,  29,  30,  31,  32,  33,  23,  24,  25, 
- 26,  27,  28,  29,  30,  31,  32,  33,  23,  24,  25, 
- 26,  27,  28,  29,  30,  31,  32,  33,  24,  25,  26, 
- 27,  28,  29,  30,  31,  32,  33,  24,  25,  26,  27, 
- 28,  29,  30,  31,  32,  33,  34,  25,  26,  27,  28, 
- 29,  30,  31,  32,  33,  34,  25,  26,  27,  28,  29, 
- 30,  31,  32,  33,  34,  35,  26,  27,  28,  29,  30, 
- 31,  32,  33,  34,  35,  26,  27,  28,  29,  30,  31, 
- 32,  33,  34,  35,  36,  27,  28,  29,  30,  31,  32, 
- 33,  34,  35,  36,  27,  28,  29,  30,  31,  32,  33, 
- 34,  35,  36,  37,  27,  28,  29,  30,  31,  32,  33, 
- 34,  35,  36,  37,  28,  29,  30,  31,  32,  33,  34, 
- 35,  36,  37,  38,  28,  29,  30,  31,  32,  33,  34, 
- 35,  36,  37,  38,  28,  29,  30,  31,  32,  33,  34, 
- 35,  36,  37,  38,  28,  29,  30,  31,  32,  33,  34, 
- 35,  36,  37,  38,  28,  29,  30,  31,  32,  33,  34, 
- 35,  36,  37,  38,  39,  28,  29,  30,  31,  32,  33, 
- 34,  35,  36,  37,  38,  39,  29,  30,  31,  32,  33, 
- 34,  35,  36,  37,  38,  39,  40,  29,  30,  31,  32, 
- 33,  34,  35,  36,  37,  38,  39,  40,  30,  31,  32, 
- 33,  34,  35,  36,  37,  38,  39,  40,  41,  30,  31, 
- 32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  31, 
- 32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42, 
- 31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41, 
- 42,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41, 
- 42,  43,  32,  33,  34,  35,  36,  37,  38,  39,  40, 
- 41,  42,  43,  33,  34,  35,  36,  37,  38,  39,  40, 
- 41,  42,  43,  44,  33,  34,  35,  36,  37,  38,  39, 
- 40,  41,  42,  43,  44,  33,  34,  35,  36,  37,  38, 
- 39,  40,  41,  42,  43,  44,  45,  34,  35,  36,  37, 
- 38,  39,  40,  41,  42,  43,  44,  45,  34,  35,  36, 
- 37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  34, 
- 35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45, 
- 46,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44, 
- 45,  46,  35,  36,  37,  38,  39,  40,  41,  42,  43, 
- 44,  45,  46,  47,  36,  37,  38,  39,  40,  41,  42, 
- 43,  44,  45,  46,  47,  36,  37,  38,  39,  40,  41, 
- 42,  43,  44,  45,  46,  47,  48,  36,  37,  38,  39, 
- 40,  41,  42,  43,  44,  45,  46,  47,  48,  37,  38, 
- 39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49, 
- 37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47, 
- 48,  49,  37,  38,  39,  40,  41,  42,  43,  44,  45, 
- 46,  47,  48,  49,  50,  37,  38,  39,  40,  41,  42, 
- 43,  44,  45,  46,  47,  48,  49,  50,  37,  38,  39, 
- 40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50, 
- 38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48, 
- 49,  50,  51,  38,  39,  40,  41,  42,  43,  44,  45, 
- 46,  47,  48,  49,  50,  51,  39,  40,  41,  42,  43, 
- 44,  45,  46,  47,  48,  49,  50,  51,  39,  40,  41, 
- 42,  43,  44,  45,  46,  47,  48,  49,  50,  51,  52, 
- 40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50, 
- 51,  52,  40,  41,  42,  43,  44,  45,  46,  47,  48, 
- 49,  50,  51,  52,  53,  41,  42,  43,  44,  45,  46, 
- 47,  48,  49,  50,  51,  52,  53,  41,  42,  43,  44, 
- 45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  42, 
- 43,  44,  45,  46,  47,  48,  49,  50,  51,  52,  53, 
- 54,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51, 
- 52,  53,  54,  55,  42,  43,  44,  45,  46,  47,  48, 
- 49,  50,  51,  52,  53,  54,  55,  43,  44,  45,  46, 
- 47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  43, 
- 44,  45,  46,  47,  48,  49,  50,  51,  52,  53,  54, 
- 55,  56,  44,  45,  46,  47,  48,  49,  50,  51,  52, 
- 53,  54,  55,  56,  44,  45,  46,  47,  48,  49,  50, 
- 51,  52,  53,  54,  55,  56,  57,  44,  45,  46,  47, 
- 48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  45, 
- 46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56, 
- 57,  58,  45,  46,  47,  48,  49,  50,  51,  52,  53, 
- 54,  55,  56,  57,  58,  45,  46,  47,  48,  49,  50, 
- 51,  52,  53,  54,  55,  56,  57,  58,  59,  46,  47, 
- 48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58, 
- 59,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55, 
- 56,  57,  58,  59,  47,  48,  49,  50,  51,  52,  53, 
- 54,  55,  56,  57,  58,  59,  47,  48,  49,  50,  51, 
- 52,  53,  54,  55,  56,  57,  58,  59,  47,  48,  49, 
- 50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60, 
- 47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57, 
- 58,  59,  60,  48,  49,  50,  51,  52,  53,  54,  55, 
- 56,  57,  58,  59,  60,  61,  48,  49,  50,  51,  52, 
- 53,  54,  55,  56,  57,  58,  59,  60,  61,  48,  49, 
- 50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60, 
- 61,  62,  49,  50,  51,  52,  53,  54,  55,  56,  57, 
- 58,  59,  60,  61,  62,  49,  50,  51,  52,  53,  54, 
- 55,  56,  57,  58,  59,  60,  61,  62,  63,  49,  50, 
- 51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61, 
- 62,  63,  49,  50,  51,  52,  53,  54,  55,  56,  57, 
- 58,  59,  60,  61,  62,  63,  50,  51,  52,  53,  54, 
- 55,  56,  57,  58,  59,  60,  61,  62,  63,  50,  51, 
- 52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62, 
- 63,  64,  50,  51,  52,  53,  54,  55,  56,  57,  58, 
- 59,  60,  61,  62,  63,  64,  51,  52,  53,  54,  55, 
- 56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  51, 
- 52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62, 
- 63,  64,  65,  52,  53,  54,  55,  56,  57,  58,  59, 
- 60,  61,  62,  63,  64,  65,  66,  52,  53,  54,  55, 
- 56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66, 
- 52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62, 
- 63,  64,  65,  66,  67,  53,  54,  55,  56,  57,  58, 
- 59,  60,  61,  62,  63,  64,  65,  66,  67,  53,  54, 
- 55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65, 
- 66,  67,  68,  54,  55,  56,  57,  58,  59,  60,  61, 
- 62,  63,  64,  65,  66,  67,  68,  54,  55,  56,  57, 
- 58,  59,  60,  61,  62,  63,  64,  65,  66,  67,  68, 
- 69,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63, 
- 64,  65,  66,  67,  68,  69,  55,  56,  57,  58,  59, 
- 60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70, 
- 55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65, 
- 66,  67,  68,  69,  70,  55,  56,  57,  58,  59,  60, 
- 61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71, 
- 55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65, 
- 66,  67,  68,  69,  70,  71,  56,  57,  58,  59,  60, 
- 61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71, 
- 56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66, 
- 67,  68,  69,  70,  71,  57,  58,  59,  60,  61,  62, 
- 63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  57, 
- 58,  59,  60,  61,  62,  63,  64,  65,  66,  67,  68, 
- 69,  70,  71,  72,  58,  59,  60,  61,  62,  63,  64, 
- 65,  66,  67,  68,  69,  70,  71,  72,  73,  58,  59, 
- 60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70, 
- 71,  72,  73,  59,  60,  61,  62,  63,  64,  65,  66, 
- 67,  68,  69,  70,  71,  72,  73,  74,  59,  60,  61, 
- 62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72, 
- 73,  74,  60,  61,  62,  63,  64,  65,  66,  67,  68, 
- 69,  70,  71,  72,  73,  74,  75,  60,  61,  62,  63, 
- 64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74, 
- 75,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70, 
- 71,  72,  73,  74,  75,  76,  61,  62,  63,  64,  65, 
- 66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76, 
- 62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72, 
- 73,  74,  75,  76,  62,  63,  64,  65,  66,  67,  68, 
- 69,  70,  71,  72,  73,  74,  75,  76,  77,  63,  64, 
- 65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75, 
- 76,  77,  63,  64,  65,  66,  67,  68,  69,  70,  71, 
- 72,  73,  74,  75,  76,  77,  64,  65,  66,  67,  68, 
- 69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  64, 
- 65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75, 
- 76,  77,  78,  65,  66,  67,  68,  69,  70,  71,  72, 
- 73,  74,  75,  76,  77,  78,  65,  66,  67,  68,  69, 
- 70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  66, 
- 67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77, 
- 78,  79,  66,  67,  68,  69,  70,  71,  72,  73,  74, 
- 75,  76,  77,  78,  79,  67,  68,  69,  70,  71,  72, 
- 73,  74,  75,  76,  77,  78,  79,  67,  68,  69,  70, 
- 71,  72,  73,  74,  75,  76,  77,  78,  79,  80,  68, 
- 69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79, 
- 80,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77, 
- 78,  79,  80,  81,  69,  70,  71,  72,  73,  74,  75, 
- 76,  77,  78,  79,  80,  81,  69,  70,  71,  72,  73, 
- 74,  75,  76,  77,  78,  79,  80,  81,  70,  71,  72, 
- 73,  74,  75,  76,  77,  78,  79,  80,  81,  70,  71, 
- 72,  73,  74,  75,  76,  77,  78,  79,  80,  81,  82, 
- 71,  72,  73,  74,  75,  76,  77,  78,  79,  80,  81, 
- 82,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80, 
- 81,  82,  71,  72,  73,  74,  75,  76,  77,  78,  79, 
- 80,  81,  82,  72,  73,  74,  75,  76,  77,  78,  79, 
- 80,  81,  82,  83,  72,  73,  74,  75,  76,  77,  78, 
- 79,  80,  81,  82,  83,  73,  74,  75,  76,  77,  78, 
- 79,  80,  81,  82,  83,  73,  74,  75,  76,  77,  78, 
- 79,  80,  81,  82,  83,  74,  75,  76,  77,  78,  79, 
- 80,  81,  82,  83,  74,  75,  76,  77,  78,  79,  80, 
- 81,  82,  83,  84,  75,  76,  77,  78,  79,  80,  81, 
- 82,  83,  84,  75,  76,  77,  78,  79,  80,  81,  82, 
- 83,  84,  76,  77,  78,  79,  80,  81,  82,  83,  84, 
- 85,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85, 
- 76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  76, 
- 77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  77, 
- 78,  79,  80,  81,  82,  83,  84,  85,  86,  77,  78, 
- 79,  80,  81,  82,  83,  84,  85,  86,  77,  78,  79, 
- 80,  81,  82,  83,  84,  85,  86,  78,  79,  80,  81, 
- 82,  83,  84,  85,  86,  87,  78,  79,  80,  81,  82, 
- 83,  84,  85,  86,  87,  78,  79,  80,  81,  82,  83, 
- 84,  85,  86,  87,  79,  80,  81,  82,  83,  84,  85, 
- 86,  87,  88,  79,  80,  81,  82,  83,  84,  85,  86, 
- 87,  88,  79,  80,  81,  82,  83,  84,  85,  86,  87, 
- 88,  80,  81,  82,  83,  84,  85,  86,  87,  88,  80, 
- 81,  82,  83,  84,  85,  86,  87,  88,  89,  80,  81, 
- 82,  83,  84,  85,  86,  87,  88,  89,  81,  82,  83, 
- 84,  85,  86,  87,  88,  89,  81,  82,  83,  84,  85, 
- 86,  87,  88,  89,  90,  82,  83,  84,  85,  86,  87, 
- 88,  89,  90,  82,  83,  84,  85,  86,  87,  88,  89, 
- 90,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91, 
- 82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  83, 
- 84,  85,  86,  87,  88,  89,  90,  91,  83,  84,  85, 
- 86,  87,  88,  89,  90,  91,  84,  85,  86,  87,  88, 
- 89,  90,  91,  84,  85,  86,  87,  88,  89,  90,  91, 
- 92,  85,  86,  87,  88,  89,  90,  91,  92,  85,  86, 
- 87,  88,  89,  90,  91,  92,  85,  86,  87,  88,  89, 
- 90,  91,  92,  85,  86,  87,  88,  89,  90,  91,  92, 
- 85,  86,  87,  88,  89,  90,  91,  92,  86,  87,  88, 
- 89,  90,  91,  92,  86,  87,  88,  89,  90,  91,  92, 
- 93,  86,  87,  88,  89,  90,  91,  92,  93,  86,  87, 
- 88,  89,  90,  91,  92,  93,  86,  87,  88,  89,  90, 
- 91,  92,  93,  94,  87,  88,  89,  90,  91,  92,  93, 
- 94,  87,  88,  89,  90,  91,  92,  93,  94,  87,  88, 
- 89,  90,  91,  92,  93,  94,  95,  87,  88,  89,  90, 
- 91,  92,  93,  94,  95,  88,  89,  90,  91,  92,  93, 
- 94,  95,  96,  88,  89,  90,  91,  92,  93,  94,  95, 
- 96,  89,  90,  91,  92,  93,  94,  95,  96,  97,  89, 
- 90,  91,  92,  93,  94,  95,  96,  97,  90,  91,  92, 
- 93,  94,  95,  96,  97,  98,  90,  91,  92,  93,  94, 
- 95,  96,  97,  98,  91,  92,  93,  94,  95,  96,  97, 
- 98,  91,  92,  93,  94,  95,  96,  97,  98,  99,  92, 
- 93,  94,  95,  96,  97,  98,  99,  92,  93,  94,  95, 
- 96,  97,  98,  99, 100,  93,  94,  95,  96,  97,  98, 
- 99, 100,  93,  94,  95,  96,  97,  98,  99, 100,  94, 
- 95,  96,  97,  98,  99, 100, 101,  94,  95,  96,  97, 
- 98,  99, 100, 101,  94,  95,  96,  97,  98,  99, 100, 
-101,  95,  96,  97,  98,  99, 100, 101,  95,  96,  97, 
- 98,  99, 100, 101, 102,  96,  97,  98,  99, 100, 101, 
-102,  96,  97,  98,  99, 100, 101, 102, 103,  96,  97, 
- 98,  99, 100, 101, 102, 103,  97,  98,  99, 100, 101, 
-102, 103, 104,  97,  98,  99, 100, 101, 102, 103, 104, 
- 98,  99, 100, 101, 102, 103, 104, 105,  98,  99, 100, 
-101, 102, 103, 104, 105,  99, 100, 101, 102, 103, 104, 
-105, 100, 101, 102, 103, 104, 105, 106, 100, 101, 102, 
-103, 104, 105, 106, 101, 102, 103, 104, 105, 106, 107, 
-102, 103, 104, 105, 106, 107, 102, 103, 104, 105, 106, 
-107, 103, 104, 105, 106, 107, 108, 104, 105, 106, 107, 
-108, 105, 106, 107, 108, 109, 106, 107, 108, 109, 107, 
-108, 109, 110, 108, 109, 110, 108, 109, 110, 109, 110, 
-109, 110, 110, 111, 110
-  },
-  // --------- A -----------
-  {
-  1,   1,   2,   3,   3,   4,   4,   4,   5,   5,   5, 
-  5,   6,   6,   6,   6,   7,   7,   7,   7,   8,   8, 
-  8,   8,   8,   9,   9,   9,   9,   9,  10,  10,  10, 
- 10,  10,  10,  11,  11,  11,  11,  11,  12,  12,  12, 
- 12,  12,  12,  13,  13,  13,  13,  13,  14,  14,  14, 
- 14,  14,  14,  15,  15,  15,  15,  15,  16,  16,  16, 
- 16,  16,  16,  17,  17,  17,  17,  17,  17,  18,  18, 
- 18,  18,  18,  18,  18,  19,  19,  19,  19,  19,  19, 
- 19,  20,  20,  20,  20,  20,  20,  20,  21,  21,  21, 
- 21,  21,  21,  21,  21,  22,  22,  22,  22,  22,  22, 
- 22,  22,  22,  23,  23,  23,  23,  23,  23,  23,  23, 
- 24,  24,  24,  24,  24,  24,  24,  24,  24,  25,  25, 
- 25,  25,  25,  25,  25,  25,  26,  26,  26,  26,  26, 
- 26,  26,  26,  26,  27,  27,  27,  27,  27,  27,  27, 
- 27,  28,  28,  28,  28,  28,  28,  28,  28,  28,  29, 
- 29,  29,  29,  29,  29,  29,  29,  29,  30,  30,  30, 
- 30,  30,  30,  30,  30,  30,  31,  31,  31,  31,  31, 
- 31,  31,  31,  31,  32,  32,  32,  32,  32,  32,  32, 
- 32,  32,  32,  33,  33,  33,  33,  33,  33,  33,  33, 
- 33,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34, 
- 35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  36, 
- 36,  36,  36,  36,  36,  36,  36,  36,  36,  37,  37, 
- 37,  37,  37,  37,  37,  37,  37,  37,  38,  38,  38, 
- 38,  38,  38,  38,  38,  38,  38,  39,  39,  39,  39, 
- 39,  39,  39,  39,  39,  39,  40,  40,  40,  40,  40, 
- 40,  40,  40,  40,  40,  41,  41,  41,  41,  41,  41, 
- 41,  41,  41,  41,  42,  42,  42,  42,  42,  42,  42, 
- 42,  42,  42,  42,  43,  43,  43,  43,  43,  43,  43, 
- 43,  43,  43,  44,  44,  44,  44,  44,  44,  44,  44, 
- 44,  44,  44,  45,  45,  45,  45,  45,  45,  45,  45, 
- 45,  45,  45,  45,  46,  46,  46,  46,  46,  46,  46, 
- 46,  46,  46,  46,  46,  47,  47,  47,  47,  47,  47, 
- 47,  47,  47,  47,  47,  48,  48,  48,  48,  48,  48, 
- 48,  48,  48,  48,  48,  48,  49,  49,  49,  49,  49, 
- 49,  49,  49,  49,  49,  49,  49,  50,  50,  50,  50, 
- 50,  50,  50,  50,  50,  50,  50,  50,  51,  51,  51, 
- 51,  51,  51,  51,  51,  51,  51,  51,  51,  52,  52, 
- 52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  53, 
- 53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53, 
- 54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54, 
- 54,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55, 
- 55,  55,  56,  56,  56,  56,  56,  56,  56,  56,  56, 
- 56,  56,  56,  57,  57,  57,  57,  57,  57,  57,  57, 
- 57,  57,  57,  57,  58,  58,  58,  58,  58,  58,  58, 
- 58,  58,  58,  58,  58,  59,  59,  59,  59,  59,  59, 
- 59,  59,  59,  59,  59,  59,  60,  60,  60,  60,  60, 
- 60,  60,  60,  60,  60,  60,  60,  61,  61,  61,  61, 
- 61,  61,  61,  61,  61,  61,  61,  61,  62,  62,  62, 
- 62,  62,  62,  62,  62,  62,  62,  62,  63,  63,  63, 
- 63,  63,  63,  63,  63,  63,  63,  63,  64,  64,  64, 
- 64,  64,  64,  64,  64,  64,  64,  65,  65,  65,  65, 
- 65,  65,  65,  65,  65,  65,  65,  66,  66,  66,  66, 
- 66,  66,  66,  66,  66,  66,  67,  67,  67,  67,  67, 
- 67,  67,  67,  67,  67,  67,  68,  68,  68,  68,  68, 
- 68,  68,  68,  68,  68,  69,  69,  69,  69,  69,  69, 
- 69,  69,  69,  69,  69,  70,  70,  70,  70,  70,  70, 
- 70,  70,  70,  70,  71,  71,  71,  71,  71,  71,  71, 
- 71,  71,  71,  71,  72,  72,  72,  72,  72,  72,  72, 
- 72,  72,  72,  72,  73,  73,  73,  73,  73,  73,  73, 
- 73,  73,  73,  73,  74,  74,  74,  74,  74,  74,  74, 
- 74,  74,  74,  74,  75,  75,  75,  75,  75,  75,  75, 
- 75,  75,  75,  75,  76,  76,  76,  76,  76,  76,  76, 
- 76,  76,  76,  76,  77,  77,  77,  77,  77,  77,  77, 
- 77,  77,  77,  77,  77,  78,  78,  78,  78,  78,  78, 
- 78,  78,  78,  78,  78,  78,  79,  79,  79,  79,  79, 
- 79,  79,  79,  79,  79,  79,  79,  80,  80,  80,  80, 
- 80,  80,  80,  80,  80,  80,  80,  80,  81,  81,  81, 
- 81,  81,  81,  81,  81,  81,  81,  81,  81,  82,  82, 
- 82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  83, 
- 83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83, 
- 84,  84,  84,  84,  84,  84,  84,  84,  84,  84,  84, 
- 84,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85, 
- 85,  85,  86,  86,  86,  86,  86,  86,  86,  86,  86, 
- 86,  86,  86,  87,  87,  87,  87,  87,  87,  87,  87, 
- 87,  87,  87,  87,  88,  88,  88,  88,  88,  88,  88, 
- 88,  88,  88,  88,  88,  89,  89,  89,  89,  89,  89, 
- 89,  89,  89,  89,  89,  89,  89,  90,  90,  90,  90, 
- 90,  90,  90,  90,  90,  90,  90,  90,  91,  91,  91, 
- 91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  92, 
- 92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92, 
- 92,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93, 
- 93,  93,  94,  94,  94,  94,  94,  94,  94,  94,  94, 
- 94,  94,  94,  94,  95,  95,  95,  95,  95,  95,  95, 
- 95,  95,  95,  95,  95,  96,  96,  96,  96,  96,  96, 
- 96,  96,  96,  96,  96,  96,  96,  97,  97,  97,  97, 
- 97,  97,  97,  97,  97,  97,  97,  97,  97,  98,  98, 
- 98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98, 
- 99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99, 
- 99,  99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 
-101, 101, 101, 101, 101, 101, 101, 101, 102, 102, 102, 
-102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 
-103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 
-103, 103, 103, 104, 104, 104, 104, 104, 104, 104, 104, 
-104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 
-105, 105, 105, 105, 105, 105, 105, 105, 106, 106, 106, 
-106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 
-107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 
-107, 107, 108, 108, 108, 108, 108, 108, 108, 108, 108, 
-108, 108, 108, 108, 108, 109, 109, 109, 109, 109, 109, 
-109, 109, 109, 109, 109, 109, 109, 110, 110, 110, 110, 
-110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 
-111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 
-111, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 
-112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 
-113, 113, 113, 113, 113, 113, 113, 114, 114, 114, 114, 
-114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 115, 
-115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-115, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
-116, 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 
-117, 117, 117, 117, 117, 117, 117, 118, 118, 118, 118, 
-118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 119, 
-119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-119, 119, 120, 120, 120, 120, 120, 120, 120, 120, 120, 
-120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 
-121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 
-122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 
-122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-123, 123, 123, 123, 124, 124, 124, 124, 124, 124, 124, 
-124, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 
-125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 
-126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
-127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 
-127, 127, 127, 128, 128, 128, 128, 128, 128, 128, 128, 
-128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 
-129, 129, 129, 129, 129, 129, 129, 129, 129, 130, 130, 
-130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 
-130, 130, 131, 131, 131, 131, 131, 131, 131, 131, 131, 
-131, 131, 131, 131, 131, 132, 132, 132, 132, 132, 132, 
-132, 132, 132, 132, 132, 132, 132, 132, 132, 133, 133, 
-133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 
-133, 133, 134, 134, 134, 134, 134, 134, 134, 134, 134, 
-134, 134, 134, 134, 134, 134, 135, 135, 135, 135, 135, 
-135, 135, 135, 135, 135, 135, 135, 135, 135, 136, 136, 
-136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 
-136, 136, 137, 137, 137, 137, 137, 137, 137, 137, 137, 
-137, 137, 137, 137, 137, 137, 138, 138, 138, 138, 138, 
-138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 139, 
-139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 
-139, 139, 139, 140, 140, 140, 140, 140, 140, 140, 140, 
-140, 140, 140, 140, 140, 140, 140, 141, 141, 141, 141, 
-141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 
-142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 
-142, 142, 142, 142, 142, 143, 143, 143, 143, 143, 143, 
-143, 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, 
-144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 
-144, 144, 144, 145, 145, 145, 145, 145, 145, 145, 145, 
-145, 145, 145, 145, 145, 145, 145, 146, 146, 146, 146, 
-146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 
-146, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 
-147, 147, 147, 147, 147, 147, 148, 148, 148, 148, 148, 
-148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 
-149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 
-149, 149, 149, 149, 149, 150, 150, 150, 150, 150, 150, 
-150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 
-151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 
-151, 151, 151, 151, 151, 151, 152, 152, 152, 152, 152, 
-152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 
-153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 
-153, 153, 153, 153, 153, 154, 154, 154, 154, 154, 154, 
-154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 155, 
-155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 
-155, 155, 155, 155, 156, 156, 156, 156, 156, 156, 156, 
-156, 156, 156, 156, 156, 156, 156, 156, 156, 157, 157, 
-157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 
-157, 157, 157, 158, 158, 158, 158, 158, 158, 158, 158, 
-158, 158, 158, 158, 158, 158, 158, 158, 159, 159, 159, 
-159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 
-159, 159, 160, 160, 160, 160, 160, 160, 160, 160, 160, 
-160, 160, 160, 160, 160, 160, 160, 161, 161, 161, 161, 
-161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 
-161, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 
-162, 162, 162, 162, 162, 162, 163, 163, 163, 163, 163, 
-163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 
-164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 
-164, 164, 164, 164, 165, 165, 165, 165, 165, 165, 165, 
-165, 165, 165, 165, 165, 165, 165, 165, 165, 166, 166, 
-166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 
-166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 
-167, 167, 167, 167, 167, 167, 168, 168, 168, 168, 168, 
-168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 
-169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-169, 169, 169, 170, 170, 170, 170, 170, 170, 170, 170, 
-170, 170, 170, 170, 170, 170, 171, 171, 171, 171, 171, 
-171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 172, 
-172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 
-172, 172, 173, 173, 173, 173, 173, 173, 173, 173, 173, 
-173, 173, 173, 173, 173, 174, 174, 174, 174, 174, 174, 
-174, 174, 174, 174, 174, 174, 174, 175, 175, 175, 175, 
-175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 176, 
-176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 
-176, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 
-177, 177, 177, 177, 178, 178, 178, 178, 178, 178, 178, 
-178, 178, 178, 178, 178, 178, 179, 179, 179, 179, 179, 
-179, 179, 179, 179, 179, 179, 179, 179, 180, 180, 180, 
-180, 180, 180, 180, 180, 180, 180, 180, 180, 181, 181, 
-181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 
-182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 
-182, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 
-183, 183, 184, 184, 184, 184, 184, 184, 184, 184, 184, 
-184, 184, 184, 185, 185, 185, 185, 185, 185, 185, 185, 
-185, 185, 185, 185, 186, 186, 186, 186, 186, 186, 186, 
-186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 
-187, 187, 187, 187, 187, 188, 188, 188, 188, 188, 188, 
-188, 188, 188, 188, 188, 189, 189, 189, 189, 189, 189, 
-189, 189, 189, 189, 190, 190, 190, 190, 190, 190, 190, 
-190, 190, 190, 190, 191, 191, 191, 191, 191, 191, 191, 
-191, 191, 191, 192, 192, 192, 192, 192, 192, 192, 192, 
-192, 192, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-193, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 
-195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 196, 
-196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 197, 
-197, 197, 197, 197, 197, 197, 197, 197, 197, 198, 198, 
-198, 198, 198, 198, 198, 198, 198, 198, 199, 199, 199, 
-199, 199, 199, 199, 199, 199, 199, 200, 200, 200, 200, 
-200, 200, 200, 200, 200, 200, 201, 201, 201, 201, 201, 
-201, 201, 201, 201, 201, 202, 202, 202, 202, 202, 202, 
-202, 202, 202, 202, 203, 203, 203, 203, 203, 203, 203, 
-203, 203, 203, 204, 204, 204, 204, 204, 204, 204, 204, 
-204, 204, 205, 205, 205, 205, 205, 205, 205, 205, 205, 
-205, 206, 206, 206, 206, 206, 206, 206, 206, 206, 207, 
-207, 207, 207, 207, 207, 207, 207, 207, 207, 208, 208, 
-208, 208, 208, 208, 208, 208, 208, 208, 209, 209, 209, 
-209, 209, 209, 209, 209, 209, 210, 210, 210, 210, 210, 
-210, 210, 210, 210, 210, 211, 211, 211, 211, 211, 211, 
-211, 211, 211, 212, 212, 212, 212, 212, 212, 212, 212, 
-212, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 
-214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 215, 
-215, 215, 215, 215, 215, 215, 215, 215, 216, 216, 216, 
-216, 216, 216, 216, 216, 216, 217, 217, 217, 217, 217, 
-217, 217, 217, 218, 218, 218, 218, 218, 218, 218, 218, 
-218, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 
-220, 220, 220, 220, 220, 220, 221, 221, 221, 221, 221, 
-221, 221, 221, 222, 222, 222, 222, 222, 222, 222, 222, 
-223, 223, 223, 223, 223, 223, 223, 223, 224, 224, 224, 
-224, 224, 224, 224, 225, 225, 225, 225, 225, 225, 225, 
-225, 226, 226, 226, 226, 226, 226, 226, 226, 227, 227, 
-227, 227, 227, 227, 227, 227, 228, 228, 228, 228, 228, 
-228, 228, 228, 228, 229, 229, 229, 229, 229, 229, 229, 
-229, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231, 
-231, 231, 231, 231, 231, 231, 231, 232, 232, 232, 232, 
-232, 232, 232, 232, 232, 233, 233, 233, 233, 233, 233, 
-233, 233, 233, 234, 234, 234, 234, 234, 234, 234, 234, 
-234, 235, 235, 235, 235, 235, 235, 235, 235, 235, 236, 
-236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 
-237, 237, 237, 237, 237, 237, 238, 238, 238, 238, 238, 
-238, 238, 238, 238, 239, 239, 239, 239, 239, 239, 239, 
-239, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241, 
-241, 241, 241, 241, 241, 241, 241, 242, 242, 242, 242, 
-242, 242, 242, 242, 242, 243, 243, 243, 243, 243, 243, 
-243, 243, 244, 244, 244, 244, 244, 244, 244, 244, 245, 
-245, 245, 245, 245, 245, 245, 245, 246, 246, 246, 246, 
-246, 246, 246, 246, 247, 247, 247, 247, 247, 247, 247, 
-247, 248, 248, 248, 248, 248, 248, 248, 249, 249, 249, 
-249, 249, 249, 249, 249, 250, 250, 250, 250, 250, 250, 
-250, 251, 251, 251, 251, 251, 251, 251, 251, 252, 252, 
-252, 252, 252, 252, 252, 252, 253, 253, 253, 253, 253, 
-253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 
-255, 255, 255, 255, 255, 255, 255, 255, 256, 256, 256, 
-256, 256, 256, 256, 256, 257, 257, 257, 257, 257, 257, 
-257, 258, 258, 258, 258, 258, 258, 258, 259, 259, 259, 
-259, 259, 259, 259, 260, 260, 260, 260, 260, 260, 260, 
-261, 261, 261, 261, 261, 261, 262, 262, 262, 262, 262, 
-262, 263, 263, 263, 263, 263, 263, 264, 264, 264, 264, 
-264, 265, 265, 265, 265, 265, 266, 266, 266, 266, 267, 
-267, 267, 267, 268, 268, 268, 269, 269, 269, 270, 270, 
-271, 271, 272, 272, 273
-  }
-};
-
-
-
-
-//+----------------------+
-//| Table of Mass Excess |
-//+----------------------+
-// unit: keV
-G4double G4NucleiPropertiesTable::MassExcess[G4NucleiPropertiesTable::nEntries] = {
-   8071.323,   7288.969,  13135.720,  14949.794,  14931.204,  25927.784,   2424.911,  25320.173,  36833.979,  11386.234,  11678.880,
-  37996.000,  41863.763,  17594.123,  14086.312,  18374.465,  26110.264,  14907.673,  15769.489,  27867.864,  31597.983,  20946.195,
-   4941.662,  22921.002,  35094.056,  40818.362,  24953.903,  11347.584,  12415.701,  28913.650,  48810.011,  33050.226,  12606.577,
-  12050.761,  15698.568,  39699.000,  40795.860,  20173.970,   8667.984,  10650.531,  24960.520,  50096.000,  25076.402,  13368.901,
-      0.0  ,  17338.083,  32047.838,  33658.445,  16562.209,   3125.011,   5345.456,  23110.735,  39882.396,  23663.730,   3019.892,
-   2863.417,   8006.456,  33608.000,  28966.936,   9873.143,    101.438,   2855.388,  16777.001,  37081.686,  13694.117,   5683.432,
-  -4736.998,  10680.257,  23992.401,  43716.310,  21036.589,   7870.819,   -809.002,   1951.701,  16485.173,  52322.000,  24924.036,
-  13117.136,   -782.064,    873.431,   5306.782,  25318.000,  59364.000,  32833.383,  15860.449,   3333.565,  -1487.405,   1751.059,
-  12928.622,  37560.063,  21766.492,   3796.909,    -17.396,  -7041.930,   6844.859,  17570.530,  45960.000,  25231.909,   8061.736,
-    -47.580,  -5731.720,  -2184.261,  10911.681,  26119.000,  52583.000,  32080.890,   9284.346,   2793.783,  -8024.344,  -5182.104,
-   -396.766,  18183.000,  32164.000,  37735.000,  14616.373,   3329.518,  -5153.641,  -9529.485,  -5472.666,   6767.210,  23772.000,
-  47040.000,  18974.457,   7544.514,  -5947.519,  -8417.601, -13933.381,    -55.041,  10754.759,  31997.000,  27144.000,  11266.384,
-  -2058.696,  -9357.459, -13192.726,  -8915.742,   3825.310,  18872.000,  35164.000,  18288.165,    429.882,  -6902.465, -16214.476,
- -12210.339,  -7144.618,  10973.000,  25970.000,  25050.028,   7093.512,  -5580.857, -14586.503, -17196.829, -12384.431,   -752.978,
-  17507.000,  33226.000,  11278.595,  -1033.576, -15018.752, -16850.552, -21492.793,  -7161.018,   4073.107,  26557.000,  40296.000,
-  18020.589,   2618.710, -10661.187, -18215.504, -21895.025, -16951.907,  -3158.878,  13143.000,  22236.621,   8594.416,  -8882.233,
- -15872.372, -24432.881, -20200.556, -14062.806,   4443.000,  20083.000,  30842.000,  12663.760,  -3215.089, -14954.181, -22948.958,
- -24440.991, -19044.932,  -7064.436,  11296.000,  37176.000,  18303.661,   -795.599, -11062.068, -24080.859, -24305.318, -26015.981,
- -13330.694,  -2179.081,  20418.000,  25509.891,   5204.233,  -8504.923, -20492.381, -26337.727, -26586.235, -21003.512,  -9381.336,
-   6763.000,  32509.000,   8450.922,  -2862.243, -19956.562, -24557.549, -29931.850, -24440.566, -18378.264,  -1481.000,  13153.000,
-  41153.000,  16292.000,    -58.079, -14359.762, -24857.613, -28846.371, -29013.512, -23048.208, -11167.107,   4439.000,  20912.000,
-   5916.384, -12400.639, -20250.840, -30663.958, -29521.886, -30230.439, -17425.078,  -6439.199,  13898.000,  29100.000,   9603.702,
-  -6524.192, -18994.708, -26896.218, -31761.519, -30948.034, -24799.240, -13160.607,   2841.000,  15742.000,  -3744.605, -14466.100,
- -26861.076, -29797.976, -34714.763, -28801.691, -22059.044,  -4937.000,   9101.000,  20400.000,   2142.000, -12649.687, -23161.339,
- -29800.652, -33241.836, -33806.836, -27276.256, -14168.014,   1232.000,   5403.000,  -8336.870, -22849.544, -27557.728, -35039.890,
- -33535.016, -34846.110, -20526.386,  -8850.210,  10330.000,  11830.000,  -4843.768, -18601.932, -27339.148, -33067.261, -35558.872,
- -35137.487, -28642.211, -15713.000,   -242.000,  14997.000,     84.000, -17241.951, -24987.328, -34422.065, -35021.319, -38546.765,
- -32120.925, -25120.878,  -8169.000,   5990.000,   3083.000, -12482.018, -24029.389, -31977.531, -36593.042, -38408.442, -36187.623,
- -29320.314, -18024.000,  -2136.000,   9203.000, -10880.000, -19991.058, -32262.039, -35810.214, -41469.087, -37815.811, -37548.299,
- -23846.000, -13535.000,   6399.000,  14103.000,  -4825.000, -18909.325, -29719.331, -36608.028, -40812.530, -41069.338, -39006.912,
- -31873.591, -19412.000,  -5114.000,  13563.000,  22197.000,   -401.000, -14792.000, -29720.739, -35418.933, -43134.911, -41758.637,
- -44125.338, -37073.929, -29470.929, -12370.000,    755.000,   7098.000, -11225.000, -25908.348, -35696.887, -42339.694, -44331.631,
- -44931.732, -42003.929, -34552.357, -22263.000,  -6623.000,  12100.000,  -4797.000, -23222.000, -32124.479, -44214.742, -44492.812,
- -48487.000, -44474.659, -42815.313, -28997.000, -18108.000,   1639.000,  20502.000,   -102.000, -16599.000, -30320.047, -41290.047,
- -46552.277, -48558.040, -47956.179, -45325.434, -37610.541, -24582.000,  -9576.000,   7200.000, -13097.000, -25352.625, -39571.456,
- -44537.508, -51425.849, -49217.535, -50254.460, -42621.470, -34471.499, -17195.000,  -3791.000,  12603.000,  -6297.000, -22002.000,
- -35886.511, -43218.800, -49726.852, -52197.493, -51444.760, -48236.956, -40217.307, -27274.000, -11439.000,  -1705.000, -16199.000,
- -32509.136, -40380.259, -49464.024, -51437.409, -55412.797, -50701.137, -48329.137, -33916.000, -22654.000,  -2627.000,   5800.000,
- -11998.000, -27898.000, -37968.000, -46824.604, -51844.604, -55280.638, -54683.625, -50941.273, -42639.145, -29379.000, -13460.000,
-  -5598.000, -23585.000, -34465.273, -45764.293, -49886.730, -56928.321, -55551.269, -56248.410, -48005.330, -39206.103, -21694.000,
-  -6567.000,   -570.000, -18118.000, -30339.000, -41805.444, -49147.298, -55103.298, -57706.384, -57475.007, -54023.711, -45329.911,
- -31624.000, -14923.000, -13237.000, -25467.000, -39132.057, -46239.355, -55288.596, -56905.551, -60601.003, -56035.003, -53899.645,
- -38601.000, -25728.000,  -4741.000,  -7120.000, -21387.000, -34558.000, -44376.367, -52392.990, -57484.854, -60175.708, -59339.666,
- -56075.475, -47305.268, -32686.000, -15901.000, -15770.000, -31568.000, -40380.259, -51930.783, -55902.253, -62148.844, -59841.428,
- -60223.014, -51659.966, -42293.114, -23986.000,  -8374.000, -11140.000, -26119.000, -37911.800, -47850.840, -55473.100, -60658.421,
- -62223.609, -61151.125, -56351.547, -47257.409, -34121.000, -17000.000, -22691.000, -33068.032, -46826.196, -52914.442, -61406.923,
- -61644.218, -64468.100, -58341.209, -54183.106, -39998.000, -27768.000,  -6399.000, -16750.000, -30357.000, -42764.883, -51735.169,
- -58917.489, -62895.042, -64216.775, -61979.570, -56342.425, -47348.000, -33729.000, -18052.000, -25020.000, -41172.029, -48465.626,
- -58897.896, -61428.097, -66742.688, -62794.517, -61167.353, -51996.353, -42243.000, -24964.000, -21657.000, -35527.000, -46751.677,
- -55779.304, -61837.017, -65509.217, -65576.162, -62209.293, -56689.293, -46910.000, -33823.000, -33347.000, -43100.221, -55079.232,
- -59789.309, -67095.900, -65420.802, -65999.528, -58834.729, -54424.729, -39521.000, -27600.000, -40892.580, -51288.052, -59164.222,
- -65122.587, -67259.719, -65907.775, -62652.909, -56410.559, -47056.000, -32919.000, -36496.000, -50319.298, -56052.259, -66028.726,
- -66254.326, -68896.301, -63721.301, -61621.301, -51821.000, -41722.000, -33701.000, -46574.693, -55321.420, -63742.462, -67300.158,
- -67877.158, -66876.681, -62653.753, -56643.753, -46491.000, -32798.000, -44237.000, -51828.318, -63486.027, -65541.887, -70004.030,
- -67082.930, -66976.955, -58876.955, -54148.000, -38892.000, -39402.000, -51045.864, -60377.721, -65739.917, -68414.928, -69320.923,
- -67093.638, -63080.621, -56297.481, -46409.000, -32304.000, -46752.000, -59485.198, -62960.334, -69559.425, -68904.705, -70560.320,
- -64340.320, -61940.000, -51590.000, -40976.000, -44963.000, -55889.632, -62764.225, -67321.674, -70136.821, -69904.897, -67892.187,
- -63092.000, -56592.000, -46100.000, -32304.000, -40604.000, -54678.690, -60063.000, -68128.416, -68586.498, -72585.557, -68229.459,
- -67894.432, -59152.770, -54112.770, -38117.000, -50226.000, -59159.000, -65409.994, -69703.842, -71297.136, -70956.276, -68216.276,
- -63532.642, -56885.291, -46234.000, -31699.000, -48522.000, -55703.000, -65709.197, -68054.011, -73422.011, -70859.599, -72212.607,
- -65305.961, -62169.554, -51725.504, -40697.000, -43808.000, -54306.000, -62468.419, -68464.198, -71855.908, -73032.457, -72168.818,
- -69138.818, -64241.597, -57222.414, -46649.000, -41610.000, -50310.000, -62042.888, -66202.888, -73212.888, -72289.575, -75251.563,
- -70288.688, -68978.700, -60480.547, -54390.000, -36487.000, -48484.000, -58604.138, -65874.138, -71214.138, -73916.177, -74599.049,
- -73233.933, -70171.407, -64825.826, -57974.770, -46929.000, -33720.000, -43957.000, -57222.063, -63662.063, -71862.063, -72816.201,
- -77025.673, -73451.896, -74159.700, -66935.766, -63174.508, -52629.000, -41656.000, -53398.000, -62487.989, -69487.989, -73635.989,
- -75916.934, -76067.980, -74442.202, -70796.589, -65477.427, -58357.427, -47357.000, -35499.000, -51777.345, -59067.745, -69447.745,
- -72117.967, -77759.404, -75888.849, -77893.342, -72172.776, -70304.883, -61165.000, -55377.000, -46128.000, -57982.741, -66302.741,
- -72532.741, -76389.081, -77974.363, -77693.650, -75456.438, -71526.530, -66016.164, -58856.164, -47460.000, -42066.000, -52946.000,
- -65623.439, -70323.439, -77593.439, -77495.943, -80588.563, -76189.034, -76008.727, -68192.736, -64192.736, -52974.000, -49490.000,
- -61004.000, -69880.088, -75340.088, -79009.106, -79981.833, -79072.696, -76796.985, -72328.103, -66460.103, -58960.103, -47748.000,
- -44395.000, -58395.000, -66080.000, -75949.796, -77776.304, -82431.033, -79750.149, -80644.288, -74158.306, -71492.000, -61879.000,
- -55806.000, -53384.000, -63519.000, -72428.605, -78610.605, -81480.605, -82167.687, -81102.665, -77847.665, -73154.665, -67154.665,
- -59066.000, -47562.000, -50049.000, -59401.000, -70540.945, -75639.945, -83265.945, -82747.319, -84521.563, -79281.563, -77805.027,
- -69827.027, -64557.027, -53207.000, -56281.000, -66582.484, -73857.484, -80709.984, -84595.045, -84878.358, -83016.752, -79347.835,
- -74182.835, -67694.611, -59122.000, -47339.000, -51642.000, -63878.140, -70732.140, -79692.140, -82606.221, -87919.663, -84297.063,
- -83623.763, -76424.000, -72700.555, -62568.000, -55498.000, -47292.000, -59597.000, -68569.815, -76724.815, -81710.698, -86207.050,
- -87702.101, -84869.416, -80578.408, -75003.363, -67493.363, -59513.000, -47152.000, -56430.000, -64613.083, -74963.083, -79354.948,
- -85941.863, -86487.861, -88767.938, -82656.938, -80167.938, -71207.275, -65409.000, -53216.000, -50888.000, -61510.918, -71312.918,
- -77747.918, -83638.978, -86346.300, -87891.133, -86637.743, -82203.631, -75983.631, -68578.969, -59103.000, -47059.000, -47199.000,
- -56583.354, -68788.258, -74775.258, -82875.106, -84815.467, -88454.559, -86448.952, -86805.466, -78935.111, -74408.000, -63360.000,
- -55498.000, -53002.000, -64026.001, -72626.001, -80087.598, -84224.201, -87117.379, -87208.744, -86803.852, -83602.997, -77265.997,
- -69173.000, -59699.000, -47804.000, -61141.000, -68551.124, -78841.774, -82349.639, -87266.289, -86364.891, -88410.338, -84154.593,
- -82568.017, -72938.000, -66350.000, -53300.000, -56039.000, -65838.676, -75117.330, -81204.179, -85657.624, -86782.460, -87708.077,
- -86017.446, -83449.993, -78339.993, -70151.000, -60100.000, -53030.000, -61214.086, -72954.158, -78340.695, -85440.646, -85604.215,
- -88791.015, -85817.781, -86072.192, -79625.760, -76175.760, -64571.000, -56104.000, -47916.000, -58364.738, -68791.979, -76260.455,
- -82948.861, -85606.946, -87540.831, -87220.574, -86112.372, -82589.372, -77799.372, -70794.000, -60603.000, -54302.779, -66628.659,
- -72452.035, -81276.224, -83526.412, -88112.011, -86428.013, -88224.474, -83167.096, -81300.084, -72880.084, -67460.000, -53803.000,
- -50840.361, -62116.633, -70202.280, -77769.413, -82327.417, -85966.080, -87323.307, -87616.958, -85574.384, -82187.793, -76757.793,
- -69853.000, -60910.000, -46696.000, -60219.468, -67294.468, -76604.468, -79939.468, -86184.468, -86016.384, -89218.795, -85588.795,
- -85227.407, -78180.851, -74305.049, -64134.253, -56864.000, -43597.645, -55407.645, -64912.645, -73457.645, -78942.645, -83511.645,
- -86336.086, -87949.584, -87408.099, -85428.099, -81224.275, -75747.738, -68409.000, -59560.000, -37996.000, -53077.643, -61892.643,
- -71742.643, -76347.643, -83557.643, -84567.591, -89097.851, -86775.318, -87925.833, -81971.463, -79384.463, -70134.463, -64748.000,
- -47553.000, -58740.000, -68374.386, -75319.386, -80849.386, -84599.386, -87258.919, -88022.274, -87479.193, -84791.601, -80649.714,
- -74599.714, -66946.000, -55778.000, -44404.000, -54539.000, -66341.000, -72228.533, -80333.533, -82488.533, -88091.239, -86950.001,
- -89390.890, -85112.244, -83975.950, -76067.264, -71552.264, -59348.000, -51148.000, -62364.000, -70854.991, -77339.991, -82289.991,
- -85929.991, -87846.909, -88413.628, -87068.376, -84330.172, -79481.172, -73224.351, -63780.695, -46370.000, -59699.000, -66891.000,
- -76257.412, -79777.412, -86324.412, -86363.812, -89904.912, -86939.647, -87133.792, -80610.422, -77425.330, -66357.000, -58030.000,
- -55089.000, -64916.000, -72940.884, -79100.884, -83920.884, -86861.300, -88372.264, -88405.269, -86988.269, -83562.269, -78555.949,
- -70654.000, -60513.000, -51903.000, -60538.000, -71185.000, -75935.404, -83655.404, -85016.729, -89521.729, -87603.546, -89252.572,
- -84095.561, -82003.746, -72507.000, -65682.577, -52824.000, -58097.000, -67245.000, -74867.000, -80852.209, -85012.209, -87603.705,
- -88719.654, -88505.359, -86485.406, -82635.728, -76255.728, -67573.840, -57574.091, -53393.000, -65456.000, -71362.000, -80139.971,
- -82949.971, -88349.971, -87457.530, -90349.708, -86471.708, -85834.656, -77535.000, -72277.250, -60348.000, -51721.000, -61004.000,
- -69815.000, -76792.000, -82288.000, -86029.092, -88217.425, -89254.225, -88388.821, -85943.905, -80844.000, -73475.687, -64947.000,
- -54369.000, -58833.000, -65913.000, -75867.000, -79537.000, -86337.113, -86625.080, -90581.047, -87995.116, -88658.831, -81603.855,
- -77256.594, -67096.000, -59927.331, -46266.000, -53999.000, -63966.000, -72154.000, -78786.000, -83693.469, -87033.469, -89049.931,
- -89366.381, -88330.421, -84413.891, -78314.000, -71124.917, -62053.479, -51664.830, -59727.000, -70794.000, -75594.000, -83494.153,
- -84944.875, -90021.317, -88569.457, -90558.142, -84676.634, -81919.000, -72796.000, -66932.000, -54566.000, -45698.000, -57492.000,
- -66779.000, -74403.374, -80403.374, -84987.374, -88090.859, -89536.747, -90032.633, -87002.633, -82363.966, -76459.000, -68430.000,
- -59672.000, -48708.000, -65056.000, -71061.000, -79961.027, -82568.027, -88719.729, -88249.733, -91524.722, -86817.803, -85305.972,
- -77560.823, -72901.000, -62490.055, -54325.000, -60743.000, -69536.000, -76532.000, -82265.638, -86425.638, -88943.010, -90397.972,
- -88641.338, -85106.700, -80436.645, -73993.816, -66471.883, -56952.000, -46565.000, -58656.000, -65736.000, -75465.986, -79565.986,
- -86708.904, -87230.094, -91653.102, -87996.470, -87723.260, -80690.442, -77713.676, -68413.676, -62000.000, -49770.000, -63938.000,
- -72023.000, -78556.562, -83906.562, -87703.562, -90067.185, -89473.283, -87180.271, -83665.999, -78660.656, -72311.049, -64224.707,
- -54967.000, -44004.000, -59821.000, -70766.000, -75647.912, -83972.912, -85733.293, -91103.293, -88422.693, -89404.882, -83789.882,
- -81829.882, -73887.752, -68887.752, -57687.000, -49705.000, -57678.000, -66900.000, -74658.233, -81058.233, -85838.233, -89202.770,
- -89592.901, -88557.294, -86287.943, -82542.934, -77142.934, -70340.913, -62401.000, -52471.000, -41579.000, -65391.000, -71427.000,
- -80574.000, -83576.327, -89944.918, -88328.519, -90311.064, -86077.064, -85186.607, -78131.893, -74277.000, -64543.000, -57743.000,
- -45038.000, -61236.000, -69955.000, -77310.567, -83425.567, -87819.470, -89222.491, -89169.158, -87934.936, -85258.936, -81049.124,
- -75591.000, -68707.000, -60072.000, -50338.000, -66574.000, -76710.101, -80876.101, -88236.101, -87618.618, -90523.071, -87363.484,
- -87657.508, -81742.563, -79094.600, -70300.000, -64720.000, -53132.000, -64702.000, -73357.777, -80479.777, -85897.777, -88261.089,
- -89027.789, -88842.019, -87189.468, -84090.728, -79530.728, -73895.000, -66565.000, -57911.000, -61013.000, -72326.776, -77812.776,
- -86019.776, -86397.776, -90070.293, -87914.962, -89172.962, -84348.676, -82675.533, -75106.000, -70700.000, -60258.000, -53030.000,
- -58796.000, -68525.512, -76993.512, -83507.512, -86708.512, -88289.512, -88987.080, -88324.638, -86239.937, -82789.937, -78096.000,
- -71958.000, -64431.000, -55424.000, -67290.542, -74360.542, -83336.142, -84610.075, -88993.635, -87741.827, -89860.807, -85932.247,
- -85409.725, -78759.725, -75572.000, -66322.000, -60184.000, -48195.000, -63099.000, -72975.131, -80630.131, -84626.131, -87005.631,
- -88503.573, -88697.350, -87501.395, -85069.842, -81349.842, -76300.000, -69992.000, -62173.000, -52946.000, -61497.000, -69997.161,
- -80246.161, -82393.930, -87352.930, -86932.580, -89881.796, -86902.636, -87271.214, -81673.000, -79462.000, -71371.000, -66341.000,
- -55470.000, -47851.000, -68215.710, -77389.307, -82021.307, -85211.307, -87444.761, -88415.608, -88063.214, -86693.390, -83733.390,
- -79713.390, -74463.390, -67903.390, -59802.000, -50403.000, -62485.535, -76620.535, -79723.535, -85209.535, -85702.535, -89279.535,
- -87160.068, -88439.611, -83731.611, -82447.000, -75339.000, -71613.000, -61711.000, -55126.000, -42700.000, -57436.000, -70966.712,
- -78956.712, -82959.712, -85877.712, -87648.300, -88075.660, -87558.217, -85328.217, -82391.000, -78059.000, -72461.000, -65465.000,
- -57073.000, -47599.000, -51549.000, -66635.740, -74005.740, -82399.438, -83949.438, -88124.438, -86895.877, -88954.546, -85241.369,
- -84741.369, -78551.000, -75781.000, -66611.000, -61460.000, -50003.000, -60799.000, -69705.584, -77825.584, -83787.584, -86435.645,
- -87586.595, -87855.940, -86655.940, -84630.357, -80910.357, -76159.000, -70219.000, -63016.000, -54287.000, -56504.000, -64590.000,
- -74423.420, -79498.246, -86424.442, -86344.134, -88892.358, -86022.358, -86495.190, -81368.844, -79157.844, -71307.844, -66788.000,
- -56355.000, -49304.000, -50496.000, -60258.000, -69559.519, -76501.119, -82378.579, -86551.145, -87726.774, -87126.667, -85904.567,
- -83202.567, -79512.567, -73856.000, -67955.543, -60351.000, -51558.000, -54995.000, -65931.000, -72299.139, -80119.139, -82893.139,
- -88267.172, -86529.421, -87573.860, -83136.860, -82037.000, -75037.000, -71222.000, -61991.000, -55918.000, -43901.000, -50571.000,
- -60799.000, -68843.542, -75649.542, -80706.565, -84919.280, -87236.114, -86958.114, -84829.114, -82042.114, -77537.722, -72375.210,
- -65355.000, -57678.000, -48410.000, -57101.000, -64077.000, -72995.897, -77055.897, -83276.031, -84325.762, -88087.615, -84699.615,
- -84477.342, -78430.247, -75459.386, -66989.386, -61529.000, -50729.000, -43044.000, -51800.000, -60705.000, -68328.538, -74478.538,
- -79729.877, -82942.993, -85444.905, -86025.576, -84202.574, -80474.888, -75946.081, -69968.353, -63146.000, -54809.000, -45466.000,
- -47972.000, -55722.000, -65481.242, -70521.242, -77828.012, -80039.086, -84542.631, -83797.314, -85959.517, -81085.853, -78996.944,
- -71352.399, -66852.000, -56952.000, -50052.000, -37390.000, -52098.000, -60650.000, -67691.387, -73944.606, -78190.856, -81616.413,
- -83077.858, -84011.780, -82970.420, -79527.634, -74252.511, -68242.511, -60780.000, -52322.000, -42206.000, -46938.000, -57538.000,
- -63316.084, -71780.481, -74899.869, -80441.308, -80759.963, -83757.479, -81425.820, -81976.369, -75661.412, -71921.000, -62848.000,
- -56756.000, -45047.000, -36710.000, -52471.000, -60185.471, -68070.025, -72993.377, -77101.730, -79636.301, -81441.582, -81278.541,
- -80662.142, -78002.099, -72947.615, -66248.000, -58728.000, -49481.000, -39626.000, -49090.000, -55738.704, -65105.231, -69209.858,
- -75740.025, -76766.257, -80935.509, -79463.724, -81005.724, -77127.958, -76098.070, -67830.797, -62670.797, -52071.000, -44600.000,
- -31210.000, -43771.000, -52289.934, -61485.563, -67235.563, -72180.563, -75470.563, -78156.253, -79052.253, -79276.392, -77555.055,
- -75367.684, -70758.904, -64386.257, -56039.000, -47217.000, -36253.000, -47599.766, -58048.483, -63163.483, -70425.837, -72485.837,
- -77417.837, -76878.251, -79346.590, -76239.256, -76280.245, -70515.356, -67833.356, -58433.000, -51754.000, -39542.000, -30963.000,
- -44041.000, -53598.000, -61134.000, -66798.164, -70988.164, -74385.196, -76075.853, -77146.768, -76451.500, -75137.623, -71499.950,
- -67687.950, -61674.261, -53864.000, -44106.000, -34018.000, -39151.000, -50655.000, -57222.000, -64993.681, -68003.681, -73693.681,
- -73607.132, -77061.132, -74800.546, -75771.944, -71115.684, -69322.027, -62082.000, -57974.000, -46882.000, -39132.000, -25460.000,
- -35397.000, -45923.000, -54437.000, -61441.000, -66855.300, -70956.788, -73399.207, -74586.250, -74662.939, -74198.821, -71633.583,
- -68763.221, -63638.923, -58256.000, -50828.000, -41685.000, -30602.000, -42700.000, -50198.000, -59262.000, -63714.000, -70157.856,
- -71268.076, -74772.647, -72898.338, -74717.096, -70727.096, -70128.564, -63583.214, -60474.024, -51884.000, -46419.000, -33897.000,
- -37623.000, -47087.000, -55349.000, -61805.000, -67352.098, -70688.098, -72569.048, -73377.294, -72892.857, -71323.686, -69153.298,
- -65023.389, -60460.355, -54000.905, -47311.000, -38480.000, -42476.000, -52797.000, -58321.000, -65685.878, -68421.001, -72465.282,
- -71747.955, -73716.308, -70154.308, -70400.400, -64649.151, -62617.538, -54564.000, -50075.000, -39961.000, -33301.000, -39002.000,
- -48400.000, -55899.000, -62755.159, -66977.159, -70201.159, -71828.023, -72080.112, -71258.898, -69164.398, -66062.398, -62219.810,
- -56642.687, -50494.000, -42632.000, -34689.000, -45401.000, -52052.000, -60361.000, -64216.854, -69371.854, -70094.116, -72545.159,
- -70100.736, -70534.324, -65474.000, -64259.103, -56814.703, -53237.567, -43866.000, -37961.000, -26371.000, -40669.000, -49211.000,
- -56570.000, -62224.000, -66737.338, -69471.338, -70833.880, -70773.828, -69432.382, -66892.382, -63392.333, -58911.333, -53413.115,
- -46480.113, -39004.000, -29673.000, -44917.000, -54148.000, -58973.000, -65215.806, -67214.806, -70699.888, -69479.885, -70416.616,
- -66186.616, -65287.000, -58687.000, -56022.000, -47349.000, -42246.000, -31328.000, -24276.000, -41703.000, -49937.000, -56700.000,
- -62224.000, -66057.353, -68571.851, -69542.412, -69176.777, -67339.054, -64570.486, -60725.048, -55746.428, -49727.694, -42846.000,
- -34545.000, -25821.000, -47143.000, -53104.000, -60417.000, -63372.000, -67951.903, -67846.267, -69681.592, -66391.592, -66062.547,
- -60462.547, -58163.000, -50283.000, -45909.990, -35995.000, -29464.000, -17247.000, -42541.000, -50431.000, -56979.000, -61777.000,
- -65515.980, -67471.557, -68064.634, -67205.734, -65203.315, -62039.315, -57889.000, -52589.000, -46266.506, -38775.302, -30656.000,
- -20809.000, -46305.000, -54753.000, -58647.000, -64290.578, -65684.473, -68190.258, -66049.975, -66345.722, -61506.402, -59848.000,
- -52888.000, -49180.103, -39917.000, -34147.000, -22629.000, -15072.000, -43296.000, -50897.000, -56626.000, -61488.000, -64604.742,
- -66389.866, -66387.301, -65177.303, -62738.303, -59368.303, -54768.303, -49316.000, -42553.760, -34901.000, -26112.000, -16722.000,
- -48177.000, -53104.000, -59746.000, -62086.625, -65976.625, -64989.789, -65952.563, -61990.011, -60994.000, -54758.000, -51770.000,
- -43249.000, -38206.329, -27647.000, -20561.000, -43799.000, -50561.000, -56467.000, -60659.000, -63621.191, -64907.266, -64531.286,
- -62938.746, -60176.746, -56256.746, -51661.000, -45813.000, -38809.795, -30692.473, -21914.000, -11569.000, -46603.000, -54399.000,
- -57706.000, -62593.368, -63079.584, -64934.464, -61894.849, -61590.725, -56110.725, -53794.000, -46137.000, -41898.691, -31855.000,
- -25592.000, -13501.000, -43734.000, -50701.000, -55843.000, -59942.538, -62292.538, -63299.248, -62550.890, -60596.598, -57466.598,
- -53468.000, -48463.000, -42223.000, -34872.000, -26497.000, -17193.000, -48102.000, -52499.000, -58470.000, -60084.685, -62998.997,
- -61319.891, -61576.900, -57101.900, -55303.000, -48636.000, -44839.000, -35761.000, -29963.446, -18662.000, -11146.000, -43901.000,
- -50096.000, -55606.785, -58806.785, -60930.800, -61281.940, -60372.800, -58079.800, -54810.434, -50375.000, -44936.000, -38350.000,
- -30668.313, -21991.762, -12649.000, -46342.000, -53403.000, -56248.302, -60118.302, -59803.883, -60771.916, -57312.778, -56216.000,
- -50217.000, -47236.000, -38971.000, -33934.586, -23257.000, -16463.000, -43501.000, -49854.000, -54528.508, -57728.508, -59218.961,
- -59315.389, -57836.544, -55433.000, -51735.000, -47078.000, -41408.000, -34428.000, -26288.000, -17465.000,  -7662.000, -47404.000,
- -51400.000, -56493.101, -57383.638, -59263.786, -56744.520, -56394.520, -51474.520, -48975.000, -41651.000, -37187.000, -27346.000,
- -21073.989,  -9213.000, -43370.000, -49099.000, -53654.000, -56261.916, -57560.027, -56889.216, -55284.000, -52594.000, -48594.000,
- -43722.000, -37454.000, -30080.000, -21890.439, -12670.051, -45503.000, -51847.000, -53873.303, -56953.303, -55578.958, -55852.224,
- -52007.224, -50152.000, -43676.000, -39939.000, -30922.000, -25326.129, -14050.000, -42802.000, -48503.000, -52319.311, -54704.311,
- -55174.334, -54489.605, -52490.000, -49583.000, -45277.000, -39980.000, -33274.000, -25825.000, -17185.000,  -8000.000, -46305.000,
- -49377.174, -53497.174, -53390.993, -54583.838, -51473.838, -50683.000, -45112.000, -41964.000, -33989.000, -28876.000, -18379.000,
- -11724.482, -42504.000, -47469.000, -50992.651, -52391.884, -52890.209, -51724.209, -49723.000, -46323.000, -41875.000, -36170.000,
- -29386.000, -21224.000, -12727.118,  -2905.000, -44116.000, -49701.349, -50345.971, -52445.216, -50533.216, -50441.916, -45781.916,
- -43455.842, -36251.000, -31941.000, -22379.000, -16323.195,  -4445.000, -41601.000, -46416.000, -49067.170, -50472.927, -50362.041,
- -49302.356, -46592.356, -42894.000, -38052.000, -32160.000, -24767.000, -16969.000,  -7949.000, -44404.000, -46686.502, -49789.502,
- -48935.420, -49643.282, -45840.974, -44385.000, -37955.000, -34265.000, -25713.000, -20193.000,  -9135.000, -40846.000, -44740.000,
- -47413.853, -48441.085, -48253.195, -46514.522, -43524.522, -39456.072, -34300.000, -27993.000, -20674.000, -12199.000,  -3061.000,
- -41722.000, -46059.677, -46432.720, -48246.241, -45446.241, -44538.241, -39003.801, -36078.959, -28299.000, -23519.000, -13404.000,
-  -6822.167, -39523.000, -43285.577, -45295.577, -46365.611, -45809.611, -43678.000, -40228.000, -35650.000, -30161.000, -23696.000,
- -16118.000,  -7517.000, -36170.000, -41500.026, -42840.026, -45706.026, -44223.334, -44254.521, -39692.521, -37358.000, -30298.000,
- -26178.000, -16990.000, -10993.000, -38396.000, -41396.439, -43388.439, -43821.433, -42808.642, -40436.000, -36557.611, -31850.611,
- -26098.000, -19468.000, -11569.000,  -2135.000, -36403.000, -38610.327, -42511.327, -41929.771, -42999.289, -39168.289, -37788.521,
- -31672.961, -28447.803, -19982.000, -14623.000,  -3279.000, -36878.000, -39906.720, -41217.871, -41220.534, -39718.125, -36740.000,
- -33010.000, -28145.000, -22197.000, -14876.000,  -6094.000, -33804.000, -38669.148, -39018.148, -41138.501, -38329.144, -37822.659,
- -32523.000, -30223.000, -22430.000, -17642.000,  -7291.000, -35478.534, -37978.534, -38987.800, -38455.352, -36484.845, -33635.000,
- -29685.000, -24508.000, -17810.000,  -9776.000, -34298.032, -35568.032, -38708.032, -36708.032, -37324.891, -32882.891, -31413.000,
- -24413.000, -20325.188, -10695.000,  -4555.000, -34350.148, -36395.374, -36709.063, -35690.511, -33860.511, -30680.511, -26188.000,
- -20307.000, -12991.000,  -4980.000, -31708.000, -35882.031, -34835.823, -36295.511, -32779.170, -32069.000, -25949.000, -22577.000,
- -13629.000,  -7897.000, -33395.840, -34536.346, -34479.707, -33411.060, -31070.752, -27434.000, -22281.000, -15779.000,  -8289.000,
-    175.000, -32435.255, -32531.855, -34778.645, -32286.611, -32246.611, -26964.000, -24250.000, -16070.000, -10913.283,   -959.000,
- -29692.402, -31692.402, -32812.385, -32585.585, -31075.585, -28271.000, -23780.000, -17930.000, -11136.000,  -3210.000, -28296.408,
- -29453.923, -32662.940, -31157.245, -31843.261, -27466.000, -25420.000, -18064.000, -13495.000,  -4003.000,   2151.000, -28283.417,
- -30438.051, -31156.971, -30557.346, -28376.843, -24796.000, -19622.582, -13445.000,  -6250.000,   1547.000, -25821.000, -29923.300,
- -29597.990, -30970.466, -27510.466, -26100.000, -19538.646, -15516.000,  -6751.000,  -1136.443, -24417.100, -27408.077, -29111.031,
- -29563.297, -28118.225, -25234.743, -20886.930, -15281.000,  -8725.000,  -1575.000, -26618.475, -27276.109, -29520.227, -27064.187,
- -26253.633, -20360.609, -17014.000,  -9042.000,  -4027.000,   6054.000, -23756.385, -26416.385, -27679.084, -27196.109, -25293.236,
- -21451.632, -16572.000, -10724.374,  -4159.000,   3713.000, -22598.000, -24415.916, -27362.070, -25997.463, -25947.892, -20796.062,
- -17975.000, -10760.031,  -6318.000,   3062.000, -23159.493, -25283.448, -25775.284, -24800.566, -21547.206, -17313.804, -12251.737,
-  -6226.000,    976.000,   8579.000, -20767.000, -24707.278, -24359.825, -25123.544, -20674.356, -18343.803, -11865.779,  -8044.000,
-    552.000,   6034.000, -18993.000, -22303.593, -23834.813, -23783.728, -21075.339, -17544.318, -13007.052,  -7761.000,  -1244.512,
-   5763.000, -20959.849, -22267.062, -23800.598, -20043.090, -18196.508, -12482.724,  -9166.000,  -1409.457,   3523.000, -16229.395,
- -21044.395, -22467.068, -20068.833, -17159.768, -13249.698,  -8637.905,  -2925.464,   3472.000,  11265.000, -13097.000, -16762.555,
- -21763.563, -18884.455, -17483.154, -12498.312,  -9658.440,  -2669.802,   1654.000,  10698.000, -13647.200, -17628.707, -18272.891,
- -16379.586, -12893.106,  -8964.106,  -3804.760,   1811.000,   8913.219,  -9253.857, -14742.634, -14806.147, -15968.230, -11987.107,
-  -9613.145,  -3354.936,    416.000,   8622.654,  14001.000, -10496.563, -11868.965, -12447.675, -11661.552,  -8769.633,  -4164.400,
-    832.752,   7124.247,  13840.000,  -7556.749,  -8130.505, -10384.522,  -8630.610,  -8673.233,  -3544.346,   -201.676,   7276.309,
-  12032.000,  -3260.000,  -5239.806,  -6667.147,  -6593.906,  -5711.591,  -3563.108,    322.155,   6123.351,  12074.000,  19732.030,
-   -188.025,  -1212.186,  -4484.259,  -3393.980,  -4334.917,   -973.653,     84.898,   6420.855,  10666.000,  19318.465,   1706.821,
-   -545.288,  -1265.672,  -1183.747,    303.694,   2518.941,   6008.911,  10923.253,  17789.308,   5775.000,   1774.680,   2243.818,
-    240.468,   2969.484,   3277.370,   8123.808,  10293.904,  17800.520,   5825.000,   4386.981,   3646.384,   4300.196,   5874.010,
-   8693.330,  12171.056,  17035.691,   8351.563,   8086.725,   5203.618,   7045.191,   6635.913,  10828.658,  12358.822,  18637.242,
-  21878.000,  10522.600,   8825.747,   8607.788,   9379.013,  11555.105,  14457.952,  18518.422,  23208.564,  14253.000,  10604.265,
-  11469.463,  10260.096,  13741.495,  14655.310,  20377.819,  23019.000,  16897.000,  14396.000,  13269.739,  12954.995,  14508.712,
-  16926.640,  20365.941,  24546.000,  20800.000,  16366.787,  16342.089,  14309.441,  16607.466,  17189.909,  22100.000,  24284.000,
-  23604.000,  20297.000,  18379.037,  17229.973,  17815.779,  19370.558,  22322.084,  25823.763,  22440.000,  21643.737,  18818.043,
-  20221.274,  19989.160,  23860.080,  25700.045,  26492.000,  23852.683,  21987.412,  21629.824,  22301.306,  24326.123,  27371.360,
-  31577.352,  28774.000,  27333.218,  23662.324,  24302.533,  23185.517,  26019.186,  27329.797,  32723.000,  32981.000,  29652.399,
-  27172.306,  25846.141,  25801.317,  26820.644,  29006.783,  32563.406,  35475.000,  33276.000,  28936.019,  28890.119,  26763.075,
-  28910.721,  29217.569,  33701.000,  36074.602,  35793.000,  32434.904,  30674.904,  29579.904,  29890.335,  31201.446,  33763.734,
-  37389.171,  39598.000,  34544.239,  33557.201,  30857.201,  32166.869,  31603.158,  35222.197,  36929.636,  42296.000,  38396.000,
-  35910.488,  33810.488,  33420.973,  33803.128,  35613.955,  38432.000,  42439.000,  46253.000,  40700.000,  39143.677,  35443.677,
-  35938.635,  34601.531,  37352.000,  38358.400,  43398.000,  44707.000,  41498.000,  38728.649,  37483.532,  36913.421,  37941.934,
-  40042.657,  43289.000,  47320.000,  47085.000,  45103.000,  40608.938,  40335.850,  38140.580,  39950.426,  40338.044,  44520.000,
-  46798.000,  47601.000,  44250.076,  42324.062,  40914.062,  41037.778,  42179.440,  44739.000,  48057.000,  52704.000,  51398.000,
-  46305.000,  45340.627,  42440.627,  43370.097,  42893.512,  46174.000,  47883.000,  53403.000,  50202.000,  47636.065,  45386.065,
-  44867.501,  45087.818,  46547.445,  49268.000,  53214.000,  57818.000,  52390.000,  50763.664,  47303.664,  47450.729,  46158.688,
-  48417.037,  49384.356,  54274.000,  57203.000,  53216.000,  50568.731,  49305.273,  48583.478,  49386.389,  51186.000,  54364.000,
-  58292.000,  56802.000,  52709.264,  52320.918,  50121.319,  51500.271,  51715.651,  55656.000,  58027.000,  64199.000,  56197.000,
-  54256.039,  52951.039,  52930.224,  53697.581,  56098.000,  59351.000,  63959.000,  58614.000,  57413.000,  54713.012,  55463.975,
-  54799.156,  57799.000,  59325.645,  64924.000,  68400.000,  59870.000,  57749.837,  57168.280,  57177.189,  58685.576,  60939.000,
-  64861.000,  69406.000,  63202.000,  59799.717,  59875.894,  58447.839,  60703.482,  61469.643,  66107.000,  69002.000,  63098.143,
-  61893.480,  60999.422,  61809.635,  63378.000,  66432.000,  70212.000,  75467.000,  65389.406,  64988.872,  62612.736,  63962.736,
-  64085.667,  67966.000,  70124.380,  76320.000,  68996.000,  67148.000,  65527.622,  65482.652,  66128.652,  68604.000,  71556.000,
-  76200.000,  70556.000,  67386.359,  68074.000,  67233.439,  70289.000,  71896.805,  77229.000,  73104.000,  70744.222,  69843.351,
-  69719.351,  71170.000,  73611.000,  77316.000,  81807.000,  72983.184,  72945.777,  71166.085,  73266.000,  74067.510,  78700.000,
-  81499.000,  76641.333,  75221.333,  74128.333,  74504.225,  75978.663,  79101.000,  82866.000,  87896.000,  79056.000,  78528.000,
-  76028.139,  77288.139,  76811.050,  80695.000,  82871.198,  88799.000,  80929.000,  79295.083,  79007.422,  79341.163,  81301.000,
-  84439.000,  88732.000,  93782.000,  84393.000,  81334.503,  81986.388,  80898.188,  83578.000,  84718.198,  89971.000,  93304.000,
-  84803.000,  84082.584,  83792.964,  84835.986,  86845.454,  90140.000,  94539.000, 100041.000,  87039.000,  87180.000,  85479.952,
-  87609.566,  87817.402,  91997.000,  94248.151, 100704.000,  89403.000,  88583.794,  88989.933,  90217.768,  92782.000,  96011.000,
- 100469.000,  90419.000,  91682.582,  91473.000,  94903.000,  96473.000, 101941.000, 105399.000,  93697.000,  93617.000,  94103.000,
-  95935.000,  98392.000, 102205.000, 106798.000,  96545.000,  95605.000,  98340.000,  99142.000, 103794.000, 106595.916, 113459.000,
-  98499.000,  99615.000, 101302.000, 104426.000, 108238.000, 113456.000, 100154.000, 102177.000, 102388.000, 106333.000, 108498.000,
- 114582.000, 103762.000, 104830.000, 107194.000, 110208.000, 114710.000, 119893.000, 106170.000, 109425.000, 110777.000, 116186.000,
- 119611.504, 110530.000, 112772.000, 116621.000, 121096.000, 127211.000, 113575.000, 118308.000, 121133.000, 128490.000, 118989.000,
- 122746.000, 128105.000, 134094.000, 123102.000, 129306.000, 133696.000, 124927.000, 129576.000, 135200.000, 131083.000, 134718.000,
- 131554.000, 136070.000, 136287.000, 142963.000, 139021.000
-};
-
-
-//+----------------------------+
-//| Table of Beta Decay Energy |
-//+----------------------------+
-//unit: keV
-G4double G4NucleiPropertiesTable::BetaEnergy[G4NucleiPropertiesTable::nEntries] = {
-    782.353,      0.0  ,      0.0  ,     18.591,      0.0  ,  23502.873, -22895.261,      0.0  ,  25447.745,   -292.646, -26317.000,
-      0.0  ,  24269.640,   3507.811,  -4288.153,      0.0  ,  11202.591,   -861.815, -12098.376,      0.0  ,  10651.789,  16004.532,
- -17979.340, -12173.054,      0.0  ,  15864.459,  13606.319,  -1068.116, -16497.950,      0.0  ,  15759.785,  20443.649,    555.816,
-  -3647.807, -24000.000,      0.0  ,  20621.889,  11505.986,  -1982.547, -14309.989,      0.0  ,  25019.000,  11707.501,  13368.901,
- -17338.083, -14709.755,      0.0  ,  17096.236,  13437.198,  -2220.445, -17765.279,      0.0  ,  16218.666,  20643.837,    156.475,
-  -5143.039, -25602.000,      0.0  ,  19093.792,   9771.705,  -2753.950, -13921.614,      0.0  ,  23387.569,   8010.685,  10420.430,
- -15417.255, -13312.144,      0.0  ,  22679.721,  13165.771,   8679.820,  -2760.703, -14533.472,      0.0  ,  27398.000,  11806.900,
-  13899.200,  -1655.496,  -4433.351, -20011.000,      0.0  ,  26531.000,  16972.934,  12526.884,   4820.970,  -3238.464, -11177.564,
-      0.0  ,  15793.571,  17969.583,   3814.305,   7024.533, -13886.789, -10725.671,      0.0  ,  20728.000,  17170.173,   8109.316,
-   5684.140,  -3547.460, -13095.942, -15207.000,      0.0  ,  20502.000,  22796.544,   6490.562,  10818.127,  -2842.240,  -4785.338,
- -18580.000, -13982.000,      0.0  ,  23118.000,  11286.855,   8483.159,   4375.844,  -4056.819, -12239.876, -17005.000,      0.0  ,
-  28066.000,  11429.943,  13492.033,   2470.081,   5515.780, -13878.340, -10809.800, -21242.000,      0.0  ,  15877.000,  13325.079,
-   7298.763,   3835.267,  -4276.983, -12741.052, -15047.000,      0.0  ,  16876.000,  17858.282,   7332.347,   9312.012,  -4004.137,
-  -5065.721, -18118.000, -14997.000,      0.0  ,  17956.515,  12674.370,   9005.645,   2610.326,  -4812.398, -11631.453, -18260.000,
-      0.0  ,  21948.000,  12312.171,  13985.176,   1831.800,   4642.241, -14331.775, -11234.125, -22484.000,      0.0  ,  22276.000,
-  15401.879,  13279.896,   7554.317,   3679.521,  -4943.119, -13793.029, -16302.000,      0.0  ,  13642.205,  17476.649,   6990.139,
-   8560.509,  -4232.325,  -6137.750, -18506.000, -15640.000,      0.0  ,  18178.000,  15878.849,  11739.092,   7994.777,   1492.032,
-  -5396.059, -11980.495, -18360.000,      0.0  ,  18872.000,  19099.260,  10266.469,  13018.791,    224.458,   1710.663, -12685.287,
- -11151.613, -22597.000,      0.0  ,  20305.658,  13709.156,  11987.457,   5845.347,    248.508,  -5582.724, -11622.175, -16144.000,
-      0.0  ,  24058.000,  11313.165,  17094.319,   4600.987,   5374.301,  -5491.284,  -6062.302, -16897.000, -14634.000,      0.0  ,
-  24862.000,  16350.000,  14301.683,  10497.851,   3988.758,    167.141,  -5965.305, -11881.101, -15606.000,      0.0  ,  14996.000,
-  18317.023,   7850.201,  10413.118,  -1142.072,    708.554, -12805.361, -10985.879, -20337.000,      0.0  ,  19496.000,  16127.894,
-  12470.516,   7901.510,   4865.301,   -813.485,  -6148.793, -11638.634, -16002.000,      0.0  ,  19487.000,  10721.494,  12394.976,
-   2936.900,   4916.787,  -5913.072,  -6742.647, -17122.000, -14038.000,      0.0  ,  18257.000,  14792.000,  10511.652,   6639.314,
-   3441.184,    565.000,  -6530.581, -13108.242, -15400.000,      0.0  ,  13740.000,  14512.674,   4708.184,   7482.161,  -1504.873,
-   1311.093, -14319.724, -11676.176, -19180.000,      0.0  ,  16674.000,  13758.164,   8737.215,   5728.114,   2491.611,   -421.386,
-  -6495.276, -12929.000, -15471.000,      0.0  ,  14913.000,  17326.000,   7745.377,   9434.736,    599.255,   3525.445,  -6425.839,
-  -7000.047, -16952.000, -14159.000,      0.0  ,  15565.000,  11547.371,   7948.142,   4615.511,   1815.400,  -2220.819,  -6867.310,
- -11296.000, -15888.000,      0.0  ,  20083.000,   9111.000,  12270.981,   3548.175,   5658.873,  -3653.276,   -267.513, -13702.000,
- -10312.000, -19934.000,      0.0  ,  18928.000,  14084.000,  10810.006,   6888.696,   4204.502,    256.809,  -2062.427,  -7133.321,
- -12461.000, -14298.000, -18676.000,      0.0  ,  22598.000,  14392.000,  14929.000,   5698.194,   7715.977,  -1376.274,   2366.702,
-  -7051.409,  -7603.000, -17101.000, -13125.000,      0.0  ,  18322.000,  14684.000,   9788.539,   6642.807,   1991.936,    600.101,
-  -2927.802,  -7451.573, -12290.000, -15640.000,      0.0  ,  16897.000,  18425.000,   8902.000,  12090.263,    278.070,   3994.188,
-  -4012.342,  -1659.346, -13818.000, -10889.000, -19748.000,      0.0  ,  20605.000,  16497.000,  13721.000,  10970.000,   5262.230,
-   2005.764,   -601.861,  -2630.745,  -7714.893, -13028.000, -15006.000,      0.0  ,  20297.000,  12256.000,  14218.831,   4966.053,
-   6888.341,  -2208.314,   1036.925,  -7632.989,  -8149.972, -17276.000, -13404.000,      0.0  ,  18900.000,  15705.000,  13885.000,
-   7332.289,   6508.052,   2470.641,   -752.733,  -3207.804,  -8019.649, -12943.000, -15835.000,      0.0  ,  14494.000,  16310.000,
-   7871.123,   9083.765,   1973.385,   3975.387,  -4711.659,  -2372.000, -14413.000, -11262.000, -20027.000,      0.0  ,  17798.000,
-  15901.000,  10069.000,   8857.000,   5020.000,   3436.034,   -597.013,  -3742.352,  -8302.128, -13260.000, -15919.000,      0.0  ,
-  17987.000,  10880.000,  11299.021,   4122.437,   7041.591,  -1377.052,    697.140,  -8243.079,  -8799.227, -17512.000, -15127.000,
-      0.0  ,  17547.000,  12221.000,  11467.000,   7341.854,   5956.000,   2603.086,   -231.377,  -3451.296,  -8693.800, -13706.000,
- -16702.000,      0.0  ,  12231.000,  13665.000,   7107.298,   9049.241,   1616.955,   3695.453,  -4566.000,  -2135.358, -15299.000,
- -12873.000, -20987.000,      0.0  ,  14267.000,  13171.000,   9818.000,   8016.623,   5091.864,   2690.854,   -836.042,  -3264.191,
-  -8770.207, -14619.000, -16786.000,      0.0  ,  15798.000,   8812.000,  11550.524,   3971.470,   6246.591,  -2307.416,    381.586,
-  -8563.049,  -9366.851, -18307.000, -15612.000,      0.0  ,  14979.000,  11793.000,   9939.039,   7622.260,   5185.321,   1565.188,
-  -1072.484,  -4799.579,  -9094.138, -13137.000, -17121.000,      0.0  ,  10377.000,  13758.164,   6088.246,   8492.481,    237.295,
-   2823.882,  -6126.891,  -4158.103, -14185.000, -12231.000, -21368.000,      0.0  ,  13607.000,  12407.000,   8970.286,   7182.320,
-   3977.553,   1321.733,  -2237.206,  -5637.145,  -8995.000, -13618.000, -15677.000,      0.0  ,  16152.000,   7293.597,  10432.270,
-   2530.201,   5314.591,  -3948.171,  -1627.164,  -9171.000,  -9753.000, -17279.000,      0.0  ,  13870.000,  11225.000,   9027.627,
-   6057.713,   3672.200,     66.945,  -3366.869,  -5520.000,  -9779.000, -13087.000,      0.0  ,   9753.000,  11979.011,   4710.077,
-   7306.591,  -1675.098,    578.725,  -7164.799,  -4410.000, -14904.000,      0.0  ,  13292.000,  10395.471,   7876.171,   5958.365,
-   2137.132,  -1351.944,  -3254.866,  -6242.350,  -9355.000, -14137.000,      0.0  ,  13823.000,   5732.961,   9976.467,    225.600,
-   2641.976,  -5175.000,  -2100.000,  -9800.000, -10100.000,      0.0  ,  12873.000,   8746.727,   8421.041,   3557.696,    577.000,
-  -1000.477,  -4222.928,  -6010.000, -10153.000, -13693.000,      0.0  ,   7592.000,  11657.709,   2055.860,   4462.143,  -2921.100,
-   -105.975,  -8100.000,  -4729.000, -15256.000,      0.0  ,  11644.000,   9331.858,   5362.196,   2675.011,    905.995,  -2227.285,
-  -4013.017,  -6783.140,  -9889.000, -14105.000,      0.0  ,  12734.000,   3475.137,   6599.091,   -654.720,   1655.614,  -6220.000,
-  -2400.000, -10350.000, -10614.000,      0.0  ,  10926.000,   6874.594,   4557.449,   2815.147,   -231.924,  -2012.710,  -4800.000,
-  -6500.000, -10493.000, -13795.000,      0.0  ,  14075.000,   5384.000,   8066.000,    458.083,   3999.058,  -4356.097,   -335.027,
-  -8741.663,  -5040.000, -15996.000,      0.0  ,   8933.000,   6251.000,   4293.849,   1593.293,   -340.859,  -2740.000,  -4683.635,
-  -6647.351, -10651.000, -14535.000,      0.0  ,   7182.000,  10006.000,   2344.814,   5368.000,  -2562.412,   1353.008,  -6906.646,
-  -3136.408, -10444.050, -11029.000,      0.0  ,  10498.000,   8162.000,   5995.779,   3391.710,   1176.549,   -863.639,  -3030.000,
-  -4897.221,  -7019.183, -10573.000,      0.0  ,   8700.000,  11733.000,   4160.000,   7010.000,   -923.313,   2961.988,  -4962.875,
-  -1309.988,  -8498.153,  -6091.000,      0.0  ,  11998.000,  10120.000,   7270.000,   5340.000,   2702.040,    682.871,  -1365.116,
-  -3062.526,  -5345.581,  -6851.055, -11046.000,      0.0  ,  10237.000,  13265.000,   6440.000,   8200.000,    954.138,   4209.472,
-  -3573.777,    707.804,  -7223.934,  -3761.258, -10545.000,      0.0  ,  11742.000,   9090.000,   7000.000,   4148.000,   2280.945,
-    151.046,  -1625.778,  -3645.613,  -5319.162,  -7120.000, -11000.000,      0.0  ,  16278.000,   7290.400,  10380.000,   2670.222,
-   5641.437,  -1870.555,   2004.493,  -5720.566,  -1867.893,  -9140.000,  -5788.000,      0.0  ,  11855.000,   8320.000,   6230.000,
-   3856.341,   1585.282,   -280.714,  -2237.212,  -3929.907,  -5510.367,  -7160.000, -11397.000,      0.0  ,  10880.000,  12677.000,
-   4700.000,   7270.000,    -97.496,   3092.620,  -4399.529,   -180.307,  -7815.991,  -4000.000, -11219.000,      0.0  ,  11513.000,
-   8877.000,   5460.000,   3669.018,    972.728,   -909.137,  -2275.712,  -4468.882,  -5868.000,  -7500.000, -11212.000,      0.0  ,
-  14000.000,   7685.000,   9870.000,   1826.508,   4654.729,  -2680.884,    894.139,  -6485.983,  -2666.000,  -9613.000,  -6073.000,
-      0.0  ,  10135.000,   8910.000,   6182.000,   2870.000,    687.083,  -1065.022,  -3255.000,  -4693.000,  -6000.000,  -8089.000,
- -11504.000,      0.0  ,   9352.000,  11140.000,   5099.000,   7626.000,   -518.626,   1774.243,  -5240.000,  -1476.536,  -7978.000,
-  -5270.000, -11350.000,      0.0  ,  10302.000,   7275.000,   6852.500,   3885.061,    283.314,  -1861.606,  -3668.917,  -5165.000,
-  -6488.223,  -8573.000, -11783.000,      0.0  ,  12236.000,   6854.000,   8960.000,   2914.081,   5313.443,  -3622.600,   -673.301,
-  -7200.000,  -3723.000, -10132.000,  -7070.000,      0.0  ,  12305.000,   8973.000,   8155.000,   4985.882,   4496.352,   1495.051,
-  -2832.685,  -4291.008,  -5575.045,  -7510.000,  -7980.000, -12361.000,      0.0  ,   8183.000,  10350.000,   4391.865,   6586.914,
-    545.998,   2280.077,  -6111.000,  -2489.000,  -8960.663,  -5798.000, -12193.000,      0.0  ,  10623.000,   9802.000,   6435.000,
-   5891.060,   2707.322,   1544.833,  -1253.390,  -4434.112,  -6220.000,  -7404.663,  -9476.000, -12044.000,      0.0  ,   9385.000,
-  12204.904,   5987.000,   8099.849,   1940.361,   3639.092,  -2005.607,    356.514,  -7870.354,  -4527.000, -11048.000,  -7862.000,
-      0.0  ,  11024.000,   8600.000,   7461.597,   4136.604,   2893.177,     91.365,   -404.892,  -3200.855,  -6337.000,  -8093.000,
-  -9473.000,      0.0  ,  13337.000,   7410.000,  10290.651,   3507.865,   4916.650,   -901.398,   2045.447,  -4255.745,  -1586.576,
-  -9630.000,  -6588.000, -13050.000,      0.0  ,   9800.000,   9278.654,   6086.850,   4453.445,   1124.835,    925.617,  -1690.631,
-  -2567.453,  -5110.000,  -8189.000, -10051.000,      0.0  ,   8184.000,  11740.072,   5386.536,   7099.951,    163.569,   3186.800,
-  -2973.234,    254.411,  -6446.432,  -3450.000, -11605.000,  -8467.000,      0.0  ,  10449.000,  10427.241,   7468.476,   6688.406,
-   2658.085,   1933.885,   -320.257,  -1108.202,  -3523.000,  -4790.000,  -7006.000, -10191.000,      0.0  ,  12325.881,   5823.376,
-   8824.189,   2250.188,   4585.599,  -1683.997,   1796.461,  -5057.378,  -1867.012,  -8420.000,  -5420.000, -13657.000,      0.0  ,
-  11276.271,   8085.648,   7567.133,   4558.004,   3638.662,   1357.227,    293.651,  -2042.574,  -3386.591,  -5430.000,  -6905.000,
-  -8942.000,      0.0  ,  13524.000,   7075.000,   9310.000,   3335.000,   6245.000,   -168.084,   3202.411,  -3630.000,   -361.388,
-  -7046.557,  -3875.802, -10170.796,  -7270.000,      0.0  ,  11810.000,   9505.000,   8545.000,   5485.000,   4569.000,   2824.441,
-   1613.498,   -541.485,  -1980.000,  -4203.824,  -5476.538,  -7339.000,  -8849.000,      0.0  ,  15082.000,   8815.000,   9850.000,
-   4605.000,   7210.000,   1009.949,   4530.260,  -2322.533,   1150.515,  -5954.369,  -2587.000,  -9250.000,  -5386.000,      0.0  ,
-  11187.000,   9634.000,   6945.000,   5530.000,   3750.000,   2659.534,    763.355,   -543.081,  -2687.592,  -4141.887,  -6050.000,
-  -7653.000, -11169.000,      0.0  ,  10135.000,  11802.000,   5888.000,   8105.000,   2155.000,   5602.706,  -1141.238,   2440.889,
-  -4278.646,  -1136.294,  -7908.686,  -4515.000, -12204.000,      0.0  ,  11215.000,   8491.000,   6485.000,   4950.000,   3640.000,
-   1916.919,    566.719,  -1345.252,  -2738.204,  -4849.000,  -6256.821,  -9443.656,      0.0  ,  13330.000,   7191.000,   9367.000,
-   3520.000,   6547.000,     39.400,   3541.100,  -2965.265,    194.145,  -6523.369,  -3185.092, -11068.000,  -8327.000,      0.0  ,
-   9827.000,   8025.000,   6160.000,   4820.000,   2940.416,   1510.964,     33.005,  -1417.000,  -3426.000,  -5006.320,  -7902.000,
- -10141.000,      0.0  ,   8635.000,  10648.000,   4750.000,   7720.000,   1361.325,   4505.000,  -1918.183,   1649.025,  -5157.011,
-  -2091.814,  -9496.000,  -6825.000, -12858.000,      0.0  ,   9147.000,   7623.000,   5985.000,   4160.000,   2591.496,   1115.949,
-   -214.295,  -2019.953,  -3849.678,  -6380.000,  -8681.887,  -9999.749,      0.0  ,  12063.000,   5906.000,   8778.000,   2810.000,
-   5400.000,   -892.440,   2892.178,  -3878.000,   -637.052,  -8300.000,  -5257.000, -11929.000,  -8627.000,      0.0  ,   8812.000,
-   6977.000,   5496.000,   3741.000,   2188.333,   1036.800,   -865.404,  -2444.917,  -5100.000,  -7368.000,  -8528.000, -10578.000,
-      0.0  ,   7079.000,   9955.000,   3670.000,   6800.000,    287.967,   3955.967,  -2585.931,    663.715,  -7054.976,  -4347.260,
- -10161.000,  -7168.000, -13661.000,      0.0  ,   9967.000,   8188.000,   6632.000,   4908.000,   3340.000,   2016.462,    316.450,
-  -1035.961,  -3916.529,  -6100.000,  -7189.000,  -9071.438, -10388.648,      0.0  ,  11067.000,   4800.000,   7900.000,   1450.722,
-   5076.442,  -1451.860,   1988.685,  -5881.508,  -2758.000,  -9122.000,  -5864.000, -12366.000,  -8868.000,      0.0  ,   9287.000,
-   7625.000,   6000.000,   4584.000,   3103.485,   1445.888,    495.886,  -3030.000,  -4638.667,  -5905.000,  -8029.000,  -8757.000,
- -10965.000,      0.0  ,   6005.000,   8900.000,   2607.000,   6151.701,   -469.996,   3274.989,  -4706.918,  -1511.831,  -7745.149,
-  -4660.000, -10411.000,  -8165.000,      0.0  ,   8793.000,   6996.000,   5734.000,   4160.000,   2517.373,   1454.962,  -1756.634,
-  -3534.638,  -4670.055,  -6442.829,  -7521.933,  -9520.000, -10386.000,      0.0  ,   7079.000,   9730.000,   4100.000,   7142.918,
-    521.190,   4423.008,  -3656.632,   -273.210,  -7032.818,  -2976.766,  -9300.000,  -6413.000, -12231.000,      0.0  ,   8085.000,
-   6533.000,   5350.000,   3797.000,   2363.623,   -593.902,  -2293.011,  -3514.272,  -5005.343,  -6349.607,  -8086.343,  -9257.000,
- -10964.000,      0.0  ,  10945.000,   4882.000,   8325.000,   1760.381,   5370.000,  -2680.600,    982.189,  -5615.000,  -1960.000,
-  -7942.130,  -5000.000, -11200.000,  -7983.000,      0.0  ,   9222.000,   7758.000,   6400.000,   4780.000,   3364.538,    390.131,
-  -1035.608,  -2269.350,  -3745.010,  -5400.000,  -6802.021,  -7940.000,  -9930.000, -10893.000,      0.0  ,   6036.000,   9147.000,
-   3002.000,   6368.591,  -1616.399,   1982.545,  -4234.000,   -890.457,  -7054.714,  -3855.000,  -9734.000,  -6800.000, -12706.000,
-      0.0  ,   8719.000,   7355.000,   6115.000,   4393.903,   1403.021,    -53.333,  -1234.222,  -2676.000,  -4209.812,  -5458.000,
-  -6884.000,  -8635.000,  -9734.000,      0.0  ,  10136.000,   4166.000,   7360.000,   -617.483,   2904.453,  -3159.587,    294.024,
-  -5914.946,  -2647.963,  -8795.000,  -5580.000, -11588.000,      0.0  ,   8656.000,   7122.000,   5418.000,   2363.312,    766.700,
-   -185.770,  -1652.551,  -3098.740,  -4560.000,  -5635.000,  -7331.000,  -8654.000,      0.0  ,  11314.000,   5486.000,   8207.000,
-    378.000,   3672.517,  -2155.331,   1258.000,  -4824.286,  -1673.143,  -7569.000,  -4406.000, -10442.000,  -7228.000,      0.0  ,
-   9730.000,   8468.000,   6514.000,   3201.000,   1581.000,    697.568,   -662.442,  -2084.701,  -3450.000,  -4693.000,  -6139.000,
-  -7526.000,  -9008.000,      0.0  ,   7070.000,   8975.600,   1273.933,   4383.560,  -1251.808,   2118.979,  -3928.559,   -522.523,
-  -6650.000,  -3188.000,  -9250.000,  -6139.000, -11988.000,      0.0  ,   9876.000,   7655.000,   3996.000,   2379.500,   1497.942,
-    193.777,  -1195.955,  -2431.553,  -3720.000,  -5050.000,  -6307.000,  -7819.000,  -9227.000,      0.0  ,   8500.000,  10249.000,
-   2147.769,   4959.000,   -420.351,   2949.217,  -2979.160,    368.578,  -5598.000,  -2211.000,  -8091.000,  -5030.000, -10871.000,
-  -7620.000,      0.0  ,   9173.597,   4632.000,   3190.000,   2233.454,    970.848,   -352.395,  -1369.823,  -2960.000,  -4020.000,
-  -5250.000,  -6560.000,  -8101.000,  -9399.000,      0.0  ,  14135.000,   3103.000,   5486.000,    493.000,   3577.000,  -2119.467,
-   1279.543,  -4708.000,  -1285.000,  -7107.000,  -3726.000,  -9902.000,  -6586.000, -12426.000,      0.0  ,  13531.000,   7990.000,
-   4003.000,   2918.000,   1770.588,    427.360,   -517.443,  -2230.000,  -2938.000,  -4331.000,  -5598.000,  -6996.000,  -8393.000,
-  -9473.000,      0.0  ,  15087.000,   7370.000,   8393.699,   1550.000,   4175.000,  -1228.561,   2058.669,  -3713.176,   -500.000,
-  -6190.000,  -2770.000,  -9170.000,  -5151.000, -11457.000,      0.0  ,   8907.000,   8120.000,   5962.000,   2648.061,   1150.950,
-    269.345,  -1200.000,  -2025.582,  -3720.000,  -4751.000,  -5940.000,  -7203.000,  -8728.000,      0.0  ,   8085.000,   9834.000,
-   5074.826,   6926.196,    -80.308,   2548.224,  -2870.000,    472.833,  -5126.347,  -2211.000,  -7850.000,  -4520.000, -10433.000,
-  -7051.000,      0.0  ,   9762.000,   9301.000,   6941.600,   5877.460,   4172.566,   1175.630,   -600.107,  -1222.100,  -2702.000,
-  -3690.000,  -5657.000,  -5900.000,  -7604.000,  -8793.000,      0.0  ,  10936.000,   6368.000,   7820.000,   2774.000,   5374.034,
-  -1737.751,   1044.439,  -4437.000,  -1100.000,  -7000.000,  -3815.000,  -9231.000,  -6073.000, -12016.000,      0.0  ,  10228.000,
-   8045.000,   6806.000,   5057.023,   4212.716,   2316.834,   -278.000,  -2129.000,  -2787.000,  -4504.392,  -5162.512,  -7020.000,
-  -7677.000,  -9268.000,      0.0  ,   6977.000,   8918.000,   4060.000,   6220.134,   1049.731,   3761.853,  -3388.000,   -222.273,
-  -6047.095,  -2970.861,  -8470.000,  -5460.000, -10800.000,  -7685.000,      0.0  ,   8905.000,   7623.000,   6150.000,   5251.339,
-   3213.117,   2501.911,    580.672,  -1823.002,  -3727.686,  -4528.807,  -5977.727,  -6822.000,  -8337.000,  -9343.000,      0.0  ,
-   7750.000,   9759.000,   5040.000,   7306.770,   2211.074,   4503.545,   -745.318,   2162.203,  -4873.664,  -2088.908,  -7644.545,
-  -4500.000,  -9900.000,  -6900.000, -12662.000,      0.0  ,   8551.000,   7042.000,   6253.219,   4246.250,   3425.558,   1461.444,
-    933.922,  -1041.359,  -3442.786,  -5275.123,  -6010.000,  -7463.000,  -8458.000, -10116.000,      0.0  ,  10600.000,   5778.000,
-   8464.396,   3119.389,   5541.438,    318.655,   2997.516,  -2331.659,    550.549,  -6314.957,  -3740.000,  -9074.000,  -6092.000,
- -11709.000,  -8337.000,      0.0  ,   7714.000,   7884.554,   4923.352,   4108.352,   2534.571,   1805.282,   -163.041,   -616.399,
-  -2660.043,  -5054.484,  -6700.000,  -7520.000,  -9247.000,  -9855.000,      0.0  ,   6649.000,   9366.528,   4104.626,   6530.167,
-   1026.232,   4169.252,  -1471.785,   1542.000,  -3877.767,  -1029.888,  -8267.273,  -5160.000, -10600.000,  -7471.000, -13390.000,
-      0.0  ,   8519.000,   9195.630,   5750.000,   4945.000,   3290.000,   2685.690,    896.000,    224.139,  -1721.336,  -2187.371,
-  -4608.780,  -6372.647,  -8348.000,  -8821.000, -10965.000,      0.0  ,  10448.718,   5115.000,   7262.354,   2060.000,   4932.000,
-   -539.586,   2468.339,  -3107.333,     40.989,  -5764.889,  -2682.000,  -9400.000,  -6680.000, -12212.000,  -8579.000,      0.0  ,
-   9557.000,   7536.000,   5664.000,   4190.000,   3397.033,   1690.657,   1070.915,   -695.268,  -1313.877,  -3637.673,  -3812.000,
-  -6013.690,  -7810.000,  -9758.000, -10088.000,      0.0  ,  11504.000,   6567.000,   7772.000,   3010.000,   5690.000,    -86.548,
-   3454.000,  -2260.587,    971.398,  -4656.261,  -1793.657,  -7240.000,  -4108.000, -11092.000,  -7750.000, -13672.000,      0.0  ,
-  10526.000,   8514.000,   7005.000,   5414.000,   4101.488,   2442.420,   1187.042,     76.689,   -464.118,  -2565.237,  -2870.363,
-  -5124.297,  -5383.000,  -7427.000,  -9143.000, -11083.000,      0.0  ,   7499.000,   9063.000,   4453.000,   6444.000,   1110.220,
-   3504.571,  -1874.310,   1818.758,  -3990.000,   -598.532,  -6545.350,  -3109.190,  -8590.000,  -5465.000, -12522.000,      0.0  ,
-   9464.000,   8262.000,   6455.000,   5547.000,   3336.000,   1880.950,    808.246,   -484.437,  -1569.171,  -2170.387,  -4129.909,
-  -4563.034,  -6459.450,  -6690.000,  -8831.000,      0.0  ,  10321.000,   5524.000,   7365.000,   2735.123,   4044.281,   -717.327,
-   1968.354,  -3562.000,    246.091,  -5751.249,  -2031.613,  -8054.000,  -4488.701, -10114.000,  -6660.000,      0.0  ,   9399.000,
-   7499.000,   6856.000,   4222.000,   3224.000,   1626.864,    252.089,   -821.215,  -2094.500,  -3102.000,  -3842.588,  -5577.123,
-  -6149.000,  -7862.000,  -7943.000,      0.0  ,   6651.000,   8309.000,   3856.000,   5155.000,    722.262,   2451.043,  -2444.423,
-    433.588,  -5060.000,  -1215.000,  -7444.400,  -3577.136,  -9371.000,  -5905.015, -11590.000,      0.0  ,   8542.000,   7359.000,
-   5654.000,   4514.000,   2734.000,   1362.542,    -60.053,  -1341.445,  -2540.000,  -3500.049,  -4481.000,  -5498.218,  -6933.002,
-  -7476.000,  -9331.000,      0.0  ,   9231.000,   4825.000,   6243.000,   1999.000,   3485.082,  -1220.003,    936.732,  -4230.000,
-   -900.000,  -6599.118,  -2665.000,  -8673.000,  -5102.070, -10919.000,  -7052.000,      0.0  ,   8234.000,   6763.000,   5524.000,
-   3834.000,   2514.498,    970.561,   -365.635,  -1837.723,  -2768.568,  -3845.437,  -4978.620,  -6018.734,  -6882.000,  -8301.000,
-  -8724.000,      0.0  ,   5962.000,   7312.000,   2955.000,   4580.000,   -105.636,   1835.325,  -3290.000,   -329.045,  -5600.000,
-  -2300.000,  -7880.000,  -4373.000,  -9915.000,  -6530.628, -12217.000,      0.0  ,   7890.000,   6548.000,   4797.000,   3739.000,
-   1955.577,    593.077,   -858.900,  -2002.419,  -3164.000,  -4150.000,  -5300.000,  -6323.000,  -7491.204,  -8119.000,  -9847.000,
-      0.0  ,   8449.000,   3894.000,   5644.000,   1393.895,   2505.785,  -2140.283,    295.747,  -4839.320,  -1658.000,  -6960.028,
-  -3708.000,  -9264.000,  -5769.440, -11519.000,  -7556.000,      0.0  ,   7601.000,   5729.000,   4862.000,   3117.000,   1785.124,
-     -2.565,  -1209.999,  -2439.000,  -3370.000,  -4600.000,  -5452.000,  -6762.000,  -7653.000,  -8789.000,  -9390.000,      0.0  ,
-   4928.000,   6642.000,   2341.000,   3890.000,   -986.836,    962.774,  -3962.552,   -996.000,  -6236.680,  -2987.000,  -8521.000,
-  -5043.000, -10559.000,  -7086.153,      0.0  ,   6763.000,   5906.000,   4192.000,   2962.000,   1286.075,   -375.980,  -1592.540,
-  -2762.000,  -3920.000,  -4596.000,  -5848.000,  -7004.000,  -8117.322,  -8779.000, -10345.000,      0.0  ,   7797.000,   3307.000,
-   4887.000,    486.215,   1854.881,  -3039.615,   -304.124,  -5480.000,  -2317.000,  -7657.000,  -4238.000, -10044.000,  -6262.936,
- -12091.000,      0.0  ,   6968.000,   5142.000,   4099.000,   2350.000,   1006.709,   -748.358,  -1954.292,  -3130.000,  -3999.000,
-  -5005.000,  -6240.000,  -7351.000,  -8375.000,  -9304.000,      0.0  ,   4397.000,   5971.000,   1615.000,   2914.312,  -1679.106,
-    257.009,  -4475.000,  -1799.000,  -6666.000,  -3797.000,  -9078.000,  -5798.000, -11302.000,  -7516.000,      0.0  ,   6194.000,
-   5511.000,   3200.000,   2124.015,    351.141,   -909.141,  -2293.000,  -3269.366,  -4435.000,  -5439.000,  -6587.000,  -7681.000,
-  -8676.551,  -9343.000,      0.0  ,   7061.000,   2846.000,   3870.000,   -314.419,    968.032,  -3459.138,  -1097.000,  -5999.000,
-  -2981.000,  -8265.000,  -5036.000, -10678.000,  -6793.591,      0.0  ,   6353.000,   4675.000,   3200.000,   1490.453,     96.428,
-  -1478.845,  -2403.000,  -3698.000,  -4657.000,  -5670.000,  -6979.000,  -8141.000,  -8823.000,  -9802.000,      0.0  ,   3996.000,
-   5093.000,    890.537,   1880.148,  -2519.266,   -350.000,  -4920.000,  -2500.000,  -7323.000,  -4464.000,  -9841.000,  -6272.000,
- -11861.000,      0.0  ,   5729.000,   4555.000,   2608.000,   1298.111,   -670.811,  -1605.000,  -2690.000,  -4000.000,  -4872.000,
-  -6268.000,  -7374.000,  -8190.000,  -9220.388,      0.0  ,   6343.000,   2026.000,   3080.000,  -1374.345,    273.266,  -3845.000,
-  -1856.000,  -6476.000,  -3736.000,  -9017.000,  -5596.000, -11277.000,      0.0  ,   5701.000,   3816.000,   2385.000,    470.023,
-   -684.729,  -2000.000,  -2906.000,  -4307.000,  -5297.000,  -6706.000,  -7449.000,  -8641.000,  -9184.000,      0.0  ,   3073.000,
-   4120.000,   -106.181,   1192.844,  -3110.000,   -791.000,  -5570.000,  -3148.000,  -7975.000,  -5113.000, -10497.000,  -6655.000,
-      0.0  ,   4965.000,   3524.000,   1399.233,    498.325,  -1166.000,  -2001.000,  -3400.000,  -4448.000,  -5705.000,  -6784.000,
-  -8162.000,  -8497.000,  -9822.000,      0.0  ,   5586.000,    644.621,   2099.246,  -1912.000,    -91.300,  -4660.000,  -2326.075,
-  -7205.000,  -4310.000,  -9562.000,  -6056.000, -11879.000,      0.0  ,   4816.000,   2651.000,   1405.757,   -110.885,  -1059.685,
-  -2710.000,  -3698.000,  -4842.000,  -5892.000,  -7393.000,  -7798.000,  -9020.000,      0.0  ,   2282.000,   3103.000,   -854.082,
-    707.862,  -3802.308,  -1456.000,  -6429.000,  -3691.000,  -8551.000,  -5520.000, -11059.000,      0.0  ,   3894.000,   2674.000,
-   1027.231,   -187.890,  -1738.673,  -2990.000,  -4068.450,  -5156.000,  -6307.000,  -7319.000,  -8475.000,  -9138.000,      0.0  ,
-   4338.000,    373.043,   1813.520,  -2800.000,   -908.000,  -5534.440,  -2924.842,  -7780.000,  -4780.000, -10115.000,  -6582.000,
-      0.0  ,   3762.000,   2010.000,   1070.034,   -556.000,  -2132.000,  -3450.000,  -4578.000,  -5488.000,  -6466.000,  -7578.000,
-  -8601.000,      0.0  ,   5330.000,   1340.000,   2866.000,  -1482.692,     31.187,  -4562.000,  -2335.000,  -7060.000,  -4120.000,
-  -9187.000,  -5997.000,      0.0  ,   3000.000,   1992.000,    432.994,  -1012.791,  -2372.000,  -3879.000,  -4707.000,  -5753.000,
-  -6630.000,  -7899.000,  -9434.000,      0.0  ,   2208.000,   3901.000,   -581.556,   1069.517,  -3831.000,  -1379.768,  -6115.560,
-  -3225.158,  -8466.000,  -5359.000, -11344.000,      0.0  ,   3029.000,   1311.151,      2.663,  -1502.409,  -2978.000,  -3730.000,
-  -4865.000,  -5947.000,  -7322.000,  -8782.000,      0.0  ,   4865.000,    349.000,   2120.353,  -2809.357,   -506.486,  -5300.000,
-  -2300.000,  -7792.000,  -4789.000, -10351.000,      0.0  ,   2500.000,   1009.267,   -532.448,  -1970.508,  -2850.000,  -3950.000,
-  -5176.558,  -6698.000,  -8034.000,      0.0  ,   1270.000,   3140.000,  -2000.000,    616.859,  -4442.000,  -1470.000,  -7000.000,
-  -4088.000,  -9630.000,  -6140.000,      0.0  ,   2045.226,    313.689,  -1018.553,  -1830.000,  -3180.000,  -4493.000,  -5881.000,
-  -7315.000,  -8011.000,      0.0  ,   4174.000,  -1046.208,   1459.689,  -3516.341,   -710.000,  -6120.000,  -3372.000,  -8947.000,
-  -5732.000,      0.0  ,   1140.506,    -56.639,  -1068.648,  -2340.308,  -3636.000,  -5153.000,  -6503.000,  -7490.000,  -8464.000,
-      0.0  ,     96.600,   2246.791,  -2492.034,    -40.000,  -5283.000,  -2713.000,  -8180.501,  -5156.000,  -9955.000,      0.0  ,
-   2000.000,   1119.983,   -226.800,  -1510.000,  -2805.000,  -4490.000,  -5850.000,  -6795.000,  -7925.000,      0.0  ,   1157.515,
-   3209.016,  -1505.695,    686.016,  -4378.000,  -2045.000,  -7357.000,  -4569.000,  -9492.000,  -6154.000,      0.0  ,   2154.634,
-    718.919,   -599.624,  -2180.503,  -3580.000,  -5174.000,  -6178.000,  -7194.000,  -7797.000,      0.0  ,   4102.000,   -325.310,
-   1372.475,  -3460.000,  -1410.000,  -6562.000,  -4022.000,  -8764.701,  -5615.000,      0.0  ,   2990.977,   1702.954,    452.265,
-  -1445.071,  -2883.483,  -4347.812,  -5606.000,  -6555.000,  -7150.000,      0.0  ,    657.634,   2244.118,  -2456.040,   -810.554,
-  -5893.024,  -3347.000,  -7972.000,  -5016.000, -10080.000,      0.0  ,   2660.000,   1262.699,   -482.975,  -1902.874,  -3841.604,
-  -4879.000,  -5848.000,  -6566.000,  -7872.000,      0.0  ,   1818.000,   2946.154,  -1364.606,    -49.571,  -5151.830,  -2822.000,
-  -7214.000,  -4442.000,  -9379.647,      0.0  ,   2123.955,    491.836,   -974.718,  -3253.361,  -4233.402,  -5062.066,  -6026.000,
-  -7202.000,  -7603.000,      0.0  ,   3940.000,   -347.453,    763.718,  -4449.187,  -2330.553,  -6478.024,  -3822.000,  -8596.000,
-  -5481.000,      0.0  ,   3310.000,   1531.220,    -51.085,  -2708.389,  -3531.022,  -4537.266,  -5246.000,  -6517.000,  -7007.000,
-      0.0  ,   1307.213,   1533.536,  -3757.508,  -1846.582,  -5713.784,  -3317.000,  -7756.000,  -4932.000,      0.0  ,   4815.000,
-   1422.674,  -2398.235,  -2909.065,  -3910.070,  -4611.793,  -5712.441,  -6397.000,  -7794.000,      0.0  ,   3666.000,   5001.007,
-  -2879.108,  -1401.302,  -4984.842,  -2839.872,  -6988.638,  -4324.000,  -9043.000,      0.0  ,   3981.507,    644.184,  -1893.305,
-  -3486.479,  -3929.000,  -5159.346,  -5615.000,  -7103.000,      0.0  ,   5488.776,     63.514,   1162.083,  -3981.123,  -2373.963,
-  -6258.208,  -3771.000,  -8207.000,  -5378.000,      0.0  ,   1372.402,    578.709,   -786.122,  -2891.919,  -4605.233,  -4997.152,
-  -6291.495,  -6716.000,      0.0  ,    573.756,   2254.017,  -1753.912,     42.624,  -5128.888,  -3342.670,  -7477.985,  -4755.000,
-      0.0  ,   1980.000,   1427.341,    -73.242,   -882.315,  -2148.483,  -3885.263,  -5801.196,  -5950.000,  -7658.000,      0.0  ,
-   1024.161,   3272.073,  -1090.279,    940.937,  -3361.263,  -1058.551,  -6335.957,  -4246.000,  -8652.000,      0.0  ,   2252.109,
-    720.384,    -81.925,  -1487.441,  -2215.247,  -3489.970,  -4914.342,  -6866.055,      0.0  ,   4000.000,   -469.139,   2003.351,
-  -2729.016,   -307.886,  -4846.438,  -2170.096,  -7506.616,      0.0  ,   1438.000,    740.598,   -653.813,  -1573.813,  -2819.321,
-  -3477.726,  -4864.635,      0.0  ,    264.838,   2883.107,  -1841.573,    409.278,  -4192.744,  -1530.164,  -6278.420,  -3241.000,
-      0.0  ,   1696.853,    217.958,   -771.225,  -2176.092,  -2902.847,  -4060.470,  -4690.142,      0.0  ,   3649.000,   -865.199,
-   1209.367,  -3481.399,   -913.815,  -5722.509,  -2641.000,      0.0  ,   2501.000,   1127.000,    314.745,  -1553.717,  -2417.928,
-  -3439.301,  -4180.000,      0.0  ,   4433.000,     24.698,   2032.647,  -2298.025,   -582.444,  -4910.000,  -2183.000,      0.0  ,
-   3307.000,   1918.000,   1149.064,   -585.807,  -1554.778,  -2951.527,  -3501.679,      0.0  ,    796.000,   2825.694,  -1403.231,
-    232.115,  -3870.920,  -1839.965,      0.0  ,   2639.000,   1865.271,    357.589,   -671.482,  -2024.817,  -3045.237,  -4205.993,
-      0.0  ,   1441.000,   3670.895,   -640.210,   1117.017,  -2833.669,  -1310.611,  -5393.000,      0.0  ,   3329.000,   2480.093,
-   1326.166,     44.824,  -1019.327,  -2186.140,  -3556.622,      0.0  ,   2199.000,   4340.000,     45.900,   2127.045,  -2147.646,
-   -306.848,  -4484.000,  -2373.000,      0.0  ,   3358.000,   1760.000,   1095.000,   -310.431,  -1311.112,  -2562.287,  -3625.437,
-      0.0  ,   5054.000,    987.038,   2700.000,  -1309.668,    563.712,  -3619.039,  -1707.439,      0.0  ,   3900.000,   2486.000,
-   2100.000,    389.515,   -382.155,  -1810.827,  -2818.000,  -4007.000,      0.0  ,   5553.000,   1556.000,   3700.000,   -494.958,
-   1337.103,  -2750.000,  -1007.000,  -5040.000,      0.0  ,   3209.000,   2769.000,   1245.117,    570.111,  -1028.513,  -2100.723,
-  -3246.000,  -4031.000,      0.0  ,   1982.000,   4494.000,    273.088,   2195.269,  -1809.846,   -387.618,  -4182.000,  -2279.000,
-      0.0  ,   3351.000,   1926.014,   1410.000,   -123.716,  -1141.661,  -2559.000,  -3318.000,  -4647.000,      0.0  ,   5093.000,
-    964.000,   2900.000,   -929.469,    476.585,  -3280.000,  -1710.000,  -5519.000,      0.0  ,   2566.000,   2250.000,    518.565,
-   -220.318,  -1459.627,  -2720.000,  -3946.000,  -4604.000,      0.0  ,   1626.000,   3460.000,   -147.065,   1292.041,  -2258.350,
-   -967.319,  -4890.000,  -2929.000,      0.0  ,   2648.000,   1263.457,    721.796,   -802.912,  -1800.000,  -3177.000,  -3928.000,
-      0.0  ,   4093.000,    388.346,   2199.599,  -1378.952,   -215.380,  -3940.000,  -2371.000,  -6172.000,      0.0  ,   1941.000,
-   1305.000,     20.815,   -767.357,  -2400.000,  -3254.000,  -4607.000,      0.0  ,   1201.000,   2700.000,   -750.963,    664.820,
-  -3000.000,  -1526.000,  -5598.000,  -3476.000,      0.0  ,   2120.000,    581.556,     -8.908,  -1508.387,  -2254.000,  -3921.000,
-  -4545.000,      0.0  ,   3402.000,    -76.177,   1428.055,  -2255.643,   -766.161,  -4637.000,  -2895.000,      0.0  ,   1204.663,
-    894.059,   -810.213,  -1568.000,  -3054.000,  -3780.000,  -5255.000,      0.0  ,    400.534,   2376.136,  -1350.000,   -122.930,
-  -3880.000,  -2158.000,  -6195.000,      0.0  ,   1848.000,   1620.000,     44.970,   -646.000,  -2476.000,  -2952.000,  -4644.000,
-      0.0  ,   3170.000,   -687.000,    840.000,  -3055.000,  -1608.000,  -5332.000,      0.0  ,   2359.000,    900.871,    124.000,
-  -1451.000,  -2440.000,  -3705.000,  -4491.000,      0.0  ,     37.407,   1779.692,  -2100.000,   -801.000,  -4633.000,  -2799.000,
-      0.0  ,   1420.000,   1093.000,   -375.892,  -1474.438,  -3123.000,  -3765.000,  -5030.000,      0.0  ,    528.000,   2500.000,
-  -1260.000,    477.090,  -3884.000,  -2176.000,  -5928.000,      0.0  ,   1633.000,    287.661,   -333.741,  -1960.000,  -3138.000,
-  -4294.000,  -5049.000,      0.0  ,   3059.000,   -651.886,   1088.200,  -2680.000,  -1140.000,  -5252.000,  -3334.000,      0.0  ,
-    720.000,    289.620,  -1043.022,  -2009.468,  -3295.000,  -4399.000,  -5502.000,      0.0  ,   -141.000,   1700.000,  -2129.614,
-   -207.836,  -4180.000,  -2251.000,  -6456.000,      0.0  ,    820.000,   -406.139,  -1227.835,  -2564.000,  -3229.000,  -4459.000,
-      0.0  ,  -1263.000,    209.000,  -3430.000,  -1570.000,  -5468.000,  -3458.000,      0.0  ,     80.000,   -486.000,  -1832.000,
-  -2457.000,  -3813.000,  -4593.000,      0.0  ,    940.000,  -2735.000,   -802.000,  -4651.000,  -2802.000,  -6863.000,      0.0  ,
-  -1116.000,  -1687.000,  -3125.000,  -3812.000,  -5218.000,      0.0  ,  -2023.000,   -211.000,  -3945.000,  -2165.000,  -6084.000,
-      0.0  ,  -1068.000,  -2364.000,  -3014.000,  -4502.000,  -5183.000,      0.0  ,  -3255.000,  -1352.000,  -5408.000,  -3426.000,
-      0.0  ,  -2242.000,  -3849.000,  -4474.000,  -6116.000,      0.0  ,  -4733.000,  -2825.000,  -7357.000,      0.0  ,  -3758.000,
-  -5358.000,  -5990.000,      0.0  ,  -6204.000,  -4391.000,      0.0  ,  -4649.000,  -5624.000,      0.0  ,  -3635.000,      0.0  ,
-  -4517.000,      0.0  ,  -6675.000,      0.0  ,      0.0  
-};
-
-// Reduced Table of A for shorter index search.
-//         The index in this table coincide with A-1
-//         For each A value shortTable[A-1] has the index of 
-//         the 1st occurrence in the indexArray[][]
-G4int G4NucleiPropertiesTable::shortTable[G4NucleiPropertiesTable::MaxA+1]=
-{
-    0,    2,    3,    5,    8,   12,   16,   20,   25,   30, 
-   36,   41,   47,   52,   58,   63,   69,   75,   82,   89, 
-   96,  104,  113,  121,  130,  138,  147,  155,  164,  173, 
-  182,  191,  201,  210,  220,  230,  240,  250,  260,  270, 
-  280,  290,  301,  311,  322,  334,  346,  357,  369,  381, 
-  393,  405,  417,  429,  441,  453,  465,  477,  489,  501, 
-  513,  525,  536,  547,  557,  568,  578,  589,  599,  610, 
-  620,  631,  642,  653,  664,  675,  686,  698,  710,  722, 
-  734,  746,  758,  770,  782,  794,  806,  818,  830,  843, 
-  855,  868,  881,  893,  906,  918,  931,  944,  957,  970, 
-  984,  998, 1012, 1026, 1040, 1053, 1067, 1080, 1094, 1107, 
- 1121, 1134, 1148, 1162, 1176, 1190, 1203, 1217, 1231, 1245, 
- 1259, 1274, 1288, 1302, 1315, 1328, 1342, 1356, 1370, 1384, 
- 1399, 1413, 1428, 1443, 1458, 1472, 1487, 1502, 1517, 1532, 
- 1547, 1562, 1578, 1593, 1609, 1624, 1640, 1656, 1672, 1688, 
- 1705, 1722, 1738, 1754, 1770, 1786, 1802, 1818, 1834, 1850, 
- 1866, 1882, 1898, 1914, 1929, 1945, 1960, 1975, 1990, 2005, 
- 2019, 2034, 2048, 2062, 2075, 2089, 2102, 2116, 2129, 2142, 
- 2154, 2167, 2179, 2191, 2203, 2215, 2227, 2238, 2249, 2259, 
- 2270, 2280, 2290, 2300, 2310, 2320, 2331, 2341, 2351, 2361, 
- 2371, 2381, 2391, 2401, 2411, 2421, 2430, 2440, 2450, 2459, 
- 2469, 2478, 2487, 2497, 2507, 2516, 2525, 2533, 2542, 2550, 
- 2558, 2566, 2574, 2582, 2589, 2597, 2605, 2613, 2622, 2630, 
- 2638, 2647, 2656, 2665, 2674, 2683, 2692, 2701, 2710, 2718, 
- 2727, 2735, 2744, 2752, 2760, 2768, 2776, 2784, 2791, 2799, 
- 2806, 2814, 2822, 2830, 2838, 2846, 2854, 2861, 2868, 2875, 
- 2882, 2888, 2894, 2900, 2905, 2910, 2914, 2918, 2921, 2924, 
- 2926, 2928, 2930, 2931
-};
-
Index: unk/source/processes/biasing/include/G4GCellFinder.hh
===================================================================
--- /trunk/source/processes/biasing/include/G4GCellFinder.hh	(revision 1197)
+++ 	(revision )
@@ -1,73 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4GCellFinder.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $
-// GEANT4 tag $Name:  $
-//
-// ----------------------------------------------------------------------
-// Class G4ParallelGCellFinder
-//
-// Class description:
-//
-// Finds a G4GeometryCell in the mass geometry.
-
-// Author: Michael Dressel (Michael.Dressel@cern.ch)
-// ----------------------------------------------------------------------
-#ifndef G4GCellFinder_hh
-#define G4GCellFinder_hh G4GCellFinder_hh
-
-class G4Navigator;
-class G4TransportationManager;
-class G4PathFinder;
-class G4VTouchable;
-class G4VPhysicalVolume;
-
-
-#include "G4Types.hh"
-#include "G4VGCellFinder.hh"
-
-class  G4GCellFinder : public G4VGCellFinder 
-{
-
-public:  // with description
-
-  //  G4GCellFinder(G4VPhysicalVolume &worldvolume);
-  G4GCellFinder();
-  virtual  ~G4GCellFinder();
-
-  virtual G4GeometryCell 
-  GetPreGeometryCell(const G4Step &aStep) const;
-  virtual G4GeometryCell 
-  GetPostGeometryCell(const G4Step &aStep) const;
-
-private:
-
-//   G4Navigator*         fGhostNavigator;
-//   G4TouchableHandle    fGhostTouchable;
-
-};
-
-#endif
Index: unk/source/processes/biasing/src/G4GCellFinder.cc
===================================================================
--- /trunk/source/processes/biasing/src/G4GCellFinder.cc	(revision 1197)
+++ 	(revision )
@@ -1,67 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4GCellFinder.cc,v 1.2 2007/06/01 09:16:33 ahoward Exp $
-// GEANT4 tag $Name:  $
-//
-// ----------------------------------------------------------------------
-// GEANT 4 class source file
-//
-// G4GCellFinder.cc
-//
-// ----------------------------------------------------------------------
-
-#include "G4GCellFinder.hh"
-#include "G4TouchableHandle.hh"
-#include "G4Step.hh"
-
-
-G4GCellFinder::G4GCellFinder()
-{
-
-}
-
-G4GCellFinder::~G4GCellFinder()
-{
-}
-
-G4GeometryCell
-G4GCellFinder::GetPreGeometryCell(const G4Step &aStep) const
-{
-  const G4TouchableHandle& th =
-    aStep.GetPreStepPoint()->GetTouchableHandle();
-  G4GeometryCell g(*th->GetVolume(), th->GetReplicaNumber()); 
-  return g;
-}
-
-G4GeometryCell
-G4GCellFinder::GetPostGeometryCell(const G4Step &aStep) const
-{
-  const G4TouchableHandle& th =
-    aStep.GetPostStepPoint()->GetTouchableHandle();
-  G4GeometryCell g(*th->GetVolume(), th->GetReplicaNumber());    
-  return g;
-}
Index: unk/source/processes/cuts/include/G4RToEConvForAntiNeutron.hh
===================================================================
--- /trunk/source/processes/cuts/include/G4RToEConvForAntiNeutron.hh	(revision 1197)
+++ 	(revision )
@@ -1,83 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4RToEConvForAntiNeutron.hh,v 1.2 2006/06/29 19:29:52 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02 $
-//
-//
-// ------------------------------------------------------------
-//      GEANT 4 class header file
-//
-//
-// Class Description
-//  This class is a Range to Energy Converter for anti Neutron.
-//
-// ------------------------------------------------------------
-//   First Implementation          5 Oct. 2002  H.Kurahige
-// ------------------------------------------------------------
-
-#ifndef G4RToEConvForAntiNeutron_h
-#define G4RToEConvForAntiNeutron_h 1
-
-#include "globals.hh"
-#include "G4ios.hh"
-#include <vector>
-
-#include "G4VRangeToEnergyConverter.hh"
-
-
-class G4RToEConvForAntiNeutron : public G4VRangeToEnergyConverter
-{
-  public: 
-  //  constructor
-  G4RToEConvForAntiNeutron();
-
-  public:
-  //  destructor
-  virtual ~G4RToEConvForAntiNeutron();
-
-
- // calculate energy cut from given range cut for the material
-  virtual G4double Convert(G4double rangeCut, const G4Material* material);
-
-};
-
-inline
-  G4double G4RToEConvForAntiNeutron::Convert(G4double , const G4Material* )
-{
-  // reutrn lowest energy
-  return LowestEnergy;
-}
-#endif
-
-
-
-
-
-
-
-
-
Index: unk/source/processes/cuts/include/G4RToEConvForAntiProton.hh
===================================================================
--- /trunk/source/processes/cuts/include/G4RToEConvForAntiProton.hh	(revision 1197)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4RToEConvForAntiProton.hh,v 1.2 2006/06/29 19:29:54 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02 $
-//
-//
-// ------------------------------------------------------------
-//      GEANT 4 class header file
-//
-//
-// Class Description
-//  This class is a Range to Energy Converter for anti proton.
-//
-// ------------------------------------------------------------
-//   First Implementation          5 Oct. 2002  H.Kurahige
-// ------------------------------------------------------------
-
-#ifndef G4RToEConvForAntiProton_h
-#define G4RToEConvForAntiProton_h 1
-
-#include "globals.hh"
-#include "G4ios.hh"
-#include <vector>
-
-#include "G4VRangeToEnergyConverter.hh"
-
-
-class G4RToEConvForAntiProton : public G4VRangeToEnergyConverter
-{
-  public: 
-  //  constructor
-  G4RToEConvForAntiProton();
-
-  public:
-  //  destructor
-  virtual ~G4RToEConvForAntiProton();
-
-
-};
-
-
-#endif
-
-
-
-
-
-
-
-
-
Index: unk/source/processes/cuts/include/G4RToEConvForNeutron.hh
===================================================================
--- /trunk/source/processes/cuts/include/G4RToEConvForNeutron.hh	(revision 1197)
+++ 	(revision )
@@ -1,82 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4RToEConvForNeutron.hh,v 1.2 2006/06/29 19:30:00 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02 $
-//
-//
-// ------------------------------------------------------------
-//      GEANT 4 class header file
-//
-//
-// Class Description
-//  This class is a Range to Energy Converter for Neutron.
-//
-// ------------------------------------------------------------
-//   First Implementation          5 Oct. 2002  H.Kurahige
-// ------------------------------------------------------------
-
-#ifndef G4RToEConvForNeutron_h
-#define G4RToEConvForNeutron_h 1
-
-#include "globals.hh"
-#include "G4ios.hh"
-#include <vector>
-
-#include "G4VRangeToEnergyConverter.hh"
-
-
-class G4RToEConvForNeutron : public G4VRangeToEnergyConverter
-{
-  public: 
-  //  constructor
-  G4RToEConvForNeutron();
-
-  public:
-  //  destructor
-  virtual ~G4RToEConvForNeutron();
-
- // calculate energy cut from given range cut for the material
-  virtual G4double Convert(G4double rangeCut, const G4Material* material);
-
-};
-
-inline
-  G4double G4RToEConvForNeutron::Convert(G4double , const G4Material* )
-{
-  // reutrn lowest energy
-  return LowestEnergy;
-}
-#endif
-
-
-
-
-
-
-
-
-
Index: unk/source/processes/cuts/src/G4RToEConvForAntiNeutron.cc
===================================================================
--- /trunk/source/processes/cuts/src/G4RToEConvForAntiNeutron.cc	(revision 1197)
+++ 	(revision )
@@ -1,59 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4RToEConvForAntiNeutron.cc,v 1.3 2006/06/29 19:30:18 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02 $
-//
-//
-// --------------------------------------------------------------
-//      GEANT 4 class implementation file/  History:
-//    5 Oct. 2002, H.Kuirashige : Structure created based on object model
-// --------------------------------------------------------------
-
-#include "G4RToEConvForAntiNeutron.hh"
-#include "G4ParticleTable.hh"
-#include "G4Material.hh"
-#include "G4PhysicsLogVector.hh"
-
-#include "G4ios.hh"
-
-G4RToEConvForAntiNeutron::G4RToEConvForAntiNeutron() : G4VRangeToEnergyConverter()
-{    
-  theParticle =  G4ParticleTable::GetParticleTable()->FindParticle("anti_neutron");
-  if (theParticle ==0) {
-#ifdef G4VERBOSE
-    if (GetVerboseLevel()>0) {
-      G4cout << " G4RToEConvForAntiNeutron::G4RToEConvForAntiNeutron() ";
-      G4cout << " Antineutron is not defined !!" << G4endl;
-    }
-#endif
-  } 
-}
-
-G4RToEConvForAntiNeutron::~G4RToEConvForAntiNeutron()
-{ 
-}
-
Index: unk/source/processes/cuts/src/G4RToEConvForAntiProton.cc
===================================================================
--- /trunk/source/processes/cuts/src/G4RToEConvForAntiProton.cc	(revision 1197)
+++ 	(revision )
@@ -1,59 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4RToEConvForAntiProton.cc,v 1.3 2006/06/29 19:30:20 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02 $
-//
-//
-// --------------------------------------------------------------
-//      GEANT 4 class implementation file/  History:
-//    5 Oct. 2002, H.Kuirashige : Structure created based on object model
-// --------------------------------------------------------------
-
-#include "G4RToEConvForAntiProton.hh"
-#include "G4ParticleTable.hh"
-#include "G4Material.hh"
-#include "G4PhysicsLogVector.hh"
-
-#include "G4ios.hh"
-
-G4RToEConvForAntiProton::G4RToEConvForAntiProton() : G4VRangeToEnergyConverter()
-{    
-  theParticle =  G4ParticleTable::GetParticleTable()->FindParticle("anti_proton");
-  if (theParticle ==0) {
-#ifdef G4VERBOSE
-    if (GetVerboseLevel()>0) {
-      G4cout << " G4RToEConvForAntiProton::G4RToEConvForAntiProton() ";
-      G4cout << " AntiProton is not defined !!" << G4endl;
-    }
-#endif
-  } 
-}
-
-G4RToEConvForAntiProton::~G4RToEConvForAntiProton()
-{ 
-}
-
Index: unk/source/processes/cuts/src/G4RToEConvForNeutron.cc
===================================================================
--- /trunk/source/processes/cuts/src/G4RToEConvForNeutron.cc	(revision 1197)
+++ 	(revision )
@@ -1,59 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4RToEConvForNeutron.cc,v 1.3 2006/06/29 19:30:26 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02 $
-//
-//
-// --------------------------------------------------------------
-//      GEANT 4 class implementation file/  History:
-//    5 Oct. 2002, H.Kuirashige : Structure created based on object model
-// --------------------------------------------------------------
-
-#include "G4RToEConvForNeutron.hh"
-#include "G4ParticleTable.hh"
-#include "G4Material.hh"
-#include "G4PhysicsLogVector.hh"
-
-#include "G4ios.hh"
-
-G4RToEConvForNeutron::G4RToEConvForNeutron() : G4VRangeToEnergyConverter()
-{    
-  theParticle =  G4ParticleTable::GetParticleTable()->FindParticle("neutron");
-  if (theParticle ==0) {
-#ifdef G4VERBOSE
-    if (GetVerboseLevel()>0) {
-      G4cout << " G4RToEConvForNeutron::G4RToEConvForNeutron() ";
-      G4cout << " Neutron is not defined !!" << G4endl;
-    }
-#endif
-  } 
-}
-
-G4RToEConvForNeutron::~G4RToEConvForNeutron()
-{ 
-}
-
Index: unk/source/processes/electromagnetic/adjoint/include/G4VAdjointInverseScattering.hh
===================================================================
--- /trunk/source/processes/electromagnetic/adjoint/include/G4VAdjointInverseScattering.hh	(revision 1197)
+++ 	(revision )
@@ -1,114 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-/////////////////////////////////////////////////////////////////////////////////
-//      Module:		G4VAdjointInverseScattering.hh
-//	Author:       	L. Desorgher
-//	Date:		1st April 2007
-// 	Organisation: 	SpaceIT GmbH
-// 	Customer:     	ESA/ESTEC
-/////////////////////////////////////////////////////////////////////////////////
-//
-// CHANGE HISTORY
-// --------------
-//      ChangeHistory: 
-//	 	1st April 2007 creation by L. Desorgher  		
-//
-//-------------------------------------------------------------
-//	Documentation:
-//		Abastract class for adjoint/reverse discrete scattering
-//
-
-#ifndef G4VAdjointInverseScattering_h
-#define G4VAdjointInverseScattering_h 1
-
-#include "globals.hh"
-#include "G4DynamicParticle.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4MaterialCutsCouple.hh"
-#include "G4Material.hh"
-#include "G4Element.hh"
-#include "G4ElementVector.hh"
-#include "Randomize.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4VDiscreteProcess.hh"
-
-
-
-class G4PhysicsTable;
-class G4Region;
-class G4VParticleChange;
-class G4ParticleChange;
-class G4Track;
-class G4VEmAdjointModel;
-class G4AdjointCSMatrix;
-class G4AdjointCSManager;
-class G4Material;
-class G4MaterialCutsCouple;
-
-
-class G4VAdjointInverseScattering : public G4VDiscreteProcess
-{
-
-public:
-
-  G4VAdjointInverseScattering(G4String process_name,G4bool whichScatCase);
-
-  virtual ~G4VAdjointInverseScattering();
-  
-public:
-  void PreparePhysicsTable(const G4ParticleDefinition&);
-  
-  void BuildPhysicsTable(const G4ParticleDefinition&);
-  
-  virtual G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&); 
- 
-protected :// with description  
-	
-   virtual G4double GetMeanFreePath(const G4Track& track,
-                                         G4double previousStepSize,
-                                         G4ForceCondition* condition);
-
-protected:
-   G4VEmAdjointModel* theAdjointEMModel;	
-   G4ParticleChange* fParticleChange;
-   G4AdjointCSManager* theAdjointCSManager;
-  
-
-private:
-  G4Material*  currentMaterial;
-  G4MaterialCutsCouple* currentCouple;
-  size_t   currentMaterialIndex; 
-  G4double currentTcut;
-  G4double lastCS;
-  std::vector<double> CS_Vs_Element;
-  G4bool IsScatProjToProjCase;
-
- 
-
-};  
-
-#endif
-
Index: unk/source/processes/electromagnetic/adjoint/src/G4VAdjointInverseScattering.cc
===================================================================
--- /trunk/source/processes/electromagnetic/adjoint/src/G4VAdjointInverseScattering.cc	(revision 1197)
+++ 	(revision )
@@ -1,103 +1,0 @@
-//
-// ********************************************************************
-// * 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 "G4VAdjointInverseScattering.hh"
-#include "G4AdjointCSManager.hh"
-#include "G4AdjointCSMatrix.hh"
-#include "G4AdjointInterpolator.hh"
-#include "G4AdjointCSMatrix.hh"
-#include "G4VEmAdjointModel.hh"
-#include "G4ElementTable.hh"
-#include "G4Element.hh"
-#include "G4Material.hh"
-#include "G4MaterialCutsCouple.hh"
-#include "G4AdjointCSManager.hh"
-#include "G4ParticleChange.hh"
-#include "G4AdjointElectron.hh"
-
-
-G4VAdjointInverseScattering::
-	G4VAdjointInverseScattering(G4String process_name, G4bool whichScatCase):
-			G4VDiscreteProcess(process_name)
-{theAdjointCSManager = G4AdjointCSManager::GetAdjointCSManager();
- IsScatProjToProjCase=whichScatCase;
- /*theAdjointEMModel=aModel;
- IsScatProjToProjCase=whichScatCase;*/
- fParticleChange=new G4ParticleChange();
- 
-}
-//////////////////////////////////////////////////////////////////////////////
-//
-G4VAdjointInverseScattering::
-	~G4VAdjointInverseScattering()
-{;
-}			
-//////////////////////////////////////////////////////////////////////////////
-//
-void G4VAdjointInverseScattering::PreparePhysicsTable(const G4ParticleDefinition&)
-{;
-}
-//////////////////////////////////////////////////////////////////////////////
-//
-void G4VAdjointInverseScattering::BuildPhysicsTable(const G4ParticleDefinition&)
-{
-
- theAdjointCSManager->BuildCrossSectionMatrices(); //do not worry it will be done just once
- theAdjointCSManager->BuildTotalSigmaTables();
-
-}
-//////////////////////////////////////////////////////////////////////////////
-//
-G4VParticleChange* G4VAdjointInverseScattering::PostStepDoIt(const G4Track& track, const G4Step& )
-{ 
-  fParticleChange->Initialize(track);
- 
-  theAdjointEMModel->SampleSecondaries(track,
-                                       IsScatProjToProjCase,
-					fParticleChange);
-  
-  ClearNumberOfInteractionLengthLeft();
-  return fParticleChange;
-  			
-   
-  
-}
-//////////////////////////////////////////////////////////////////////////////
-//
-G4double G4VAdjointInverseScattering::GetMeanFreePath(const G4Track& track,
-                                         					     G4double ,
-                                         					     G4ForceCondition* condition)
-{ *condition = NotForced;
-  G4double preStepKinEnergy = track.GetKineticEnergy();
-  
-  G4double Sigma =
-  		theAdjointEMModel->AdjointCrossSection(track.GetMaterialCutsCouple(),preStepKinEnergy,IsScatProjToProjCase);
-  		
-
-  G4double mean_free_path = 1./Sigma;
-  //G4cout<<"mean_free_path [mm] "<<mean_free_path/mm<<std::endl;
-  return mean_free_path;
-}					 
-				 
Index: unk/source/processes/electromagnetic/lowenergy/include/G4AtomicShell.hh
===================================================================
--- /trunk/source/processes/electromagnetic/lowenergy/include/G4AtomicShell.hh	(revision 1197)
+++ 	(revision )
@@ -1,78 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4AtomicShell.hh,v 1.2 ????
-// GEANT4 tag $Name: geant4-09-03-beta-cand-00 $
-//
-// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
-//          Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
-//
-// History:
-// -----------
-//  
-//  16 Sept 2001 Modofied according to a design iteration in the 
-//              LowEnergy category
-//
-// -------------------------------------------------------------------
-
-// Class description:
-// Low Energy Electromagnetic Physics, a data container
-// Further documentation available from http://www.ge.infn.it/geant4/lowE
-
-// -------------------------------------------------------------------
-
-
-#ifndef G4AtomicShell_h 
-#define G4AtomicShell_h 1
-#include "globals.hh"
-
-class G4AtomicShell {
-
-public:
-
-  // The data and the methods of this class are relative to
-  // a given shell
- 
-  G4AtomicShell(G4int,G4double);
- 
-  ~G4AtomicShell();
-
-  // Returns the binding energy of the shell
-  G4double BindingEnergy() const; 
-
-  // Returns the id of the shell
-  G4int ShellId() const;
-
-private:
-  
-  G4int identifier;
-  G4double bindingEnergy;
-
-};
-
-#endif
-
-
Index: unk/source/processes/electromagnetic/lowenergy/include/G4IonParametrisedLossTable.hh
===================================================================
--- /trunk/source/processes/electromagnetic/lowenergy/include/G4IonParametrisedLossTable.hh	(revision 1197)
+++ 	(revision )
@@ -1,273 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-//
-// ===========================================================================
-// GEANT4 class header file
-//
-// Class:                G4IonParametrisedLossTable
-// Helper classes:       G4IonLossTableHandle
-//                       G4DummyScalingAlgorithm
-// 
-// Author:               Anton Lechner (Anton.Lechner@cern.ch)
-//
-// First implementation: 10. 11. 2008
-//
-// Modifications:
-//
-//
-// Class descriptions:
-//    G4IonParametrisedLossTable: Wrapper class for classes of the material
-//    category, which maintain stopping power vectors for ions. This wrapper
-//    class includes a cache for faster access of stopping powers and builds 
-//    stopping power vectors for compounds using Bragg's additivity rule. 
-//    G4IonLossTableHandle: A handle class for G4IonParametrisedLossTable
-//    G4DummyScalingAlgorithm: A dummy algorithm to scale energies and
-//    stopping powers (may be replaced with an algorithm, which relies on 
-//    dynamic information of the particle: This may be required if stopping
-//    power data is scaled using an effective charge approximation).
-//
-// Comments:
-//
-// =========================================================================== 
-
-
-#ifndef G4IONPARAMETRISEDLOSSTABLE_HH
-#define G4IONPARAMETRISEDLOSSTABLE_HH
-
-#include "globals.hh"
-#include "G4hIonEffChargeSquare.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4Material.hh"
-#include "G4LPhysicsFreeVector.hh"
-#include <vector>
-#include <iomanip>
-#include <map>
-#include <list>
-#include <utility>
-
-
-// #########################################################################
-// # Type definitions for a local cache
-// # 
-// #########################################################################
-
-   typedef std::pair<const G4ParticleDefinition*, const G4Material*> G4CacheKey;
-
-   typedef struct CacheValue{
-      G4double energyScaling;         // Scaling factor for kinetic energy
-      G4PhysicsVector* dedx;          // dEdx vector for current projectile-
-                                      // material combination
-      G4int dEdxIndex;                // dE/dx vector index
-   } G4CacheValue;
-
-
-// #########################################################################
-// # Class G4IonLossTableHandle: Handle for table wrappers (to enable
-// # vectors of table wrappers)   
-// #########################################################################
-
-class G4IonLossTableHandle {
-  
- public:
-   G4IonLossTableHandle() { }
-   virtual ~G4IonLossTableHandle() { }
-
-   virtual G4double GetLowerEnergyEdge(
-              const G4ParticleDefinition*,  // Projectile (ion) 
-              const G4Material*             // Target material 
-	     ) = 0;
-   virtual G4double GetUpperEnergyEdge(
-              const G4ParticleDefinition*,  // Projectile (ion) 
-              const G4Material*             // Target material 
-	     ) = 0; 
-   virtual G4bool IsApplicable(
-              const G4ParticleDefinition*,  // Projectile (ion) 
-              const G4Material*             // Target material 
-             ) = 0; 
-   virtual G4bool IsApplicable(
-              const G4ParticleDefinition*,  // Projectile (ion) 
-              const G4Material*,            // Target material 
-              G4double                      // Kinetic energy of projectile
-             ) = 0; 
-   virtual G4double GetDEDX(
-              const G4ParticleDefinition*,  // Projectile (ion) 
-              const G4Material*,            // Target material 
-              G4double                      // Kinetic energy of projectile
-             ) = 0; 
-   virtual void ClearCache() { }
-};
-
-
-// #########################################################################
-// # Class G4DummyScalingAlgorithm:
-// #########################################################################
-
-class G4DummyScalingAlgorithm {
-
- public:
-  // No scaling for kinetic energy
-  inline G4double ScalingFactorEnergy(
-            const G4ParticleDefinition*)    // Projectile (ion) 
-                { return 1.0; }
-
-  // No scaling for dE/dx
-  inline G4double ScalingFactorDEDX(
-            const G4ParticleDefinition*,    // Projectile (ion) 
-            const G4Material*,              // Target material
-            G4double)                       // Kinetic energy of projectile 
-                { return 1.0; }
-};
-
-
-// #########################################################################
-// # Class G4IonParametrisedLossTable: Wrapper for classes of the material
-// # category, which maintain ion stopping power vectors
-// #########################################################################
-
-template <
-    class LossTabulation,
-    class ScalingAlgorithm = G4DummyScalingAlgorithm
->
-class G4IonParametrisedLossTable : public G4IonLossTableHandle,
-                                   public LossTabulation, 
-                                   public ScalingAlgorithm {
-
- public:
-   G4IonParametrisedLossTable(G4int maxSizeCache = 5,
-                              G4bool splines = true);
-   ~G4IonParametrisedLossTable();
-
-   // Function checking the availability of stopping power values for a 
-   // given ion-target combination and a given kinetic energy 
-   G4bool IsApplicable(
-              const G4ParticleDefinition*,  // Projectile (ion) 
-              const G4Material*,            // Target material 
-              G4double);                    // Kinetic energy of projectile
-
-   // Function checking the availability of stopping power values for a 
-   // given ion-target combination (kinetic energy not considered) 
-   G4bool IsApplicable(
-              const G4ParticleDefinition*,  // Projectile (ion) 
-              const G4Material*);           // Target material             
-
-   // Function returning the stopping power of a given material for a
-   // projectile of specified energy
-   G4double GetDEDX(
-              const G4ParticleDefinition*,  // Projectile (ion) 
-              const G4Material*,            // Target material 
-              G4double);                    // Kinetic energy of projectile
-
-   // Function printing stopping powers for a given ion-material combination
-   // within a specified energy range 
-   void PrintDEDXTable(
-              const G4ParticleDefinition*,  // Projectile (ion) 
-              const G4Material* ,           // Target material
-              G4double,                     // Minimum energy per nucleon
-              G4double,                     // Maximum energy per nucleon
-              G4int,                        // Number of bins
-              G4bool logScaleEnergy = true);// Logarithmic scaling of energy
-
-   // Function returning the lower energy edge of stopping power tables
-   G4double GetLowerEnergyEdge(
-              const G4ParticleDefinition*,  // Projectile (ion) 
-              const G4Material*);           // Target material 
-
-   // Function returning the upper energy edge of stopping power tables 
-   G4double GetUpperEnergyEdge(
-              const G4ParticleDefinition*,  // Projectile (ion) 
-              const G4Material*);           // Target material 
- 
- private: 
-
-   // Function for building stopping power vectors according to Bragg's
-   // additivity rule
-   G4PhysicsVector* BuildStoppingPowerVector(
-              const G4ParticleDefinition*,  // Projectile (ion) 
-              const G4Material*);           // Target material 
-
-   // The assignment operator and the copy constructor are hidden
-   G4IonParametrisedLossTable& operator=(const 
-                                           G4IonParametrisedLossTable &right);
-   G4IonParametrisedLossTable(const G4IonParametrisedLossTable&);
-
-   // ######################################################################
-   // # "Most-recently-used" cache, to provide a faster access to physics 
-   // # vectors
-   // ######################################################################
-
-   // A type definition of cache entry containing a key-value pair
-   typedef struct CacheEntry {
-      G4CacheKey key;
-      G4CacheValue value;
-   } G4CacheEntry;
-
-   // A cache entry list, and a map of pointers to list iterators (for faster
-   // searching)
-   typedef std::list<G4CacheEntry> CacheEntryList;
-   CacheEntryList cacheEntries;
-
-   typedef std::map<G4CacheKey, void*> CacheIterPointerMap;
-   CacheIterPointerMap cacheKeyPointers;  
-
-   // Maximum number of cache entries
-   G4int maxCacheEntries;
-
-   // Function for updating the cache
-   G4CacheValue UpdateCacheValue(
-                const G4ParticleDefinition*,  // Projectile (ion) 
-                const G4Material*);           // Target material
-
-   // Function for retrieving cache values
-   G4CacheValue GetCacheValue(
-                const G4ParticleDefinition*,  // Projectile (ion) 
-                const G4Material*);           // Target material
-
-   // Function for clearing the cache
-   void ClearCache();
-
-   // ######################################################################
-   // # Map of stopping power vectors computed according Bragg rule
-   // #
-   // ######################################################################
-
-   typedef std::map<G4CacheKey, G4LPhysicsFreeVector*> StoppingPowerTable; 
-   StoppingPowerTable s;
-
-   // Flag indicating the usage of splines
-   G4bool useSplines;
-
-   // ######################################################################
-   // # Energy boundaries of physics tables
-   // ######################################################################
-
-   G4double lowerEnergyEdge;
-   G4double upperEnergyEdge;
-};
-
-#include "G4IonParametrisedLossTable.icc"
-
-#endif  // G4IONPARAMETRISEDLOSSTABLE_HH
Index: unk/source/processes/electromagnetic/lowenergy/include/G4OrlicLCrossSection.hh
===================================================================
--- /trunk/source/processes/electromagnetic/lowenergy/include/G4OrlicLCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,78 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4OrlicLCrossSection.hh,v 1.3 2008/06/03 07:29:15 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-00 $
-//
-// Author: Haifa Ben Abdelouahed
-//         
-//
-// History:
-// -----------
-//  23 Apr 2008   H. Ben Abdelouahed   1st implementation
-//  28 Apr 2008   MGP        Major revision according to a design iteration
-//
-// -------------------------------------------------------------------
-
-// Class description:
-// Low Energy Electromagnetic Physics, Cross section, proton ionisation, L shell
-// Further documentation available from http://www.ge.infn.it/geant4/lowE
-
-// -------------------------------------------------------------------
-
-
-#ifndef G4ORLICLCROSSSECTION_HH
-#define G4ORLICLCROSSSECTION_HH 1
-
-#include "globals.hh"
-
-
-class G4OrlicLCrossSection 
-
-{
-public:
-
-  G4OrlicLCrossSection();
-
-  virtual ~G4OrlicLCrossSection();
-
-
-//according to I.ORLIC, C.H.SOW and S.M.TANG,International Journal of PIXE.Vol.4(1997) 217-230	
-		     
-  G4double CalculateL1CrossSection(G4int zTarget, G4double energyIncident);
-
-  G4double CalculateL2CrossSection(G4int zTarget, G4double energyIncident);				    
- 
-  G4double CalculateL3CrossSection(G4int zTarget, G4double energyIncident);
-
-private:
-
-
-  G4OrlicLCrossSection(const G4OrlicLCrossSection&);
-  G4OrlicLCrossSection & operator = (const G4OrlicLCrossSection &right);
-
-};
-
-#endif
Index: unk/source/processes/electromagnetic/lowenergy/include/G4ecpssrCrossSection.hh
===================================================================
--- /trunk/source/processes/electromagnetic/lowenergy/include/G4ecpssrCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,77 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4ecpssrCrossSection.hh,v 1.3 2008/06/03 07:29:15 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-00 $
-//
-// Author: Haifa Ben Abdelouahed
-//         
-//
-// History:
-// -----------
-//  21 Apr 2008   H. Ben Abdelouahed   1st implementation
-//  21 Apr 2008   MGP        Major revision according to a design iteration
-//
-// -------------------------------------------------------------------
-
-// Class description:
-// Low Energy Electromagnetic Physics, Cross section, p ionisation, K shell
-// Further documentation available from http://www.ge.infn.it/geant4/lowE
-
-// -------------------------------------------------------------------
-
-
-#ifndef G4ECPSSRCROSSSECTION_HH
-#define G4ECPSSRCROSSSECTION_HH 1
-
-#include "globals.hh"
-
-
-class G4ecpssrCrossSection 
-
-{
-public:
-
-  G4ecpssrCrossSection();
-
-  virtual ~G4ecpssrCrossSection();
-			     
-  G4double CalculateCrossSection(G4int zTarget,G4int zIncident, G4double energyIncident);//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
-				    
-  G4double CalculateVelocity(G4int zTarget,G4int zIncident, G4double energyIncident); 
-			      
-  G4double  ExpIntFunction(G4int n,G4double x);//Exponential Integral Function
-
-   
-
-private:
-
-
-  G4ecpssrCrossSection(const G4ecpssrCrossSection&);
-  G4ecpssrCrossSection & operator = (const G4ecpssrCrossSection &right);
-
-};
-
-#endif
Index: unk/source/processes/electromagnetic/lowenergy/src/G4AtomicShell.cc
===================================================================
--- /trunk/source/processes/electromagnetic/lowenergy/src/G4AtomicShell.cc	(revision 1197)
+++ 	(revision )
@@ -1,60 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4AtomicShell.cc,v 1.2 ????
-// GEANT4 tag $Name: geant4-09-02 $
-//
-// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
-//          Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
-//
-// History:
-// -----------
-//  16 Sept 2001 EG  Modified according to a design iteration in the 
-//                   LowEnergy category
-//
-// -------------------------------------------------------------------
-
-#include "G4AtomicShell.hh"
-
-G4AtomicShell::G4AtomicShell(G4int id, G4double energy)
-{
-  identifier = id;
-  bindingEnergy = energy;
-} 
-
-G4AtomicShell::~G4AtomicShell()
-{ }
-
-G4double G4AtomicShell::BindingEnergy() const {
-
-  return bindingEnergy;
-}
-
-
-G4int G4AtomicShell::ShellId() const{
-
-  return identifier;
-}
Index: unk/source/processes/electromagnetic/lowenergy/src/G4OrlicLCrossSection.cc
===================================================================
--- /trunk/source/processes/electromagnetic/lowenergy/src/G4OrlicLCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,434 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4OrlicLCrossSection.cc,v 1.5 2008/12/18 13:01:30 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02 $
-//
-// Author: Haifa Ben Abdelouahed
-//         
-//
-// History:
-// -----------
-//  23 Apr 2008   H. Ben Abdelouahed   1st implementation
-//  28 Apr 2008   MGP        Major revision according to a design iteration
-//
-// -------------------------------------------------------------------
-// Class description:
-// Low Energy Electromagnetic Physics, Cross section, proton ionisation, L shell
-// Further documentation available from http://www.ge.infn.it/geant4/lowE
-// -------------------------------------------------------------------
-
-
-#include "globals.hh"
-#include "G4OrlicLCrossSection.hh"
-#include "G4AtomicTransitionManager.hh"
-#include "G4Proton.hh"
-
-
-G4OrlicLCrossSection::G4OrlicLCrossSection()
-{ }
-
-G4OrlicLCrossSection::~G4OrlicLCrossSection()
-{ }
-
-//this L-CrossSection calculation method is done according to 
-//I.ORLIC, C.H.SOW and S.M.TANG,International Journal of PIXE.Vol.4(1997) 217-230	
- 
-
-//*****************************************************************************************************************************************
-
-G4double G4OrlicLCrossSection::CalculateL1CrossSection(G4int zTarget, G4double energyIncident)
-  			       
-{
-
-  G4AtomicTransitionManager*  transitionManager =  G4AtomicTransitionManager::Instance();
-
-  G4double  massIncident; 
-
-  G4Proton* aProtone = G4Proton::Proton();
-    
-   massIncident = aProtone->GetPDGMass(); 
- 
-  G4double l1BindingEnergy = (transitionManager->Shell(zTarget,1)->BindingEnergy())/keV;
- 
-  G4double lamda =  massIncident/electron_mass_c2;
-
-  G4double normalizedEnergy =  (energyIncident/keV)/(lamda*l1BindingEnergy);
-
-  G4double x = std::log(normalizedEnergy);
-
-  G4double a0 = 0.;
-  G4double a1 = 0.;
-  G4double a2 = 0.;
-  G4double a3 = 0.;
-  G4double a4 = 0.;
-  G4double a5 = 0.;
-  G4double a6 = 0.;  
-  G4double a7 = 0.;  
-  G4double a8 = 0.; 
-  G4double a9 = 0.;
-
-                                       
-   if ( zTarget>=14 && zTarget<=40)  
-    {
-      a0=12.5081;
-      a1=0.2177;
-      a2=-0.3758;
-      a3=0.0096;
-      a4=0.0073;
-      a5=0.0022;
-      a6=0.;
-      a7=0.;
-      a8=0.;
-      a9=0.;
-    }
-  else 
-    { 
-       if ( zTarget>=41 &&  zTarget<=50 )
-       { 	  
-      a0=11.274881;
-      a1=-0.187401;
-      a2=-0.943341;
-      a3=-1.47817;
-      a4=-1.282343;
-      a5=-0.386544; 
-      a6=-0.037932;
-      a7=0.;
-      a8=0.;
-      a9=0.;
-	}
-     
-      else  
-	{
-	  if ( zTarget>=51 &&  zTarget<=60 ) 
-	    { 
-	      a0=11.242637;
-	      a1=-0.162515;
-	      a2=1.035774;
-	      a3=3.970908;
-	      a4=3.968233;
-	      a5=1.655714;
-	      a6=0.058885;
-	      a7=-0.155743;
-	      a8=-0.042228;
-	      a9=-0.003371; 
-	    } 
-	
-	  else  
-	    {
-	      if ( zTarget>=61 &&  zTarget<=70 ) 
-		{ 
-		  a0=6.476722;
-		  a1=-25.804787;
-		  a2=-54.061629;
-		  a3=-56.684589;
-		  a4=-33.223367;
-		  a5=-11.034979; 
-		  a6=-2.042851;
-		  a7=-0.194075;
-		  a8=-0.007252;
-		  a9=0.;
-		} 
-	      else  
-		{
-		  if ( zTarget>=71 &&  zTarget<=80 ) 
-		    { 
-		      a0=12.776794;
-		      a1=6.562907;
-		      a2=10.158703;
-		      a3=7.432592;
-		      a4=2.332036;
-		      a5=0.317946; 
-		      a6=0.014479;
-		      a7=0.;
-		      a8=0.;
-		      a9=0.;
-		    } 
-		  else  
-		    {
-		      if ( zTarget>=81 &&  zTarget<=92 ) 
-			{ 
-			  a0=28.243087;
-			  a1=50.199585;
-			  a2=58.281684;
-			  a3=34.130538;
-			  a4=10.268531;
-			  a5=1.525302; 
-			  a6=0.08835;
-			  a7=0.;
-			  a8=0.;
-			  a9=0.;
-			}
-		      else
-			{ 
-			  G4cout << "ERREUR: L1 Cross-Section exist only for ZTarget between 14 and 92!!! " << G4endl;
-			
-			}
-		    }
-		}
-	    }
-	}
-      }
-      
-
-G4double analyticalFunction = a0 + (a1*x)+(a2*x*x)+(a3*std::pow(x,3))+(a4*std::pow(x,4))+(a5*std::pow(x,5))+(a6*std::pow(x,6))+
-	(a7*std::pow(x,7))+(a8*std::pow(x,8))+(a9*std::pow(x,9)); 
-
-
-
-  G4double L1crossSection =  std::exp(analyticalFunction)/(l1BindingEnergy*l1BindingEnergy);  
-
-  return L1crossSection;
-}
-
-//*****************************************************************************************************************************************
-
-
-G4double G4OrlicLCrossSection::CalculateL2CrossSection(G4int zTarget, G4double energyIncident)
-  			       
-{
-
-  G4AtomicTransitionManager*  transitionManager =  G4AtomicTransitionManager::Instance();
-
-  G4double  massIncident; 
-
-
-  G4Proton* aProtone = G4Proton::Proton();
-    
-   massIncident = aProtone->GetPDGMass(); 
- 
- G4double L2crossSection;
-
- if (zTarget<41)
-   { 
-     L2crossSection =0.;
-   }
- else
-   {
-
- G4double l2BindingEnergy = (transitionManager->Shell(zTarget,2)->BindingEnergy())/keV;
- 
-  G4double lamda =  massIncident/electron_mass_c2;
-
-  G4double normalizedEnergy =  (energyIncident/keV)/(lamda*l2BindingEnergy);
-
-  G4double x = std::log(normalizedEnergy);
-
-  G4double a0 = 0.;
-  G4double a1 = 0.;
-  G4double a2 = 0.;
-  G4double a3 = 0.;
-  G4double a4 = 0.;
-  G4double a5 = 0.;
- 
-      if ( zTarget>=41 &&  zTarget<=50 ) 
-	{ 
-      a0=11.194798;
-      a1=0.178807;
-      a2=-0.449865;
-      a3=-0.063528;
-      a4=-0.015364;
-      a5=0.; 
-	}
-     
-      else  
-	{
-	  if ( zTarget>=51 &&  zTarget<=60 ) 
-	    { 
-	      a0=11.241409;
-	      a1=0.149635;
-	      a2=-0.633269;
-	      a3=-0.17834;
-	      a4=-0.034743;
-	      a5=0.006474;
-
-	    } 
-	
-	  else  
-	    {
-	      if ( zTarget>=61 &&  zTarget<=70 ) 
-		{ 
-		  a0=11.247424;
-		  a1=0.203051;
-		  a2=-0.219083;
-		  a3=0.164514;
-		  a4=0.058692;
-		  a5=0.007866; 
-		} 
-	      else  
-		{
-		  if ( zTarget>=71 &&  zTarget<=80 ) 
-		    { 
-		      a0=11.229924;
-		      a1=-0.087241;
-		      a2=-0.753908;
-		      a3=-0.181546;
-		      a4=-0.030406;
-		      a5=0.; 
-		    } 
-		  else  
-		    {
-		      if ( zTarget>=81 &&  zTarget<=92 ) 
-			{ 
-			  a0=11.586671;
-			  a1=0.730838;
-			  a2=-0.056713;
-			  a3=0.053262;
-			  a4=-0.003672;
-			  a5=0.; 
-			}
-		      else
-			{ 
-			  G4cout << "ERREUR: L2 Cross-Section exist only for ZTarget between 14 and 92!!! " << G4endl;
-		       
-			}
-		    }
-		}
-	    }
-	}
-      
-
- G4double analyticalFunction = a0 + (a1*x)+(a2*x*x)+(a3*std::pow(x,3))+(a4*std::pow(x,4))+(a5*std::pow(x,5)); 
-
-
-   L2crossSection =  std::exp(analyticalFunction)/(l2BindingEnergy*l2BindingEnergy); 
-                                                                            
-   } 
-
- return L2crossSection;   
-}
-
-//*****************************************************************************************************************************************
-
-
-G4double G4OrlicLCrossSection::CalculateL3CrossSection(G4int zTarget, G4double energyIncident)
-  			       
-{
-
-  G4AtomicTransitionManager*  transitionManager =  G4AtomicTransitionManager::Instance();
-
-  G4double  massIncident; 
-
-
-  G4Proton* aProtone = G4Proton::Proton();
-    
-  massIncident = aProtone->GetPDGMass(); 
-
- 
- G4double L3crossSection;
-
- if (zTarget<41)
-   { 
-     L3crossSection =0.;
-   }
- else
-   {
-
- G4double l3BindingEnergy = (transitionManager->Shell(zTarget,3)->BindingEnergy())/keV;
- 
- 
-  G4double lamda =  massIncident/electron_mass_c2;
-
-  G4double normalizedEnergy =  (energyIncident/keV)/(lamda*l3BindingEnergy);
-
-  G4double x = std::log(normalizedEnergy);
-
-
-  G4double a0 = 0.;
-  G4double a1 = 0.;
-  G4double a2 = 0.;
-  G4double a3 = 0.;
-  G4double a4 = 0.;
- 
-      if ( zTarget>=41 &&  zTarget<=50 ) 
-	{ 
-      a0=11.91837;
-      a1=0.03064;
-      a2=-0.657644;
-      a3=-0.14532;
-      a4=-0.026059;      
-	}
-     
-      else  
-	{
-	  if ( zTarget>=51 &&  zTarget<=60 ) 
-	    { 
-	      a0=11.909485;
-	      a1=0.15918;
-	      a2=-0.588004;
-	      a3=-0.159466;
-	      a4=-0.033184;	      
-	    } 
-	
-	  else  
-	    {
-	      if ( zTarget>=61 &&  zTarget<=70 ) 
-		{ 
-		  a0=11.878472;
-		  a1=-0.137007;
-		  a2=-0.959475;
-		  a3=-0.316505;
-		  a4=-0.054154;	 
-		} 
-	      else  
-		{
-		  if ( zTarget>=71 &&  zTarget<=80 ) 
-		    { 
-		      a0=11.802538;
-		      a1=-0.371796;
-		      a2=-1.052238;
-		      a3=-0.28766;
-		      a4=-0.042608;	     
-		    } 
-		  else  
-		    {
-		      if ( zTarget>=81 &&  zTarget<=92 ) 
-			{ 
-			  a0=11.423712;
-			  a1=-1.428823;
-			  a2=-1.946979;
-			  a3=-0.585198;
-			  a4=-0.076467;			 
-			}
-		      else
-			{ 
-			  G4cout << "ERREUR: L3 Cross-Section exist only for ZTarget between 14 and 92!!! " << G4endl;
-		       
-			}
-		    }
-		}
-	    }
-	}
-      
-
- G4double analyticalFunction = a0 + (a1*x)+(a2*x*x)+(a3*std::pow(x,3))+(a4*std::pow(x,4)); 
-
-
-   L3crossSection =  std::exp(analyticalFunction)/(l3BindingEnergy*l3BindingEnergy); 
-                                                                            
-   } 
-
- return L3crossSection;   
-}
Index: unk/source/processes/electromagnetic/lowenergy/src/G4ecpssrCrossSection.cc
===================================================================
--- /trunk/source/processes/electromagnetic/lowenergy/src/G4ecpssrCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,303 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4ecpssrCrossSection.cc,v 1.5 2008/12/18 13:01:32 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02 $
-//
-// Author: Haifa Ben Abdelouahed
-//         
-//
-// History:
-// -----------
-//  21 Apr 2008   H. Ben Abdelouahed   1st implementation
-//  21 Apr 2008   MGP        Major revision according to a design iteration
-//
-// -------------------------------------------------------------------
-// Class description:
-// Low Energy Electromagnetic Physics, Cross section, p ionisation, K shell
-// Further documentation available from http://www.ge.infn.it/geant4/lowE
-// -------------------------------------------------------------------
-
-
-#include "globals.hh"
-#include "G4ecpssrCrossSection.hh"
-#include "G4AtomicTransitionManager.hh"
-#include "G4NistManager.hh"
-#include "G4Proton.hh"
-#include "G4Alpha.hh"
-#include <math.h>
-
-G4ecpssrCrossSection::G4ecpssrCrossSection()
-{ }
-
-G4ecpssrCrossSection::~G4ecpssrCrossSection()
-{ }
-
-//---------------------------------this "ExpIntFunction" function allows fast evaluation of the n order exponential integral function En(x)------
-
-G4double G4ecpssrCrossSection::ExpIntFunction(G4int n,G4double x)
-
-{
-  G4int i;
-  G4int ii;
-  G4int nm1;
-  G4double a;
-  G4double b;
-  G4double c;
-  G4double d;
-  G4double del;
-  G4double fact;
-  G4double h;
-  G4double psi;
-  G4double ans = 0;
-  const G4double euler= 0.5772156649;
-  const G4int maxit= 100;
-  const G4double fpmin = 1.0e-30;
-  const G4double eps = 1.0e-7;
-  nm1=n-1;
-  if (n<0 || x<0.0 || (x==0.0 && (n==0 || n==1)))
-  G4cout << "bad arguments in ExpIntFunction" << G4endl;
-  else {
-       if (n==0) ans=std::exp(-x)/x;
-        else {
-           if (x==0.0) ans=1.0/nm1;
-              else {
-                   if (x > 1.0) {
-                         	b=x+n;
-                        	c=1.0/fpmin;
-                        	d=1.0/b;
-				h=d;
-				for (i=1;i<=maxit;i++) {
-				  a=-i*(nm1+i);
-				  b +=2.0;
-				  d=1.0/(a*d+b);
-				  c=b+a/c;
-				  del=c*d;
-				  h *=del;
-				      if (std::fabs(del-1.0) < eps) {
-					ans=h*std::exp(-x);
-					return ans;
-				      }
-				}
-		   } else {
-		     ans = (nm1!=0 ? 1.0/nm1 : -std::log(x)-euler);
-		     fact=1.0;
-		     for (i=1;i<=maxit;i++) {
-		       fact *=-x/i;
-		       if (i !=nm1) del = -fact/(i-nm1);
-		       else {
-			 psi = -euler;
-			 for (ii=1;ii<=nm1;ii++) psi +=1.0/ii;
-			 del=fact*(-std::log(x)+psi);
-		       }
-		       ans += del;
-		       if (std::fabs(del) < std::fabs(ans)*eps) return ans;
-		     }
-		   }
-	      }
-	}
-  }
-return ans;
-}
-//-----------------------------------------------------------------------------------------------------------
-
- 
-G4double G4ecpssrCrossSection::CalculateCrossSection(G4int zTarget,G4int zIncident, G4double energyIncident)
- 
- //this K-CrossSection calculation method is done according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)//					                
-
-{
-
-  G4NistManager* massManager = G4NistManager::Instance();   
-
-  G4AtomicTransitionManager*  transitionManager =  G4AtomicTransitionManager::Instance();
-
-  G4double  massIncident; 
-
- if (zIncident == 1)
-    {
-    G4Proton* aProtone = G4Proton::Proton();
-    
-   massIncident = aProtone->GetPDGMass(); 
-    }
-  else
-    {
-      if (zIncident == 2)
-	{
-	  G4Alpha* aAlpha = G4Alpha::Alpha();
-	  
-	   massIncident  = aAlpha->GetPDGMass(); 
-	}
-      else
-	{ 
-	  G4cout << "we can treat only Proton or Alpha incident particles " << G4endl;
-	  massIncident =0.;
-	}
-    }
- 
-  G4double kBindingEnergy = transitionManager->Shell(zTarget,0)->BindingEnergy();
-         
-  G4double massTarget = (massManager->GetAtomicMassAmu(zTarget))*amu_c2;
- 
-  G4double systemMass =((massIncident*massTarget)/(massIncident+massTarget))/electron_mass_c2;//the mass of the system (projectile, target) 
-
- const G4double zkshell= 0.3;
-
-  G4double screenedzTarget = zTarget-zkshell;                                 // screenedzTarget is the screened nuclear charge of the target
-
-  const G4double rydbergMeV= 13.6e-6;
-     
-  G4double tetaK = kBindingEnergy/((screenedzTarget*screenedzTarget)*rydbergMeV);  //tetaK denotes the reduced binding energy of the electron
-
-  const G4double bohrPow2Barn=(Bohr_radius*Bohr_radius)/barn ;        
-  
-  G4double sigma0 = 8.*pi*(zIncident*zIncident)*bohrPow2Barn*std::pow(screenedzTarget,-4.);     //sigma0 is the initial cross section of K shell at stable state
-
-  //---------------------------------------------------------------------------------------------------------------------
-
- G4double velocity = CalculateVelocity( zTarget, zIncident, energyIncident);   //is the scaled velocity parameter of the system  
-
-  //---------------------------------------------------------------------------------------------------------------------
-  
- const G4double kAnalyticalApproximation= 1.5; 
- 
-  G4double x = kAnalyticalApproximation/velocity;
- 
-  G4double electrIonizationEnergy;                                         
-                                       
-  if ( x<0.035)  
-    {
-      electrIonizationEnergy= 0.75*pi*(std::log(1./(x*x))-1.);  
-    }
-  else 
-    { 
-      if ( x<3.) 
-	{ 
-	  electrIonizationEnergy =std::exp(-2.*x)/(0.031+(0.213*std::pow(x,0.5))+(0.005*x)-(0.069*std::pow(x,3./2.))+(0.324*x*x));
-	}
-     
-      else  
-	{
-	 electrIonizationEnergy =2.*std::exp(-2.*x)/std::pow(x,1.6); }
-    }
-
-  G4double hFunction =(electrIonizationEnergy*2.)/(tetaK*std::pow(velocity,3)); //hFunction represents the correction for polarization effet
-    
-  G4double gFunction = (1.+(9.*velocity)+(31.*velocity*velocity)+(98.*std::pow(velocity,3.))+(12.*std::pow(velocity,4.))+(25.*std::pow(velocity,5.))
-			+(4.2*std::pow(velocity,6.))+(0.515*std::pow(velocity,7.)))/std::pow(1.+velocity,9.); //gFunction represents the correction for binding effet
- 
-  //-----------------------------------------------------------------------------------------------------------------------------
-
-  G4double sigmaPSS = 1.+(((2.*zIncident)/(screenedzTarget*tetaK))*(gFunction-hFunction)); //describes the perturbed stationnairy state of the affected atomic electon
- 
- //----------------------------------------------------------------------------------------------------------------------------
-  
-  const G4double cNaturalUnit= 1/fine_structure_const;  // it's the speed of light according to Atomic-Unit-System
-  
-  G4double ykFormula=0.4*(screenedzTarget/cNaturalUnit)*(screenedzTarget/cNaturalUnit)/(velocity/sigmaPSS);
- 
-  G4double relativityCorrection = std::pow((1.+(1.1*ykFormula*ykFormula)),0.5)+ykFormula;// the relativistic correction parameter
-
-  G4double reducedVelocity = velocity*std::pow(relativityCorrection,0.5);  // presents the reduced collision velocity parameter 
-
-  G4double universalFunction = (std::pow(2.,9.)/45.)*std::pow(reducedVelocity/sigmaPSS,8.)*std::pow((1.+(1.72*(reducedVelocity/sigmaPSS)*(reducedVelocity/sigmaPSS))),-4.);// is the reduced universal cross section
-
-  //----------------------------------------------------------------------------------------------------------------------
-
-  G4double sigmaPSSR = (sigma0/(sigmaPSS*tetaK))*universalFunction; //sigmaPSSR is the straight-line K-shell ionization cross section
-  
-  //-----------------------------------------------------------------------------------------------------------------------
-
-  G4double pssDeltaK = (4./(systemMass*sigmaPSS*tetaK))*(sigmaPSS/velocity)*(sigmaPSS/velocity);
-
-  G4double energyLoss = std::pow(1-pssDeltaK,0.5); //energyLoss incorporates the straight-line energy-loss 
-
-  G4double energyLossFunction = (std::pow(2.,-9)/8.)*((((9.*energyLoss)-1.)*std::pow(1.+energyLoss,9.))+(((9.*energyLoss)+1.)*std::pow(1.-energyLoss,9.)));//energy loss function 
-
-  //----------------------------------------------------------------------------------------------------------------------------------------------
-
-  G4double coulombDeflection = (4.*pi*zIncident/systemMass)*std::pow(tetaK*sigmaPSS,-2.)*std::pow(velocity/sigmaPSS,-3.)*(zTarget/screenedzTarget); //incorporates Coulomb deflection parameter 
- 
-  G4double cParameter = 2.*coulombDeflection/(energyLoss*(energyLoss+1.));
-  
-
-  G4double coulombDeflectionFunction = 9.*ExpIntFunction(10,cParameter);                         //this function describes Coulomb-deflection effect
-
-  //--------------------------------------------------------------------------------------------------------------------------------------------------
- 
-
-  G4double crossSection =  energyLossFunction* coulombDeflectionFunction*sigmaPSSR;  //this ECPSSR cross section is estimated at perturbed-stationnairy-state(PSS)
-                                                                                    //and it's reduced by the energy-loss(E),the Coulomb deflection(C),
-                                                                                   //and the relativity(R) effects
-
-  //--------------------------------------------------------------------------------------------------------------------------------------------------   
-
-  return crossSection;
-}
-
-G4double G4ecpssrCrossSection::CalculateVelocity(G4int zTarget, G4int zIncident,  G4double energyIncident) 
-			                     
-{  
-
-  G4AtomicTransitionManager*  transitionManager =  G4AtomicTransitionManager::Instance();
-
-  G4double kBindingEnergy = (transitionManager->Shell(zTarget,0)->BindingEnergy())/MeV;
- 
- G4double  massIncident; 
-
- if (zIncident == 1)
-    {
-    G4Proton* aProtone = G4Proton::Proton();
-    
-   massIncident = aProtone->GetPDGMass(); 
-    }
-  else
-    {
-      if (zIncident == 2)
-	{
-	  G4Alpha* aAlpha = G4Alpha::Alpha();
-	  
-	   massIncident  = aAlpha->GetPDGMass(); 
-	}
-      else
-	{ 
-	  G4cout << "we can treat only Proton or Alpha incident particles " << G4endl;
-	  massIncident =0.;
-	}
-    }
-
- const G4double zkshell= 0.3;      
-  
- G4double screenedzTarget = zTarget- zkshell;                                  
-
- const G4double rydbergMeV= 13.6e-6;
- 
-G4double tetaK = kBindingEnergy/(screenedzTarget*screenedzTarget*rydbergMeV);            
-  
-G4double velocity =(2./(tetaK*screenedzTarget))*std::pow(((energyIncident*electron_mass_c2)/(massIncident*rydbergMeV)),0.5);
-
-  return velocity;
-}
-
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QFragmentation.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QFragmentation.hh	(revision 1197)
+++ 	(revision )
@@ -1,137 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QFragmentation.hh,v 1.3 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-// -----------------------------------------------------------------------------
-//      GEANT 4 class header file
-//
-//                 History: 
-//     Created by Mikhail Kossov, October 2006
-//     CHIPS QGS fragmentation class
-//     For comparison mirror member functions are taken from G4 classes:
-//     G4QGSParticipants
-//     G4QGSModels
-//     G4ExcitedStringDecay
-// -----------------------------------------------------------------------------
-// Short description: CHIPS string fragmentation class
-// -----------------------------------------------------------------------------
-//
-#ifndef G4QFragmentation_h
-#define G4QFragmentation_h 1
-
-#include "globals.hh"
-#include "G4QNucleus.hh"
-#include "Randomize.hh"
-#include "G4QHadronVector.hh"
-#include "G4ShortLivedConstructor.hh"
-#include "G4QInteractionVector.hh"
-#include "G4QPomeron.hh"
-#include "G4QPartonPairVector.hh" 
-#include "G4QStringVector.hh" 
-
-class G4QFragmentation
-{
- public:
-  G4QFragmentation();
-  G4QFragmentation(const G4QFragmentation &right);
-  const G4QFragmentation& operator=(const G4QFragmentation &right);
-  virtual ~G4QFragmentation(); 
-
-  int operator==(const G4QFragmentation &right) const;
-  int operator!=(const G4QFragmentation &right) const;
-
-  G4QHadronVector* Scatter(const G4QNucleus& theNucleus, const G4QHadron& thePrimary);
-
-  void InitModel(const G4QNucleus& Nucleus, const G4QHadron& Projectile);
-
-  void Init(G4double theZ, G4double theA)
-  {
-    if(!theNucleus) theNucleus = new G4QNucleus(G4int(theZ),G4int(theA-theZ+.0001));
-    theNucleus->InitByPDG(90000000+G4int(theZ)*1000+G4int(theA-theZ+.0001));
-  }
-     
-  void SetNucleus(G4QNucleus* aNucleus) {theNucleus=aNucleus;}
-  G4QNucleus* GetWoundedNucleus() const {return theNucleus;}
-  G4bool ExciteDiffParticipants(G4QHadron* aPartner, G4QHadron* bPartner) const;
-  G4bool ExciteSingDiffParticipants(G4QHadron* aPartner, G4QHadron* bPartner) const;
-
-  G4QString* BuildString(G4QPartonPair* aPair)
-    {return new G4QString(aPair->GetParton1(),aPair->GetParton2(), aPair->GetDirection());}
-
-  G4QStringVector* GetStrings();
-  G4QHadronVector* FragmentStrings(const G4QStringVector* theStrings);
-  void DoLorentzBoost(G4ThreeVector aBoost) 
-  {
-    if(theNucleus) theNucleus->DoLorentzBoost(aBoost);
-    theBoost = aBoost;
-  }
-
-  G4QPartonPair* GetNextPartonPair();
-  void BuildInteractions(const G4QHadron& thePrimary);
-  void StartPartonPairLoop() {;} // @@ (? M.K.) Function which is doing nothing
-
-  // Static functions
-  static void SetParameters(G4int nCM, G4double thresh, G4double QGSMth, G4double radNuc,
-                            G4double SigPt, G4double extraM, G4double minM);
- protected:
-  G4QHadron* SelectInteractions(const G4QHadron &thePrimary);
-  void SplitHadrons()
-     {for(unsigned i=0; i<theInteractions.size(); i++) theInteractions[i]->SplitHadrons();}
-  void PerformSoftCollisions();
-  void PerformDiffractiveCollisions();
-  G4bool IsSingleDiffractive()
-                  {G4bool result=false; if(G4UniformRand()<1.) result=true; return result;}
-  G4bool EnergyAndMomentumCorrector(G4QHadronVector* Output, G4LorentzVector& TotaMom);   
-  G4double ChooseX(G4double Xmin, G4double Xmax) const;
-  G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare) const;
-
- private:
-  // static model parameters
-  static G4int    nCutMax; 
-  static G4double ThersholdParameter; 
-  static G4double QGSMThershold; 
-  static G4double theNucleonRadius;
-  // Parameters of diffractional fragmentation
-  static G4double widthOfPtSquare;   // width^2 of pt for string excitation
-  static G4double minExtraMass;      // minimum excitation mass 
-  static G4double minmass;           // mean pion transverse mass; used for Xmin 
-
-  // Body
-  G4QInteractionVector theInteractions;
-  G4QHadronVector      theTargets; 
-  G4QPartonPairVector  thePartonPairs;
-
-  G4int         ModelMode;
-  G4ThreeVector theBoost;                                // init as zero 3-vector (@@ M.K.)
-  G4QNucleus*   theNucleus;                              // init as zero (0)
-  G4ThreeVector theCurrentVelocity;                      // init as zero 3-vector (@@ M.K.)
-
-  enum {SOFT, DIFFRACTIVE};
-};
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadronBuilder.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadronBuilder.hh	(revision 1197)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QHadronBuilder.hh,v 1.3 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-// -----------------------------------------------------------------------------
-//      GEANT 4 class header file
-//
-//                 History: 
-//     Created by Mikhail Kossov, October 2006
-//     Simple service class building hadron out of two partons; 
-//     For comparison mirror member functions are taken from G4 class:
-//     G4HadronBuilder
-// -----------------------------------------------------------------------------
-// Short description: A CHIPS class for the builder of the G4QHadron, which is a
-// resulting object for the string fragmentation. the G4QHadron has specific
-// parameters, which are not included in the G4QParticle from the CHIPS World,
-// but necessary for the string fragmentation. When the G4QHadron is created
-// (builded), it is converted to the CHIPS particle.
-// -----------------------------------------------------------------------------
-//
-
-#ifndef G4QHadronBuilder_h
-#define G4QHadronBuilder_h 1
-
-#include "globals.hh"
-#include <vector>
-#include "G4QHadron.hh"
-#include "G4QParton.hh"
-
-class G4QHadronBuilder
-{
-public:
-  G4QHadronBuilder(); 
-  G4QHadron* Build(G4QParton* black, G4QParton* white);
-  G4QHadron* BuildLowSpin(G4QParton* black, G4QParton* white);
-  G4QHadron* BuildHighSpin(G4QParton* black, G4QParton* white);
-private:
-  enum Spin {SpinZero=1, SpinHalf=2, SpinOne=3, SpinThreeHalf=4};
-  G4QHadron* Meson(G4QParton* black, G4QParton* white, Spin spin);
-  G4QHadron* Baryon(G4QParton* black,G4QParton* white, Spin spin);
-  // Body
-  G4double mesonSpinMix;
-  G4double baryonSpinMix;
-  std::vector<G4double> scalarMesonMixings;
-  std::vector<G4double> vectorMesonMixings;
-};
-
-// G4QHcreate type is an interface to Build/BuildLowSpin/BuildHighSpin member functions
-typedef G4QHadron* (G4QHadronBuilder::*G4QHcreate) (G4QParton*,G4QParton*);
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGToG4Particle.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGToG4Particle.hh	(revision 1197)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QPDGToG4Particle.hh,v 1.5 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QPDGToG4Particle header ----------------
-//                 by Mikhail Kossov, December 2003.
-//  Header of the singletone class of the CHIPS Simulation Branch in GEANT4
-// ------------------------------------------------------------------------
-// ****************************************************************************************
-// ********* This HEADER is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short description: This is a helper class, which converts the PDG-defined
-// G4QHadrons of the CHIPS model to the G4 particles, defined by the singetones.
-// -----------------------------------------------------------------------------
-
-#ifndef G4QPDGToG4Particle_hh
-#define G4QPDGToG4Particle_hh
-
-#include "globals.hh"
-#include "G4ios.hh"
-#include "G4ParticleTypes.hh"
-#include "G4ParticleDefinition.hh"
-
-class G4QPDGToG4Particle
-{
-  // Constructor/Destructor
-protected:
-  G4QPDGToG4Particle();        // the Default Construction is protected - Singelton
-public:
-  ~G4QPDGToG4Particle();       // Destructor is public because of Windows compilation error
-
-  // Member Functions
-
-public:
-  // Pointers to Particles of the Singeltone of the CHIPS World
-  static G4QPDGToG4Particle* Get();
-  G4ParticleDefinition* GetParticleDefinition(G4int PDGCode);
-  void DefineAllParticles();
-
-// Body
-private:
-};
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPomeron.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPomeron.hh	(revision 1197)
+++ 	(revision )
@@ -1,123 +1,0 @@
-//
-// ********************************************************************
-// * 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 G4QPomeron_h
-#define G4QPomeron_h 1
-//
-// $Id: G4QPomeron.hh,v 1.3 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-// ------------------------------------------------------------
-//      GEANT 4 class implementation file
-//
-//      ---------------- G4QPomeron ----------------
-//      by Mikhail Kossov Oct, 2006
-//      class for a Pomeron used by Parton String Models
-//   For comparison mirror member functions are taken from G4 class:
-//   G4PomeronCrossSection
-// ------------------------------------------------------------
-// Short description: Pomeron is one of the possible vacuum pole (the
-// second is Oderon, but they are identical in the present model), by
-// which particle exchang in the ellastic scattering process. Strings,
-// which appear as a cut of the Pomeron (optic theorem connects the
-// amplitude of scattering at zero angle with the total inelastic
-// cross-section), describe most of the processes at high energies.
-// ------------------------------------------------------------------
-
-#include "globals.hh"
-
-class G4QPomeron
-{
- public:
-  G4QPomeron(G4int PDGCode = 211);
-  ~G4QPomeron(){;}
-  void Pomeron_S(G4double apomeron_S)              {pomeron_S = apomeron_S;}
-  void Pomeron_Gamma(G4double apomeron_Gamma)      {pomeron_Gamma = apomeron_Gamma;}
-  void Pomeron_C(G4double apomeron_C)              {pomeron_C = apomeron_C;}
-  void Pomeron_Rsquare(G4double apomeron_Rsquare)  {pomeron_Rsquare = apomeron_Rsquare;}
-  void Pomeron_Alpha(G4double apomeron_Alpha)      {pomeron_Alpha = apomeron_Alpha;}
-  void Pomeron_Alphaprime(G4double apom_Alphaprime){pomeron_Alphaprime = apom_Alphaprime;}
-  void Pomeron_Gamma_Hard(G4double apom_Gamma_Hard){pomeron_Gamma_Hard = apom_Gamma_Hard;}
-  void Pomeron_Alpha_Hard(G4double apom_Alpha_Hard){pomeron_Alpha_Hard = apom_Alpha_Hard;}
-  G4double GetTotalCrossSection(const G4double s) {return SigP(s) * Expand(Z(s)/2);}
-  G4double GetDiffractiveCrossSection(const G4double s)
-                                  {return SigP(s)/pomeron_C*(Expand(Z(s)/2)-Expand(Z(s)));}
-  G4double GetElasticCrossSection(const G4double s)
-                                          {return (pomeron_C-1)*GetElasticCrossSection(s);}
-  G4double GetInelasticCrossSection(const G4double s)
-                                {return GetTotalCrossSection(s)-GetElasticCrossSection(s);}
-  G4double GetTotalProbability(const G4double s, const G4double imp2)
-        {return 2*(1-std::exp(-Eikonal(s,imp2)))/pomeron_C*(1-std::exp(-Eikonal(s,imp2)));}
-  G4double GetDiffractiveProbability(const G4double s, const G4double imp2)
-                  {return (pomeron_C-1.)/pomeron_C*(GetTotalProbability(s,imp2) -
-                                                    GetNondiffractiveProbability(s,imp2));}
-  G4double GetNondiffractiveProbability(const G4double s, const G4double imp2)
-                                      {return (1.-std::exp(-2*Eikonal(s,imp2)))/pomeron_C;}
-  G4double GetElasticProbability(const G4double s, const G4double imp2)
-                      {return GetTotalProbability(s,imp2)-GetInelasticProbability(s,imp2);}
-  G4double GetInelasticProbability(const G4double s, const G4double imp2)
-           {return GetNondiffractiveProbability(s,imp2)+GetDiffractiveProbability(s,imp2);}
-  G4double GetCutPomeronProbability(const G4double s,const G4double ip2, const G4int nPom);
-  void SetGamma(const G4double agam) {pomeron_Gamma=agam/GeV/GeV;} // @@ Temporary
-  G4double SoftEikonal(G4double s, G4double imp2)
-                         {return Zsoft(s)/2*std::exp(-imp2/LambdaSoft(s)/hbarc_squared/4);}
-  G4double HardEikonal(G4double s, G4double imp2)
-                         {return Zhard(s)/2*std::exp(-imp2/LambdaHard(s)/hbarc_squared/4);}
- private: 
-  G4double PowerSoft(const G4double s)
-                            {return pomeron_Gamma*std::pow(s/pomeron_S, pomeron_Alpha-1.);}
-  G4double PowerHard(const G4double s)
-                  {return pomeron_Gamma_Hard*std::pow(s/pomeron_S, pomeron_Alpha_Hard-1.);}
-  G4double LambdaSoft(const G4double s)
-                         {return pomeron_Rsquare+pomeron_Alphaprime*std::log(s/pomeron_S);}
-  G4double LambdaHard(const G4double){return pomeron_Rsquare;} // @@ ? M.K.
-  G4double Zsoft(const G4double s)   {return 2*pomeron_C*PowerSoft(s)/LambdaSoft(s);}
-  G4double Zhard(const G4double s)   {return 2*pomeron_C*PowerHard(s)/LambdaHard(s);}
-  
-  void InitForNucleon();
-  void InitForPion();
-  void InitForKaon();
-  void InitForGamma();
- 
-  G4double Expand(G4double z);
-  G4double Z(const G4double Scms)    {return 2*pomeron_C*Power(s)/Lambda(Scms);}
-  G4double SigP(const G4double Scms) {return 8*pi*hbarc_squared*Power(Scms);}
-  G4double Power(const G4double Scms)
-                           {return pomeron_Gamma*std::pow(Scms/pomeron_S,pomeron_Alpha-1);}
-  G4double Lambda(const G4double s)
-                         {return pomeron_Rsquare+pomeron_Alphaprime*std::log(s/pomeron_S);}
-  G4double Eikonal(const G4double s, const G4double imp2)
-                               {return std::exp(-imp2/(4*Lambda(s)*hbarc_squared))*Z(s)/2;}
-  // Body
-  G4double pomeron_S;
-  G4double pomeron_Gamma;
-  G4double pomeron_C;
-  G4double pomeron_Rsquare;
-  G4double pomeron_Alpha;
-  G4double pomeron_Alphaprime;
-  G4double pomeron_Gamma_Hard;
-  G4double pomeron_Alpha_Hard;
-};
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QSplitter.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QSplitter.hh	(revision 1197)
+++ 	(revision )
@@ -1,125 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QSplitter.hh,v 1.3 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QSplitter ----------------
-//             by Mikhail Kossov, Avgust 2005.
-// header for Hadron-Hadron Splitter in parton pairs of the CHIPS Model
-// --------------------------------------------------------------------
-// Short description: the hadron befor the interaction must be splitted
-// in partons: quark-antiquark (mesons) or quark-diquark (baryon) parts
-// (some time in more than two parts, e.g. baryon in three quarks or a
-// few quark-antiquark pairs can be added for the splitting). Then each
-// projectile parton can create a parton pair (G4QPartonPair) with the
-// target parton. This pair with the big rapidity difference on the ends
-// creates a planar Quark-Gluon String (a pole). A pair of the projectile
-// partons with a pair of the target partons can create a cylindrical
-// string (doubled string in the algorithm - a cut).  
-// -------------------------------------------------===------------------
-
-#ifndef G4QSplitter_h
-#define G4QSplitter_h 1
-
-#include "G4QuasmonVector.hh"
-//#include "G4RandomDirection.hh"
-// Call G4RandomDirection() (global) instead of old RndmDir() (local)
-
-class G4QSplitter 
-{
-public:
-  // projectile Hadron (probably as a part of proj Nucleus) colliding with a nuclear target
-  //G4QSplitter(G4QHadron projHadron, const G4bool projEnvFlag, const G4int targPDG);
-  // projectile Hadron (probably as a part of proj Nucleus) colliding with nuclear Cluster
-  G4QSplitter(G4QHadron projHadron, const G4bool projEnvFlag, const G4int targPDG,
-              const G4bool targEnvFlag);   // Cluster can have target nuclear environment
-  // projectile Cluster (probably as a part of proj Nucleus) colliding with nuclear target
-  //G4QSplitter(G4QNucleus projCluster, const G4bool projEnvFlag, const G4int targPDG);
-  // projectile Cluster (probably as a part of proj Nucleus) colliding with nuclear Cluster
-  //G4QSplitter(G4QNucleus projCluster, const G4bool projEnvFlag, const G4int targPDG,
-  //            const G4bool targEnvFlag);   // Cluster can have target nuclear environment
-  G4QSplitter(const G4QSplitter& right);   // Copy the splitted system by value
-  G4QSplitter(G4QSplitter* right);         // Copy the splitted system by pointer
-  ~G4QSplitter();                          // Public Destructor
-
-  // Overloaded operators
-  const G4QSplitter& operator=(const G4QSplitter& right); // Copy the splitted system
-  G4bool operator==(const G4QSplitter &right) const; // Compare two splitted systems
-  G4bool operator!=(const G4QSplitter &right) const; // Compare two splitted systems
-
-  //Selectors
-  G4bool           GetProjEnvFlag(); // Flag of nuclear environment around the projectile
-  G4bool           GetTargEnvFlag(); // Flag of nuclear environment around the target
-  G4QuasmonVector* GetQuasmons();    // Get not decayed Quasmons (User must ClearAndDestr)
-  G4QHadronVector* GetHadrons();     // Get current outputHadrons (User must ClearAndDestr)
-  G4double         GetWeight();      // Get weight of the event (?)
-  G4int            GetNOfHadrons();  // Get the number of created G4QHadrons
-  G4int            GetNOfQuasmons(); // Get the number of created G4Quasmons
-  // Modifiers (Output: a Vector of Quasmons for fragmentation, some Quasms can be Hadrons)
-  G4QHadronVector* Fragment();       // User must clear and destroy the G4QHadronVector
-
-  // Static functions
-  //static void SetParameters(G4double StParName=0., G4bool stFlag=false);
-
-private:  
-  G4QHadronVector HadronizeQString();     // Main HadronizationFunction used in Fragment()
-  G4double RandomizeMomFractionFree(G4int nPart); // RandomMomFrac for nPart free partons
-  G4double RandomizeMomFractionString(G4int nPart); // RandomMomFrac for nPart free partons
-
-// Body
-private:
-  // Static Parameters
-  //static G4double    StParName;    // Example of static parameter (see SetParameters)
-
-  // Body
-  G4bool             theProjEnvFlag; // Projectile Environment Flag
-  G4bool             theTargEnvFlag; // Target Environment Flag
-  G4QContent         theProjQC;      // Projectile Quark Content
-  G4QContent         theTargQC;      // Target Quark Content
-  G4LorentzVector    theProj4Mom;    // Projectile 4-momentum
-  G4LorentzVector    theTarg4Mom;    // Target 4-momentum
-  // Internal Quasmons
-  G4QuasmonVector    theQuasmons;    // Vector of generated secondary Quasmons
-  // Output Hadrons
-  G4QHadronVector    theQHadrons;    // Vector of generated output Hadrons
-
-  // Internal working parameters
-  G4QCHIPSWorld*     theWorld;       // the CHIPS World
-  G4LorentzVector    tot4Mom;        // Total 4-momentum in the reaction
-  G4int              totCharge;      // Total charge in the reaction (for current control)
-  G4int              totBaryNum;     // Total baryon number in the reaction (for cur.cont.)
-  G4double           theWeight;      // Weight of the event
-};
-
-//General function makes Random Unit 3D-Vector
-G4ThreeVector RndmDir();             // @@ ??
-
-// Inline functions
-inline G4bool G4QSplitter::operator==(const G4QSplitter &rhs) const {return this == &rhs;}
-inline G4bool G4QSplitter::operator!=(const G4QSplitter &rhs) const {return this != &rhs;}
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonString.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonString.hh	(revision 1197)
+++ 	(revision )
@@ -1,115 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QuasmonString.hh,v 1.5 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QuasmonString ----------------
-//             by Mikhail Kossov, October 2004.
-//      header for Hadron-Hadron String Interaction in the CHIPS Model
-// -------------------------------------------------------------------
-// Short description: The Quark-Gluon String can fragment in hadrons
-// (QGS), small hadronic clusters (HERWIG) or in unlimited in mass
-// Quasmons, defined by the G4QPartonPair. This class is made to
-// simulate the string fragmentation in Quasmons, which hadronize in
-// vacuuum or in nuclear environment.
-// -------------------------------------------------------------------
-
-#ifndef G4QuasmonString_h
-#define G4QuasmonString_h 1
-
-#include "G4QuasmonVector.hh"
-//#include "G4RandomDirection.hh"
-// Call G4RandomDirection() (global) instead of old RndmDir() (local)
-
-class G4QuasmonString 
-{
-public:
-  G4QuasmonString(G4QHadron projHadron, const G4bool projEnvFlag, const G4int targPDG,
-            const G4bool targEnvFlag);
-  G4QuasmonString(const G4QuasmonString& right);   // copy QString by value
-  G4QuasmonString(G4QuasmonString* right);         // copy QString by pointer
-  ~G4QuasmonString();                              // Public Destructor
-
-  // Overloaded operators
-  const G4QuasmonString& operator=(const G4QuasmonString& right);
-  G4bool operator==(const G4QuasmonString &right) const;
-  G4bool operator!=(const G4QuasmonString &right) const;
-
-  //Selectors
-  G4bool           GetProjEnvFlag();
-  G4bool           GetTargEnvFlag();
-  G4QuasmonVector* GetQuasmons();    // Get not decayed Quasmons (User must ClearAndDestr)
-  G4QHadronVector* GetHadrons();     // Get current outputHadrons (User must ClearAndDestr)
-  G4double         GetWeight();      // Get weight of the event
-  G4int            GetNOfHadrons();  // Get the number of created G4QHadrons
-  G4int            GetNOfQuasmons(); // Get the number of created G4Quasmons
-  // Modifiers (Output: a Vector of Quasmons for fragmentation, some Quasms can be Hadrons)
-  G4QHadronVector* Fragment();       // User must clear and destroy the G4QHadronVector
-
-  // Static functions
-  //static void SetParameters(G4double StParName=0., G4bool stFlag=false);
-
-private:  
-  G4QHadronVector HadronizeQString();     // Main HadronizationFunction used in Fragment()
-  G4double RandomizeMomFractionFree(G4int nPart); // RandomMomFrac for nPart free partons
-  G4double RandomizeMomFractionString(G4int nPart); // RandomMomFrac for nPart free partons
-
-// Body
-private:
-  // Static Parameters
-  //static G4double    StParName;    // Example of static parameter (see SetParameters)
-
-  // Body
-  G4bool             theProjEnvFlag; // Projectile Environment Flag
-  G4bool             theTargEnvFlag; // Target Environment Flag
-  G4QContent         theProjQC;      // Projectile Quark Content
-  G4QContent         theTargQC;      // Target Quark Content
-  G4LorentzVector    theProj4Mom;    // Projectile 4-momentum
-  G4LorentzVector    theTarg4Mom;    // Target 4-momentum
-  // Internal Quasmons
-  G4QuasmonVector    theQuasmons;    // Vector of generated secondary Quasmons
-  // Output Hadrons
-  G4QHadronVector    theQHadrons;    // Vector of generated output Hadrons
-
-  // Internal working parameters
-  G4QCHIPSWorld*     theWorld;       // the CHIPS World
-  G4LorentzVector    tot4Mom;        // Total 4-momentum in the reaction
-  G4int              totCharge;      // Total charge in the reaction (for current control)
-  G4int              totBaryNum;     // Total baryon number in the reaction (for cur.cont.)
-  G4double           theWeight;      // Weight of the event
-};
-
-//General function makes Random Unit 3D-Vector
-G4ThreeVector RndmDir();             // @@ ??
-
-// Inline functions
-inline G4bool G4QuasmonString::operator==(const G4QuasmonString &rhs) const
-  {return this == &rhs;}
-inline G4bool G4QuasmonString::operator!=(const G4QuasmonString &rhs) const
-  {return this != &rhs;}
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QFragmentation.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QFragmentation.cc	(revision 1197)
+++ 	(revision )
@@ -1,802 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QFragmentation.cc,v 1.5 2009/04/29 07:53:18 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-// -----------------------------------------------------------------------------
-//      GEANT 4 class header file
-//
-//                 History: 
-//     Created by Mikhail Kossov, October 2006
-//     CHIPS QGS fragmentation class 
-//     For comparison mirror member functions are taken from G4 classes:
-//     G4QGSParticipants
-//     G4QGSModels
-//     G4ExcitedStringDecay
-// -----------------------------------------------------------------------------
-// Short description: CHIPS string fragmentation class
-// -----------------------------------------------------------------------------
-
-//#define debug
-//#define pdebug
-//#define ppdebug
-
-#include "globals.hh"
-#include "G4QFragmentation.hh"
-#include "G4LorentzVector.hh"
-#include <utility>
-
-// Promoting model parameters from local variables class properties @@(? M.K.)
-
-// Definition of static parameters
-G4int    G4QFragmentation::nCutMax=7; 
-G4double G4QFragmentation::ThersholdParameter=450.*MeV; 
-G4double G4QFragmentation::QGSMThershold=3.*GeV; 
-G4double G4QFragmentation::theNucleonRadius=1.5*fermi;
- // Parameters of diffractional fragmentation
-G4double G4QFragmentation::widthOfPtSquare=-0.72*GeV*GeV; // pt -width2 forStringExcitation
-G4double G4QFragmentation::minExtraMass=250.*MeV;// minimum excitation mass 
-G4double G4QFragmentation::minmass=250.*MeV;     // mean pion transverse mass for Xmin 
-
-G4QFragmentation::G4QFragmentation() : theNucleus(0)
-{
-  // Construct Shortlived particles (needed after the 2006 Particles revolution)
-  G4ShortLivedConstructor ShortLived;
-  ShortLived.ConstructParticle();
-}
-
-G4QFragmentation::~G4QFragmentation() {if(theNucleus) delete theNucleus;}
-
-G4QHadronVector* G4QFragmentation::Scatter(const G4QNucleus &aNucleus,
-                                           const G4QHadron &aPrimary)
-{  
-  G4QStringVector* strings=0;
-
-  G4QHadron thePrimary = aPrimary;
-  
-  G4LorentzRotation toZ;
-  G4LorentzVector Ptmp=thePrimary.Get4Momentum();
-  toZ.rotateZ(-1*Ptmp.phi());
-  toZ.rotateY(-1*Ptmp.theta());
-  thePrimary.Set4Momentum(toZ*Ptmp);
-  G4LorentzRotation toLab(toZ.inverse());
-
-  G4int attempts = 0, maxAttempts=20;
-  while(!strings)
-  {
-    if (attempts++ > maxAttempts ) 
-    {
-      G4cerr<<"***G4QFragmentation::Scatter: "<<attempts<<" to create a string ( > max="
-            <<maxAttempts<<") --> try to increase maxAttempts"<<G4endl;
-      G4Exception("G4QFragmentation::Scatter:","72",FatalException,"StringCreation");
-    }
-    InitModel(aNucleus,thePrimary);
-    strings = GetStrings();
-  }
-  
-  G4QHadronVector* theResult = 0;
-  G4double stringEnergy(0);
-  for( unsigned astring=0; astring < strings->size(); astring++)
-  {
-    //    rotate string to lab frame, models have it aligned to z
-    stringEnergy += (*strings)[astring]->GetLeftParton()->Get4Momentum().t();
-    stringEnergy += (*strings)[astring]->GetRightParton()->Get4Momentum().t();
-    (*strings)[astring]->LorentzRotate(toLab);
-  }
-#ifdef debug
-  G4cout<<"G4QFragmentation::Scatter: Total string energy = "<<stringEnergy<<G4endl;
-#endif
-  theResult = FragmentStrings(strings);
-  std::for_each(strings->begin(), strings->end(), DeleteQString() );
-  delete strings;
-
-  return theResult;
-}
-
-void G4QFragmentation::InitModel(const G4QNucleus& aNucleus,const G4QHadron& aProjectile)
-{
-  static const G4double  mProt = G4Proton::Proton()->GetPDGMass(); // Mass of proton
-  Init(aNucleus.GetN(),aNucleus.GetZ());
-  theCurrentVelocity.setX(0);    
-  theCurrentVelocity.setY(0); 
-  // @@ "target Nucleon" == "Proton at rest" (M.K. ?)
-  G4double nCons = 1;                         // 1 or baryon number of the projectile
-  G4int projAbsB=std::abs(aProjectile.GetBaryonNumber()); // Baryon/anti-baryon
-  if(projAbsB>1) nCons = projAbsB;
-  G4LorentzVector proj4M = aProjectile.Get4Momentum();
-  G4double pz_per_projectile = proj4M.pz()/nCons;
-  G4double e_per_projectile = proj4M.e()/nCons+mProt; // @@ Add mass of TargetProtonAtRest
-  //G4double e_per_projectile = aProjectile.Get4Momentum()*aProjectile.Get4Momentum();
-  //e_per_projectile += proj4M.vect()*proj4M.vect();
-  //e_per_projectile /=nCons*nCons;
-  //e_per_projectile = std::sqrt(e_per_projectile);
-  //e_per_projectile += G4Proton::Proton()->GetPDGMass();//@@Add mass of TargetProtonAtRest
-  G4double vz = pz_per_projectile/e_per_projectile;
-#ifdef debug
-  G4cout<<"G4QFragmentation::Init: Projectile4M="<<proj4M<<", vz="<<vz<<G4endl;
-#endif
-  theCurrentVelocity.setZ(vz);
-  DoLorentzBoost(-theCurrentVelocity); 
-  G4LorentzVector Mom = proj4M;
-  Mom.boost(-theCurrentVelocity);
-  G4QHadron theProjectile(aProjectile.GetQPDG(),Mom);
-#ifdef debug
-  G4cout<<"G4QFragmentation::Init: PreInteractionMomentum"<<Mom<<G4endl;
-#endif
-  BuildInteractions(theProjectile);
-  GetWoundedNucleus()->DoLorentzBoost(theCurrentVelocity);
-}
-
-G4QStringVector* G4QFragmentation::GetStrings()
-{
-  G4QPartonPair* aPair;
-  G4QStringVector* theStrings = new G4QStringVector;
-  G4QString* aString=0;
-  while((aPair = GetNextPartonPair())) // @@ At present no difference in stringBuild ? M.K.
-  {
-    if (aPair->GetCollisionType() == G4QPartonPair::DIFFRACTIVE)
-    {
-      aString = BuildString(aPair);           // @@ ?
-#ifdef debug
-      G4cout<<"G4QFragmentation::GetStrings:DifString4M="<<aString->Get4Momentum()<<G4endl;
-#endif
-    }
-    else
-    {
-      aString = BuildString(aPair);           // @@ ?
-#ifdef debug
-      G4cout<<"G4QFragmentation::GetStrings:SftString4M="<<aString->Get4Momentum()<<G4endl;
-#endif
-    }
-    aString->Boost(theCurrentVelocity);  
-    theStrings->push_back(aString);
-    delete aPair;
-  }
-#ifdef debug
-  for(G4int i=0; i<theStrings->size(); i++) G4cout<<"G4QFragmentation::GetStrings:String #"
-                                    <<i<<", 4M="<<(*theStrings)[i]->Get4Momentum()<<G4endl;
-#endif
-  return theStrings;
-}
-
-void G4QFragmentation::BuildInteractions(const G4QHadron &thePrimary) 
-{
-  
-  // Find the collisions and collition conditions
-  G4QHadron* aProjectile = SelectInteractions(thePrimary);
-
-  // now build the parton pairs
-  SplitHadrons();
-  
-  // soft collisions, ordering is vital
-  PerformSoftCollisions();
-   
-  // the rest is diffractive
-  PerformDiffractiveCollisions();
-  
-  // clean-up, if necessary
-  std::for_each(theInteractions.begin(),theInteractions.end(), DeleteQInteraction());
-  theInteractions.clear();
-  std::for_each(theTargets.begin(), theTargets.end(), DeleteQHadron());
-  theTargets.clear();
-  delete aProjectile;
-}
-
-//
-G4QHadron* G4QFragmentation::SelectInteractions(const G4QHadron &thePrimary)
-{
-  G4QHadron* aProjectile = new G4QHadron(thePrimary);
-  G4QPomeron theProbability(thePrimary.GetPDGCode()); // must be data member
-  G4double outerRadius = theNucleus->GetOuterRadius();
-
-  // Check reaction threshold 
-  theNucleus->StartLoop();
-  G4QHadron* pNucleon = theNucleus->GetNextNucleon();
-  G4LorentzVector aPrimaryMomentum=thePrimary.Get4Momentum();
-  G4double s = (aPrimaryMomentum + pNucleon->Get4Momentum()).mag2();
-  G4double primaryMass=thePrimary.GetMass();
-  G4double ThresholdMass = primaryMass + pNucleon->GetMass(); 
-  ModelMode = SOFT;
-  if (sqr(ThresholdMass + ThersholdParameter) > s)
-  {
-    G4cerr<<"***G4QFragmentation::SelectInteractions: ThrM="<<ThresholdMass<<" + ThrPa="
-          <<ThersholdParameter<<" = "<<ThresholdMass+ThersholdParameter<<" > std::sqrt(s)="
-          <<std::sqrt(s)<<G4endl;
-    G4Exception("G4QFragmentation::SelectInteractions:","72",FatalException,"LowEnergy");
-  }
-  if (sqr(ThresholdMass + QGSMThershold) > s) // thus only diffractive in cascade!
-  {
-#ifdef debug
-    G4cout<<"G4QFragmentation::SelectInteractions: ThrM="<<ThresholdMass<<" + ThrQGS="
-          <<QGSMThershold<<" = "<<ThresholdMass+QGSMThershold<<" > std::sqrt(s)="
-          <<std::sqrt(s)<<" -> only Diffraction is possible"<<G4endl; // @@ to Quasmon
-#endif
-    ModelMode = DIFFRACTIVE;
-  }
- 
-  // first find the collisions HPW
-  std::for_each(theInteractions.begin(),theInteractions.end(), DeleteQInteraction());
-  theInteractions.clear();
-  G4int totalCuts = 0;
-  G4double impactUsed = 0;
-
-  G4double eKin = aPrimaryMomentum.e()-primaryMass; // Primary kinetic energy ? GeV ? M.K.
-
-  while(theInteractions.size() == 0)
-  {
-    // choose random impact parameter HPW
-    std::pair<G4double, G4double> theImpactParameter;
-    theImpactParameter = theNucleus->ChooseImpactXandY(outerRadius+theNucleonRadius);
-    G4double impactX = theImpactParameter.first; 
-    G4double impactY = theImpactParameter.second;
-    
-    // loop over nuclei to find collissions HPW
-    theNucleus->StartLoop();
-    G4int nucleonCount = 0; // debug
-    //G4QFragmentation_NPart = 0;                        // ? M.K.
-    while( (pNucleon = theNucleus->GetNextNucleon()) )
-    {
-      if(totalCuts>1.5*eKin) break;
-      nucleonCount++; // debug
-      // Needs to be moved to Probability class @@@
-      G4double s = (aPrimaryMomentum + pNucleon->Get4Momentum()).mag2();
-      G4double Distance2 = sqr(impactX - pNucleon->GetPosition().x()) +
-                           sqr(impactY - pNucleon->GetPosition().y());
-      G4double Probability = theProbability.GetInelasticProbability(s, Distance2);  
-      // test for inelastic collision
-      G4double rndNumber = G4UniformRand();
-      // ModelMode = DIFFRACTIVE;
-      if (Probability > rndNumber)
-      {
-#ifdef debug
-        G4cout<<"G4QFragmentation::SelectInteractions: p="<<Probability<<", r="<<rndNumber
-              <<", d="<<std::sqrt(Distance2)<<G4endl;
-#endif
-        G4QHadron* aTarget = new G4QHadron(*pNucleon);
-        //G4QFragmentation_NPart ++;                       // ? M.K.
-        theTargets.push_back(aTarget);
-        pNucleon=aTarget;
-        if((theProbability.GetDiffractiveProbability(s,Distance2)/Probability >
-            G4UniformRand() && (ModelMode==SOFT)) || ModelMode==DIFFRACTIVE)
-        { 
-          // diffractive interaction occurs
-          if(IsSingleDiffractive()) ExciteSingDiffParticipants(aProjectile, aTarget);
-          else                          ExciteDiffParticipants(aProjectile, aTarget);
-          G4QInteraction* aInteraction = new G4QInteraction(aProjectile);
-          aInteraction->SetTarget(aTarget); 
-          theInteractions.push_back(aInteraction);
-          aInteraction->SetNumberOfDiffractiveCollisions(1);
-          totalCuts += 1;
-        }
-        else
-        {
-          // nondiffractive soft interaction occurs
-          // sample nCut+1 (cut Pomerons) pairs of strings can be produced
-          G4int nCut;
-          G4double* running = new G4double[nCutMax];
-          running[0] = 0;
-          for(nCut = 0; nCut < nCutMax; nCut++)
-          {
-            running[nCut] = theProbability.GetCutPomeronProbability(s, Distance2, nCut+1);
-            if(nCut!=0) running[nCut] += running[nCut-1];
-          }
-          G4double random = running[nCutMax-1]*G4UniformRand();
-          for(nCut = 0; nCut < nCutMax; nCut++) {if(running[nCut] > random) break;}
-          delete [] running;
-          nCut = 0;
-          aTarget->IncrementCollisionCount(nCut+1);
-          aProjectile->IncrementCollisionCount(nCut+1);
-          G4QInteraction* aInteraction = new G4QInteraction(aProjectile);
-          aInteraction->SetTarget(aTarget);
-          aInteraction->SetNumberOfSoftCollisions(nCut+1);
-          theInteractions.push_back(aInteraction);
-          totalCuts += nCut+1;
-          impactUsed=Distance2;
-        }
-      }
-    }
-#ifdef debug
-    G4cout<<"G4QFragmentation::SelectInteractions: NUCLEONCOUNT="<<nucleonCount<<G4endl;
-#endif
-  }
-#ifdef debug
-  G4cout<<"G4QFragmentation::SelectInteractions: CUTDEBUG="<<totalCuts
-        <<", ImpactParameter="<<impactUsed<<G4endl;
-#endif
-  return aProjectile;
-}
-
-void G4QFragmentation::PerformDiffractiveCollisions()
-{
-  for(unsigned i = 0; i < theInteractions.size(); i++) 
-  {
-    G4QInteraction* anIniteraction = theInteractions[i];
-    G4QHadron* aProjectile = anIniteraction->GetProjectile();
-    G4QParton* aParton = aProjectile->GetNextParton();
-    G4QPartonPair* aPartonPair;
-    // projectile first
-    if (aParton)
-    {
-      aPartonPair = new G4QPartonPair(aParton, aProjectile->GetNextAntiParton(), 
-                                      G4QPartonPair::DIFFRACTIVE, 
-                                      G4QPartonPair::PROJECTILE);
-      thePartonPairs.push_back(aPartonPair);
-    }
-    // then target
-    G4QHadron* aTarget = anIniteraction->GetTarget();
-    aParton = aTarget->GetNextParton();
-    if (aParton)
-    {
-      aPartonPair = new G4QPartonPair(aParton, aTarget->GetNextAntiParton(), 
-                                      G4QPartonPair::DIFFRACTIVE, 
-                                      G4QPartonPair::TARGET);
-      thePartonPairs.push_back(aPartonPair);
-    }
-  }
-}
-
-void G4QFragmentation::PerformSoftCollisions()
-{
-  G4QInteractionVector::iterator i;
-  for(i = theInteractions.begin(); i != theInteractions.end(); i++)   
-  {
-    G4QInteraction* anIniteraction = *i;
-    G4QPartonPair* aPair=0;
-    if (anIniteraction->GetNumberOfSoftCollisions())
-    { 
-      G4QHadron* pProjectile = anIniteraction->GetProjectile();
-      G4QHadron* pTarget     = anIniteraction->GetTarget();
-      for (G4int j = 0; j < anIniteraction->GetNumberOfSoftCollisions(); j++)
-      {
-        aPair= new G4QPartonPair(pTarget->GetNextParton(),pProjectile->GetNextAntiParton(),
-                                 G4QPartonPair::SOFT, G4QPartonPair::TARGET);
-        thePartonPairs.push_back(aPair);
-        aPair= new G4QPartonPair(pProjectile->GetNextParton(),pTarget->GetNextAntiParton(),
-                                G4QPartonPair::SOFT, G4QPartonPair::PROJECTILE);
-        thePartonPairs.push_back(aPair);
-      }  
-      delete *i;
-      i=theInteractions.erase(i);
-      i--;
-    }
-  }
-}
-
-G4QPartonPair* G4QFragmentation::GetNextPartonPair()
-{
-  if(thePartonPairs.empty()) return 0;
-  G4QPartonPair* result = thePartonPairs.back();
-  thePartonPairs.pop_back();
-  return result;
-}
-
-G4QHadronVector* G4QFragmentation::FragmentStrings(const G4QStringVector* theStrings)
-{
-  G4QHadronVector* theResult = new G4QHadronVector;
-
-  G4LorentzVector KTsum(0.,0.,0.);
-  G4bool NeedEnergyCorrector=false;
-  
-  for( unsigned astring=0; astring < theStrings->size(); astring++)
-  {
-    KTsum+= (*theStrings)[astring]->Get4Momentum();
-    if(!(KTsum.e()<1.) && !(KTsum.e()>-1.))
-    {
-      G4cerr<<"***G4QFragmentation::FragmentStrings: KTsum="<<KTsum<<G4endl;
-      G4Exception("G4QFragmentation::FragmentStrings:","72",FatalException,"NANin3Vector");
-    }
-    G4QHadronVector* generatedHadrons = 0;     // A prototype of the string output
-    if( (*theStrings)[astring]->IsExcited() )
-    {
-      generatedHadrons=(*theStrings)[astring]->FragmentString(true);// Fragment QGSM String
-    }
-    else
-    {
-      //generatedHadrons = new G4QHadronVector;
-      //generatedHadrons->push_back((*theStrings)[astring]->GetAsQHadron()); //@@ NotImplem
-    }    
-    if (!generatedHadrons) 
-    {
-      G4cerr<<"G4QFragmentation::FragmentStrings: No Hadrons produced" << G4endl;
-      continue;
-    }
-    G4LorentzVector KTsum1(0.,0.,0.,0.);
-    for(unsigned aTrack=0; aTrack<generatedHadrons->size(); aTrack++)
-    {
-      theResult->push_back((*generatedHadrons)[aTrack]);
-      KTsum1+= (*generatedHadrons)[aTrack]->Get4Momentum();
-    }
- 
-    if(std::abs((KTsum1.e()-(*theStrings)[astring]->Get4Momentum().e())/KTsum1.e())
-       > perMillion) NeedEnergyCorrector=true;
-    //      clean up
-    delete generatedHadrons;
-  }
-#ifdef debug
-  G4cout<<"G4QFragmentation::FragmentStrings: String4mom="<<KTsum<<endl; 
-#endif
-  if(NeedEnergyCorrector) EnergyAndMomentumCorrector(theResult, KTsum);
-  return theResult;
-}
-
-G4bool G4QFragmentation::EnergyAndMomentumCorrector(G4QHadronVector* Output,
-                                                    G4LorentzVector& TotalCollisionMom)   
-{
-  const int    nAttemptScale = 500;
-  const double ErrLimit = 1.E-5;
-  if (Output->empty()) return TRUE;
-  G4LorentzVector SumMom;
-  G4double        SumMass = 0;     
-  G4double        TotalCollisionMass = TotalCollisionMom.m();
-  if( !(TotalCollisionMass<1) && !(TotalCollisionMass>-1) )
-  {
-    G4cerr<<"***G4QFragmentation::EnergyAndMomentumCorrect:M="<<TotalCollisionMass<<G4endl;
-    G4Exception("G4QFragmentation::EnergyAndMomentumCorr:","72",FatalException,"NAN_totM");
-  }
-  // Calculate sum hadron 4-momenta and summing hadron mass
-  unsigned int cHadron;
-  for(cHadron = 0; cHadron < Output->size(); cHadron++)
-  {
-    SumMom  += Output->operator[](cHadron)->Get4Momentum();
-    if( !(SumMom<1) && !(SumMom>-1) )
-    {
-      G4cerr<<"***G4QFragmentation::EnergyAndMomentumCorrector: SumMom="<<SumMom<<G4endl;
-      G4Exception("G4QFragmentation::EnergyAndMomentumCorr:","72",FatalException,"NANMom");
-    }
-    SumMass += (*Output)[cHadron]->GetMass();
-    if(!(SumMass<1) && !(SumMass>-1))
-    {
-      G4cerr<<"***G4QFragmentation::EnergyAndMomentumCorrector: SumMass="<<SumMass<<G4endl;
-      G4Exception("G4QFragmentation::EnergyAndMomentumCor:","72",FatalException,"NANMass");
-    }
-  }
-  // Cannot correct a single particle
-  if(Output->size() < 2) return FALSE;
-  if (SumMass > TotalCollisionMass) return FALSE;
-  SumMass = SumMom.m2();
-  if (SumMass < 0) return FALSE;
-  SumMass = std::sqrt(SumMass);
-  // Compute c.m.s. hadron velocity and boost KTV to hadron c.m.s.
-  G4ThreeVector Beta = -SumMom.boostVector();
-  G4int nOut=Output->size();
-  if(nOut) for(G4int o=0; o<nOut; o++) (*Output)[o]->Boost(Beta);
-  // Scale total c.m.s. hadron energy (hadron system mass).
-  // It should be equal interaction mass
-  G4double Scale = 1;
-  G4int cAttempt = 0;
-  G4double Sum = 0;
-  G4bool success = false;
-  for(cAttempt = 0; cAttempt < nAttemptScale; cAttempt++)
-  {
-    Sum = 0;
-    for(cHadron = 0; cHadron < Output->size(); cHadron++)
-    {
-      G4LorentzVector HadronMom = Output->operator[](cHadron)->Get4Momentum();
-      HadronMom.setVect(Scale*HadronMom.vect());
-      G4double E = std::sqrt(HadronMom.vect().mag2() + sqr((*Output)[cHadron]->GetMass()));
-      HadronMom.setE(E);
-      Output->operator[](cHadron)->Set4Momentum(HadronMom);
-      Sum += E;
-    }   
-    Scale = TotalCollisionMass/Sum;    
-    if (Scale - 1 <= ErrLimit) 
-    {
-      success = true;
-      break;
-    }
-#ifdef debug
-    G4cout<<"G4QFragmentation::EnergyAndMomentumCorrector: Scale-1="<<Scale-1<<", TotM="
-          <<TotalCollisionMass<<", Sum="<<Sum<<G4endl;
-#endif
-  }
-#ifdef debug
-  if(!success)
-  {
-    G4cout<<"***G4QFragmentation::EnergyAndMomentumCorrector: Scale #1 at end of loop M="
-          <<TotalCollisionMass<<", S"<<Sum<<", Sc="<<Scale
-          <<" Increase number of attempts or increase the ErrLimit parameter"<<G4endl;
-    //G4Exception("G4QFragmentation::EnergyAndMomCor:","72",FatalException,"NoCorrection");
-  }
-#endif
-  // Compute c.m.s. interaction velocity and KTV back boost
-  Beta = TotalCollisionMom.boostVector(); 
-  nOut=Output->size();
-  if(nOut) for(G4int o=0; o<nOut; o++) (*Output)[o]->Boost(Beta);
-  return TRUE;
-}
-
-// Excite double diffractive string
-G4bool G4QFragmentation::ExciteDiffParticipants(G4QHadron* projectile,
-                                                G4QHadron* target) const
-{
-  G4LorentzVector Pprojectile=projectile->Get4Momentum();
-  G4double Mprojectile=projectile->GetMass() + minExtraMass;
-  G4double Mprojectile2=Mprojectile*Mprojectile;
-  G4LorentzVector Ptarget=target->Get4Momentum();
-  G4double Mtarget=target->GetMass() + minExtraMass;
-  G4double Mtarget2=Mtarget*Mtarget;
-#ifdef debug
-  G4cout<<"G4QFragm::ExciteDiffPartici:Ep="<<Pprojectile.e()<<",Et="<<Ptarget.e()<<G4endl;
-#endif
-  // Transform momenta to cms and then rotate parallel to z axis;
-  G4LorentzVector Psum=Pprojectile+Ptarget;
-  G4LorentzRotation toCms(-Psum.boostVector()); // Boost Rotation to CMS
-  G4LorentzVector Ptmp=toCms*Pprojectile;
-  if(Ptmp.pz()<=0.) // "String" moving backwards in CMS, abort collision !! ? M.K.
-  {
-#ifdef debug
-    G4cout<<"G4QFragmentation::ExciteDiffParticipants: *1* abort Collision!! *1*"<<G4endl;
-#endif
-    return false; 
-  }         
-  toCms.rotateZ(-Ptmp.phi());
-  toCms.rotateY(-Ptmp.theta());
-#ifdef debug
-  G4cout<<"G4QFragment::ExciteDiffParticipantts: Be4Boost Pproj="<<Pprojectile<<", Ptarg="
-        <<Ptarget<<G4endl;
-#endif
-  G4LorentzRotation toLab(toCms.inverse()); // Boost Rotation to LabSys (LS)
-  Pprojectile.transform(toCms);
-  Ptarget.transform(toCms);
-#ifdef debug
-  G4cout<< "G4QFragment::ExciteDiffParticipantts: AfterBoost Pproj="<<Pprojectile<<"Ptarg="
-        <<Ptarget<<", cms4M="<<Pprojectile+Ptarget<<G4endl;
-  G4cout<<"G4QFragment::ExciteDiffParticipantts: ProjX+="<<Pprojectile.plus()<<", ProjX-="
-        <<Pprojectile.minus()<<", TargX+="<< Ptarget.plus()<<", TargX-="<<Ptarget.minus()
-        <<G4endl;
-#endif
-  G4LorentzVector Qmomentum(0.,0.,0.,0.);
-  G4int whilecount=0;
-  do
-  {
-    //  Generate pt  
-    G4double maxPtSquare=sqr(Ptarget.pz());
-    if(whilecount++>=500 && whilecount%100==0) // @@ M.K. Hardwired limits 
-#ifdef debug
-    G4cout<<"G4QFragmentation::ExciteDiffParticipantts: can loop, loopCount="<<whilecount
-          <<", maxPtSquare="<<maxPtSquare<<G4endl;
-#endif
-    if(whilecount>1000)                        // @@ M.K. Hardwired limits 
-    {
-#ifdef debug
-      G4cout<<"G4QFragmentation::ExciteDiffParticipants: *2* abort Loop!! *2*"<<G4endl;
-#endif
-      return false;    //  Ignore this interaction 
-    }
-    Qmomentum=G4LorentzVector(GaussianPt(widthOfPtSquare,maxPtSquare),0);
-#ifdef debug
-    G4cout<<"G4QFragment::ExciteDiffParticipants: generated Pt="<<Qmomentum<<", ProjPt="
-          <<Pprojectile+Qmomentum<<", TargPt="<<Ptarget-Qmomentum<<G4endl;
-#endif
-    //  Momentum transfer
-    G4double Xmin = minmass/(Pprojectile.e() + Ptarget.e());
-    G4double Xmax=1.;
-    G4double Xplus =ChooseX(Xmin,Xmax);
-    G4double Xminus=ChooseX(Xmin,Xmax);
-#ifdef debug
-    G4cout<<"G4QFragment::ExciteDiffParticip: X-plus="<<Xplus<<",X-minus="<<Xminus<<G4endl;
-#endif
-    G4double pt2=G4ThreeVector(Qmomentum.vect()).mag2();
-    G4double Qplus =-pt2/Xminus/Ptarget.minus();
-    G4double Qminus= pt2/Xplus /Pprojectile.plus();
-    Qmomentum.setPz((Qplus-Qminus)/2);
-    Qmomentum.setE( (Qplus+Qminus)/2);
-#ifdef debug
-    G4cout<<"G4QFragment::ExciteDiffParticip: Qplus="<<Qplus<<", Qminus="<<Qminus<<", pt2="
-          <<pt2<<", Qmomentum="<<Qmomentum<<", ProjM="<<(Pprojectile+Qmomentum).mag()
-          <<", TargM="<<(Ptarget-Qmomentum).mag()<<G4endl;
-#endif
-  } while((Pprojectile+Qmomentum).mag2()<=Mprojectile2 ||
-          (Ptarget-Qmomentum).mag2()<=Mtarget2);
-  Pprojectile += Qmomentum;
-  Ptarget     -= Qmomentum;
-#ifdef debug
-  G4cout<<"G4QFragment::ExciteDiffParticipan: Proj(Q)="<<Pprojectile<<", Targ(Q)="<<Ptarget
-        <<", Proj(back)="<<toLab*Pprojectile<<", Targ(bac)="<< toLab*Ptarget << G4endl;
-#endif
-  // Transform back and update SplitableHadron Participant.
-  Pprojectile.transform(toLab);
-  Ptarget.transform(toLab);
-#ifdef debug
-  G4cout<< "G4QFragmentation::ExciteDiffParticipants: TargetMass="<<Ptarget.mag()<<G4endl;
-#endif
-  target->Set4Momentum(Ptarget);  
-#ifdef debug
-  G4cout<<"G4QFragment::ExciteDiffParticipants:ProjectileMass="<<Pprojectile.mag()<<G4endl;
-#endif
-  projectile->Set4Momentum(Pprojectile);
-  return true;
-} // End of ExciteDiffParticipants
-
-
-// Excite single diffractive string
-G4bool G4QFragmentation::ExciteSingDiffParticipants(G4QHadron* projectile,
-                                                    G4QHadron* target) const
-{
-  G4LorentzVector Pprojectile=projectile->Get4Momentum();
-  G4double Mprojectile=projectile->GetMass() + minExtraMass;
-  G4double Mprojectile2=Mprojectile*Mprojectile;
-  G4LorentzVector Ptarget=target->Get4Momentum();
-  G4double Mtarget=target->GetMass() + minExtraMass;
-  G4double Mtarget2=Mtarget*Mtarget;
-#ifdef debug
-  G4cout<<"G4QFragm::ExSingDiffPartici:Ep="<<Pprojectile.e()<<",Et="<<Ptarget.e()<<G4endl;
-#endif
-  G4bool KeepProjectile= G4UniformRand() > 0.5;
-  // Reset minMass of the non diffractive particle to its value, (minus for rounding...)
-  if(KeepProjectile ) 
-  {
-#ifdef debug
-    G4cout<<"--1/2--G4QFragmentation::ExSingDiffParticipants: Projectile is fixed"<<G4endl;
-#endif
-    Mprojectile2 = projectile->GetMass2()*(1.-perCent); // Isn't it too big reduction? M.K.
-  }
-  else
-  {
-#ifdef debug
-    G4cout<<"---1/2---G4QFragmentation::ExSingDiffParticipants: Target is fixed"<<G4endl;
-#endif
-    Mtarget2 = target->GetMass2()*(1.-perCent); // @@ Isn't it too big reduction? M.K.
-  }
-  // @@ From this point it repeats the Diffractional excitation (? Use flag ?)
-  // Transform momenta to cms and then rotate parallel to z axis;
-  G4LorentzVector Psum=Pprojectile+Ptarget;
-  G4LorentzRotation toCms(-Psum.boostVector()); // Boost Rotation to CMS
-  G4LorentzVector Ptmp=toCms*Pprojectile;
-  if(Ptmp.pz()<=0.) // "String" moving backwards in CMS, abort collision !! ? M.K.
-  {
-#ifdef debug
-    G4cout<<"G4QFragment::ExciteSingDiffParticipants: *1* abort Collision!! *1*"<<G4endl;
-#endif
-    return false; 
-  }         
-  toCms.rotateZ(-Ptmp.phi());
-  toCms.rotateY(-Ptmp.theta());
-#ifdef debug
-  G4cout<<"G4QFragm::ExciteSingDiffParticipantts: Be4Boost Pproj="<<Pprojectile<<",Ptarg="
-        <<Ptarget<<G4endl;
-#endif
-  G4LorentzRotation toLab(toCms.inverse()); // Boost Rotation to LabSys (LS)
-  Pprojectile.transform(toCms);
-  Ptarget.transform(toCms);
-#ifdef debug
-  G4cout<< "G4QFragment::ExciteDiffParticipantts: AfterBoost Pproj="<<Pprojectile<<"Ptarg="
-        <<Ptarget<<", cms4M="<<Pprojectile+Ptarget<<G4endl;
-
-  G4cout<<"G4QFragment::ExciteDiffParticipantts: ProjX+="<<Pprojectile.plus()<<", ProjX-="
-        <<Pprojectile.minus()<<", TargX+="<< Ptarget.plus()<<", TargX-="<<Ptarget.minus()
-        <<G4endl;
-#endif
-  G4LorentzVector Qmomentum(0.,0.,0.,0.);
-  G4int whilecount=0;
-  do
-  {
-    //  Generate pt  
-    G4double maxPtSquare=sqr(Ptarget.pz());
-    if(whilecount++>=500 && whilecount%100==0) // @@ M.K. Hardwired limits 
-#ifdef debug
-    G4cout<<"G4QFragment::ExciteSingDiffParticipantts: can loop, loopCount="<<whilecount
-          <<", maxPtSquare="<<maxPtSquare<<G4endl;
-#endif
-    if(whilecount>1000)                        // @@ M.K. Hardwired limits 
-    {
-#ifdef debug
-      G4cout<<"G4QFragmentation::ExciteSingDiffParticipants: *2* abort Loop!! *2*"<<G4endl;
-#endif
-      return false;    //  Ignore this interaction 
-    }
-    Qmomentum=G4LorentzVector(GaussianPt(widthOfPtSquare,maxPtSquare),0);
-#ifdef debug
-    G4cout<<"G4QFragm::ExciteSingDiffParticipants: generated Pt="<<Qmomentum<<", ProjPt="
-          <<Pprojectile+Qmomentum<<", TargPt="<<Ptarget-Qmomentum<<G4endl;
-#endif
-    //  Momentum transfer
-    G4double Xmin = minmass/(Pprojectile.e() + Ptarget.e());
-    G4double Xmax=1.;
-    G4double Xplus =ChooseX(Xmin,Xmax);
-    G4double Xminus=ChooseX(Xmin,Xmax);
-#ifdef debug
-    G4cout<<"G4QFragm::ExciteSingDiffPartici:X-plus="<<Xplus<<",X-minus="<<Xminus<<G4endl;
-#endif
-    G4double pt2=G4ThreeVector(Qmomentum.vect()).mag2();
-    G4double Qplus =-pt2/Xminus/Ptarget.minus();
-    G4double Qminus= pt2/Xplus /Pprojectile.plus();
-    if (KeepProjectile)
-      Qminus=(projectile->GetMass2()+pt2)/(Pprojectile.plus()+Qplus) - Pprojectile.minus();
-    else Qplus=Ptarget.plus() - (target->GetMass2()+pt2)/(Ptarget.minus()-Qminus);  
-    Qmomentum.setPz((Qplus-Qminus)/2);
-    Qmomentum.setE( (Qplus+Qminus)/2);
-#ifdef debug
-    G4cout<<"G4QFragm::ExciteDiffParticip: Qplus="<<Qplus<<", Qminus="<<Qminus<<", pt2="
-          <<pt2<<", Qmomentum="<<Qmomentum<<", ProjM="<<(Pprojectile+Qmomentum).mag()
-          <<", TargM="<<(Ptarget-Qmomentum).mag()<<G4endl;
-#endif
-    // while is different from the Double Diffractive Excitation (@@ !)
-    //} while((Pprojectile+Qmomentum).mag2()<= Mprojectile2 ||
-    //        (Ptarget-Qmomentum).mag2()<=Mtarget2);
-  } while((Ptarget-Qmomentum).mag2()<=Mtarget2 ||
-          (Pprojectile+Qmomentum).mag2()<=Mprojectile2 ||
-          (Ptarget-Qmomentum).e() < 0. || (Pprojectile+Qmomentum).e() < 0.);
-  Pprojectile += Qmomentum;
-  Ptarget     -= Qmomentum;
-#ifdef debug
-  G4cout<<"G4QFragmentation::ExciteSingDiffParticipan: Proj(Q)="<<Pprojectile<<"(E="
-        <<Pprojectile.e()<<"), Targ(Q)="<<Ptarget<<"(E="<<Ptarget.e()
-        <<"), Proj(back)="<<toLab*Pprojectile<<", Targ(bac)="<< toLab*Ptarget << G4endl;
-#endif
-  // Transform back and update SplitableHadron Participant.
-  Pprojectile.transform(toLab);
-  Ptarget.transform(toLab);
-#ifdef debug
-  G4cout<< "G4QFragm::ExciteSingDiffParticipants: TargetMass="<<Ptarget.mag()<<G4endl;
-#endif
-  target->Set4Momentum(Ptarget);  
-#ifdef debug
-  G4cout<<"G4QFragm::ExciteDiffParticipants:ProjectileMass="<<Pprojectile.mag()<<G4endl;
-#endif
-  projectile->Set4Momentum(Pprojectile);
-  return true;
-} // End of ExciteSingleDiffParticipants
-
-void G4QFragmentation::SetParameters(G4int nCM, G4double thresh, G4double QGSMth,
-                           G4double radNuc, G4double SigPt, G4double extraM, G4double minM)
-{//  =============================================================================
-  nCutMax            = nCM;            // max number of pomeron cuts
-  ThersholdParameter = thresh;         // internal threshold
-  QGSMThershold      = QGSMth;         // QGSM threshold
-  theNucleonRadius   = radNuc;         // effective radius of the nucleon inside Nucleus
-  widthOfPtSquare    = -2*SigPt*SigPt; // width^2 of pt for string excitation
-  minExtraMass       = extraM;         // minimum excitation mass 
-  minmass            = minM;           // mean pion transverse mass; used for Xmin 
-}
-
-G4double G4QFragmentation::ChooseX(G4double Xmin, G4double Xmax) const
-{
-// choose an x between Xmin and Xmax with P(x) ~ 1/x
-//  to be improved...
-  G4double range=Xmax-Xmin;
-  if( Xmin<= 0. || range <=0.) 
-  {
-    G4cerr<<"***G4QFragmentation::ChooseX: Xmin="<<Xmin<<", Xmax="<<Xmax<< G4endl;
-    G4Exception("G4QFragmentation::ChooseX:","72",FatalException,"BadXRange");
-  }
-  G4double x;
-  do {x=Xmin+G4UniformRand()*range;} while ( Xmin/x < G4UniformRand() );
-#ifdef debug
-  G4cout<<"G4QFragmentation::ChooseX: DiffractiveX="<<x<<G4endl;
-#endif
-  return x;
-} // End of ChooseX
-
-// Pt distribution @@ one can use 1/(1+A*Pt^2)^B
-G4ThreeVector G4QFragmentation::GaussianPt(G4double widthSq, G4double maxPtSquare) const
-{
-  G4double pt2; do{pt2=widthSq*std::log(G4UniformRand());} while (pt2>maxPtSquare);
-  pt2=std::sqrt(pt2);
-  G4double phi=G4UniformRand()*twopi;
-  return G4ThreeVector(pt2*std::cos(phi),pt2*std::sin(phi),0.);    
-} // End of GaussianPt
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QHadronBuilder.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QHadronBuilder.cc	(revision 1197)
+++ 	(revision )
@@ -1,228 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QHadronBuilder.cc,v 1.4 2009/04/29 07:53:18 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-// -----------------------------------------------------------------------------
-//      GEANT4 class implementation file
-//
-//      Created by Mikhail Kosov, October 2006 
-//      Simple algorithm making a hadron out of two partons
-//      For comparison mirror member functions are taken from G4 class:
-//      G4HadronBuilder
-// -----------------------------------------------------------------------------
-// Short description: A CHIPS class for the builder of the G4QHadron, which is a
-// resulting object for the string fragmentation. the G4QHadron has specific
-// parameters, which are not included in the G4QParticle from the CHIPS World,
-// but necessary for the string fragmentation. When the G4QHadron is created
-// (builded), it is converted to the CHIPS particle.
-// -----------------------------------------------------------------------------
-
-
-//#define debug
-
-#include "G4QHadronBuilder.hh"
-#include "Randomize.hh"
-#include "G4ParticleTable.hh"
-
-G4QHadronBuilder::G4QHadronBuilder()
-{
-  mesonSpinMix = 0.5;                     // probability to create vector meson 
-  baryonSpinMix= 0.5;                     // probability to create 3/2 baryon 
-  scalarMesonMixings.resize(6);
-  scalarMesonMixings[0] = 0.5; 
-  scalarMesonMixings[1] = 0.25; 
-  scalarMesonMixings[2] = 0.5; 
-  scalarMesonMixings[3] = 0.25; 
-  scalarMesonMixings[4] = 1.0; 
-  scalarMesonMixings[5] = 0.5; 
-  vectorMesonMixings.resize(6);
-  vectorMesonMixings[0] = 0.5;
-  vectorMesonMixings[1] = 0.0;
-  vectorMesonMixings[2] = 0.5;
-  vectorMesonMixings[3] = 0.0;
-  vectorMesonMixings[4] = 1.0;
-  vectorMesonMixings[5] = 1.0; 
-}
-
-G4QHadron* G4QHadronBuilder::Build(G4QParton* black, G4QParton* white)
-{
-  if(black->GetParticleSubType()=="di_quark" || white->GetParticleSubType()=="di_quark")
-  {
-    // Baryon consists of quark and at least one di-quark
-    Spin spin = (G4UniformRand() < baryonSpinMix) ? SpinHalf : SpinThreeHalf;
-    return Baryon(black,white,spin);
-  }
-  else
-  { 
-    // Meson consists of quark and abnti-quark
-    Spin spin = (G4UniformRand() < mesonSpinMix) ? SpinZero : SpinOne;
-    return Meson(black,white,spin);
-  }
-}
-
-G4QHadron* G4QHadronBuilder::BuildLowSpin(G4QParton* black, G4QParton* white)
-{
-  if(black->GetParticleSubType() == "quark" && white->GetParticleSubType() == "quark")
-        return Meson(black,white, SpinZero);
-  // returns a SpinThreeHalf Baryon if all quarks are the same
-  else  return Baryon(black,white, SpinHalf);
-}
-
-G4QHadron* G4QHadronBuilder::BuildHighSpin(G4QParton* black, G4QParton* white)
-{
-  if(black->GetParticleSubType() == "quark" && white->GetParticleSubType() == "quark")
-       return Meson(black,white, SpinOne);
-  else return Baryon(black,white,SpinThreeHalf);
-}
-
-G4QHadron* G4QHadronBuilder::Meson(G4QParton* black, G4QParton* white, Spin theSpin)
-{
-#ifdef debug
-  //  Verify Input Charge
-  G4double charge =  black->GetPDGCharge() + white->GetPDGCharge();  
-  if (std::abs(charge)>2 || std::abs(3*(charge-G4int(charge*1.001))) > perCent)
-    G4cerr<<"-Warning-G4QHadronBuilder::Meson: invalid TotalCharge="<<charge<<", PDG_q1=" 
-          <<black->GetPDGEncoding()<< ", PDG_q2="<<white->GetPDGEncoding()<<G4endl;
-#endif 
- 
-  G4int id1= black->GetPDGCode();
-  G4int id2= white->GetPDGCode();
-  if (std::abs(id1) < std::abs(id2))     // exchange black and white
-  {
-    G4int xchg = id1; 
-    id1 = id2;  
-    id2 = xchg;
-  }
-  if(std::abs(id1)>3) 
-  {
-    G4cerr<<"***G4QHadronBuilder::Meson: q1="<<id1<<", q2="<<id2
-          <<" while CHIPS is only SU(3)"<<G4endl;
-    G4Exception("G4QHadronBuilder::Meson:","72",FatalException,"HeavyQuarkFound");
-  } 
-  G4int PDGEncoding=0;
-  if(!(id1+id2))                      // annihilation case (neutral)
-  {     
-    G4double rmix = G4UniformRand();
-    G4int    imix = 2*std::abs(id1) - 1;
-    if(theSpin == SpinZero)
-       PDGEncoding = 110*(1 + G4int(rmix + scalarMesonMixings[imix - 1])
-                            + G4int(rmix + scalarMesonMixings[imix]    ) ) +  theSpin;
-    else
-       PDGEncoding = 110*(1 + G4int(rmix + vectorMesonMixings[imix - 1])
-                            + G4int(rmix + vectorMesonMixings[imix]    ) ) +  theSpin;
-  }
-  else
-  {
-    PDGEncoding = 100 * std::abs(id1) + 10 * std::abs(id2) +  theSpin;  
-    G4bool IsUp = (std::abs(id1)&1) == 0; // quark 1 is up type quark (u or c?)
-    G4bool IsAnti = id1 < 0;              // quark 1 is an antiquark?
-    if( (IsUp && IsAnti) || (!IsUp && !IsAnti) )  PDGEncoding = - PDGEncoding;
-    // Correction for the true neutral mesons
-    if( PDGEncoding == -111 || PDGEncoding == -113 || PDGEncoding == -223 || 
-        PDGEncoding == -221 || PDGEncoding == -331 || PDGEncoding == -333 )
-                                                               PDGEncoding = - PDGEncoding;
-  }
-  G4QHadron* Meson= new G4QHadron(PDGEncoding);
-#ifdef debug
-  if(std::abs(black->GetPDGCharge() + white->GetPDGCharge() - Meson->GetCharge()) > .001)
-    G4cout<<"-Warning-G4QHadronBuilder::Meson:wrongCharge, q1="<<black->GetPDGCharge()<<"("
-          <<black->->GetParticleName()<<"), q2="<<white->GetPDGCharge()<<"("
-          <<white->->GetParticleName()<<"), qM="<<Meson->GetCharge()<<"/"<<PDGEncoding
-          <<G4endl;
-#endif
-  return Meson;
-}
-
-G4QHadron* G4QHadronBuilder::Baryon(G4QParton* black, G4QParton* white, Spin theSpin)
-{
-#ifdef debug
-  //  Verify Input Charge
-  G4double charge =  black->GetPDGCharge() + white->GetPDGCharge();  
-  if(std::abs(charge) > 2 || std::abs(3*(charge - G4int(charge*1.001))) > perCent )
-    G4cerr<<"-Warning-G4QHadronBuilder::Baryon: invalid TotalCharge="<<charge<<", PDG_q1=" 
-          <<black->GetPDGEncoding()<< ", PDG_q2="<<white->GetPDGEncoding()<<G4endl;
-#endif 
-  G4int id1= black->GetPDGCode();
-  G4int id2= white->GetPDGCode();
-  if(std::abs(id1) < std::abs(id2))
-  {
-    G4int xchg = id1; 
-    id1 = id2;  
-    id2 = xchg;
-  }
-  if(std::abs(id1)<1000 || std::abs(id2)> 3) 
-  {
-    G4cerr<<"***G4QHadronBuilder::Baryon: q1="<<id1<<", q2="<<id2
-          <<" can't create a Baryon"<<G4endl;
-    G4Exception("G4QHadronBuilder::Baryon:","72",FatalException,"WrongQdQSequence");
-  }
-  G4int ifl1= std::abs(id1)/1000;
-  G4int ifl2 = (std::abs(id1) - ifl1 * 1000)/100;
-  G4int diquarkSpin = std::abs(id1)%10; 
-  G4int ifl3 = id2;
-  if (id1 < 0) {ifl1 = - ifl1; ifl2 = - ifl2;}
-  //... Construct baryon, distinguish Lambda and Sigma baryons.
-  G4int kfla = std::abs(ifl1);
-  G4int kflb = std::abs(ifl2);
-  G4int kflc = std::abs(ifl3);
-  G4int kfld = std::max(kfla,kflb);
-        kfld = std::max(kfld,kflc);
-  G4int kflf = std::min(kfla,kflb);
-        kflf = std::min(kflf,kflc);
-  G4int kfle = kfla + kflb + kflc - kfld - kflf;
-  //... baryon with content uuu or ddd or sss has always spin = 3/2
-  if(kfla==kflb && kflb==kflc) theSpin=SpinThreeHalf;   
-
-  G4int kfll = 0;
-  if(theSpin == SpinHalf && kfld > kfle && kfle > kflf)
-  { 
-    // Spin J=1/2 and all three quarks different
-    // Two states exist: (uds -> lambda or sigma0)
-    //   -  lambda: s(ud)0 s : 3122; ie. reverse the two lighter quarks
-    //   -  sigma0: s(ud)1 s : 3212
-    if(diquarkSpin == 1 )
-    {
-       if ( kfla == kfld) kfll = 1; // heaviest quark in diquark
-       else kfll = G4int(0.25 + G4UniformRand());
-    }   
-    if(diquarkSpin==3 && kfla!=kfld) kfll = G4int(0.75+G4UniformRand());
-  }
-  G4int PDGEncoding=0;
-  if (kfll == 1) PDGEncoding = 1000 * kfld + 100 * kflf + 10 * kfle + theSpin;
-  else           PDGEncoding = 1000 * kfld + 100 * kfle + 10 * kflf + theSpin;
-  if (id1 < 0) PDGEncoding = -PDGEncoding;
-  G4QHadron* Baryon= new G4QHadron(PDGEncoding);
-#ifdef debug
-  if(std::abs(black->GetPDGCharge() + white->GetPDGCharge()- Baryon->GetCharge()) > .001)
-    G4cout<<"-Warning-G4QHadronBuilder::Baryon:wrongCharge,dq="<<black->GetPDGCharge()<<"("
-          <<black->->GetParticleName()<<"), q="<<white->GetPDGCharge()<<"("
-          <<white->->GetParticleName()<<"), qB="<<Baryon->GetCharge()<<"/"<<PDGEncoding
-          <<G4endl;
-#endif
-  return Baryon;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGToG4Particle.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGToG4Particle.cc	(revision 1197)
+++ 	(revision )
@@ -1,435 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QPDGToG4Particle.cc,v 1.6 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-// ---------------- G4QG4ToG4Particle singletone class ------------------
-//                 by Mikhail Kossov, December 2003.
-// PDGCode->G4Particle convertor of the CHIPS Simulation Branch in GEANT4
-// ----------------------------------------------------------------------
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short description: This is a helper class, which converts the PDG-defined
-// G4QHadrons of the CHIPS model to the G4 particles, defined by the singetones.
-// -----------------------------------------------------------------------------
-
-
-//#define pdebug
-
-#include "G4QPDGToG4Particle.hh"
-
-G4QPDGToG4Particle::G4QPDGToG4Particle()
-{
-}
-
-G4QPDGToG4Particle::~G4QPDGToG4Particle() // The map is distructed only in the EndOfJob
-{
-}
-
-// Returns Pointer to the G4QPDGToG4Particle
-G4QPDGToG4Particle* G4QPDGToG4Particle::Get()
-//                  =========================
-{
-  static G4QPDGToG4Particle theMap;        // *** Static body of the G4QPDGToG4Particle ***
-  return &theMap;
-}
-
-G4ParticleDefinition* G4QPDGToG4Particle::GetParticleDefinition(G4int PDG)
-//                    ====================================================
-{
-  if(!PDG) return 0;
-  else if(PDG>0)     // Positive PDG Code
-  {
-    if(PDG<100)
-    {
-      if(PDG==22) return G4Gamma::Gamma();
-      else if(PDG>10 && PDG<17)
-      {
-        if(PDG<13)
-        {
-          if(PDG==11) return G4Electron::Electron();
-          else return G4NeutrinoE::NeutrinoE();
-        }
-        else
-        {
-          if(PDG<15)
-          {
-            if(PDG==13) return G4MuonMinus::MuonMinus();
-            else return G4NeutrinoMu::NeutrinoMu();
-          }
-          else
-          {
-            if(PDG==15) return G4TauMinus::TauMinus();
-            else return G4NeutrinoTau::NeutrinoTau();
-          }
-        }
-      }
-      else return 0; // @@ Warning can be added
-    } // End of the Lepton definition
-    else if(PDG<1000)
-    {
-      if(PDG<420)
-      {
-        if(PDG<320)
-        {
-          if(PDG==211) return G4PionPlus::PionPlus();
-          else if(PDG==111) return G4PionZero::PionZero();
-          else if(PDG==130) return G4KaonZeroLong::KaonZeroLong();
-          else if(PDG==221) return G4Eta::Eta();
-          else if(PDG==311) return G4KaonZero::KaonZero();
-          else return 0; // @@ Warning can be added
-        }
-        else
-        {
-          if(PDG==321) return G4KaonPlus::KaonPlus();
-          else if(PDG==331) return G4EtaPrime::EtaPrime();
-          else if(PDG==310) return G4KaonZeroShort::KaonZeroShort();
-          else if(PDG==411) return G4DMesonPlus::DMesonPlus();
-          else return 0; // @@ Warning can be added
-        }
-      }
-      else
-      {
-        if(PDG<500)
-        {
-          if(PDG==421) return G4DMesonZero::DMesonZero();
-          else if(PDG==431) return G4DsMesonPlus::DsMesonPlus();
-          else if(PDG==443) return G4JPsi::JPsi();
-          else return 0; // @@ Warning can be added
-        }
-        else
-        {
-          if(PDG==521) return G4BMesonPlus::BMesonPlus();
-          else if(PDG==511) return G4BMesonZero::BMesonZero();
-          else if(PDG==531) return G4BsMesonZero::BsMesonZero();
-          else return 0; // @@ Warning can be added
-        }
-      }
-    } // Emd of the Meson definition
-    else
-    {
-      if(PDG<3333)
-      {
-        if(PDG<3211)
-        {
-          if(PDG<3111)
-          {
-            if(PDG==2112) return G4Neutron::Neutron();
-            else if(PDG==2212) return G4Proton::Proton();
-            else return 0; // @@ Warning can be added
-          }
-          else
-          {
-            if(PDG==3112) return G4SigmaMinus::SigmaMinus();
-            else if(PDG==3122) return G4Lambda::Lambda();
-            else return 0; // @@ Warning can be added
-          }
-        }
-        else
-        {
-          if(PDG<3311)
-          {
-            if(PDG==3222) return G4SigmaPlus::SigmaPlus();
-            else if(PDG==3212) return G4SigmaZero::SigmaZero();
-            else return 0; // @@ Warning can be added
-          }
-          else
-          {
-            if(PDG==3312) return G4XiMinus::XiMinus();
-            else if(PDG==3322) return G4XiZero::XiZero();
-            else return 0; // @@ Warning can be added
-          }
-        }
-      }
-      else
-      {
-        if(PDG<4221)
-        {
-          if(PDG<4121)
-          {
-            if(PDG==3334) return G4OmegaMinus::OmegaMinus();
-            else if(PDG==4112) return G4SigmacZero::SigmacZero();
-            else return 0; // @@ Warning can be added
-          }
-          else
-          {
-            if(PDG==4122) return G4LambdacPlus::LambdacPlus();
-            else if(PDG==4212) return G4SigmacPlus::SigmacPlus();
-            else return 0; // @@ Warning can be added
-          }
-        }
-        else
-        {
-          if(PDG<4231)
-          {
-            if(PDG==4222) return G4SigmacPlusPlus::SigmacPlusPlus();
-            else if(PDG==4232) return G4XicPlus::XicPlus();
-            else return 0; // @@ Warning can be added
-          }
-          else
-          {
-            if(PDG==4132) return G4XicZero::XicZero();
-            else if(PDG==4332) return G4OmegacZero::OmegacZero();
-            else return 0; // @@ Warning can be added
-          }
-        }
-      }
-    } // End of Baryon definition
-  } 
-  else               // Negative PDG Code
-  {
-    G4int aPDG=-PDG;
-#ifdef pdebug
-    G4cout<<"G4QPDGToG4Particle:Antiparticle PDG="<<PDG<<G4endl;
-#endif
-    if(aPDG<100)
-    {
-      if(aPDG>10 && aPDG<17)
-      {
-        if(aPDG<13)
-        {
-          if(aPDG==11) return G4Positron::Positron();
-          else return G4AntiNeutrinoE::AntiNeutrinoE();
-        }
-        else
-        {
-          if(aPDG<15)
-          {
-            if(aPDG==13) return G4MuonPlus::MuonPlus();
-            else return G4AntiNeutrinoMu::AntiNeutrinoMu();
-          }
-          else
-          {
-            if(aPDG==15) return G4TauPlus::TauPlus();
-            else return G4AntiNeutrinoTau::AntiNeutrinoTau();
-          }
-        }
-      }
-      else return 0; // @@ Warning can be added
-    } // End of the Anti-Lepton definition
-    else if(aPDG<1000)
-    {
-#ifdef pdebug
-      G4cout<<"G4QPDGToG4Particle:AntiMesons aPDG="<<aPDG<<G4endl;
-#endif
-      if(aPDG<420)
-      {
-#ifdef pdebug
-       G4cout<<"G4QPDGToG4Particle:AntiSU(3)Mesons aPDG="<<aPDG<<G4endl;
-#endif
-        if(aPDG<320)
-        {
-#ifdef pdebug
-          G4cout<<"G4QPDGToG4Particle:AntiPi&KMesons aPDG="<<aPDG<<G4endl;
-#endif
-          if(aPDG==211) return G4PionMinus::PionMinus();
-          else if(aPDG==311) return G4AntiKaonZero::AntiKaonZero();
-          else return 0; // @@ Warning can be added
-        }
-        else
-        {
-#ifdef pdebug
-          G4cout<<"G4QPDGToG4Particle:AntiK&DMesons aPDG="<<aPDG<<G4endl;
-#endif
-          if(aPDG==321) 
-          {
-#ifdef pdebug
-            G4cout<<"G4QPDGToG4Particle:KaonMinus aPDG="<<aPDG<<G4endl;
-#endif
-            return G4KaonMinus::KaonMinus();
-          }
-          else if(aPDG==411) return G4DMesonMinus::DMesonMinus();
-          else return 0; // @@ Warning can be added
-        }
-      }
-      else
-      {
-        if(aPDG<500)
-        {
-          if(aPDG==421) return G4AntiDMesonZero::AntiDMesonZero();
-          else if(aPDG==431) return G4DsMesonMinus::DsMesonMinus();
-          else return 0; // @@ Warning can be added
-        }
-        else
-        {
-          if(aPDG==521) return G4BMesonMinus::BMesonMinus();
-          else if(aPDG==511) return G4AntiBMesonZero::AntiBMesonZero();
-          else if(aPDG==531) return G4AntiBsMesonZero::AntiBsMesonZero();
-          else return 0; // @@ Warning can be added
-        }
-      }
-    } // Emd of the Anti-Meson definition
-    else
-    {
-      if(aPDG<3333)
-      {
-        if(aPDG<3211)
-        {
-          if(aPDG<3111)
-          {
-            if(aPDG==2112) return G4AntiNeutron::AntiNeutron();
-            else if(aPDG==2212) return G4AntiProton::AntiProton();
-            else return 0; // @@ Warning can be added
-          }
-          else
-          {
-            if(aPDG==3112) return G4AntiSigmaMinus::AntiSigmaMinus();
-            else if(aPDG==3122) return G4AntiLambda::AntiLambda();
-            else return 0; // @@ Warning can be added
-          }
-        }
-        else
-        {
-          if(aPDG<3311)
-          {
-            if(aPDG==3222) return G4AntiSigmaPlus::AntiSigmaPlus();
-            else if(aPDG==3212) return G4AntiSigmaZero::AntiSigmaZero();
-            else return 0; // @@ Warning can be added
-          }
-          else
-          {
-            if(aPDG==3312) return G4AntiXiMinus::AntiXiMinus();
-            else if(aPDG==3322) return G4AntiXiZero::AntiXiZero();
-            else return 0; // @@ Warning can be added
-          }
-        }
-      }
-      else
-      {
-        if(aPDG<4221)
-        {
-          if(aPDG<4121)
-          {
-            if(aPDG==3334) return G4AntiOmegaMinus::AntiOmegaMinus();
-            else if(aPDG==4112) return G4AntiSigmacZero::AntiSigmacZero();
-            else return 0; // @@ Warning can be added
-          }
-          else
-          {
-            if(aPDG==4122) return G4AntiLambdacPlus::AntiLambdacPlus();
-            else if(aPDG==4212) return G4AntiSigmacPlus::AntiSigmacPlus();
-            else return 0; // @@ Warning can be added
-          }
-        }
-        else
-        {
-          if(aPDG<4231)
-          {
-            if(aPDG==4222) return G4AntiSigmacPlusPlus::AntiSigmacPlusPlus();
-            else if(aPDG==4232) return G4AntiXicPlus::AntiXicPlus();
-            else return 0; // @@ Warning can be added
-          }
-          else
-          {
-            if(aPDG==4132) return G4AntiXicZero::AntiXicZero();
-            else if(aPDG==4332) return G4AntiOmegacZero::AntiOmegacZero();
-            else return 0; // @@ Warning can be added
-          }
-        }
-      }
-    } // End of Anti-Baryon definition
-  } // End of Anti-particle definition
-  return 0;
-}
-
-void G4QPDGToG4Particle::DefineAllParticles()
-// ==========================================
-{
-  //======== LEPTONS =========
-  G4Gamma::GammaDefinition();
-  G4MuonPlus::MuonPlusDefinition();
-  G4MuonMinus::MuonMinusDefinition();
-  G4TauMinus::TauMinusDefinition();
-  G4TauPlus::TauPlusDefinition();
-  G4Electron::ElectronDefinition();
-  G4Positron::PositronDefinition();
-  G4NeutrinoTau::NeutrinoTauDefinition();
-  G4AntiNeutrinoTau::AntiNeutrinoTauDefinition();
-  G4NeutrinoMu::NeutrinoMuDefinition();
-  G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
-  G4NeutrinoE::NeutrinoEDefinition();
-  G4AntiNeutrinoE::AntiNeutrinoEDefinition();
-  //================ MESONS ===================
-  G4PionPlus::PionPlusDefinition();
-  G4PionMinus::PionMinusDefinition();
-  G4PionZero::PionZeroDefinition();
-  G4Eta::EtaDefinition();
-  G4EtaPrime::EtaPrimeDefinition();
-  G4KaonPlus::KaonPlusDefinition();
-  G4KaonMinus::KaonMinusDefinition();
-  G4KaonZero::KaonZeroDefinition();
-  G4AntiKaonZero::AntiKaonZeroDefinition();
-  G4KaonZeroLong::KaonZeroLongDefinition();
-  G4KaonZeroShort::KaonZeroShortDefinition();
-  G4DMesonPlus::DMesonPlusDefinition();
-  G4DMesonMinus::DMesonMinusDefinition();
-  G4DMesonZero::DMesonZeroDefinition();
-  G4AntiDMesonZero::AntiDMesonZeroDefinition();
-  G4DsMesonPlus::DsMesonPlusDefinition();
-  G4DsMesonMinus::DsMesonMinusDefinition();
-  G4JPsi::JPsiDefinition();
-  G4BMesonPlus::BMesonPlusDefinition();
-  G4BMesonMinus::BMesonMinusDefinition();
-  G4BMesonZero::BMesonZeroDefinition();
-  G4AntiBMesonZero::AntiBMesonZeroDefinition();
-  G4BsMesonZero::BsMesonZeroDefinition();
-  G4AntiBsMesonZero::AntiBsMesonZeroDefinition();
-  // ========== BARYONS ==================
-  G4Proton::ProtonDefinition();
-  G4AntiProton::AntiProtonDefinition();
-  G4Neutron::NeutronDefinition();
-  G4AntiNeutron::AntiNeutronDefinition();
-  G4Lambda::LambdaDefinition();
-  G4SigmaPlus::SigmaPlusDefinition();
-  G4SigmaZero::SigmaZeroDefinition();
-  G4SigmaMinus::SigmaMinusDefinition();
-  G4XiMinus::XiMinusDefinition();
-  G4XiZero::XiZeroDefinition();
-  G4OmegaMinus::OmegaMinusDefinition();
-  G4AntiLambda::AntiLambdaDefinition();
-  G4AntiSigmaPlus::AntiSigmaPlusDefinition();
-  G4AntiSigmaZero::AntiSigmaZeroDefinition();
-  G4AntiSigmaMinus::AntiSigmaMinusDefinition();
-  G4AntiXiMinus::AntiXiMinusDefinition();
-  G4AntiXiZero::AntiXiZeroDefinition();
-  G4AntiOmegaMinus::AntiOmegaMinusDefinition();
-  G4LambdacPlus::LambdacPlusDefinition();
-  G4SigmacPlusPlus::SigmacPlusPlusDefinition();
-  G4SigmacPlus::SigmacPlusDefinition();
-  G4SigmacZero::SigmacZeroDefinition();
-  G4XicPlus::XicPlusDefinition();
-  G4XicZero::XicZeroDefinition();
-  G4OmegacZero::OmegacZeroDefinition();
-  G4AntiLambdacPlus::AntiLambdacPlusDefinition();
-  G4AntiSigmacPlusPlus::AntiSigmacPlusPlusDefinition();
-  G4AntiSigmacPlus::AntiSigmacPlusDefinition();
-  G4AntiSigmacZero::AntiSigmacZeroDefinition();
-  G4AntiXicPlus::AntiXicPlusDefinition();
-  G4AntiXicZero::AntiXicZeroDefinition();
-  G4AntiOmegacZero::AntiOmegacZeroDefinition();
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPomeron.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPomeron.cc	(revision 1197)
+++ 	(revision )
@@ -1,139 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QPomeron.cc,v 1.3 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-// ------------------------------------------------------------
-//      GEANT 4 class implementation file
-//
-//      ---------------- G4QPomeron ----------------
-//      by Mikhail Kossov Oct, 2006
-//      class for a Pomeron used by Parton String Models
-//   For comparison mirror member functions are taken from G4 class:
-//   G4PomeronCrossSection
-// ------------------------------------------------------------------
-// Short description: Pomeron is one of the possible vacuum pole (the
-// second is Oderon, but they are identical in the present model), by
-// which particle exchang in the ellastic scattering process. Strings,
-// which appear as a cut of the Pomeron (optic theorem connects the
-// amplitude of scattering at zero angle with the total inelastic
-// cross-section), describe most of the processes at high energies.
-// ------------------------------------------------------------------
-
-#include "G4QPomeron.hh"
-
-G4QPomeron::G4QPomeron(G4int PDG)
-{
-  pomeron_Alpha=  1.0808;
-  pomeron_Alphaprime = 0.25/GeV/GeV;     
-  pomeron_Gamma_Hard = 0.0002/GeV/GeV;
-  pomeron_Alpha_Hard = 1.47;
-  G4int aP = std::abs(PDG);
-  if     (aP==2212||aP==2112)                   InitForNucleon();
-  else if(PDG==111||aP==211)                    InitForPion();
-  else if(PDG==130||PDG==310||aP==311||aP==321) InitForKaon();
-  else if(PDG==22)                              InitForGamma();
-  else if(aP==3122||aP==3222||aP==3212||aP==3112||aP==3322||aP==3312||aP==3334)
-                                                InitForNucleon();
-  else
-  {
-    G4cout<<"-Warning-G4QPomeron is initialised for PDGCode="<<PDG<<" as a pion"<<G4endl;
-    InitForPion();
-  }
-}
-
-G4double G4QPomeron::GetCutPomeronProbability(const G4double s,const G4double imp2,
-                                              const G4int nPom)
-{
-  G4double f=1; if(nPom>1) for(G4int i=2; i<= nPom; i++) f*=i; // Calculate factorial
-  G4double e=Eikonal(s,imp2); e+=e;                            // Doubled Eikonal
-  return std::exp(-e)*std::pow(e,nPom)/pomeron_C/f;
-}
-
-void G4QPomeron::InitForNucleon()
-{
-  // pomeron_S=  3.0*GeV*GeV;  
-  pomeron_S=  2.7*GeV*GeV;
-  // pomeron_Gamma=  2.16/GeV/GeV;      // ? M.K.
-  // pomeron_Gamma=  3.96/GeV/GeV;      // ? M.K.
-  pomeron_Gamma   = (2.6+3.96)/GeV/GeV; // ? M.K.
-  pomeron_C       = 1.4;
-  pomeron_Rsquare = 3.56/GeV/GeV;
-  /////pomeron_Alpha=  0.9808;          // This is very strange M.K. (was in GHAD QGSM)
-  // If pomeron_Gamma_Hard!=0 to fit total pp XS use pomeron_Gamma_Soft=2.35/GeV/GeV ? M.K.
-}
-
-void G4QPomeron::InitForPion()
-{
-  pomeron_S       = 1.5*GeV*GeV;
-  //pomeron_Gamma = 1.46/GeV/GeV;  // ? M.K.
-  pomeron_Gamma   = 2.17/GeV/GeV;  // ? M.K.
-  pomeron_C       = 1.6;
-  pomeron_Rsquare = 2.36/GeV/GeV;
-}
-
-void G4QPomeron::InitForKaon()
-{
-  pomeron_S       = 2.3*GeV*GeV;
-  //pomeron_Gamma = 1.31/GeV/GeV;  // ? M.K.
-  pomeron_Gamma   = 1.92/GeV/GeV;  // ? M.K.
-  pomeron_C       = 1.8;
-  pomeron_Rsquare = 1.96/GeV/GeV;
-}
-
-void G4QPomeron::InitForGamma()
-{
-  pomeron_S       = 1.7*GeV*GeV;
-  //pomeron_Gamma =  1.42/GeV/GeV; // ? M.K.
-  pomeron_Gamma   = 2.07/GeV/GeV;  // ? M.K.
-  pomeron_C       = 1.7;
-  pomeron_Rsquare = 2.16/GeV/GeV;
-}
-
-G4double G4QPomeron::Expand(G4double z)
-{
-
- G4double sum=1.;
- G4double current=1.;
- for(G4int j=2; j<21; j++)
- {
-   current *= -z*(j-1)/j/j;
-   sum+=current;
- }
- return sum;
-}
-
-
-
-
-
-
-
-
-    
-
-
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QSplitter.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QSplitter.cc	(revision 1197)
+++ 	(revision )
@@ -1,949 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//       1         2         3         4         5         6         7         8         9
-//34567890123456789012345678901234567890123456789012345678901234567890123456789012345678901
-//
-//
-// $Id: G4QSplitter.cc,v 1.7 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QSplitter ----------------
-//             by Mikhail Kossov, August 2005.
-//  class for Hadron-Hadron String Interaction used by the CHIPS Model
-// ----------------------------------------------------==---------------
-// Short description: the hadron befor the interaction must be splitted
-// in partons: quark-antiquark (mesons) or quark-diquark (baryon) parts
-// (some time in more than two parts, e.g. baryon in three quarks or a
-// few quark-antiquark pairs can be added for the splitting). Then each
-// projectile parton can create a parton pair (G4QPartonPair) with the
-// target parton. This pair with the big rapidity difference on the ends
-// creates a planar Quark-Gluon String (a pole). A pair of the projectile
-// partons with a pair of the target partons can create a cylindrical
-// string (doubled string in the algorithm - a cut).  
-// -------------------------------------------------===------------------
-
-//#define chdebug
-//#define debug
-//#define sdebug
-//#define ppdebug
-//#define cdebug
-//#define cldebug
-//#define edebug
-//#define fdebug
-//#define pdebug
-//#define rdebug
-//#define ffdebug
-//#define pcdebug
-//#define mudebug
-
-#include "G4QSplitter.hh"
-#include <cmath>
-using namespace std;
- 
-G4QSplitter::G4QSplitter(G4QHadron projHadron, const G4bool projEnvFlag,
-                     const G4int targPDG, const G4bool targEnvFlag) :
-  theProjEnvFlag(projEnvFlag), theTargEnvFlag(targEnvFlag), theWeight(1.)
-{
-  static const G4double mPi0 = G4QPDGCode(111).GetMass();
-  //static const G4double Temperature = 180.; // Temperature as a parameter
-  //static const G4double Temp2 = Temperature*Temperature; // Squared Temperature
-  theWorld= G4QCHIPSWorld::Get();             // Get a pointer to the CHIPS World
-#ifdef debug
-  G4cout<<">G4QSplitter::Constr:pPDG="<<projHadron.GetPDGCode()<<",tPDG="<<targPDG<<G4endl;
-#endif
-  // Target initialization
-  G4QPDGCode targQPDG(targPDG);
-  totBaryNum= targQPDG.GetBaryNum();          // Only a Prototype
-  totCharge = targQPDG.GetCharge();           // Only a Prototype
-  theTargQC = targQPDG.GetQuarkContent();
-  G4double tM = targQPDG.GetMass();
-  theTarg4Mom = G4LorentzVector(0.,0.,0.,tM);
-  G4QHadron targHadron(targQPDG,theTarg4Mom); // Target Hadron
-
-  // Projectile initialization
-  theProj4Mom = projHadron.Get4Momentum();
-  G4ThreeVector projBoost = theProj4Mom.boostVector(); // Projectile BoostVector to LS
-  G4ThreeVector projRBoost= -projBoost;       // Projevtile Boost vector to projectile CMS
-  G4QPDGCode projQPDG(projHadron.GetPDGCode());
-  theProjQC  = projQPDG.GetQuarkContent();
-  totBaryNum+= projQPDG.GetBaryNum();         // Final control value
-  totCharge += projQPDG.GetCharge();          // Final control value
-  tot4Mom  = theProj4Mom+theTarg4Mom;         // Final control value
-
-  G4double projM = projQPDG.GetMass();
-  G4double projM2 = projM*projM;
-  G4double pM2 = theProj4Mom.m2();
-  G4double tM2 = tM*tM;
-  G4double dM2 = fabs(pM2-projM2);
-  if(dM2>1.)G4cout<<"-Warn-G4QSplit::Con:dM2="<<dM2<<",M2="<<projM2<<",LVM2="<<pM2<<G4endl;
-  G4double pM=sqrt(pM2);                     // @@ do we need pM ? @@ (in print)
-
-  // === Print out of the input information at Creation time & tot 4-mom Calculation ======
-#ifdef pdebug
-  G4cout<<"G4QSplitter::Cons:PQC="<<theProjQC<<",TQC="<<theTargQC<<",P4Mom="<<theProj4Mom<<
-    theProj4Mom.m2()<<theProj4Mom.m()<<G4endl;
-  G4cout<<"G4QSplit::Cons: tC="<<totCharge<<",tB="<<totBaryNum<<",tot4M="<<tot4Mom<<G4endl;
-#endif
-  //G4int nP=theWorld->GetQPEntries();       // A#of init'ed particles in CHIPS World (@@?)
-  //G4int nCl=nP-90;                          // A#of init'ed clusters in CHIPS World (@@?)
-  //#ifdef pdebug
-  //G4cout<<"G4QS:Const:Before QEX:n="<<nP<<G4endl;
-  //#endif
-  // @@@@@@ ===> Here the Quark Exchange Quasmon Creation must be added <=== @@@@@@
-  // @@ --- old ---
-  //G4int nQTarg=theTargQC.GetTot();           // a#of Quark-partons in the Target
-  //G4int nQProj=theProjQC.GetTot();           // a#of Quark-partons in the Progectile
-  // @@ --- new ---
-  G4LorentzVector tSum=theProj4Mom+theTarg4Mom;
-  G4double sumM=tM+pM;
-  G4double dn=2.17*(tSum.m2()/sumM/sumM-1.);   // additional partons (gluons) - real
-  G4int np=static_cast<int>(dn);               // additional partons (gluons) - basic int
-  if(G4UniformRand()>1.-dn+np) np++;           // randomized int additional partons(gluons)
-  G4int nQTarg=theTargQC.GetTot()+np;          // a#of Quark-partons in the Target
-  G4int nQProj=theProjQC.GetTot()+np;          // a#of Quark-partons in the Progectile
-  // @@ --- new ---
-  //G4int mQTarg=theTargQC.GetTot();           // a#of Quark-partons in the Target
-  //G4int mQProj=theProjQC.GetTot();           // a#of Quark-partons in the Progectile
-  ////G4double tothM=tot4Mom.m()/2.;              // C.M. mass of the protons
-  ////G4int nQCM=classG4Quasmon.CalculateNumberOfQPartons(tothM);
-  //G4double tothM2=tot4Mom.m2()/4.;              // C.M. mass of the protons
-  //G4int nQCM=static_cast<int>((1.+sqrt(tothM2/Temp2+1.))/2.);
-  //G4int nQTarg=nQCM;           // a#of Quark-partons in the Target
-  //if(nQTarg<mQTarg) nQTarg=mQTarg;
-  //G4int nQProj=nQCM;           // a#of Quark-partons in the Progectile
-  //if(nQProj<mQProj) nQProj=mQProj;
-  // @@ --- end ---
-  G4double interc=1.;                        // @@ A parameter ?!
-#ifdef pdebug
-  G4cout<<"G4QSplit::Constr: nP="<<nQProj<<", nT="<<nQTarg<<", intercept="<<interc<<G4endl;
-#endif
-  // @@ Now projectile can be only meson or baryon @@ -- @@ Improve for clusters @@ --
-  G4LorentzVector pq4Mom(0.,0.,0.,0.);       // Prototype of LV of quark of progectile  
-  G4double rPMass=0.;                        // Prototype of the residProjMass (Meson case)
-  G4bool FreeFraF=false;                     // Prototype of the free exchange Flag
-  //if(G4UniformRand()<0.) FreeFraF=true;      // @@@@@@@@ Confirm the free exchange
-  if(nQProj<2) G4cout<<"***G4QSplitter::C: nQProj="<<nQProj<<"<2 ***FatalError***"<<G4endl;
-  else if(nQProj>2)                          // ---> Baryon case (clusters are not implem.)
-  {
-    //if(nQProj>3)G4cout<<"-Wor-G4QS::Const:nQProj="<<nQProj<<">3 is not implem'd"<<G4endl;
-    G4double xP=0.;
-    if(FreeFraF) xP=RandomizeMomFractionFree(nQProj);
-    else
-    {
-      xP=RandomizeMomFractionString(nQProj);
-      theWeight*=pow(xP,interc);
-      G4cout<<"************G4QSplitter::C: string xP="<<xP<<G4endl;
-    }
-    rPMass = sqrt(pM2*(1.-xP));              // Residual Projectile mass
-#ifdef pdebug
-    G4cout<<"G4QSplitter::C: nQProj="<<nQProj<<", xProj="<<xP<<", rPMass="<<rPMass<<G4endl;
-#endif
-  }
-  G4LorentzVector pr4Mom(0.,0.,0.,rPMass);   // Prototype of LV of the residual projectile
-  G4bool projFl=false;
-  G4bool targFl=false;
-  G4bool tmpBl=projHadron.DecayIn2(pq4Mom,pr4Mom);
-  if(tmpBl) projFl=true;                     // Proj decay is OK
-  //if(projHadron.DecayIn2(pq4Mom,pr4Mom)) projFl=true;
-  else G4cout<<"*Warning*G4QSplitter::Constr:ProjDecIn2 rpM="<<rPMass<<", pM="<<pM<<G4endl;
-#ifdef pdebug
-  G4cout<<"G4QSplit::C:"<<projFl<<" split PROJ in R4M="<<pr4Mom<<" & Q4M="<<pq4Mom<<G4endl;
-#endif
-  G4LorentzVector tq4Mom(0.,0.,0.,0.);       // Prototype of LV of quark of the target  
-  //if(nQTarg<3)G4cout<<"***G4QStr::Const: nQTarg="<<nQTarg<<"<3 ***FatalError***"<<G4endl;
-  //if(nQTarg>3)G4cout<<"-W-G4QS::Const: nQTarg="<<nQTarg<<">3 is not implemented"<<G4endl;
-  G4double xT=0.;
-  if(FreeFraF) xT=RandomizeMomFractionFree(nQTarg);
-  else
-  {
-    xT=RandomizeMomFractionString(nQTarg);
-    theWeight*=pow(xT,interc);
-    G4cout<<"************G4QSplitter::Constr: string xT="<<xT<<G4endl;
-  }
-  G4double rTMass = sqrt(tM2*(1.-xT));       // Residual Target mass
-#ifdef pdebug
-  G4cout<<"G4QS::C: nQTarg="<<nQTarg<<", xProj="<<xT<<", rTMass="<<rTMass<<G4endl;
-#endif
-  G4LorentzVector tr4Mom(0.,0.,0.,rTMass);   // Prototype of LV of the residual projectile
-  if(targHadron.DecayIn2(tq4Mom,tr4Mom)) targFl=true; // Targ decay is OK
-  else G4cout<<"**Warning**G4QSplit::Constr:TargDecIn2 rtM="<<rTMass<<", tM="<<tM<<G4endl;
-#ifdef pdebug
-  G4cout<<"G4QSplit::C:"<<targFl<<" split TARG in R4M="<<tr4Mom<<" & Q4M="<<tq4Mom<<G4endl;
-#endif
-  G4bool elasFl=false;                       // ByDefault avoid the elastic scattering
-  if (targFl && projFl)                      // --- @@ Now only for pp case @@ ---
-  {
-    G4LorentzVector newProj4M=pr4Mom+tq4Mom;
-    G4double nPM2=newProj4M.m2();
-    G4double npM=sqrt(nPM2);
-    G4bool pcorFl=false;                     // ByDefault no MassSh correction for newProj.
-    // @@ Just to try ---- Start
-    //G4LorentzVector newTarg4M=tr4Mom+pq4Mom;
-    //G4double nTM2=newTarg4M.m2();
-    //G4double ntM=sqrt(nTM2);
-#ifdef pdebug
-    //G4cout<<"G4QStr::C:ntM="<<ntM<<" <? tM="<<tM<<"+mPi0="<<mPi0<<" = "<<tM+mPi0<<G4endl;
-#endif
-    //if(ntM<tM+mPi0 && npM<pM+mPi0) elasFl=true; // Target&Project are underMinMass => El
-    // @@ Just to try ---- End
-#ifdef pdebug
-    G4cout<<"G4QSplit::C:npM="<<npM<<" <? pM="<<pM<<"+mPi0="<<mPi0<<" = "<<pM+mPi0<<G4endl;
-#endif
-    if(npM<pM+mPi0) // The projectile is under min mass (@@ In Future put other cut @@)
-    {
-      G4double valk=tq4Mom.e();         // Momentum of the target quark
-      //#ifdef pdebug
-      G4double dvalk=valk-tq4Mom.rho();
-      if(fabs(dvalk)>.00001) G4cout<<"**kp**G4QSplit::C:vk="<<valk<<",dvk="<<dvalk<<G4endl;
-      //#endif
-      G4double dmas=pM2-pr4Mom.m2();    // Difference of squared masses
-      G4double vale=pr4Mom.e();
-      G4ThreeVector pr=pr4Mom.v();
-      G4double valp=pr.mag();
-      G4ThreeVector upr=pr/valp;             // Unit vector in the pr direction
-      G4double cost=-(dmas/(valk+valk)-vale)/valp; // Initial cos(theta)
-      if(fabs(cost)>1.)
-      {
-#ifdef pdebug
-        G4cout<<"***p***>>>G4QSplitter::Constr: cost="<<cost<<G4endl;
-#endif
-        // Get max value of |cos(theta)| and change tq value to get the pM on mass shell
-        if(cost>0.)                        // --->>> cost>0.
-        {
-          valk=dmas/(vale-valp)/2;         // Momentum is too big (must be reduced)
-          G4ThreeVector tqf=upr*valk;      // final targetQuark 3-vector
-          tq4Mom.set(valk,tqf);            // Fill new 4-mom for targetQuark
-          tr4Mom.set(tM-valk,-tqf);        // Fill new 4-mom for targetResidual
-          newProj4M=tq4Mom+pr4Mom;         // Final Projectile 4-mom in LS
-        }
-        else                               // --->>> cost<0.
-        {
-          G4double hvalk=dmas/(vale+valp); // Momentum's too small (must be increased, LIM)
-          if(hvalk>tM)                     // Momentum can not be increased to this value
-          {
-#ifdef pdebug
-            G4cout<<"**p-Cor**>G4QSplitter::Constr: hvalk="<<hvalk<<" > tM="<<tM<<", dm="
-                  <<dmas<<", e="<<vale<<", p="<<valp<<", ct="<<cost<<G4endl;
-#endif
-            // Put the scatteredProjectile on the massShell, and rescatter the target quark
-            G4LorentzVector tmpProj4M=newProj4M+pq4Mom; // TempCriticalCompound for Project
-            newProj4M=G4LorentzVector(0.,0.,0.,pM);     // New Project is on the mass shell
-            G4QHadron tmpHadron(tmpProj4M);             // Create a Hadron for decay
-            pq4Mom=G4LorentzVector(0.,0.,0.,0.);        // NewProjParton on lightMassShell
-            tmpBl=tmpHadron.DecayIn2(newProj4M,pq4Mom); // Decay the Compound in newProg+pQ
-            if(!tmpBl)G4cout<<"G4QS::C:DecIn2 err "<<sqrt(tmpProj4M.m2())<<"<"<<pM<<G4endl;
-          }
-          else
-          {
-#ifdef pdebug
-            G4cout<<"***---***>G4QS::C: hvalk="<<hvalk<<" < tM="<<tM<<G4endl;
-#endif
-            valk=hvalk/2;                  // Momentum is too small (must be reduced)
-            G4ThreeVector tqf=upr*(-valk); // Final targetQuark 3-vector
-            tq4Mom.set(valk,tqf);          // Fill new 4-mom for targetQuark
-            tr4Mom.set(tM-valk,-tqf);      // Fill new 4-mom for targetResidual
-            newProj4M=tq4Mom+pr4Mom;
-          }
-        }
-        if(fabs(newProj4M.m()-pM)>.0001)G4cout<<"G4QS::C:"<<newProj4M.m()<<","<<pM<<G4endl;
-      }
-      else
-      {
-        // Turn the target quark-parton to the projectile residual in LS = CMSofTheTarget
-#ifdef pdebug
-        G4cout<<"---p--->>>G4QS::C: cost="<<cost<<G4endl;
-#endif
-        G4ThreeVector tq=tq4Mom.v();           // 3-mom of the targetQ (LS)
-        G4double      tqlp=upr.dot(tq);        // Projection of tq on the projectile
-        G4ThreeVector tql=upr*tqlp;            // tq part along pr
-        G4ThreeVector tqt=tq-tql;              // tq part perpendicular to pr
-        G4double      cosi=tqlp/valk;          // Initial cos(theta)
-        G4ThreeVector tqlf=tql*(cost/cosi);    // final tq part along pr
-        G4double      sini=sqrt(1.-cosi*cosi); // Initial sin(theta)
-        G4double      sint=sqrt(1.-cost*cost); // Desired sin(theta)
-        G4ThreeVector tqpf=tqt*(sint/sini);    // final tq part perpendicular pr
-        G4ThreeVector tqf=tqlf+tqpf;           // final tq
-        tq4Mom.setV(tqf);                      // Change the momentum direction of targetQ
-        tr4Mom.setV(-tqf);                     // Change the momentum direction of targetR
-        if(fabs(tqf.mag()-valk)>.0001)G4cout<<"*G4QS::C:||="<<tqf.mag()<<","<<valk<<G4endl;
-        newProj4M=tq4Mom+pr4Mom;
-        if(fabs(newProj4M.m()-pM)>.001)G4cout<<"*G4QS::C:"<<newProj4M.m()<<","<<pM<<G4endl;
-      }
-#ifdef pdebug
-      G4cout<<"G4QSplit::C: Proj under GS, newP4M="<<newProj4M<<", pq4M="<<pq4Mom<<G4endl;
-#endif
-      pcorFl=true;                           // Projectile is on the GS mass shell
-    }
-    G4bool tcorFl=false;                     // ByDefault no MassSh correction for newTarg.
-    G4LorentzVector newTarg4M=tr4Mom+pq4Mom;
-    G4double nTM2=newTarg4M.m2();
-    G4double ntM=sqrt(nTM2);
-    //newTarg4M=tr4Mom+pq4Mom;
-    //nTM2=newTarg4M.m2();
-    //ntM=sqrt(nTM2);
-#ifdef pdebug
-    G4cout<<"G4QSplit::C:ntM="<<ntM<<" <? tM="<<tM<<"+mPi0="<<mPi0<<" = "<<tM+mPi0<<G4endl;
-#endif
-    if(ntM<tM+mPi0 && !pcorFl) // The target is under min mass (@@ InFut put another cut@@)
-    {
-      // Turn the projectile quark-parton to the target rsidual in CMS of the Projectile
-      G4LorentzVector pqc4M=pq4Mom;        // projectileQuark => projCM system <step1>
-      pqc4M.boost(projRBoost);             // projectileQuark => projCM system <step2>
-      G4double valk=pqc4M.e();             // Momentum of the target quark in projCM
-      //#ifdef pdebug
-      G4double dvalk=valk-pqc4M.rho();
-      if(fabs(dvalk)>.00001) G4cout<<"***kt***G4QS::C:vk="<<valk<<",dvk="<<dvalk<<G4endl;
-      //#endif
-      G4double dmas=tM2-tr4Mom.m2();       // Difference of squared masses (targ - targRes)
-      G4LorentzVector trc4M=tr4Mom;        // targetResidual => projCM system <step1>
-      trc4M.boost(projRBoost);             // targetResidual => projCM system <step2>
-      G4double vale=trc4M.e();             // Energy of the targetResidual in projCM
-      G4ThreeVector tr=trc4M.v();          // 3-mom of the targetResidual in projCM
-      G4double valp=tr.mag();              // momentum of the targetResidual in projCM
-      if(fabs(dmas-tM2+trc4M.m2())>.1) G4cout<<"**t**G4QSplit::C: trM2="<<tr4Mom.m2()<<"="
-                                            <<trc4M.m2()<<","<<vale*vale-valp*valp<<G4endl;
-      G4ThreeVector utr=tr/valp;           // Unit vector in the tr direction in projCM
-      G4double cost=-(dmas/(valk+valk)-vale)/valp; // Initial cos(theta)
-      if(fabs(cost)>1.)
-      {
-#ifdef pdebug
-        G4cout<<"***t***>>>G4QSplitter::Constr: cost="<<cost<<G4endl;
-#endif
-        // Get max value of |cos(theta)| and change pq value to get the tM on mass shell
-        if(cost>0.)                            // --->>> cost>0.
-        {
-          valk=dmas/(vale-valp)/2;             // Momentum is too big (must be reduced)
-          G4ThreeVector pqf=utr*valk;          // final projectileQuark 3-vector
-          G4LorentzVector pqc4M(valk,pqf);     // Fill new 4-mom for projectileQuark in CM
-          pq4Mom=pqc4M;             // <step1> // Fill new 4-mom for projectileQuark in LS
-          pq4Mom.boost(projBoost);  // <step2> // Fill new 4-mom for projectileQuark in LS
-          G4LorentzVector prc4M(pM-valk,-pqf); // Fill new 4-mom for projectResidual in CM
-          pr4Mom=prc4M;             // <step1> // Fill new 4-mom for projectResidual in LS
-          pr4Mom.boost(projBoost);  // <step2> // Fill new 4-mom for projectResidual in LS
-          newTarg4M=pq4Mom+tr4Mom;             // Final Target 4-mom in LS
-        }
-        else                                   // --->>> cost<-1 => cost=-1
-        {
-          G4double hvalk=dmas/(vale+valp); // Momentum's too small (must be increased, LIM)
-          if(hvalk>pM)                     // Momentum can not be increased to this value
-          {
-#ifdef pdebug
-            G4cout<<"**t-Cor**>G4QS::C: hvalk="<<hvalk<<" > pM="<<pM<<", dm="<<dmas<<", e="
-                  <<vale<<", p="<<valp<<", ct="<<cost<<G4endl;
-#endif
-            // Put the scatteredProjectile on the massShell, rescatter the targetQuark (LS)
-            G4LorentzVector tmpTarg4M=newTarg4M+tq4Mom; // TempCriticalCompound for Target
-            newTarg4M=G4LorentzVector(0.,0.,0.,tM);     // New Target is on the mass shell
-            G4QHadron tmpHadron(tmpTarg4M);             // Create a CompHadron for decay
-            tq4Mom=G4LorentzVector(0.,0.,0.,0.);        // NewTargParton on lightMassShell
-            tmpBl=tmpHadron.DecayIn2(newTarg4M,tq4Mom); // Decay the Compound in newTarg+tQ
-            if(!tmpBl)G4cout<<"G4QS::C:DecIn2-err "<<sqrt(tmpTarg4M.m2())<<"<"<<tM<<G4endl;
-          }
-          else
-          {
-#ifdef pdebug
-            G4cout<<"***---***>G4QSplitter::Constr: hvalk="<<hvalk<<" < pM="<<pM<<G4endl;
-#endif
-            valk=hvalk/2;                        // Momentum is too small (mustBeIncreased)
-            G4ThreeVector pqf=utr*(-valk);       // Final projectileQuark 3-vector in CM
-            G4LorentzVector pqc4M(valk,pqf);     // Fill new 4-mom for projectQuark in CM
-            pq4Mom=pqc4M;             // <step1> // Fill new 4-mom for projectQuark in LS
-            pq4Mom.boost(projBoost);  // <step1> // Fill new 4-mom for projectQuark in LS
-            G4LorentzVector nTc4M=pqc4M+trc4M;
-#ifdef pdebug
-            G4cout<<"G4QS::C:After Boost="<<projBoost<<G4endl;
-            G4cout<<"G4QS::C:Aft: q="<<pqc4M<<pqc4M.m2()<<",t="<<nTc4M<<nTc4M.m2()<<G4endl;
-            G4cout<<"G4QS::C:E="<<nTc4M.e()<<" = q="<<pqc4M.e()<<"="<<valk<<" + r="<<
-                  trc4M.e()<<"="<<vale<<" = "<<pqc4M.e()+trc4M.e()<<",c="<<pq4Mom<<G4endl;
-            if(fabs(nTc4M.m()-tM)>.0001) G4cout<<"*G4QS::C:"<<nTc4M.m()<<"!="<<tM<<G4endl;
-            G4double pp=pqf.dot(tr);             // trc3M*pqc=-valk*valp
-            G4double ee=vale*valk;
-            G4cout<<"G4QS::C:tM2="<<tM2<<"="<<tM*tM<<",pp="<<pp*2<<"="<<-valk*valp*2<<",d="
-                  <<ee-pp<<"="<<dmas<<"="<<(tM2-trc4M.m2())<<",u="<<utr.dot(utr)<<G4endl;
-            G4double sen=nTc4M.e();
-            G4double smo=nTc4M.rho();
-            G4cout<<"G4QS::C:qM2="<<pqc4M.m2()<<",rM2="<<trc4M.m2()<<",E="<<sen<<"="<<
-              vale+valk<<",P="<<smo<<"="<<valp-valk<<",M="<<sqrt(sen*sen-smo*smo)<<G4endl;
-#endif
-            G4LorentzVector prc4M(pM-valk,-pqf); // Fill new 4-mom for projectResid in CM
-            pr4Mom=prc4M;             // <step1> // Fill new 4-mom for projectResid in LS
-            pr4Mom.boost(projBoost);  // <step2> // Fill new 4-mom for projectResid in LS
-            newTarg4M=pq4Mom+tr4Mom;
-          }
-        }
-        if(fabs(newTarg4M.m()-tM)>.0001)
-          G4cout<<"***************G4QSplitter::Constr: M="<<newTarg4M.m()<<"#"<<pM<<G4endl;
-      }
-      else // -1<cos(theta)<1 - only rotate the projQ
-      {
-        // Turn the projectile quark-parton to the target residual in CMS of the Projectile
-#ifdef pdebug
-        G4cout<<"---t--->>>G4QSplitter::Constr: cost="<<cost<<G4endl;
-#endif
-        G4LorentzVector prc4M=pr4Mom;          // projectileQuark => projCM system <step1>
-        prc4M.boost(projRBoost);               // projectileQuark => projCM system <step2>
-        G4ThreeVector pq=pqc4M.v();            // 3-vector of the projQ in projCM
-        G4double      pqlp=utr.dot(pq);        // Projection of pq on the target in projCM
-        G4ThreeVector pql=utr*pqlp;            // pq part along pr
-        G4ThreeVector pqt=pq-pql;              // pq part perpendicular to tr in projCM
-        G4double      cosi=pqlp/valk;          // Initial cos(theta)
-        G4ThreeVector pqlf=pql*(cost/cosi);    // final pq part along tr
-        G4double      sini=sqrt(1.-cosi*cosi); // Initial sin(theta)
-        G4double      sint=sqrt(1.-cost*cost); // Desired sin(theta)
-        G4ThreeVector pqpf=pqt*(sint/sini);    // final pq part perpendicular tr
-        G4ThreeVector pqf=pqlf+pqpf;           // final pq
-        pqc4M.setV(pqf);                       // Change the momentumDirection of projQ(CM)
-        pq4Mom=pqc4M;                          // Fill new 4-mom for projQuark in LS<step1>
-        pq4Mom.boost(projBoost);               // Fill new 4-mom for projQuark in LS<step2>
-        prc4M.setV(-pqf);                      // Change the momentumDirection of projR(CM)
-#ifdef pdebug
-        G4LorentzVector nT4M=pqc4M+trc4M;
-        if(fabs(nT4M.m()-tM)>.001)G4cout<<"****t****G4QS::C:M="<<nT4M.m()<<"="<<tM<<G4endl;
-#endif
-        pr4Mom=prc4M;               // <step1> // Fill new 4-mom for projResidual in LS
-        pr4Mom.boost(projBoost);    // <step2> // Fill new 4-mom for projResidual in LS
-        if(fabs(pqf.mag()-valk)>.0001)G4cout<<"*G4QS::C:||="<<pqf.mag()<<"="<<valk<<G4endl;
-        newTarg4M=pq4Mom+tr4Mom;
-        if(fabs(newTarg4M.m()-tM)>.001)G4cout<<"*G4QS::C:"<<newTarg4M.m()<<"="<<tM<<G4endl;
-      }
-#ifdef pdebug
-      G4cout<<"G4QSplit::C: Targ under GS, newT4M="<<newTarg4M<<", tq4M="<<tq4Mom<<G4endl;
-#endif
-      tcorFl=true;                  // Target is on the GS mass shell
-      newProj4M=pr4Mom+tq4Mom;      // Recalculate the Projectile (!)
-      nPM2=newProj4M.m2();
-      npM=sqrt(nPM2);
-#ifdef pdebug
-      G4cout<<"G4QSpl::C:npM="<<npM<<" <? pM="<<pM<<"+mPi0="<<mPi0<<" = "<<pM+mPi0<<G4endl;
-#endif
-      if(npM<pM+mPi0) elasFl=true;    // Force elastic scattering (@@InFut putAnotherCut@@)
-    }
-    else if(ntM<tM+mPi0) elasFl=true; // Force elastScattering (@@InFut put another cut@@)
-    if(elasFl)                        // Ellastic scattering happened
-    {
-      // **** Put the hadrons on the mass shell conserving the CMS scattering angle ****
-      G4LorentzVector theTot4M=theProj4Mom+theTarg4Mom;// 4-momentum of CMS of "targ+proj"
-      G4ThreeVector cmsBoost = theTot4M.boostVector(); // CMS Boost Vector "CMS to LS"
-      G4ThreeVector cmsRBoost= -cmsBoost;              // CMS Boost Vector "LS to CMS"
-      G4LorentzVector cmsProj4M=theProj4Mom; // LS projectile => CMS <step1>
-      cmsProj4M.boost(cmsRBoost);            // LS projectile => CMS <step2>
-      G4LorentzVector cmsTarg4M=theTarg4Mom; // LS target => CMS <step1>
-      cmsTarg4M.boost(cmsRBoost);            // LS target => CMS <step2>
-      G4double pcm=cmsProj4M.rho();          // CMS momentum for the elastic scattering
-      //#ifdef pdebug
-      if(fabs(cmsTarg4M.rho()-pcm) > 0.0001)
-        G4cout<<"-Worning-G4QSplitter::Constr: P="<<cmsTarg4M.rho()<<"#"<<pcm<<G4endl;
-      //#endif
-      G4LorentzVector cmsNewPr4M=newProj4M;  // LS finalProj => CMS <step1>
-      cmsNewPr4M.boost(cmsRBoost);           // LS finalProj => CMS <step2>
-      G4ThreeVector puV=cmsNewPr4M.v()/cmsNewPr4M.rho(); // Direction of the projectile
-      //#ifdef pdebug
-      G4LorentzVector cmsNewTg4M=newTarg4M;  // LS finalTarg => CMS <step1> @@ TMP
-      cmsNewTg4M.boost(cmsRBoost);           // LS finalTarg => CMS <step2> @@ TMP
-      G4ThreeVector tuV=cmsNewTg4M.v()/cmsNewTg4M.rho(); // Direction of the projectile
-      if(1.+puV.dot(tuV) > 0.001)
-        G4cout<<"-Warning-G4QSplitter::Constr: ct="<<puV.dot(tuV)<<G4endl;
-      //#endif
-      cmsProj4M.setV(puV*pcm);
-      newProj4M=cmsProj4M;
-      newProj4M.boost(cmsBoost);             // CMS FinalProjectile => LS <step2>
-      G4QHadron* projH = new G4QHadron(projHadron); // Prototype of the Projectile Hadron
-      projH->Set4Momentum(newProj4M);
-      theQHadrons.push_back(projH);          // Fill theProjectileHadron(delete equivalent)
-#ifdef pdebug
-      G4cout<<"G4QSplitter::Constr: Fill ElastProjH="<<projQPDG<<newProj4M<<G4endl;
-#endif
-      cmsTarg4M.setV(puV*(-pcm));
-      newTarg4M=cmsTarg4M;
-      newTarg4M.boost(cmsBoost);             // CMS FinalTarget => LS <step2>
-      G4QHadron* targH = new G4QHadron(targQPDG,newTarg4M); // Prototype of theTargetHadron
-      theQHadrons.push_back(targH);          // Fill the Target Hadron (delete equivalent)
-#ifdef pdebug
-      G4cout<<"G4QSplitter::Constr: Fill ElastTargH="<<targQPDG<<newTarg4M<<G4endl;
-#endif
-    }
-    else
-    {
-      // Inelastic scattering: one or both hadrons are excited (charge exchange is not in).
-      if(pcorFl)                             // Projectile is on the mass shell
-      {
-        G4QHadron* projH = new G4QHadron(projHadron); // Prototype of the Projectile Hadron
-        projH->Set4Momentum(newProj4M);
-        theQHadrons.push_back(projH);        // Fill theProjectileHadron(delete equivalent)
-        G4Quasmon* targQ = new G4Quasmon(targQPDG.GetQuarkContent(),newTarg4M);
-        theQuasmons.push_back(targQ);        // Insert Projectile Quasmon (delete equival.)
-      }
-      if(tcorFl)                             // Target is on the mass shell
-      {
-        G4Quasmon* projQ = new G4Quasmon(projHadron.GetQC(),newProj4M);
-        theQuasmons.push_back(projQ);        // Insert Projectile Quasmon (delete equival.)
-        G4QHadron* targH = new G4QHadron(targQPDG,newTarg4M);//Prototype of theTargetHadron
-        theQHadrons.push_back(targH);        // Fill the Target Hadron (delete equivalent)
-      }
-      else                                   // Both are excited (two Quasmons only) 
-      {
-        G4Quasmon* projQ = new G4Quasmon(projHadron.GetQC(),newProj4M);
-        theQuasmons.push_back(projQ);        // Insert Projectile Quasmon (delete equival.)
-        G4Quasmon* targQ = new G4Quasmon(targQPDG.GetQuarkContent(),newTarg4M);
-        theQuasmons.push_back(targQ);        // Insert Projectile Quasmon (delete equival.)
-      }
-    }
-  }
-  else G4cout<<"-Warning-G4QSplitter::Constr:T="<<targFl<<" or P="<<projFl<<" err"<<G4endl;
-#ifdef pdebug
-  G4cout<<"G4QSplitter::Constructor: *** End of Constructor ***, elF="<<elasFl<<G4endl;
-#endif
-  // This is the first Check of the control values -- @@ Must be remade @@ --
-#ifdef chdebug
-  G4int finCharge=0;
-  G4int finBaryoN=0;
-  G4int nHad=theQHadrons.size();
-  if(nHad) for(G4int ih=0; ih<nHad; ih++)
-  {
-    finCharge+=theQHadrons[ih]->GetCharge();
-    finBaryoN+=theQHadrons[ih]->GetBaryonNumber();
-  }
-  G4int nQuas=theQuasmons.size();
-  if(nQuas) for(G4int iq=0; iq<nQuas; iq++)
-  {
-    finCharge+=theQuasmons[iq]->GetCharge();
-    finBaryoN+=theQuasmons[iq]->GetBaryonNumber();
-  }
-  G4cout<<"G4QSpl::C:nH="<<nHad<<",nQ="<<nQuas<<",C="<<finCharge<<",B="<<finBaryoN<<G4endl;
-  if(finCharge!=totCharge || finBaryoN!=totBaryNum)
-  {
-    G4cerr<<"***G4QSptitter::C:tC="<<totCharge<<",C="<<finCharge<<",tB="<<totBaryNum
-          <<",B="<<finBaryoN<<G4endl;
-    if(nHad) for(G4int h=0; h<nHad; h++)
-    {
-      G4QHadron* cH = theQHadrons[h];
-      G4cerr<<"G4QSplit::C: h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl;
-    }
-    if(nQuas) for(G4int q=0; q<nQuas; q++)
-    {
-      G4Quasmon* cQ = theQuasmons[q];
-      G4cerr<<"G4QSplit::C: q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl;
-    }
-  }
-#endif
-} // End of the G4QSplitter constructor
-
-G4QSplitter::G4QSplitter(const G4QSplitter &right)
-{
-  // theQuasmons (Vector)
-  G4int nQ             = right.theQuasmons.size();
-  if(nQ) for(G4int iq=0; iq<nQ; iq++)
-  {
-    G4Quasmon* curQ    = new G4Quasmon(right.theQuasmons[iq]);
-#ifdef fdebug
-    G4cout<<"G4QSplit::CopyByVal:Q#"<<iq<<","<<curQ->GetQC()<<curQ->Get4Momentum()<<G4endl;
-#endif
-    theQuasmons.push_back(curQ);             // (delete equivalent)
-  }
-  theProjEnvFlag  = right.theProjEnvFlag;
-  theTargEnvFlag  = right.theTargEnvFlag;
-  theWeight       = right.theWeight;
-  theProjQC       = right.theProjQC;
-  theTargQC       = right.theTargQC;
-  theProj4Mom     = right.theProj4Mom;
-  theTarg4Mom     = right.theTarg4Mom;
-  
-  theWorld        =  right.theWorld; 
-  tot4Mom         =  right.tot4Mom;
-  totCharge       =  right.totCharge;
-  totBaryNum      =  right.totBaryNum;
-}
-
-const G4QSplitter& G4QSplitter::operator=(const G4QSplitter &right)
-{// ========================================================================
-  if(this != &right)                          // Beware of self assignment
-  {
-    // theQuasmons (Vector)
-    G4int iQ             = theQuasmons.size();
-    if(iQ) for(G4int jq=0; jq<iQ; jq++) delete theQuasmons[jq];
-    theQuasmons.clear();
-    G4int nQ             = right.theQuasmons.size();
-    if(nQ) for(G4int iq=0; iq<nQ; iq++)
-    {
-      G4Quasmon* curQ    = new G4Quasmon(right.theQuasmons[iq]);
-#ifdef fdebug
-      G4cout<<"G4QSpl::CopyByVal:Q#"<<iq<<","<<curQ->GetQC()<<curQ->Get4Momentum()<<G4endl;
-#endif
-      theQuasmons.push_back(curQ);             // (delete equivalent)
-    }
-    theProjEnvFlag  = right.theProjEnvFlag;
-    theTargEnvFlag  = right.theTargEnvFlag;
-    theWeight       = right.theWeight;
-    theProjQC       = right.theProjQC;
-    theTargQC       = right.theTargQC;
-    theProj4Mom     = right.theProj4Mom;
-    theTarg4Mom     = right.theTarg4Mom;
-  
-    theWorld        =  right.theWorld; 
-    tot4Mom         =  right.tot4Mom;
-    totCharge       =  right.totCharge;
-    totBaryNum      =  right.totBaryNum;
-  }
-  return *this;
-}
-
-G4QSplitter::G4QSplitter(G4QSplitter* right)
-{
-  // theQuasmons (Vector)
-  G4int nQ             = right->theQuasmons.size();
-  if(nQ) for(G4int iq=0; iq<nQ; iq++)
-  {
-    G4Quasmon* curQ    = new G4Quasmon(right->theQuasmons[iq]);
-#ifdef fdebug
-    G4cout<<"G4QSpl::CopyByPoint:Q#"<<iq<<","<<curQ->GetQC()<<curQ->Get4Momentum()<<G4endl;
-#endif
-    theQuasmons.push_back(curQ);             // (delete equivalent)
-  }
-  theProjEnvFlag  = right->theProjEnvFlag;
-  theTargEnvFlag  = right->theTargEnvFlag;
-  theWeight       = right->theWeight;
-  theProjQC       = right->theProjQC;
-  theTargQC       = right->theTargQC;
-  theProj4Mom     = right->theProj4Mom;
-  theTarg4Mom     = right->theTarg4Mom;
-  
-  theWorld        =  right->theWorld; 
-  tot4Mom         =  right->tot4Mom;
-  totCharge       =  right->totCharge;
-  totBaryNum      =  right->totBaryNum;
-}
-
-G4QSplitter::~G4QSplitter()
-{
-#ifdef debug
-  G4cout<<"~G4QSplitter: before theQHadrons nH="<<theQHadrons.size()<<G4endl;
-#endif
-  for_each(theQHadrons.begin(), theQHadrons.end(), DeleteQHadron());
-#ifdef debug
-  G4cout<<"~G4QSplitter: before theQuasmons nQ="<<theQuasmons.size()<<G4endl;
-#endif
-  for_each(theQuasmons.begin(), theQuasmons.end(), DeleteQuasmon());
-#ifdef debug
-  G4cout<<"~G4QSplitter: === DONE ==="<<G4endl;
-#endif
-}
-
-// ================== Initialization of Static Parameters ============
-//G4double G4QSplitter::StParName=0.;     // Static Parameter (Example)
-//G4bool   G4QSplitter::stFlag=false;     // Static Flag (Example)
-
-// Fill the private static parameters
-//void G4QSplitter::SetParameters(G4double aStPar, G4bool aStFlag)
-//{//  ====================================================================================
-//  StParName=aStPar;       // (Example)
-//  stFlag=aStFlag;         // (Example)
-//}
-
-
-//The public Hadronisation function with the Exception treatment (del respons. of User !)
-G4QHadronVector* G4QSplitter::Fragment()
-{//              ========================== -- @@ Must be changed @@ --
-  // Make the final check before filling the output -- @@ Must be changed @@ --
-#ifdef chdebug
-  G4int fCharge=0;
-  G4int fBaryoN=0;
-  G4int nHad=theQHadrons.size();
-  if(nHad) for(G4int ih=0; ih<nHad; ih++)
-  {
-    fCharge+=theQHadrons[ih]->GetCharge();
-    fBaryoN+=theQHadrons[ih]->GetBaryonNumber();
-  }
-  G4int nQuas=theQuasmons.size();
-  if(nQuas)for(G4int iqs=0; iqs<nQuas; iqs++)
-  {
-    fCharge+=theQuasmons[iqs]->GetCharge();
-    fBaryoN+=theQuasmons[iqs]->GetBaryonNumber();
-  }
-  if(fCharge!=totCharge || fBaryoN!=totBaryNum)
-  {
-    G4cerr<<"***G4QS::Frag:tC="<<totCharge<<",C="<<fCharge<<",tB="<<totBaryNum
-          <<",B="<<fBaryoN<<G4endl;
-    if(nHad) for(G4int h=0; h<nHad; h++)
-    {
-      G4QHadron* cH = theQHadrons[h];
-      G4cerr<<":G4QS::HQ:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl;
-    }
-    if(nQuas) for(G4int q=0; q<nQuas; q++)
-    {
-      G4Quasmon* cQ = theQuasmons[q];
-      G4cerr<<":G4QS::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl;
-    }
-  }
-#endif
-  G4QHadronVector dummy;       // Prototype of the output G4QuasmonVector to avoid wornings
-  G4QHadronVector* finalQHadrons = &dummy; // Prototype of the output G4QuasmonVector
-  G4int nH = theQHadrons.size();
-  if(nH)
-  {
-    for(G4int ih=0; ih<nH; ih++)
-    {
-      G4QHadron* curH     = new G4QHadron(theQHadrons[ih]);
-      finalQHadrons->push_back(curH);                  // deleted after the "while LOOP"
-    }
-  }
-  for_each(theQuasmons.begin(),theQuasmons.end(),DeleteQuasmon()); //CleanUp Quasm's
-  theQuasmons.clear();
-  return finalQHadrons;
-} // End of the Fragmentation member function
-
-//The public extraction of the number of the created (in Constructor) G4QHadrons
-G4int G4QSplitter::GetNOfHadrons() {return theQHadrons.size();}
-
-//The public extraction of the number of the created (in Constructor) G4Quasmons
-G4int G4QSplitter::GetNOfQuasmons() {return theQuasmons.size();}
-
-//The public extraction of the projectile environment flag ("true" - exists)
-G4bool G4QSplitter::GetProjEnvFlag() {return theProjEnvFlag;}
-
-//The public extraction of the target environment flag ("true" - exists)
-G4bool G4QSplitter::GetTargEnvFlag() {return theTargEnvFlag;}
-
-//The public Quasmons duplication with delete responsibility of User (!)
-G4QuasmonVector* G4QSplitter::GetQuasmons()
-{//              ==============================
-  G4int nQ=theQuasmons.size();
-#ifdef pdebug
-  G4cout<<"G4QSplitter::GetQuasmons is called nQ="<<nQ<<G4endl;
-#endif
-  G4QuasmonVector* quasmons = new G4QuasmonVector; // Intermediate
-  if(nQ) for(G4int iq=0; iq<nQ; iq++)
-  {
-#ifdef pdebug
-    G4cout<<"G4QStr::GetQuasmons:Q#"<<iq<<",QPDG="<<theQuasmons[iq]->GetQPDG()<<",QQC="
-          <<theQuasmons[iq]->GetQC()<<",Q4M="<<theQuasmons[iq]->Get4Momentum()<<G4endl;
-#endif
-    if(theQuasmons[iq]->GetStatus())
-    {
-      G4Quasmon* curQ = new G4Quasmon(theQuasmons[iq]);
-      quasmons->push_back(curQ);                   // (del. equiv. - user is responsibile)
-    }
-  }
-#ifdef pdebug
-  G4cout<<"G4QSplitter::GetQuasmons ===OUT==="<<G4endl;
-#endif
-  return quasmons;
-} // End of GetQuasmons
-
-//The public Quasmons duplication with delete responsibility of User (!)
-G4QHadronVector* G4QSplitter::GetHadrons()
-{//              =============================
-  G4int nH=theQHadrons.size();
-#ifdef pdebug
-  G4cout<<"G4QSplitter::GetHadrons is called nH="<<nH<<G4endl;
-#endif
-  G4QHadronVector* hadrons = new G4QHadronVector; // Intermediate
-  if(nH) for(G4int ih=0; ih<nH; ih++)
-  {
-#ifdef pdebug
-    G4cout<<"G4QStr::GetHadrons: H#"<<ih<<",QPDG="<<theQHadrons[ih]->GetQPDG()<<",QQC="
-          <<theQHadrons[ih]->GetQC()<<",H_Mass="<<theQHadrons[ih]->GetMass()<<G4endl;
-#endif
-    if(!theQHadrons[ih]->GetNFragments())
-    {
-      G4QHadron* curH = new G4QHadron(theQHadrons[ih]);
-      hadrons->push_back(curH);                   // (del. equiv. - user is responsibile)
-    }
-  }
-#ifdef pdebug
-  G4cout<<"G4QSplitter::GetHadrons ===OUT==="<<G4endl;
-#endif
-  return hadrons;
-} // End of GetHadrons
-
-// Randomize the momentum fraction for the CHIPS of nPart free partons [x*(1-x)^(n-2)]
-G4double G4QSplitter::RandomizeMomFractionFree(G4int nPart)
-{//              ==============================================
-  // @@ TMP --- Begin ---
-  if(2>1)
-  {
-    if(nPart<2)
-    {
-      G4cerr<<"**G4QSplitter::RandMomFractionString: n="<<nPart<<" < 2, retun 0"<<G4endl;
-      return 0.;
-    }
-    G4double x=0.5;
-    if(nPart==2) return x;          // GS meson
-    G4double r=G4UniformRand();
-    if(r==0.) return 0.;
-    if(r==1.) return 1.;
-    if     (nPart==3) x=r;          // GS baryon
-    else if(nPart==4) x=1.-sqrt(r); // GS quaternion
-    else x=1.-pow(r,1./(nPart-2.)); // nPart>4
-    return x;
-  }
-  //if(nPart!=3) G4cerr<<"*>>>>>*G4QSplitter::RandMomFractionFree: n="<<nPart<<G4endl;
-  // @@ TMP --- End ---
-  if(nPart<2)
-  {
-    G4cerr<<"**G4QSplitter::RandMomFractionFree: n="<<nPart<<" < 2, retun 0."<<G4endl;
-    return 0.;
-  }
-  G4double x=0.5;
-  if(nPart==2) return x;       // GS meson
-  G4double r=G4UniformRand();
-  if(r==0.) return 0.;
-  if(r==1.) return 1.;
-  if(nPart==3) x=sqrt(r);      // GS baryon
-  else if(nPart==4)            // GS quaternion
-  {
-    if    (r==0.5) x=0.5;
-    else if(r<0.5) x=sqrt(r+r)*(.5+.1579*(r-.5));
-    else           x=1.-sqrt(2.-r-r)*(.5+.1579*(.5-r));
-  }
-  else
-  {
-    G4int n1=nPart-2;
-    G4double r1=n1;
-    G4double r2=r1-1.;
-    G4double rr=r2/r1;
-    G4double rp=pow(rr,n1);
-    G4double p2=rp+rp;
-    if  (r==rr)  x=p2;
-    else
-    {
-      if(r<rr)
-      {
-        G4double pr=0.;
-        G4double pra=0.;
-        if(nPart>8)
-        {
-          if(nPart>10)
-          {
-            if(nPart>11)                      // >11
-            {
-              pr=.614/pow((nPart+1.25),.75);
-              pra=.915/pow((nPart+6.7),1.75);
-            }
-            else                              // 11
-            {
-              pr=.09945;
-              pra=.00667;
-            }
-          }
-          else
-          {
-            if(nPart>9)                       // 10
-            {
-              pr=.1064;
-              pra=.00741;
-            }
-            else                              // 9
-            {
-              pr=.11425;
-              pra=.00828;
-            }
-          }
-        }
-        else
-        {
-          if(nPart>6)
-          {
-            if(nPart>7)                       // 8
-            {
-              pr=.12347;
-              pra=.00926;
-            }
-            else                              // 7
-            {
-              pr=.13405;
-              pra=.01027;
-            }
-          }
-          else
-          {
-            if(nPart>5)                       // 6
-            {
-              pr=.1454;
-              pra=.01112;
-            }
-            else                              // 5
-            {
-              pr=.15765;
-              pra=.00965;
-            }
-          }
-        }
-        x=pow((r/p2),(1.-rr+pra))*(rr+pr*(r-p2));
-      }
-      else
-      {
-        G4double sr=0.;
-        if(nPart>8)
-        {
-          if(nPart>10)
-          {
-            if(nPart>11) sr=.86/(nPart+1.05); // >11
-            else         sr=.0774;            // 11
-          }
-          else
-          {
-            if(nPart>9) sr=.0849;             // 10
-            else        sr=.0938;             // 9
-          }
-        }
-        else
-        {
-          if(nPart>6)
-          {
-            if(nPart>7) sr=.1047;             // 8
-            else        sr=.1179;             // 7
-          }
-          else
-          {
-            if(nPart>5) sr=.1339;             // 6
-            else        sr=.15135;            // 5
-          }
-        }
-        x=1.-sqrt((1.-r)/(1.-p2))*(1.-rr+sr*(p2-r));
-      }
-    }
-  }
-  return x;
-} // End of RandomizeMomFractionFree
-
-// Randomize MomentumFraction for CHIPS of nPart partons for Pomeron exchange [(1-x)^(n-2)]
-G4double G4QSplitter::RandomizeMomFractionString(G4int nPart)
-{//              ================================================
-  if(nPart<2)
-  {
-    G4cerr<<"**G4QSplitter::RandMomFractionString: n="<<nPart<<" < 2, retun 0"<<G4endl;
-    return 0.;
-  }
-  G4double x=0.5;
-  if(nPart==2) return x;          // GS meson
-  G4double r=G4UniformRand();
-  if(r==0.) return 0.;
-  if(r==1.) return 1.;
-  if     (nPart==3) x=r;          // GS baryon
-  else if(nPart==4) x=1.-sqrt(r); // GS quaternion
-  else x=1.-pow(r,1./(nPart-2.)); // nPart>4
-  return x;
-} // End of RandomizeMomFractionString
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QuasmonString.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QuasmonString.cc	(revision 1197)
+++ 	(revision )
@@ -1,959 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//       1         2         3         4         5         6         7         8         9
-//34567890123456789012345678901234567890123456789012345678901234567890123456789012345678901
-//
-//
-// $Id: G4QuasmonString.cc,v 1.8 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QuasmonString ----------------
-//             by Mikhail Kossov, August 2000.
-//  class for Hadron-Hadron String Interaction used by the CHIPS Model
-// -------------------------------------------------------------------
-// Short description: The Quark-Gluon String can fragment in hadrons
-// (QGS), small hadronic clusters (HERWIG) or in unlimited in mass
-// Quasmons, defined by the G4QPartonPair. This class is made to
-// simulate the string fragmentation in Quasmons, which hadronize in
-// vacuuum or in nuclear environment.
-// -------------------------------------------------------------------
- 
-//#define chdebug
-//#define debug
-//#define sdebug
-//#define ppdebug
-//#define cdebug
-//#define cldebug
-//#define edebug
-//#define fdebug
-//#define pdebug
-//#define rdebug
-//#define ffdebug
-//#define pcdebug
-//#define mudebug
-
-#include "G4QuasmonString.hh"
-#include <cmath>
-using namespace std;
- 
-
-G4QuasmonString::G4QuasmonString(G4QHadron projHadron, const G4bool projEnvFlag,
-                     const G4int targPDG, const G4bool targEnvFlag) :
-  theProjEnvFlag(projEnvFlag), theTargEnvFlag(targEnvFlag), theWeight(1.)
-{
-  //static const G4double mPi0 = G4QPDGCode(111).GetMass(); // Pi0 mass
-  //static const G4double mPi0 = (1232.-938.272)/2; // between p&Delta (147.365) shift
-  static const G4double mPi0 = sqrt((1232.*1232+938.272*938.272)/2)-938.272; // Pi0 mass
-  //static const G4double mPi0 = 170.; // Pi0 mass
-  static const G4double FreeFra = 1.; // @@ Free fraction for n-n scattering
-  static const G4double interc = -1.; // @@ Pomeron intercept
-  //static const G4double Temperature = 180.; // Temperature as a parameter
-  //static const G4double Temp2 = Temperature*Temperature; // Squared Temperature
-  static G4Quasmon classG4Quasmon(G4QContent(1,2,0,0,0,0));
-  //static const G4QPDGCode pimQPDG(-211);
-  theWorld= G4QCHIPSWorld::Get();             // Get a pointer to the CHIPS World
-#ifdef debug
-  G4cout<<"-->G4QuasStr::Constr:pPDG="<<projHadron.GetPDGCode()<<",tPDG="<<targPDG<<G4endl;
-#endif
-  // Target initialization
-  G4QPDGCode targQPDG(targPDG);
-  totBaryNum= targQPDG.GetBaryNum();          // Prototype
-  totCharge = targQPDG.GetCharge();           // Prototype
-  theTargQC = targQPDG.GetQuarkContent();
-  G4double tM = targQPDG.GetMass();
-  theTarg4Mom = G4LorentzVector(0.,0.,0.,tM);
-  G4QHadron targHadron(targQPDG,theTarg4Mom); // Target Hadron
-
-  // Projectile initialization
-  theProj4Mom = projHadron.Get4Momentum();
-  G4ThreeVector projBoost = theProj4Mom.boostVector(); // Projectile BoostVector to LS
-  G4ThreeVector projRBoost= -projBoost;       // Projevtile Boost vector to projectile CMS
-  G4QPDGCode projQPDG(projHadron.GetPDGCode());
-  theProjQC  = projQPDG.GetQuarkContent();
-  totBaryNum+= projQPDG.GetBaryNum();         // Final control value
-  totCharge += projQPDG.GetCharge();          // Final control value
-  tot4Mom  = theProj4Mom+theTarg4Mom;         // Final control value
-
-  G4double projM = projQPDG.GetMass();
-  G4double projM2 = projM*projM;
-  G4double pM2 = theProj4Mom.m2();
-  G4double tM2 = tM*tM;
-  G4double dM2 = fabs(pM2-projM2);
-  if(dM2>1.) G4cout<<"-Wor-G4QuStr::Cons:dM2="<<dM2<<",M2="<<projM2<<",LVM2="<<pM2<<G4endl;
-  G4double pM=sqrt(pM2);                     // @@ do we need pM ? @@ (in print)
-
-  // === Print out of the input information at Creation time & tot 4-mom Calculation ======
-#ifdef pdebug
-  G4cout<<"G4QuaString::Cons:PQC="<<theProjQC<<",TQC="<<theTargQC<<",P4Mom="<<theProj4Mom<<
-    theProj4Mom.m2()<<theProj4Mom.m()<<G4endl;
-  G4cout<<"G4QuaString::C: tC="<<totCharge<<",tB="<<totBaryNum<<",tot4M="<<tot4Mom<<G4endl;
-#endif
-  //G4int nP=theWorld->GetQPEntries();       // A#of init'ed particles in CHIPS World (@@?)
-  //G4int nCl=nP-90;                          // A#of init'ed clusters in CHIPS World (@@?)
-  //#ifdef pdebug
-  //G4cout<<"G4QS:Const:Before QEX:n="<<nP<<G4endl;
-  //#endif
-  // @@@@@@ ===> Here the Quark Exchange Quasmon Creation must be added <=== @@@@@@
-  // @@ --- old ---
-  //G4int nQTarg=theTargQC.GetTot();           // a#of Quark-partons in the Target
-  //G4int nQProj=theProjQC.GetTot();           // a#of Quark-partons in the Progectile
-  // @@ --- new ---
-  G4LorentzVector tSum=theProj4Mom+theTarg4Mom;
-  G4double sumM=tM+pM;
-  G4double dn=2.17*(tSum.m2()/sumM/sumM-1.);   // additional partons (gluons) - real
-  G4int np=static_cast<int>(dn);               // additional partons (gluons) - basic int
-  if(G4UniformRand()>1.-dn+np) np++;           // randomized int additional partons(gluons)
-  G4int nQTarg=theTargQC.GetTot()+np;          // a#of Quark-partons in the Target
-  G4int nQProj=theProjQC.GetTot()+np;          // a#of Quark-partons in the Progectile
-  // @@ --- new ---
-  //G4int mQTarg=theTargQC.GetTot();           // a#of Quark-partons in the Target
-  //G4int mQProj=theProjQC.GetTot();           // a#of Quark-partons in the Progectile
-  ////G4double tothM=tot4Mom.m()/2.;              // C.M. mass of the protons
-  ////G4int nQCM=classG4Quasmon.CalculateNumberOfQPartons(tothM);
-  //G4double tothM2=tot4Mom.m2()/4.;              // C.M. mass of the protons
-  //G4int nQCM=static_cast<int>((1.+sqrt(tothM2/Temp2+1.))/2.);
-  //G4int nQTarg=nQCM;           // a#of Quark-partons in the Target
-  //if(nQTarg<mQTarg) nQTarg=mQTarg;
-  //G4int nQProj=nQCM;           // a#of Quark-partons in the Progectile
-  //if(nQProj<mQProj) nQProj=mQProj;
-  // @@ --- end ---
-#ifdef pdebug
-  G4cout<<"G4QuasmonString::Constr: nP="<<nQProj<<", nT="<<nQTarg<<G4endl;
-#endif
-  // @@ Now projectile can be only meson or baryon @@ -- @@ Improve for clusters @@ --
-  G4LorentzVector pq4Mom(0.,0.,0.,0.);       // Prototype of LV of quark of progectile  
-  G4double rPMass=0.;                        // Prototype of the residProjMass (Meson case)
-  G4bool FreeFraF=false;                     // Prototype of the free exchange Flag
-  if(G4UniformRand()<FreeFra) FreeFraF=true; // Confirm the free exchange
-  if(nQProj<2)  G4cout<<"***G4QuaStr::Con: nQProj="<<nQProj<<"<2 ***FatalError***"<<G4endl;
-  else if(nQProj>2)                          // ---> Baryon case (clusters are not implem.)
-  {
-    //if(nQProj>3)G4cout<<"-Wor-G4QS::Const:nQProj="<<nQProj<<">3 is not implem'd"<<G4endl;
-    G4double xP=0.;
-    if(FreeFraF) xP=RandomizeMomFractionFree(nQProj);
-    else
-    {
-      xP=RandomizeMomFractionString(nQProj);
-      theWeight*=pow(xP,interc);
-      G4cout<<"************G4QuasmonString::Constr: string xP="<<xP<<G4endl;
-    }
-    rPMass = sqrt(pM2*(1.-xP));              // Residual Projectile mass
-#ifdef pdebug
-    G4cout<<"G4QS::C: nQProj="<<nQProj<<", xProj="<<xP<<", rPMass="<<rPMass<<G4endl;
-#endif
-  }
-  G4LorentzVector pr4Mom(0.,0.,0.,rPMass);   // Prototype of LV of the residual projectile
-  G4bool projFl=false;
-  G4bool targFl=false;
-  G4bool tmpBl=projHadron.DecayIn2(pq4Mom,pr4Mom);
-  if(tmpBl) projFl=true;                     // Proj decay is OK
-  //if(projHadron.DecayIn2(pq4Mom,pr4Mom)) projFl=true;
-  else G4cout<<"**Warning**G4QuasmonString::C:ProjDecIn2 rpM="<<rPMass<<",pM="<<pM<<G4endl;
-#ifdef pdebug
-  G4cout<<"G4QuaStr::C:"<<projFl<<" split PROJ in R4M="<<pr4Mom<<" & Q4M="<<pq4Mom<<G4endl;
-#endif
-  G4LorentzVector tq4Mom(0.,0.,0.,0.);       // Prototype of LV of quark of the target  
-  //if(nQTarg<3)G4cout<<"***G4QStr::Const: nQTarg="<<nQTarg<<"<3 ***FatalError***"<<G4endl;
-  //if(nQTarg>3)G4cout<<"-W-G4QS::Const: nQTarg="<<nQTarg<<">3 is not implemented"<<G4endl;
-  G4double xT=0.;
-  if(FreeFraF) xT=RandomizeMomFractionFree(nQTarg);
-  else
-  {
-    xT=RandomizeMomFractionString(nQTarg);
-    theWeight*=pow(xT,interc);
-    G4cout<<"************G4QuaString::Constr: string xT="<<xT<<G4endl;
-  }
-  G4double rTMass = sqrt(tM2*(1.-xT));       // Residual Target mass
-#ifdef pdebug
-  G4cout<<"G4QuaString::C: nQTarg="<<nQTarg<<", xProj="<<xT<<", rTMass="<<rTMass<<G4endl;
-#endif
-  G4LorentzVector tr4Mom(0.,0.,0.,rTMass);   // Prototype of LV of the residual projectile
-  if(targHadron.DecayIn2(tq4Mom,tr4Mom)) targFl=true; // Targ decay is OK
-  else G4cout<<"**Worning**G4QuaStr::Constr:TargDecIn2 rtM="<<rTMass<<", tM="<<tM<<G4endl;
-#ifdef pdebug
-  G4cout<<"G4QuaStr::C:"<<targFl<<" split TARG in R4M="<<tr4Mom<<" & Q4M="<<tq4Mom<<G4endl;
-#endif
-  G4bool elasFl=false;                       // ByDefault avoid the elastic scattering
-  if (targFl && projFl)                      // --- @@ Now only for pp case @@ ---
-  {
-    G4LorentzVector newProj4M=pr4Mom+tq4Mom;
-    G4double nPM2=newProj4M.m2();
-    G4double npM=sqrt(nPM2);
-    G4bool pcorFl=false;                     // ByDefault no MassSh correction for newProj.
-    // @@ Just to try ---- Start
-    //G4LorentzVector newTarg4M=tr4Mom+pq4Mom;
-    //G4double nTM2=newTarg4M.m2();
-    //G4double ntM=sqrt(nTM2);
-#ifdef pdebug
-    //G4cout<<"G4QStr::C:ntM="<<ntM<<" <? tM="<<tM<<"+mPi0="<<mPi0<<" = "<<tM+mPi0<<G4endl;
-#endif
-    //if(ntM<tM+mPi0 && npM<pM+mPi0) elasFl=true; // Target&Project are underMinMass => El
-    // @@ Just to try ---- End
-#ifdef pdebug
-    G4cout<<"G4QuaStr::C:npM="<<npM<<" <? pM="<<pM<<"+mPi0="<<mPi0<<" = "<<pM+mPi0<<G4endl;
-#endif
-    if(npM<pM+mPi0) // The projectile is under min mass (@@ In Future put other cut @@)
-    {
-      G4double valk=tq4Mom.e();         // Momentum of the target quark
-      //#ifdef pdebug
-      G4double dvalk=valk-tq4Mom.rho();
-      if(fabs(dvalk)>.00001) G4cout<<"**kp**G4QuaStr::C:vk="<<valk<<",dvk="<<dvalk<<G4endl;
-      //#endif
-      G4double dmas=pM2-pr4Mom.m2();    // Difference of squared masses
-      G4double vale=pr4Mom.e();
-      G4ThreeVector pr=pr4Mom.v();
-      G4double valp=pr.mag();
-      G4ThreeVector upr=pr/valp;             // Unit vector in the pr direction
-      G4double cost=-(dmas/(valk+valk)-vale)/valp; // Initial cos(theta)
-      if(fabs(cost)>1.)
-      {
-#ifdef pdebug
-        G4cout<<"***p***>>>G4QuasmonString::Constr: cost="<<cost<<G4endl;
-#endif
-        // Get max value of |cos(theta)| and change tq value to get the pM on mass shell
-        if(cost>0.)                        // --->>> cost>0.
-        {
-          valk=dmas/(vale-valp)/2;         // Momentum is too big (must be reduced)
-          G4ThreeVector tqf=upr*valk;      // final targetQuark 3-vector
-          tq4Mom.set(valk,tqf);            // Fill new 4-mom for targetQuark
-          tr4Mom.set(tM-valk,-tqf);        // Fill new 4-mom for targetResidual
-          newProj4M=tq4Mom+pr4Mom;         // Final Projectile 4-mom in LS
-        }
-        else                               // --->>> cost<0.
-        {
-          G4double hvalk=dmas/(vale+valp); // Momentum's too small (must be increased, LIM)
-          if(hvalk>tM)                     // Momentum can not be increased to this value
-          {
-#ifdef pdebug
-            G4cout<<"**p-Cor**>G4QuaStr::C: hvalk="<<hvalk<<" > tM="<<tM<<", dm="<<dmas
-                  <<", e="<<vale<<", p="<<valp<<", ct="<<cost<<G4endl;
-#endif
-            // Put the scatteredProjectile on the massShell, and rescatter the target quark
-            G4LorentzVector tmpProj4M=newProj4M+pq4Mom; // TempCriticalCompound for Project
-            newProj4M=G4LorentzVector(0.,0.,0.,pM);     // New Project is on the mass shell
-            G4QHadron tmpHadron(tmpProj4M);             // Create a Hadron for decay
-            pq4Mom=G4LorentzVector(0.,0.,0.,0.);        // NewProjParton on lightMassShell
-            tmpBl=tmpHadron.DecayIn2(newProj4M,pq4Mom); // Decay the Compound in newProg+pQ
-            if(!tmpBl)
-              G4cout<<"G4QuaStr::Con: DecIn2 err "<<sqrt(tmpProj4M.m2())<<"<"<<pM<<G4endl;
-          }
-          else
-          {
-#ifdef pdebug
-            G4cout<<"***---***>G4QuasmonStr::Constr: hvalk="<<hvalk<<" < tM="<<tM<<G4endl;
-#endif
-            valk=hvalk/2;                  // Momentum is too small (must be reduced)
-            G4ThreeVector tqf=upr*(-valk); // Final targetQuark 3-vector
-            tq4Mom.set(valk,tqf);          // Fill new 4-mom for targetQuark
-            tr4Mom.set(tM-valk,-tqf);      // Fill new 4-mom for targetResidual
-            newProj4M=tq4Mom+pr4Mom;
-          }
-        }
-        if(fabs(newProj4M.m()-pM)>.0001)
-          G4cout<<"*G4QuaString::Constr: Change of mass "<<newProj4M.m()<<"#"<<pM<<G4endl;
-      }
-      else
-      {
-        // Turn the target quark-parton to the projectile residual in LS = CMSofTheTarget
-#ifdef pdebug
-        G4cout<<"---p--->>>G4QuasmonString::Constr: cost="<<cost<<G4endl;
-#endif
-        G4ThreeVector tq=tq4Mom.v();           // 3-mom of the targetQ (LS)
-        G4double      tqlp=upr.dot(tq);        // Projection of tq on the projectile
-        G4ThreeVector tql=upr*tqlp;            // tq part along pr
-        G4ThreeVector tqt=tq-tql;              // tq part perpendicular to pr
-        G4double      cosi=tqlp/valk;          // Initial cos(theta)
-        G4ThreeVector tqlf=tql*(cost/cosi);    // final tq part along pr
-        G4double      sini=sqrt(1.-cosi*cosi); // Initial sin(theta)
-        G4double      sint=sqrt(1.-cost*cost); // Desired sin(theta)
-        G4ThreeVector tqpf=tqt*(sint/sini);    // final tq part perpendicular pr
-        G4ThreeVector tqf=tqlf+tqpf;           // final tq
-        tq4Mom.setV(tqf);                      // Change the momentum direction of targetQ
-        tr4Mom.setV(-tqf);                     // Change the momentum direction of targetR
-        if(fabs(tqf.mag()-valk)>.0001)
-          G4cout<<"*G4QuasmonString::Constr: |k|="<<tqf.mag()<<" # "<<valk<<G4endl;
-        newProj4M=tq4Mom+pr4Mom;
-        if(fabs(newProj4M.m()-pM)>.001)
-          G4cout<<"*G4QuasmonString::Constr: M="<<newProj4M.m()<<" # "<<pM<<G4endl;
-      }
-#ifdef pdebug
-      G4cout<<"G4QuaStr::C: Proj under GS, newP4M="<<newProj4M<<", pq4M="<<pq4Mom<<G4endl;
-#endif
-      pcorFl=true;                           // Projectile is on the GS mass shell
-    }
-    G4bool tcorFl=false;                     // ByDefault no MassSh correction for newTarg.
-    G4LorentzVector newTarg4M=tr4Mom+pq4Mom;
-    G4double nTM2=newTarg4M.m2();
-    G4double ntM=sqrt(nTM2);
-    //newTarg4M=tr4Mom+pq4Mom;
-    //nTM2=newTarg4M.m2();
-    //ntM=sqrt(nTM2);
-#ifdef pdebug
-    G4cout<<"G4QuaStr::C:ntM="<<ntM<<" <? tM="<<tM<<"+mPi0="<<mPi0<<" = "<<tM+mPi0<<G4endl;
-#endif
-    if(ntM<tM+mPi0 && !pcorFl) // The target is under min mass (@@ InFut put another cut@@)
-    {
-      // Turn the projectile quark-parton to the target rsidual in CMS of the Projectile
-      G4LorentzVector pqc4M=pq4Mom;        // projectileQuark => projCM system <step1>
-      pqc4M.boost(projRBoost);             // projectileQuark => projCM system <step2>
-      G4double valk=pqc4M.e();             // Momentum of the target quark in projCM
-      //#ifdef pdebug
-      G4double dvalk=valk-pqc4M.rho();
-      if(fabs(dvalk)>.00001) G4cout<<"***kt***G4QuaS::C:vk="<<valk<<",dvk="<<dvalk<<G4endl;
-      //#endif
-      G4double dmas=tM2-tr4Mom.m2();       // Difference of squared masses (targ - targRes)
-      G4LorentzVector trc4M=tr4Mom;        // targetResidual => projCM system <step1>
-      trc4M.boost(projRBoost);             // targetResidual => projCM system <step2>
-      G4double vale=trc4M.e();             // Energy of the targetResidual in projCM
-      G4ThreeVector tr=trc4M.v();          // 3-mom of the targetResidual in projCM
-      G4double valp=tr.mag();              // momentum of the targetResidual in projCM
-      if(fabs(dmas-tM2+trc4M.m2())>.1) G4cout<<"**t**G4QuaStr::C: trM2="<<tr4Mom.m2()<<"="
-                                            <<trc4M.m2()<<","<<vale*vale-valp*valp<<G4endl;
-      G4ThreeVector utr=tr/valp;           // Unit vector in the tr direction in projCM
-      G4double cost=-(dmas/(valk+valk)-vale)/valp; // Initial cos(theta)
-      if(fabs(cost)>1.)
-      {
-#ifdef pdebug
-        G4cout<<"***t***>>>G4QuasmonString::Constr: cost="<<cost<<G4endl;
-#endif
-        // Get max value of |cos(theta)| and change pq value to get the tM on mass shell
-        if(cost>0.)                            // --->>> cost>0.
-        {
-          valk=dmas/(vale-valp)/2;             // Momentum is too big (must be reduced)
-          G4ThreeVector pqf=utr*valk;          // final projectileQuark 3-vector
-          G4LorentzVector pqc4M(valk,pqf);     // Fill new 4-mom for projectileQuark in CM
-          pq4Mom=pqc4M;             // <step1> // Fill new 4-mom for projectileQuark in LS
-          pq4Mom.boost(projBoost);  // <step2> // Fill new 4-mom for projectileQuark in LS
-          G4LorentzVector prc4M(pM-valk,-pqf); // Fill new 4-mom for projectResidual in CM
-          pr4Mom=prc4M;             // <step1> // Fill new 4-mom for projectResidual in LS
-          pr4Mom.boost(projBoost);  // <step2> // Fill new 4-mom for projectResidual in LS
-          newTarg4M=pq4Mom+tr4Mom;             // Final Target 4-mom in LS
-        }
-        else                                   // --->>> cost<-1 => cost=-1
-        {
-          G4double hvalk=dmas/(vale+valp); // Momentum's too small (must be increased, LIM)
-          if(hvalk>pM)                     // Momentum can not be increased to this value
-          {
-#ifdef pdebug
-            G4cout<<"**t-Cor**>G4QuasmonString::C: hvalk="<<hvalk<<" > pM="<<pM<<", dm="
-                  <<dmas<<", e="<<vale<<", p="<<valp<<", ct="<<cost<<G4endl;
-#endif
-            // Put the scatteredProjectile on the massShell, rescatter the targetQuark (LS)
-            G4LorentzVector tmpTarg4M=newTarg4M+tq4Mom; // TempCriticalCompound for Target
-            newTarg4M=G4LorentzVector(0.,0.,0.,tM);     // New Target is on the mass shell
-            G4QHadron tmpHadron(tmpTarg4M);             // Create a CompHadron for decay
-            tq4Mom=G4LorentzVector(0.,0.,0.,0.);        // NewTargParton on lightMassShell
-            tmpBl=tmpHadron.DecayIn2(newTarg4M,tq4Mom); // Decay the Compound in newTarg+tQ
-            if(!tmpBl)
-              G4cout<<"G4QuaString::C: DecIn2-err "<<sqrt(tmpTarg4M.m2())<<"<"<<tM<<G4endl;
-          }
-          else
-          {
-#ifdef pdebug
-            G4cout<<"***---***>G4QuaString::Constr: hvalk="<<hvalk<<" < pM="<<pM<<G4endl;
-#endif
-            valk=hvalk/2;                        // Momentum is too small (mustBeIncreased)
-            G4ThreeVector pqf=utr*(-valk);       // Final projectileQuark 3-vector in CM
-            G4LorentzVector pqc4M(valk,pqf);     // Fill new 4-mom for projectQuark in CM
-            pq4Mom=pqc4M;             // <step1> // Fill new 4-mom for projectQuark in LS
-            pq4Mom.boost(projBoost);  // <step1> // Fill new 4-mom for projectQuark in LS
-            G4LorentzVector nTc4M=pqc4M+trc4M;
-#ifdef pdebug
-            G4cout<<"G4QuasmonString::Constr:After Boost="<<projBoost<<G4endl;
-            G4cout<<"G4QuS::C:Aft:q="<<pqc4M<<pqc4M.m2()<<",t="<<nTc4M<<nTc4M.m2()<<G4endl;
-            G4cout<<"G4QuaStr::C:E="<<nTc4M.e()<<" = q="<<pqc4M.e()<<"="<<valk<<" + r="<<
-                   trc4M.e()<<"="<<vale<<" = "<<pqc4M.e()+trc4M.e()<<",c="<<pq4Mom<<G4endl;
-            if(fabs(nTc4M.m()-tM)>.0001) G4cout<<"*G4QuS::C:"<<nTc4M.m()<<"!="<<tM<<G4endl;
-            G4double pp=pqf.dot(tr);             // trc3M*pqc=-valk*valp
-            G4double ee=vale*valk;
-            G4cout<<"G4QS::C:tM2="<<tM2<<"="<<tM*tM<<",pp="<<pp*2<<"="<<-valk*valp*2<<",d="
-                  <<ee-pp<<"="<<dmas<<"="<<(tM2-trc4M.m2())<<",u="<<utr.dot(utr)<<G4endl;
-            G4double sen=nTc4M.e();
-            G4double smo=nTc4M.rho();
-            G4cout<<"G4QuaStr::C: qM2="<<pqc4M.m2()<<",rM2="<<trc4M.m2()<<",E="<<sen<<"="<<
-              vale+valk<<", P="<<smo<<"="<<valp-valk<<",M="<<sqrt(sen*sen-smo*smo)<<G4endl;
-#endif
-            G4LorentzVector prc4M(pM-valk,-pqf); // Fill new 4-mom for projectResid in CM
-            pr4Mom=prc4M;             // <step1> // Fill new 4-mom for projectResid in LS
-            pr4Mom.boost(projBoost);  // <step2> // Fill new 4-mom for projectResid in LS
-            newTarg4M=pq4Mom+tr4Mom;
-          }
-        }
-        if(fabs(newTarg4M.m()-tM)>.0001)
-          G4cout<<"****************G4QuasmonString::C: M="<<newTarg4M.m()<<"="<<pM<<G4endl;
-      }
-      else // -1<cos(theta)<1 - only rotate the projQ
-      {
-        // Turn the projectile quark-parton to the target residual in CMS of the Projectile
-#ifdef pdebug
-        G4cout<<"---t--->>>G4QuasmonString::Constr: cost="<<cost<<G4endl;
-#endif
-        G4LorentzVector prc4M=pr4Mom;          // projectileQuark => projCM system <step1>
-        prc4M.boost(projRBoost);               // projectileQuark => projCM system <step2>
-        G4ThreeVector pq=pqc4M.v();            // 3-vector of the projQ in projCM
-        G4double      pqlp=utr.dot(pq);        // Projection of pq on the target in projCM
-        G4ThreeVector pql=utr*pqlp;            // pq part along pr
-        G4ThreeVector pqt=pq-pql;              // pq part perpendicular to tr in projCM
-        G4double      cosi=pqlp/valk;          // Initial cos(theta)
-        G4ThreeVector pqlf=pql*(cost/cosi);    // final pq part along tr
-        G4double      sini=sqrt(1.-cosi*cosi); // Initial sin(theta)
-        G4double      sint=sqrt(1.-cost*cost); // Desired sin(theta)
-        G4ThreeVector pqpf=pqt*(sint/sini);    // final pq part perpendicular tr
-        G4ThreeVector pqf=pqlf+pqpf;           // final pq
-        pqc4M.setV(pqf);                       // Change the momentumDirection of projQ(CM)
-        pq4Mom=pqc4M;                          // Fill new 4-mom for projQuark in LS<step1>
-        pq4Mom.boost(projBoost);               // Fill new 4-mom for projQuark in LS<step2>
-        prc4M.setV(-pqf);                      // Change the momentumDirection of projR(CM)
-#ifdef pdebug
-        G4LorentzVector nT4M=pqc4M+trc4M;
-        if(fabs(nT4M.m()-tM)>.001)G4cout<<"**t**G4QuaStr::C:M="<<nT4M.m()<<"="<<tM<<G4endl;
-#endif
-        pr4Mom=prc4M;               // <step1> // Fill new 4-mom for projResidual in LS
-        pr4Mom.boost(projBoost);    // <step2> // Fill new 4-mom for projResidual in LS
-        if(fabs(pqf.mag()-valk)>.0001)
-          G4cout<<"*G4QuasmonString::Constr: |k|="<<pqf.mag()<<"="<<valk<<G4endl;
-        newTarg4M=pq4Mom+tr4Mom;
-        if(fabs(newTarg4M.m()-tM)>.001)
-          G4cout<<"*G4QuasmonString::Constr: M="<<newTarg4M.m()<<"="<<tM<<G4endl;
-      }
-#ifdef pdebug
-      G4cout<<"*G4QuaStr::C: Targ under GS, newT4M="<<newTarg4M<<", tq4M="<<tq4Mom<<G4endl;
-#endif
-      tcorFl=true;                  // Target is on the GS mass shell
-      newProj4M=pr4Mom+tq4Mom;      // Recalculate the Projectile (!)
-      nPM2=newProj4M.m2();
-      npM=sqrt(nPM2);
-#ifdef pdebug
-      G4cout<<"G4QuaStr::C:npM="<<npM<<" <? pM="<<pM<<"+mPi0="<<mPi0<<"="<<pM+mPi0<<G4endl;
-#endif
-      if(npM<pM+mPi0) elasFl=true;    // Force elastic scattering (@@InFut putAnotherCut@@)
-    }
-    else if(ntM<tM+mPi0) elasFl=true; // Force elastScattering (@@InFut put another cut@@)
-    if(elasFl)                        // Ellastic scattering happened
-    {
-      // **** Put the hadrons on the mass shell conserving the CMS scattering angle ****
-      G4LorentzVector theTot4M=theProj4Mom+theTarg4Mom;// 4-momentum of CMS of "targ+proj"
-      G4ThreeVector cmsBoost = theTot4M.boostVector(); // CMS Boost Vector "CMS to LS"
-      G4ThreeVector cmsRBoost= -cmsBoost;              // CMS Boost Vector "LS to CMS"
-      G4LorentzVector cmsProj4M=theProj4Mom; // LS projectile => CMS <step1>
-      cmsProj4M.boost(cmsRBoost);            // LS projectile => CMS <step2>
-      G4LorentzVector cmsTarg4M=theTarg4Mom; // LS target => CMS <step1>
-      cmsTarg4M.boost(cmsRBoost);            // LS target => CMS <step2>
-      G4double pcm=cmsProj4M.rho();          // CMS momentum for the elastic scattering
-      //#ifdef pdebug
-      if(fabs(cmsTarg4M.rho()-pcm) > 0.0001)
-        G4cout<<"-Worning-G4QuasmonString::Constr: P="<<cmsTarg4M.rho()<<"#"<<pcm<<G4endl;
-      //#endif
-      G4LorentzVector cmsNewPr4M=newProj4M;  // LS finalProj => CMS <step1>
-      cmsNewPr4M.boost(cmsRBoost);           // LS finalProj => CMS <step2>
-      G4ThreeVector puV=cmsNewPr4M.v()/cmsNewPr4M.rho(); // Direction of the projectile
-      //#ifdef pdebug
-      G4LorentzVector cmsNewTg4M=newTarg4M;  // LS finalTarg => CMS <step1> @@ TMP
-      cmsNewTg4M.boost(cmsRBoost);           // LS finalTarg => CMS <step2> @@ TMP
-      G4ThreeVector tuV=cmsNewTg4M.v()/cmsNewTg4M.rho(); // Direction of the projectile
-      if(1.+puV.dot(tuV) > 0.001)
-        G4cout<<"-Worning-G4QuasmonString::Constr: ct="<<puV.dot(tuV)<<G4endl;
-      //#endif
-      cmsProj4M.setV(puV*pcm);
-      newProj4M=cmsProj4M;
-      newProj4M.boost(cmsBoost);             // CMS FinalProjectile => LS <step2>
-      G4QHadron* projH = new G4QHadron(projHadron); // Prototype of the Projectile Hadron
-      projH->Set4Momentum(newProj4M);
-      theQHadrons.push_back(projH);          // Fill theProjectileHadron(delete equivalent)
-#ifdef pdebug
-      G4cout<<"G4QuasmonString::Constr: Fill ElastProjH="<<projQPDG<<newProj4M<<G4endl;
-#endif
-      cmsTarg4M.setV(puV*(-pcm));
-      newTarg4M=cmsTarg4M;
-      newTarg4M.boost(cmsBoost);             // CMS FinalTarget => LS <step2>
-      G4QHadron* targH = new G4QHadron(targQPDG,newTarg4M); // Prototype of theTargetHadron
-      theQHadrons.push_back(targH);          // Fill the Target Hadron (delete equivalent)
-#ifdef pdebug
-      G4cout<<"G4QuasmonString::Constr: Fill ElastTargH="<<targQPDG<<newTarg4M<<G4endl;
-#endif
-    }
-    else
-    {
-      // Inelastic scattering: one or both hadrons are excited (charge exchange is not in).
-      if(pcorFl)                             // Projectile is on the mass shell
-      {
-        G4QHadron* projH = new G4QHadron(projHadron); // Prototype of the Projectile Hadron
-        projH->Set4Momentum(newProj4M);
-        theQHadrons.push_back(projH);        // Fill theProjectileHadron(delete equivalent)
-        G4Quasmon* targQ = new G4Quasmon(targQPDG.GetQuarkContent(),newTarg4M);
-        theQuasmons.push_back(targQ);        // Insert Projectile Quasmon (delete equival.)
-      }
-      if(tcorFl)                             // Target is on the mass shell
-      {
-        G4Quasmon* projQ = new G4Quasmon(projHadron.GetQC(),newProj4M);
-        theQuasmons.push_back(projQ);        // Insert Projectile Quasmon (delete equival.)
-        G4QHadron* targH = new G4QHadron(targQPDG,newTarg4M);//Prototype of theTargetHadron
-        theQHadrons.push_back(targH);        // Fill the Target Hadron (delete equivalent)
-      }
-      else                                   // Both are excited (two Quasmons only) 
-      {
-        G4Quasmon* projQ = new G4Quasmon(projHadron.GetQC(),newProj4M);
-        theQuasmons.push_back(projQ);        // Insert Projectile Quasmon (delete equival.)
-        G4Quasmon* targQ = new G4Quasmon(targQPDG.GetQuarkContent(),newTarg4M);
-        theQuasmons.push_back(targQ);        // Insert Projectile Quasmon (delete equival.)
-      }
-    }
-  }
-  else G4cout<<"-Wor-G4QuasmonString::Constr:T="<<targFl<<" or P="<<projFl<<" err"<<G4endl;
-#ifdef pdebug
-  G4cout<<"G4QuasmonString::Constructor: *** End of Constructor ***, elF="<<elasFl<<G4endl;
-#endif
-  // This is the first Check of the control values -- @@ Must be remade @@ --
-#ifdef chdebug
-  G4int finCharge=0;
-  G4int finBaryoN=0;
-  G4int nHad=theQHadrons.size();
-  if(nHad) for(G4int ih=0; ih<nHad; ih++)
-  {
-    finCharge+=theQHadrons[ih]->GetCharge();
-    finBaryoN+=theQHadrons[ih]->GetBaryonNumber();
-  }
-  G4int nQuas=theQuasmons.size();
-  if(nQuas) for(G4int iq=0; iq<nQuas; iq++)
-  {
-    finCharge+=theQuasmons[iq]->GetCharge();
-    finBaryoN+=theQuasmons[iq]->GetBaryonNumber();
-  }
-  G4cout<<"G4QuaStr::C:n="<<nHad<<",N="<<nQuas<<",C="<<finCharge<<",B="<<finBaryoN<<G4endl;
-  if(finCharge!=totCharge || finBaryoN!=totBaryNum)
-  {
-    G4cerr<<"***G4QuasmonString::C: tC="<<totCharge<<",C="<<finCharge<<",tB="<<totBaryNum
-          <<",B="<<finBaryoN<<G4endl;
-    if(nHad) for(G4int h=0; h<nHad; h++)
-    {
-      G4QHadron* cH = theQHadrons[h];
-      G4cerr<<">G4QuaStr::C:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl;
-    }
-    if(nQuas) for(G4int q=0; q<nQuas; q++)
-    {
-      G4Quasmon* cQ = theQuasmons[q];
-      G4cerr<<">G4QuaStr::C:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl;
-    }
-  }
-#endif
-} // End of the G4QuasmonString constructor
-
-G4QuasmonString::G4QuasmonString(const G4QuasmonString &right)
-{
-  // theQuasmons (Vector)
-  G4int nQ             = right.theQuasmons.size();
-  if(nQ) for(G4int iq=0; iq<nQ; iq++)
-  {
-    G4Quasmon* curQ    = new G4Quasmon(right.theQuasmons[iq]);
-#ifdef fdebug
-    G4cout<<"G4QuaStr::CopyByVal:Q#"<<iq<<","<<curQ->GetQC()<<curQ->Get4Momentum()<<G4endl;
-#endif
-    theQuasmons.push_back(curQ);             // (delete equivalent)
-  }
-  theProjEnvFlag  = right.theProjEnvFlag;
-  theTargEnvFlag  = right.theTargEnvFlag;
-  theWeight       = right.theWeight;
-  theProjQC       = right.theProjQC;
-  theTargQC       = right.theTargQC;
-  theProj4Mom     = right.theProj4Mom;
-  theTarg4Mom     = right.theTarg4Mom;
-  
-  theWorld        =  right.theWorld; 
-  tot4Mom         =  right.tot4Mom;
-  totCharge       =  right.totCharge;
-  totBaryNum      =  right.totBaryNum;
-}
-
-const G4QuasmonString& G4QuasmonString::operator=(const G4QuasmonString &right)
-{// ========================================================================
-  if(this != &right)                          // Beware of self assignment
-  {
-    // theQuasmons (Vector)
-    G4int iQ             = theQuasmons.size();
-    if(iQ) for(G4int jq=0; jq<iQ; jq++) delete theQuasmons[jq];
-    theQuasmons.clear();
-    G4int nQ             = right.theQuasmons.size();
-    if(nQ) for(G4int iq=0; iq<nQ; iq++)
-    {
-      G4Quasmon* curQ    = new G4Quasmon(right.theQuasmons[iq]);
-#ifdef fdebug
-      G4cout<<"G4QuaStr::CpByVal:Q#"<<iq<<","<<curQ->GetQC()<<curQ->Get4Momentum()<<G4endl;
-#endif
-      theQuasmons.push_back(curQ);             // (delete equivalent)
-    }
-    theProjEnvFlag  = right.theProjEnvFlag;
-    theTargEnvFlag  = right.theTargEnvFlag;
-    theWeight       = right.theWeight;
-    theProjQC       = right.theProjQC;
-    theTargQC       = right.theTargQC;
-    theProj4Mom     = right.theProj4Mom;
-    theTarg4Mom     = right.theTarg4Mom;
-  
-    theWorld        =  right.theWorld; 
-    tot4Mom         =  right.tot4Mom;
-    totCharge       =  right.totCharge;
-    totBaryNum      =  right.totBaryNum;
-  }
-  return *this;
-}
-
-G4QuasmonString::G4QuasmonString(G4QuasmonString* right)
-{
-  // theQuasmons (Vector)
-  G4int nQ             = right->theQuasmons.size();
-  if(nQ) for(G4int iq=0; iq<nQ; iq++)
-  {
-    G4Quasmon* curQ    = new G4Quasmon(right->theQuasmons[iq]);
-#ifdef fdebug
-    G4cout<<"G4QuaStr::CpByPoint:Q#"<<iq<<","<<curQ->GetQC()<<curQ->Get4Momentum()<<G4endl;
-#endif
-    theQuasmons.push_back(curQ);             // (delete equivalent)
-  }
-  theProjEnvFlag  = right->theProjEnvFlag;
-  theTargEnvFlag  = right->theTargEnvFlag;
-  theWeight       = right->theWeight;
-  theProjQC       = right->theProjQC;
-  theTargQC       = right->theTargQC;
-  theProj4Mom     = right->theProj4Mom;
-  theTarg4Mom     = right->theTarg4Mom;
-  
-  theWorld        =  right->theWorld; 
-  tot4Mom         =  right->tot4Mom;
-  totCharge       =  right->totCharge;
-  totBaryNum      =  right->totBaryNum;
-}
-
-G4QuasmonString::~G4QuasmonString()
-{
-#ifdef debug
-  G4cout<<"~G4QuasmonString: before theQHadrons nH="<<theQHadrons.size()<<G4endl;
-#endif
-  for_each(theQHadrons.begin(), theQHadrons.end(), DeleteQHadron());
-#ifdef debug
-  G4cout<<"~G4QuasmonString: before theQuasmons nQ="<<theQuasmons.size()<<G4endl;
-#endif
-  for_each(theQuasmons.begin(), theQuasmons.end(), DeleteQuasmon());
-#ifdef debug
-  G4cout<<"~G4QuasmonString: === DONE ==="<<G4endl;
-#endif
-}
-
-// ================== Initialization of Static Parameters ============
-//G4double G4QuasmonString::StParName=0.;     // Static Parameter (Example)
-//G4bool   G4QuasmonString::stFlag=false;     // Static Flag (Example)
-
-// Fill the private static parameters
-//void G4QuasmonString::SetParameters(G4double aStPar, G4bool aStFlag)
-//{//  ====================================================================================
-//  StParName=aStPar;       // (Example)
-//  stFlag=aStFlag;         // (Example)
-//}
-
-
-//The public Hadronisation function with the Exception treatment (del respons. of User !)
-G4QHadronVector* G4QuasmonString::Fragment()
-{//              ========================== -- @@ Must be changed @@ --
-  // Make the final check before filling the output -- @@ Must be changed @@ --
-#ifdef chdebug
-  G4int fCharge=0;
-  G4int fBaryoN=0;
-  G4int nHad=theQHadrons.size();
-  if(nHad) for(G4int ih=0; ih<nHad; ih++)
-  {
-    fCharge+=theQHadrons[ih]->GetCharge();
-    fBaryoN+=theQHadrons[ih]->GetBaryonNumber();
-  }
-  G4int nQuas=theQuasmons.size();
-  if(nQuas)for(G4int iqs=0; iqs<nQuas; iqs++)
-  {
-    fCharge+=theQuasmons[iqs]->GetCharge();
-    fBaryoN+=theQuasmons[iqs]->GetBaryonNumber();
-  }
-  if(fCharge!=totCharge || fBaryoN!=totBaryNum)
-  {
-    G4cerr<<"***G4QuasmonString::Fragment: tC="<<totCharge<<", C="<<fCharge<<", tB="
-          <<totBaryNum<<", B="<<fBaryoN<<G4endl;
-    if(nHad) for(G4int h=0; h<nHad; h++)
-    {
-      G4QHadron* cH = theQHadrons[h];
-      G4cerr<<":G4QuaSt::HQ:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl;
-    }
-    if(nQuas) for(G4int q=0; q<nQuas; q++)
-    {
-      G4Quasmon* cQ = theQuasmons[q];
-      G4cerr<<":G4QuaSt::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl;
-    }
-  }
-#endif
-  G4QHadronVector dummy;       // Prototype of the output G4QuasmonVector to avoid wornings
-  G4QHadronVector* finalQHadrons = &dummy; // Prototype of the output G4QuasmonVector
-  G4int nH = theQHadrons.size();
-  if(nH)
-  {
-    for(G4int ih=0; ih<nH; ih++)
-    {
-      G4QHadron* curH     = new G4QHadron(theQHadrons[ih]);
-      finalQHadrons->push_back(curH);                  // deleted after the "while LOOP"
-    }
-  }
-  for_each(theQuasmons.begin(),theQuasmons.end(),DeleteQuasmon()); //CleanUp Quasm's
-  theQuasmons.clear();
-  return finalQHadrons;
-} // End of the Fragmentation member function
-
-//The public extraction of the number of the created (in Constructor) G4QHadrons
-G4int G4QuasmonString::GetNOfHadrons() {return theQHadrons.size();}
-
-//The public extraction of the number of the created (in Constructor) G4Quasmons
-G4int G4QuasmonString::GetNOfQuasmons() {return theQuasmons.size();}
-
-//The public extraction of the projectile environment flag ("true" - exists)
-G4bool G4QuasmonString::GetProjEnvFlag() {return theProjEnvFlag;}
-
-//The public extraction of the target environment flag ("true" - exists)
-G4bool G4QuasmonString::GetTargEnvFlag() {return theTargEnvFlag;}
-
-//The public Quasmons duplication with delete responsibility of User (!)
-G4QuasmonVector* G4QuasmonString::GetQuasmons()
-{//              ==============================
-  G4int nQ=theQuasmons.size();
-#ifdef pdebug
-  G4cout<<"G4QuasmonString::GetQuasmons is called nQ="<<nQ<<G4endl;
-#endif
-  G4QuasmonVector* quasmons = new G4QuasmonVector; // Intermediate
-  if(nQ) for(G4int iq=0; iq<nQ; iq++)
-  {
-#ifdef pdebug
-    G4cout<<"G4QStr::GetQuasmons:Q#"<<iq<<",QPDG="<<theQuasmons[iq]->GetQPDG()<<",QQC="
-          <<theQuasmons[iq]->GetQC()<<",Q4M="<<theQuasmons[iq]->Get4Momentum()<<G4endl;
-#endif
-    if(theQuasmons[iq]->GetStatus())
-    {
-      G4Quasmon* curQ = new G4Quasmon(theQuasmons[iq]);
-      quasmons->push_back(curQ);                   // (del. equiv. - user is responsibile)
-    }
-  }
-#ifdef pdebug
-  G4cout<<"G4QuasmonString::GetQuasmons ===OUT==="<<G4endl;
-#endif
-  return quasmons;
-} // End of GetQuasmons
-
-//The public Quasmons duplication with delete responsibility of User (!)
-G4QHadronVector* G4QuasmonString::GetHadrons()
-{//              =============================
-  G4int nH=theQHadrons.size();
-#ifdef pdebug
-  G4cout<<"G4QuasmonString::GetHadrons is called nH="<<nH<<G4endl;
-#endif
-  G4QHadronVector* hadrons = new G4QHadronVector; // Intermediate
-  if(nH) for(G4int ih=0; ih<nH; ih++)
-  {
-#ifdef pdebug
-    G4cout<<"G4QStr::GetHadrons: H#"<<ih<<",QPDG="<<theQHadrons[ih]->GetQPDG()<<",QQC="
-          <<theQHadrons[ih]->GetQC()<<",H_Mass="<<theQHadrons[ih]->GetMass()<<G4endl;
-#endif
-    if(!theQHadrons[ih]->GetNFragments())
-    {
-      G4QHadron* curH = new G4QHadron(theQHadrons[ih]);
-      hadrons->push_back(curH);                   // (del. equiv. - user is responsibile)
-    }
-  }
-#ifdef pdebug
-  G4cout<<"G4QuasmonString::GetHadrons ===OUT==="<<G4endl;
-#endif
-  return hadrons;
-} // End of GetHadrons
-
-// Randomize the momentum fraction for the CHIPS of nPart free partons [x*(1-x)^(n-3)]
-G4double G4QuasmonString::RandomizeMomFractionFree(G4int nPart)
-{//              ==============================================
-  // @@ TMP --- Begin ---
-  if(2>1)
-  {
-    if(nPart<2)
-    {
-      G4cerr<<"**G4QuasmonString::RandMomFractionString: n="<<nPart<<" < 2, retun 0"<<G4endl;
-      return 0.;
-    }
-    G4double x=0.5;
-    if(nPart==2) return x;          // GS meson
-    G4double r=G4UniformRand();
-    if(r==0.) return 0.;
-    if(r==1.) return 1.;
-    if     (nPart==3) x=r;          // GS baryon
-    else if(nPart==4) x=1.-sqrt(r); // GS quaternion
-    else x=1.-pow(r,1./(nPart-2.)); // nPart>4
-    return x;
-  }
-  //if(nPart!=3) G4cerr<<"*>>>>>*G4QuasmonString::RandMomFractionFree: n="<<nPart<<G4endl;
-  // @@ TMP --- End ---
-  if(nPart<2)
-  {
-    G4cerr<<"**G4QuasmonString::RandMomFractionFree: n="<<nPart<<" < 2, retun 0."<<G4endl;
-    return 0.;
-  }
-  G4double x=0.5;
-  if(nPart==2) return x;       // GS meson
-  G4double r=G4UniformRand();
-  if(r==0.) return 0.;
-  if(r==1.) return 1.;
-  if(nPart==3) x=sqrt(r);      // GS baryon
-  else if(nPart==4)            // GS quaternion
-  {
-    if    (r==0.5) x=0.5;
-    else if(r<0.5) x=sqrt(r+r)*(.5+.1579*(r-.5));
-    else           x=1.-sqrt(2.-r-r)*(.5+.1579*(.5-r));
-  }
-  else
-  {
-    G4int n1=nPart-2;
-    G4double r1=n1;
-    G4double r2=r1-1.;
-    G4double rr=r2/r1;
-    G4double rp=pow(rr,n1);
-    G4double p2=rp+rp;
-    if  (r==rr)  x=p2;
-    else
-    {
-      if(r<rr)
-      {
-        G4double pr=0.;
-        G4double pra=0.;
-        if(nPart>8)
-        {
-          if(nPart>10)
-          {
-            if(nPart>11)                      // >11
-            {
-              pr=.614/pow((nPart+1.25),.75);
-              pra=.915/pow((nPart+6.7),1.75);
-            }
-            else                              // 11
-            {
-              pr=.09945;
-              pra=.00667;
-            }
-          }
-          else
-          {
-            if(nPart>9)                       // 10
-            {
-              pr=.1064;
-              pra=.00741;
-            }
-            else                              // 9
-            {
-              pr=.11425;
-              pra=.00828;
-            }
-          }
-        }
-        else
-        {
-          if(nPart>6)
-          {
-            if(nPart>7)                       // 8
-            {
-              pr=.12347;
-              pra=.00926;
-            }
-            else                              // 7
-            {
-              pr=.13405;
-              pra=.01027;
-            }
-          }
-          else
-          {
-            if(nPart>5)                       // 6
-            {
-              pr=.1454;
-              pra=.01112;
-            }
-            else                              // 5
-            {
-              pr=.15765;
-              pra=.00965;
-            }
-          }
-        }
-        x=pow((r/p2),(1.-rr+pra))*(rr+pr*(r-p2));
-      }
-      else
-      {
-        G4double sr=0.;
-        if(nPart>8)
-        {
-          if(nPart>10)
-          {
-            if(nPart>11) sr=.86/(nPart+1.05); // >11
-            else         sr=.0774;            // 11
-          }
-          else
-          {
-            if(nPart>9) sr=.0849;             // 10
-            else        sr=.0938;             // 9
-          }
-        }
-        else
-        {
-          if(nPart>6)
-          {
-            if(nPart>7) sr=.1047;             // 8
-            else        sr=.1179;             // 7
-          }
-          else
-          {
-            if(nPart>5) sr=.1339;             // 6
-            else        sr=.15135;            // 5
-          }
-        }
-        x=1.-sqrt((1.-r)/(1.-p2))*(1.-rr+sr*(p2-r));
-      }
-    }
-  }
-  return x;
-} // End of RandomizeMomFractionFree
-
-// Randomize MomentumFraction for CHIPS of nPart partons for Pomeron exchange [(1-x)^(n-2)]
-G4double G4QuasmonString::RandomizeMomFractionString(G4int nPart)
-{//              ================================================
-  if(nPart<2)
-  {
-    G4cerr<<"**G4QuasmonString::RandMomFractionString: n="<<nPart<<" < 2, retun 0"<<G4endl;
-    return 0.;
-  }
-  G4double x=0.5;
-  if(nPart==2) return x;          // GS meson
-  G4double r=G4UniformRand();
-  if(r==0.) return 0.;
-  if(r==1.) return 1.;
-  if     (nPart==3) x=r;          // GS baryon
-  else if(nPart==4) x=1.-sqrt(r); // GS quaternion
-  else x=1.-pow(r,1./(nPart-2.)); // nPart>4
-  return x;
-} // End of RandomizeMomFractionString
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4BoundMuDecInElIntegration.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4BoundMuDecInElIntegration.cc	(revision 1197)
+++ 	(revision )
@@ -1,122 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: NuMu DIS(Q2) fixed step integration
-// .....................................................
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-2005
-// 
-//=====================================================================
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-//#include <CLHEP/GenericFunctions/LogGamma.hh>
-
-// Calculation of electron spectra integrals for randomization of bound mu->e+nu+nu decay
-
-double espec(double Z , double T) // T=E_kin in MeV
-{
-  static double mZ=0.,mp,mc,mep,mem,me,mpp;
-  if(Z!=mZ)
-  {
-    double Z2=Z*Z;
-    double Z4=Z2*Z2;
-    double az=std::log(Z);
-    mZ=Z;
-    mp=(11.65+330./Z)/(1.+7.6e-17*Z4*Z4);
-    mc=52.83-.2257*az*az;
-    mep=.674;
-    mem=.1431+Z2/15080.;
-    me=5.54*std::exp(-.0327*std::pow(Z,1.241));
-    mpp=2.253*std::exp(-Z2/8922.7);
-  		G4cout<<"z="<<Z<<":p="<<mp<<",c="<<mc<<",ep="<<mep<<",em="<<mem<<",e="<<me<<",pp="<<mpp
-          <<G4endl;
-		}
-  double p=mp;
-  double c=mc;
-  double ep=mep;
-  double em=mem;
-  double e=me;
-  double pp=mpp;
-  double res=std::pow(T,pp)/(1.+e*std::exp(em*std::pow(T,ep)))/(1.+std::pow(T/c,p));
-  //G4cout<<"T="<<T<<", R="<<.0001389*res<<G4endl;
-  return res;
-}
-int main()
-{
-  const int niX=201;             // number of points for randomization table
-  const int liX=niX-1;           // the last index for randomization table (?)
-  //const int niE=1000000;         // number of points for integration table
-  const int niE=1000;           // number of points for integration table
-  // **********************************************************************
-  double Z=20.;                  // Z of the Element **********************
-  // **********************************************************************
-  double X[niX];                 // randomization table
-  double in[niE];                // integration table
-  double Emax=80.;               // Max kin E in MeV
-  double dE=Emax/niE;            // Step in the integration table
-  double spP=0.;                 // Previous spectrum value [sp(0)=0]
-  in[0]=0.;                      // Not yet normed collected integrals
-  double e=0.;                   // running value of energy
-  double inv=0.;                 // Integral cumulative value
-  for(int i=1; i<niE; i++)
-  {
-    e+=dE;
-    double sp=espec(Z,e);
-    inv+=spP+sp;                 // integrate with the Gauss method
-    in[i]=inv;
-  		//G4cout<<"sp="<<sp<<",in[="<<i<<"]="<<inv<<G4endl;
-    spP=sp;
-  } // End of the big loop over log(E)
-  for(int j=1; j<niE; j++) in[j]/=inv; // Normalize the integrals by a unit
-  //for(int n=1; n<niE; n++) G4cout<<"1-in["<<n<<"]="<<1.-in[n]<<G4endl;
-  double dx=1./liX;              // The last in the table is MAXE by definition
-  double d=dx;                   // Start searching with 1, because x(0)=0
-  int m=1;                       // index in the randomization table
-  double oi=0.;                  // previouse integral value
-  X[0]=0.;                       // Interpolated randomization table (energy)
-  e=0.;
-  for(int k=1; k<niE; k++)
-		{
-    e+=dE;
-    double ci=in[k];
-    if(ci>=d)
-				{
-      if(ci==d) X[m]=e;
-      else X[m]=e-(ci-d)*dE/(ci-oi);
-      m++;
-      d+=dx;                     // start searching for another point
-    }
-				oi=ci;
-  }
-  for(int k=0; k<liX; k++)
-		{
-    G4cout<<X[k]<<",";
-    if(!((k+1)%10))G4cout<<G4endl;
-  }
-  return 0;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4EffectivePhotonsTest.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4EffectivePhotonsTest.cc	(revision 1197)
+++ 	(revision )
@@ -1,92 +1,0 @@
-//
-// ********************************************************************
-// * 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 "G4ios.hh"
-#include "G4Electron.hh"
-#include "G4Element.hh"
-#include "G4ElectroNuclearCrossSection.hh"
-
-int main()
-{
-  G4ElectroNuclearCrossSection eACrossSection;
-  const G4int nN=6;                          // A#of plots (nuclei in the test)
-  ofstream file0("h1_epl.out", ios::out);
-  file0.setf( ios::scientific, ios::floatfield );
-  ofstream file1("h1_eph.out", ios::out);
-  file1.setf( ios::scientific, ios::floatfield );
-  ofstream file2("cu_epl.out", ios::out);
-  file2.setf( ios::scientific, ios::floatfield );
-  ofstream file3("cu_eph.out", ios::out);
-  file3.setf( ios::scientific, ios::floatfield );
-  G4Element* theElement[nN]={new G4Element("Hydrogen", "H", 1, 1.*g/mole),
-							 new G4Element("Deuterium", "D", 1, 2.*g/mole),
-							 new G4Element("Carbon", "C", 6, 12.*g/mole),
-							 new G4Element("Aluminum", "Al", 13, 27.*g/mole),
-							 new G4Element("Copper", "Cu", 29, 64.*g/mole),
-							 new G4Element("Lead", "Pb", 82, 208.*g/mole)};
-  G4ParticleDefinition* theParticleDefinition = G4Electron::ElectronDefinition();
-  G4DynamicParticle* theDynamicParticle;
-  for(G4int n=0; n<4; n++)
-  {
-    G4double ekin=1000.;
-    if(n==3) ekin=10000.;
-    else if(n==1) ekin=10000000.;
-    G4int   nel=0;
-    if(n>1) nel=3;
-    theDynamicParticle = new G4DynamicParticle(theParticleDefinition,
-											   G4ParticleMomentum(1.,0.,0.), ekin*MeV);
-	G4double sig = eACrossSection.GetCrossSection(theDynamicParticle,theElement[nel])/millibarn;
-	G4cout<<"n="<<n<<", Cross Section="<<sig<<G4endl;
-	delete theDynamicParticle;
-	G4int prob[100];
-	for(G4int k=0; k<100; k++) prob[k]=0;
-	for(G4int i=0; i<10000000; i++)
-	{
-	  G4double phe=eACrossSection.GetEffectivePhotonEnergy();
-      //if(phe<100.)G4Exception("Too low photon energy");
-	  G4int ind=static_cast<int>(phe/10.);
-	  if(n==3) ind/=10;
-	  else if(n==1) ind/=10000;
-	  prob[ind]++;
-	  if(!(i%1000000)) G4cout<<i<<" equivalent photons are generated"<<G4endl;
-	}
-	//G4cout<<"Now printing"<<G4endl;
-	for(G4int j=0; j<100; j++)
-	{
-	  //G4cout<<"j="<<j<<G4endl;
-	  if     (!n)   file0<<j*10    <<" "<<prob[j]<<G4endl;
-	  else if(n==1) file1<<j*100000<<" "<<prob[j]<<G4endl;
-	  else if(n==2) file2<<j*10    <<" "<<prob[j]<<G4endl;
-	  else if(n==3) file3<<j*100   <<" "<<prob[j]<<G4endl;
-	}
-  }
-  return EXIT_SUCCESS;
-}
-
-
-
-
-
-
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4ElectroNuclearCrossSectionTest.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4ElectroNuclearCrossSectionTest.cc	(revision 1197)
+++ 	(revision )
@@ -1,108 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-#define debug
-#define qedebug
-
-//#include "G4UIterminal.hh"
-#include "G4ios.hh"
-//#include "G4ProcessManager.hh"
-//#include "G4DynamicParticle.hh"
-#include "G4Electron.hh"
-#include "G4Element.hh"
-#include "G4ElectroNuclearCrossSection.hh"
-
-int main()
-{
-  G4ElectroNuclearCrossSection eACrossSection;
-  const G4int nN=6;                          // A#of plots (nuclei in the test)
-  const G4int nC=227;                        // A#of points in the plots (energy values)
-#ifdef qedebug
-  const G4int nP=10;                         // A#of points in nu/Q2 for each eE (energy values)
-#endif
-  std::ofstream fileH1("h1_e.out", std::ios::out);
-  fileH1.setf( std::ios::scientific, std::ios::floatfield );
-  std::ofstream fileH2("h2_e.out", std::ios::out);
-  fileH2.setf( std::ios::scientific, std::ios::floatfield );
-  std::ofstream fileC12("c12_e.out", std::ios::out);
-  fileC12.setf( std::ios::scientific, std::ios::floatfield );
-  std::ofstream fileAl27("al27_e.out", std::ios::out);
-  fileAl27.setf( std::ios::scientific, std::ios::floatfield );
-  std::ofstream fileCu("cu_e.out", std::ios::out);
-  fileCu.setf( std::ios::scientific, std::ios::floatfield );
-  std::ofstream filePb("pb_e.out", std::ios::out);
-  filePb.setf( std::ios::scientific, std::ios::floatfield );
-  G4double low[nN]={137. , 2.22, 12.5 , 8.3 , 7.  , 7.35};
-  G4double high[nN]={2.e7, 2.e7, 2.e7, 2.e7, 2.e7, 2.e7};
-  G4int zA[nN]  ={1, 1,  6, 13, 29,  82};
-  G4int aA[nN]  ={1, 2, 12, 27, 64, 208};
-  G4Element* theElement[nN]={new G4Element("Hydrogen",  "H" , zA[0], aA[0]*g/mole),
-							 new G4Element("Deuterium", "D" , zA[1], aA[1]*g/mole),
-							 new G4Element("Carbon",    "C" , zA[2], aA[2]*g/mole),
-							 new G4Element("Aluminum",  "Al", zA[3], aA[3]*g/mole),
-							 new G4Element("Copper",    "Cu", zA[4], aA[4]*g/mole),
-							 new G4Element("Lead",      "Pb", zA[5], aA[5]*g/mole)};
-  G4ParticleDefinition* theParticleDefinition = G4Electron::ElectronDefinition();
-  G4DynamicParticle* theDynamicParticle;
-  G4double sig=0.;
-  for(G4int n=0; n<nN; n++)                 // >>>> LOOP over Elements
-  {
-	G4double lekin = std::log(low[n]);
-	G4double dlekin= std::exp((std::log(std::log(high[n]))-std::log(lekin))/(nC-1));
-	lekin /= dlekin;
-#ifdef debug
-	G4cout<<"G4ElNucCSTest:>>>>n="<<n<<",l="<<low[n]<<",h="<<high[n]<<",n="<<nC<<",d="<<dlekin<<G4endl;
-#endif
-	for(G4int ll=0; ll<nC; ll++)            // >>>> LOOP over electron energies with the log-step
-	{
-	  lekin*=dlekin;
-      G4double ekin=std::exp(lekin);
-	  theDynamicParticle = new G4DynamicParticle(theParticleDefinition,
-												 G4ParticleMomentum(1.,0.,0.), ekin*MeV);
-	  sig = eACrossSection.GetCrossSection(theDynamicParticle,theElement[n])/millibarn;
-	  delete theDynamicParticle;
-#ifdef debug
-      G4cout<<"G4ElNucCSTest:****>>> Z="<<zA[n]<<", A="<<aA[n]<<", eE="<<ekin<<", sigma="<<sig<<G4endl;
-#endif
-#ifdef qedebug
-	  if(sig>0.)for(G4int qe=0; qe<nP; qe++) // >>>> LOOP over equiv. photon energies for particular eE
-	  {
-	    G4double phE = eACrossSection.GetEquivalentPhotonEnergy();
-	    G4double phQ2= eACrossSection.GetEquivalentPhotonQ2(phE);
-	    G4double x = phQ2/1878./phE;
-        G4cout<<"G4ElNucCSTest:.......eE="<<ekin<<", phE="<<phE<<", phQ2="<<phQ2<<", x="<<x<<G4endl;
-	  } // End of the equivalent photon LOOP
-#endif
-      // Fill the result for the electro-nuclear cross section plot
-      if(!n) fileH1<<ekin<<" "<<sig<<G4endl;
-      else if(n==1) fileH2<<ekin<<" "<<sig<<G4endl;
-      else if(n==2) fileC12<<ekin<<" "<<sig<<G4endl;
-      else if(n==3) fileAl27<<ekin<<" "<<sig<<G4endl;
-      else if(n==4) fileCu<<ekin<<" "<<sig<<G4endl;
-      else if(n==5) filePb<<ekin<<" "<<sig<<G4endl;
-    } // End of the LOOP over electron energies
-  } // End of the LOOP over elements
-  return EXIT_SUCCESS;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4GlauberCrossSections.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4GlauberCrossSections.cc	(revision 1197)
+++ 	(revision )
@@ -1,1121 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: Glauber Hadron-Nuclear Cross Sections
-// .....................................................
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Jan-2005
-// 
-//=====================================================================
-
-//#define debug
-//#define bestest
-//#define integrcs
-#define eldiffcs
-
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-#include "G4QBesIKJY.hh"
-#include "G4QPDGCode.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include "G4NucleiProperties.hh"
-//#include <CLHEP/GenericFunctions/Bessel.hh>
-
-// Integrated cross-sections
-G4double TotalCrSec, InelCrSec, ProdCrSec, ElasticCrSec, QuasyElasticCrSec; 
-// Parameters of hadron-nucleon interaction
-G4double HadrTot, HadrSlope, HadrReIm, DDSect2, DDSect3, Tot00;
-// CHIPS parameters of hadron-proton & hadron-neutron interaction (Re/Im is common)
-G4double HadrTElN, HadrTElP, HadrSlpN, HadrSlpP, HadrPexN, HadrPexP;
-
-// CHIPS Parameters (only for protons, nn is necessary for neutrons np+nn)
-void CHIPSParameters(G4int iPDG, G4double HadrMoment) // HadrMoment is in MeV
-{
-  G4double p=HadrMoment/GeV;                   // Momentum in GeV
-  G4double p2=p*p;                             // Squared momentum in GeV^2
-  G4double sp=std::sqrt(p);
-  G4double p2s=p2*sp;
-  G4double p3=p2*p;
-  G4double p4=p2*p2;
-  G4double p5=p4*p;
-  G4double lp=std::log(p);
-  G4double d2=(lp-5.)*(lp-5.);
-  G4double p8=p4*p4;
-  if (iPDG==2212)
-  {
-    HadrTElN=12./(p2s+.05*p+.0001/sp)+.35/p+(6.75+.14*d2+19./p)/(1.+.6/p4); // pn (mb)
-    HadrTElP=2.91/(p2s+.0024)+(6.75+.14*d2+23./p)/(1.+.4/p4);               // pp (mb)
-    HadrSlpN=(7.2+4.32/(p8+.012*p3))/(1.+2.5/p4);                           // pn (GeV^-2) 
-    HadrSlpP=8.*std::pow(p,.055)/(1.+3.64/p4);                              // pp (GeV^-2) 
-    HadrPexN=(6.75+.14*d2+13./p)/(1.+.14/p4)+.6/(p4+.00013);                // pn (mb/sr)
-    HadrPexP=(74.+3.*d2)/(1.+3.4/p5)+(.2/p2+17.*p)/(p4+.001*sp);            // pn (mb/sr)
-    HadrReIm=-.54+.0954*lp+.975/(p2+.09865/p);           // no unit (the same for pp & pn)
-    //G4cout<<"CHIPSPar:p="<<p<<",N="<<HadrTotN<<",P="<<HadrTotN<<",RI="<<HadrReIm<<G4endl;
-  }     
-  else G4cout<<"CHIPSPar: Only proton projectile (2212) is implemented PDG="<<iPDG<<G4endl;
-}
-
-// Dubna Parameters
-G4int CalculateParameters(G4int iPDG, G4double HadrMoment) // HadrMoment is in MeV
-{
-  static const G4double mN=.938;   // Dubna's mass of the nucleon in nuclei in GeV
-  //static const G4double mN=.9315;  // AtomicMassUnit (mass of the nucleon in nuclei) in GeV
-  static const G4double dmN=mN+mN; // Doubled mass of the nucleon in nuclei in GeV
-  static const G4double mN2=mN*mN; // Squared mass of the nucleon in nuclei in GeV^2
-  G4int iHadron=-1;
-  if(iPDG==2212||iPDG==2112||iPDG==3122||iPDG==3222||iPDG==3112||
-     iPDG==3212||iPDG==3312||iPDG==3322||iPDG==3334) iHadron = 0;
-  else if(iPDG==-2212||iPDG==-2112||iPDG==-3122||iPDG==-3222||
-          iPDG==-3112||iPDG==-3212||iPDG==-3312||iPDG==-3322||
-          iPDG==-3334) iHadron = 1;       // Anti-nucleons, Anti-hyperons
-  else if(iPDG== 211)  iHadron = 2;       // Pi+
-  else if(iPDG==-211)  iHadron = 3;       // Pi-
-  else if(iPDG== 321)  iHadron = 4;       // K+
-  else if(iPDG==-321)  iHadron = 5;       // K- @@ What about K0?
-  else
-  {
-    G4cout<<"CalculateParameters: PDG= "<<iPDG<<" is not supported"<<G4endl;
-    return iHadron;
-  }
-  G4double mHadr      = G4QPDGCode(iPDG).GetMass()/1000.; // Hadron Mass in GeV
-  G4double mHadr2     = mHadr*mHadr;               // Squared Hadron Mass in GeV
-           HadrMoment/= 1000.;                     // Momentum in GeV (input parameter)
-  G4double HadrMoment2= HadrMoment*HadrMoment;     // Squared Momentum in GeV^2
-  G4double HadrEnergy2= mHadr2+HadrMoment2;        // Tot energy in GeV
-  G4double HadrEnergy = std::sqrt(HadrEnergy2);    // Tot energy in GeV (global parameter)
-  G4double sHadr      = HadrEnergy*dmN+mN2+mHadr2; // s in GeV^2
-  G4double sqrS       = std::sqrt(sHadr);          // W in GeV
-  //G4cout<<"GHAD: E="<<HadrEnergy<<",dM="<<dmN<<",sN="<<mN2<<",sH="<<mHadr2<<G4endl;
-  switch (iHadron)
-  {
-  case 0:                                      // =====>>> proton or hyperons (the same?)
-    //G4double Delta=1;                                                   // LowEnergy corr
-    //if(HadrEnergy<40.) Delta = 0.916+0.0021*HadrEnergy;
-    HadrTot = 5.2+5.2*std::log(HadrEnergy)+51*std::pow(HadrEnergy,-0.35); // mb
-    HadrSlope = 6.44+0.88*std::log(sHadr)-1;                              // GeV^-2 
-    HadrReIm  = 0.13*std::log(sHadr/350)*std::pow(sHadr,-0.18);           // no unit
-    //G4cout<<"GHAD:S="<<sHadr<<",T="<<HadrTot<<",R="<<HadrReIm<<",B="<<HadrSlope<<G4endl;
-    DDSect2   = 11.;                                                      // mb*GeV^-2
-    DDSect3   = 3.;                                                       // mb*GeV^-2
-    // Hyperon corrections
-    if(iPDG==3122||iPDG==3222||iPDG==3112||iPDG==3212) //Lambda,Sig0+-
-    {
-      HadrTot   *= 0.80;
-      HadrSlope *= 0.85;
-    }
-    else if(iPDG==3312||iPDG==3322)            // ---> Xi0-
-    {
-      HadrTot   *= 0.70;
-      HadrSlope *= 0.75;
-    }           
-    else if(iPDG==3334)                        // ---> Omega-
-    {
-      HadrTot   *= 0.60;
-      HadrSlope *= 0.65;
-    }
-    break;
-  case 1:                                      // =====>>> antiproton and antihyperons
-    HadrTot = 5.2+5.2*std::log(HadrEnergy)+123.2*std::pow(HadrEnergy,-0.5); //  mb
-    HadrSlope = 8.32+0.57*std::log(sHadr);     // GeV^-2 
-    if(HadrEnergy<1000.) HadrReIm = 0.06*(sqrS-2.236)*(sqrS-14.14)*std::pow(sHadr,-0.8);
-    else HadrReIm  = 0.6*std::log(sHadr/350)*std::pow(sHadr,-0.25);
-    DDSect2 = 11.;                             //mb*GeV-2 @@ the same as in case 0
-    DDSect3 = 3.;                              //mb*GeV-2 @@ the same as in case 0
-    // Hyperon corrections
-    if(iPDG==-3122||iPDG==-3222||iPDG==-3112||iPDG==-3212)//AntiLam,Sig
-    {
-      HadrTot   *=0.75;
-      HadrSlope *=0.85;
-    }
-    else if(iPDG==-3312||iPDG==-3322)          // =====>>> AntiXi0-
-    {
-      HadrTot   *=0.65;
-      HadrSlope *=0.75;
-    }
-    if(iPDG==-3334)                            // ======>>>AntiOmega-
-    {
-      HadrTot   *=0.55;
-      HadrSlope *=0.65;
-    }
-    break;
-  case 2:                                      // =====>>>  pi plus
-    if(HadrMoment>2.) HadrTot = 10.6+2.*std::log(HadrEnergy)+25*std::pow(HadrEnergy,-0.43);// mb
-    else HadrTot = 40-50*(HadrMoment-1.5)*(HadrMoment-1.7);
-    HadrSlope = 7.28+0.245*std::log(sHadr);                                // GeV^-2 
-    HadrReIm  = 0.2*std::log(sHadr/100)*std::pow(sHadr,-0.15);             // no dim
-    DDSect2   = 4.6;                                                       // mb*GeV^-2
-    DDSect3   = 1.33;                                                      // mb*GeV^-2
-    break;
-  case 3:                                      // =====>>>  pi minus
-    HadrTot = 10.6+2*std::log(HadrEnergy)+30*std::pow(HadrEnergy,-0.43);   // mb @@ E->inf?
-    if(HadrMoment<1.399) HadrTot = HadrTot+21.0/0.4*(1.4-HadrMoment);      // A huge jump ?
-    HadrSlope = 7.28+0.245*std::log(sHadr);                                // GeV-2 
-    HadrReIm  = 0.2*std::log(sHadr/100)*std::pow(sHadr,-0.15);
-    DDSect2   = 4.6;                           //mb*GeV-2 @@ the same as in case 2
-    DDSect3   = 1.33;                          //mb*GeV-2
-    break;
-  case 4:                                      // =====>>> K plus
-    HadrTot = 10.6+1.8*std::log(HadrEnergy)+9.*std::pow(HadrEnergy,-0.55); // mb 
-    if(HadrEnergy>100) HadrSlope = 15.;              // Jump at 100 GeV (?)
-    else HadrSlope = 1.0+1.76*std::log(sHadr)-2.84*std::pow(sHadr,-0.5);     // GeV-2
-    //else HadrSlope = 5.28+1.76*std::log(sHadr)-2.84*std::pow(sHadr,-0.5);    // GeV-2
-    HadrReIm = 0.4*(sHadr-20)*(sHadr-150)*std::pow(sHadr+50,-2.1);
-    DDSect2   = 3.5;                           //mb*GeV-2
-    DDSect3   = 1.03;                          //mb*GeV-2
-    break;
-  case 5:                                      // ======>>> K minus
-    HadrTot = 10+1.8*std::log(HadrEnergy)+25*std::pow(HadrEnergy,-0.5);      // mb 
-    HadrSlope = 6.98+0.127*std::log(sHadr);           // GeV-2 
-    //if(HadrEnergy<8) HadrReIm = 0.7;
-    HadrReIm  = 0.4*(sHadr-20)*(sHadr-20)*std::pow(sHadr+50,-2.1);
-    DDSect2   = 3.5;                           //mb*GeV-2
-    DDSect3   = 1.03;                          //mb*GeV-2
-    break;
-  }     
-  return iHadron;
-}
-
-void  CalculateIntegralCS(G4int  Anuc, G4double HadrEnergy)
-{
-  static const G4double eps = 0.0001;          // Accuracy of calculations
-  static const G4double mb2G2 = 2.568;         // Transformation from mb to GeV^-2
-  static const G4double incrf = 10;            // Increase factor of radius for intergation
-  static const G4double m2G10 = incrf*mb2G2;   // Big conversion factor
-  static const G4double dR0   = 1.06+1.06;     // Doubled nominal R0
-  G4double An      = Anuc;                     // A float
-  G4double Stot    = HadrTot*mb2G2;            // Total hadron-nucleon CS in GeV-2
-  G4double Bhad    = HadrSlope;                // Diffraction cone nH In GeV-2
-  G4double Asq     = 1+HadrReIm*HadrReIm;      // |M|^2/(ImM)^2
-
-  G4double R0      = std::sqrt(0.99);          // in fermi (strange value? 1.07?)
-
-  if (Anuc == 58) R0 = std::sqrt(0.6);         // Personal correction for Fe
-  if (Anuc >20)   R0 = std::sqrt((35.34+0.5*Anuc)/(40.97+Anuc));
-  if (Anuc == 16) R0 = std::sqrt(0.75);        // Personal correction for O16
-  if (Anuc >10)   R0 = std::sqrt(0.84);        // The same R0 for A=11-20 (except O16)
-  if (Anuc ==  4) R0 *= 1.2;                   // Personal correction for Helium
-
-  G4double Rnucl   = R0*std::pow(static_cast<double>(Anuc),.3333333); // in fermi
-  G4double Rnuc2   = Rnucl*Rnucl*m2G10;        // in GeV^-2 (10 -> to make it >> R)
-  G4double RB      = Rnuc2+Bhad;               // Effective increase of R2 (Convolution?)
-  G4double R2B     = RB+Bhad;                  // Over-convolution (?)
-  G4double Delta   = Stot/R2B/twopi;           // Integration step for Total & Inelastic CS
-  G4double Delt2   = Delta+Delta;              // Two delta
-  G4double Delt3   = Stot*Asq*R2B/RB/Bhad/16/pi; // Integration step for Production CS
-
-  G4double Tot0    = 0.;                       // =SUM[(-Delta)^(i-1)*(C^A_i)/i]
-  G4double Inel0   = 0.;                       // =SUM[(-Delta)^(i-1)*(2A)!/(2A-i)!/i!/i]
-  G4double N       = -1./Delta; 
-  G4double N1      = N;
-  G4double N3      = -1./Delt2;
-  G4double Prod0   = 0.;
-  G4int    Ai      = Anuc+1;                   // Working value to avoid multiplication
-  G4double RBi     = 0.;                       // Working value to avoid multiplication
-  for (G4int i=1; i<= Anuc; i++)               // ==> Loop over nucleons
-  {
-    Ai--;                                      // Working value to avoid multiplication
-    RBi   += RB;                               // Working value to avoid multiplication
-    G4double Di=Delta/i;                       // Working value to avoid repetition
-    N     *= -Di*Ai;                           // (-Delta)^(i-1)*A!/(A-i)!/i! (C^A_i)
-    N1    *= -Di*(Anuc+Ai);                    // (-Delta)^(i-1)*(2A)!/(2A-i)!/i!
-    N3    *= -Delt2*Ai/i;                      // (-2*Delt)^(i-1)*A!/(A-i)!/i! (C^A_i)
-    Tot0  += N/i;                              // =SUM[(-Delta)^(i-1)*(C^A_i)/i]
-    Inel0 += N1/i;                             // =SUM[(-Delta)^(i-1)*(2A)!/(2A-i)!/i!/i]
-    //G4double N2    = 1.;
-    G4double N4    = 1.;
-    //G4double Inel1 = 0.;
-    //G4double Inel2 = 0.;
-    G4double Prod1 = 0.;
-    G4double Bhl   = 0.;
-    for (G4int l=0; l<= i; l++)                // ==> Loop over nucleon-nucleon pairs (0?)
-    {
-      //Inel1 += N2/(i+l);                 // SUM[(-Delta)^(l-1)*i!(i-1)!/(l-1)!/l!/(i+l)!]
-      Prod1 += N4*RB/(RBi+Bhl);                //
-      //N2    *= -Delt*(i-l)/(l+1);              // (-Delta)^l*i!/l!/(l+1)!
-      N4    *= -Delt3*(i-l)/(l+1);
-      Bhl   += Bhad;
-    }
-    //Inel2 += Inel1*N3;
-    Prod0   += Prod1*N3;
-    if(std::fabs(N1/i/Inel0) < eps)  break;
-  }
-
-  Tot0             *= HadrTot;                 // Multiply by the hN cross section
-  Inel0            *= HadrTot/2;               // Multiply by a half of hN cross section
-  //Inel2            *= HadrTot;                 // Multiply by the hN cross section
-  Prod0            *= HadrTot;                 // Multiply by the hN cross section
-  Tot00             = Tot0;                    // Remember because it will be changed
-  G4double ak       = Rnuc2*twopi/Stot;        // cross-section ratio for integration
-  G4double Ank      = An/ak;                   // Working value to avoid repetition
-  G4double rak      = 1./ak;                   // Working value to avoid repetition
-  G4double ak1      = 1.-rak/4;                // Working value to avoid repetition
-  G4double Ank1     = Ank*ak1;                 // Working value to avoid repetition
-  G4double DDSect1  = (DDSect2+DDSect3*std::log(dR0*HadrEnergy/Rnucl/std::sqrt(m2G10)/4));
-  G4double Dtot     = 8*pi*ak/HadrTot*(1.-(1.+Ank)*std::exp(-Ank))*DDSect1/mb2G2;//TotCSCor
-  G4double bk       = (1.-rak)/Stot/ak1;       // Working value to avoid power(,2)
-  G4double bd       = bk*bk*DDSect1*(1.-(1.+Ank1)*std::exp(-Ank1))*Rnuc2; // Working
-  G4double Dprod    = bd*4*pi2*mb2G2;          // Correction for the Production & Inel CS
-  TotalCrSec        = Tot0-Dtot;               // Total Cross Section         (primary)
-  InelCrSec         = Inel0-Dprod;             // Inelastic Cross Section     (primary)
-  //InelCrSec1        = Inel2;                 // Direct calculation without correction
-  ProdCrSec         = Prod0-Dprod;             // Production Cross Section    (primary)
-  ElasticCrSec      = TotalCrSec-InelCrSec;    // Elastic Cross Section       (secondary)
-  QuasyElasticCrSec = InelCrSec-ProdCrSec;     // Quasy-Elastic Cross Section (secondary)
-}
-
-#ifdef eldiffcs
-// Functions for calculation of differential elastic cross-sections
-// Static globals
-static const G4double  rAmax = 2.5;      // Factor of maximum radius
-static const G4int     NptB  = 500;      // A#of steps in the impact parameter integration
-static const G4int     nFact = 253;      // Maximum A (for Factorials and Factors)
-
-// Globals
-G4double r0 = 1.1;                       // Wood-Saxon's factor
-G4double Mnoj[nFact], Factorials[nFact]; // Factors and factorials
-G4double R1, R2, Pnucl, Aeff;            // Nuclear Parameters
-G4double InCoh;                          // Incoherent quasi-elastic cross section
-
-G4double binom(G4int N, G4int M)
-{
-  if(N>170 && N>M && M)
-		{
-    G4double fN=N;
-    G4double fM=M;
-    G4double fD=N-M;
-    G4double man=N*std::log(fN)-M*std::log(fM)-fD*std::log(fD)-1.;
-    //G4cout<<"G4GCS::binom: N="<<N<<", M="<<M<<", C="<<man<<", E="<<std::exp(man)<<G4endl;
-    return std::exp(man);
-		}
-  else if(N>1 && N>M && M) return Factorials[N]/Factorials[M]/Factorials[N-M];
-  return 1.;
-}
-
-// Initialize factorials and combinatoric coefficients
-void Initialize()
-{
-  //static const G4double  sat = 3.03;      // Stirling saturation of Dubna
-  G4double Val = Factorials[0] = Mnoj[0] = 1.;
-  for (G4int i=1; i<nFact; i++)
-  {
-    G4double Si = 0.;
-             Val *= i;                    // Calculation of the factorial values
-    Factorials[i] = Val;
-    for (G4int l = 0; l<=i; l++)
-    {
-      G4double Sm = 1.;                   // sum of reversed binom coefficients (?)
-      for (G4int m=1; m<=i-l; m++) Sm += 1./binom(i-l,m);
-      //if(i>169)G4cout<<"G4GCS::Init:S="<<Sm<<", b("<<i<<","<<l<<")="<<binom(i,l)<<G4endl;
-      Si += Sm/binom(i,l);
-    } //  End of l LOOP
-    Mnoj[i] = Si;
-    //G4double d=Si-sat;
-    //G4double r=d/sat;
-    //if(i>100)G4cout<<"G4GCS::Init:i="<<i<<":"<<Si<<"-"<<sat<<" = "<<d<<", r="<<r<<G4endl;
-  } // End of i LOOP
-} // End of Initialization
-
-// Dubna paranmeters of nuclei
-void CalculateNuclearParameters(G4int Anuc)  // R1,R2,Pnuc,Aeff
-{//  ==============================================
-  G4double A=Anuc;
-  // Personal corrections fore some nuclei
-  if(Anuc == 4)                                      // Personal correction for He (!)
-  {
-    R1    = 5.5;
-    R2    = 3.7;
-    Pnucl = 0.4;   
-    Aeff  = 0.87;
-  }
-  else if(Anuc == 9)                                 // Personal correction for Be (!)
-  {
-    R1    = 9.0;
-    R2    = 7.0;
-    Pnucl = 0.190;
-    Aeff  = 0.9;
-  }
-  //else if(Anuc == 11)                              // Personal correction for B (!)
-  //{
-  //  R1    = 10.8;
-  //  R2    = 7.5;
-  //  Pnucl = 0.85;
-  //  Aeff  = 1.2;
-  //}
-		//else if(Anuc == 12)                              // Personal correction for C (!)
-  //{
-  //   R1    = 9.336;
-  //   R2    = 5.63;
-  //   Pnucl = 0.197;
-  //   Aeff  = 1.0;
-  //}
-  else if(Anuc == 16)                                // Personal correction for O (!)
-  {
-    R1    = 10.50;
-    R2    = 5.5;
-    Pnucl = 0.7;
-    Aeff  = 0.98;
-    //R1    = 11.3;
-    //R2    = 2.5;
-    //Pnucl = 0.75;
-    //Aeff  = 0.9;
-  }
-  else if(Anuc == 58)                                // Personal correction for Ni (!)
-  {
-    R1    = 15.0;
-    R2    = 9.9;
-    Pnucl = 0.45;
-    Aeff  = 0.85;
-  }
-  else if(Anuc == 90)                                // Personal correction for Zr (!)
-  {
-    //R1    = 16.5;
-    //R2    = 11.62;
-    //Pnucl = 0.4;
-    //Aeff  = 0.9;
-    R1    = 16.5;
-    R2    = 11.62;
-    Pnucl = 0.4;
-    Aeff  = 0.7;
-  }
-  else if(Anuc == 208)                               // Personal correction for Pb (!)
-  {  
-    //      R1 = 20.73; R2 = 15.74.
-    //R1    = 4.1408*std::pow(A,0.3018);
-    //R2    = 3.806*std::pow(A-10.068,0.2685);
-    //Pnucl = 0.9;
-    //Aeff  = 1.1;
-    R1    = 19.5;
-    R2    = 15.74;
-    Pnucl = 0.4;
-    Aeff  = 0.7;
-  }
-  else
-  {
-    R1 = 4.45*std::pow(A-1.,.309);                  // First diffractional radius
-    if(Anuc == 28) R1 *= .955;                       // Personal correction for Si (?!)
-    R2    = 2.3*std::pow(A,.36);                    // Second diffraction radius
-    Pnucl = 0.176+(.00167+.00000869*Anuc)*Anuc;      // Momentum of mean Fermi motion
-    Aeff  = 0.9;                                     // Effective screaning
-  }
-}
-
-// Independent transition method calculation. Has problems for A>95 (short cut).
-G4double DiffElasticCS(G4int hPDG, G4double HadrMom, G4int A, G4double aQ2) // All in MeV
-{//      =================================================================
-  static const G4double eps = 0.000001;                     // Accuracy of calculations
-  static const G4double mb2G2 = 2.568;                      // Transform from mb to GeV^-2
-  static const G4double piMG  = pi/mb2G2;                   // PiTrans from GeV^-2 to mb
-  static const G4double dR0   = 1.06+1.06;                  // Doubled nominal R0
-  G4double hMom       = HadrMom/1000.;                      // Momentum (GeV, inputParam)
-		G4double MassH      = G4QPDGCode(hPDG).GetMass()/1000.;   // Hadron Mass in GeV
-  G4double MassH2     = MassH*MassH;
-  G4double HadrEnergy = std::sqrt(hMom*hMom+MassH2);        // Tot energy in GeV
-		//G4cout<<"G4GCS::DiffElasticCS: PGG_proj="<<hPDG<<", A_nuc= "<<A<<G4endl;
-  if(A==2 || A==3) G4Exception("G4GCS: This model does not work for nuclei with A=2, A=3");
-  if(A>252) G4Exception("G4GCS: This nucleus is too heavy for the model !!!");
-  //if(HadrEnergy-MassH<1.) G4Exception("Kin energy is too small for the model (T>1 GeV)");
-  CalculateParameters(hPDG, HadrMom);                   
-  CalculateIntegralCS(A, HadrEnergy);
-  CalculateNuclearParameters(A);
-  G4double Q2 = aQ2/1000/1000;                              // in GeV^2
-		//MassN           = A*0.938;                              // @@ This is bad!
-		G4double MassN    = A*0.9315;                             // @@ Atomic Unit is bad too
-  G4double MassN2   = MassN*MassN;
-  G4double S        = (MassN+MassN)*HadrEnergy+MassN2+MassH2;// Mondelststam s
-  G4double EcmH     = (S-MassN2+MassH2)/2/std::sqrt(S);     // CM energy of a hadron
-  G4double CMMom    = std::sqrt(EcmH*EcmH-MassH2);          // CM momentum
-
-  G4double Stot     = HadrTot*mb2G2;                        // in GeV^-2
-  G4double Bhad     = HadrSlope;                            // in GeV^-2
-  G4double Asq      = 1+HadrReIm*HadrReIm;                  // |M|^2/(ImM)^2
-  G4double Rho2     = std::sqrt(Asq);                       // M/ImM
-  G4double R12      = R1*R1;
-  G4double R22      = R2*R2;
-  G4double R12B     = R12+Bhad+Bhad;
-  G4double R22B     = R22+Bhad+Bhad;
-  G4double R12Ap    = R12+20;
-  G4double R22Ap    = R22+20;
-  G4double R13Ap    = R12*R1/R12Ap;
-  G4double R23Ap    = R22*R2/R22Ap*Pnucl;
-  G4double R23dR13  = R23Ap/R13Ap;
-  G4double R12Apd   = 2./R12Ap;
-  G4double R22Apd   = 2./R22Ap;
-  G4double R122Apd  = (R12Apd+R22Apd)/2;
-  G4double dR0H     = dR0*HadrEnergy/4;
-  G4double DDSec1p  = DDSect2+DDSect3*std::log(dR0H/R1);
-  G4double DDSec2p  = DDSect2+DDSect3*std::log(dR0H/std::sqrt((R12+R22)/2));
-  G4double DDSec3p  = DDSect2+DDSect3*std::log(dR0H/R2);
-  G4double Norm     = (R12*R1-Pnucl*R22*R2)*Aeff;    // Some questionable norming
-  G4double R13      = R12*R1/R12B;
-  G4double R23      = Pnucl*R22*R2/R22B;
-  G4double norFac   = Stot/twopi/Norm;               // totCS (in GeV^-2) is used
-  G4double Unucl    = norFac*R13;
-  G4double UnuclScr = norFac*R13Ap;
-  G4double SinFi    = HadrReIm/Rho2;
-  G4double FiH      = std::asin(SinFi);
-  G4double N        = -1.;
-  G4double N2       = R23/R13;
-  G4double ImElA0   = 0.;
-  G4double ReElA0   = 0.;
-  G4double Tot1     = 0.;
-  for(G4int i=1; i<=A; i++)                          // @@ Make separately for n and p
-  {
-    N              *= -Unucl*(A-i+1)*Rho2/i;         // Includes total cross-section
-    G4double N4     = 1.;
-    G4double Prod1  = std::exp(-Q2*R12B/i/4)*R12B/i; // Includes the slope
-    G4double medTot = R12B/i;
-    for(G4int l=1; l<=i; l++)
-    {
-      G4double exp1 = l/R22B+(i-l)/R12B;
-      N4           *= -(i-l+1)*N2/l;
-      G4double Nexp = N4/exp1;
-      Prod1        += Nexp*std::exp(-Q2/exp1/4);
-      medTot       += Nexp;
-    }
-    G4double FiHi   = FiH*i;
-    G4double nCos   = N*std::cos(FiHi);
-    ReElA0 += Prod1*N*std::sin(FiHi);
-    ImElA0 += Prod1*nCos;
-    Tot1           += medTot*nCos;
-    if(std::abs(Prod1*N/ImElA0) < eps) break;
-  }
-  ImElA0   *= piMG;                                  // The amplitude in mb
-  ReElA0   *= piMG;                                  // The amplitude in mb
-  Tot1             *= piMG+piMG;
-  G4double N1p      = 1.;
-  G4double R13Ap1   = DDSec1p*R13Ap*R13Ap/2;
-  G4double R22Ap1   = DDSec2p*R13Ap*R23Ap;
-  G4double R23Ap1   = DDSec3p*R23Ap*R23Ap*R22Ap/2;
-  G4double R13Ap2   = R13Ap1*R12Ap/4;
-  G4double R22Ap2   = R22Ap1/R122Apd/2;
-  G4double R23Ap2   = R23Ap1*R22Ap/4;
-  G4double Q28      = Q2/8;
-  G4double Q24      = Q28+Q28;
-  G4double Din1     = R13Ap2*std::exp(-Q28*R12Ap)-R22Ap2*std::exp(-(Q28+Q28)/R122Apd)+
-				                  R23Ap2*std::exp(-Q28*R22Ap);   // i=0 start value
-  G4double DTot1    = R13Ap2-R22Ap2+R23Ap2;          // i=0 start value
-  if (A<96)
-		{
-    for(G4int i=1; i<A-1; i++)
-    {
-      N1p              *= -UnuclScr*(A-i-1)/i*Rho2;
-      G4double N2p      = 1.;
-      G4double Din2     = 0.;
-      G4double DmedTot  = 0.;
-      G4double BinCoeff = 1.;                        // Start for Binomial Coefficient
-      for(G4int l = 0; l<=i; l++) 
-      {
-        if(l) BinCoeff *= (i-l+1)/l;
-        G4double exp1   = l/R22B+(i-l)/R12B;
-        G4double exp1p  = exp1+R12Apd;
-        G4double exp2p  = exp1+R122Apd;
-        G4double exp3p  = exp1+R22Apd;
-        G4double NBinC  = N2p*BinCoeff;
-        Din2           += NBinC*(R13Ap1/exp1p*std::exp(-Q24/exp1p)-
-                                 R22Ap1/exp2p*std::exp(-Q24/exp2p)+
-                                 R23Ap1/exp3p*std::exp(-Q24/exp3p));
-        DmedTot        += NBinC * (R13Ap1/exp1p - R22Ap1/exp2p + R23Ap1/exp3p);
-        N2p            *= -R23dR13;
-      }
-      G4double comFac   = N1p*Mnoj[i]/(i+2)/(i+1)*std::cos(FiH*i);
-				  Din1             += Din2*comFac;
-      DTot1            += DmedTot*comFac;
-      if(std::abs(Din2*N1p/Din1) < eps) break;
-    }
-    G4double cFac       = A*(A-1)*4/Norm/Norm;
-    Din1               *= -cFac;
-    DTot1              *= cFac;
-  }
-  //else Din1=0.;
-
-  G4double Corr0      = Tot00/Tot1;
-  ImElA0             *= Corr0;
-                        
-  //return (ReElA0*ReElA0+(ImElA0+Din1)*(ImElA0+Din1))*CMMom*CMMom*mb2G2/4/pi2; // ds/do
-  return (ReElA0*ReElA0+(ImElA0+Din1)*(ImElA0+Din1))*mb2G2/(twopi+twopi);
-} // End of DiffElasticCS
-
-G4double CHIPSDiffElCS(G4int hPDG, G4double HadrMom, G4int Z, G4int A, G4double aQ2) // MeV
-{//      =================================================================
-  static const G4double eps = 0.000001;                     // Accuracy of calculations
-  static const G4double mb2G2 = 2.568;                      // Transform from mb to GeV^-2
-  static const G4double piMG  = pi/mb2G2;                   // PiTrans from GeV^-2 to mb
-  G4double p          = HadrMom/1000.;                      // Momentum (GeV, inputParam)
-  G4double p2         = p*p;
-		G4double MassH      = G4QPDGCode(hPDG).GetMass()/1000.;   // Hadron Mass in GeV
-  G4double MassH2     = MassH*MassH;
-  G4double HadrEnergy = std::sqrt(p2+MassH2);               // Tot energy in GeV
-		//G4cout<<"G4GCS::DiffElasticCS: PGG_proj="<<hPDG<<", A_nuc= "<<A<<G4endl;
-  //if(HadrEnergy-MassH<1.) G4Exception("Kin energy is too small for the model (T>1 GeV)");
-  CalculateParameters(hPDG, HadrMom);                       // ?                   
-  CalculateIntegralCS(A, HadrEnergy);                       // ?
-  CalculateNuclearParameters(A);                            // ?
-  G4double Q2 = aQ2/1000/1000;                              // in GeV^2
-		//G4doubleMassN     = A*0.938;                              // @@ This is bad!
-		G4double MassN    = A*0.9315;                             // @@ Atomic Unit is bad too
-  if(G4NucleiPropertiesTable::IsInTable(Z,A))
-				MassN=G4NucleiProperties::GetNuclearMass(A,Z)/1000.;    // Geant4 NuclearMass in GeV
-  G4double MassN2   = MassN*MassN;
-  G4double S        = (MassN+MassN)*HadrEnergy+MassN2+MassH2;// Mondelststam s
-  G4double EcmH     = (S-MassN2+MassH2)/2/std::sqrt(S);     // CM energy of a hadron
-  G4double CMMom    = std::sqrt(EcmH*EcmH-MassH2);          // CM momentum
-  //G4cout<<"P="<<CMMom<<",E="<<HadrEnergy<<",N="<<MassN2<<",h="<<MassH2<<",p="<<p<<G4endl;
-  G4double p3       = p2*p;
-  G4double p4       = p2*p2;
-  G4double sp       = std::sqrt(p);
-  G4double p2s      = p2*sp;
-  G4double ap       = std::log(p);
-  G4double dl       = ap-3.;
-  G4double dl2      = dl*dl;
-  G4double shPPTot  = 2.91/(p2s+.0024)+5.+(32.+.3*dl2+23./p)/(1.+1.3/p4); // SigPP in mb
-  G4double shPNTot  = 12./(p2s+.05*p+.0001/std::sqrt(sp))+.35/p
-                      +(38.+.3*dl2+8./p)/(1.+1.2/p3);       // SigPP in mb
-  G4double hNTot    = (Z*shPPTot+(A-Z)*shPNTot)/A;          // SighN in mb
-  G4double Stot     = hNTot*mb2G2;                          // in GeV^-2
-  G4double shPPSl   = 8.*std::pow(p,.055)/(1.+3.64/p4);     // PPslope in GeV^-2
-  G4double shPNSl   = (7.2+4.32/(p4*p4+.012*p3))/(1.+2.5/p4); // PNslope in GeV^-2
-  G4double Bhad     = (Z*shPPSl+(A-Z)*shPNSl)/A;            // B-slope in GeV^-2
-  G4double hNReIm   = -.55+ap*(.12+ap*.0045);               // Re/Im_hN in no unit
-  G4double Asq      = 1+hNReIm*hNReIm;                      // |M|^2/(ImM)^2
-  G4double Rho2     = std::sqrt(Asq);                       // M/ImM
-  G4double r1       = 3.9*std::pow(A-1.,.309);             // Positive diffractionalRadius
-  G4double r2       = 2.*std::pow(A,.36);                  // Negative diffraction radius
-  G4double pN       = Pnucl;                                // Dubna value
-  //G4double pN       = .4;                                   // Screaning factor
-  G4double Ae       = Aeff;                                 // Dubna value
-  //G4double Ae       = .75;                                   // Normalization
-  G4double R12      = r1*r1;
-  G4double R22      = r2*r2;
-  G4double R1C      = R12*r1;
-  G4double R2C      = R22*r2;
-  G4double R12B     = R12+Bhad+Bhad;                        // Slope is used
-  G4double R22B     = R22+Bhad+Bhad;                        // Slope is used
-  G4double Norm     = (R1C-pN*R2C)*Ae;                      // ScreanFac & NormFac are used
-  G4double R13      = R1C/R12B;                             // Slope is used
-  G4double R23      = pN*R2C/R22B;                          // Slope & ScreanFact are used
-  G4double norFac   = Stot/twopi/Norm;                      // totCS (in GeV^-2) is used
-  G4double Unucl    = norFac*R13;
-  G4double SinFi    = hNReIm/Rho2;                          // Real part
-  G4double FiH      = std::asin(SinFi);
-  G4double N        = -1.;
-  G4double N2       = R23/R13;                              // Slope is used
-  G4double ImElA0   = 0.;
-  G4double ReElA0   = 0.;
-  G4double Tot1     = 0.;
-  for(G4int i=1; i<=A; i++)
-  {
-    N              *= -Unucl*(A-i+1)*Rho2/i;                // TotCS is used
-    G4double N4     = 1.;
-    G4double Prod1  = std::exp(-Q2*R12B/i/4)*R12B/i;        // Slope is used
-    G4double medTot = R12B/i;                               // Slope is used
-    for(G4int l=1; l<=i; l++)
-    {
-      G4double exp1 = l/R22B+(i-l)/R12B;                    // Slope is used
-      N4           *= -(i-l+1)*N2/l;                        // Slope is used
-      G4double Nexp = N4/exp1;
-      Prod1        += Nexp*std::exp(-Q2/exp1/4);
-      medTot       += Nexp;
-    }
-    G4double FiHi   = FiH*i;
-    G4double nCos   = N*std::cos(FiHi);
-    ReElA0 += Prod1*N*std::sin(FiHi);
-    ImElA0 += Prod1*nCos;
-    Tot1           += medTot*nCos;
-    if(std::abs(Prod1*N/ImElA0) < eps) break;
-  }
-  ImElA0         *= piMG;                          // The amplitude in mb
-  ReElA0         *= piMG;                          // The amplitude in mb
-  Tot1           *= piMG+piMG;
-  G4double Corr0  = Tot00/Tot1;
-  ImElA0         *= Corr0;
-                        
-  //return (ReElA0*ReElA0+ImElA0*ImElA0)*CMMom*CMMom*mb2G2/4/pi2; // ds/do
-  return (ReElA0*ReElA0+ImElA0*ImElA0)*mb2G2/(twopi+twopi);
-} // End of DiffElasticCS
-
-G4double CHIPS_Tb(G4int  A, G4double b)              // T(b) in fm-2
-{
-  static G4int Am=0;                                 // Associative memory value A
-  static G4double B=0.;                              // Effective edge
-  static G4double C=0.;                              // Normalization factor
-  static G4double D=0.;                              // Slope parameter
-  if(A!=Am)
-		{
-    B=.0008*A*A;                                     // no units
-    D=.42*std::pow(A,-.26);                               // fm^-2
-    C=A*D/pi/std::log(1.+B);                         // fm^-2
-  }
-  G4double E=B*std::exp(-D*b*b);
-  return C*E/(1.+E);                                 // T(b) in fm^-2
-}
-
-G4double Thickness(G4int A, G4double b, G4double R)  // T(b) in fm^-2
-{//      ==========================================  // rAmax=2.5 is a GlobStatConstPar
-  static const G4double bTh  = .545;                 // Surface thicknes
-  static const G4double bTh2 = bTh*bTh;              // SquaredSurface thicknes
-  G4double b2    = b*b;                              // Squared impact parameter
-  G4double dr    = rAmax*R/(NptB-1);                 // Step of integration in z
-  G4double R2    = R*R;                              // Working parameter
-  G4double Norm  = .75/pi/R2/R/(1.+bTh2*pi2/R2);     // Corrected Volume (?)
-  G4double r     = -dr;                              // Pre value for the radius
-  G4double SumZ  = 0.;                               // Prototype of the result
-  //G4double SumN  = 0.;                             // is not used
-  for(G4int k=0; k<NptB; k++)
-  {
-    r    += dr;
-    SumZ += 1./(1.+std::exp((std::sqrt(b2+r*r)-R)/bTh)); // Woods-Saxon density
-    //SumN += r*r/(1.+std::exp((r-rAfm)/bTh));       // is not used
-  }
-  //SumN *= (twopi+twopi)*dr*Norm;                   // is not used
-  return SumZ*(A+A)*dr*Norm;                         // T(b) in fm^-2
-} // End of Thickness
-
-G4double CoherentDifElasticCS(G4int hPDG, G4double HadrMom, G4int A, G4double aQ2) //in MeV
-{//      =========================================================================
-  //static const G4double eps = 0.000001;                   // CalculationAccuracy@@NotUsed
-  //static const G4double mN = .9315;                      // Atomic Unit GeV
-  static const G4double mN = .938;                      // Atomic Unit GeV
-  static const G4double mb2G2 = 2.568;                      // Transform from mb to GeV^-2
-  static const G4double incrf = 10;            // Increase factor of radius for intergation
-  static const G4double m2G10 = incrf*mb2G2;                // Big conversion factor
-  static const G4double s2G10 = std::sqrt(m2G10);           // sqrt Big conversion factor
-  G4double ReIntegrand[NptB],ImIntegrand[NptB],Thick[NptB]; // Calculated arrays
-  G4QBesIKJY QI0(BessI0);                                   // I0 Bessel function
-  G4QBesIKJY QJ0(BessJ0);                                   // J0 Bessel function
-  G4double hMom       = HadrMom/1000.;                      // Momentum (GeV, inputParam)
-		G4double MassH      = G4QPDGCode(hPDG).GetMass()/1000.;   // Hadron Mass in GeV
-  G4double MassH2     = MassH*MassH;
-  G4double HadrEnergy = std::sqrt(hMom*hMom+MassH2);        // Tot energy in GeV
-  if(A==2 || A==3) G4Exception("G4GCS: This model does not work for nuclei with A=2, A=3");
-  if(A>252) G4Exception("G4GCS: This nucleus is too heavy for the model !!!");
-  //if(HadrEnergy-MassH<1.) G4Exception("Kin energy is too small for the model (T>1 GeV)");
-  G4double Re         = std::pow(A, 0.33333333);
-  G4double Re2        = Re*Re;
-  CalculateParameters(hPDG, HadrMom);                   
-  G4double Q2 = aQ2/1000/1000;                              //  GeV
-  // Individual corrections for nuclei which had data
-  if    (A==208) r0   = 1.125;
-  else if(A==90) r0   = 1.12;
-  else if(A==64) r0   = 1.1;
-  else if(A==58) r0   = 1.09;
-  else if(A==48) r0   = 1.07;
-  else if(A==40) r0   = 1.15;
-  else if(A==28) r0   = 0.93;
-  else if(A==16) r0   = 0.92;
-  else if(A==12) r0   = 0.80;
-		else           r0   = 1.16*(1.-1.16/Re2);  // For other nuclei which have not been tested
-		G4double MassN      = A*0.9315;                             // @@ Atomic Unit is bad too
-  G4double MassN2     = MassN*MassN;
-  G4double S          = (MassN+MassN)*HadrEnergy+MassN2+MassH2; // Mondelstam S
-  G4double EcmH       = (S-MassN2+MassH2)/2/std::sqrt(S);   // Hadron CM Energy
-  G4double CMMom      = std::sqrt(EcmH*EcmH-MassH2);        // CM momentum
-  G4double rAfm       = r0*Re;                              // Nuclear radius
-  G4double rAGeV      = rAfm*s2G10;                         // Big integration radius
-  G4double stepB      = rAmax*rAGeV/(NptB-1);               // dr step of integration
-  G4double hTotG2     = HadrTot*mb2G2;
-  G4double ReSum      = 0.;
-  G4double ImSum      = 0.;
-  G4double ValB       = -stepB;
-  for(G4int i=0; i<NptB; i++)
-  {
-    ValB             += stepB;                              // An incident parameter
-    G4double ValB2    = ValB*ValB;                          // A working value
-    G4double IPH      = ValB/HadrSlope;                     // A working value
-    G4double dHS      = HadrSlope+HadrSlope;                // A working value
-    G4double Integ    = 0.;
-    G4double ValS     = 0.;
-    for(G4int j=1; j<NptB; j++)
-    {
-      ValS           += stepB;                              // Impact parameter GeV^-1
-      if(!i) Thick[j] = Thickness(A,ValS/s2G10,rAfm)/m2G10; // Calculate only once
-      G4double FunS   = IPH*ValS;
-      if(FunS > 320.) break;
-      Integ          += ValS*std::exp(-(ValS*ValS+ValB2)/dHS)*QI0(FunS)*Thick[j];
-    } 
-    G4double InExp    = -hTotG2*Integ*stepB/dHS;
-    G4double expB     = std::exp(InExp);
-    G4double HRIE     = HadrReIm*InExp;
-    ReIntegrand[i]    = (1.-expB*std::cos(HRIE));           // Real part of the amplitude
-    ImIntegrand[i]    = expB*std::sin(HRIE);                // Imaginary part of the amplit
-  } 
-  InCoh     = 0.;                                           // incohirent (quasi-elastic)
-  ValB       = -stepB;
-  for(G4int k=0; k<NptB; k++)                               // Third integration (?)
-  {
-    ValB              += stepB;
-    InCoh             += Thick[k]*ValB*std::exp(-hTotG2*Thick[k]);
-    G4double J0qb      = QJ0(std::sqrt(Q2)*ValB)*ValB;      // Bessel0(Q*b)
-    ReSum             += J0qb*ReIntegrand[k];
-    ImSum             += J0qb*ImIntegrand[k];
-  }
-  //G4cout<<"GHAD:st="<<stepB<<",hT="<<hTotG2<<",HRI="<<HadrReIm<<",HS="<<HadrSlope<<",Q2="
-  //      <<Q2<<",m="<<mb2G2<<G4endl;
-  InCoh *= stepB*hTotG2*hTotG2*(1.+HadrReIm*HadrReIm)*std::exp(-HadrSlope*Q2)/8/mb2G2;
-  //G4cout<<"GHAD:RS="<<ReSum<<",IS="<<ImSum<<",CM="<<CMMom<<",st="<<stepB<<G4endl;
-  //return (ReSum*ReSum+ImSum*ImSum)*m2G10*CMMom*CMMom*stepB*stepB/twopi; // ds/do
-  return (ReSum*ReSum+ImSum*ImSum)*m2G10*stepB*stepB/12; // ds/dt
-}  
-
-G4double CHIPSDifElasticCS(G4int hPDG, G4double hMom, G4int A, G4int Z, G4double aQ2)
-{//      ============================================================================
-  static const G4int Npb      = 500;                        // A#of intergation points
-  //static const G4double mN = .9315;                         // Atomic Unit GeV
-  static const G4double mN = .938;                          // Atomic Unit GeV
-  static const G4double hc2   = .3893793;                   // Transform from GeV^-2 to mb
-  static const G4double mb2G2 = 1./hc2;                     // Transform from mb to GeV^-2
-  static const G4double f22mb = 10;                         // Transform from fermi^2 to mb
-  static const G4double f22G2 = f22mb*mb2G2;                // Transform from fm2 to GeV^-2
-  static const G4double f2Gm1 = std::sqrt(f22G2);           // Transform from fm to GeV^-1
-  G4double Re         = std::pow(A,.33333333);              // A-dep coefficient
-  G4double Lim        = 100*Re;                             // Integration accuracy limit
-  G4double Tb[Npb];                                         // Calculated T(b) array
-  G4QBesIKJY QI0(BessI0);                                   // I0 Bessel function
-  G4QBesIKJY QJ0(BessJ0);                                   // J0 Bessel function
-  G4double p          = hMom/1000.;                         // Momentum (GeV, inputParam)
-  G4double p2         = p*p;
-		G4double MassH      = G4QPDGCode(hPDG).GetMass()/1000.;   // Hadron Mass in GeV
-  G4double MassH2     = MassH*MassH;                        // Squared mass of the hadron
-  G4double hEnergy    = std::sqrt(p2+MassH2);               // Tot energy in GeV
-  G4double Q2         = aQ2/1000000.;                       // -t in GeV
-		G4double MassN    = A*0.9315;                             // @@ Atomic Unit is bad too
-  if(G4NucleiPropertiesTable::IsInTable(Z,A))
-				MassN=G4NucleiProperties::GetNuclearMass(A,Z)/1000.;    // Geant4 NuclearMass in GeV
-  G4double MassN2     = MassN*MassN;                        // Squared mass of the target
-  G4double S          = (MassN+MassN)*hEnergy+MassN2+MassH2;// Mondelstam s
-  G4double EcmH       = (S-MassN2+MassH2)/2/std::sqrt(S);   // Hadron CM Energy
-  G4double CMMom      = std::sqrt(EcmH*EcmH-MassH2);        // CM momentum (to norm CS)
-  //G4cout<<"2: P="<<CMMom<<",E="<<hEnergy<<",N="<<MassN2<<",h="<<MassH2<<",p="<<p<<G4endl;
-  // The mean value of the total can be used
-  G4double p3         = p2*p;
-  G4double p4         = p2*p2;
-  G4double sp         = std::sqrt(p);
-  G4double p2s        = p2*sp;
-  G4double ap         = std::log(p);
-  G4double dl         = ap-3.;
-  G4double dl2        = dl*dl;
-  G4double shPPTot    = 2.91/(p2s+.0024)+5.+(32.+.3*dl2+23./p)/(1.+1.3/p4); // SigPP in mb
-  G4double shPNTot    = 12./(p2s+.05*p+.0001/std::sqrt(sp))+.35/p
-                        +(38.+.3*dl2+8./p)/(1.+1.2/p3);     // SigPP in mb
-  G4double shNTot     = (Z*shPPTot+(A-Z)*shPNTot)/A;        // SighN in mb
-#ifdef debug
-  G4cout<<"CHIPS:SI,p="<<p<<",n="<<shNTot<<",P="<<shPPTot<<",N="<<shPNTot
-        <<",Z="<<Z<<",A="<<A<<G4endl;
-#endif
-  G4double shPPSl     = 8.*std::pow(p,.055)/(1.+3.64/p4);   // PPslope in GeV^-2
-  G4double shPNSl     = (7.2+4.32/(p4*p4+.012*p3))/(1.+2.5/p4); // PNslope in GeV^-2
-  G4double shNSl      = (Z*shPPSl+(A-Z)*shPNSl)/A;          // B-slope in GeV^-2
-#ifdef debug
-  G4cout<<"CHIPS:SL,n="<<shNSl<<",P="<<shPPSl<<",N="<<shPNSl<<G4endl;
-#endif
-  G4double shNReIm    = -.55+ap*(.12+ap*.0045); // Re/Im_hN in no unit
-  //G4cout<<"CHPS: s="<<S<<",T="<<shNTot<<",R="<<shNReIm<<",B="<<shNSl<<G4endl;
-  // @@ End of temporary ^^^^^^^
-  G4double dHS        = shNSl+shNSl;                        // Working: doubled B-slope
-  G4double stepB      = (Re+Re+2.7)*f2Gm1/(Npb-1);          // in GeV^-1, step of integral
-  G4double hTotG2     = shNTot*mb2G2;                       // sigma_hN in GeV^-2
-  G4double ReSum      = 0.;                                 // Integration of RePart of Amp
-  G4double ImSum      = 0.;                                 // Integration of ImPart of Amp
-  G4double ValB       = -stepB;
-  for(G4int i=0; i<Npb; i++)                                // First integration over b
-  {
-    ValB             += stepB;                              // An incident parameter
-    G4double ValB2    = ValB*ValB;                          // A working value b^2
-    G4double IPH      = ValB/shNSl;                         // A working value slope
-    G4double Integ    = 0.;                                 // Integral over ImpactParam.
-    G4double ValS     = 0.;                                 // Prototype of ImpactParameter
-    for(G4int j=1; j<Npb; j++)                              // Second integration over b
-    {
-      ValS           += stepB; //  back to fm               // Impact parameter GeV^-1
-      if(!i) Tb[j]    = CHIPS_Tb(A,ValS/f2Gm1)/f22G2;       // GeV^2, calculate only once
-      //if(!i) Tb[j]    = Thickness(A,ValS/f2Gm1,rAfm)/f22G2; // Calculate T(b) only once
-      G4double FunS   = IPH*ValS;                           // b1*b2/slope
-      if(FunS > Lim) break;                                 // To avoid NAN
-      Integ          += ValS*std::exp(-(ValS*ValS+ValB2)/dHS)*QI0(FunS)*Tb[j]; // BessI0
-    } 
-    G4double InExp    = -hTotG2*Integ*stepB/dHS;            // Integrated absorption 
-    G4double expB     = std::exp(InExp);                    // Exponential absorption
-    G4double HRIE     = shNReIm*InExp;                      // Phase shift
-    G4double J0qb      = QJ0(std::sqrt(Q2)*ValB)*ValB;      // Bessel0(Q*b)
-    ReSum             += J0qb*(1.-expB*std::cos(HRIE));
-    ImSum             += J0qb*expB*std::sin(HRIE);
-  } 
-  //G4cout<<"CHPS:RS="<<ReSum<<",IS="<<ImSum<<",CM="<<CMMom<<",st="<<stepB<<G4endl;
-  //return (ReSum*ReSum+ImSum*ImSum)*mb2G2*CMMom*CMMom*stepB*stepB/twopi;
-  //return (ReSum*ReSum+ImSum*ImSum)*f22G2*CMMom*CMMom*stepB*stepB/twopi; // ds/do
-  return (ReSum*ReSum+ImSum*ImSum)*f22G2*stepB*stepB/12; // ds/dt
-}
-
-// Separate quasielastic calculation
-G4double CHIPSDifQuasiElasticCS(G4int hPDG, G4double hMom, G4int A, G4int Z, G4double aQ2)
-{//      =================================================================================
-  static const G4int Npb      = 500;                        // A#of intergation points
-  static const G4double hc2   = .3893793;                   // Transform from GeV^-2 to mb
-  static const G4double mb2G2 = 1./hc2;                     // Transform from mb to GeV^-2
-  //static const G4double mb2G2 = 2.568;                     // Transform from mb to GeV^-2
-  static const G4double f22mb = 10;                         // Transform from fermi^2 to mb
-  static const G4double f22G2 = f22mb*mb2G2;                // Transform from fm2 to GeV^-2
-  static const G4double f2Gm1 = std::sqrt(f22G2);           // Transform from fm to GeV^-1
-  G4double p          = hMom/1000.;                         // Momentum (GeV, inputParam)
-  G4double p2         = p*p;
-  G4double Q2         = aQ2/1000000.;                       // -t in GeV
-  // @@ Temporary only for nucleons
-  G4double p3         = p2*p;
-  G4double p4         = p2*p2;
-  G4double sp         = std::sqrt(p);
-  G4double p2s        = p2*sp;
-  G4double ap         = std::log(p);
-  G4double dl         = ap-3.;
-  G4double dl2        = dl*dl;
-  G4double shPPTot    = 2.91/(p2s+.0024)+5.+(32.+.3*dl2+23./p)/(1.+1.3/p4); // SigPP in mb
-  G4double shPNTot    = 12./(p2s+.05*p+.0001/std::sqrt(sp))+.35/p
-                        +(38.+.3*dl2+8./p)/(1.+1.2/p3);     // SigPP in mb
-  G4double shNTot     = (Z*shPPTot+(A-Z)*shPNTot)/A;        // SighN in mb
-  G4double shPPSl     = 8.*std::pow(p,.055)/(1.+3.64/p4);   // PPslope in GeV^-2
-  G4double shPNSl     = (7.2+4.32/(p4*p4+.012*p3))/(1.+2.5/p4); // PNslope in GeV^-2
-  G4double shNSl      = (Z*shPPSl+(A-Z)*shPNSl)/A;          // B-slope in GeV^-2
-  G4double shNReIm    = -.55+ap*(.12+ap*.0045); // Re/Im_hN in no unit
-  // @@ End of temporary ^^^^^^^
-  G4double Re         = std::pow(A,.33333333);              // A-dep coefficient
-  G4double stepB      = (Re+Re+2.7)*f2Gm1/(Npb-1);          // in GeV^-1, step of integral
-  G4double InQE       = 0.;                                 // Quasielastic integral
-  G4double ValB       = -stepB;                             // Impact parameter
-  G4double hTotG2     = shNTot*mb2G2;                       // sigma_hN in GeV^-2
-  for(G4int k=0; k<Npb; k++)
-  {
-    ValB        += stepB;
-    //G4double Tb  = Thickness(A,ValB/f2Gm1,rAfm)/f22G2;      // Calculate T(b) only once
-    G4double Tb  = CHIPS_Tb(A,ValB/f2Gm1)/f22G2;            // GeV^2, calculate only once
-    InQE        += Tb*ValB*std::exp(-hTotG2*Tb);
-  }
-  //G4cout<<"CHPS:st="<<stepB<<",hT="<<hTotG2<<",HRI="<<HadrReIm<<",HS="<<HadrSlope<<",Q2="
-  //      <<Q2<<",m="<<mb2G2<<G4endl;
-  return InQE*stepB*hTotG2*hTotG2*(1.+shNReIm*shNReIm)*std::exp(-shNSl*Q2)/8/mb2G2;
-}
-#endif
-
-int main()
-{
-#ifdef bestest
-  // *** Test of CHIPS implementation of Bessel functions (accuracy 1.E-8 and better) ***
-  const G4int nj=21;
-  const G4int ny=16;
-  const G4int ni=20;
-  const G4int nk=20;
-  const G4double jX[nj]=
-          				{-5.,-4.,-3.,-2.,-1.,0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.};
-  const G4double yX[ny]={.1,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.};
-  const G4double iX[ni]=
-                    {0.,.2,.4,.6,.8,1.,1.2,1.4,1.6,1.8,2.,2.5,3.,3.5,4.,4.5,5.,6.,8.,10.};
-  const G4double kX[nk]=
-                    {.1,.2,.4,.6,.8,1.,1.2,1.4,1.6,1.8,2.,2.5,3.,3.5,4.,4.5,5.,6.,8.,10.};
-  const G4double vBJ0[nj]=
-				              {-.1775968,-.3971498,-.2600520,0.2238908,0.7651976,1.0000000,0.7651977,
-                   0.2238908,-.2600520,-.3971498,-.1775968,0.1506453,0.3000793,0.1716508,
-                   -.0903336,-.2459358,-.1711903,0.0476893,0.2069261,0.1710735,-.0142245};
-  const G4double vBJ1[nj]=
-              				{0.3275791,0.0660433,-.3390590,-.5767248,-.4400506,0.0000000,0.4400506,
-                   0.5767248,0.3390590,-.0660433,-.3275791,-.2766839,-.0046828,0.2346364,
-                   0.2453118,0.0434728,-.1767853,-.2234471,-.0703181,0.1333752,0.2051040};
-  const G4double vBY0[ny]=
-        {-1.534239,0.0882570,.51037567,.37685001,-.0169407,-.3085176,-.2881947,-.0259497,
-         0.2235215,0.2499367,0.0556712,-.1688473,-.2252373,-.0782079,0.1271926,0.2054743};
-  const G4double vBY1[ny]=
-    				{-6.458951,-.7812128,-.1070324,0.3246744,0.3979257,0.1478631,-.1750103,-.3026672,
-         -.1580605,0.1043146,0.2490154,0.1637055,-.0570992,-.2100814,-.1666448,0.0210736};
-  const G4double vBI0[ni]={1.0000000,1.0100250,1.0404018,1.0920453,1.1665149,
-                           1.2660658,1.3937256,1.5533951,1.7499807,1.9895593,
-                           2.2795852,3.2898391,4.8807925,7.3782035,11.301922,
-                           17.481172,27.239871,67.234406,427.56411,2815.7167};
-  const G4double vBI1[ni]={.00000000,.10050083,.20402675,.31370403,.43286480,
-                           .56515912,.71467794,.88609197,1.0848107,1.3171674,
-                           1.5906369,2.5167163,3.9533700,6.2058350,9.7594652,
-                           15.389221,24.335643,61.341937,399.87313,2670.9883};
-  const G4double vBK0[nk]={2.4270690,1.7527038,1.1145291,.77752208,.56534710,
-                           .42102445,.31850821,.24365506,.18795475,.14593140,
-                           .11389387,.062347553,.0347395,.019598897,.011159676,
-                           .0063998572,.0036910983,.0012439943,.00014647071,.000017780062};
-  const G4double vBK1[nk]={9.8538451,4.7759725,2.1843544,1.3028349,.86178163,
-                           .60190724,.43459241,.32083589,.24063392,.18262309,
-																											.13986588,.073890816,.040156431,.022239393,.012483499,
-                           .0070780949,.0040446134,.0013439197,.00015536921,.000018648773};
-  //Bessel J0('J',0); // CLHEP J/Y is possible insead of 'J'
-  //Bessel J1('J',1);
-  G4QBesIKJY QI0(BessI0); // CHIPS I/K/J/Y 0/1 Bessel functions
-  G4QBesIKJY QI1(BessI1);
-  G4QBesIKJY QJ0(BessJ0);
-  G4QBesIKJY QJ1(BessJ1);
-  G4QBesIKJY QK0(BessK0);
-  G4QBesIKJY QK1(BessK1);
-  G4QBesIKJY QY0(BessY0);
-  G4QBesIKJY QY1(BessY1);
-  G4cout<<"G4GCS: ***J0*** Test: ================================================"<<G4endl;
-  for(G4int j0=0; j0<nj; j0++)
-		{
-    G4double F=QJ0(jX[j0]);
-    G4double d=F-vBJ0[j0];
-    G4double r=std::abs(d/F);
-    G4cout<<"G4GCS: x="<<jX[j0]<<", J0="<<F<<" - "<<vBJ0[j0]<<" = "<<d<<", r="<<r<<G4endl;
-  }
-  G4cout<<"G4GCS: ***J1*** Test: ================================================"<<G4endl;
-  for(G4int j1=0; j1<nj; j1++)
-		{
-    G4double F=QJ1(jX[j1]);
-    G4double d=F-vBJ1[j1];
-    G4double r=std::abs(d/F);
-    G4cout<<"G4GCS: x="<<jX[j1]<<", J1="<<F<<" - "<<vBJ1[j1]<<" = "<<d<<", r="<<r<<G4endl;
-  }
-  G4cout<<"G4GCS: ***Y0*** Test: ================================================"<<G4endl;
-  for(G4int y0=0; y0<ny; y0++)
-		{
-    G4double F=QY0(yX[y0]);
-    G4double d=F-vBY0[y0];
-    G4double r=std::abs(d/F);
-    G4cout<<"G4GCS: x="<<yX[y0]<<", Y0="<<F<<" - "<<vBY0[y0]<<" = "<<d<<", r="<<r<<G4endl;
-  }
-  G4cout<<"G4GCS: ***Y1*** Test: ================================================"<<G4endl;
-  for(G4int y1=0; y1<ny; y1++)
-		{
-    G4double F=QY1(yX[y1]);
-    G4double d=F-vBY1[y1];
-    G4double r=std::abs(d/F);
-    G4cout<<"G4GCS: x="<<yX[y1]<<", Y1="<<F<<" - "<<vBY1[y1]<<" = "<<d<<", r="<<r<<G4endl;
-  }
-  G4cout<<"G4GCS: ***I0*** Test: ================================================"<<G4endl;
-  for(G4int i0=0; i0<ni; i0++)
-		{
-    G4double F=QI0(iX[i0]);
-    G4double d=F-vBI0[i0];
-    G4double r=std::abs(d/F);
-    G4cout<<"G4GCS: x="<<iX[i0]<<", I0="<<F<<" - "<<vBI0[i0]<<" = "<<d<<", r="<<r<<G4endl;
-  }
-  G4cout<<"G4GCS: ***I1*** Test: ================================================"<<G4endl;
-  for(G4int i1=0; i1<ni; i1++)
-		{
-    G4double F=QI1(iX[i1]);
-    G4double d=F-vBI1[i1];
-    G4double r=std::abs(d/F);
-    G4cout<<"G4GCS: x="<<iX[i1]<<", I1="<<F<<" - "<<vBI1[i1]<<" = "<<d<<", r="<<r<<G4endl;
-  }
-  G4cout<<"G4GCS: ***K0*** Test: ================================================"<<G4endl;
-  for(G4int k0=0; k0<nk; k0++)
-		{
-    G4double F=QK0(kX[k0]);
-    G4double d=F-vBK0[k0];
-    G4double r=std::abs(d/F);
-    G4cout<<"G4GCS: x="<<kX[k0]<<", I1="<<F<<" - "<<vBK0[k0]<<" = "<<d<<", r="<<r<<G4endl;
-  }
-  G4cout<<"G4GCS: ***K1*** Test: ================================================"<<G4endl;
-  for(G4int k1=0; k1<nk; k1++)
-		{
-    G4double F=QK1(kX[k1]);
-    G4double d=F-vBK1[k1];
-    G4double r=std::abs(d/F);
-    G4cout<<"G4GCS: x="<<kX[k1]<<", I1="<<F<<" - "<<vBK1[k1]<<" = "<<d<<", r="<<r<<G4endl;
-  }
-  G4cout<<"End .................................................................."<<G4endl;
-#endif
-
-  // Test of integrated cross sections
-  //const G4int na=12;
-  const G4int na=1;
-  //
-  const G4int np=7;
-  const G4int nm=1;
-  ////                He Be C O  Al Ti Ni Cu  Sn Ta  Pb   U
-  //const G4int A[na]={4,9,12,16,27,48,58,64,120,181,207,238}; // A's of target nuclei
-  //                 He Al Pb
-  const G4int A[na]={119}; // A's of target nuclei
-  //                     p    n  pi+  pi-  K+  K-  antip
-  const G4int pdg[np]={2212,2112,211,-211,321,-321,-2212}; // projectiles
-  const G4double mom[nm]={120.}; // momentum in MeV/c
-#ifdef integrc
-  for(G4int ip=0; ip<np; ip++)
-		{
-    G4int PDG=pdg[ip];
-    for(G4int im=0; im<nm; im++)
-		  {
-      CalculateParameters(PDG, mom[im]);
-      G4cout<<G4endl<<"G4GCS:PDG="<<PDG<<",P="<<mom[im]<<":A,Tot,Inel,Prod,El,QEl"<<G4endl;
-      for(G4int ia=0; ia<na; ia++)
-		    {
-        CalculateIntegralCrossSections(A[ia]);
-        G4cout<<A[ia]<<" "<<TotalCrSec<<" "<<InelCrSec<<" "<<ProdCrSec
-              <<" "<<ElasticCrSec<<" "<<QuasyElasticCrSec<<G4endl;
-      }
-    }
-  }
-#endif
-
-#ifdef eldiffcs
-  const G4double ms=.000001;
-  const G4int nt=200;
-  G4double t[nt]; // Q2=-t in Mev^2
-  const G4double tMin=200.;
-  const G4double tMax=2000000.;
-  const G4double ltMi=std::log(tMin);
-  const G4double ltMa=std::log(tMax);
-  const G4double dlt=(ltMa-ltMi)/(nt-1);
-  G4double lt=ltMi-dlt;
-  for(G4int it=0; it<nt; it++)
-		{
-    lt+=dlt;
-    t[it]=std::exp(lt);
-  }
-  ////                He Be C O  Al Ti Ni Cu  Sn Ta  Pb   U
-  //const G4int Z[na]={2,4, 6, 8,13,22,28,29, 50, 73, 82, 92}; // Z's of target nuclei
-  //                He Al Pb
-  const G4int Z[na]={50}; // Z's of target nuclei
-  // Test of differential ellastic cross sections
-		Initialize();
-  //for(G4int ip=0; ip<np; ip++)
-  for(G4int ip=0; ip<1; ip++)
-		{
-    G4int PDG=pdg[ip];
-    for(G4int im=0; im<nm; im++)
-		  {
-      CalculateParameters(PDG, mom[im]);
-      G4cout<<G4endl<<"G4GCS:PDG="<<PDG<<",P="<<mom[im]<<G4endl;
-      for(G4int ia=0; ia<na; ia++)
-		    {
-        G4cout<<"G4GCS:-------------------A="<<A[ia]<<G4endl;
-        for(G4int it=0; it<nt; it++)
-		      {
-          G4double Sig1 = CHIPSDiffElCS(PDG, mom[im], Z[ia], A[ia], t[it]);
-          //G4double Sig1 = DiffElasticCS(PDG, mom[im], A[ia], t[it]); //Doesn't work
-          G4double Sig2 = CoherentDifElasticCS(PDG, mom[im], A[ia], t[it]);
-          G4double Sig3 = CHIPSDifElasticCS(PDG, mom[im], A[ia], Z[ia], t[it]);
-          G4double CQEl = CHIPSDifQuasiElasticCS(PDG, mom[im], A[ia], Z[ia], t[it]);
-								  G4cout<<std::setw(12)<<ms*t[it]<<std::setw(12)<<Sig1<<std::setw(12)<<Sig2
-                <<std::setw(12)<<InCoh<<std::setw(12)<<Sig3<<std::setw(12)<<CQEl<<G4endl;
-        }
-      }
-    }
-  }
-#endif
-  return 0;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4MultyFragmentationTest.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4MultyFragmentationTest.cc	(revision 1197)
+++ 	(revision )
@@ -1,354 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//#define debug
-//#define pdebug
-
-//#include "G4UIterminal.hh"
-#include "G4ios.hh"
-#include "G4QEnvironment.hh"
-
-int main()
-{
-  //G4double theEnergyLossPerFermi = 1.*GeV;
-  G4int nop = 152;                               // clusters (A<6)
-  G4double fractionOfSingleQuasiFreeNucleons = 0.5; // It is A-dependent (C=.85, U=.40)
-  G4double fractionOfPairedQuasiFreeNucleons = 0.05;
-  G4double clusteringCoefficient = 5.;
-  G4double temperature = 180.;
-  G4double halfTheStrangenessOfSee = 0.3; // = s/d = s/u
-  G4double etaToEtaPrime = 0.3;
-  G4double fusionToExchange = 100.;
-  //G4double theInnerCoreDensityCut = 50.;
-#ifdef debug
-	 G4cout<<"G4MulFragTst: nop="<<nop<<",fN="<<fractionOfSingleQuasiFreeNucleons
-        <<",fD="<<fractionOfPairedQuasiFreeNucleons<<",wC="<<clusteringCoefficient
-        <<",vn="<<fusionToExchange<<",T="<<temperature
-        <<",ss="<<halfTheStrangenessOfSee<<",se="<<etaToEtaPrime<<G4endl;
-#endif
-  //-------- Initialize CHIPS
-  G4QCHIPSWorld* theW=G4QCHIPSWorld::Get();
-  theW->GetParticles(nop);           // Create CHIPS World of nop particles
-  G4QNucleus::SetParameters(fractionOfSingleQuasiFreeNucleons,
-                            fractionOfPairedQuasiFreeNucleons,
-			                         clusteringCoefficient, 
-					                       fusionToExchange);
-  G4Quasmon::SetParameters(temperature, halfTheStrangenessOfSee, etaToEtaPrime);
-
-  G4int tPDG = 90006005;    // PDG of the Target Nucleus
-  G4int nEvents= 100000;
-  //#ifdef debug
-	 G4cout<<"G4MulFragTst: targetPDG="<<tPDG<<", nEv="<<nEvents<<G4endl;
-  //#endif
-  G4QHadronVector projHV;
-
-  G4int PDG1=211;
-  G4LorentzVector LV1(-485.221,-216.252,267.887,611.103);
-  //#ifdef debug
-	 G4cout<<"G4MulFragTst: #1 projPDG="<<PDG1<<", 4M="<<LV1<<G4endl;
-  //#endif
-
-  G4int PDG2=-211;
-  G4LorentzVector LV2(-201.944,475.785,952.224,1092.41);
-  //#ifdef debug
-	 G4cout<<"G4MulFragTst: #2 projPDG="<<PDG2<<", 4M="<<LV2<<G4endl;
-  //#endif
-
-  G4int PDG3=111;
-  G4LorentzVector LV3(213.293,183.683,996.566,1044.32);
-  //#ifdef debug
-	 G4cout<<"G4MulFragTst: #3 projPDG="<<PDG3<<", 4M="<<LV3<<G4endl;
-  //#endif
-
-  //std::ifstream inFile("chipstest.in", std::ios::in);
-  //G4double temperature;
-  //G4double ssin2g;
-  //G4double eteps;
-  //G4double momb;
-  //G4double enb;
-  //G4double cP;
-  //G4double fN;
-  //G4double fD;
-  //G4double rM;
-  //G4double sA;
-  //G4int    nop;
-  //G4int    pPDG;
-  //G4int    tPDG;
-  //G4int    nEvt;
-  ////G4int    nofdecays;
-  ////G4int    decmask=0;
-  //inFile>>temperature>>ssin2g>>eteps>>nop>>momb>>enb>>pPDG>>tPDG>>nEvt>>fN>>fD>>cP>>rM>>sA;
-  //G4cout<<"CHIPStest Par's: Temp="<<temperature<<",SSs="<<ssin2g<<",P/S="<<eteps<<",nop="
-  //      <<nop<<",p="<<momb<<",e="<<enb<<",projCode="<<pPDG<<",targCode="<<tPDG<<",nEv="
-  //      <<nEvt<<",fN="<<fN<<",fD="<<fD<<",cP="<<cP<<",rM="<<rM<<",sA="<<sA<<G4endl;
-  //-------- Initialize CHIPS
-  //G4QCHIPSWorld* theW=G4QCHIPSWorld::Get();
-  //theW->GetParticles(nop);           // Create CHIPS World of nop particles
-  //G4Exception("***CHIPStest: TMP");
-  //G4QNucleus::SetParameters(fN,fD,cP,rM);
-  //G4Quasmon::SetParameters(temperature,ssin2g,eteps);
-  //G4QEnvironment::SetParameters(sA);                 // SolAngle (pbar-A secondary capture)
-  //-------- write results onto a file --------
-  //std::ofstream outFile( "chipstest.out", std::ios::out);
-  //outFile.setf( std::ios::scientific, std::ios::floatfield );
-
-  //--------- Example how to write in the outFile -----------
-  //outFile << " " << endl;
-
-  // *********** Now momb is a momentum of the incident particle *************
-  //G4double mp=G4QPDGCode(pPDG).GetMass();             // @@ just for the check
-  //G4QContent pQC=G4QPDGCode(pPDG).GetQuarkContent();
-  //G4int    cp=pQC.GetCharge();
-  //G4int    bnp=pQC.GetBaryonNumber();
-  //G4double mp1=G4QPDGCode(PDG1).GetMass();             // @@ just for the check
-  G4QContent pQC1=G4QPDGCode(PDG1).GetQuarkContent();
-  G4int    cp1=pQC1.GetCharge();
-  G4int    bnp1=pQC1.GetBaryonNumber();
-  //G4double mp2=G4QPDGCode(PDG2).GetMass();             // @@ just for the check
-  G4QContent pQC2=G4QPDGCode(PDG2).GetQuarkContent();
-  G4int    cp2=pQC2.GetCharge();
-  G4int    bnp2=pQC2.GetBaryonNumber();
-  //G4double mp3=G4QPDGCode(PDG3).GetMass();             // @@ just for the check
-  G4QContent pQC3=G4QPDGCode(PDG3).GetQuarkContent();
-  G4int    cp3=pQC3.GetCharge();
-  G4int    bnp3=pQC3.GetBaryonNumber();
-  //momb=momb;
-  //G4double ep=sqrt(mp*mp+momb*momb);                  // @@ just for the check
-  //if(enb>0.) ep=enb;
-  G4double mt=G4QPDGCode(tPDG).GetMass();             // @@ just for the check
-  G4QContent tQC=G4QPDGCode(tPDG).GetQuarkContent();
-  G4int    ct=tQC.GetCharge();
-  G4int    bnt=tQC.GetBaryonNumber();
-  G4int    totC=cp1+cp2+cp3+ct;
-  G4int    totBN=bnp1+bnp2+bnp3+bnt;
-  G4LorentzVector preSumLV(0.,0.,0.,mt);
-  preSumLV+=LV1+LV2+LV3;
-  G4double fEvt=nEvents;
-  G4double sumE=0.;
-  G4double sumK=0.;
-  G4double sumG=0.;
-  G4double sumT=0.;
-  G4double sumN=0.;
-  G4double sum0=0.;
-  G4double sumP=0.;
-  G4double sum1N=0.;
-  G4double sumNN=0.;
-  G4double sumPP=0.;
-  G4double sumAL=0.;
-  G4double time=clock()/CLOCKS_PER_SEC;
-  // Main LOOP over events ======================================
-  for (G4int ir=0; ir<nEvents; ir++)
-  {
-    // Randomization loop: cycle random generator, using 2 lower digits in nEvents
-	   G4int    iRandCount = nEvents%100;
-	   G4double vRandCount = 0.;
-	   while (iRandCount>0)
-	   {
-	     vRandCount = G4UniformRand();
- 	    iRandCount--;
-	   }
-    if(!(ir%1000) && ir) G4cout<<"G4MultFragTst: "<<ir<<" events are simulated"<<G4endl;
-    //G4cout<<"G4MultFragTst: "<<ir<<" events are simulated"<<G4endl;
-    G4LorentzVector totSum = preSumLV;
-    G4QHadron* H1 = new G4QHadron(PDG1,LV1);
-    G4QHadron* H2 = new G4QHadron(PDG2,LV2);
-    G4QHadron* H3 = new G4QHadron(PDG3,LV3);
-    G4int           totCharge = totC;
-    G4int           totBaryN = totBN;
-    G4QHadronVector projHV;
-    projHV.push_back(H1);                                 // DESTROYED over 3 line
-    projHV.push_back(H2);                                 // DESTROYED over 2 line
-    projHV.push_back(H3);                                 // DESTROYED over 1 line
-    G4QEnvironment* pan= new G4QEnvironment(projHV,tPDG); // DELETED over 8 lines
-    std::for_each(projHV.begin(), projHV.end(), DeleteQHadron());
-    projHV.clear();
-#ifdef debug
-    G4cout<<"CHIPStest:===>>> Now call Fragment (HadronizeQuasmon) function" << G4endl;
-#endif
-    G4QHadronVector* output; // Prototype of the output
-    try
-    {
-      output = pan->Fragment();// DESTROYED in the end of the LOOP work space
-    }
-    catch (G4QException& error)
-    {
-#ifdef pdebug
-      G4cout<<"***CHIPStest: Exception is catched"<<G4endl;
-#endif
-      G4cerr<<"***CHIPStest Abort: "<<error.GetMessage()<<G4endl;
-      abort();
-    }
-#ifdef debug
-    G4cout<<"CHIPStest:--->>>Now come out of Fragment (HadronizeQuasmon) function"<<G4endl;
-#endif
-    delete pan; // Destruct theHadronVector (& theCandidateVector) of the Quasmon
-#ifdef debug
-    G4cout << "CHIPStest: >>> Here the histograms are filled" << G4endl;
-#endif
-    G4int tNH = output->size();
-    G4int npt=0;
-    G4int nGamma=0;
-    G4double EGamma=0;
-    G4int nP0=0;
-    G4int nPP=0;
-    G4int nPN=0;
-    G4int nKaons=0;
-    G4int nEta=0;
-    G4int nAlphas=0;
-    G4int nPhotons=0;
-    G4int nProtons=0;
-    G4int nNeutrons=0;
-    G4int nSpNeut=0;
-    G4int nSpAlph=0;
-    G4int nOmega=0;
-    G4int nDec=0;
-    G4int dirN=0;
-#ifdef pdebug
-    G4cout<<"----------DONE^^^^^^^************^^^^^^^^^^^:ir="<<ir<<": #ofH="<<tNH<<G4endl;
-    if(!(ir%100)) G4cerr<<"#"<<ir<<G4endl;
-#endif
-    G4bool alarm=false;
-    G4bool rad=false;
-    G4bool hyp=false;
-    G4bool badPDG=false;
-    for (G4int ind=0; ind<tNH; ind++)
-    {
-      G4QHadron* curH=output->operator[](ind);
-      G4double      m = curH->GetMass();            // Mass of the particle
-      G4LorentzVector lorV = curH->Get4Momentum();  // 4-momentum of the particle
-      if(std::fabs(m-lorV.m())>.005)
-	     {
-		      G4cerr<<"***CHIPStest: m="<<lorV.m()<<" # "<<m<<", d="<<lorV.m()-m<<G4endl;
-        alarm=true;
-	     }
-      if(!(lorV.e()>=0||lorV.e()<0)   || !(lorV.px()>=0||lorV.px()<0) ||
-         !(lorV.py()>=0||lorV.py()<0) || !(lorV.pz()>=0||lorV.pz()<0))
-	     {
-		      G4cerr<<"***CHIPStest: NAN in LorentzVector="<<lorV<<G4endl;
-        alarm=true;
-	     }
-      G4int         d=curH->GetNFragments(); // In how many particles this particle decayed
-      G4ThreeVector p = lorV.vect();         // 3-momentum of the particle
-      G4double      e = lorV.e();            // Energy of the particle
-      G4int         c=curH->GetPDGCode();    // PDG Code of the particle
-      //if(!d&&(c==90000002||c==90002000||c==92000000||c==221||c==331))
-      if(!d&&(c==90000002||c==90002000||c==92000000))
-      {
-        //G4cout<<"***CHIPStest:***Dibaryon or Eta*** ind="<<ind<<", PDG="<<c<<G4endl;
-        G4cout<<"***CHIPStest:***Dibaryon *** ind="<<ind<<", PDG="<<c<<G4endl;
-        alarm=true;
-      }
-      if(!d&&(c==90000003||c==90003000||c==93000000))
-      {
-        G4cout<<"***CHIPStest:***Tribaryon *** ind="<<ind<<", PDG="<<c<<G4endl;
-        alarm=true;
-      }
-      if(!d) npt++;
-      if(d) nDec+=d;
-      if(c==223) nOmega++;
-      if(c==22) nPhotons++;
-      if(c==311||c==321||c==-311||c==-321) nKaons++; // kaons
-      if(c==221) nEta++;                             // etas
-      if(c==90002002) nAlphas++;                     // Alphas
-      if(c==2212 || c==90001000) nProtons++;         // Protons
-      if(c==90000001 || c==90001000) dirN++;         // Ditrect nucleons
-      if(c==2112 || c==90000001) nNeutrons++;        // Neutrons
-      if((c==2112 || c==90000001) && std::fabs(e-1005.)<3.) nSpNeut++;// Dibar-Neutrons
-      if(!d && c==90002002 && e-m<7.) nSpAlph++;     // Special Alphas
-      if(c==111) nP0++;                              // Neutral  pions
-      if(c==-211) nPN++;                             // Negative pions
-      if(c==211) nPP++;                              // Positive pions
-      if(c==22) nGamma++;                            // Gammas
-      if(c==22) EGamma+=e;                           // Energy of gammas
-      if(!d) totCharge-=curH->GetCharge();
-      if(!d) totBaryN-=curH->GetBaryonNumber();
-      if(!d) totSum    -= lorV;
-      if(c>80000000 && (c<90000000 || c%1000>500 || c%1000000>500000) ||
-         !(c>=0 || c<0))
-      {
-        G4cout<<"***OUTPUT ERROR*** CHIPStest: bad PDG is found. It is "<<c<<G4endl;
-        badPDG=true;
-	     }
-      rad=rad||c==90002000||c==90003000||c==90004000||c==90000002||c==90000003||c==90000004
-             ||c==90002003||c==90003002||c==90004002||c==90002005||c==90005002||c==90004004
-             ||c==90006002;
-      hyp = hyp || c>90999999;
-#ifdef pdebug
-      G4cout<<"#"<<ind<<"(d="<<d<<"), PDG="<<c<<",4M="<<lorV<<m<<",T="<<lorV.e()-m<<G4endl;
-#endif
-    }
-#ifdef pdebug
-    G4cout<<"CHECK: 4M="<<totSum<<", Charge="<<totCharge<<", BaryN="<<totBaryN<<G4endl;
-#endif
-    G4double ss=std::fabs(totSum.t())+std::fabs(totSum.x())+std::fabs(totSum.y())+std::fabs(totSum.z());    
-	   if (totCharge ||totBaryN || !(ss<.01) || alarm || nGamma&&!EGamma || badPDG)
-	   //if (totCharge || ss>.01 || alarm || nSpNeut)
-	   //if (totCharge || ss>.01 || alarm || nSpAlph)
-    {
-      G4cerr<<"***CHIPStest:#"<<ir<<":n="<<tNH<<",4M="<<totSum<<",Charge="<<totCharge
-            <<",BaryN="<<totBaryN<<G4endl;
-      if(nGamma&&!EGamma)G4cerr<<"***CHIPStest: Egamma=0"<<G4endl;
-      totSum    = preSumLV;
-      for (int indx=0; indx<tNH; indx++)
-      {
-        G4QHadron* curH=output->operator[](indx);
-        G4double m = curH->GetMass();
-        G4LorentzVector lorV = curH->Get4Momentum();
-        G4int d=curH->GetNFragments();
-        G4int c=curH->GetPDGCode();
-        if(!d) totSum    -= lorV;
-        G4cerr<<"#"<<indx<<"("<<d<<"), PDG="<<c<<", m/LV="<<m<<lorV<<", T="<<lorV.e()-m
-              <<", d4M="<<totSum<<G4endl;
-      }
-      G4Exception("***CHIPStest: ALARM or charge/energy/momentum is not conserved");
-    }
-    sum0+=nP0;
-    sumP+=nPP;
-    sumN+=nPN;
-    G4int nPions=nP0+nPP+nPN;
-    sumG+=nGamma;
-    sumT+=EGamma;
-    if(nAlphas)sumAL++;
-    if(nProtons)sumPP++;
-    if(nNeutrons)sumNN++;
-    if(nNeutrons&&!nProtons&&!nAlphas) sum1N++;
-    if(nKaons)sumK++;
-    if(nEta)sumE++;
-    if (nPhotons) nPions=11;
-    if (nKaons==2&&npt==2) nPions=1;
-    else if (nKaons) nPions=10;
-    //histPi.fill(nPions);
-    //histNeut.fill(nNeutrons);
-    std::for_each(output->begin(), output->end(), DeleteQHadron());
-    output->clear();
-    delete output;
-  }
-  time=(clock()/CLOCKS_PER_SEC-time)/fEvt;
-  G4cerr<<"CHIPStest::t="<<time<<",Yields:pi-="<<sumN/fEvt<<",pi+="<<sumP/fEvt<<",pi0="
-        <<sum0/fEvt<<",K="<<sumK/fEvt<<",eta="<<sumE/fEvt<<",gamma="<<sumG/fEvt<<"(<E>="
-        <<sumT/sumG<<"),n="<<sumNN/fEvt<<",p="<<sumPP/fEvt<<",alpha="<<sumAL/fEvt
-        <<",onlyN="<<sum1N/fEvt<<G4endl;
-  return EXIT_SUCCESS;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuElXQ2Integration.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuElXQ2Integration.cc	(revision 1197)
+++ 	(revision )
@@ -1,290 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: NuE DIS (x,Q2) approximation is integrated over x
-// .....................................................
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 30-Sept-05
-// 
-//=====================================================================
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-#include <CLHEP/GenericFunctions/LogGamma.hh>
-
-void strucf(int A, double x, double Q2, double& f2, double& xf3, double& fL)
-{
-  //const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  //const double MN2=MN*MN;       // M_N^2 in GeV^2
-  //const double mpi=.13957018;   // charged pi meson mass in GeV
-  //const double Wt=MN+mpi;       // Delta threshold
-  //const double W2t=Wt*Wt;       // Squared Delta threshold
-  const Genfun::LogGamma lGam;
-  static int mA=0;
-  static double mQ2=0., mN, mD, mDel, mU2, mU3, mV;
-  //static double mUU;
-  double N=3., D=0., Del=0., U2=0., U3=0., V=0.;
-  //double UU=0.;
-  if(A==mA && Q2==mQ2)         // Associative memory for acceleration
-		{
-    N  =mN;
-    D  =mD;
-    Del=mDel;
-    U2 =mU2;
-    U3 =mU3;
-    //UU =mUU;
-    V  =mV;
-  }
-  else
-  {
-		  //double r=0.;
-    double min=.077;             // Delta(0)
-				double max=.47;              // Hard Pomeron
-    //double H=1.22;
-    if(Q2<=0.) G4cout<<"strucf: Q2="<<Q2<<" <= 0"<< G4endl;
-    double Q=std::sqrt(Q2);
-    //if(A==1)                   // Proton
-		  //{
-    //  r=std::sqrt(Q2/1.66);
-    //  max=.5;
-    //}
-    //else if(A<13)              // Light nuclei
-		  //{
-    //  double f=Q2/4.62;
-    //  r=f*f;
-    //  max=.3;
-    //  if(A>2) H=1.;
-    //}
-    //else if(A>0)               // Heavy nuclei
-		  //{
-    //  double f=Q2/3.4;
-    //  double ff=f*f;
-    //  r=ff*ff;
-    //  max=.5;
-    //  H=1.;
-    //}
-    //else G4cout<<"strucf: A="<<A<<" <= 0"<< G4endl;
-    //
-    N=3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space
-    Del=min+(max-min)/(1.+5./Q);
-    D=0.68*std::pow(1.+.145/Q2,-1.-Del); // 0.68=1-0.34, m2=.145 GeV2
-    V=3*(1.-D)*(N-1.);
-    double c3=.75;                       // 3*0.25
-    double uu=std::exp(lGam(N-Del)-lGam(N-1.)-lGam(1.-Del))/N;
-    U2=(c3+N-3.)*uu;
-    U3=c3*uu;
-    mA  = A;
-    mQ2 = Q2;
-    mN  = N;
-    mD  = D;
-    mDel=Del;
-    mU2 =U2;
-    mU3 =U3;
-    //mUU =UU; // @@
-    mV  =V;
-  }  
-  // From here the Q2 coefficients are used
-  double x1=std::pow(1.-x,N-2.);
-  double pp=D*std::pow(x,-Del)*x1;
-  double dir=V*x*x1;
-  double per=U2*pp;
-		f2 = per + dir;
-  //double W2=MN2-MN2*x+Q2/x-Q2;
-  //if(W2<W2t)
-		//{
-  //  per=UU*pp;
-  //  xf3= per+dir;
-  //}
-  //else
-  xf3= U3*pp+dir;
-  fL = per/5.;                             // 20%
-  return;
-}
-
-void getFun(int A, double lx, double Q2, double* f)
-{
-  double f2=0., xf3=0., fL=0.;
-  if (lx>0.5) G4cerr<<"***getFun: ln(x)="<<lx<<">.5"<<G4endl;
-  double x=std::exp(lx);
-  double x2=x*x;
-  strucf(A, x, Q2, f2, xf3, fL);
-  f[0]=f2;             // direct part
-  f[1]=(-f2+xf3)/x;    // *y (neutrino) part
-  f[2]=(-f2-xf3)/x;    // *y (anti-neutrino) part
-  f[3]=(f2-fL-xf3)/x2; // *y2 (neutrino) part
-  f[4]=(f2-fL+xf3)/x2; // *y2 (anti-neutrino) part
-}
-
-int main()
-{
-  const double reps=.001;        // relative accuracy of the total Q2 integral calculation
-  const double xeps=.0001;      // relative accuracy of the total X integral calculation
-  //           =========
-  const double GF=1.16637e-5;   // Fermi constant in GeV^-2
-  const double GF2=GF*GF;       // Squared Fermi constant in GeV^-4
-  const double MW=80.425;       // Mass of W-boson in GeV
-  const double MW2=MW*MW;       // Squared mass of W-boson in GeV^2
-  const double MW4=MW2*MW2;     // Quadro mass of W-boson in GeV^4
-  const double hc2=38937932300.;// (hc)^2 in GeV^2*10^-38cm2 to convert GeV^-2 to 10^-38cm2
-  const double pif=3.14159265*4;// 4pi
-  const double sik=GF2*hc2/pif; // precalculated coefficient
-  //const double mpi=.1349766;    // pi0 meson mass in GeV
-  //const double mpi=.13957018;   // charged pi meson mass in GeV
-  //const double mpi2=mpi*mpi;    // m_pi^2 in GeV^2
-  const double me=.00051099892; // electron mass in GeV
-  const double me2=me*me;       // m_e^2 in GeV^2
-  const double hme2=me2/2;      // .5*m_e^2 in GeV^2
-  //const double mmu=.105658369;  // mu meson mass in GeV
-  //const double mmu2=mmu*mmu;    // m_mu^2 in GeV^2
-  //const double hmmu2=mmu2/2;    // .5*m_mu^2 in GeV^2
-  //const double mtau=1.777;      // tau meson mass in GeV
-  //const double mtau2=mtau*mtau; // m_tau^2 in GeV^2
-  //const double hmtau2=mtau2/2;  // .5*m_e^2 in GeV^2
-  const double mp=.93827203;    // proton mass in GeV
-  const double mn=.93956536;    // neutron mass in GeV
-  //const double md=1.87561282;   // deuteron mass in GeV
-  //const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  const double MN=(mn+mp)/2;    // Nucleon mass (mean free) in GeV
-  const double MD=1.232;        // proton mass in GeV
-  //const double mp2=mp*mp;       // m_p^2 in GeV^2
-  const double MN2=MN*MN;       // M_N^2 in GeV^2
-  const double dMN=MN+MN;       // 2*M_N in GeV
-  const double dMN2=MN2+MN2;    // 2*M_N^2 in GeV^2
-  const double fMN2=dMN2+dMN2;  // 4*M_N^2 in GeV^2
-  const double EminE=me+me2/dMN;// Threshold for muon production
-  //const double EminMu=mmu+mmu2/dMN;  // Threshold for muon production
-  //const double EminTau=mmu+mmu2/dMN; // Threshold for muon production
-  //
-  //const double mc=.3;           // parameter of W>M+mc cut for Quasi-Elastic/Delta
-  const double mc=std::sqrt((MN*MN+MD*MD)/2)-MN; // Squared mean between N and \Delta
-  //const double mc=mpi;          // parameter of W>M+mc cut for Quasi-Elastic/Delta
-  const double mcV=(dMN+mc)*mc; // constant of W>M+mc cut for Quasi-Elastic
-  //std::ofstream fileNuMuX("NuMuXQ2.out", std::ios::out);
-  //fileNuMuX.setf( std::ios::scientific, std::ios::floatfield );
-  // _____ Begin of Test Area
-  //Genfun::LogGamma logGamma;
-  //double n=4.9;
-		//double g=exp(logGamma(n));
-  //G4cout<<"Gamma("<<n<<") = "<<g<<G4endl;
-  // ^^^^^ End of Test Area
-  //
-  double f[5];                    // A working array
-  int    A=12;                    // Neucleus for which calculations should be done
-  double lEnuMin=0;               // LogLog of Minimum energy of neutrino
-  double lEnuMax=std::log(1.+std::log(300./EminE)); // LogLog of MaximumEnergy of neutrino
-  int    nE=49;                   // Number of points
-  double dlE=(lEnuMax-lEnuMin)/nE;
-  lEnuMin+=dlE/10;
-  lEnuMax+=dlE/5;
-  G4cout<<"Emin="<<EminE<<",lEi="<<lEnuMin<<",lEa="<<lEnuMax<<",dlE="<<dlE<<G4endl;
-  for(double lEnu=lEnuMin; lEnu<lEnuMax; lEnu+=dlE)
-		{
-    double Enu=std::exp(std::exp(lEnu)-1.)*EminE; // Energy of neutrino/anti-neutrino
-    double dEnu=Enu+Enu;          // doubled energy of nu/anu
-    double Enu2=Enu*Enu;          // squared energy of nu/anu
-    double Ee=Enu-me;           // Free Energy of neutrino/anti-neutrino
-    double Ee2=Ee*Ee;          // squared energy of nu/anu
-    double ME=Enu*MN;             // M*E
-    double dME=ME+ME;             // 2*M*E
-    double DIStsig=1.;            // Total curent DIS cross-section to be integrated
-    double DISmsig=1.e20;         // Total remembered DIS cross-section
-    double dEMN=(dEnu+MN)*ME;
-    double MEm=ME-hme2;
-    double sqE=Enu*std::sqrt(MEm*MEm-me2*MN2);
-    double E2M=MN*Enu2-(Enu+MN)*hme2;
-    double ymax=(E2M+sqE)/dEMN;
-    double ymin=(E2M-sqE)/dEMN;
-    double rmin=1.-ymin;
-    double rhm2E=hme2/Enu2;
-    double Q2min=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E));
-    double Q2max=dME*ymax;
-    int    nQ2=8;
-    //G4cout<<"*** E="<<Enu<<", Q2i="<<Q2min<<" < Q2a="<<Q2max<<", yi="<<ymin<<" < ya="
-    //      <<ymax<<G4endl;
-    while(std::fabs(DIStsig-DISmsig)/DIStsig>reps)
-    {
-      DISmsig=DIStsig;
-      DIStsig=0.;
-      nQ2*=2;
-      double dQ2=(Q2max-Q2min)/nQ2;
-      for(double Q2=Q2min+dQ2/2; Q2<Q2max; Q2+=dQ2)
-				  {
-        double DISxint=1.;        // Curent DIS x-integral
-        double DISmint=1.e20;     // Remembered DIS x-integral
-        double Q2M=Q2+MW2;
-        double dik=MW4/Q2M/Q2M;
-        double qmc=Q2+mcV;
-        double lXQES=std::log((std::sqrt(qmc*qmc+Q2*fMN2)-qmc)/dMN2);//QuasielasticBoundary
-        //double lXQES=log(Q2/(Q2+mcV)); // Quasielastic boundary (W=MN+m_c)
-        //double xN=Q2/dME;
-        double xN=Q2/MN/(Ee+std::sqrt(Ee2+Q2));
-        //double lXmin=log(xN/ymax);
-        double lXmin=std::log(xN);
-        // ****** QE ********
-        if(lXQES>lXmin) lXmin=lXQES;   // A cut which leaves only QES >>>>>>>>>>>>>>>>
-        // *** End of QE^^^^^
-        double lXmax=0.;               // QES is in DIS
-        //double lXmax=lXQES;          // Cut off quasielastic
-        int    nX=8;
-        while(std::fabs(DISxint-DISmint)/DISxint>xeps)
-        {
-          DISmint=DISxint;
-          DISxint=0.;
-          nX*=2;
-          double dlX=(lXmax-lXmin)/nX;
-          for(double lX=lXmin+dlX/2; lX<lXmax; lX+=dlX)
-				      {
-            getFun(A, lX, Q2, f);
-            // ***** Neutrino/Antineutrino switch ******>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-            DISxint+=f[0]+f[0]+xN*(f[1]+f[1]+xN*f[3]); // neutrino
-            //DISxint+=f[0]+f[0]+xN*(f[2]+f[2]+xN*f[4]); // anti-neutrino
-            //G4cout<<f[0]<<","<<f[1]<<","<<f[2]<<","<<f[3]<<","<<f[4]<<G4endl;
-          }
-          DISxint*=dlX;
-          //G4cout<<"--- E="<<Enu<<" --- Q2="<<Q2<<" --- nX="<<nX<<", iX="<<DISxint
-          //      <<", mX="<<DISmint<<", rX="<<(DISxint-DISmint)/DISxint<<G4endl;
-        }
-        //G4cout<<"(E="<<Enu<<"), Q2="<<Q2<<", I="<<DISxint/dik/dik<<G4endl;
-        DIStsig+=DISxint*dik;
-      }
-      DIStsig*=dQ2;
-      //G4cout<<"=== E="<<Enu<<" ===> nQ="<<nQ2<<", iQ="<<DIStsig<<", mQ="<<DISmsig
-						//      <<", rQ="<<(DIStsig-DISmsig)/DIStsig<<G4endl;
-    }
-    //===== tot/qe choice ====
-    DIStsig*=sik/Enu;
-    //G4cout<<"***total-neutrino*** E="<<Enu<<" ,sig/E="<<DIStsig<<G4endl;
-    //G4cout<<"***total-antineutrino*** E="<<Enu<<" ,sig/E="<<DIStsig<<G4endl;
-    G4cout<<"***quasiel-nu*** E="<<Enu<<" ,sig/E="<<DIStsig*Enu<<G4endl;
-    //G4cout<<"***quasiel-antinu*** E="<<Enu<<" ,sig/E="<<DIStsig*Enu<<G4endl;
-    //...................
-    //DIStsig*=sik;
-    //G4cout<<"***qelas*** E="<<Enu<<",sig="<<DIStsig<<G4endl;
-    //===== End of the choice
-		} // End of the Enery LOOP
-  return EXIT_SUCCESS;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuElXQ2Integration_N.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuElXQ2Integration_N.cc	(revision 1197)
+++ 	(revision )
@@ -1,294 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: NuEl DIS (x,Q2) approximation is integrated over x & Q2
-// .....................................................[ for a <nucleon> ]
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Oct-07
-// 
-//=====================================================================
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-#include <CLHEP/GenericFunctions/LogGamma.hh>
-
-void strucf(int A, double x, double Q2, double& f2, double& xf3, double& fL)
-{
-  //const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  //const double MN2=MN*MN;       // M_N^2 in GeV^2
-  //const double mpi=.13957018;   // charged pi meson mass in GeV
-  //const double Wt=MN+mpi;       // Delta threshold
-  //const double W2t=Wt*Wt;       // Squared Delta threshold
-  const Genfun::LogGamma lGam;
-  static int mA=0;
-  static double mQ2=0., mN, mD, mDel, mU2, mU3, mV;
-  //static double mUU;
-  double N=3., D=0., Del=0., U2=0., U3=0., V=0.;
-  //double UU=0.;
-  if(A==mA && Q2==mQ2)         // Associative memory for acceleration
-		{
-    N  =mN;
-    D  =mD;
-    Del=mDel;
-    U2 =mU2;
-    U3 =mU3;
-    //UU =mUU;
-    V  =mV;
-  }
-  else
-  {
-    double Q=std::sqrt(Q2);
-    N=3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space
-    Del=.077+.393/(1.+5./Q);
-    D=.68*std::pow(1.+.145/Q2,-1.-Del);
-    V=3*(N-1.);
-    double c3=.75;
-    double uu=std::exp(lGam(N-Del)-lGam(N-1.)-lGam(1.-Del))/N;
-    U2=(c3+N-3.)*uu;
-    U3=c3*uu;
-    //UU=uu+uu+uu; // @@
-    mA  = A;
-    mQ2 = Q2;
-    mN  = N;
-    mD  = D;
-    mDel=Del;
-    mU2 =U2;
-    mU3 =U3;
-    //mUU =UU; // @@
-    mV  =V;
-  }  
-  // From here the Q2 coefficients are used
-  double x1=std::pow(1.-x,N-2.);
-  double pp=D*std::pow(x,-Del)*x1;
-  double dir=(1-D)*V*x*x1;
-  double per=U2*pp;
-		f2 = per + dir;
-  //double W2=MN2-MN2*x+Q2/x-Q2;
-  //if(W2<W2t)
-		//{
-  //  per=UU*pp;
-  //  xf3= per+dir;
-  //}
-  //else
-  xf3= U3*pp+dir;
-  fL = per/5.;
-  return;
-}
-
-void getFun(int A, double lx, double Q2, double* f)
-{
-  const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  const double MN2=MN*MN;   // Squared Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  double f2=0., xf3=0., fL=0.;
-  if (lx>0.5) G4cerr<<"***getFun: ln(x)="<<lx<<">.5"<<G4endl;
-  double x=std::exp(lx);
-  double x2=x*x;
-  double c=0.;
-  if(Q2>.0001) c=x2*MN2/Q2;
-  double c2=1+c+c;     // Q^2/nu^2 correction
-  strucf(A, x, Q2, f2, xf3, fL);
-  f[0]=f2;             // direct part
-  f[1]=(-f2+xf3)/x;    // *y (neutrino) part
-  f[2]=(-f2-xf3)/x;    // *y (anti-neutrino) part
-  f[3]=(f2*c2-fL-xf3)/x2; // *y2 (neutrino) part
-  f[4]=(f2*c2-fL+xf3)/x2; // *y2 (anti-neutrino) part
-}
-
-int main()
-{
-  const double reps=.001;        // relative accuracy of the total Q2 integral calculation
-  const double xeps=.0001;      // relative accuracy of the total X integral calculation
-  //           =========
-  const double GF=1.16637e-5;   // Fermi constant in GeV^-2
-  const double GF2=GF*GF;       // Squared Fermi constant in GeV^-4
-  const double MW=80.425;       // Mass of W-boson in GeV
-  const double MW2=MW*MW;       // Squared mass of W-boson in GeV^2
-  const double MW4=MW2*MW2;     // Quadro mass of W-boson in GeV^4
-  const double hc2=38937932300.;// (hc)^2 in GeV^2*10^-38cm2 to convert GeV^-2 to 10^-38cm2
-  const double pif=3.14159265*4;// 4pi
-  const double sik=GF2*hc2/pif; // precalculated coefficient
-  //const double mpi=.1349766;    // pi0 meson mass in GeV
-  //const double mpi=.13957018;   // charged pi meson mass in GeV
-  //const double mpi2=mpi*mpi;    // m_pi^2 in GeV^2
-  const double me=.00051099892; // electron mass in GeV
-  const double me2=me*me;       // m_e^2 in GeV^2
-  const double hme2=me2/2;      // .5*m_e^2 in GeV^2
-  //const double mmu=.105658369;  // mu meson mass in GeV
-  //const double mmu2=mmu*mmu;    // m_mu^2 in GeV^2
-  //const double hmmu2=mmu2/2;    // .5*m_mu^2 in GeV^2
-  //const double mtau=1.777;      // tau meson mass in GeV
-  //const double mtau2=mtau*mtau; // m_tau^2 in GeV^2
-  //const double hmtau2=mtau2/2;  // .5*m_e^2 in GeV^2
-  //const double mp=.93827203;    // proton mass in GeV
-  //const double mn=.93956536;    // neutron mass in GeV
-  //const double md=1.87561282;   // deuteron mass in GeV
-  const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  //const double MN=(mn+mp)/2;    // Nucleon mass (mean free) in GeV
-  //const double MD=1.232;        // proton mass in GeV
-  //const double mp2=mp*mp;       // m_p^2 in GeV^2
-  const double MN2=MN*MN;       // M_N^2 in GeV^2
-  const double dMN=MN+MN;       // 2*M_N in GeV
-  const double dMN2=MN2+MN2;    // 2*M_N^2 in GeV^2
-  const double fMN2=dMN2+dMN2;  // 4*M_N^2 in GeV^2
-  const double EminE=me+me2/dMN;// Threshold for muon production
-  //const double EminMu=mmu+mmu2/dMN;  // Threshold for muon production
-  //const double EminTau=mmu+mmu2/dMN; // Threshold for muon production
-  //
-  const double mc=.261;           // parameter of W2>(M_N^2+M_D^2)/2 cut for QuasiEl/Delta
-  //const double mc=mpi;          // parameter of W>M+mc cut for Quasi-Elastic/Delta
-  const double mcV=(dMN+mc)*mc; // constant of W>M+mc cut for Quasi-Elastic
-  //std::ofstream fileNuMuX("NuMuXQ2.out", std::ios::out);
-  //fileNuMuX.setf( std::ios::scientific, std::ios::floatfield );
-  // _____ Begin of Test Area
-  //Genfun::LogGamma logGamma;
-  //double n=4.9;
-		//double g=exp(logGamma(n));
-  //G4cout<<"Gamma("<<n<<") = "<<g<<G4endl;
-  // ^^^^^ End of Test Area
-  //
-  double f[5];                    // A working array
-  int    A=12;                    // Neucleus for which calculations should be done
-  double lEnuMin=0;               // LogLog of Minimum energy of neutrino
-  double lEnuMax=std::log(1.+std::log(300./EminE)); // LogLog of MaximumEnergy of neutrino
-  //double lEnuMax=std::log(1.+std::log(300./EminMu));// LogLog of MaximumEnergy of neutrino
-  int    nE=63;
-  double dlE=(lEnuMax-lEnuMin)/nE;
-  lEnuMin+=dlE/10;
-  lEnuMax+=dlE/5;
-  G4cout<<"Emin="<<EminE<<",lEi="<<lEnuMin<<",lEa="<<lEnuMax<<",dlE="<<dlE<<G4endl;
-  //G4cout<<"Emin="<<EminMu<<",lEi="<<lEnuMin<<",lEa="<<lEnuMax<<",dlE="<<dlE<<G4endl;
-  for(double lEnu=lEnuMin; lEnu<lEnuMax; lEnu+=dlE)
-		{
-    double Enu=std::exp(std::exp(lEnu)-1.)*EminE; // Energy of neutrino/anti-neutrino
-    //double Enu=std::exp(std::exp(lEnu)-1.)*EminMu; // Energy of neutrino/anti-neutrino
-    double dEnu=Enu+Enu;          // doubled energy of nu/anu
-    double Enu2=Enu*Enu;          // squared energy of nu/anu
-    double Ee=Enu-me;           // Free Energy of neutrino/anti-neutrino
-    double Ee2=Ee*Ee;          // squared energy of nu/anu
-    //double Emu=Enu-mmu;           // Free Energy of neutrino/anti-neutrino
-    //double Emu2=Emu*Emu;          // squared energy of nu/anu
-    double ME=Enu*MN;             // M*E
-    double dME=ME+ME;             // 2*M*E
-    double DIStsig=1.;            // Total curent DIS cross-section to be integrated
-    double DISmsig=1.e20;         // Total remembered DIS cross-section
-    double dEMN=(dEnu+MN)*ME;
-    double MEm=ME-hme2;
-    //double MEm=ME-hmmu2;
-    double sqE=Enu*std::sqrt(MEm*MEm-me2*MN2);
-    //double sqE=Enu*std::sqrt(MEm*MEm-mmu2*MN2);
-    double E2M=MN*Enu2-(Enu+MN)*hme2;
-    //double E2M=MN*Enu2-(Enu+MN)*hmmu2;
-    double ymax=(E2M+sqE)/dEMN;
-    double ymin=(E2M-sqE)/dEMN;
-    double rmin=1.-ymin;
-    double rhm2E=hme2/Enu2;
-    //double rhm2E=hmmu2/Enu2;
-    double Q2min=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E));
-    double Q2max=dME*ymax;
-    int    nQ2=8;
-    //G4cout<<"*** E="<<Enu<<", Q2i="<<Q2min<<" < Q2a="<<Q2max<<", yi="<<ymin<<" < ya="
-    //      <<ymax<<G4endl;
-    while(std::fabs(DIStsig-DISmsig)/DIStsig>reps)
-    {
-      DISmsig=DIStsig;
-      DIStsig=0.;
-      nQ2*=2;
-      double dQ2=(Q2max-Q2min)/nQ2;
-      for(double Q2=Q2min+dQ2/2; Q2<Q2max; Q2+=dQ2)
-				  {
-        double DISxint=1.;        // Curent DIS x-integral
-        double DISmint=1.e20;     // Remembered DIS x-integral
-        double Q2M=Q2+MW2;
-        double dik=MW4/Q2M/Q2M;
-        double qmc=Q2+mcV;
-        double lXQES=std::log((std::sqrt(qmc*qmc+Q2*fMN2)-qmc)/dMN2); // QuasielastBoundary
-        //double lXQES=log(Q2/(Q2+mcV)); // Quasielastic boundary (W=MN+m_c)
-        //double xN=Q2/dME;
-        double xN=Q2/MN/(Ee+std::sqrt(Ee2+Q2));
-        //double xN=Q2/MN/(Emu+std::sqrt(Emu2+Q2));
-        //double lXmin=log(xN/ymax);
-        double lXmin=std::log(xN);
-        // ****** QE ******** tot/qe
-        //if(lXQES>lXmin) lXmin=lXQES;   // A cut which leaves only QES
-        // *** End of QE^^^^^
-        double lXmax=0.;               // QES is in DIS
-        //double lXmax=lXQES;          // Cut off quasielastic
-        int    nX=8;
-        while(std::fabs(DISxint-DISmint)/DISxint>xeps)
-        {
-          DISmint=DISxint;
-          DISxint=0.;
-          nX*=2;
-          double dlX=(lXmax-lXmin)/nX;
-          for(double lX=lXmin+dlX/2; lX<lXmax; lX+=dlX)
-				      {
-            getFun(A, lX, Q2, f);
-            DISxint+=f[0]+f[0]+xN*(f[1]+f[1]+xN*f[3]); // neutrino
-            //DISxint+=f[0]+f[0]+xN*(f[2]+f[2]+xN*f[4]); // anti-neutrino
-            //G4cout<<f[0]<<","<<f[1]<<","<<f[2]<<","<<f[3]<<","<<f[4]<<G4endl;
-          }
-          DISxint*=dlX;
-          //G4cout<<"--- E="<<Enu<<" --- Q2="<<Q2<<" --- nX="<<nX<<", iX="<<DISxint
-          //      <<", mX="<<DISmint<<", rX="<<(DISxint-DISmint)/DISxint<<G4endl;
-        }
-        //G4cout<<"(E="<<Enu<<"), Q2="<<Q2<<", I="<<DISxint/dik/dik<<G4endl;
-        DIStsig+=DISxint*dik;
-      }
-      DIStsig*=dQ2;
-      //G4cout<<"=== E="<<Enu<<" ===> nQ="<<nQ2<<", iQ="<<DIStsig<<", mQ="<<DISmsig
-						//      <<", rQ="<<(DIStsig-DISmsig)/DIStsig<<G4endl;
-    }
-    //===== tot/qe choice ====
-    DIStsig*=sik/Enu;
-    G4cout<<"***total*** E="<<Enu<<",sig/E= "<<DIStsig<<G4endl;
-    //...................
-    //DIStsig*=sik;
-    //G4cout<<"***qelas*** E="<<Enu<<",sig= "<<DIStsig<<G4endl;
-    //===== End of the choice
-		} // End of the Enery LOOP
-  // int np=0;
-  //for(int m=0; m<2; m++)
-  //{
-  //  //fileNuMuX<<"  static const G4double SH"<<n<<"[nH]={"<<G4endl<<"    ";
-  //  //G4cout<<"**** A_high="<<m<<G4endl;
-  //  np=0;
-  //  int nC=14;
-	 //  for(G4int en=0; en<nC; en++)
-	 //  {
-  //    //G4double sig=1.;
-  //    np++;
-  //    //if(np==7)           // Write by 7 number in brackets
-  //    //{
-  //    //  if(en==nC-1) fileNuMuX<<sig<<"};"<<G4endl;
-  //    //  else         fileNuMuX<<sig<<","<<G4endl<<"    ";
-	 //    //}
-  //    //else           fileNuMuX<<sig<<",";
-  //    //if(np==7) np=0;
-  //  } // End of the point LOOP
-  //} // End of the isotop LOOP
-  return EXIT_SUCCESS;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuMuNQEQ2Integration.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuMuNQEQ2Integration.cc	(revision 1197)
+++ 	(revision )
@@ -1,183 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: NuMu DIS(Q2) fixed step integration
-// .....................................................
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-2005
-// 
-//=====================================================================
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-//#include <CLHEP/GenericFunctions/LogGamma.hh>
-
-// All calculations have been done for C12 nucleus
-
-double nuE(double E) { return .9673/(1.+.323/E/E)/std::pow(E,.78);} // (E is in GeV)
-
-double nuX(double E, double r, double p) // (E is in GeV, r=Q2/Q2max, p=1.+nuE(E))
-{
-  double y=p-r;
-  double p3=(.3088+.0012352*E)/(1.+1.836/E/E);
-  return std::pow(y,6)*(r+p3)/(p3*r+1.);
-}
-
-double anuE(double E) { return .875/(1.+.2977/E/E)/std::pow(E,.78);} // (E is in GeV)
-
-double anuX(double E, double r, double p) // (E is in GeV, r=Q2/Q2max, p=1+anuE(E))
-{
-		double	E2=E*E;
-  double y=p-r;
-  double p3=(13.88+.9373*(1.+.000033*E2)*std::sqrt(E))/(1.+(10.12+1.532/E2)/E);
-  return std::pow(y,6)*(r+p3)/(p3*r+1.);
-}
-
-int main()
-{
-  const double eps=.00000001;    // relative accuracy of the integral calculation
-  const double mmu=.105658369;   // mu meson mass in GeV
-  const double mmu2=mmu*mmu;     // m_mu^2 in GeV^2
-  const double MN=.931494043;    // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  const double Emin=mmu+mmu2/(MN+MN); // the threshold energy in GeV
-  const double Emax=390.;        // the maximum energy in GeV
-  const double lEmi=std::log(Emin);   // logarithm of the threshold energy in GeV
-  const double lEma=std::log(Emax);   // logarithm of the maximum energy in GeV
-  const int    power=7;          // power for the magic variable (E-dependent)
-  const double pconv=1./power;   // conversion power for the magic variable
-  //           =========
-  const int niX=20;              // number of points for X table
-  const int liX=niX-1;           // the last index for X table
-  const int niE=20;              // number of points for E table
-  double Xl[niE][niX];           // reversed table
-  double inl[niE][niX];          // direct table
-  // ----------------- nu/anu switch ------------------------------
-  //bool nu=true;
-  bool nu=false;
-  // --------------------------------------------------------------
-  double dE=(lEma-lEmi)/niE;
-  double hE=dE/2;
-  int ne=0;
-  for(double len=lEmi+hE; len<lEma; len+=dE)
-  {
-    //G4cout<<"log(E)="<<len<<G4endl;
-    double en=std::exp(len);
-    double shift=0.;
-    if(nu) shift=1.+nuE(en);
-    else   shift=1.+anuE(en);
-    double Xma=std::pow(shift,power);
-    double Xmi=std::pow((shift-1.),power);
-    int    nX=8;
-    double DISmsig=0.;
-    double DIStsig=1.;
-    while(std::fabs(DIStsig-DISmsig)/DIStsig>eps)
-    {
-      DISmsig=DIStsig;
-      DIStsig=0.;
-      nX*=2;
-      double dX=(Xma-Xmi)/nX;
-      double hX=dX/2;
-      for(double X=Xmi+hX; X<Xma; X+=dX)
-				  {
-        double r=shift-std::pow(X,pconv); // the same for nu and anu
-        if(nu) DIStsig+=nuX(en,r,shift);  // neutrino
-        else   DIStsig+=anuX(en,r,shift); // anti-neutrino
-      }
-      DIStsig*=dX;
-      //G4cout<<"E="<<en<<",nX="<<nX<<",i="<<DIStsig<<",m="<<DISmsig<<",r="
-      //      <<(DIStsig-DISmsig)/DIStsig<<G4endl;
-		  }
-    //G4cout<<"E="<<en<<", Total: nX="<<nX<<", Int="<<DIStsig<<G4endl;
-    // ***************** Calculate the reversed table *****************
-    double dInt=DIStsig/niX;             // Step for the integral
-    DIStsig=0.;
-    DISmsig=0.;
-    nX*=2;
-    double dX=(Xma-Xmi)/nX;      // New step for the multiplied number of nodes
-    dInt/=dX;                    // To avoid multiplication (nX is fixed)
-    double sum=dInt;
-    int nn=0;
-    double hX=dX/2;
-    G4cout<<"E="<<en<<", Xl_min="<<Xmi<<G4endl;
-    for(double X=Xmi+hX; X<Xma; X+=dX)
-		  {
-      double r=shift-std::pow(X,pconv); // the same for nu and anu
-      if(nu) DIStsig+=nuX(en,r,shift);  // neutrino
-      else   DIStsig+=anuX(en,r,shift); // anti-neutrino
-      if(DIStsig>sum+eps)
-		  		{
-        inl[ne][nn]=sum*dX;
-        Xl[ne][nn]=X-(DIStsig-sum)*dX/(DIStsig-DISmsig);
-        G4cout<<"E="<<en<<", sum="<<inl[ne][nn]<<", Xl["<<nn<<"]="<<Xl[ne][nn]<<G4endl;
-        nn++;
-        sum+=dInt;
-      }
-      DISmsig=DIStsig;
-    }
-    inl[ne][nn]=sum*dX;
-    Xl[ne][nn]=Xma;
-    G4cout<<"E="<<en<<", sum="<<inl[ne][nn]<<", Xl["<<nn<<"]="<<Xma<<G4endl;
-    // ************* The following is just a test (better than .5%) ************
-    //for(int i=1; i<niX; i++)
-    //{
-    //  DIStsig=0.;
-    //  double Xm=Xl[ne][i];
-    //  double dX=(Xm-Xmi)/nX;
-    //  double hX=dX/2;
-    //  for(double X=Xmi+hX; X<Xm; X+=dX)
-		  //		{
-    //    double r=shift-pow(X,pconv); // the same for nu and anu
-    //    if(nu) DIStsig+=nuX(en,r,shift);  // neutrino
-    //    else   DIStsig+=anuX(en,r,shift); // anti-neutrino
-    //  }
-    //  DIStsig*=dX;
-    //  G4cout<<"i="<<i<<", v="<<DIStsig<<", d="<<fabs(DIStsig-inl[ne][i])/DIStsig<<G4endl;
-    //}
-    // ***************** Calculate the direct table *****************
-    dX=(Xma-Xmi)/niX;
-    double nor=inl[ne][liX]/niX;
-    //G4cout<<"E="<<en<<", i=0, Xm="<<Xmi<<", I=0."<<G4endl;
-    for(int i=1; i<=niX; i++)
-    {
-      DIStsig=0.;
-      double Xm=Xmi+dX*i;
-      double rX=(Xm-Xmi)/nX;
-      double hX=rX/2;
-      for(double X=Xmi+hX; X<Xm; X+=rX)
-		  		{
-        double r=shift-std::pow(X,pconv); // the same for nu and anu
-        if(nu) DIStsig+=nuX(en,r,shift);  // neutrino
-        else   DIStsig+=anuX(en,r,shift); // anti-neutrino
-      }
-      DIStsig*=rX/nor;
-      //////////G4cout<<"E="<<en<<", i="<<i<<", Xm="<<Xm<<", I="<<DIStsig<<G4endl;
-    }
-    ne++;
-  } // End of the big loop over log(E)
-  G4cout<<"End"<<G4endl;
-  return 0;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuMuQEQ2Integration.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuMuQEQ2Integration.cc	(revision 1197)
+++ 	(revision )
@@ -1,305 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: NuMu DIS(Q2) fixed step integration
-// .....................................................
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-2005
-// 
-//=====================================================================
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-//#include <CLHEP/GenericFunctions/LogGamma.hh>
-
-// All calculations have been done for C12 nucleus
-
-double nuQ2(double Q2) // (Q2 is in GeV^2)
-{
-  //  x      *     *     *     *     *     *     *     *      *     *
-  // -1-    -2-   -3-   -4-   -5-   -6-   -7-   -8-   -9-   -10-  -11-
-  // 2.068 2.634 4.333 3.000 10.59 .0011 18.74 1.484 134950 .0755 4.5
-  G4double y=Q2/3;
-  G4double z=std::pow((Q2/2.634),4.333);
-		// The first (1.+Q2)**4.5 fuctor is just normalization, which payed back by 1/(1+Q2)^3.5
-  G4double f=std::pow((1.+Q2),4.5)*
-				(1.+z*(1.+18.74*std::exp(-Q2/1.484)-134950*std::exp(-Q2/.0755)))/std::pow((1.+y+.0011*y*y),10.59);
-  //G4cout<<"Q2="<<Q2<<", y="<<y<<", z="<<z<<", f="<<f<<G4endl;
-  return f;
-}
-
-double anuQ2(double Q2)
-{
-  //    x     *     *     *     *     *     *     *     -     *
-  //   -1-   -2-   -3-   -4-   -5-   -6-   -7-   -8-   -9-   -10-
-  // .2000 .0100 .3000 .4000 3.900 .0150 .2000 6.500 0.000 .00000001
-  G4double  y=Q2/.4;
-  G4double  y2=y*y;
-  G4double  z=std::pow((Q2/.01),-.3);
-		// The first (1.+Q2)**6.5 fuctor is just normalization, which payed back by 1/(1+Q2)^5.5
-  G4double f=(1.+z)*std::pow((1+Q2),6.5)*std::pow(Q2,-.2)/std::pow((1.+y+(.015+.00000001*y2)*y2),3.9);
-  //G4cout<<"Q2="<<Q2<<", y="<<y<<", z="<<z<<", f="<<f<<G4endl;
-  return f;
-}
-
-int main()
-{
-  const double eps=.000001;      // relative accuracy of the integral calculation
-  //           =========
-  const double mmu=.105658369;  // mu meson mass in GeV
-  const double mmu2=mmu*mmu;    // m_mu^2 in GeV^2
-  const double hmmu2=mmu2/2;    // .5*m_mu^2 in GeV^2
-  //const double mtau=1.777;      // tau meson mass in GeV
-  //const double mtau2=mtau*mtau; // m_tau^2 in GeV^2
-  //const double hmtau2=mtau2/2;  // .5*m_e^2 in GeV^2
-  //const double mp=.93827203;    // proton mass in GeV
-  //const double mn=.93956536;    // neutron mass in GeV
-  //const double md=1.87561282;   // deuteron mass in GeV
-  const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  //const double MN=(mn+mp)/2;    // Nucleon mass (mean free) in GeV
-  //const double MD=1.232;        // proton mass in GeV
-  //const double mp2=mp*mp;       // m_p^2 in GeV^2
-  const double MN2=MN*MN;       // M_N^2 in GeV^2
-  const double dMN=MN+MN;       // 2*M_N in GeV
-  //const double dMN2=MN2+MN2;    // 2*M_N^2 in GeV^2
-  //const double fMN2=dMN2+dMN2;  // 4*M_N^2 in GeV^2
-  //const double EminE=me+me2/dMN;// Threshold for muon production
-  const double Emin=mmu+mmu2/dMN;  // Threshold for muon production
-  //const double EminTau=mmu+mmu2/dMN; // Threshold for muon production
-  //
-  //const double mc=.3;           // parameter of W>M+mc cut for Quasi-Elastic/Delta
-  //const double mc=mpi;          // parameter of W>M+mc cut for Quasi-Elastic/Delta
-  //const double mcV=(dMN+mc)*mc; // constant of W>M+mc cut for Quasi-Elastic
-  //std::ofstream fileNuMuX("NuMuXQ2.out", std::ios::out);
-  //fileNuMuX.setf( std::ios::scientific, std::ios::floatfield );
-  // _____ Begin of Test Area
-  //Genfun::LogGamma logGamma;
-  //double n=4.9;
-		//double g=exp(logGamma(n));
-  //G4cout<<"Gamma("<<n<<") = "<<g<<G4endl;
-  // ^^^^^ End of Test Area
-  //
-  const int niQ2=100;           // Number of points in the Q2 integration
-  const int diQ2=niQ2+1;        // Dimention for arrays
-  double Xl[diQ2];
-  double inl[diQ2];
-  double Enu=Emin;              // Initial E=minE  
-  double Emo=Emin+Emin;         // First new
-  double Emv=0.;
-  double Q2i=1.;
-  double Q2o=1.;
-  double Q2v=0.;
-		int nit=0;
-  while (std::fabs(Q2v-Q2o)>eps && nit<10)
-  {
-    nit++;
-    double Emm=Emo;               // Candidate for the next point is predefined
-    double dEnu=Enu+Enu;          // doubled energy of nu/anu
-    double Enu2=Enu*Enu;          // squared energy of nu/anu
-    double ME=Enu*MN;             // M*E
-    double dEMN=(dEnu+MN)*ME;
-    double MEm=ME-hmmu2;
-    double sqE=Enu*std::sqrt(MEm*MEm-mmu2*MN2);
-    double E2M=MN*Enu2-(Enu+MN)*hmmu2;
-    //double ymax=(E2M+sqE)/dEMN;
-    double ymin=(E2M-sqE)/dEMN;
-    double rmin=1.-ymin;
-    double rhm2E=hmmu2/Enu2;
-    Q2i=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E)); // minQ2 for Enu
-    //G4cout<<"MinSearch: E="<<Enu<<": Q2="<<Q2i<<G4endl;
-    if(Emv>0.0001) // Not initialization (not first two) Use three points
-				{
-      //double d=Enu*Emo*(Enu-Emo)+Enu*Emv*(Emv-Enu)+Emo*Emv*(Emo-Emv);
-      double a=Q2i*Emo-Enu*Q2o+Q2v*Enu-Emv*Q2i+Q2o*Emv-Emo*Q2v;
-						double b=Enu*Enu*(Q2o-Q2v)+Emo*Emo*(Q2v-Q2i)+Emv*Emv*(Q2i-Q2o);
-      //double a
-				  Emm=-b/(a+a);
-      if(Q2v<Q2i)                 // swap to make Q2v the biggest
-				  {
-        double q2=Q2v;
-        double en=Emv;
-        Q2v=Q2i;
-        Emv=Enu;
-        Q2i=q2;
-        Enu=en;
-      }
-      if(Q2v<Q2o)                 // swap to make Q2v the biggest
-				  {
-        double q2=Q2v;
-        double en=Emv;
-        Q2v=Q2o;
-        Emv=Emo;
-        Q2o=q2;
-        Emo=en;
-      }
-    }
-    else if(Q2o>0.0000000001) Emm=Enu+Emin; // the second step
-    //G4cout<<"***Enu="<<Enu<<", Emm="<<Emm<<", Emin="<<Emin<<G4endl;
-    Emv=Emo;
-    Q2v=Q2o;
-    Emo=Enu;
-    Q2o=Q2i;
-    Enu=Emm;
-    //G4cout<<"___Q2i="<<Q2i<<": Q2o="<<Q2o<<", Q2v="<<Q2v<<G4endl;
-  }
-  double Q2min=Q2i-eps;
-  double Q2max=600.;            // covers the calculated region
-  // ----------------- nu/anu switch ------------------------------
-  //bool nu=true;
-  bool nu=false;
-  // -----------------------------**************************-------
-  // *************** Convert to the magic variable ****************
-  double Xmin=0.;
-  double Xmax=0.;
-		if(nu)
-  {
-    Xmin=std::pow(1+Q2max,-3.5);
-    Xmax=std::pow(1+Q2min,-3.5);
-		}  
-  else
-  {
-    Xmin=std::pow(1+Q2max,-5.5);
-    Xmax=std::pow(1+Q2min,-5.5);
-		}
-  G4cout<<"Ei="<<Enu<<":Q2i="<<Q2min<<",Q2a="<<Q2max<<",Xmi="<<Xmin<<",Xma="<<Xmax<<G4endl;
-  int    nQ2=8;                 // nitial #Of points for the overall integration
-  double DISmsig=0.;
-  double DIStsig=1.;
-		double Q2=0.;                 // Prototype for the integration 
-  while(std::fabs(DIStsig-DISmsig)/DIStsig>eps)
-  {
-    DISmsig=DIStsig;
-    DIStsig=0.;
-    nQ2*=2;
-    double dX=(Xmax-Xmin)/nQ2;
-    double hX=dX/2;
-    for(double X=Xmin+hX; X<Xmax; X+=dX)
-				{
-      if(nu) // neutrino
-						{
-        Q2=std::pow(X,-.2857142); // -1./3.5
-        DIStsig+=nuQ2(Q2);
-      }
-      else  // anti-neutrino
-						{
-        Q2=std::pow(X,-.1818182); // -1./5.5
-        DIStsig+=anuQ2(Q2);
-      }
-    }
-    DIStsig*=dX;
-    //G4cout<<"n="<<nQ2<<",i="<<DIStsig<<",m="<<DISmsig<<",r="<<(DIStsig-DISmsig)/DIStsig
-				//		    <<G4endl;
-		}
-  G4cout<<"Total: nQ2="<<nQ2<<", Int="<<DIStsig<<G4endl;
-  // ***************** Calculate the reversed table *****************
-  double dInt=DIStsig/niQ2;             // Step for the integral
-  DIStsig=0.;
-  DISmsig=0.;
-  nQ2*=2;
-  double dX=(Xmax-Xmin)/nQ2;
-  dInt/=dX;                     // To avoid multiplication (nQ2 is fixed)
-  double sum=dInt;
-  int nn=1;
-  Xl[0]=0.;
-  double hX=dX/2;
-  for(double X=Xmin+hX; X<Xmax; X+=dX)
-		{
-    if(nu) // neutrino
-				{
-      Q2=std::pow(X,-.2857142); // -1./3.5
-      DIStsig+=nuQ2(Q2);
-    }
-    else  // anti-neutrino
-				{
-      Q2=std::pow(X,-.1818182); // -1./5.5
-      DIStsig+=anuQ2(Q2);
-    }
-    if(DIStsig>sum+eps)
-				{
-      inl[nn]=sum*dX;
-      Xl[nn]=X-(DIStsig-sum)*dX/(DIStsig-DISmsig);
-      G4cout<<"sum="<<inl[nn]<<", Xl["<<nn<<"]="<<Xl[nn]<<G4endl;
-      nn++;
-      sum+=dInt;
-    }
-    DISmsig=DIStsig;
-  }
-  inl[nn]=sum*dX;
-  Xl[nn]=Xmax;
-  G4cout<<"sum="<<inl[nn]<<", Xl["<<nn<<"]="<<Xmax<<G4endl;
-  // ************* The following is just a test (better than .5%) ************
-  for(int i=1; i<=niQ2; i++)
-  {
-    DIStsig=0.;
-    double Xm=Xl[i];
-    double dX=(Xm-Xmin)/nQ2;
-    double hX=dX/2;
-    for(double X=Xmin+hX; X<Xm; X+=dX)
-				{
-      if(nu) // neutrino
-						{
-        Q2=std::pow(X,-.2857142); // -1./3.5
-        DIStsig+=nuQ2(Q2);
-      }
-      else  // anti-neutrino
-						{
-        Q2=std::pow(X,-.1818182); // -1./5.5
-        DIStsig+=anuQ2(Q2);
-      }
-    }
-    DIStsig*=dX;
-    G4cout<<"i="<<i<<", v="<<DIStsig<<", d="<<std::fabs(DIStsig-inl[i])/DIStsig<<G4endl;
-  }
-  // ***************** Calculate the direct table *****************
-  dX=(Xmax-Xmin)/niQ2;
-  double nor=inl[niQ2]/niQ2;
-  for(int i=1; i<=niQ2; i++)
-  {
-    DIStsig=0.;
-    double Xm=Xmin+dX*i;
-    double rX=(Xm-Xmin)/nQ2;
-    double hX=rX/2;
-    for(double X=Xmin+hX; X<Xm; X+=rX)
-				{
-      if(nu) // neutrino
-						{
-        Q2=std::pow(X,-.2857142); // -1./3.5
-        DIStsig+=nuQ2(Q2);
-      }
-      else  // anti-neutrino
-						{
-        Q2=std::pow(X,-.1818182); // -1./5.5
-        DIStsig+=anuQ2(Q2);
-      }
-    }
-    DIStsig*=rX/nor;
-    G4cout<<"i="<<i<<", Xm="<<Xm<<", I="<<DIStsig<<G4endl;
-  }
-  G4cout<<"End"<<G4endl;
-  DIStsig=0.;
-  return 0;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuMuXIntegration_Q2_QE.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuMuXIntegration_Q2_QE.cc	(revision 1197)
+++ 	(revision )
@@ -1,312 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: NuMu DIS (x,Q2) approximation is integrated over x
-// .....................................................
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 30-Sept-05
-// 
-//=====================================================================
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-#include <CLHEP/GenericFunctions/LogGamma.hh>
-
-void strucf(int A, double x, double Q2, double& f2, double& xf3, double& fL)
-{
-  //const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  //const double MN2=MN*MN;       // M_N^2 in GeV^2
-  //const double mpi=.13957018;   // charged pi meson mass in GeV
-  //const double Wt=MN+mpi;       // Delta threshold
-  //const double W2t=Wt*Wt;       // Squared Delta threshold
-  const Genfun::LogGamma lGam;
-  static int mA=0;
-  static double mQ2=0., mN, mD, mDel, mU2, mU3, mV;
-  //static double mUU;
-  double N=3., D=0., Del=0., U2=0., U3=0., V=0.;
-  //double UU=0.;
-  if(A==mA && Q2==mQ2)         // Associative memory for acceleration
-		{
-    N  =mN;
-    D  =mD;
-    Del=mDel;
-    U2 =mU2;
-    U3 =mU3;
-    //UU =mUU;
-    V  =mV;
-  }
-  else
-  {
-		  double r=0.;
-    double max=1.;
-    double H=1.22;
-    if(A==1)                   // Proton
-		  {
-      r=std::sqrt(Q2/1.66);
-      max=.5;
-    }
-    else if(A<13)              // Light nuclei
-		  {
-      double f=Q2/4.62;
-      r=f*f;
-      max=.3;
-      if(A>2) H=1.;
-    }
-    else if(A>0)               // Heavy nuclei
-		  {
-      double f=Q2/3.4;
-      double ff=f*f;
-      r=ff*ff;
-      max=.5;
-      H=1.;
-    }
-    else G4cout<<"strucf: A="<<A<<" <= 0"<< G4endl;
-    //
-    N=3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space
-    Del=(1.+r)/(12.5+r/max);
-    double S=std::pow(1.+.6/Q2,-1.-Del);
-    D=H*S*(1.-.5*S);
-    V=3*(1.-D)*(N-1.);
-    double cc=Q2/.08;
-    double cc2=cc*cc;
-    //double C=(1.+cc2)/(1.+cc2/.24);              // Weak?
-    double C=(1.+cc2)/(1.+cc2/.24)/(1.+Q2/21.6); // EM
-    double c3=C+C+C;
-    double uu=std::exp(lGam(N-Del)-lGam(N-1.)-lGam(1.-Del))/N;
-    U2=(c3+N-3.)*uu;
-    U3=c3*uu;
-    //UU=uu+uu+uu; // @@
-    mA  = A;
-    mQ2 = Q2;
-    mN  = N;
-    mD  = D;
-    mDel=Del;
-    mU2 =U2;
-    mU3 =U3;
-    //mUU =UU; // @@
-    mV  =V;
-  }  
-  // From here the Q2 coefficients are used
-  double x1=std::pow(1.-x,N-2.);
-  double pp=D*std::pow(x,-Del)*x1;
-  double dir=V*x*x1;
-  double per=U2*pp;
-		f2 = per + dir;
-  //double W2=MN2-MN2*x+Q2/x-Q2;
-  //if(W2<W2t)
-		//{
-  //  per=UU*pp;
-  //  xf3= per+dir;
-  //}
-  //else
-  xf3= U3*pp+dir;
-  fL = per/4.;
-  return;
-}
-
-void getFun(int A, double lx, double Q2, double* f)
-{
-  double f2=0., xf3=0., fL=0.;
-  if (lx>0.5) G4cerr<<"***getFun: ln(x)="<<lx<<">.5"<<G4endl;
-  double x=std::exp(lx);
-  double x2=x*x;
-  strucf(A, x, Q2, f2, xf3, fL);
-  f[0]=f2;             // direct part
-  f[1]=(-f2+xf3)/x;    // *y (neutrino) part
-  f[2]=(-f2-xf3)/x;    // *y (anti-neutrino) part
-  f[3]=(f2-fL-xf3)/x2; // *y2 (neutrino) part
-  f[4]=(f2-fL+xf3)/x2; // *y2 (anti-neutrino) part
-}
-
-int main()
-{
-  const double reps=.001;        // relative accuracy of the total Q2 integral calculation
-  const double xeps=.0001;      // relative accuracy of the total X integral calculation
-  //           =========
-  const double GF=1.16637e-5;   // Fermi constant in GeV^-2
-  const double GF2=GF*GF;       // Squared Fermi constant in GeV^-4
-  const double MW=80.425;       // Mass of W-boson in GeV
-  const double MW2=MW*MW;       // Squared mass of W-boson in GeV^2
-  const double MW4=MW2*MW2;     // Quadro mass of W-boson in GeV^4
-  const double hc2=38937932300.;// (hc)^2 in GeV^2*10^-38cm2 to convert GeV^-2 to 10^-38cm2
-  const double pif=3.14159265*4;// 4pi
-  const double sik=GF2*hc2/pif; // precalculated coefficient
-  //const double mpi=.1349766;    // pi0 meson mass in GeV
-  const double mpi=.13957018;   // charged pi meson mass in GeV
-  //const double mpi2=mpi*mpi;    // m_pi^2 in GeV^2
-  //const double me=.00051099892; // electron mass in GeV
-  //const double me2=me*me;       // m_e^2 in GeV^2
-  //const double hme2=me2/2;      // .5*m_e^2 in GeV^2
-  const double mmu=.105658369;  // mu meson mass in GeV
-  const double mmu2=mmu*mmu;    // m_mu^2 in GeV^2
-  const double hmmu2=mmu2/2;    // .5*m_mu^2 in GeV^2
-  //const double mtau=1.777;      // tau meson mass in GeV
-  //const double mtau2=mtau*mtau; // m_tau^2 in GeV^2
-  //const double hmtau2=mtau2/2;  // .5*m_e^2 in GeV^2
-  //const double mp=.93827203;    // proton mass in GeV
-  //const double mn=.93956536;    // neutron mass in GeV
-  //const double md=1.87561282;   // deuteron mass in GeV
-  const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  //const double MN=(mn+mp)/2;    // Nucleon mass (mean free) in GeV
-  //const double MD=1.232;        // proton mass in GeV
-  //const double mp2=mp*mp;       // m_p^2 in GeV^2
-  const double MN2=MN*MN;       // M_N^2 in GeV^2
-  const double dMN=MN+MN;       // 2*M_N in GeV
-  const double dMN2=MN2+MN2;    // 2*M_N^2 in GeV^2
-  const double fMN2=dMN2+dMN2;  // 4*M_N^2 in GeV^2
-  //const double EminE=me+me2/dMN;// Threshold for muon production
-  const double EminMu=mmu+mmu2/dMN;  // Threshold for muon production
-  //const double EminTau=mmu+mmu2/dMN; // Threshold for muon production
-  //
-  //const double mc=.3;           // parameter of W>M+mc cut for Quasi-Elastic/Delta
-  const double mc=mpi;          // parameter of W>M+mc cut for Quasi-Elastic/Delta
-  const double mcV=(dMN+mc)*mc; // constant of W>M+mc cut for Quasi-Elastic
-  //std::ofstream fileNuMuX("NuMuXQ2.out", std::ios::out);
-  //fileNuMuX.setf( std::ios::scientific, std::ios::floatfield );
-  // _____ Begin of Test Area
-  //Genfun::LogGamma logGamma;
-  //double n=4.9;
-		//double g=exp(logGamma(n));
-  //G4cout<<"Gamma("<<n<<") = "<<g<<G4endl;
-  // ^^^^^ End of Test Area
-  //
-  double f[5];                    // A working array
-  int    A=12;                    // Neucleus for which calculations should be done
-  double lEnuMin=std::log(EminMu);     // Log of Minimum energy of neutrino
-  double lEnuMax=std::log(300.);       // Log of Maximum energy of neutrino
-  int    nE=20;
-  double dlE=(lEnuMax-lEnuMin)/nE;
-  lEnuMin+=dlE/10;
-  lEnuMax+=dlE/5;
-  G4cout<<"Emin="<<EminMu<<",lEi="<<lEnuMin<<",lEa="<<lEnuMax<<",dlE="<<dlE<<G4endl;
-  for(double lEnu=lEnuMin; lEnu<lEnuMax; lEnu+=dlE)
-		{
-    double Enu=std::exp(lEnu);         // Energy of neutrino/anti-neutrino
-    double dEnu=Enu+Enu;          // doubled energy of nu/anu
-    double Enu2=Enu*Enu;          // squared energy of nu/anu
-    double Emu=Enu-mmu;           // Free Energy of neutrino/anti-neutrino
-    double Emu2=Emu*Emu;          // squared energy of nu/anu
-    double ME=Enu*MN;             // M*E
-    double dME=ME+ME;             // 2*M*E
-    double DIStsig=1.;            // Total curent DIS cross-section to be integrated
-    double DISmsig=1.e20;         // Total remembered DIS cross-section
-    double dEMN=(dEnu+MN)*ME;
-    double MEm=ME-hmmu2;
-    double sqE=Enu*std::sqrt(MEm*MEm-mmu2*MN2);
-    double E2M=MN*Enu2-(Enu+MN)*hmmu2;
-    double ymax=(E2M+sqE)/dEMN;
-    double ymin=(E2M-sqE)/dEMN;
-    double rmin=1.-ymin;
-    double rhm2E=hmmu2/Enu2;
-    double Q2min=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E));
-    double Q2max=dME*ymax;
-    // *** Additional notQE limit ****
-    //double Q2nqe=Emu*dMN-mcV;
-    //if(Q2max>Q2nqe) Q2max=Q2nqe; // !! only for not QE
-    // *** End of notQE ^^^^^
-    int    nQ2=8;
-    //G4cout<<"*** E="<<Enu<<", Q2i="<<Q2min<<" < Q2a="<<Q2max<<", yi="<<ymin<<" < ya="
-    //      <<ymax<<G4endl;
-    //while(fabs(DIStsig-DISmsig)/DIStsig>reps)
-    //{
-      DISmsig=DIStsig;
-      DIStsig=0.;
-      nQ2*=2;
-      double dQ2=(Q2max-Q2min)/nQ2;
-      if(dQ2>0) for(double Q2=Q2min+dQ2/2; Q2<Q2max; Q2+=dQ2)
-				  {
-        double DISxint=1.;        // Curent DIS x-integral
-        double DISmint=1.e20;     // Remembered DIS x-integral
-        double Q2M=Q2+MW2;
-        double dik=MW4/Q2M/Q2M;
-        double qmc=Q2+mcV;
-        double lXQES=std::log((std::sqrt(qmc*qmc+Q2*fMN2)-qmc)/dMN2); // Quasielastic boundary
-        //double lXQES=log(Q2/(Q2+mcV)); // Quasielastic boundary (W=MN+m_c)
-        //double xN=Q2/dME;
-        double xN=Q2/MN/(Emu+std::sqrt(Emu2+Q2));
-        //double lXmin=log(xN/ymax);
-        double lXmin=std::log(xN);
-        double lXmax=0.;               // QES is in DIS
-        // ****** QE ********
-        if(lXQES>lXmin) lXmin=lXQES;   // A cut which leaves only QES
-        //if(lXQES<lXmax) lXmax=lXQES;   // A cut which excludes QES (see above "notQE")
-        // *** End of QE^^^^^
-        //double lXmax=lXQES;          // Cut off quasielastic
-        int    nX=8;
-        while(std::fabs(DISxint-DISmint)/DISxint>xeps)
-        {
-          DISmint=DISxint;
-          DISxint=0.;
-          nX*=2;
-          double dlX=(lXmax-lXmin)/nX;
-          for(double lX=lXmin+dlX/2; lX<lXmax; lX+=dlX)
-				      {
-            getFun(A, lX, Q2, f);
-            DISxint+=f[0]+f[0]+xN*(f[1]+f[1]+xN*f[3]); // neutrino
-            //DISxint+=f[0]+f[0]+xN*(f[2]+f[2]+xN*f[4]); // anti-neutrino
-            //G4cout<<f[0]<<","<<f[1]<<","<<f[2]<<","<<f[3]<<","<<f[4]<<G4endl;
-          }
-          DISxint*=dlX;
-          //G4cout<<"--- E="<<Enu<<" --- Q2="<<Q2<<" --- nX="<<nX<<", iX="<<DISxint
-          //      <<", mX="<<DISmint<<", rX="<<(DISxint-DISmint)/DISxint<<G4endl;
-        }
-        //G4cout<<"(E="<<Enu<<"), r="<<Q2/Q2mx<<" "<<DISxint*dik*sik<<G4endl;//NoNormedByEn
-        // QE
-        G4cout<<"(E="<<Enu<<"), Q2="<<Q2<<" "<<DISxint*dik*sik<<G4endl;//Not Normed By En
-        // notQE
-        //G4cout<<"(E="<<Enu<<"), r="<<Q2/Q2max<<" "<<DISxint*dik*sik/Enu<<G4endl;//NormByE
-        DIStsig+=DISxint*dik;
-      }
-      DIStsig*=dQ2;
-      //G4cout<<"=== E="<<Enu<<" ===> nQ="<<nQ2<<", iQ="<<DIStsig<<", mQ="<<DISmsig
-						//      <<", rQ="<<(DIStsig-DISmsig)/DIStsig<<G4endl;
-				//}
-    DIStsig*=sik/Enu;
-    G4cout<<"*** E="<<Enu<<",sig/E="<<DIStsig<<G4endl;
-		} // End of the Enery LOOP
-  // int np=0;
-  //for(int m=0; m<2; m++)
-  //{
-  //  //fileNuMuX<<"  static const G4double SH"<<n<<"[nH]={"<<G4endl<<"    ";
-  //  //G4cout<<"**** A_high="<<m<<G4endl;
-  //  np=0;
-  //  int nC=14;
-	 //  for(G4int en=0; en<nC; en++)
-	 //  {
-  //    //G4double sig=1.;
-  //    np++;
-  //    //if(np==7)           // Write by 7 number in brackets
-  //    //{
-  //    //  if(en==nC-1) fileNuMuX<<sig<<"};"<<G4endl;
-  //    //  else         fileNuMuX<<sig<<","<<G4endl<<"    ";
-	 //    //}
-  //    //else           fileNuMuX<<sig<<",";
-  //    //if(np==7) np=0;
-  //  } // End of the point LOOP
-  //} // End of the isotop LOOP
-  return 0;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuMuXQ2Integration.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuMuXQ2Integration.cc	(revision 1197)
+++ 	(revision )
@@ -1,310 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: NuMu DIS (x,Q2) approximation is integrated over x
-// .....................................................
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 30-Sept-05
-// 
-//=====================================================================
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-#include <CLHEP/GenericFunctions/LogGamma.hh>
-
-void strucf(int A, double x, double Q2, double& f2, double& xf3, double& fL)
-{
-  //const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  //const double MN2=MN*MN;       // M_N^2 in GeV^2
-  //const double mpi=.13957018;   // charged pi meson mass in GeV
-  //const double Wt=MN+mpi;       // Delta threshold
-  //const double W2t=Wt*Wt;       // Squared Delta threshold
-  const Genfun::LogGamma lGam;
-  static int mA=0;
-  static double mQ2=0., mN, mD, mDel, mU2, mU3, mV;
-  //static double mUU;
-  double N=3., D=0., Del=0., U2=0., U3=0., V=0.;
-  //double UU=0.;
-  if(A==mA && Q2==mQ2)         // Associative memory for acceleration
-		{
-    N  =mN;
-    D  =mD;
-    Del=mDel;
-    U2 =mU2;
-    U3 =mU3;
-    //UU =mUU;
-    V  =mV;
-  }
-  else
-  {
-		  //double r=0.;
-    double min=.077;             // Delta(0)
-				double max=.47;              // Hard Pomeron
-    //double H=1.22;
-    if(Q2<=0.) G4cout<<"strucf: Q2="<<Q2<<" <= 0"<< G4endl;
-    double Q=std::sqrt(Q2);
-    //if(A==1)                   // Proton
-		  //{
-    //  r=std::sqrt(Q2/1.66);
-    //  max=.5;
-    //}
-    //else if(A<13)              // Light nuclei
-		  //{
-    //  double f=Q2/4.62;
-    //  r=f*f;
-    //  max=.3;
-    //  if(A>2) H=1.;
-    //}
-    //else if(A>0)               // Heavy nuclei
-		  //{
-    //  double f=Q2/3.4;
-    //  double ff=f*f;
-    //  r=ff*ff;
-    //  max=.5;
-    //  H=1.;
-    //}
-    //else G4cout<<"strucf: A="<<A<<" <= 0"<< G4endl;
-    //
-    N=3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space
-    Del=min+(max-min)/(1.+5./Q);
-    D=0.68*std::pow(1.+.145/Q2,-1.-Del); // 0.68=1-0.34, m2=.145 GeV2
-    V=3*(1.-D)*(N-1.);
-    double c3=.75;                       // 3*0.25
-    double uu=std::exp(lGam(N-Del)-lGam(N-1.)-lGam(1.-Del))/N;
-    U2=(c3+N-3.)*uu;
-    U3=c3*uu;
-    mA  = A;
-    mQ2 = Q2;
-    mN  = N;
-    mD  = D;
-    mDel=Del;
-    mU2 =U2;
-    mU3 =U3;
-    //mUU =UU; // @@
-    mV  =V;
-  }  
-  // From here the Q2 coefficients are used
-  double x1=std::pow(1.-x,N-2.);
-  double pp=D*std::pow(x,-Del)*x1;
-  double dir=V*x*x1;
-  double per=U2*pp;
-		f2 = per + dir;
-  //double W2=MN2-MN2*x+Q2/x-Q2;
-  //if(W2<W2t)
-		//{
-  //  per=UU*pp;
-  //  xf3= per+dir;
-  //}
-  //else
-  xf3= U3*pp+dir;
-  fL = per/5.;                             // 20%
-  return;
-}
-
-void getFun(int A, double lx, double Q2, double* f)
-{
-  double f2=0., xf3=0., fL=0.;
-  if (lx>0.5) G4cerr<<"***getFun: ln(x)="<<lx<<">.5"<<G4endl;
-  double x=std::exp(lx);
-  double x2=x*x;
-  strucf(A, x, Q2, f2, xf3, fL);
-  f[0]=f2;             // direct part
-  f[1]=(-f2+xf3)/x;    // *y (neutrino) part
-  f[2]=(-f2-xf3)/x;    // *y (anti-neutrino) part
-  f[3]=(f2-fL-xf3)/x2; // *y2 (neutrino) part
-  f[4]=(f2-fL+xf3)/x2; // *y2 (anti-neutrino) part
-}
-
-int main()
-{
-  const double reps=.001;        // relative accuracy of the total Q2 integral calculation
-  const double xeps=.0001;      // relative accuracy of the total X integral calculation
-  //           =========
-  const double GF=1.16637e-5;   // Fermi constant in GeV^-2
-  const double GF2=GF*GF;       // Squared Fermi constant in GeV^-4
-  const double MW=80.425;       // Mass of W-boson in GeV
-  const double MW2=MW*MW;       // Squared mass of W-boson in GeV^2
-  const double MW4=MW2*MW2;     // Quadro mass of W-boson in GeV^4
-  const double hc2=38937932300.;// (hc)^2 in GeV^2*10^-38cm2 to convert GeV^-2 to 10^-38cm2
-  const double pif=3.14159265*4;// 4pi
-  const double sik=GF2*hc2/pif; // precalculated coefficient
-  //const double mpi=.1349766;    // pi0 meson mass in GeV
-  //const double mpi=.13957018;   // charged pi meson mass in GeV
-  //const double mpi2=mpi*mpi;    // m_pi^2 in GeV^2
-  //const double me=.00051099892; // electron mass in GeV
-  //const double me2=me*me;       // m_e^2 in GeV^2
-  //const double hme2=me2/2;      // .5*m_e^2 in GeV^2
-  const double mmu=.105658369;  // mu meson mass in GeV
-  const double mmu2=mmu*mmu;    // m_mu^2 in GeV^2
-  const double hmmu2=mmu2/2;    // .5*m_mu^2 in GeV^2
-  //const double mtau=1.777;      // tau meson mass in GeV
-  //const double mtau2=mtau*mtau; // m_tau^2 in GeV^2
-  //const double hmtau2=mtau2/2;  // .5*m_e^2 in GeV^2
-  const double mp=.93827203;    // proton mass in GeV
-  const double mn=.93956536;    // neutron mass in GeV
-  //const double md=1.87561282;   // deuteron mass in GeV
-  //const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  const double MN=(mn+mp)/2;    // Nucleon mass (mean free) in GeV
-  const double MD=1.232;        // proton mass in GeV
-  //const double mp2=mp*mp;       // m_p^2 in GeV^2
-  const double MN2=MN*MN;       // M_N^2 in GeV^2
-  const double dMN=MN+MN;       // 2*M_N in GeV
-  const double dMN2=MN2+MN2;    // 2*M_N^2 in GeV^2
-  const double fMN2=dMN2+dMN2;  // 4*M_N^2 in GeV^2
-  //const double EminE=me+me2/dMN;// Threshold for muon production
-  const double EminMu=mmu+mmu2/dMN;  // Threshold for muon production
-  //const double EminTau=mmu+mmu2/dMN; // Threshold for muon production
-  //
-  //const double mc=.3;           // parameter of W>M+mc cut for Quasi-Elastic/Delta
-  const double mc=std::sqrt((MN*MN+MD*MD)/2)-MN; // Squared mean between N and \Delta
-  //const double mc=mpi;          // parameter of W>M+mc cut for Quasi-Elastic/Delta
-  const double mcV=(dMN+mc)*mc; // constant of W>M+mc cut for Quasi-Elastic
-  //std::ofstream fileNuMuX("NuMuXQ2.out", std::ios::out);
-  //fileNuMuX.setf( std::ios::scientific, std::ios::floatfield );
-  // _____ Begin of Test Area
-  //Genfun::LogGamma logGamma;
-  //double n=4.9;
-		//double g=exp(logGamma(n));
-  //G4cout<<"Gamma("<<n<<") = "<<g<<G4endl;
-  // ^^^^^ End of Test Area
-  //
-  double f[5];                    // A working array
-  int    A=12;                    // Neucleus for which calculations should be done
-  double lEnuMin=0;               // LogLog of Minimum energy of neutrino
-  double lEnuMax=std::log(1.+std::log(300./EminMu)); // LogLog of MaximumEnergy of neutrino
-  int    nE=49;                   // Number of points
-  double dlE=(lEnuMax-lEnuMin)/nE;
-  lEnuMin+=dlE/10;
-  lEnuMax+=dlE/5;
-  G4cout<<"Emin="<<EminMu<<",lEi="<<lEnuMin<<",lEa="<<lEnuMax<<",dlE="<<dlE<<G4endl;
-  for(double lEnu=lEnuMin; lEnu<lEnuMax; lEnu+=dlE)
-		{
-    double Enu=std::exp(std::exp(lEnu)-1.)*EminMu; // Energy of neutrino/anti-neutrino
-    double dEnu=Enu+Enu;          // doubled energy of nu/anu
-    double Enu2=Enu*Enu;          // squared energy of nu/anu
-    double Emu=Enu-mmu;           // Free Energy of neutrino/anti-neutrino
-    double Emu2=Emu*Emu;          // squared energy of nu/anu
-    double ME=Enu*MN;             // M*E
-    double dME=ME+ME;             // 2*M*E
-    double DIStsig=1.;            // Total curent DIS cross-section to be integrated
-    double DISmsig=1.e20;         // Total remembered DIS cross-section
-    double dEMN=(dEnu+MN)*ME;
-    double MEm=ME-hmmu2;
-    double sqE=Enu*std::sqrt(MEm*MEm-mmu2*MN2);
-    double E2M=MN*Enu2-(Enu+MN)*hmmu2;
-    double ymax=(E2M+sqE)/dEMN;
-    double ymin=(E2M-sqE)/dEMN;
-    double rmin=1.-ymin;
-    double rhm2E=hmmu2/Enu2;
-    double Q2min=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E));
-    double Q2max=dME*ymax;
-    int    nQ2=8;
-    //G4cout<<"*** E="<<Enu<<", Q2i="<<Q2min<<" < Q2a="<<Q2max<<", yi="<<ymin<<" < ya="
-    //      <<ymax<<G4endl;
-    while(std::fabs(DIStsig-DISmsig)/DIStsig>reps)
-    {
-      DISmsig=DIStsig;
-      DIStsig=0.;
-      nQ2*=2;
-      double dQ2=(Q2max-Q2min)/nQ2;
-      for(double Q2=Q2min+dQ2/2; Q2<Q2max; Q2+=dQ2)
-				  {
-        double DISxint=1.;        // Curent DIS x-integral
-        double DISmint=1.e20;     // Remembered DIS x-integral
-        double Q2M=Q2+MW2;
-        double dik=MW4/Q2M/Q2M;
-        double qmc=Q2+mcV;
-        double lXQES=std::log((std::sqrt(qmc*qmc+Q2*fMN2)-qmc)/dMN2);//QuasielasticBoundary
-        //double lXQES=log(Q2/(Q2+mcV)); // Quasielastic boundary (W=MN+m_c)
-        //double xN=Q2/dME;
-        double xN=Q2/MN/(Emu+std::sqrt(Emu2+Q2));
-        //double lXmin=log(xN/ymax);
-        double lXmin=std::log(xN);
-        // ****** QE ********
-        if(lXQES>lXmin) lXmin=lXQES;   // A cut which leaves only QES >>>>>>>>>>>>>>>>
-        // *** End of QE^^^^^
-        double lXmax=0.;               // QES is in DIS
-        //double lXmax=lXQES;          // Cut off quasielastic
-        int    nX=8;
-        while(std::fabs(DISxint-DISmint)/DISxint>xeps)
-        {
-          DISmint=DISxint;
-          DISxint=0.;
-          nX*=2;
-          double dlX=(lXmax-lXmin)/nX;
-          for(double lX=lXmin+dlX/2; lX<lXmax; lX+=dlX)
-				      {
-            getFun(A, lX, Q2, f);
-            // ***** Neutrino/Antineutrino switch ******>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-            //DISxint+=f[0]+f[0]+xN*(f[1]+f[1]+xN*f[3]); // neutrino
-            DISxint+=f[0]+f[0]+xN*(f[2]+f[2]+xN*f[4]); // anti-neutrino
-            //G4cout<<f[0]<<","<<f[1]<<","<<f[2]<<","<<f[3]<<","<<f[4]<<G4endl;
-          }
-          DISxint*=dlX;
-          //G4cout<<"--- E="<<Enu<<" --- Q2="<<Q2<<" --- nX="<<nX<<", iX="<<DISxint
-          //      <<", mX="<<DISmint<<", rX="<<(DISxint-DISmint)/DISxint<<G4endl;
-        }
-        //G4cout<<"(E="<<Enu<<"), Q2="<<Q2<<", I="<<DISxint/dik/dik<<G4endl;
-        DIStsig+=DISxint*dik;
-      }
-      DIStsig*=dQ2;
-      //G4cout<<"=== E="<<Enu<<" ===> nQ="<<nQ2<<", iQ="<<DIStsig<<", mQ="<<DISmsig
-						//      <<", rQ="<<(DIStsig-DISmsig)/DIStsig<<G4endl;
-    }
-    //===== tot/qe choice ====
-    DIStsig*=sik/Enu;
-    //G4cout<<"***total-neutrino*** E="<<Enu<<" ,sig/E="<<DIStsig<<G4endl;
-    G4cout<<"***total-antineutrino*** E="<<Enu<<" ,sig/E="<<DIStsig<<G4endl;
-    //G4cout<<"***quasiel-nu*** E="<<Enu<<" ,sig/E="<<DIStsig<<G4endl;
-    //G4cout<<"***quasiel-antinu*** E="<<Enu<<" ,sig/E="<<DIStsig<<G4endl;
-    //...................
-    //DIStsig*=sik;
-    //G4cout<<"***qelas*** E="<<Enu<<",sig="<<DIStsig<<G4endl;
-    //===== End of the choice
-		} // End of the Enery LOOP
-  // int np=0;
-  //for(int m=0; m<2; m++)
-  //{
-  //  //fileNuMuX<<"  static const G4double SH"<<n<<"[nH]={"<<G4endl<<"    ";
-  //  //G4cout<<"**** A_high="<<m<<G4endl;
-  //  np=0;
-  //  int nC=14;
-	 //  for(G4int en=0; en<nC; en++)
-	 //  {
-  //    //G4double sig=1.;
-  //    np++;
-  //    //if(np==7)           // Write by 7 number in brackets
-  //    //{
-  //    //  if(en==nC-1) fileNuMuX<<sig<<"};"<<G4endl;
-  //    //  else         fileNuMuX<<sig<<","<<G4endl<<"    ";
-	 //    //}
-  //    //else           fileNuMuX<<sig<<",";
-  //    //if(np==7) np=0;
-  //  } // End of the point LOOP
-  //} // End of the isotop LOOP
-  return EXIT_SUCCESS;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuMuXQ2Integration_N.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuMuXQ2Integration_N.cc	(revision 1197)
+++ 	(revision )
@@ -1,284 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: NuMu DIS (x,Q2) approximation is integrated over x & Q2
-// .....................................................[ for a <nucleon> ]
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Oct-07
-// 
-//=====================================================================
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-#include <CLHEP/GenericFunctions/LogGamma.hh>
-
-void strucf(int A, double x, double Q2, double& f2, double& xf3, double& fL)
-{
-  //const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  //const double MN2=MN*MN;       // M_N^2 in GeV^2
-  //const double mpi=.13957018;   // charged pi meson mass in GeV
-  //const double Wt=MN+mpi;       // Delta threshold
-  //const double W2t=Wt*Wt;       // Squared Delta threshold
-  const Genfun::LogGamma lGam;
-  static int mA=0;
-  static double mQ2=0., mN, mD, mDel, mU2, mU3, mV;
-  //static double mUU;
-  double N=3., D=0., Del=0., U2=0., U3=0., V=0.;
-  //double UU=0.;
-  if(A==mA && Q2==mQ2)         // Associative memory for acceleration
-		{
-    N  =mN;
-    D  =mD;
-    Del=mDel;
-    U2 =mU2;
-    U3 =mU3;
-    //UU =mUU;
-    V  =mV;
-  }
-  else
-  {
-    double Q=std::sqrt(Q2);
-    N=3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space
-    Del=.077+.393/(1.+5./Q);
-    D=.68*std::pow(1.+.145/Q2,-1.-Del);
-    V=3*(N-1.);
-    double c3=.75;
-    double uu=std::exp(lGam(N-Del)-lGam(N-1.)-lGam(1.-Del))/N;
-    U2=(c3+N-3.)*uu;
-    U3=c3*uu;
-    //UU=uu+uu+uu; // @@
-    mA  = A;
-    mQ2 = Q2;
-    mN  = N;
-    mD  = D;
-    mDel=Del;
-    mU2 =U2;
-    mU3 =U3;
-    //mUU =UU; // @@
-    mV  =V;
-  }  
-  // From here the Q2 coefficients are used
-  double x1=std::pow(1.-x,N-2.);
-  double pp=D*std::pow(x,-Del)*x1;
-  double dir=(1-D)*V*x*x1;
-  double per=U2*pp;
-		f2 = per + dir;
-  //double W2=MN2-MN2*x+Q2/x-Q2;
-  //if(W2<W2t)
-		//{
-  //  per=UU*pp;
-  //  xf3= per+dir;
-  //}
-  //else
-  xf3= U3*pp+dir;
-  fL = per/5.;
-  return;
-}
-
-void getFun(int A, double lx, double Q2, double* f)
-{
-  const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  const double MN2=MN*MN;   // Squared Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  double f2=0., xf3=0., fL=0.;
-  if (lx>0.5) G4cerr<<"***getFun: ln(x)="<<lx<<">.5"<<G4endl;
-  double x=std::exp(lx);
-  double x2=x*x;
-  double c=0.;
-  if(Q2>.0001) c=x2*MN2/Q2;
-  double c2=1+c+c;     // Q^2/nu^2 correction
-  strucf(A, x, Q2, f2, xf3, fL);
-  f[0]=f2;             // direct part
-  f[1]=(-f2+xf3)/x;    // *y (neutrino) part
-  f[2]=(-f2-xf3)/x;    // *y (anti-neutrino) part
-  f[3]=(f2*c2-fL-xf3)/x2; // *y2 (neutrino) part
-  f[4]=(f2*c2-fL+xf3)/x2; // *y2 (anti-neutrino) part
-}
-
-int main()
-{
-  const double reps=.001;        // relative accuracy of the total Q2 integral calculation
-  const double xeps=.0001;      // relative accuracy of the total X integral calculation
-  //           =========
-  const double GF=1.16637e-5;   // Fermi constant in GeV^-2
-  const double GF2=GF*GF;       // Squared Fermi constant in GeV^-4
-  const double MW=80.425;       // Mass of W-boson in GeV
-  const double MW2=MW*MW;       // Squared mass of W-boson in GeV^2
-  const double MW4=MW2*MW2;     // Quadro mass of W-boson in GeV^4
-  const double hc2=38937932300.;// (hc)^2 in GeV^2*10^-38cm2 to convert GeV^-2 to 10^-38cm2
-  const double pif=3.14159265*4;// 4pi
-  const double sik=GF2*hc2/pif; // precalculated coefficient
-  //const double mpi=.1349766;    // pi0 meson mass in GeV
-  //const double mpi=.13957018;   // charged pi meson mass in GeV
-  //const double mpi2=mpi*mpi;    // m_pi^2 in GeV^2
-  //const double me=.00051099892; // electron mass in GeV
-  //const double me2=me*me;       // m_e^2 in GeV^2
-  //const double hme2=me2/2;      // .5*m_e^2 in GeV^2
-  const double mmu=.105658369;  // mu meson mass in GeV
-  const double mmu2=mmu*mmu;    // m_mu^2 in GeV^2
-  const double hmmu2=mmu2/2;    // .5*m_mu^2 in GeV^2
-  //const double mtau=1.777;      // tau meson mass in GeV
-  //const double mtau2=mtau*mtau; // m_tau^2 in GeV^2
-  //const double hmtau2=mtau2/2;  // .5*m_e^2 in GeV^2
-  //const double mp=.93827203;    // proton mass in GeV
-  //const double mn=.93956536;    // neutron mass in GeV
-  //const double md=1.87561282;   // deuteron mass in GeV
-  const double MN=.931494043;   // Nucleon mass (inside nucleus, atomic mass unit, GeV)
-  //const double MN=(mn+mp)/2;    // Nucleon mass (mean free) in GeV
-  //const double MD=1.232;        // proton mass in GeV
-  //const double mp2=mp*mp;       // m_p^2 in GeV^2
-  const double MN2=MN*MN;       // M_N^2 in GeV^2
-  const double dMN=MN+MN;       // 2*M_N in GeV
-  const double dMN2=MN2+MN2;    // 2*M_N^2 in GeV^2
-  const double fMN2=dMN2+dMN2;  // 4*M_N^2 in GeV^2
-  //const double EminE=me+me2/dMN;// Threshold for muon production
-  const double EminMu=mmu+mmu2/dMN;  // Threshold for muon production
-  //const double EminTau=mmu+mmu2/dMN; // Threshold for muon production
-  //
-  const double mc=.261;           // parameter of W2>(M_N^2+M_D^2)/2 cut for QuasiEl/Delta
-  //const double mc=mpi;          // parameter of W>M+mc cut for Quasi-Elastic/Delta
-  const double mcV=(dMN+mc)*mc; // constant of W>M+mc cut for Quasi-Elastic
-  //std::ofstream fileNuMuX("NuMuXQ2.out", std::ios::out);
-  //fileNuMuX.setf( std::ios::scientific, std::ios::floatfield );
-  // _____ Begin of Test Area
-  //Genfun::LogGamma logGamma;
-  //double n=4.9;
-		//double g=exp(logGamma(n));
-  //G4cout<<"Gamma("<<n<<") = "<<g<<G4endl;
-  // ^^^^^ End of Test Area
-  //
-  double f[5];                    // A working array
-  int    A=12;                    // Neucleus for which calculations should be done
-  double lEnuMin=0;               // LogLog of Minimum energy of neutrino
-  double lEnuMax=std::log(1.+std::log(300./EminMu)); // LogLog of MaximumEnergy of neutrino
-  int    nE=63;
-  double dlE=(lEnuMax-lEnuMin)/nE;
-  lEnuMin+=dlE/10;
-  lEnuMax+=dlE/5;
-  G4cout<<"Emin="<<EminMu<<",lEi="<<lEnuMin<<",lEa="<<lEnuMax<<",dlE="<<dlE<<G4endl;
-  for(double lEnu=lEnuMin; lEnu<lEnuMax; lEnu+=dlE)
-		{
-    double Enu=std::exp(std::exp(lEnu)-1.)*EminMu; // Energy of neutrino/anti-neutrino
-    double dEnu=Enu+Enu;          // doubled energy of nu/anu
-    double Enu2=Enu*Enu;          // squared energy of nu/anu
-    double Emu=Enu-mmu;           // Free Energy of neutrino/anti-neutrino
-    double Emu2=Emu*Emu;          // squared energy of nu/anu
-    double ME=Enu*MN;             // M*E
-    double dME=ME+ME;             // 2*M*E
-    double DIStsig=1.;            // Total curent DIS cross-section to be integrated
-    double DISmsig=1.e20;         // Total remembered DIS cross-section
-    double dEMN=(dEnu+MN)*ME;
-    double MEm=ME-hmmu2;
-    double sqE=Enu*std::sqrt(MEm*MEm-mmu2*MN2);
-    double E2M=MN*Enu2-(Enu+MN)*hmmu2;
-    double ymax=(E2M+sqE)/dEMN;
-    double ymin=(E2M-sqE)/dEMN;
-    double rmin=1.-ymin;
-    double rhm2E=hmmu2/Enu2;
-    double Q2min=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E));
-    double Q2max=dME*ymax;
-    int    nQ2=8;
-    //G4cout<<"*** E="<<Enu<<", Q2i="<<Q2min<<" < Q2a="<<Q2max<<", yi="<<ymin<<" < ya="
-    //      <<ymax<<G4endl;
-    while(std::fabs(DIStsig-DISmsig)/DIStsig>reps)
-    {
-      DISmsig=DIStsig;
-      DIStsig=0.;
-      nQ2*=2;
-      double dQ2=(Q2max-Q2min)/nQ2;
-      for(double Q2=Q2min+dQ2/2; Q2<Q2max; Q2+=dQ2)
-				  {
-        double DISxint=1.;        // Curent DIS x-integral
-        double DISmint=1.e20;     // Remembered DIS x-integral
-        double Q2M=Q2+MW2;
-        double dik=MW4/Q2M/Q2M;
-        double qmc=Q2+mcV;
-        double lXQES=std::log((std::sqrt(qmc*qmc+Q2*fMN2)-qmc)/dMN2); // QuasielastBoundary
-        //double lXQES=log(Q2/(Q2+mcV)); // Quasielastic boundary (W=MN+m_c)
-        //double xN=Q2/dME;
-        double xN=Q2/MN/(Emu+std::sqrt(Emu2+Q2));
-        //double lXmin=log(xN/ymax);
-        double lXmin=std::log(xN);
-        // ****** QE ********
-        if(lXQES>lXmin) lXmin=lXQES;   // A cut which leaves only QES
-        // *** End of QE^^^^^
-        double lXmax=0.;               // QES is in DIS
-        //double lXmax=lXQES;          // Cut off quasielastic
-        int    nX=8;
-        while(std::fabs(DISxint-DISmint)/DISxint>xeps)
-        {
-          DISmint=DISxint;
-          DISxint=0.;
-          nX*=2;
-          double dlX=(lXmax-lXmin)/nX;
-          for(double lX=lXmin+dlX/2; lX<lXmax; lX+=dlX)
-				      {
-            getFun(A, lX, Q2, f);
-            DISxint+=f[0]+f[0]+xN*(f[1]+f[1]+xN*f[3]); // neutrino
-            //DISxint+=f[0]+f[0]+xN*(f[2]+f[2]+xN*f[4]); // anti-neutrino
-            //G4cout<<f[0]<<","<<f[1]<<","<<f[2]<<","<<f[3]<<","<<f[4]<<G4endl;
-          }
-          DISxint*=dlX;
-          //G4cout<<"--- E="<<Enu<<" --- Q2="<<Q2<<" --- nX="<<nX<<", iX="<<DISxint
-          //      <<", mX="<<DISmint<<", rX="<<(DISxint-DISmint)/DISxint<<G4endl;
-        }
-        //G4cout<<"(E="<<Enu<<"), Q2="<<Q2<<", I="<<DISxint/dik/dik<<G4endl;
-        DIStsig+=DISxint*dik;
-      }
-      DIStsig*=dQ2;
-      //G4cout<<"=== E="<<Enu<<" ===> nQ="<<nQ2<<", iQ="<<DIStsig<<", mQ="<<DISmsig
-						//      <<", rQ="<<(DIStsig-DISmsig)/DIStsig<<G4endl;
-    }
-    //===== tot/qe choice ====
-    //DIStsig*=sik/Enu;
-    //G4cout<<"***total*** E="<<Enu<<",sig/E= "<<DIStsig<<G4endl;
-    //...................
-    DIStsig*=sik;
-    G4cout<<"***qelas*** E="<<Enu<<",sig= "<<DIStsig<<G4endl;
-    //===== End of the choice
-		} // End of the Enery LOOP
-  // int np=0;
-  //for(int m=0; m<2; m++)
-  //{
-  //  //fileNuMuX<<"  static const G4double SH"<<n<<"[nH]={"<<G4endl<<"    ";
-  //  //G4cout<<"**** A_high="<<m<<G4endl;
-  //  np=0;
-  //  int nC=14;
-	 //  for(G4int en=0; en<nC; en++)
-	 //  {
-  //    //G4double sig=1.;
-  //    np++;
-  //    //if(np==7)           // Write by 7 number in brackets
-  //    //{
-  //    //  if(en==nC-1) fileNuMuX<<sig<<"};"<<G4endl;
-  //    //  else         fileNuMuX<<sig<<","<<G4endl<<"    ";
-	 //    //}
-  //    //else           fileNuMuX<<sig<<",";
-  //    //if(np==7) np=0;
-  //  } // End of the point LOOP
-  //} // End of the isotop LOOP
-  return EXIT_SUCCESS;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuMuXYIntegration.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4NuMuXYIntegration.cc	(revision 1197)
+++ 	(revision )
@@ -1,241 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: NuMu DIS (x,Q2) approximation is integrated over x
-// .....................................................
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 30-Sept-05
-// 
-//=====================================================================
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-#include <CLHEP/GenericFunctions/LogGamma.hh>
-
-void strucf(int A, double x, double ydME, double& f2, double& xf3, double& fL)
-{
-  const Genfun::LogGamma lGam;
-  double N=3., D=0., Del=0., U2=0., U3=0., V=0.;
-  double Q2=x*ydME;
-  double r=0.;
-  double max=1.;
-  double H=1.22;
-  if(A==1)                   // Proton
-  {
-    r=std::sqrt(Q2/1.66);
-    max=.5;
-  }
-  else if(A<13)              // Light nuclei
-  {
-    double f=Q2/4.62;
-    r=f*f;
-    max=.3;
-    if(A>2) H=1.;
-  }
-  else if(A>0)               // Heavy nuclei
-  {
-    double f=Q2/3.4;
-    double ff=f*f;
-    r=ff*ff;
-    max=.5;
-    H=1.;
-  }
-  else G4cout<<"strucf: A="<<A<<" <= 0"<< G4endl;
-  //
-  N=3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space
-  Del=(1.+r)/(12.5+r/max);
-  double S=std::pow(1.+.6/Q2,-1.-Del);
-  D=H*S*(1.-.5*S);
-  V=3*(1.-D)*(N-1.);
-  double cc=Q2/.08;
-  double cc2=cc*cc;
-  double C=(1.+cc2)/(1.+cc2/.24)/(1.+Q2/21.6);
-  double c3=C+C+C;
-  double uu=std::exp(lGam(N-Del)-lGam(N-1.)-lGam(1.-Del))/N;
-  U2=(c3+N-3.)*uu;
-  U3=c3*uu;
-  // From here the Q2 coefficients are used
-  double x1=std::pow(1.-x,N-2.);
-  double pp=D*std::pow(x,-Del)*x1;
-  double dir=V*x*x1;
-  double per=U2*pp;
-		f2 = per + dir;
-  xf3= U3*pp+dir;
-  fL = per/4.;
-  return;
-}
-
-void getFun(int A, double lx, double ydME, double* f)
-{
-  double f2=0., xf3=0., fL=0.;
-  if (lx>0.5) G4cerr<<"***getFun: ln(x)="<<lx<<">.5"<<G4endl;
-  double x=std::exp(lx);
-  strucf(A, x, ydME, f2, xf3, fL);
-  f[0]=x*f2;          // direct part
-  f[1]=x*(-f2+xf3);   // *y (neutrino) part
-  f[2]=x*(-f2-xf3);   // *y (anti-neutrino) part
-  f[3]=x*(f2-fL-xf3); // *y2 (neutrino) part
-  f[4]=x*(f2-fL+xf3); // *y2 (anti-neutrino) part
-}
-
-int main()
-{
-  const double reps=.01;        // relative accuracy of the total Q2 integral calculation
-  const double xeps=.0001;      // relative accuracy of the total X integral calculation
-  //           =========
-  const double GF=1.16637e-5;   // Fermi constant in GeV^-2
-  const double GF2=GF*GF;       // Squared Fermi constant in GeV^-4
-  const double MW=80.425;       // Mass of W-boson in GeV
-  const double MW2=MW*MW;       // Squared mass of W-boson in GeV^2
-  const double MW4=MW2*MW2;     // Quadro mass of W-boson in GeV^4
-  const double hc2=38937932300.;// (hc)^2 in GeV^2*10^-38cm2 to convert GeV^-2 to 10^-38cm2
-  const double pif=3.14159265*4;// 4pi
-  const double sik=GF2*MW4*hc2/pif; // precalculated coefficient
-  const double mpi=.1349766;    // pi0 meson mass in GeV
-  const double mpi2=mpi*mpi;    // m_pi^2 in GeV^2
-  const double me=.00051099892; // electron mass in GeV
-  const double me2=me*me;       // m_e^2 in GeV^2
-  const double hme2=me2/2;      // .5*m_e^2 in GeV^2
-  const double mmu=.105658369;  // mu meson mass in GeV
-  const double mmu2=mmu*mmu;    // m_mu^2 in GeV^2
-  const double hmmu2=mmu2/2;    // .5*m_mu^2 in GeV^2
-  const double mtau=1.777;      // tau meson mass in GeV
-  const double mtau2=mtau*mtau; // m_tau^2 in GeV^2
-  const double hmtau2=mtau2/2;  // .5*m_e^2 in GeV^2
-  const double mp=.93827203;    // proton mass in GeV
-  const double mn=.93956536;    // neutron mass in GeV
-  const double md=1.87561282;   // deuteron mass in GeV
-  const double MN=.931494043;   // Nucleon mass (inside nucleus) in GeV (atomic mass unit)
-  const double mp2=mp*mp;       // m_p^2 in GeV^2
-  const double MN2=MN*MN;       // M_N^2 in GeV^2
-  const double dMN=MN+MN;       // 2*M_N in GeV
-  const double EminE=me+me2/dMN;// Threshold for muon production
-  const double EminMu=mmu+mmu2/dMN;  // Threshold for muon production
-  const double EminTau=mmu+mmu2/dMN; // Threshold for muon production
-  //std::ofstream fileNuMuX("NuMuXQ2.out", std::ios::out);
-  //fileNuMuX.setf( std::ios::scientific, std::ios::floatfield );
-  // _____ Begin of Test Area
-  //Genfun::LogGamma logGamma;
-  //double n=4.9;
-		//double g=exp(logGamma(n));
-  //G4cout<<"Gamma("<<n<<") = "<<g<<G4endl;
-  // ^^^^^ End of Test Area
-  //
-  double f[5];                    // A working array
-  int    A=12;                    // Neucleus for which calculations should be done
-  double lEnuMin=std::log(EminMu);     // Log of Minimum energy of neutrino
-  double lEnuMax=std::log(300.);       // Log of Maximum energy of neutrino
-  int    nE=20;
-  double dlE=(lEnuMax-lEnuMin)/nE;
-  G4cout<<"Emin="<<EminMu<<",lEi="<<lEnuMin<<",lEa="<<lEnuMax<<",dlE="<<dlE<<G4endl;
-  for(double lEnu=lEnuMin+dlE/2; lEnu<lEnuMax; lEnu+=dlE)
-		{
-    double Enu=std::exp(lEnu);         // Energy of neutrino/anti-neutrino
-    double dEnu=Enu+Enu;          // doubled energy of nu/anu
-    double Enu2=Enu*Enu;          // squared energy of nu/anu
-    double ME=Enu*MN;             // M*E
-    double dME=ME+ME;             // 2*M*E
-    double DIStsig=1.;            // Total curent DIS cross-section to be integrated
-    double DISmsig=1.e20;         // Total remembered DIS cross-section
-    double dEMN=(dEnu+MN)*ME;
-    double MEm=ME-hmmu2;
-    double sqE=Enu*std::sqrt(MEm*MEm-mmu2*MN2);
-    double E2M=MN*Enu2-(Enu+MN)*hmmu2;
-    double ymax=(E2M+sqE)/dEMN;
-    double ymin=(E2M-sqE)/dEMN;
-    // The Q2min/max calculation is not necessary in this method
-    //double rmin=1.-ymin;
-    //double rhm2E=hmmu2/Enu2;
-    //double Q2min=(Enu2+Enu2)*(rmin-rhm2E-sqrt(rmin*rmin-rhm2E-rhm2E));
-    //double Q2max=dME*ymax;
-    int    nY=8;
-    //G4cout<<"*** E="<<Enu<<", N="<<nY<<", yi="<<ymin<<" < ya="<<ymax<<G4endl;
-    while(std::fabs(DIStsig-DISmsig)/DIStsig>reps)
-    {
-      DISmsig=DIStsig;
-      DIStsig=0.;
-      nY*=2;
-      double dY=(ymax-ymin)/nY;
-      for(double y=ymin+dY/2; y<ymax; y+=dY)
-				  {
-        double y2=y*y;
-        double DISxint=1.;        // Curent DIS x-integral
-        double DISmint=1.e20;     // Remembered DIS x-integral
-        double lXmin=std::log((std::sqrt(Enu2+mmu2)-Enu)/MN);
-        double lXmax=0.;          // Temporary, while QES is in DIS
-        double ydME=y*dME;
-        int    nX=8;
-        while(std::fabs(DISxint-DISmint)/DISxint>xeps)
-        {
-          DISmint=DISxint;
-          DISxint=0.;
-          nX*=2;
-          double dlX=(lXmax-lXmin)/nX;
-          for(double lX=lXmin+dlX/2; lX<lXmax; lX+=dlX)
-				      {
-            getFun(A, lX, ydME, f);
-            double dik=std::exp(lX)*ydME+MW2;
-            //DISxint+=(f[0]+f[0]+(y+y)*f[1]+y2*f[3])/dik/dik; // neutrino
-            DISxint+=(f[0]+f[0]+(y+y)*f[2]+y2*f[4])/dik/dik; // anti-neutrino
-            //G4cout<<f[0]<<","<<f[1]<<","<<f[2]<<","<<f[3]<<","<<f[4]<<G4endl;
-          }
-          DISxint*=dlX;
-          //G4cout<<"--- E="<<Enu<<" --- Q2="<<Q2<<" --- nX="<<nX<<", iX="<<DISxint
-          //      <<", mX="<<DISmint<<", rX="<<(DISxint-DISmint)/DISxint<<G4endl;
-        }
-        //G4cout<<"(E="<<Enu<<"), Q2="<<Q2<<", I="<<DISxint/dik/dik<<G4endl;
-        DIStsig+=DISxint;
-      }
-      DIStsig*=dY;
-      //G4cout<<"=== E="<<Enu<<" ===> nQ="<<nQ2<<", iQ="<<DIStsig<<", mQ="<<DISmsig
-						//      <<", rQ="<<(DIStsig-DISmsig)/DIStsig<<G4endl;
-    }
-    DIStsig*=sik*dMN; // Jakobian is 2ME => instead of 1/E must be *2M
-    G4cout<<"*** E="<<Enu<<",sig/E="<<DIStsig<<G4endl;
-		} // End of the Enery LOOP
-  // int np=0;
-  //for(int m=0; m<2; m++)
-  //{
-  //  //fileNuMuX<<"  static const G4double SH"<<n<<"[nH]={"<<G4endl<<"    ";
-  //  //G4cout<<"**** A_high="<<m<<G4endl;
-  //  np=0;
-  //  int nC=14;
-	 //  for(G4int en=0; en<nC; en++)
-	 //  {
-  //    //G4double sig=1.;
-  //    np++;
-  //    //if(np==7)           // Write by 7 number in brackets
-  //    //{
-  //    //  if(en==nC-1) fileNuMuX<<sig<<"};"<<G4endl;
-  //    //  else         fileNuMuX<<sig<<","<<G4endl<<"    ";
-	 //    //}
-  //    //else           fileNuMuX<<sig<<",";
-  //    //if(np==7) np=0;
-  //  } // End of the point LOOP
-  //} // End of the isotop LOOP
-  return EXIT_SUCCESS;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4PhotoNuclearCalculation.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4PhotoNuclearCalculation.cc	(revision 1197)
+++ 	(revision )
@@ -1,261 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: PhotoNuclearCalculation of gamma+A cross sections
-// according to the paper M.V.Kossov "Approximation of photonuclear
-// interaction cross sections" (EPJA,2002, be published). The cross
-// sections are calculated according to the exact complicated formulas
-// and tabulated for the fast response. The total energy range is
-// subdivided in three regions:
-// a) The GDR region (from the hadron production threshold to 106 MeV)
-//    covering 46 nuclei: H2,He4,Li6,Li7,Be9,C12,N14,N15,O16,F19,Na23,
-//    Mg24,Al27,Si28,S32,S34,(Ar40,Ca40),Fe54,Mn55,Fe56,Ni58,Co59,Cu,Zn
-//    Se76,Se82,Ag,Cd,Sn,I,Sm154,Gd156,Tb159,Ho165,Er168,Yb174,Hf178,Hf180,
-//    Ta181,W184,W186,Au197,Tl,Pb,Bi209,Th232,U235,U238,Pu239. For these
-//    isotops the approximation fits the existing measurements. For
-//    them the basic functions are calculated. For other isotops the
-//    approximation is interpolated linearly with A.
-// b) The resonance region (from 106 MeV to 50 GeV)
-//    covering 14 nuclei: H1,H2,He3,He4,Li6,Li7,Be,C,O,Al,Cu,Sn,Pb,U.
-//    For these isotops the melting of resonances in nuclear matter is
-//    measured and approximated. For them the basic functions are
-//    calculated. For other isotops the approximation is interpolated
-//    linearly with A.
-// c) The high energy region is an A-dependent function for E>100 GeV,
-//    taking into account nuclear shaddowing.
-// .....................................................
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-May-02
-// The lust update: M.V. Kossov, CERN/ITEP(Moscow) 17-June-02
-// 
-//=====================================================================
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-
-int main()
-{
-  const G4int mN=49;                // A#of GDR basic nuclei
-  const G4int mC=105;               // A#of Resonance points in E (each MeV from 2 to 106)
-  const G4double mA[mN]={
-	2.,4.,6.,7.,9.,12.,14.,15.,16.,19.,23.,24.,27.,28.,32.,34.,40.,54.,
-    55.,56.,58.7,58.9,63.5,65.4,76.,82.,107.9,112.4,118.7,126.9,154.,156.,159.,165.,
-    168.,174.,178.,180.,181.,184.,186.,197.,204.4,207.2,209.,232.,235.,
-    238.,239.};
-  const G4int nN=14;                // A#of Resonance basic nuclei
-  const G4int nC=224;               // A#of Resonance points in lnE
-  const G4double nA[nN]={1.,2.,3.,4.,6.,7.,9.,12.,16.,27.,63.5,118.7,207.2,238.};
-  const G4double r4[6]={0.,3.38,3.51,3.23,3.57,3.60};
-  const G4double t4[6]={0.,3.14,3.09,2.80,3.25,3.17};
-  const G4double r8[mN]={
-    0.00,0.00,0.00,2.57,3.26,3.52,3.51,3.51,3.49,3.05,3.20,3.25,3.40,3.42,3.38,3.50,3.51,
-    3.59,3.45,3.46,3.52,3.56,3.40,3.40,3.29,3.38,3.50,3.49,3.41,3.46,3.40,3.37,3.40,3.29,
-    3.37,3.21,3.45,3.45,3.39,3.36,3.36,3.39,3.47,3.40,3.36,3.31,3.30,3.37,3.36};
-  const G4double t8[mN]={
-    0.00,0.00,0.00,2.48,3.05,3.11,3.09,3.08,3.10,2.70,2.90,2.95,3.00,2.97,2.98,3.00,3.05,
-    2.94,2.93,2.86,2.99,3.01,2.85,2.84,2.72,2.76,2.81,2.77,2.72,2.75,2.78,2.74,2.72,2.72,
-    2.70,2.74,2.70,2.70,2.64,2.63,2.61,2.59,2.63,2.57,2.63,2.62,2.62,2.67,2.65};
-  const G4double iE=std::log(106.);      // Start logarithm energy
-  const G4double fE=std::log(50000.);    // Finish logarithm energy (each 2.75 percent)
-  const G4double dE=(fE-iE)/(nC-1); // Step in logarithm energy
-  std::ofstream fileGDR("GDR.out", std::ios::out);
-  fileGDR.setf( std::ios::scientific, std::ios::floatfield );
-  std::ofstream fileRes("Res.out", std::ios::out);
-  fileRes.setf( std::ios::scientific, std::ios::floatfield );
-  G4int np=0;
-  for(G4int m=0; m<mN; m++)
-  {
-    G4double A=mA[m];
-    G4double lnA=std::log(A);
-    G4double A2=A*A;
-    G4double red=1.+16/A2/A2;
-    G4double rho1=(3.2+.75*lnA)/red;
-    G4double tau1=(6.6-.5*lnA)/red;
-	if(A==2.)
-	{
-	  rho1=1.86;
-	  tau1=1.2;
-	}
-	G4double rho2=(4.+.125*lnA)/red;
-	G4double tau2=3.4/red;
-	if(A==6.)
-	{
-	  rho2=2.9;
-	  tau2=2.32;
-	}
-	else if(A==2.)
-	{
-	  rho2=2.11;
-	  tau2=1.5;
-	}
-	G4double rho4=3.8+.05*lnA;
-	G4double tau4=3.8-.25*lnA;
-	if(A<13.)
-	{
-	  rho4=r4[m];
-	  tau4=t4[m];
-	}
-	G4double rho8=r8[m];
-	G4double tau8=t8[m];
-    G4double tr=5.13-.00075*A; // Resonance threshold Position
-    //if(A==1.)tr=5.24;
-	G4double rr=11.;           // Resonance threshold Slope
-	if(A<2.5)rr=25.;
-	G4double dw=.056+lnA*(.03-.001*lnA); // Delta width
-	G4double du=5.82-.07/(1.+.003*A2);   // Delta position
-    G4double da=.39*A;                   // Delta amplitude
-    if(A==2.)da=.88;
-    //else if(A==1.) da=.55;
-    G4double ekin=1.;
-    fileGDR<<"  static const G4double SL"<<m<<"[nL]={"<<G4endl<<"    ";
-    G4cout<<"**** A_low="<<A<<G4endl;
-    np=0;
-	for(G4int em=0; em<mC; em++)
-	{
-      ekin+=1.;
-      G4double z=std::log(ekin);
-      G4double ds=z-du;
-	  G4double sigd=da/(1.+ds*ds/dw)/(1.+std::exp(rr*(tr-z))); // Delta contribution
-	  G4double g1=std::exp(rho1-z)/(1.+std::exp(3*(tau1-z)));
-	  G4double g2=std::exp(2*(rho2-z))/(1.+std::exp(6*(tau2-z)));
-      G4double g4=0.;
-      if(A>3.5)g4=std::exp(4*(rho4-z))/(1.+std::exp(12*(tau4-z)));
-      G4double g8=0.;
-      if(A>6.5)g8=std::exp(8*(rho8-z))/(1.+std::exp(24*(tau8-z)));
-      G4double sig=sigd+g1+g2+g4+g8;
-      np++;
-      if(np==7)
-      {
-        if(em==mC-1) fileGDR<<sig<<"};"<<G4endl;
-        else         fileGDR<<sig<<","<<G4endl<<"    ";
-	  }
-      else      fileGDR<<sig<<",";
-      if(np==7) np=0;
-    } // End of the point LOOP
-  } // End of the isotop LOOP
-  // ===== High Energy Calculations =======================
-  //G4double shd=1.0663-.0023*log(2.);   // HE PomShadowing(D)
-  np=0;
-  for(G4int n=0; n<nN; n++)
-  {
-    G4double A=nA[n];
-    G4double A2=A*A;
-    fileRes<<"  static const G4double SH"<<n<<"[nH]={"<<G4endl<<"    ";
-    G4cout<<"**** A_high="<<A<<G4endl;
-    G4double lnA=std::log(A);
-    G4double slA=std::sqrt(lnA);
-    G4double red=1.+16/A2/A2;
-    G4double rho1=(3.2+.75*lnA)/red;
-    G4double tau1=(6.6-.5*lnA)/red;
-	if(A==2.)
-	{
-	  rho1=1.86;
-	  tau1=1.2;
-	}
-	G4double rho2=(4.+.125*lnA)/red;
-	G4double tau2=3.4/red;
-	if(A==6.)
-	{
-	  rho2=2.9;
-	  tau2=2.32;
-	}
-	else if(A==2.)
-	{
-	  rho2=2.11;
-	  tau2=1.5;
-	}
-    G4double rho4=6.27;
-    G4double tau4=7.25;
-    G4double rho8=6.66;
-    G4double tau8=6.90;
-    if(A==2.)
-	{
-     rho4=6.2;
-     tau4=7.1;
-     rho8=6.62;
-     tau8=6.91;
-    }
-    G4double tr=5.13-.00075*A; // Resonance threshold Position
-    if(A==1.)tr=5.24;
-	G4double rr=11.;           // Resonance threshold Slope
-	if(A<2.5)rr=25.;
-	// Delta
-	G4double dw=.056+lnA*(.03-.001*lnA); // Delta width
-	G4double du=5.82-.07/(1.+.003*A2);   // Delta position
-    G4double da=.39*A;                   // Delta amplitude
-    if(A==2.)da=.88;
-    else if(A==1.) da=.55;
-	// High Resonance
-	G4double hw=.045+.04*slA*slA*slA;    // HighR width
-	G4double hu=6.496+.042*lnA;          // HighR position
-    if(A==1.)hu=6.57;
-    else if(A==2.)hu=6.575;
-    G4double ha=.223;                    // HighR amplitude
-    if(A>2.5)ha=.16*A/slA;
-    else if(A==2.) ha=.348;
-    G4double sp=A*(1.-.072*lnA);         // HE TotShadowing
-    G4double sh=1.0663-.0023*lnA;        // HE PomShadowing
-    if(A==1.)sh=1.07;
-	// -- Loop over energies ---
-    G4double z=iE-dE;
-    np=0;
-	for(G4int en=0; en<nC; en++)
-	{
-      z+=dE;
-      G4double ds=z-du;
-      G4double fr=1.+std::exp(rr*(tr-z));
-	  G4double sigd=da/(1.+ds*ds/dw); // Delta contribution
-      G4double hs=z-hu;
-	  G4double sigh=ha/(1.+hs*hs/hw); // HighR contribution
-	  G4double g1=0.;
-      if(A>1.5)g1=std::exp(rho1-z)/(1.+std::exp(3*(tau1-z)));
-	  G4double g2=0.;
-      if(A>1.5)g2=std::exp(2*(rho2-z))/(1.+std::exp(6*(tau2-z)));
-      G4double g4=0.;
-      if(A<2.5)g4=std::exp(4*(rho4-z))/(1.+std::exp(12*(tau4-z)));
-      G4double g8=0.;
-      if(A<2.5)g8=std::exp(8*(rho8-z))/(1.+std::exp(24*(tau8-z)));
-      G4double hp=.0375*(z-16.5)+sh*std::exp(-.11*z);
-      G4double fp=hp/(1.+std::exp(4*(7.-z)));
-      G4double sig=(sigd+sigh)/fr+g1+g2+g4+g8+sp*fp;
-      np++;
-      if(np==7)
-      {
-        if(en==nC-1) fileRes<<sig<<"};"<<G4endl;
-        else         fileRes<<sig<<","<<G4endl<<"    ";
-	  }
-      else      fileRes<<sig<<",";
-      if(np==7) np=0;
-      //if(en==nC)
-	  //{
-      //  G4double fsig=sp*(.0375*(z-16.5)+shd*exp(-.11*z));
-      //  fileRes<<">>> fun="<<fsig<<G4endl;
-	  //}
-    } // End of the point LOOP
-  } // End of the isotop LOOP
-  return EXIT_SUCCESS;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4PhotoNuclearCrossSectionTest.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4PhotoNuclearCrossSectionTest.cc	(revision 1197)
+++ 	(revision )
@@ -1,84 +1,0 @@
-//
-// ********************************************************************
-// * 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 "G4ios.hh"
-#include "G4Gamma.hh"
-#include "G4Element.hh"
-#include "G4PhotoNuclearCrossSection.hh"
-
-int main()
-{
-  G4PhotoNuclearCrossSection gammaACrossSection;
-  const G4int nN=6;                          // A#of plots (nuclei in the test)
-  const G4int nC=227;                        // A#of points in the plots (energy values)
-  ofstream fileH1("h1.out", ios::out);
-  fileH1.setf( ios::scientific, ios::floatfield );
-  ofstream fileH2("h2.out", ios::out);
-  fileH2.setf( ios::scientific, ios::floatfield );
-  ofstream fileC12("c12.out", ios::out);
-  fileC12.setf( ios::scientific, ios::floatfield );
-  ofstream fileAl27("al27.out", ios::out);
-  fileAl27.setf( ios::scientific, ios::floatfield );
-  ofstream fileCu("cu.out", ios::out);
-  fileCu.setf( ios::scientific, ios::floatfield );
-  ofstream filePb("pb.out", ios::out);
-  filePb.setf( ios::scientific, ios::floatfield );
-  G4double low[nN]={137. , 2.22, 12.5 , 8.3 , 7.  , 7.35 };
-  G4double high[nN]={4.e7, 4.e7, 4.e7, 4.e7, 4.e7, 4.e7};
-  G4Element* theElement[nN]={new G4Element("Hydrogen", "H", 1, 1.*g/mole),
-							 new G4Element("Deuterium", "D", 1, 2.*g/mole),
-							 new G4Element("Carbon", "C", 6, 12.*g/mole),
-							 new G4Element("Aluminum", "Al", 13, 27.*g/mole),
-							 new G4Element("Copper", "Cu", 29, 64.*g/mole),
-							 new G4Element("Lead", "Pb", 82, 208.*g/mole)};
-  G4ParticleDefinition* theParticleDefinition = G4Gamma::GammaDefinition();
-  //G4VProcess* theProcess = new G4PhotonInelasticProcess("Inelastic"); // @@ Make it?! 
-  G4DynamicParticle* theDynamicParticle;
-  G4double sig=0.;
-  for(G4int n=0; n<6; n++)
-  {
-	G4double lekin = std::log(low[n]);
-	G4double dlekin= std::exp((std::log(std::log(high[n]))-std::log(lekin))/(nC-1));
-	lekin /= dlekin;
-	//G4cout<<"n="<<n<<", low="<<low[n]<<", high="<<high[n]<<", np="<<nC<<", d="<<dlekin<<G4endl;
-	for(G4int ll=0; ll<nC; ll++)
-	{
-	  lekin*=dlekin;
-      G4double ekin=std::exp(lekin);
-	  theDynamicParticle = new G4DynamicParticle(theParticleDefinition,
-												 G4ParticleMomentum(1.,0.,0.), ekin*MeV);
-	  sig = gammaACrossSection.GetCrossSection(theDynamicParticle,theElement[n])/millibarn;
-	  delete theDynamicParticle;
-      //G4cout<<"n="<<n<<", e="<<ekin<<", sigma="<<sig<<G4endl;
-      if(!n) fileH1<<ekin<<" "<<sig<<G4endl;
-      else if(n==1) fileH2<<ekin<<" "<<sig<<G4endl;
-      else if(n==2) fileC12<<ekin<<" "<<sig<<G4endl;
-      else if(n==3) fileAl27<<ekin<<" "<<sig<<G4endl;
-      else if(n==4) fileCu<<ekin<<" "<<sig<<G4endl;
-      else if(n==5) filePb<<ekin<<" "<<sig<<G4endl;
-    } // End of the point LOOP
-  } // End of the plot LOOP
-  return EXIT_SUCCESS;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4PolinomTabulation.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4PolinomTabulation.cc	(revision 1197)
+++ 	(revision )
@@ -1,204 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: NuMu DIS(Q2) fixed step integration
-// .....................................................
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-2005
-// 
-//=====================================================================
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-//#include <CLHEP/GenericFunctions/LogGamma.hh>
-
-// Solution for randomization of the high order polinoms is tabulated
-
-double poli(double x, int n) // f=n*x^(n-1)-(n-1)*x^n=R(0-1), n>2, as n=2 has analSolution
-{
-  double p=x;
-  int n1=n-1;
-  for(int i=1; i<n1; i++) p*=x;
-  return p*(n-n1*x);
-}
-
-double dpoli(double x, int n) // df=n*(n-1)*x^(n-2)-(n-1)*n*x^(n-1), n>2 (n=2 has analSol)
-{
-  double p=x;
-  int n1=n-1;
-  if(n>3) for(int i=2; i<n1; i++) p*=x;
-  return p*n*n1*(1.-x);
-}
-// One can define for tabulation more similar functions
-
-int main()
-{
-  const double eps=.0000001;      // relative accuracy of the integral calculation
-  //           =============
-  int nSub=10;
-  double dSub=1./nSub;
-  for(int n=3; n<12; n++)
-		{
-    G4cout<<"n="<<n<<G4endl;
-    G4double s=0.;
-    for(int i=1; i<nSub; i++)
-    {
-      s+=dSub;
-      G4double r=std::pow(s,(n-1.5)/1.5);
-      G4double x=0.5;
-		    if(n==3)
-		    {
-        if    (r==0.5) x=0.5;
-        else if(r<0.5) x=std::sqrt(r+r)*(.5+.1579*(r-.5));
-        else           x=1.-std::sqrt(2.-r-r)*(.5+.1579*(.5-r));
-      }
-      else
-		    {
-        G4int n1=n-1;
-        G4double r1=n1;
-        G4double r2=r1-1.;
-        G4double rr=r2/r1;
-        G4double rp=std::pow(rr,n1);
-        G4double p2=rp+rp;
-        if  (r==rr)  x=p2;
-        else
-				    {
-          if(r<rr)
-          {
-								    G4double pr=0.;
-								    G4double pra=0.;
-            if(n>7)
-								    {
-              if(n>9)
-								      {
-                if(n>10)                         // >10(11)
-                {
-                  pr=.614/std::pow((n+1+1.25),.75);
-                  pra=.915/std::pow((n+1+6.7),1.75);
-                }
-												    else                             // 10
-                {
-                  pr=.09945;
-                  pra=.00667;
-                }
-              }
-              else
-								      {
-                if(n>8)                          // 9
-                {
-                  pr=.1064;
-                  pra=.00741;
-                }
-												    else                             // 8
-                {
-                  pr=.11425;
-                  pra=.00828;
-                }
-              }
-            }
-            else
-								    {
-              if(n>5)
-								      {
-                if(n>6)                          // 7
-                {
-                  pr=.12347;
-                  pra=.00926;
-                }
-												    else                             // 6
-                {
-                  pr=.13405;
-                  pra=.01027;
-                }
-              }
-              else
-								      {
-                if(n>4)                          // 5
-                {
-                  pr=.1454;
-                  pra=.01112;
-                }
-												    else                             // 4
-                {
-                  pr=.15765;
-                  pra=.00965;
-                }
-              }
-            }
-            x=std::pow((r/p2),(1.-rr+pra))*(rr+pr*(r-p2));
-          }
-          else
-          {
-								    G4double sr=0.;
-            if(n>7)
-								    {
-              if(n>9)
-								      {
-                if(n>10) sr=.86/(n+1+1.05);      // >10(11)
-												    else     sr=.0774;               // 10
-              }
-              else
-								      {
-                if(n>8) sr=.0849;                // 9
-												    else    sr=.0938;                // 8
-              }
-            }
-            else
-								    {
-              if(n>5)
-								      {
-                if(n>6) sr=.1047;                // 7
-												    else    sr=.1179;                // 6
-              }
-              else
-								      {
-                if(n>7) sr=.1339;                // 5
-												    else    sr=.15135;               // 4
-              }
-            }
-            x=1.-std::sqrt((1.-r)/(1.-p2))*(1.-rr+sr*(p2-r));
-          }
-        }
-      }
-      G4double dx=x;
-      G4double f=poli(x,n)-r;
-      G4int it=0;
-      while(std::fabs(f/r)>eps)
-						{
-        it++;
-        G4double df=dpoli(x,n);
-        //G4cout<<"n="<<n<<", r="<<r<<", f="<<f<<", d="<<df<<", x="<<x<<", i="<<it<<G4endl;
-        x-=f/df;
-        f=poli(x,n)-r;
-      }
-      dx=std::fabs(dx-x);
-      G4double d=std::fabs(f/r);
-      G4cout<<"n="<<n<<",r="<<r<<", Final: f="<<d<<",x="<<x<<",d="<<dx<<",it="<<it<<G4endl;
-    } // End of loop over r
-  } // End of loop over n
-  return 0;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4SurfaceCalculation.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/G4SurfaceCalculation.cc	(revision 1197)
+++ 	(revision )
@@ -1,125 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// G4 Tools program: NuMu DIS(Q2) fixed step integration
-// .....................................................
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-2005
-// 
-//=====================================================================
-#include "globals.hh"
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "G4ios.hh"
-#include "Randomize.hh"
-#include "G4Timer.hh"
-#include "time.h"
-
-// All calculations have been done for C12 nucleus
-
-double anuX(double E, double r, double p) // (E is in GeV, r=Q2/Q2max, p=1+anuE(E))
-{
-		double	E2=E*E;
-  double y=p-r;
-  double p3=(13.88+.9373*(1.+.000033*E2)*std::sqrt(E))/(1.+(10.12+1.532/E2)/E);
-  return std::pow(y,6)*(r+p3)/(p3*r+1.);
-}
-
-int main()
-{
-  G4double PI=3.14159265;        // \pi
-  G4double A=.5;                 // half side of the tested cube
-  G4double R=.5;                 // radius of the tested sphere
-  G4double B=1.;                 // half width of the mother cube
-  G4double S=6*(B+B)*(B+B);      // 6 sides 2x2
-  G4double SC=6*(A+A)*(A+A);     // The target surface of the test cube
-  G4double SS=4*PI*R*R;          // The target surface of the test sphere
-  G4double c=0.;                 // summ for the cube							
-  G4double s=0.;                 // summ for the sphere					
-  G4double m=0.;                 // summ for the mother cube
-  G4double cf=0.;                // reversed length summ for the cube							
-  G4double sf=0.;                // reversed length summ for the sphere					
-  G4double mf=0.;                // reversed length summ for the mother cube
-  G4double cr=0.;                // length summ for the cube							
-  G4double sr=0.;                // length summ for the sphere					
-  G4double mr=0.;                // length summ for the mother cube
-  G4double cm=B;                 // min length for the cube							
-  G4double sm=B;                 // min length for the sphere					
-  G4double mm=B;                 // min length for the mother cube
-  G4int nEv=10000000;            // calculation statistics
-  G4double f=.99;                // scale factor
-  G4double Af=A*f;               // Scaled A
-  G4double Rf=R*f;               // Scaled R
-  G4double Bf=B*f;               // Scaled B
-  G4Timer* timer = new G4Timer();
-  timer->Start();
-  for(G4int i=0; i<nEv; i++)
-		{
-    // Randomize coordinates within (+/-1,+/-1,+/-1) cube (S=6+4=24)
-    G4double x=G4UniformRand();
-    x=B*(1.-x-x);                    // Can be x=B*x, but B=1 is a hilf width of mother cube
-    G4double y=G4UniformRand();
-    y=B*(1.-y-y);
-    G4double z=G4UniformRand();
-    z=B*(1.-z-z);
-    G4double r2=x*x+y*y+z*z;
-    G4double r=std::sqrt(r2);
-    G4double w=1./r;
-    G4double ax=std::fabs(x);
-    G4double ay=std::fabs(y);
-    G4double az=std::fabs(z);
-    if(r<R && r>Rf)
-    {
-      s+=1.;
-      sf+=w;
-      sr+=r;
-      if(r<sm) sm=r;
-    }
-    if(ax<A && ay<A && az<A && (ax>Af || ay>Af || az>Af))
-    {
-      c+=1.;
-      cf+=w;
-      cr+=r;
-      if(r<cm) cm=r;
-    }
-    if(ax>Bf || ay>Bf || az>Bf)
-    {
-      m+=1.;
-      mf+=w;
-      mr+=r;
-      if(r<mm) mm=r;
-    }
-  }
-  G4double N=S*mm/m;
-  //G4double N=S*m*m/mf;
-  //G4double N=S/mf;
-  timer->Stop();
-  G4cout<<"SurfaceCalc: nE="<<nEv<<", time="<<timer->GetUserElapsed()<<" s, f="<<f<<G4endl;
-  delete timer;
-  G4cout<<"SurfaceCalculation: Cube="<<N*c/cm/SC<<", Sphere="<<N*s/sm/SS<<G4endl;
-  //G4cout<<"SurfaceCalculation: Cube="<<N*cf/SC<<", Sphere="<<N*sf/SS<<G4endl;
-  //G4cout<<"SurfaceCalculation: Cube="<<N*cr/c/c/SC<<", Sphere="<<N*sr/s/s/SS<<G4endl;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/GNUmakefile
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/calcul/GNUmakefile	(revision 1197)
+++ 	(revision )
@@ -1,57 +1,0 @@
-# $Id: GNUmakefile,v 1.2 2006/06/02 12:37:30 mkossov Exp $
-# ----------------------------------------------------------------
-# Makes the calculation program in environment variable G4TARGET.
-# ----------------------------------------------------------------
-
-ifndef G4TARGET
-  G4TARGET := $(TESTTARGET)
-endif
-
-ifndef G4INSTALL
-  G4INSTALL = ../../../../..
-endif
-
-G4EXEC_BUILD = true
-
-include $(G4INSTALL)/config/architecture.gmk
-
-# Override some variables for binmake.gmk.
-#
-INCFLAGS := \
-            -I$(G4BASE)/global/management/include \
-            -I$(G4BASE)/global/HEPRandom/include \
-            -I$(G4BASE)/global/HEPGeometry/include \
-            -I$(G4BASE)/geometry/management/include \
-            -I$(G4BASE)/geometry/volumes/include \
-            -I$(G4BASE)/geometry/magneticfield/include \
-            -I$(G4BASE)/geometry/solids/CSG/include \
-            -I$(G4BASE)/event/include \
-            -I$(G4BASE)/graphics_reps/include \
-            -I$(G4BASE)/track/include \
-            -I$(G4BASE)/tracking/include \
-            -I$(G4BASE)/processes/management/include \
-            -I$(G4BASE)/materials/include \
-            -I$(G4BASE)/particles/management/include \
-            -I$(G4BASE)/particles/bosons/include \
-            -I$(G4BASE)/particles/leptons/include \
-            -I$(G4BASE)/particles/hadrons/mesons/include \
-            -I$(G4BASE)/particles/hadrons/barions/include \
-            -I$(G4BASE)/particles/hadrons/ions/include \
-            -I$(G4BASE)/processes/general/include \
-            -I$(G4BASE)/processes/management/include \
-            -I$(G4BASE)/processes/hadronic/include \
-            -I$(G4BASE)/processes/hadronic/processes/include \
-            -I$(G4BASE)/processes/hadronic/management/include \
-            -I$(G4BASE)/processes/hadronic/util/include \
-            -I$(G4BASE)/processes/hadronic/cross_sections/include \
-            -I$(G4BASE)/processes/hadronic/models/neutron_hp/include \
-            -I$(G4BASE)/processes/hadronic/models/chiral_inv_phase_space/body/include \
-            -I$(G4BASE)/processes/electromagnetic/standard/include \
-            -I$(G4BASE)/processes/electromagnetic/muons/include \
-            -I$(G4BASE)/processes/electromagnetic/utils/include \
-            -I$(G4BASE)/processes/electromagnetic/xrays/include \
-            -I$(G4BASE)/run/include \
-            -I$(G4BASE)/digits+hits/include \
-            -I$(G4BASE)/intercoms/include
-
-include $(G4INSTALL)/config/binmake.gmk
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuANuNuclearCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuANuNuclearCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,109 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QANuANuNuclearCrossSection.hh,v 1.2 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QANuANuNuclearCrossSection -- header file
-// M.V. Kossov, CERN-ITEP(Moscow), 20-DEC-2005
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 20-DEC-2005
-//
-// Short description: this G4 singletone class calculates (an-nu,an-nu)A cross section
-// (Energy limit: E<320GeV->badExtrapolation) for a particular isotope (proportional to A)
-// ****************************************************************************************
-
-#ifndef G4QANuANuNuclearCrossSection_h
-#define G4QANuANuNuclearCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include <vector>
-#include "Randomize.hh"
-#include "G4MuonPlus.hh"
-#include "G4MuonMinus.hh"
-#include "G4VQCrossSection.hh"
-
-class G4QANuANuNuclearCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QANuANuNuclearCrossSection()  {};
-
-public:
-
-  ~G4QANuANuNuclearCrossSection()  {};
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=-14);
-
-  // At present momentum (pMom) must be in GeV (@@ Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                                                             G4int pPDG=0);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z,
-                                                               G4int N, G4double Momentum);
-  G4int    GetExchangePDGCode();
-
-  G4double GetDirectPart(G4double Q2);
-
-  G4double GetNPartons(G4double Q2);
-
-  G4double GetQEL_ExchangeQ2();
-
-  G4double GetNQE_ExchangeQ2();
-
-  // Get static members
-  G4double GetLastTOTCS() {return lastSig;}
-  G4double GetLastQELCS() {return lastQEL;}
-
-private:
-  G4int    GetFunctions(G4int z, G4int n, G4double* t, G4double* q, G4double* e);
-  G4double HighEnergyTX(G4double lE);
-  G4double HighEnergyQE(G4double lE);
-
-// Body
-private:
-  static G4bool    onlyCS;   // flag to calculate only CS (not QE)
-  static G4double  lastSig;  // Last calculated total cross section
-  static G4double  lastQEL;  // Last calculated quasi-elastic cross section
-  static G4int     lastL;    // Last bin used in the cross section TheLastBin
-  static G4double  lastE;    // Last energy used in the cross section Energy
-  static G4double* lastEN;   // Pointer to the last array of the energy axis
-  static G4double* lastTX;   // Pointer to the last array of the total CS function
-  static G4double* lastQE;   // Pointer to the last array of the QE CS function
-  static G4int     lastPDG;  // The last projectile PDG
-  static G4int     lastN;    // The last N of calculated nucleus
-  static G4int     lastZ;    // The last Z of calculated nucleus
-  static G4double  lastP;    // Last used in the cross section Momentum
-  static G4double  lastTH;   // Last value of the Momentum Threshold
-  static G4double  lastCS;   // Last value of the Cross Section
-  static G4int     lastI;    // The last position in the DAMDB
-};
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuENuclearCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuENuclearCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,109 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QANuENuclearCrossSection.hh,v 1.2 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QANuENuclearCrossSection -- header file
-// M.V. Kossov, CERN-ITEP(Moscow), 20-SEP-2007
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 20-SEP-2007
-//
-// Short description: this G4 singletone class calculates (anu_e,e+) Nuclear cross section
-// (Energy limit: E<320GeV->badExtrapolation) for a particular isotope (proportional to A)
-// ****************************************************************************************
-
-#ifndef G4QANuENuclearCrossSection_h
-#define G4QANuENuclearCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include <vector>
-#include "Randomize.hh"
-#include "G4MuonPlus.hh"
-#include "G4MuonMinus.hh"
-#include "G4VQCrossSection.hh"
-
-class G4QANuENuclearCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QANuENuclearCrossSection()  {};
-
-public:
-
-  ~G4QANuENuclearCrossSection()  {};
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=-12);
-
-  // At present momentum (pMom) must be in GeV (@@ Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                                                             G4int pPDG=0);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z,
-                                                               G4int N, G4double Momentum);
-  G4int    GetExchangePDGCode();
-
-  G4double GetDirectPart(G4double Q2);
-
-  G4double GetNPartons(G4double Q2);
-
-  G4double GetQEL_ExchangeQ2();
-
-  G4double GetNQE_ExchangeQ2();
-
-  // Get static members
-  G4double GetLastTOTCS() {return lastSig;}
-  G4double GetLastQELCS() {return lastQEL;}
-
-private:
-  G4int    GetFunctions(G4int z, G4int n, G4double* t, G4double* q, G4double* e);
-  G4double HighEnergyTX(G4double lE);
-  G4double HighEnergyQE(G4double lE);
-
-// Body
-private:
-  static G4bool    onlyCS;   // flag to calculate only CS (not QE)
-  static G4double  lastSig;  // Last calculated total cross section
-  static G4double  lastQEL;  // Last calculated quasi-elastic cross section
-  static G4int     lastL;    // Last bin used in the cross section TheLastBin
-  static G4double  lastE;    // Last energy used in the cross section Energy
-  static G4double* lastEN;   // Pointer to the last array of the energy axis
-  static G4double* lastTX;   // Pointer to the last array of the total CS function
-  static G4double* lastQE;   // Pointer to the last array of the QE CS function
-  static G4int     lastPDG;  // The last projectile PDG
-  static G4int     lastN;    // The last N of calculated nucleus
-  static G4int     lastZ;    // The last Z of calculated nucleus
-  static G4double  lastP;    // Last used in the cross section Momentum
-  static G4double  lastTH;   // Last value of the Momentum Threshold
-  static G4double  lastCS;   // Last value of the Cross Section
-  static G4int     lastI;    // The last position in the DAMDB
-};
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuMuNuclearCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuMuNuclearCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,109 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QANuMuNuclearCrossSection.hh,v 1.7 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QANuMuNuclearCrossSection -- header file for (anu_mu,mu+)A XS
-// M.V. Kossov, CERN-ITEP(Moscow), 20-DEC-2005
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 20-DEC-2005
-//
-// Short description: this G4 singletone class calculates (nu_mu,mu) Nuclear cross section
-// (Energy limit: E<320GeV->badExtrapolation) for a particular isotope (proportional to A)
-// ****************************************************************************************
-
-#ifndef G4QANuMuNuclearCrossSection_h
-#define G4QANuMuNuclearCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include <vector>
-#include "Randomize.hh"
-#include "G4MuonPlus.hh"
-#include "G4MuonMinus.hh"
-#include "G4VQCrossSection.hh"
-
-class G4QANuMuNuclearCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QANuMuNuclearCrossSection()  {};
-
-public:
-
-  ~G4QANuMuNuclearCrossSection()  {};
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=-14);
-
-  // At present momentum (pMom) must be in GeV (@@ Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                                                             G4int pPDG=0);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z,
-                                                               G4int N, G4double Momentum);
-  G4int    GetExchangePDGCode();
-
-  G4double GetDirectPart(G4double Q2);
-
-  G4double GetNPartons(G4double Q2);
-
-  G4double GetQEL_ExchangeQ2();
-
-  G4double GetNQE_ExchangeQ2();
-
-  // Get static members
-  G4double GetLastTOTCS() {return lastSig;}
-  G4double GetLastQELCS() {return lastQEL;}
-
-private:
-  G4int    GetFunctions(G4int z, G4int n, G4double* t, G4double* q, G4double* e);
-  G4double HighEnergyTX(G4double lE);
-  G4double HighEnergyQE(G4double lE);
-
-// Body
-private:
-  static G4bool    onlyCS;   // flag to calculate only CS (not QE)
-  static G4double  lastSig;  // Last calculated total cross section
-  static G4double  lastQEL;  // Last calculated quasi-elastic cross section
-  static G4int     lastL;    // Last bin used in the cross section TheLastBin
-  static G4double  lastE;    // Last energy used in the cross section Energy
-  static G4double* lastEN;   // Pointer to the last array of the energy axis
-  static G4double* lastTX;   // Pointer to the last array of the total CS function
-  static G4double* lastQE;   // Pointer to the last array of the QE CS function
-  static G4int     lastPDG;  // The last projectile PDG
-  static G4int     lastN;    // The last N of calculated nucleus
-  static G4int     lastZ;    // The last Z of calculated nucleus
-  static G4double  lastP;    // Last used in the cross section Momentum
-  static G4double  lastTH;   // Last value of the Momentum Threshold
-  static G4double  lastCS;   // Last value of the Cross Section
-  static G4int     lastI;    // The last position in the DAMDB
-};
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QAtomicElectronScattering.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QAtomicElectronScattering.hh	(revision 1197)
+++ 	(revision )
@@ -1,160 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QAtomicElectronScattering.hh,v 1.3 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QAtomicElectronScattering header ----------------
-//                 by Mikhail Kossov, December 2003.
-// Header of G4QAtomicElectronScattering class of the CHIPS Simulation Branch in GEANT4
-// -------------------------------------------------------------------------------
-// This is a unique CHIPS class for the Nuclear Interactions with Atomic electrons.
-// -------------------------------------------------------------------------------
-// ****************************************************************************************
-// ********* This HEADER is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short description: CHIPS is re3sponsible for photo- and lepto-nuclear
-// reactions. In particular for thr electron-nuclear reactions. At High
-// Energies the nucleons (including neutrons) and nuclear fragments can
-// interact with atomic electrons (reversed electro-nuclear reaction -
-// antilab), while they are missing the nucler-nuclear (ion-ion) reac-
-// tions. This nucleo-electron process comes "for-free" in CHIPS, as the
-// cross-sections of the interaction is known from the electro-nuclear
-// reactions. The only problem is to move the output from the antilab to
-// lab system. This is what this process is aiming to do. It can be used
-// for the ion transport in Geant4.
-// ---------------------------------------------------------------------
-
-#ifndef G4QAtomicElectronScattering_hh
-#define G4QAtomicElectronScattering_hh
-
-// GEANT4 Headers
-#include "globals.hh"
-#include "G4ios.hh"
-#include "Randomize.hh" 
-#include "G4VDiscreteProcess.hh"
-#include "G4Track.hh"
-#include "G4Step.hh"
-#include "G4ParticleTypes.hh"
-#include "G4VParticleChange.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4DynamicParticle.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include "G4ThreeVector.hh"
-#include "G4LorentzVector.hh"
-
-// CHIPS Headers
-#include "G4QEnvironment.hh"
-#include "G4VQCrossSection.hh"
-#include "G4QIsotope.hh"
-#include "G4QElectronNuclearCrossSection.hh"
-#include "G4QPhotonNuclearCrossSection.hh"
-#include "G4QMuonNuclearCrossSection.hh"
-#include "G4QTauNuclearCrossSection.hh"
-#include "G4QuasmonString.hh"
-#include "G4QPDGToG4Particle.hh"
-//<vector> is included in G4QIsotope.hh
-//#include <vector>
-
-class G4QAtomicElectronScattering : public G4VDiscreteProcess
-{
-public:
-
-  // Constructor
-  G4QAtomicElectronScattering(const G4String& processName ="CHIPSNuclearCollision");
-
-  // Destructor
-  ~G4QAtomicElectronScattering();
-
-  G4bool IsApplicable(const G4ParticleDefinition& particle);
-
-  G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize,
-                           G4ForceCondition* condition);
-  // It returns the MeanFreePath of the process for the current track :
-  // (energy, material)
-  // The previousStepSize and G4ForceCondition* are not used.
-  // This function overloads a virtual function of the base class.        
-  // It is invoked by the ProcessManager of the Particle.
- 
-
-  G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); 
-  // It computes the final state of the process (at end of step),
-  // returned as a ParticleChange object.       
-  // This function overloads a virtual function of the base class.
-  // It is invoked by the ProcessManager of the Particle.
-
-
-  G4LorentzVector GetEnegryMomentumConservation();
-
-  G4int GetNumberOfNeutronsInTarget();
-
-  // Static functions
-  static void SetManual();
-  static void SetStandard();
-  static void SetParameters(G4double temper=180., G4double ssin2g=.1, G4double etaetap=.3,
-                            G4double fN=0., G4double fD=0., G4double cP=1., G4double mR=1.,
-                            G4int npCHIPSWorld=234, G4double solAn=.5, G4bool efFlag=false,
-                            G4double piTh=141.4,G4double mpi2=20000.,G4double dinum=1880.);
-
-private:
-
-  // Hide assignment operator as private 
-  G4QAtomicElectronScattering& operator=(const G4QAtomicElectronScattering &right);
-
-  // Copy constructor
-  G4QAtomicElectronScattering(const G4QAtomicElectronScattering&);
-
-  // BODY
-  // Static Parameters
-  static G4bool   manualFlag;  // If false then standard parameters are used
-  static G4int    nPartCWorld; // The#of particles for hadronization (limit of A of fragm.)
-  // -> Parameters of the G4Quasmon class:
-  static G4double Temperature; // Quasmon Temperature
-  static G4double SSin2Gluons; // Percent of ssbar sea in a constituen gluon
-  static G4double EtaEtaprime; // Part of eta-prime in all etas
-  // -> Parameters of the G4QNucleus class:
-  static G4double freeNuc;     // probability of the quasi-free baryon on surface
-  static G4double freeDib;     // probability of the quasi-free dibaryon on surface
-  static G4double clustProb;   // clusterization probability in dense region
-  static G4double mediRatio;   // relative vacuum hadronization probability
-  // -> Parameters of the G4QEnvironment class:
-  static G4bool   EnergyFlux;  // Flag for Energy Flux use instead of Multy Quasmon
-  static G4double SolidAngle;  // Part of Solid Angle to capture secondaries(@@A-dep)
-  static G4double PiPrThresh;  // Pion Production Threshold for gammas
-  static G4double M2ShiftVir;  // Shift for M2=-Q2=m_pi^2 of the virtual gamma
-  static G4double DiNuclMass;  // Double Nucleon Mass for virtual normalization
-  //
-  // Working parameters
-  G4VQCrossSection* theCS;
-  G4LorentzVector EnMomConservation;                  // Residual of Energy/Momentum Cons.
-  G4int nOfNeutrons;                                  // #of neutrons in the target nucleus
-
-  // Modifires for the reaction
-  G4double Time;                                      // Time shift of the capture reaction
-  G4double EnergyDeposition;                          // Energy deposited in the reaction
-};
-#endif
-
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCaptureAtRest.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCaptureAtRest.hh	(revision 1197)
+++ 	(revision )
@@ -1,192 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QCaptureAtRest.hh,v 1.7 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QCaptureAtRest header ----------------
-//                 by Mikhail Kossov, December 2003.
-// Header of G4QCaptureAtRest class of the CHIPS Simulation Branch in GEANT4
-// -------------------------------------------------------------------------------
-// This is a unique CHIPS class for the Nuclear Capture At Rest Prosesses.
-// -------------------------------------------------------------------------------
-// At present (Dec.03) only pi-, K- and antiNucleon capture is implemented, which
-// are the most crucial for the in matter simulation. The hyperon capture (Sigma-,
-// Xi-, Omega-, antiSigma+) is implemented, but not tested and it is not clear how
-// frequently this kind of interaction takes place in the simulation of the hadronic
-// showers. The antiNeutron Capture At Rest is implemented by this G4QCaptureAtRest
-// class, but it is not clear how the anti-neutrons are stopped in Geant4 tracking.
-// It can be stopped only by interactions with electrons, as the annihilation
-// cross section is huge and any interaction with nucleus results in annihilation.
-// --> The mu-&tau- Capture At Rest (mu-,nu)&(mu-,nu) are weak processes, which must
-// be simulated together with the reversed Betha decay (e-,nu). While mu- capture is
-// similar to the pi- capture from the nuclear fragmentation point of view (the energy
-// scale is shrinked mecause m_mu<m_pi and a part of energy is lost because of the
-// neutrino radiation), the time scale of the mu- capture process is not clear,
-// but it is clear, that it is well delayed. By this reason the mu- capture is not
-// included in the G4QCaptureAtRest and must be implemented in the "LongLivingDecay"
-// branch of simulation, which includes excited states of nuclei and short living
-// isotopes. On the "Fast Simulation" Level all radioactiv isotopes, long living
-// nuclear excitations, mu-atoms etc, which can be important for the background
-// signals, must be collected in the continuous database and simulated separately.
-// --> CHIPS is SU(3) event generator, so it does not include reactions with the
-// heavy (c,b,t) quarks involved such as tau- or antiDs-, which can be simulated
-// only by SU(6) QUIPS (QUark Invariant Phase Space) model.-December 2003.M.Kossov.-
-// -------------------------------------------------------------------------------
-// All algorithms are similar: the captured particle is absorbed by a nuclear cluster
-// with the subsequent Quark Exchange nuclear fragmentation. The Anti-Proton (antiSigma+)
-// Capture algorithm is more complicated: the anti-baryon annihilates with the quasyfree
-// nucleons on the nuclear periphery. The peripheral interaction results in a number
-// of mesons. A part of them misses the nucleus and comes directly to the output,
-// while others create Multy Quasmon Excitation in the nucleus with the subsequent
-// Quark Excange Fragmentation of the nucleus. At present the two step mechanism of
-// the antiProton-Nucleus interaction is hardwired in the G4QEnvironment class, but
-// with time the first step of the interaction can be moved to this G4QCaptureAtRest
-// class, to make the G4QEnvirement class simpler and better defined. This is
-// necessary because the G4QEnvironment class is going to loos the previlage of
-// the CHIPS Head Class (as previously the G4Quasmon class lost it) and G4QCollision
-// class is going to be the CHIPS Head Class, where a few Nuclear Environments can
-// exist (e.g. the Nuclear Environment of the Projectile Nucleus and the Nuclear
-// Environment of the Target Nucleus). By the way the antiProton-H1 interaction At
-// Rest (CHIPSI) can be still simulated with only the G4Quasmon class, as this
-// reaction does not have any nuclear environment.- December 2003.Mikhail Kossov.-
-// --------------------------------------------------------------------------------
-// ****************************************************************************************
-// ********* This HEADER is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short Description: This is a universal process for nuclear capture
-// (including annihilation) of all negative particles (negative hadrons,
-// negative leptons: mu- & tau-). It can be used for the cold neutron
-// capture, but somebody should decide what is the probability (defined
-// by the capture cross-section and atomic material properties) to switch
-// the cold neutron to the at-rest neutron. - M.K.2009.
-// ----------------------------------------------------------------------
-
-#ifndef G4QCaptureAtRest_hh
-#define G4QCaptureAtRest_hh
-
-// GEANT4 Headers
-#include "globals.hh"
-#include "G4ios.hh"
-#include "G4VRestProcess.hh"
-#include "G4ParticleTypes.hh"
-#include "G4VParticleChange.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4DynamicParticle.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include "Randomize.hh"
-#include "G4ThreeVector.hh"
-#include "G4LorentzVector.hh"
-#include "G4HadronicProcessType.hh"
-
-// CHIPS Headers
-#include "G4QEnvironment.hh"
-#include "G4QIsotope.hh"
-#include "G4QPDGToG4Particle.hh"
-//<vector> is included in G4QIsotope.hh
-//#include <vector>
-
-class G4QCaptureAtRest : public G4VRestProcess
-{  
-private:
-
-  // Hide assignment operator as private 
-  G4QCaptureAtRest& operator=(const G4QCaptureAtRest &right);
-
-  // Copy constructor
-  G4QCaptureAtRest(const G4QCaptureAtRest& );
-
-public:
-
-  // Constructor
-  G4QCaptureAtRest(const G4String& processName ="CHIPSNuclearAbsorptionAtRest");
-
-  // Destructor
-  virtual ~G4QCaptureAtRest();
-
-  virtual G4bool IsApplicable(const G4ParticleDefinition& particle);
-
-  virtual void PreparePhysicsTable(const G4ParticleDefinition&);
-
-  virtual void BuildPhysicsTable(const G4ParticleDefinition&);
-
-  G4VParticleChange* AtRestDoIt(const G4Track& aTrack, const G4Step& aStep); 
-
-  G4LorentzVector GetEnegryMomentumConservation();
-
-  G4int GetNumberOfNeutronsInTarget();
-
-  // Static functions
-  static void SetManual();
-  static void SetStandard();
-  static void SetParameters(G4double temper=180., G4double ssin2g=.1, G4double etaetap=.3,
-                            G4double fN=0., G4double fD=0., G4double cP=1., G4double mR=1.,
-                            G4int npCHIPSWorld=234, G4double solAn=.5, G4bool efFlag=false,
-                            G4double piTh=141.4,G4double mpi2=20000.,G4double dinum=1880.);
-
-protected:                         
-
-  // zero mean lifetime
-  G4double GetMeanLifeTime(const G4Track& aTrack, G4ForceCondition* );
-  void MuCaptureEMCascade(G4int Z, G4int N, std::vector<G4double>* dV);
-  G4double RandomizeDecayElectron(G4int Z); // Randomize energy of decay electron (in MeV)
-private:
-
-  G4bool RandomizeMuDecayOrCapture(G4int Z, G4int N); // true=MuCapture, false=MuDecay
-  void CalculateEnergyDepositionOfMuCapture(G4int Z); // (2p->1s, MeV) @@ Now N-independent
-  G4bool RandomizeTauDecayOrCapture(G4int Z, G4int N);// true=TauCapture, false=TauDecay
-  void CalculateEnergyDepositionOfTauCapture(G4int Z);// (2p->1s, MeV) @@N-independ,Improve
-
-// BODY
-private:
-  // Static Parameters
-  static G4bool   manualFlag;  // If false then standard parameters are used
-  static G4int    nPartCWorld; // The#of particles for hadronization (limit of A of fragm.)
-  // -> Parameters of the G4Quasmon class:
-  static G4double Temperature; // Quasmon Temperature
-  static G4double SSin2Gluons; // Percent of ssbar sea in a constituen gluon
-  static G4double EtaEtaprime; // Part of eta-prime in all etas
-  // -> Parameters of the G4QNucleus class:
-  static G4double freeNuc;     // probability of the quasi-free baryon on surface
-  static G4double freeDib;     // probability of the quasi-free dibaryon on surface
-  static G4double clustProb;   // clusterization probability in dense region
-  static G4double mediRatio;   // relative vacuum hadronization probability
-  // -> Parameters of the G4QEnvironment class:
-  static G4bool   EnergyFlux;  // Flag for Energy Flux use instead of Multy Quasmon
-  static G4double SolidAngle;  // Part of Solid Angle to capture secondaries(@@A-dep)
-  static G4double PiPrThresh;  // Pion Production Threshold for gammas
-  static G4double M2ShiftVir;  // Shift for M2=-Q2=m_pi^2 of the virtual gamma
-  static G4double DiNuclMass;  // Double Nucleon Mass for virtual normalization
-  //
-  // Working parameters
-  G4LorentzVector EnMomConservation;                  // Residual of Energy/Momentum Cons.
-  G4int nOfNeutrons;                                  // #of neutrons in the target nucleus
-  // Modifires for the reaction
-  G4double Time;                                      // Time shift of the capture reaction
-  G4double EnergyDeposition;                          // Energy deposited in the reaction
-
-};
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCoherentChargeExchange.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCoherentChargeExchange.hh	(revision 1197)
+++ 	(revision )
@@ -1,148 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QCoherentChargeExchange.hh,v 1.6 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QCoherentChargeExchange header ----------------
-//                 by Mikhail Kossov, December 2003.
-//  Header of G4QCoherentChargeExchange class (hadron+A) of the CHIPS Simulation Branch in GEANT4
-// -------------------------------------------------------------------------------
-// This is a unique CHIPS class for the Hadron-Nuclear Elastic Scattering Prosesses
-// -------------------------------------------------------------------------------
-// At present (Jan-06) only proton-to-neutron & neutron-to-proton scattering on nuclei
-// are implemented. The scattering of mesons and nuclei on nuclei are possible...
-// The simulation is based on the CHIPS approximation of total elastic and differential
-// elastic cross sections from E=0 to the highest energyes.
-// -------------------------------------------------------------------------------
-// Short description: This class resolves an ambiguity in the definition of the
-// "inelastic" cross section. As it was shown in Ph.D.Thesis (M.Kosov,ITEP,1979)
-// it is more reasonable to subdivide the total cross-section in the coherent &
-// incoherent parts, but the measuring method for the "inelastic" cross-sections
-// consideres the lack of the projectile within the narrow forward solid angle
-// with the consequent extrapolation of these partial cross-sections, corresponding
-// to the particular solid angle, to the zero solid angle. The low angle region
-// is shadowed by the elastic (coherent) scattering. BUT the coherent charge
-// exchange (e.g. conversion p->n) is included by this procedure as a constant term
-// in the extrapolation, so the "inelastic" cross-section differes from the
-// incoherent cross-section by the value of the coherent charge exchange cross
-// section. Fortunately, this cross-sectoion drops ruther fast with energy increasing.
-// All Geant4 inelastic hadronic models (including CHIPS) simulate the incoherent
-// reactions. So the incoherent (including quasielastic) cross-section must be used
-// instead of the inelastic cross-section. For that the "inelastic" cross-section
-// must be reduced by the value of the coherent charge-exchange cross-section, which
-// is estimated (it must be tuned!) in this CHIPS class. The angular distribution
-// is made (at present) identical to the corresponding coherent-elastic scattering 
-// -----------------------------------------------------------------------------------
-
-#ifndef G4QCoherentChargeExchange_hh
-#define G4QCoherentChargeExchange_hh
-
-// GEANT4 Headers
-#include "globals.hh"
-#include "G4ios.hh"
-#include "Randomize.hh" 
-#include "G4VDiscreteProcess.hh"
-#include "G4Track.hh"
-#include "G4Step.hh"
-#include "G4ParticleTypes.hh"
-#include "G4VParticleChange.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4DynamicParticle.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include "G4ThreeVector.hh"
-#include "G4LorentzVector.hh"
-#include "G4HadronicProcessType.hh"
-
-// CHIPS Headers
-#include "G4QuasiFreeRatios.hh"
-#include "G4QElasticCrossSection.hh"
-#include "G4QIsotope.hh"
-#include "G4QPDGToG4Particle.hh"
-#include "G4QCHIPSWorld.hh"
-#include "G4QHadron.hh"
-#include <vector>
-
-class G4QCoherentChargeExchange : public G4VDiscreteProcess
-{
-public:
-
-  // Constructor
-  G4QCoherentChargeExchange(const G4String& processName ="CHIPS_CoherChargeExScattering");
-
-  // Destructor
-  ~G4QCoherentChargeExchange();
-
-  G4bool IsApplicable(const G4ParticleDefinition& particle);
-
-  G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize,
-                           G4ForceCondition* condition);
-  // It returns the MeanFreePath of the process for the current track :
-  // (energy, material)
-  // The previousStepSize and G4ForceCondition* are not used.
-  // This function overloads a virtual function of the base class.        
-  // It is invoked by the ProcessManager of the Particle.
- 
-
-  G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); 
-  // It computes the final state of the process (at end of step),
-  // returned as a ParticleChange object.       
-  // This function overloads a virtual function of the base class.
-  // It is invoked by the ProcessManager of the Particle.
-
-
-  G4LorentzVector GetEnegryMomentumConservation();
-
-  G4int GetNumberOfNeutronsInTarget();
-
-private:
-
-  // Hide assignment operator as private 
-  G4QCoherentChargeExchange& operator=(const G4QCoherentChargeExchange &right);
-
-  // Copy constructor
-  G4QCoherentChargeExchange(const G4QCoherentChargeExchange&);
-
-  // Calculate XS/t: oxs=true - only CS; xst=true - calculate XS, xst=false(oxs=f/t) - t/tm
-  G4double CalculateXSt(G4bool oxs, G4bool xst, G4double p, G4int Z, G4int N, G4int pPDG);
-
-  // BODY
-  // Static Parameters --------------------------------------------------------------------
-  static G4int    nPartCWorld; // The#of particles for hadronization (limit of A of fragm.)
-  //--------------------------------- End of static parameters ---------------------------
-  // Working parameters
-  G4VQCrossSection* theCS;
-  G4LorentzVector EnMomConservation;                  // Residual of Energy/Momentum Cons.
-  G4int nOfNeutrons;                                  // #of neutrons in the target nucleus
-
-  // Modifires for the reaction
-  G4double Time;                                      // Time shift of the capture reaction
-  G4double EnergyDeposition;                          // Energy deposited in the reaction
-  static std::vector <G4int> ElementZ;                // Z of the element(i) in theLastCalc
-  static std::vector <G4double> ElProbInMat;          // SumProbabilityElements in Material
-  static std::vector <std::vector<G4int>*> ElIsoN;    // N of isotope(j) of Element(i)
-  static std::vector <std::vector<G4double>*> IsoProbInEl;// SumProbabIsotopes in Element i
-};
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCollision.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCollision.hh	(revision 1197)
+++ 	(revision )
@@ -1,212 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QCollision.hh,v 1.13 2009/03/23 14:12:49 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QCollision header ----------------
-//                 by Mikhail Kossov, December 2003.
-//  Header of G4QCollision class (mu-,pi-,K-) of the CHIPS Simulation Branch in GEANT4
-// -------------------------------------------------------------------------------
-// This is a unique CHIPS class for the Hadron-Nuclear Inelastic Interaction Prosesses.
-// -------------------------------------------------------------------------------
-// At present (Dec.04) only pi+/-, K+/- proton, neutron, antiproton and antineutron
-// collisions with protons are implemented, which are fundamental for the in matter
-// simulation of hadronic reactions. The interactions of the same particles with
-// nuclei are planned only. The collisions of nuclei with nuclei are possible...
-// The simulation is based on the G4QuasmonString class, which extends the CHIPS model
-// to the highest energyes, implementing the Quasmon string with the
-// String->Quasmons->Hadrons scenario of the quark-gluon string fragmentation
-// --> CHIPS is a SU(3) event generator, so it does not include reactions with the
-// heavy (c,b,t), which can be simulated only by the SU(6) QUIPS (QUark Invariant
-// Phase Space) model which is an expantion of the CHIPS.-December 2003.M.Kossov.-
-// -------------------------------------------------------------------------------
-// Algorithms: the interactions in CHIPS are described by the quark exchange (QE) process.
-// The first step is the low energy quark exchange. If as a result of the QE one or
-// both secondary hadrons are below the pi0 threshold (roughly) they are pushed to the
-// Ground State (GS) value(s). The excited (above the pi0 production threshold) hadronic
-// state is considered as a Quasmon, which is filled in the G4QuasmonVector of the
-// G4QuasmonString class. On the second step all G4Quasmons are decayed by the
-// G4Quasmon class and fiill the G4QHadronVector output. If the exchange quark is too far
-// in the rapidity space (a parameter of the G4QuasmonString class) from any of the quarks
-// of the other hadron it creates a string with the nearest in the rapidity space quark.
-// This string is converted into a Quasmon. This forces the coalescence of the residuals
-// in the another Quasmon, while the possibility exist to create more residual Quasmons
-// instead of one - one per each target-quark+projectile-antiquark(diquark) pair. This
-// possibility is tuned by the Drell-Yan pair production process. If the target (or
-// pojectile) are nuclei, then the Quasmons are created not only in vacuum, where they
-// can be fragmented by the G4Quasmon class, but in nuclear matter of the residual target
-// (or projectile). If the Quasmons are crated in nuclear matter, they are fragmented by
-// the G4QEnvironment class with the subsequent Quark Exchange nuclear fragmentation.
-// This is the planned scenario.- December 2004.Mikhail Kossov.-
-// --------------------------------------------------------------------------------
-// ****************************************************************************************
-// ********* This HEADER is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short description: This is a universal class for the incoherent (inelastic)
-// nuclear interactions in the CHIPS model.
-// ---------------------------------------------------------------------------
-
-#ifndef G4QCollision_hh
-#define G4QCollision_hh
-
-// GEANT4 Headers
-#include "globals.hh"
-#include "G4ios.hh"
-#include "Randomize.hh" 
-#include "G4VDiscreteProcess.hh"
-#include "G4Track.hh"
-#include "G4Step.hh"
-#include "G4ParticleTypes.hh"
-#include "G4VParticleChange.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4DynamicParticle.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include "G4ThreeVector.hh"
-#include "G4LorentzVector.hh"
-#include "G4HadronicProcessType.hh"
-#include "G4RandomDirection.hh"
-
-// CHIPS Headers
-#include "G4QEnvironment.hh"
-#include "G4VQCrossSection.hh"
-#include "G4QIsotope.hh"
-#include "G4QProtonNuclearCrossSection.hh"
-#include "G4QPhotonNuclearCrossSection.hh"
-#include "G4QElectronNuclearCrossSection.hh"
-#include "G4QMuonNuclearCrossSection.hh"
-#include "G4QTauNuclearCrossSection.hh"
-#include "G4QNuMuNuclearCrossSection.hh"
-#include "G4QANuMuNuclearCrossSection.hh"
-#include "G4QNuENuclearCrossSection.hh"
-#include "G4QANuENuclearCrossSection.hh"
-#include "G4QNuNuNuclearCrossSection.hh"
-#include "G4QANuANuNuclearCrossSection.hh"
-//#include "G4QuasmonString.hh"
-#include "G4QuasiFreeRatios.hh"
-#include "G4QPDGToG4Particle.hh"
-#include <vector>
-
-class G4QCollision : public G4VDiscreteProcess
-{
-public:
-
-  // Constructor
-  G4QCollision(const G4String& processName ="CHIPSNuclearCollision");
-
-  // Destructor
-  ~G4QCollision();
-
-  G4bool IsApplicable(const G4ParticleDefinition& particle);
-
-  G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize,
-                           G4ForceCondition* condition);
-  // It returns the MeanFreePath of the process for the current track :
-  // (energy, material)
-  // The previousStepSize and G4ForceCondition* are not used.
-  // This function overloads a virtual function of the base class.        
-  // It is invoked by the ProcessManager of the Particle.
- 
-
-  G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); 
-  // It computes the final state of the process (at end of step),
-  // returned as a ParticleChange object.       
-  // This function overloads a virtual function of the base class.
-  // It is invoked by the ProcessManager of the Particle.
-
-  // Fake void functions
-  void SetPhysicsTableBining(G4double, G4double, G4int) {;}
-  void BuildPhysicsTable(const G4ParticleDefinition&) {;}
-  void PrintInfoDefinition() {;}
-
-  // Internal Energy-Momentum Residual
-  G4LorentzVector GetEnegryMomentumConservation();
-
-  // Number of neutrons in the target nucleus (primary)
-  G4int GetNumberOfNeutronsInTarget();
-
-  // Static functions ---------------------------------------------------------------------
-  static void SetManual();
-  static void SetStandard();
-  static void SetParameters(G4double temper=180., G4double ssin2g=.1, G4double etaetap=.3,
-                            G4double fN=0., G4double fD=0., G4double cP=1., G4double mR=1.,
-                            G4int npCHIPSWorld=234, G4double solAn=.5, G4bool efFlag=false,
-                            G4double piTh=141.4,G4double mpi2=20000.,G4double dinum=1880.);
-  static void SetPhotNucBias(G4double phnB=1.);
-  static void SetWeakNucBias(G4double ccnB=1.);
-  //--- End of static member functions ----------------------------------------------------
-
-  G4double GetPhotNucBias(){return photNucBias;}
-  G4double GetWeakNucBias(){return weakNucBias;}
-
-private:
-
-  // Hide assignment operator as private 
-  G4QCollision& operator=(const G4QCollision &right);
-
-  // Copy constructor
-  G4QCollision(const G4QCollision&);
-
-  // Random direction in two dimentions pair(first=sin(phi), second=cos(phi))
-  std::pair<G4double,G4double> Random2DDirection();
-
-  // BODY
-  // Static Parameters --------------------------------------------------------------------
-  static G4bool   manualFlag;  // If false then standard parameters are used
-  static G4int    nPartCWorld; // The#of particles for hadronization (limit of A of fragm.)
-  // -> Parameters of the G4Quasmon class:
-  static G4double Temperature; // Quasmon Temperature
-  static G4double SSin2Gluons; // Percent of ssbar sea in a constituen gluon
-  static G4double EtaEtaprime; // Part of eta-prime in all etas
-  // -> Parameters of the G4QNucleus class:
-  static G4double freeNuc;     // probability of the quasi-free baryon on surface
-  static G4double freeDib;     // probability of the quasi-free dibaryon on surface
-  static G4double clustProb;   // clusterization probability in dense region
-  static G4double mediRatio;   // relative vacuum hadronization probability
-  // -> Parameters of the G4QEnvironment class:
-  static G4bool   EnergyFlux;  // Flag for Energy Flux use instead of Multy Quasmon
-  static G4double SolidAngle;  // Part of Solid Angle to capture secondaries(@@A-dep)
-  static G4double PiPrThresh;  // Pion Production Threshold for gammas
-  static G4double M2ShiftVir;  // Shift for M2=-Q2=m_pi^2 of the virtual gamma
-  static G4double DiNuclMass;  // Double Nucleon Mass for virtual normalization
-  // -> Biasing parameters:
-  static G4double photNucBias; // Biasing parameter for photo-($e,mu,tau)Nuclear reactions
-  static G4double weakNucBias; // Biasing parameter for Charged Currents (nu,mu) reactions
-  //--------------------------------- End of static parameters ---------------------------
-  // Working parameters
-  G4VQCrossSection* theCS;
-  G4LorentzVector EnMomConservation;                  // Residual of Energy/Momentum Cons.
-  G4int nOfNeutrons;                                  // #of neutrons in the target nucleus
-
-  // Modifires for the reaction
-  G4double Time;                                      // Time shift of the capture reaction
-  G4double EnergyDeposition;                          // Energy deposited in the reaction
-  static std::vector <G4int> ElementZ;                // Z of the element(i) in theLastCalc
-  static std::vector <G4double> ElProbInMat;          // SumProbabilityElements in Material
-  static std::vector <std::vector<G4int>*> ElIsoN;    // N of isotope(j) of Element(i)
-  static std::vector <std::vector<G4double>*> IsoProbInEl;// SumProbabIsotopes in Element i
-};
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiffraction.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiffraction.hh	(revision 1197)
+++ 	(revision )
@@ -1,137 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QDiffraction.hh,v 1.3 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QDiffraction header ----------------
-//                 by Mikhail Kossov, Aug 2007.
-//  Header of G4QDiffraction class (hadron+A) of the CHIPS Simulation Branch in GEANT4
-// -------------------------------------------------------------------------------
-// This is a unique CHIPS class for the Hadron-Nuclear Diffractive Interaction Prosesses
-// -------------------------------------------------------------------------------
-// At present (Aug-07) it is based on the G4QDiffractionRatio class and is not tested.
-// The normalization is based on the temporary G4QProtonNuclearCrossSection class
-// -------------------------------------------------------------------------------
-// Short description: This is a process, which describes the diffraction
-// excitation of the projectile and the nucleus. On nuclei in addition there
-// can be a coherent diffraction process for the projectile, but it is
-// comparably small. The most important part of the diffraction is the
-// progectile diffraction excitation, as in this interaction proton can lose
-// only a small part of its energy and make the shower longer. This is because
-// only 1-2 (n) pions are produce in the diffraction escitation, and the mean
-// kept energy of the nucleon is (1-n/7)=80%. For kaons the kept energy is much
-// smaller (1-n/3.5)=60%, and for pions it is less important (about 40%).
-// ----------------------------------------------------------------------------
-
-#ifndef G4QDiffraction_hh
-#define G4QDiffraction_hh
-
-// GEANT4 Headers
-#include "globals.hh"
-#include "G4ios.hh"
-#include "Randomize.hh" 
-#include "G4VDiscreteProcess.hh"
-#include "G4Track.hh"
-#include "G4Step.hh"
-#include "G4ParticleTypes.hh"
-#include "G4VParticleChange.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4DynamicParticle.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include "G4ThreeVector.hh"
-#include "G4LorentzVector.hh"
-#include "G4HadronicProcessType.hh"
-
-// CHIPS Headers
-#include "G4QDiffractionRatio.hh"
-#include "G4QProtonNuclearCrossSection.hh"
-#include "G4QIsotope.hh"
-#include "G4QPDGToG4Particle.hh"
-#include "G4QCHIPSWorld.hh"
-#include "G4QHadronVector.hh"
-#include <vector>
-
-class G4QDiffraction : public G4VDiscreteProcess
-{
-public:
-
-  // Constructor
-  G4QDiffraction(const G4String& processName ="CHIPS_DiffractiveInteraction");
-
-  // Destructor
-  ~G4QDiffraction();
-
-  G4bool IsApplicable(const G4ParticleDefinition& particle);
-
-  G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize,
-                           G4ForceCondition* condition);
-  // It returns the MeanFreePath of the process for the current track :
-  // (energy, material)
-  // The previousStepSize and G4ForceCondition* are not used.
-  // This function overloads a virtual function of the base class.        
-  // It is invoked by the ProcessManager of the Particle.
- 
-
-  G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); 
-  // It computes the final state of the process (at end of step),
-  // returned as a ParticleChange object.       
-  // This function overloads a virtual function of the base class.
-  // It is invoked by the ProcessManager of the Particle.
-
-
-  G4LorentzVector GetEnegryMomentumConservation();
-
-  G4int GetNumberOfNeutronsInTarget();
-
-private:
-
-  // Hide assignment operator as private 
-  G4QDiffraction& operator=(const G4QDiffraction &right);
-
-  // Copy constructor
-  G4QDiffraction(const G4QDiffraction&);
-
-  // Calculate Cross-Section of the Diffraction Reaction (p is in GeV @@ units)
-  G4double CalculateXS(G4double p, G4int Z, G4int N, G4int pPDG);
-
-  // BODY
-  // Static Parameters --------------------------------------------------------------------
-  static G4int    nPartCWorld; // The#of particles for hadronization (limit of A of fragm.)
-  //--------------------------------- End of static parameters ---------------------------
-  // Working parameters
-  G4VQCrossSection* theCS;
-  G4LorentzVector EnMomConservation;                  // Residual of Energy/Momentum Cons.
-  G4int nOfNeutrons;                                  // #of neutrons in the target nucleus
-
-  // Modifires for the reaction
-  G4double Time;                                      // Time shift of the capture reaction
-  G4double EnergyDeposition;                          // Energy deposited in the reaction
-  static std::vector <G4int> ElementZ;                // Z of the element(i) in theLastCalc
-  static std::vector <G4double> ElProbInMat;          // SumProbabilityElements in Material
-  static std::vector <std::vector<G4int>*> ElIsoN;    // N of isotope(j) of Element(i)
-  static std::vector <std::vector<G4double>*> IsoProbInEl;// SumProbabIsotopes in Element i
-};
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiffractionRatio.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiffractionRatio.hh	(revision 1197)
+++ 	(revision )
@@ -1,95 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QDiffractionRatio -- header file
-// M.V. Kossov, ITEP(Moscow), 24-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 15-Oct-2006
-//
-//=======================================================================
-// Short description: Difraction excitation is a part of the incoherent
-// (inelastic) interaction. This part is calculated in the class.
-// --------------------------------------------------------------------
-
-#ifndef G4QDiffractionRatio_h
-#define G4QDiffractionRatio_h 1
-
-#include "globals.hh"
-#include "G4ios.hh"
-#include "Randomize.hh"
-#include <vector>
-//#include "G4DynamicParticle.hh"
-//#include "G4Element.hh"
-//#include "G4ParticleTable.hh"
-//#include "G4NucleiProperties.hh"
-//#include "G4NucleiPropertiesTable.hh"
-#include "G4QPDGCode.hh"
-#include "G4QEnvironment.hh"
-#include "G4Quasmon.hh"
-#include "G4QHadronVector.hh"
-#include "G4VCrossSectionDataSet.hh"
-#include "G4QElasticCrossSection.hh"
-#include "G4RandomDirection.hh"
-
-
-class G4QDiffractionRatio
-{
- protected:
-
-  G4QDiffractionRatio()  {}                 // Constructor
-
- public:
-
-  ~G4QDiffractionRatio() {}                 // Destructor
-
-  static G4QDiffractionRatio* GetPointer(); // Gives a pointer to this singletone
-
-  // Diffraction/Prodaction Ratio (Production=Inelastic-QuasiElastic)
-  G4double GetRatio(G4double pIU, G4int prPDG, G4int tgZ, G4int tgN);
-
-  // ==> The following will be a protected function for internal CHIPS usage
-  // ProjFragment(pPDG,p4M) on a nucleus (tgZ, tgN), result: Vector of secondary hadrons
-  // Whoever uses this member function is responsible for DEL/DESTROY of G4QHadronVector
-  G4QHadronVector* ProjFragment(G4int pPDG, G4LorentzVector p4M, G4int tgZ, G4int tgN);
-
-  // ==> The following will be a protected function for internal CHIPS usage
-  // TargFragment(pPDG,p4M) on a nucleus (tgZ, tgN), result: Vector of secondary hadrons
-  // Whoever uses this member function is responsible for DEL/DESTROY of G4QHadronVector
-  G4QHadronVector* TargFragment(G4int pPDG, G4LorentzVector p4M, G4int tgZ, G4int tgN);
-
-  // Single Diffraction Target Excitation Cross-Section (independent Units)
-  G4double GetTargSingDiffXS(G4double pIU, G4int prPDG, G4int tgZ, G4int tgN);
-
- private:
-  // These working member functions are in CHIPS units and must not be used externally
-  G4double CalcDiff2Prod_Ratio(G4double s, G4int A); // R=Diff/Prod (sqrt(s)(hN) in GeV, A)
-
- // Body
- private:
-};      
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiscProcessMixer.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiscProcessMixer.hh	(revision 1197)
+++ 	(revision )
@@ -1,107 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QDiscProcessMixer.hh,v 1.6 2009/04/17 15:22:31 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QDiscProcessMixer header ----------------
-//                 by Mikhail Kossov, Aug 2007.
-//  Header of G4QDiscProcessMixer class of the CHIPS Simulation Branch in GEANT4
-// -----------------------------------------------------------------------------
-// Short description: universal mixer of processes (NOT models as in GHAD!)
-// depending on the application energy region (defined by users).
-// ------------------------------------------------------------------------
-
-#ifndef G4QDiscProcessMixer_hh
-#define G4QDiscProcessMixer_hh
-
-// GEANT4 Headers
-#include "globals.hh"
-#include "G4ios.hh"
-#include "Randomize.hh" 
-#include "G4VDiscreteProcess.hh"
-#include "G4Track.hh"
-#include "G4Step.hh"
-//#include "G4ParticleTypes.hh"
-//#include "G4VParticleChange.hh"
-//#include "G4ParticleDefinition.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4Gamma.hh"
-#include "G4DynamicParticle.hh"
-#include "G4QDiscreteProcessVector.hh"
-//#include "G4NucleiPropertiesTable.hh"
-//#include "G4ThreeVector.hh"
-//#include "G4LorentzVector.hh"
-
-#include <vector>
-
-class G4QDiscProcessMixer : public G4VDiscreteProcess
-{
-public:
-
-  // Constructor
-  G4QDiscProcessMixer(const G4String& processName = "Mixed Discrete Process",
-                      const G4ParticleDefinition* proj = G4Gamma::Gamma(),
-                      G4ProcessType pType = fHadronic );
-  // Destructor
-  ~G4QDiscProcessMixer();
-
-  G4bool IsApplicable(const G4ParticleDefinition& particle);
-
-  G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
-                                                G4double previousStepSize,
-                                                G4ForceCondition* condition);
-
-  G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize,
-                           G4ForceCondition* condition);
-
-  G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); 
-
-  // DP is the name of the Discrete Process, MaxE is the maximum energy for this process
-  // The processes must be defined, starting from high energy processes (MaxE decreasing)
-  // The MaxE for the first (highest energy process) is always infinity (automatic)
-  // The MinE = MaxE of the lower energy process (MinE=0 for the lowest energy process)
-
-  void AddDiscreteProcess(G4VDiscreteProcess* DP, G4double MaxE);
-
-  //G4LorentzVector GetEnegryMomentumConservation();
-
-  //G4int GetNumberOfNeutronsInTarget();
-
-private:
-
-  // Hide assignment operator as private 
-  G4QDiscProcessMixer& operator=(const G4QDiscProcessMixer &right);
-
-  // Copy constructor
-  G4QDiscProcessMixer(const G4QDiscProcessMixer& DPM);
-
-  // BODY
-  const G4ParticleDefinition* DPParticle;             // Particle for DiscreteProc mixture
-  G4QDiscreteProcessVector theDPVector;               // Vector of Discrete Processes
-  //G4LorentzVector EnMomConservation;                // Residual of Energy/Momentum Cons.
-  //G4int nOfNeutrons;                                // #of neutrons in the target nucleus
-};
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiscreteProcessVector.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiscreteProcessVector.hh	(revision 1197)
+++ 	(revision )
@@ -1,49 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QDiscreteProcessVector.hh,v 1.2 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QDiscreteProcessVector ----------------
-//             by Mikhail Kossov, Aug 2007.
-// Type defenition for Vectors of DiscreteProcesses (G4VDiscreteProcess)
-// ---------------------------------------------------------------------
-// Short description: universal mixer of processes (NOT models as in GHAD!)
-// depending on the application energy region G4QDiscProcessMixer is using
-// this vector of the Geant4 processes.
-// ------------------------------------------------------------------------
-
-#ifndef G4QDiscreteProcessVector_h
-#define G4QDiscreteProcessVector_h 1
-
-#include "G4VDiscreteProcess.hh"
-#include <vector>
-
-typedef std::vector<std::pair<G4VDiscreteProcess*, G4double>*> G4QDiscreteProcessVector;
-struct DeleteDiscreteProcess { void operator()(std::pair<G4VDiscreteProcess*,G4double>* DP)
-                               {delete DP->first; delete DP;} };
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElastic.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElastic.hh	(revision 1197)
+++ 	(revision )
@@ -1,132 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QElastic.hh,v 1.5 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QElastic header ----------------
-//                 by Mikhail Kossov, December 2003.
-//  Header of G4QElastic class (hadron+A) of the CHIPS Simulation Branch in GEANT4
-// -------------------------------------------------------------------------------
-// This is a unique CHIPS class for the Hadron-Nuclear Elastic Scattering Prosesses
-// -------------------------------------------------------------------------------
-// At present (Jan-06) only proton-proton scattering is implemented The interaction with
-// nuclei are planned only. The scattering of nuclei on nuclei are possible...
-// The simulation is based on the CHIPS approximation of total elastic and differential
-// elastic cross sections from E=0 to the highest energyes.
-// -------------------------------------------------------------------------------
-// Short description: At present this is a process for nucleon-nucleus
-// elastic scattering. Mesons and hyperons exist only for the Hydrogen
-// target (see G4QuasiFreeRatios).
-// ---------------------------------------------------------------
-
-#ifndef G4QElastic_hh
-#define G4QElastic_hh
-
-// GEANT4 Headers
-#include "globals.hh"
-#include "G4ios.hh"
-#include "Randomize.hh" 
-#include "G4VDiscreteProcess.hh"
-#include "G4Track.hh"
-#include "G4Step.hh"
-#include "G4ParticleTypes.hh"
-#include "G4VParticleChange.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4DynamicParticle.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include "G4ThreeVector.hh"
-#include "G4LorentzVector.hh"
-#include "G4HadronicProcessType.hh"
-
-// CHIPS Headers
-#include "G4QElasticCrossSection.hh"
-#include "G4QIsotope.hh"
-#include "G4QPDGToG4Particle.hh"
-#include "G4QCHIPSWorld.hh"
-#include "G4QHadron.hh"
-#include <vector>
-
-class G4QElastic : public G4VDiscreteProcess
-{
-public:
-
-  // Constructor
-  G4QElastic(const G4String& processName ="CHIPSElasticScattering");
-
-  // Destructor
-  ~G4QElastic();
-
-  G4bool IsApplicable(const G4ParticleDefinition& particle);
-
-  G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize,
-                           G4ForceCondition* condition);
-  // It returns the MeanFreePath of the process for the current track :
-  // (energy, material)
-  // The previousStepSize and G4ForceCondition* are not used.
-  // This function overloads a virtual function of the base class.        
-  // It is invoked by the ProcessManager of the Particle.
- 
-
-  G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); 
-  // It computes the final state of the process (at end of step),
-  // returned as a ParticleChange object.       
-  // This function overloads a virtual function of the base class.
-  // It is invoked by the ProcessManager of the Particle.
-
-
-  G4LorentzVector GetEnegryMomentumConservation();
-
-  G4int GetNumberOfNeutronsInTarget();
-
-private:
-
-  // Hide assignment operator as private 
-  G4QElastic& operator=(const G4QElastic &right);
-
-  // Copy constructor
-  G4QElastic(const G4QElastic&);
-
-  // Calculate XS/t: oxs=true - only CS; xst=true - calculate XS, xst=false(oxs=f/t) - t/tm
-  G4double CalculateXSt(G4bool oxs, G4bool xst, G4double p, G4int Z, G4int N, G4int pPDG);
-
-  // BODY
-  // Static Parameters --------------------------------------------------------------------
-  static G4int    nPartCWorld; // The#of particles for hadronization (limit of A of fragm.)
-  //--------------------------------- End of static parameters ---------------------------
-  // Working parameters
-  G4VQCrossSection* theCS;
-  G4LorentzVector EnMomConservation;                  // Residual of Energy/Momentum Cons.
-  G4int nOfNeutrons;                                  // #of neutrons in the target nucleus
-
-  // Modifires for the reaction
-  G4double Time;                                      // Time shift of the capture reaction
-  G4double EnergyDeposition;                          // Energy deposited in the reaction
-  static std::vector <G4int> ElementZ;                // Z of the element(i) in theLastCalc
-  static std::vector <G4double> ElProbInMat;          // SumProbabilityElements in Material
-  static std::vector <std::vector<G4int>*> ElIsoN;    // N of isotope(j) of Element(i)
-  static std::vector <std::vector<G4double>*> IsoProbInEl;// SumProbabIsotopes in Element i
-};
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElasticCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElasticCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,148 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QElasticCrossSection -- header file
-// M.V. Kossov, ITEP(Moscow), 24-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 15-Oct-2006
-//
-//================================================================================
-// Short description: Interaction cross-sections for the G4QElastic process
-// -------------------------------------------------------------------------------
-
-#ifndef G4QElasticCrossSection_h
-#define G4QElasticCrossSection_h 1
-
-#include "G4VCrossSectionDataSet.hh"
-#include "G4DynamicParticle.hh"
-#include "G4Element.hh"
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include "G4QPDGCode.hh"
-#include "G4QException.hh"
-#include <vector>
-#include "Randomize.hh"
-#include "G4Electron.hh"
-#include "G4Positron.hh"
-#include "G4VQCrossSection.hh"
-#include "G4QElastic.hh"
-#include "G4QCoherentChargeExchange.hh"
-#include "G4QuasiFreeRatios.hh"
-#include "G4QIonIonCrossSection.hh"
-
-class G4QElasticCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QElasticCrossSection();               // Constructor
-
-public:
-
-  ~G4QElasticCrossSection();
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  // Cross-section is mb. At present momentum (pMom) is in MeV=IU (@@ make Indep. Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                                                             G4int pPDG=0);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int pPDG, G4int Z, G4int N,
-                                                                              G4double pP);
-protected:
-  friend class G4QElastic;
-  friend class G4QCoherentChargeExchange;
-  friend class G4QuasiFreeRatios;
-  friend class G4QIonIonCrossSection;
-  G4double GetSlope(G4int tZ, G4int tN, G4int pPDG);     // Slope of the 1st diff. maximum
-  G4double GetExchangeT(G4int tZ, G4int tN, G4int pPDG); // Randomizes -t=Q2 (in IU=MeV^2)
-  G4double GetHMaxT();                   // Currrent Max(-t=Q2)/2. (in IU=MeV^2)
-
-private:
-  G4double GetPTables(G4double lpP, G4double lPm, G4int PDG, G4int tZ, G4int tN); // newLP
-  G4double GetTabValues(G4double lp, G4int pPDG, G4int tgZ, G4int tgN); // return CS(Si/Bi)
-  G4double GetQ2max(G4int pPDG, G4int tgZ, G4int tgN, G4double pP); // return -t=Q2
-
-// Body
-private:
-  // --- Data formating AMDB (define the precalculated table structure) ---
-  static const G4int nPoints;// #of points in the AMDB tables     
-  static const G4int nLast;  // the Last element in the table
-  static G4double    lPMin;  // Min tabulated logarithmic Momentum  
-  static G4double    lPMax;  // Max tabulated logarithmic Momentum  
-  static G4double    dlnP;   // Log step in the table     
-  // ---- Local (for particular pP, pPDG, tZ, tN) -----
-  static G4bool    onlyCS;   // flag to calculate only CS (not S1/B1,S2/B2,S3/B3)
-  static G4double  lastSIG;  // Last calculated cross section
-  static G4double  lastLP;   // Last log(mom_of_the_incident_hadron in GeV)
-  static G4double  lastTM;   // Last t_maximum                       
-  static G4int     lastN;    // The last N of calculated nucleus
-  static G4int     lastZ;    // The last Z of calculated nucleus
-  static G4double  lastP;    // Last used in the cross section Momentum
-  static G4double  lastTH;   // Last value of the Momentum Threshold
-  static G4double  lastCS;   // Last value of the Cross Section
-  static G4int     lastI;    // The last position in the DAMDB
-  static G4double  theSS;    // The Last squared slope of first diffruction 
-  static G4double  theS1;    // The Last mantissa of first diffruction 
-  static G4double  theB1;    // The Last slope of first diffruction    
-  static G4double  theS2;    // The Last mantissa of second diffruction
-  static G4double  theB2;    // The Last slope of second diffruction   
-  static G4double  theS3;    // The Last mantissa of third diffruction 
-  static G4double  theB3;    // The Last slope of third diffruction    
-  static G4double  theS4;    // The Last mantissa of 4-th diffruction 
-  static G4double  theB4;    // The Last slope of 4-th diffruction    
-  // ---- Global (AMBD of P-dependent tables for pPDG,tZ,tN) -----
-  static G4int     lastPDG;  // Last PDG code of the projectile
-  static G4int     lastTZ;   // Last atomic number of the target
-  static G4int     lastTN;   // Last number of neutrons of the target
-  static G4double  lastPIN;  // Last initialized max momentum
-  static G4double* lastCST;  // Last cross-section table
-  static G4double* lastPAR;  // Last parameters for functional calculation
-  static G4double* lastSST;  // E-dep of squared slope of the first difruction 
-  static G4double* lastS1T;  // E-dep of mantissa of the first difruction 
-  static G4double* lastB1T;  // E-dep of the slope of the first difruction
-  static G4double* lastS2T;  // E-dep of mantissa of the second difruction
-  static G4double* lastB2T;  // E-dep of the slope of theSecond difruction
-  static G4double* lastS3T;  // E-dep of mantissa of the third difruction 
-  static G4double* lastB3T;  // E-dep of the slope of the third difruction
-  static G4double* lastS4T;  // E-dep of mantissa of the 4-th difruction 
-  static G4double* lastB4T;  // E-dep of the slope of the 4-th difruction
-
-  static std::vector <G4double*> PAR;   // Vector of parameters for functional calculations
-  static std::vector <G4double*> CST;   // Vector of cross-section table
-  static std::vector <G4double*> SST;   // Vector of the first squared slope
-  static std::vector <G4double*> S1T;   // Vector of the first mantissa
-  static std::vector <G4double*> B1T;   // Vector of the first slope
-  static std::vector <G4double*> S2T;   // Vector of the secon mantissa
-  static std::vector <G4double*> B2T;   // Vector of the second slope
-  static std::vector <G4double*> S3T;   // Vector of the third mantissa
-  static std::vector <G4double*> B3T;   // Vector of the third slope
-  static std::vector <G4double*> S4T;   // Vector of the 4-th mantissa (gloria)
-  static std::vector <G4double*> B4T;   // Vector of the 4-th slope    (gloria)
- };
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElectronNuclearCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElectronNuclearCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,175 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QElectronNuclearCrossSection -- header file
-// M.V. Kossov, ITEP(Moscow), 24-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 25-Sept-03
-//
-// --------------------------------------------------------------------------------
-// Short description: reaction cross-sections for electron-nuclear reactions, which
-// are integrals over virtual equivalent photons photons.
-// --------------------------------------------------------------------------------
-
-#ifndef G4QElectronNuclearCrossSection_h
-#define G4QElectronNuclearCrossSection_h 1
-
-#include "G4VCrossSectionDataSet.hh"
-#include "G4DynamicParticle.hh"
-#include "G4Element.hh"
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include <vector>
-#include "Randomize.hh"
-#include "G4Electron.hh"
-#include "G4Positron.hh"
-#include "G4VQCrossSection.hh"
-
-class G4QElectronNuclearCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QElectronNuclearCrossSection()  {}               // Constructor
-
-public:
-
-  ~G4QElectronNuclearCrossSection() {}
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=11);
-
-  // At present momentum (pMom) must be in GeV (@@ Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                                                             G4int pPDG=0);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z, G4int N,
-                                                                        G4double Momentum);
-
-  G4int    GetExchangePDGCode();
-
-  G4double GetExchangeEnergy();
-
-  G4double GetVirtualFactor(G4double nu, G4double Q2);
-
-  G4double GetExchangeQ2(G4double nu);
-
-private:
-  G4int    GetFunctions(G4double a, G4double* x, G4double* y, G4double* z);
-  G4double HighEnergyJ1(G4double lE);
-  G4double HighEnergyJ2(G4double lE);
-  G4double HighEnergyJ3(G4double lE);
-  G4double SolveTheEquation(G4double f);
-  G4double Fun(G4double x);
-  G4double DFun(G4double x);
-
-// Body
-private:
-  static G4bool    onlyCS;   // flag to calculate only CrossSection
-  static G4double  lastSig;  // Last calculated cross section
-  static G4int     lastL;    // Last used in the cross section TheLastBin
-  static G4double  lastE;    // Last used in the cross section Energy
-  static G4int     lastF;    // Last used in the cross section TheFirstBin
-  static G4double  lastG;    // Last value of gamma=lnE-ln(m)
-  static G4double  lastH;    // Last value of the High energy A-dependence
-  static G4double* lastJ1;   // Pointer to the last array of the J1 function
-  static G4double* lastJ2;   // Pointer to the last array of the J2 function
-  static G4double* lastJ3;   // Pointer to the last array of the J3 function
-  static G4int     lastPDG;  // The last projectile PDG
-  static G4int     lastN;    // The last N of calculated nucleus
-  static G4int     lastZ;    // The last Z of calculated nucleus
-  static G4double  lastP;    // Last used in the cross section Momentum
-  static G4double  lastTH;   // Last value of the Momentum Threshold
-  static G4double  lastCS;   // Last value of the Cross Section
-  static G4int     lastI;    // The last position in the DAMDB
-};
-
-inline G4double G4QElectronNuclearCrossSection::DFun(G4double x)//PhotoNucCSParametrization
-{
-  static const G4double shd=1.0734;                    // HE PomShadowing(D)
-  static const G4double poc=0.0375;                    // HE Pomeron coefficient
-  static const G4double pos=16.5;                      // HE Pomeron shift
-  static const G4double reg=.11;                       // HE Reggeon slope
-  static const G4double mel=0.5109989;                 // Mass of an electron in MeV
-  static const G4double lmel=std::log(mel);            // Log of an electron mass
-  G4double y=std::exp(x-lastG-lmel);                   // y for the x
-  G4double flux=lastG*(2.-y*(2.-y))-1.;                // flux factor
-  return (poc*(x-pos)+shd*std::exp(-reg*x))*flux;
-}
-
-inline G4double G4QElectronNuclearCrossSection::Fun(G4double x) // Integrated PhoNucCS
-{
-  G4double dlg1=lastG+lastG-1.;
-  G4double lgoe=lastG/lastE;
-  G4double HE2=HighEnergyJ2(x);
-  return dlg1*HighEnergyJ1(x)-lgoe*(HE2+HE2-HighEnergyJ3(x)/lastE);
-}
-
-inline G4double G4QElectronNuclearCrossSection::HighEnergyJ1(G4double lEn)
-{
-  static const G4double le=std::log(50000.); // log(E0)
-  static const G4double le2=le*le;           // log(E0)^2
-  static const G4double a=.0375;             // a
-  static const G4double ha=a*.5;             // a/2
-  static const G4double ab=a*16.5;           // a*b
-  static const G4double d=0.11;              // d
-  static const G4double cd=1.0734/d;         // c/d
-  static const G4double ele=std::exp(-d*le); // E0^(-d)
-  return ha*(lEn*lEn-le2)-ab*(lEn-le)-cd*(std::exp(-d*lEn)-ele);
-}
-
-inline G4double G4QElectronNuclearCrossSection::HighEnergyJ2(G4double lEn)
-{
-  static const G4double e=50000.;            // E0
-  static const G4double le=std::log(e);      // log(E0)
-  static const G4double le1=(le-1.)*e;       // (log(E0)-1)*E0
-  static const G4double a=.0375;             // a
-  static const G4double ab=a*16.5;           // a*b
-  static const G4double d=1.-0.11;           // 1-d
-  static const G4double cd=1.0734/d;         // c/(1-d)
-  static const G4double ele=std::exp(d*le);  // E0^(1-d)
-  G4double En=std::exp(lEn);
-  return a*((lEn-1.)*En-le1)-ab*(En-e)+cd*(std::exp(d*lEn)-ele);
-}
-
-inline G4double G4QElectronNuclearCrossSection::HighEnergyJ3(G4double lEn)
-{
-  static const G4double e=50000.;            // E0
-  static const G4double le=std::log(e);      // log(E0)
-  static const G4double e2=e*e;              // E0^2
-  static const G4double leh=(le-.5)*e2;      // (log(E0)-.5)*E0^2
-  static const G4double ha=.0375*.5;         // a/2
-  static const G4double hab=ha*16.5;         // a*b/2
-  static const G4double d=2.-.11;            // 2-d
-  static const G4double cd=1.0734/d;         // c/(2-d)
-  static const G4double ele=std::exp(d*le);  // E0^(2-d)
-  G4double lastE2=std::exp(lEn+lEn);
-  return ha*((lEn-.5)*lastE2-leh)-hab*(lastE2-e2)+cd*(std::exp(d*lEn)-ele);
-}
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QGluonString.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QGluonString.hh	(revision 1197)
+++ 	(revision )
@@ -1,163 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QGluonString.hh,v 1.3 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QGluonString header ----------------
-//                 by Mikhail Kossov, October 2006.
-// Header of G4QGluonString (N,pi,K,aN,Hyperons,aHyp) of CHIPS Simulation Branch
-// -------------------------------------------------------------------------------
-// -->> At present (17.10.2006) started only with proton-nuclear reactions <<--
-// -------------------------------------------------------------------------------
-// This is a QGS CHIPS class for the Hadron-Nuclear Inelastic Interaction Prosesses
-// -------------------------------------------------------------------------------
-// This class follows the structure of the G4QCollision class and its content can be
-// eventually moved to G4QCollision class. At present the alternative realisation of
-// the hadronic inelastic process (G4QGluonString) is kept for comparison with other
-// G4QCollision algorithms. It can be attached as an inelastic process to all hadrons
-// --------------------------------------------------------------------------------
-// ****************************************************************************************
-// ***** This HEADER is a property of the CHIPS hadronic package in Geant4 (M. Kosov) *****
-// *********** DO NOT MAKE ANY CHANGE without approval of Mikhail.Kossov@cern.ch **********
-// ****************************************************************************************
-// Short description: CHIPS object for the Quark-Gluon String
-// ---------------------------------------------------------------
-
-#ifndef G4QGluonString_hh
-#define G4QGluonString_hh
-
-// GEANT4 Headers
-#include "globals.hh"
-#include "G4ios.hh"
-#include "Randomize.hh" 
-#include "G4VDiscreteProcess.hh"
-#include "G4Track.hh"
-#include "G4Step.hh"
-#include "G4ParticleTypes.hh"
-#include "G4VParticleChange.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4DynamicParticle.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include "G4ThreeVector.hh"
-#include "G4LorentzVector.hh"
-#include "G4HadronicProcessType.hh"
-
-// CHIPS Headers
-#include "G4QEnvironment.hh"
-#include "G4VQCrossSection.hh"
-#include "G4QIsotope.hh"
-#include "G4QProtonNuclearCrossSection.hh"
-#include "G4QPDGToG4Particle.hh"
-#include <vector>
-
-class G4QGluonString : public G4VDiscreteProcess
-{
-public:
-
-  // Constructor
-  G4QGluonString(const G4String& processName ="CHIPS_QGS_Inelastic");
-
-  // Destructor
-  ~G4QGluonString();
-
-  G4bool IsApplicable(const G4ParticleDefinition& particle);
-
-  G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize,
-                           G4ForceCondition* condition);
-  // It returns the MeanFreePath of the process for the current track :
-  // (energy, material)
-  // The previousStepSize and G4ForceCondition* are not used.
-  // This function overloads a virtual function of the base class.        
-  // It is invoked by the ProcessManager of the Particle.
- 
-  G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); 
-  // It computes the final state of the process (at end of step),
-  // returned as a ParticleChange object.       
-  // This function overloads a virtual function of the base class.
-  // It is invoked by the ProcessManager of the Particle.
-
-  // Fake void functions
-  void SetPhysicsTableBining(G4double, G4double, G4int) {;}
-  void BuildPhysicsTable(const G4ParticleDefinition&) {;}
-  void PrintInfoDefinition() {;}
-
-  // Internal Energy-Momentum Residual
-  G4LorentzVector GetEnegryMomentumConservation();
-
-  // Number of neutrons in the target nucleus (primary)
-  G4int GetNumberOfNeutronsInTarget();
-
-  // Static functions ---------------------------------------------------------------------
-  static void SetManual();
-  static void SetStandard();
-  static void SetParameters(G4double temper=180., G4double ssin2g=.1, G4double etaetap=.3,
-                            G4double fN=0., G4double fD=0., G4double cP=1., G4double mR=1.,
-                            G4int npCHIPSWorld=234, G4double solAn=.5, G4bool efFlag=false,
-                            G4double piTh=141.4,G4double mpi2=20000.,G4double dinum=1880.);
-  //--- End of static member functions ----------------------------------------------------
-
-private:
-
-  // Hide assignment operator as private 
-  G4QGluonString& operator=(const G4QGluonString &right);
-
-  // Copy constructor
-  G4QGluonString(const G4QGluonString&);
-
-  // BODY
-  // Static Parameters --------------------------------------------------------------------
-  static G4bool   manualFlag;  // If false then standard parameters are used
-  static G4int    nPartCWorld; // The#of particles for hadronization (limit of A of fragm.)
-  // -> Parameters of the G4Quasmon class:
-  static G4double Temperature; // Quasmon Temperature
-  static G4double SSin2Gluons; // Percent of ssbar sea in a constituen gluon
-  static G4double EtaEtaprime; // Part of eta-prime in all etas
-  // -> Parameters of the G4QNucleus class:
-  static G4double freeNuc;     // probability of the quasi-free baryon on surface
-  static G4double freeDib;     // probability of the quasi-free dibaryon on surface
-  static G4double clustProb;   // clusterization probability in dense region
-  static G4double mediRatio;   // relative vacuum hadronization probability
-  // -> Parameters of the G4QEnvironment class:
-  static G4bool   EnergyFlux;  // Flag for Energy Flux use instead of Multy Quasmon
-  static G4double SolidAngle;  // Part of Solid Angle to capture secondaries(@@A-dep)
-  static G4double PiPrThresh;  // Pion Production Threshold for gammas
-  static G4double M2ShiftVir;  // Shift for M2=-Q2=m_pi^2 of the virtual gamma
-  static G4double DiNuclMass;  // Double Nucleon Mass for virtual normalization
-  //--------------------------------- End of static parameters ---------------------------
-  // Working parameters
-  G4VQCrossSection* theCS;
-  G4LorentzVector EnMomConservation;                  // Residual of Energy/Momentum Cons.
-  G4int nOfNeutrons;                                  // #of neutrons in the target nucleus
-
-  // Modifires for the reaction
-  G4double Time;                                      // Time shift of the capture reaction
-  G4double EnergyDeposition;                          // Energy deposited in the reaction
-  static std::vector <G4int> ElementZ;                // Z of the element(i) in theLastCalc
-  static std::vector <G4double> ElProbInMat;          // SumProbabilityElements in Material
-  static std::vector <std::vector<G4int>*> ElIsoN;    // N of isotope(j) of Element(i)
-  static std::vector <std::vector<G4double>*> IsoProbInEl;// SumProbabIsotopes in Element i
-};
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QIonIonCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QIonIonCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,106 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-// Short description: CHIPS cross-sectons for Ion-Ion interactions
-// ---------------------------------------------------------------
-//
-//
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QIonIonCrossSection -- header file
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 19-Aug-07
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 19-Aug-07
-//-----------------------------------------------------------------------------------------
-// In this class, just as an experiment the real PDG codes (not CHIPS) are used
-//-----------------------------------------------------------------------------------------
-//
-// ****************************************************************************************
-// ********* This HEADER is temporary moved from the chips/interface directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-
-#ifndef G4QIonIonCrossSection_h
-#define G4QIonIonCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include <vector>
-#include "G4VQCrossSection.hh"
-#include "G4QPDGCode.hh"
-#include "G4QElasticCrossSection.hh"
-#include "G4QProtonNuclearCrossSection.hh"
-#include "G4QNeutronNuclearCrossSection.hh"
-
-
-class G4QIonIonCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QIonIonCrossSection()  {}
-
-public:
-
-  ~G4QIonIonCrossSection() {}
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  // At present momentum (pMom) must be in GeV(@@ Units),fCS=true:Inelastic, =false:Elastic
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int Z, G4int N, G4int PDG);
-
-  // Momentum=p/A (MeV/c)
-  G4double CalculateCrossSection(G4bool fCS, G4int F, G4int I, G4int PDG,
-                                 G4int tZ, G4int tN, G4double Momentum);
-
-  G4double ThresholdMomentum(G4int pZ, G4int pN, G4int tZ, G4int tN);// P-Threshold(MeV/c)
-
-private:
-  G4int    GetFunctions(G4int pZ, G4int pN, G4int tZ, G4int tN,
-                        G4double* LI, G4double* HI,  // Inelastic
-                        G4double* LE, G4double* HE); // Elastic
-
-  G4double CalculateTotal(G4double pA, G4double tA, G4double Momentum);
-  G4double CalculateElTot(G4double pA, G4double tA, G4double Momentum);
-  // Momentum=p/A (MeV/c), first=InelasticCS, second=elasticCS (mb)
-  std::pair<G4double,G4double> CalculateXS(G4int pZ,G4int pN,G4int tZ,G4int tN,G4double P);
-
-// Body
-private:
-  static G4double* lastLENI;// Pointer to the last array of LowEnergy Inel cross sections
-  static G4double* lastHENI;// Pointer to the last array of HighEnergy Inel cross sections
-  static G4double* lastLENE;// Pointer to the last array of LowEnergy Elast cross sections
-  static G4double* lastHENE;// Pointer to the last array of HighEnergy Elast cross sections
-  static G4double  lastE;   // Last used in the cross section Energy
-  static G4int     lastPDG; // The last projectile PDG
-  static G4int     lastN;   // The last N of calculated nucleus
-  static G4int     lastZ;   // The last Z of calculated nucleus
-  static G4double  lastP;   // Last used in the cross section Momentum
-  static G4double  lastTH;  // Last value of the Momentum Threshold
-  static G4double  lastICS; // Last value of the Inelastic Cross Section
-  static G4double  lastECS; // Last value of the Elastic Cross Section
-  static G4int     lastI;   // The last position in the DAMDB
-};
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QIonIonElastic.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QIonIonElastic.hh	(revision 1197)
+++ 	(revision )
@@ -1,127 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QIonIonElastic.hh,v 1.3 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QIonIonElastic header ----------------
-//                 by Mikhail Kossov, December 2006.
-//  Header of G4QIonIonElastic class (A+A) of the CHIPS Simulation Branch in GEANT4
-// -------------------------------------------------------------------------------
-// This is a unique CHIPS class for the Ion-Ion Elastic Scattering Prosesses
-// -------------------------------------------------------------------------------
-// @@ This class is on the testing level @@
-// -------------------------------------------------------------------------------
-// Short description: a simple process for the Ion-Ion elastic scattering.
-// For heavy by heavy ions it can reach 50% of the total cross-section.
-// -----------------------------------------------------------------------
-
-#ifndef G4QIonIonElastic_hh
-#define G4QIonIonElastic_hh
-
-// GEANT4 Headers
-#include "globals.hh"
-#include "G4ios.hh"
-#include "Randomize.hh" 
-#include "G4VDiscreteProcess.hh"
-#include "G4Track.hh"
-#include "G4Step.hh"
-#include "G4ParticleTypes.hh"
-#include "G4VParticleChange.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4DynamicParticle.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include "G4ThreeVector.hh"
-#include "G4LorentzVector.hh"
-#include "G4HadronicProcessType.hh"
-
-// CHIPS Headers
-#include "G4QIonIonCrossSection.hh"
-#include "G4QElasticCrossSection.hh"
-#include "G4QIsotope.hh"
-#include "G4QPDGToG4Particle.hh"
-#include "G4QCHIPSWorld.hh"
-#include "G4QHadron.hh"
-#include <vector>
-
-class G4QIonIonElastic : public G4VDiscreteProcess
-{
-public:
-
-  // Constructor
-  G4QIonIonElastic(const G4String& processName ="CHIPS_IonIonElasticScattering");
-
-  // Destructor
-  ~G4QIonIonElastic();
-
-  G4bool IsApplicable(const G4ParticleDefinition& particle);
-
-  G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize,
-                           G4ForceCondition* condition);
-  // It returns the MeanFreePath of the process for the current track :
-  // (energy, material)
-  // The previousStepSize and G4ForceCondition* are not used.
-  // This function overloads a virtual function of the base class.        
-  // It is invoked by the ProcessManager of the Particle.
- 
-
-  G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); 
-  // It computes the final state of the process (at end of step),
-  // returned as a ParticleChange object.       
-  // This function overloads a virtual function of the base class.
-  // It is invoked by the ProcessManager of the Particle.
-
-
-  G4LorentzVector GetEnegryMomentumConservation(){return EnMomConservation;}
-
-  G4int GetNumberOfNeutronsInTarget(){return nOfNeutrons;}
-
-private:
-
-  // Hide assignment operator as private 
-  G4QIonIonElastic& operator=(const G4QIonIonElastic &right);
-
-  // Copy constructor
-  G4QIonIonElastic(const G4QIonIonElastic&);
-
-  // BODY
-  // Static Parameters --------------------------------------------------------------------
-  static G4int    nPartCWorld; // The#of particles for hadronization (limit of A of fragm.)
-  //--------------------------------- End of static parameters ---------------------------
-  // Working parameters
-  G4VQCrossSection* theCS;
-  G4LorentzVector EnMomConservation;                  // Residual of Energy/Momentum Cons.
-  G4int nOfNeutrons;                                  // #of neutrons in the target nucleus
-
-  // Modifires for the reaction
-  G4double Time;                                      // Time shift of the capture reaction
-  G4double EnergyDeposition;                          // Energy deposited in the reaction
-  static std::vector <G4int> ElementZ;                // Z of the element(i) in theLastCalc
-  static std::vector <G4double> ElProbInMat;          // SumProbabilityElements in Material
-  static std::vector <std::vector<G4int>*> ElIsoN;    // N of isotope(j) of Element(i)
-  static std::vector <std::vector<G4double>*> IsoProbInEl;// SumProbabIsotopes in Element i
-};
-#endif
-
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QLowEnergy.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QLowEnergy.hh	(revision 1197)
+++ 	(revision )
@@ -1,138 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QLowEnergy.hh,v 1.6 2009/03/09 15:41:17 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QLowEnergy header ----------------
-//                 by Mikhail Kossov, Aug 2007.
-//  Header of G4QLowEnergy class (A+A) of the CHIPS Simulation Branch in GEANT4
-// -------------------------------------------------------------------------------
-// This is a unique CHIPS class for the Ion-Ion Low Energy Inelastic Interactions
-// -------------------------------------------------------------------------------
-// At present (Aug-07) it is not tested.
-// The normalization is based on the temporary G4QIonIonCrossSection class
-// -------------------------------------------------------------------------------
-// Short description: This is a fast low energy algorithm for the
-// inelastic interactions of nucleons and nuclei (ions) with nuclei.
-// This is a fase-space algorithm, but not quark level. Provides
-// nuclear fragments upto alpha only. Never was tumed (but can be).
-// ---------------------------------------------------------------
-
-#ifndef G4QLowEnergy_hh
-#define G4QLowEnergy_hh
-
-// GEANT4 Headers
-#include "globals.hh"
-#include "G4ios.hh"
-#include "Randomize.hh" 
-#include "G4VDiscreteProcess.hh"
-#include "G4Track.hh"
-#include "G4Step.hh"
-#include "G4ParticleTypes.hh"
-#include "G4ParticleTable.hh"
-#include "G4VParticleChange.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4DynamicParticle.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include "G4ThreeVector.hh"
-#include "G4LorentzVector.hh"
-#include "G4HadronicProcessType.hh"
-
-// CHIPS Headers
-#include "G4QNucleus.hh"
-#include "G4QIonIonCrossSection.hh"
-#include "G4QProtonNuclearCrossSection.hh"
-#include "G4QIsotope.hh"
-#include "G4QPDGToG4Particle.hh"
-#include "G4QCHIPSWorld.hh"
-#include "G4QHadronVector.hh"
-#include <vector>
-
-class G4QLowEnergy : public G4VDiscreteProcess
-{
-public:
-
-  // Constructor
-  G4QLowEnergy(const G4String& processName ="CHIPS_LowEnergyIonIonInelastic");
-
-  // Destructor
-  ~G4QLowEnergy();
-
-  G4bool IsApplicable(const G4ParticleDefinition& particle);
-
-  G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize,
-                           G4ForceCondition* condition);
-  // It returns the MeanFreePath of the process for the current track :
-  // (energy, material)
-  // The previousStepSize and G4ForceCondition* are not used.
-  // This function overloads a virtual function of the base class.        
-  // It is invoked by the ProcessManager of the Particle.
- 
-
-  G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); 
-  // It computes the final state of the process (at end of step),
-  // returned as a ParticleChange object.       
-  // This function overloads a virtual function of the base class.
-  // It is invoked by the ProcessManager of the Particle.
-
-  G4LorentzVector GetEnegryMomentumConservation();
-
-  G4int GetNumberOfNeutronsInTarget();
-
-  void SwitchOnEvaporation() {evaporate=true;}   // Evaporation instead of gammas (default)
-
-  void SwitchOffEvaporation() {evaporate=false;} // Gammas instead of evaporation
-
-private:
-
-  // Hide assignment operator as private 
-  G4QLowEnergy& operator=(const G4QLowEnergy &right);
-
-  // Copy constructor
-  G4QLowEnergy(const G4QLowEnergy&);
-
-  // Calculate Cross-Section of the Diffraction Reaction (p is in GeV @@ units)
-  G4double CalculateXS(G4double p, G4int Z, G4int N, G4int pPDG);
-
-  // BODY
-  // Static Parameters --------------------------------------------------------------------
-  static G4int    nPartCWorld; // The#of particles for hadronization (limit of A of fragm.)
-  //--------------------------------- End of static parameters ---------------------------
-  // Working parameters
-  G4bool evaporate;
-  G4VQCrossSection* theCS;
-  G4LorentzVector EnMomConservation;                  // Residual of Energy/Momentum Cons.
-  G4int nOfNeutrons;                                  // #of neutrons in the target nucleus
-
-  // Modifires for the reaction
-  G4double Time;                                      // Time shift of the capture reaction
-  G4double EnergyDeposition;                          // Energy deposited in the reaction
-  static std::vector <G4int> ElementZ;                // Z of the element(i) in theLastCalc
-  static std::vector <G4double> ElProbInMat;          // SumProbabilityElements in Material
-  static std::vector <std::vector<G4int>*> ElIsoN;    // N of isotope(j) of Element(i)
-  static std::vector <std::vector<G4double>*> IsoProbInEl;// SumProbabIsotopes in Element i
-};
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QMuonNuclearCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QMuonNuclearCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,179 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QMuonNuclearCrossSection.hh,v 1.7 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QMuonNuclearCrossSection -- header file
-// M.V. Kossov, CERN-ITEP(Moscow), 4-FEB-2004
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 4-Feb-04
-//
-// Short description: this G4 singletone class calculates muonNuclear cross section for
-// the particular isotope (GetCrossSection member function)
-// ****************************************************************************************
-// ********* This HEADER is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short description: reaction cross-sections for muon-nuclear reactions, which
-// are integrals over virtual equivalent photons photons. The muon-nuclear GHAD
-// model (not CHIPS) gives 2-3 times smaller scattering angle and deposited energy.
-// --------------------------------------------------------------------------------
-
-#ifndef G4QMuonNuclearCrossSection_h
-#define G4QMuonNuclearCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include <vector>
-#include "Randomize.hh"
-#include "G4MuonPlus.hh"
-#include "G4MuonMinus.hh"
-#include "G4VQCrossSection.hh"
-
-class G4QMuonNuclearCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QMuonNuclearCrossSection()  {};
-
-public:
-
-  ~G4QMuonNuclearCrossSection()  {};
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=13);
-
-  // At present momentum (pMom) must be in GeV (@@ Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                                                             G4int pPDG=0);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z, G4int N,
-                                                                        G4double Momentum);
-
-  G4int    GetExchangePDGCode();
-
-  G4double GetExchangeEnergy();
-
-  G4double GetVirtualFactor(G4double nu, G4double Q2);
-
-  G4double GetExchangeQ2(G4double nu);
-
-private:
-  G4int    GetFunctions(G4double a, G4double* x, G4double* y, G4double* z);
-  G4double HighEnergyJ1(G4double lE);
-  G4double HighEnergyJ2(G4double lE);
-  G4double HighEnergyJ3(G4double lE);
-  G4double SolveTheEquation(G4double f);
-  G4double Fun(G4double x);
-  G4double DFun(G4double x);
-
-// Body
-private:
-  static G4bool    onlyCS;   // flag to calculate only CS
-  static G4double  lastSig;  // Last calculated cross section
-  static G4int     lastL;    // Last used in the cross section TheLastBin
-  static G4double  lastE;    // Last used in the cross section Energy
-  static G4int     lastF;    // Last used in the cross section TheFirstBin
-  static G4double  lastG;    // Last value of gamma=lnE-ln(m)
-  static G4double  lastH;    // Last value of the High energy A-dependence
-  static G4double* lastJ1;   // Pointer to the last array of the J1 function
-  static G4double* lastJ2;   // Pointer to the last array of the J2 function
-  static G4double* lastJ3;   // Pointer to the last array of the J3 function
-  static G4int     lastPDG;  // The last projectile PDG
-  static G4int     lastN;    // The last N of calculated nucleus
-  static G4int     lastZ;    // The last Z of calculated nucleus
-  static G4double  lastP;    // Last used in the cross section Momentum
-  static G4double  lastTH;   // Last value of the Momentum Threshold
-  static G4double  lastCS;   // Last value of the Cross Section
-  static G4int     lastI;    // The last position in the DAMDB
-};
-
-inline G4double G4QMuonNuclearCrossSection::DFun(G4double x)// Parametrization of PhotNucCS
-{
-  static const G4double shd=1.0734;                    // HE PomShadowing(D)
-  static const G4double poc=0.0375;                    // HE Pomeron coefficient
-  static const G4double pos=16.5;                      // HE Pomeron shift
-  static const G4double reg=.11;                       // HE Reggeon slope
-  static const G4double mmu=105.65839;                 // Mass of a muon in MeV
-  static const G4double lmmu=std::log(mmu);                 // Log of a muon mass
-  G4double y=std::exp(x-lastG-lmmu);                        // y for the x
-  G4double flux=lastG*(2.-y*(2.-y))-1.;                // flux factor
-  return (poc*(x-pos)+shd*std::exp(-reg*x))*flux;
-}
-
-inline G4double G4QMuonNuclearCrossSection::Fun(G4double x) // Integrated PhoNucCS
-{
-  G4double dlg1=lastG+lastG-1.;
-  G4double lgoe=lastG/lastE;
-  G4double HE2=HighEnergyJ2(x);
-  return dlg1*HighEnergyJ1(x)-lgoe*(HE2+HE2-HighEnergyJ3(x)/lastE);
-}
-
-inline G4double G4QMuonNuclearCrossSection::HighEnergyJ1(G4double lEn)
-{
-  static const G4double le=std::log(50000.); // log(E0)
-  static const G4double le2=le*le;           // log(E0)^2
-  static const G4double a=.0375;             // a
-  static const G4double ha=a*.5;             // a/2
-  static const G4double ab=a*16.5;           // a*b
-  static const G4double d=0.11;              // d
-  static const G4double cd=1.0734/d;         // c/d
-  static const G4double ele=std::exp(-d*le); // E0^(-d)
-  return ha*(lEn*lEn-le2)-ab*(lEn-le)-cd*(std::exp(-d*lEn)-ele);
-}
-
-inline G4double G4QMuonNuclearCrossSection::HighEnergyJ2(G4double lEn)
-{
-  static const G4double e=50000.;            // E0
-  static const G4double le=std::log(e);      // log(E0)
-  static const G4double le1=(le-1.)*e;       // (log(E0)-1)*E0
-  static const G4double a=.0375;             // a
-  static const G4double ab=a*16.5;           // a*b
-  static const G4double d=1.-0.11;           // 1-d
-  static const G4double cd=1.0734/d;         // c/(1-d)
-  static const G4double ele=std::exp(d*le);  // E0^(1-d)
-  G4double En=std::exp(lEn);
-  return a*((lEn-1.)*En-le1)-ab*(En-e)+cd*(std::exp(d*lEn)-ele);
-}
-
-inline G4double G4QMuonNuclearCrossSection::HighEnergyJ3(G4double lEn)
-{
-  static const G4double e=50000.;            // E0
-  static const G4double le=std::log(e);      // log(E0)
-  static const G4double e2=e*e;              // E0^2
-  static const G4double leh=(le-.5)*e2;      // (log(E0)-.5)*E0^2
-  static const G4double ha=.0375*.5;         // a/2
-  static const G4double hab=ha*16.5;         // a*b/2
-  static const G4double d=2.-.11;            // 2-d
-  static const G4double cd=1.0734/d;         // c/(2-d)
-  static const G4double ele=std::exp(d*le);  // E0^(2-d)
-  G4double lastE2=std::exp(lEn+lEn);
-  return ha*((lEn-.5)*lastE2-leh)-hab*(lastE2-e2)+cd*(std::exp(d*lEn)-ele);
-}
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNeutronNuclearCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNeutronNuclearCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,88 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QNeutronNuclearCrossSection -- header file
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 17-May-02
-//
-// -------------------------------------------------------------------
-// Short description: neutron-nuclear cross-section for hadronic CHIPS
-// -------------------------------------------------------------------
-
-#ifndef G4QNeutronNuclearCrossSection_h
-#define G4QNeutronNuclearCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include <vector>
-#include "G4VQCrossSection.hh"
-#include "G4QPDGCode.hh"
-
-class G4QNeutronNuclearCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QNeutronNuclearCrossSection()  {}
-
-public:
-
-  ~G4QNeutronNuclearCrossSection() {}
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  // At present momentum (pMom) in MeV/c, CS is in mb (@@ Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                   G4int pPDG=2112);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z,
-                                 G4int N, G4double Momentum);
-
-private:
-  G4int    GetFunctions(G4int tZ, G4int tN, G4double* y, G4double* z); // y&z=ArrayPointers
-  G4double CrossSectionLin(G4int targZ, G4int targN, G4double P);
-  G4double CrossSectionLog(G4int targZ, G4int targN, G4double lP);
-  G4double CrossSectionFormula(G4int targZ, G4int targN, G4double P, G4double lP);
-  G4double ThresholdMomentum(G4int targZ, G4int targN); // Threshold of pA reaction (MeV/c)
-// Body
-private:
-  static G4double  lastSig; // Last value of the Cross Section
-  static G4double* lastLEN; // Pointer to the last array of LowEnergy cross sections
-  static G4double* lastHEN; // Pointer to the last array of HighEnergy cross sections
-  static G4double  lastE;   // Last used in the cross section Energy
-  static G4int     lastPDG; // The last projectile PDG
-  static G4int     lastN;   // The last N of calculated nucleus
-  static G4int     lastZ;   // The last Z of calculated nucleus
-  static G4double  lastP;   // Last used in the cross section Momentum
-  static G4double  lastTH;  // Last value of the Momentum Threshold
-  static G4double  lastCS;  // Last value of the Cross Section
-  static G4int     lastI;   // The last position in the DAMDB
-};
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuENuclearCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuENuclearCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,110 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QNuENuclearCrossSection.hh,v 1.2 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QNuENuclearCrossSection -- header file
-// M.V. Kossov, CERN-ITEP(Moscow), 20-SEP-2007
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 20-SEP-2007
-//
-// Short description: this G4 singletone class calculates (nu_e,e-) Nuclear cross section
-// (Energy limit: E<320GeV->badExtrapolation) for a particular isotope (proportional to A)
-// ****************************************************************************************
-
-#ifndef G4QNuENuclearCrossSection_h
-#define G4QNuENuclearCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include <vector>
-#include "Randomize.hh"
-#include "G4MuonPlus.hh"
-#include "G4MuonMinus.hh"
-#include "G4VQCrossSection.hh"
-
-class G4QNuENuclearCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QNuENuclearCrossSection()  {};
-
-public:
-
-  ~G4QNuENuclearCrossSection()  {};
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=12);
-
-  // At present momentum (pMom) must be in GeV (@@ Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                                                             G4int pPDG=0);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z,
-                                                               G4int N, G4double Momentum);
-
-  G4int    GetExchangePDGCode();
-
-  G4double GetDirectPart(G4double Q2);
-
-  G4double GetNPartons(G4double Q2);
-
-  G4double GetQEL_ExchangeQ2();
-
-  G4double GetNQE_ExchangeQ2();
-
-  // Get static members
-  G4double GetLastTOTCS() {return lastSig;}
-  G4double GetLastQELCS() {return lastQEL;}
-
-private:
-  G4int    GetFunctions(G4int z, G4int n, G4double* t, G4double* q, G4double* e);
-  G4double HighEnergyTX(G4double lE);
-  G4double HighEnergyQE(G4double lE);
-
-// Body
-private:
-  static G4bool    onlyCS;   // flag to calculate only CS (not TX & QE)
-  static G4double  lastSig;  // Last calculated total cross section
-  static G4double  lastQEL;  // Last calculated quasi-elastic cross section
-  static G4int     lastL;    // Last bin used in the cross section TheLastBin
-  static G4double  lastE;    // Last energy used in the cross section Energy
-  static G4double* lastEN;   // Pointer to the last array of the energy axis
-  static G4double* lastTX;   // Pointer to the last array of the total CS function
-  static G4double* lastQE;   // Pointer to the last array of the QE CS function
-  static G4int     lastPDG;  // The last projectile PDG
-  static G4int     lastN;    // The last N of calculated nucleus
-  static G4int     lastZ;    // The last Z of calculated nucleus
-  static G4double  lastP;    // Last used in the cross section Momentum
-  static G4double  lastTH;   // Last value of the Momentum Threshold
-  static G4double  lastCS;   // Last value of the Cross Section
-  static G4int     lastI;    // The last position in the DAMDB
-};
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuMuNuclearCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuMuNuclearCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,110 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QNuMuNuclearCrossSection.hh,v 1.7 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QNuMuNuclearCrossSection -- header file
-// M.V. Kossov, CERN-ITEP(Moscow), 20-DEC-2005
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 20-DEC-2005
-//
-// Short description: this G4 singletone class calculates (nu_mu,mu-) Nuclear cross section
-// (Energy limit: E<320GeV->badExtrapolation) for a particular isotope (proportional to A)
-// ****************************************************************************************
-
-#ifndef G4QNuMuNuclearCrossSection_h
-#define G4QNuMuNuclearCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include <vector>
-#include "Randomize.hh"
-#include "G4MuonPlus.hh"
-#include "G4MuonMinus.hh"
-#include "G4VQCrossSection.hh"
-
-class G4QNuMuNuclearCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QNuMuNuclearCrossSection()  {};
-
-public:
-
-  ~G4QNuMuNuclearCrossSection()  {};
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=14);
-
-  // At present momentum (pMom) must be in GeV (@@ Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                                                             G4int pPDG=0);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z,
-                                                               G4int N, G4double Momentum);
-
-  G4int    GetExchangePDGCode();
-
-  G4double GetDirectPart(G4double Q2);
-
-  G4double GetNPartons(G4double Q2);
-
-  G4double GetQEL_ExchangeQ2();
-
-  G4double GetNQE_ExchangeQ2();
-
-  // Get static members
-  G4double GetLastTOTCS() {return lastSig;}
-  G4double GetLastQELCS() {return lastQEL;}
-
-private:
-  G4int    GetFunctions(G4int z, G4int n, G4double* t, G4double* q, G4double* e);
-  G4double HighEnergyTX(G4double lE);
-  G4double HighEnergyQE(G4double lE);
-
-// Body
-private:
-  static G4bool    onlyCS;   // flag to calculate only CS (not TX & QE)
-  static G4double  lastSig;  // Last calculated total cross section
-  static G4double  lastQEL;  // Last calculated quasi-elastic cross section
-  static G4int     lastL;    // Last bin used in the cross section TheLastBin
-  static G4double  lastE;    // Last energy used in the cross section Energy
-  static G4double* lastEN;   // Pointer to the last array of the energy axis
-  static G4double* lastTX;   // Pointer to the last array of the total CS function
-  static G4double* lastQE;   // Pointer to the last array of the QE CS function
-  static G4int     lastPDG;  // The last projectile PDG
-  static G4int     lastN;    // The last N of calculated nucleus
-  static G4int     lastZ;    // The last Z of calculated nucleus
-  static G4double  lastP;    // Last used in the cross section Momentum
-  static G4double  lastTH;   // Last value of the Momentum Threshold
-  static G4double  lastCS;   // Last value of the Cross Section
-  static G4int     lastI;    // The last position in the DAMDB
-};
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuNuNuclearCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuNuNuclearCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,110 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QNuNuNuclearCrossSection.hh,v 1.2 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QNuNuNuclearCrossSection -- header file
-// M.V. Kossov, CERN-ITEP(Moscow), 20-DEC-2005
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 20-DEC-2005
-//
-// Short description: this G4 singletone class calculates (nu,nu) Nuclear cross section
-// (Energy limit: E<320GeV->badExtrapolation) for a particular isotope (proportional to A)
-// ****************************************************************************************
-
-#ifndef G4QNuNuNuclearCrossSection_h
-#define G4QNuNuNuclearCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include <vector>
-#include "Randomize.hh"
-#include "G4MuonPlus.hh"
-#include "G4MuonMinus.hh"
-#include "G4VQCrossSection.hh"
-
-class G4QNuNuNuclearCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QNuNuNuclearCrossSection()  {};
-
-public:
-
-  ~G4QNuNuNuclearCrossSection()  {};
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=14);
-
-  // At present momentum (pMom) must be in GeV (@@ Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                                                             G4int pPDG=0);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z,
-                                                               G4int N, G4double Momentum);
-
-  G4int    GetExchangePDGCode();
-
-  G4double GetDirectPart(G4double Q2);
-
-  G4double GetNPartons(G4double Q2);
-
-  G4double GetQEL_ExchangeQ2();
-
-  G4double GetNQE_ExchangeQ2();
-
-  // Get static members
-  G4double GetLastTOTCS() {return lastSig;}
-  G4double GetLastQELCS() {return lastQEL;}
-
-private:
-  G4int    GetFunctions(G4int z, G4int n, G4double* t, G4double* q, G4double* e);
-  G4double HighEnergyTX(G4double lE);
-  G4double HighEnergyQE(G4double lE);
-
-// Body
-private:
-  static G4bool    onlyCS;   // flag to calculate only CS (not TX & QE)
-  static G4double  lastSig;  // Last calculated total cross section
-  static G4double  lastQEL;  // Last calculated quasi-elastic cross section
-  static G4int     lastL;    // Last bin used in the cross section TheLastBin
-  static G4double  lastE;    // Last energy used in the cross section Energy
-  static G4double* lastEN;   // Pointer to the last array of the energy axis
-  static G4double* lastTX;   // Pointer to the last array of the total CS function
-  static G4double* lastQE;   // Pointer to the last array of the QE CS function
-  static G4int     lastPDG;  // The last projectile PDG
-  static G4int     lastN;    // The last N of calculated nucleus
-  static G4int     lastZ;    // The last Z of calculated nucleus
-  static G4double  lastP;    // Last used in the cross section Momentum
-  static G4double  lastTH;   // Last value of the Momentum Threshold
-  static G4double  lastCS;   // Last value of the Cross Section
-  static G4int     lastI;    // The last position in the DAMDB
-};
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QPhotonNuclearCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QPhotonNuclearCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,92 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QPhotonNuclearCrossSection -- header file
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 17-May-02
-//
-// ****************************************************************************************
-// ********* This HEADER is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short description: This is an original CHIPS process for photo-nuclear
-// interactions, which does not include "fast and dirty" corrections for
-// reactions near threshold, with respect to the GHAD application of CHIPS.
-// ------------------------------------------------------------------------
-
-#ifndef G4QPhotonNuclearCrossSection_h
-#define G4QPhotonNuclearCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include <vector>
-#include "G4VQCrossSection.hh"
-
-class G4QPhotonNuclearCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QPhotonNuclearCrossSection()  {}
-
-public:
-
-  ~G4QPhotonNuclearCrossSection() {}
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  // At present momentum (pMom) must be in GeV (@@ Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                                                             G4int pPDG=0);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z, G4int N,
-                                                                        G4double Momentum);
-
-  G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=22);
-
-private:
-  G4int    GetFunctions(G4double A, G4double* y, G4double* z);// y&z are pointers to arrays
-
-// Body
-private:
-  static G4bool    onlyCS;  // flag to calculate only CrossSection
-  static G4double  lastSig; // Last value of the Cross Section
-  static G4double* lastGDR; // Pointer to the last array of GDR cross sections
-  static G4double* lastHEN; // Pointer to the last array of HEn cross sections
-  static G4double  lastE;   // Last used in the cross section Energy
-  static G4double  lastSP;  // Last value of the ShadowingPomeron (A-dependent)
-  static G4int     lastPDG;  // The last projectile PDG
-  static G4int     lastN;    // The last N of calculated nucleus
-  static G4int     lastZ;    // The last Z of calculated nucleus
-  static G4double  lastP;    // Last used in the cross section Momentum
-  static G4double  lastTH;   // Last value of the Momentum Threshold
-  static G4double  lastCS;   // Last value of the Cross Section
-  static G4int     lastI;    // The last position in the DAMDB
-};
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QProtonNuclearCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QProtonNuclearCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,91 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QProtonNuclearCrossSection -- header file
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 17-May-02
-//
-// ****************************************************************************************
-// ********* This HEADER is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short description: CHIPS cross-sections for proton-nuclear interactions
-// -----------------------------------------------------------------------
-
-#ifndef G4QProtonNuclearCrossSection_h
-#define G4QProtonNuclearCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include <vector>
-#include "G4VQCrossSection.hh"
-#include "G4QPDGCode.hh"
-
-class G4QProtonNuclearCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QProtonNuclearCrossSection()  {}
-
-public:
-
-  ~G4QProtonNuclearCrossSection() {}
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  // At present momentum (pMom) in MeV/c, CS in mb (@@ Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                   G4int pPDG=2212);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z,
-                                 G4int N, G4double Momentum);
-
-private:
-  G4int    GetFunctions(G4int tZ, G4int tN, G4double* y, G4double* z); // y&z=ArrayPointers
-  G4double CrossSectionLin(G4int targZ, G4int targN, G4double P);
-  G4double CrossSectionLog(G4int targZ, G4int targN, G4double lP);
-  G4double CrossSectionFormula(G4int targZ, G4int targN, G4double P, G4double lP);
-  G4double ThresholdMomentum(G4int targZ, G4int targN); // Threshold of pA reaction (MeV/c)
-// Body
-private:
-  static G4double  lastSig; // Last value of the Cross Section
-  static G4double* lastLEN; // Pointer to the last array of LowEnergy cross sections
-  static G4double* lastHEN; // Pointer to the last array of HighEnergy cross sections
-  static G4double  lastE;   // Last used in the cross section Energy
-  static G4int     lastPDG; // The last projectile PDG
-  static G4int     lastN;   // The last N of calculated nucleus
-  static G4int     lastZ;   // The last Z of calculated nucleus
-  static G4double  lastP;   // Last used in the cross section Momentum
-  static G4double  lastTH;  // Last value of the Momentum Threshold
-  static G4double  lastCS;  // Last value of the Cross Section
-  static G4int     lastI;   // The last position in the DAMDB
-};
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QTauNuclearCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QTauNuclearCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,180 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QTauNuclearCrossSection.hh,v 1.7 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QTauNuclearCrossSection -- header file
-// M.V. Kossov, CERN-ITEP(Moscow), 4-FEB-2004
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 4-Feb-04
-//
-// Short description: this G4 singletone class calculates tau-lepton-nuclear cross section
-// for the particular isotope (GetCrossSection member function)
-// ****************************************************************************************
-// ********* This HEADER is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short description: reaction cross-sections for tau-nuclear reactions, which
-// are integrals over virtual equivalent photons photons. The tau-nuclear
-// reactions do not exist in GHAD, so by the present physics lists it is not
-// simulated at all.
-// --------------------------------------------------------------------------------
-
-#ifndef G4QTauNuclearCrossSection_h
-#define G4QTauNuclearCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include <vector>
-#include "Randomize.hh"
-#include "G4MuonPlus.hh"
-#include "G4MuonMinus.hh"
-#include "G4VQCrossSection.hh"
-
-class G4QTauNuclearCrossSection : public G4VQCrossSection
-{
-protected:
-
-  G4QTauNuclearCrossSection()  {};
-
-public:
-
-  ~G4QTauNuclearCrossSection()  {};
-
-  static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
-
-  G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=15);
-
-  // At present momentum (pMom) must be in GeV (@@ Units)
-  virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
-                                                                             G4int pPDG=0);
-
-  G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z, G4int N,
-                                                                        G4double Momentum);
-
-  G4int    GetExchangePDGCode();
-
-  G4double GetExchangeEnergy();
-
-  G4double GetVirtualFactor(G4double nu, G4double Q2);
-
-  G4double GetExchangeQ2(G4double nu);
-
-private:
-  G4int    GetFunctions(G4double a, G4double* x, G4double* y, G4double* z);
-  G4double HighEnergyJ1(G4double lE);
-  G4double HighEnergyJ2(G4double lE);
-  G4double HighEnergyJ3(G4double lE);
-  G4double SolveTheEquation(G4double f);
-  G4double Fun(G4double x);
-  G4double DFun(G4double x);
-
-// Body
-private:
-  static G4bool    onlyCS;   // flag to calculate only CS
-  static G4double  lastSig;  // Last calculated cross section
-  static G4int     lastL;    // Last used in the cross section TheLastBin
-  static G4double  lastE;    // Last used in the cross section Energy
-  static G4int     lastF;    // Last used in the cross section TheFirstBin
-  static G4double  lastG;    // Last value of gamma=lnE-ln(m)
-  static G4double  lastH;    // Last value of the High energy A-dependence
-  static G4double* lastJ1;   // Pointer to the last array of the J1 function
-  static G4double* lastJ2;   // Pointer to the last array of the J2 function
-  static G4double* lastJ3;   // Pointer to the last array of the J3 function
-  static G4int     lastPDG;  // The last projectile PDG
-  static G4int     lastN;    // The last N of calculated nucleus
-  static G4int     lastZ;    // The last Z of calculated nucleus
-  static G4double  lastP;    // Last used in the cross section Momentum
-  static G4double  lastTH;   // Last value of the Momentum Threshold
-  static G4double  lastCS;   // Last value of the Cross Section
-  static G4int     lastI;    // The last position in the DAMDB
-};
-
-inline G4double G4QTauNuclearCrossSection::DFun(G4double x)// Parametrization of PhotNucCS
-{
-  static const G4double shd=1.0734;                    // HE PomShadowing(D)
-  static const G4double poc=0.0375;                    // HE Pomeron coefficient
-  static const G4double pos=16.5;                      // HE Pomeron shift
-  static const G4double reg=.11;                       // HE Reggeon slope
-  static const G4double mtu=1777.;                     // Mass of a muon in MeV
-  static const G4double lmtu=std::log(mtu);            // Log of a muon mass
-  G4double y=std::exp(x-lastG-lmtu);                   // y for the x
-  G4double flux=lastG*(2.-y*(2.-y))-1.;                // flux factor
-  return (poc*(x-pos)+shd*std::exp(-reg*x))*flux;
-}
-
-inline G4double G4QTauNuclearCrossSection::Fun(G4double x) // Integrated PhoNucCS
-{
-  G4double dlg1=lastG+lastG-1.;
-  G4double lgoe=lastG/lastE;
-  G4double HE2=HighEnergyJ2(x);
-  return dlg1*HighEnergyJ1(x)-lgoe*(HE2+HE2-HighEnergyJ3(x)/lastE);
-}
-
-inline G4double G4QTauNuclearCrossSection::HighEnergyJ1(G4double lEn)
-{
-  static const G4double le=std::log(50000.); // log(E0)
-  static const G4double le2=le*le;           // log(E0)^2
-  static const G4double a=.0375;             // a
-  static const G4double ha=a*.5;             // a/2
-  static const G4double ab=a*16.5;           // a*b
-  static const G4double d=0.11;              // d
-  static const G4double cd=1.0734/d;         // c/d
-  static const G4double ele=std::exp(-d*le); // E0^(-d)
-  return ha*(lEn*lEn-le2)-ab*(lEn-le)-cd*(std::exp(-d*lEn)-ele);
-}
-
-inline G4double G4QTauNuclearCrossSection::HighEnergyJ2(G4double lEn)
-{
-  static const G4double e=50000.;            // E0
-  static const G4double le=std::log(e);      // log(E0)
-  static const G4double le1=(le-1.)*e;       // (log(E0)-1)*E0
-  static const G4double a=.0375;             // a
-  static const G4double ab=a*16.5;           // a*b
-  static const G4double d=1.-0.11;           // 1-d
-  static const G4double cd=1.0734/d;         // c/(1-d)
-  static const G4double ele=std::exp(d*le);  // E0^(1-d)
-  G4double En=std::exp(lEn);
-  return a*((lEn-1.)*En-le1)-ab*(En-e)+cd*(std::exp(d*lEn)-ele);
-}
-
-inline G4double G4QTauNuclearCrossSection::HighEnergyJ3(G4double lEn)
-{
-  static const G4double e=50000.;            // E0
-  static const G4double le=std::log(e);      // log(E0)
-  static const G4double e2=e*e;              // E0^2
-  static const G4double leh=(le-.5)*e2;      // (log(E0)-.5)*E0^2
-  static const G4double ha=.0375*.5;         // a/2
-  static const G4double hab=ha*16.5;         // a*b/2
-  static const G4double d=2.-.11;            // 2-d
-  static const G4double cd=1.0734/d;         // c/(2-d)
-  static const G4double ele=std::exp(d*le);  // E0^(2-d)
-  G4double lastE2=std::exp(lEn+lEn);
-  return ha*((lEn-.5)*lastE2-leh)-hab*(lastE2-e2)+cd*(std::exp(d*lEn)-ele);
-}
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QuasiFreeRatios.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QuasiFreeRatios.hh	(revision 1197)
+++ 	(revision )
@@ -1,102 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 physics class: G4QuasiFreeRatios -- header file
-// M.V. Kossov, ITEP(Moscow), 24-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 15-Oct-2006
-// ----------------------------------------------------------------------
-// Short description: Provides percentage of quasi-free and quasi-elastic
-// reactions in the inelastic reactions.
-// ----------------------------------------------------------------------
-
-#ifndef G4QuasiFreeRatios_h
-#define G4QuasiFreeRatios_h 1
-
-#include "globals.hh"
-#include "G4ios.hh"
-#include "Randomize.hh"
-#include <vector>
-//#include "G4DynamicParticle.hh"
-//#include "G4Element.hh"
-//#include "G4ParticleTable.hh"
-//#include "G4NucleiProperties.hh"
-//#include "G4NucleiPropertiesTable.hh"
-#include "G4QPDGCode.hh"
-#include "G4QHadron.hh"
-#include "G4VCrossSectionDataSet.hh"
-#include "G4QElasticCrossSection.hh"
-
-
-class G4QuasiFreeRatios
-{
- protected:
-
-  G4QuasiFreeRatios();                 // Constructor
-
- public:
-
-  ~G4QuasiFreeRatios();                 // Destructor
-
-  static G4QuasiFreeRatios* GetPointer(); // Gives a pointer to this singletone
-
-  // Pair(QuasiFree/Inelastic,QuasiElastic/QuasiFree)
-  std::pair<G4double,G4double> GetRatios(G4double pIU, G4int prPDG, G4int tgZ, G4int tgN);
-  // ChargeExchange/QuasiElastic factor pair<for protons (Z), for neutrons(N)>
-  std::pair<G4double,G4double> GetChExFactor(G4double pIU, G4int pPDG, G4int Z, G4int N);
-  // scatter (pPDG,p4M) on a virtual nucleon (NPDG,N4M), result: final pair(newN4M,newp4M)
-  // if(newN4M.e()==0.) - below threshold, XS=0, no scattering of the projectile happened
-  std::pair<G4LorentzVector,G4LorentzVector> Scatter(G4int NPDG, G4LorentzVector N4M,
-                                                     G4int pPDG, G4LorentzVector p4M);
-  // ChExer (pPDG,p4M) on a virtual nucleon (NPDG,N4M), result: final pair(newN4M,newp4M)
-  // if(newN4M.e()==0.) - keep projectile, XS=0, no interaction of the progectile happened
-  // User should himself change the charge (PDG) (e.g. pn->np, pi+n->pi0p, pi-p->pi0n etc.)
-  // Recepy: change target n to p or taget p to n and conserve enrgy, changing projectile
-  // Do not use for the nucleon, as it is already included in quasielastic, and for pi0.
-  std::pair<G4LorentzVector,G4LorentzVector> ChExer(G4int NPDG, G4LorentzVector N4M,
-                                                    G4int pPDG, G4LorentzVector p4M);
-  // Mean hN El and Tot XS(IU) for the isotopic (Z,N): on p -> (Z=1,N=0), on n -> (Z=0,N=1)
-  std::pair<G4double,G4double> GetElTot(G4double pIU, G4int hPDG, G4int Z, G4int N); //(IU)
-
-  // Calculate ChEx/El ratio coefficient (p is in independent units, (Z,N) is a target)
-  G4double ChExElCoef(G4double p, G4int Z, G4int N, G4int pPDG);
-
- private:
-  // These working member functions are in CHIPS units and must not be used externally
-  G4double GetQF2IN_Ratio(G4double TotCS_mb, G4int A); // QuasiFree/Inelastic (fast)
-  G4double CalcQF2IN_Ratio(G4double TCSmb, G4int A); // R=QuasuFree/Inelastic (sig_t in mb)
-  std::pair<G4double,G4double> FetchElTot(G4double pGeV,G4int PDG,G4bool F);//(E,T)fromAMDB
-  std::pair<G4double,G4double> CalcElTot(G4double pGeV,G4int Index);//(sigE,sigT)(Index)
-
- // Body
- private:
-  static std::vector<G4double*> vT;     // Vector of pointers to LinTable
-  static std::vector<G4double*> vL;     // Vector of pointers to LogTable
-  static std::vector<std::pair<G4double,G4double>*> vX; // Vector of ETPointers to LogTable
-};
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4VQCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4VQCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,180 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4VQCrossSection.hh,v 1.10 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// GEANT4 virtual class: G4VQCrossSection -- header file
-// M.V. Kossov, CERN-ITEP(Moscow), 4-FEB-2004
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 27-Nov-04
-//
-// Short description: this G4 virtual class is made for the cross section
-// classes of the CHIPS model, which calculate the cross section for the
-// particular Element (virtual GetCrossSection member function). Each of the
-// CHIPS cross section classes creates its own Dynamic Associative Memory
-// Data Base (DAMDB) for the already used isotopes. For all of them thay use the
-// same algorithm. Common member functions of this algorithm can be in this
-// basic virtual class. Any CHIPS cross section class MUST inherit from this virtual
-// G4VQCrossSection class. In the G4QCollision class the general G4VQCrossSection*
-// pointer is connected to this or that CHIPS cross section class (depending on the
-// projectile particle), so each of the CHIPS cross section class must be
-// an evolving singletone. The singletone nature can not be realized in the
-// virtual class. So each derived CS class must have
-//  static G4VQCrossSection* GetPointer(); // Gives a pointer to the singletone
-// static function, which is defined in the *.cc file as
-//     // Returns Pointer to the G4VQCrossSection class
-//     G4VQCrossSection* G4VQCrossSection::GetPointer()
-//     {
-//       static  G4QXCrossSection theCrossSection; //***Static body of the Cross Section***
-//       return &theCrossSection;
-//     }
-// the line
-//   //virtual static G4VQCrossSection* GetPointer(); // Gives a pointer to the singletone
-// Reminds about this necesity, but in C++ the virtual static function can not be
-// realised, so the static function can not be realised in the interface. Developers
-// must take care of this themselves because this member fuction is called to get a pointer
-// to the singletone in the G4QCollision class. So there is an agreement to
-// make a separate CS class for each projectile particle, e.g. while the (pi-)d
-// and (pi+)d (as well as [n,z] and [z,n]) cross sections) are almost equal,
-// they must be calculated in different classes: G4QPiMinusCrossSection and
-// G4QPiPlusCrossSections. For the ion-nuclear cross sections there should exist only
-// one G4QIonCrossSection class with a huge (#0f isotopes times #of already produced
-// ions) DAMDB or a general analitic formula with parameters. --- December 2004 ---
-// -----------------------------------------------------------------------
-// At present (25.11.04) for the test purposes this virtual class is created
-// for ohly G4QPhotonCrossSection, G4QElectronCrossSection, G4QMuonCrossSection,
-// G4QTauCrossSection and G4QProtonCrossSection (only for pp collisions now).
-// ****************************************************************************************
-// ********* This HEADER is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short description: a basic class for all CHIPS reaction cross-sections.
-// -----------------------------------------------------------------------
-
-#ifndef G4VQCrossSection_h
-#define G4VQCrossSection_h 1
-
-#include "G4ParticleTable.hh"
-#include "G4NucleiProperties.hh"
-#include "G4NucleiPropertiesTable.hh"
-#include <vector>
-#include "Randomize.hh"
-
-class G4VQCrossSection
-{
-protected:
-
-  G4VQCrossSection() {;} // for each particle a separate instance of G4QCollision should be
-                         // used (and inside use a separate instance of G4Q*CrossSection)
-
-public:
-  virtual ~G4VQCrossSection() {;}// for each particle separate instance of G4QXCrossSection
-  //@@ can be improved in future)// should be used and inside a separate istance of CS's
-  // Set the new tolerance (abs(p_old/p_new-1)<tolerance)
-  static void setTolerance(G4double tol){tolerance=tol;}// Set NewTolerance for SameCrosSec
-
-  // At present momentum (pMom) must be in GeV (@@ Units)
-  virtual G4double GetCrossSection(G4bool, G4double, G4int, G4int, G4int pPDG=0)
-                                                                   {return G4double(pPDG);}
-
-  virtual G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=0); // Gives 0 by default
-
-  // Define in the derived class, F=0 - create AMDB, F=-1 - read AMDB, F=1 - update AMDB
-  virtual G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int tgZ,
-                                         G4int tgN, G4double pMom)=0;//*** PURE VIRTUAL ***
-
-  virtual G4double GetLastTOTCS(); // LastCalculated total cross-section (total elastic)
-
-  virtual G4double GetLastQELCS(); // LastCalculated quasielastic cross-section (quasifree)
-
-  virtual G4double GetDirectPart(G4double Q2); // DirectInteraction with QuarkPartons (nuA)
-
-  virtual G4double GetNPartons(G4double Q2); // #ofQuarkPartons in nonPerturbatPhaseSp(nuA)
-
-  // Subroutines for the t-chanel processes with a leader (DIS, Elastic, Quasielastic etc.)
-
-  virtual G4double GetExchangeEnergy(); // Returns energy of the t-chanel particle (gam,pi)
-
-  virtual G4double GetExchangeT(G4int tZ, G4int tN, G4int pPDG); // -t=Q2 for hadronic
-
-  virtual G4double GetSlope(G4int tZ, G4int tN, G4int pPDG); // B-slope of the maim maximum
-
-  virtual G4double GetHMaxT();          // max(-t=Q2)/2 for hadronic (MeV^2)
-
-  virtual G4double GetExchangeQ2(G4double nu=0); // Q2 for lepto-nuclear reactions
-
-  virtual G4double GetVirtualFactor(G4double nu, G4double Q2); // ReductionFactor (leptA)
-
-  virtual G4double GetQEL_ExchangeQ2(); // Get randomized Q2 for quasi-elastic scattering
-
-  virtual G4double GetNQE_ExchangeQ2(); // Get randomized Q2 for non quasi-elastic scat.
-
-  virtual G4int GetExchangePDGCode(); // PDGCode of the Exchange Particle (Pi0 by default)
-
-  // Body: Basic Parameters of DAMDB (each derived class can add it's own values)
-  // -----------------------------------------------------------------------------
-  // The basic scheme of the DAMDB coveres the cross section for isotopes with fixed
-  // Z (lastZ - number of protons) and N (lastN - number of neutrons) from the
-  // Threshold momentum (TH) up to infinity. The cross section is first (Tab.1)
-  // tabulated from the threshold till the boundary momentum (BP). The Tab.1 is
-  // the function of the momentum (p) with the N1 elements. The N1 elements can be
-  // not all different from zero. The first non-zero element is F1, the last non-zero
-  // element is L1. If TH#0 the Tab.1 can be skipped. It is defined by N1=F1=L1=0 and
-  // BP=TH. The Tab.1 is the function of the ln(p) with N2 elements (F2 is the first
-  // non-zero element, L2 is the last non-zero element) from BP up tp MP. Both Tab.1
-  // and Tab.2 are calculated when the projectile of the class meet the corresponding
-  // ion. After that the tables are stored in the DAMDB for the fast calculations. To
-  // avoid a complete calculation of the tables in the low energy calculation case,
-  // the lastP momentum is used. The tables are calculated only till the momentum,
-  // which already appeared in the simulation for this projectile and this isotope.
-  // If the momentum above MP appeared, then the extrapolation function is calculated.
-  // So, if lastP>MP it means that the cross section is defined for all energies above
-  // TH. All parameters and pointers to arrays MUST be stored (F=0), updated (F=1) and
-  // retrieved (F=-1) by the derived class in the CalculateCrossSection(F,I,N,Z,P)
-  // function. The parameters are used for the immediate result: if the cross section is
-  // calculated for the same Z, N, and fabs(p-lastP)/lastP<.001 (? - a parameter), the same
-  // cross section (lastCS) is returned, if p<lastTH, then the 0 cross section is returned.
-  // It helps to avoid double counting. The derived class can have only the approximation
-  // functions, but such class is too slow, as it calculates the arythmetic equations each
-  // time, when it is necessary to get a new cross section. So it is reasonable to
-  // precalculate the tables, store them in memory, remember the pointers to these
-  // functions and just interpolate them in the range of the most frequent energies (use
-  // a LinearFit inline function of this virtual class for that). Starting some high
-  // momentum (PM) the functional calculations are unavoidable, but fortunately they are
-  // not frequent. In case of the ion-nuclear cross section the functional approach can
-  // be reasonable, because tabulated cross-sections demand too much memory.
-  //
-  // -----------------------------------------------------------------------------
-protected:
-  G4double LinearFit(G4double X, G4int N, G4double* XN, G4double* YN);
-
-  G4double EquLinearFit(G4double X, G4int N, G4double X0, G4double DX, G4double* Y);
-
-  static G4double  tolerance;// relative tolerance in momentum to get old CroSec
-};
-
-#endif
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuANuNuclearCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuANuNuclearCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,732 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QANuANuNuclearCrossSection.cc,v 1.3 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QANuANuNuclearCrossSection for gamma+A cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 17-Oct-03
-// 
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-//=========================================================================================
-// Short description: Provides the (anti-nu,anti-nu)A cross-section (Created by M. Kossov)
-// ----------------------------------------------------------------------------------------
-
-//#define debug
-//#define edebug
-//#define pdebug
-//#define ppdebug
-//#define tdebug
-//#define sdebug
-
-#include "G4QANuANuNuclearCrossSection.hh"
-
-// Initialization of the
-G4bool    G4QANuANuNuclearCrossSection::onlyCS=true;//Flag to calculate only CS (not QE)
-G4double  G4QANuANuNuclearCrossSection::lastSig=0.;//Last calculated total cross section
-G4double  G4QANuANuNuclearCrossSection::lastQEL=0.;//Last calculated quasi-el cross section
-G4int     G4QANuANuNuclearCrossSection::lastL=0;   //Last used in cross section TheLastBin
-G4double  G4QANuANuNuclearCrossSection::lastE=0.;  //Last used in cross section TheEnergy
-G4double* G4QANuANuNuclearCrossSection::lastEN=0;  //Pointer to theEnergy Scale of TX & QE
-G4double* G4QANuANuNuclearCrossSection::lastTX=0;  //Pointer to theLastArray of TX function
-G4double* G4QANuANuNuclearCrossSection::lastQE=0;  //Pointer to theLastArray of QE function
-G4int     G4QANuANuNuclearCrossSection::lastPDG=0; // The last PDG code of the projectile
-G4int     G4QANuANuNuclearCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QANuANuNuclearCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QANuANuNuclearCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QANuANuNuclearCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QANuANuNuclearCrossSection::lastCS=0.; // Last value of the Cross Section
-G4int     G4QANuANuNuclearCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QANuANuNuclearCrossSection::GetPointer()
-{
-  static G4QANuANuNuclearCrossSection theCrossSection; //*Static body of the Cross Section*
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QANuANuNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom,
-                                                      G4int tgZ, G4int tgN, G4int pPDG)
-{
-  static G4int j;                      // A#0f records found in DB for this projectile
-  static std::vector <G4int>    colPDG;// Vector of the projectile PDG code
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-  G4double pEn=pMom;
-#ifdef debug
-  G4cout<<"G4QAMNCS::GetCS:>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG="<<pPDG<<"("<<lastPDG<<"), T="<<pEn<<"("<<lastTH<<")"<<",Sz="
-        <<colN.size()<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  if(pPDG!=-14)
-  {
-#ifdef debug
-    G4cout<<"G4QAMNCS::GetCS: *** Found pPDG="<<pPDG<<" ====> CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // projectile PDG=0 is a mistake (?!) @@
-  }
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tgN!=lastN || tgZ!=lastZ || pPDG!=lastPDG)// The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastPDG = pPDG;                    // The last PDG of the projectile
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-    if(lastI) for(G4int i=0; i<lastI; i++) if(colPDG[i]==pPDG) // The partType is found
-    {                                  // The nucleus with projPDG is found in AMDB
-      if(colN[i]==tgN && colZ[i]==tgZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QAMNCS::GetCS:*Found*P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(pEn<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QAMNCS::GetCS:Found T="<<pEn<<" < Threshold="<<lastTH<<",X=0"<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastCS =colCS[i];                // Last CrossSect (A-dependent)
-        if(std::fabs(lastP/pMom-1.)<tolerance)
-        {
-#ifdef pdebug
-          G4cout<<"G4QAMNCS::GetCS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QAMNCS::G:UpdaDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // read & update
-#ifdef pdebug
-        G4cout<<"G4QAMNCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(lastCS<=0. && pEn>lastTH)    // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QAMNCS::GetCS: New T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-        break;                           // Go out of the LOOP
-      }
-#ifdef pdebug
-      G4cout<<"---G4QAMNCrossSec::GetCrosSec:pPDG="<<pPDG<<",j="<<j<<",N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<",cPDG="<<colPDG[i]<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      j++;                             // Increment a#0f records found in DB for this pPDG
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QAMNCS::GetCrosSec:CalcNew P="<<pMom<<",f="<<fCS<<",lstI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,j,lastPDG,lastZ,lastN,pMom); //calculate & create
-      if(lastCS<=0.)
-      {
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QAMNCrossSection::GetCrossSect: NewThresh="<<lastTH<<",T="<<pEn<<G4endl;
-#endif
-        if(pEn>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QAMNCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QAMNCS::GetCrosSec:New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      colN.push_back(tgN);
-      colZ.push_back(tgZ);
-      colPDG.push_back(pPDG);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colCS.push_back(lastCS);
-#ifdef pdebug
-      G4cout<<"G4QAMNCS::GetCS:1st,P="<<pMom<<"(MeV),X="<<lastCS*millibarn<<"(mb)"<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QAMNCS::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colPDG[lastI]=pPDG;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-  else if(pEn<=lastTH)
-  {
-#ifdef pdebug
-    G4cout<<"G4QAMNCS::GetCS: Current T="<<pEn<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  else if(std::fabs(lastP/pMom-1.)<tolerance)
-  {
-#ifdef pdebug
-    G4cout<<"G4QAMNCS::GetCS:OldCur P="<<pMom<<"="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return lastCS*millibarn;     // Use theLastCS
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"G4QAMNCS::GetCS:UpdaCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastCS=CalculateCrossSection(fCS,1,j,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-    lastP=pMom;
-  }
-#ifdef pdebug
-  G4cout<<"G4QAMNCS::GetCrSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  return lastCS*millibarn;
-}
-
-// Gives the threshold energy = the same for all nuclei (@@ can be reduced for hevy nuclei)
-G4double G4QANuANuNuclearCrossSection::ThresholdEnergy(G4int, G4int, G4int) {return 0.;}
-
-// The main member function giving the gamma-A cross section (E_kin in MeV, CS in mb)
-G4double G4QANuANuNuclearCrossSection::CalculateCrossSection(G4bool CS, G4int F, G4int I,
-                                       G4int , G4int targZ, G4int targN, G4double Momentum)
-{
-  static const G4double mb38=1.E-11;// Conversion 10^-38 cm^2 to mb=10^-27 cm^2
-  static const G4int nE=65;   // !! If change this, change it in GetFunctions() (*.hh) !!
-  static const G4int mL=nE-1;
-  static const G4double EMi=0.; // Universal threshold of the reaction in GeV
-  static const G4double EMa=300.;       // Maximum tabulated Energy of nu_mu in GeV 
-  // *** Begin of the Associative memory for acceleration of the cross section calculations
-  static std::vector <G4double> colH;   //?? Vector of HighEnergyCoefficients (functional)
-  static std::vector <G4double*> TX;    // Vector of pointers to the TX tabulated functions
-  static std::vector <G4double*> QE;    // Vector of pointers to the QE tabulated functions
-  static G4bool first=true;             // Flag of initialization of the energy axis
-  // *** End of Static Definitions (Associative Memory) ***
-  //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Muon
-  //G4double TotEnergy2=Momentum;
-  onlyCS=CS;                            // Flag to calculate only CS (not TX & QE)
-  lastE=Momentum/GeV;                   // Kinetic energy of the muon neutrino (in GeV!)
-  if (lastE<=EMi)                       // Energy is below the minimum energy in the table
-  {
-    lastE=0.;
-    lastSig=0.;
-    return 0.;
-  }
-  G4int Z=targZ;                        // New Z, which can change the sign
-  if(F<=0)                              // This isotope was not the last used isotop
-  {
-    if(F<0)                          // This isotope was found in DAMDB =========> RETRIEVE
-    {
-      lastTX =TX[I];                 // Pointer to the prepared TX function (same isotope)
-      lastQE =QE[I];                 // Pointer to the prepared QE function (same isotope)
-   }
-   else                              // This isotope wasn't calculated previously => CREATE
-   {
-      if(first)
-      {
-        lastEN = new G4double[nE];   // This must be done only once!
-        Z=-Z;                        // To explain GetFunctions that E-axis must be filled
-        first=false;                 // To make it only once
-      }
-      lastTX = new G4double[nE];     // Allocate memory for the new TX function
-      lastQE = new G4double[nE];     // Allocate memory for the new QE function
-      G4int res=GetFunctions(Z,targN,lastTX,lastQE,lastEN);//@@analize(0=first,-1=bad,1=OK)
-      if(res<0) G4cerr<<"*W*G4NuMuNuclearCS::CalcCrossSect:Bad Function Retrieve"<<G4endl;
-      // *** The synchronization check ***
-      G4int sync=TX.size();
-      if(sync!=I) G4cerr<<"***G4NuMuNuclearCS::CalcCrossSect:Sync.="<<sync<<"#"<<I<<G4endl;
-      TX.push_back(lastTX);
-      QE.push_back(lastQE);
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW Calculate the Cross Section =====================
-  if (lastE<=EMi)                    // Check that antiNuEnergy is higher than ThreshE
-  {
-    lastE=0.;
-    lastSig=0.;
-    return 0.;
-  }
-  if(lastE<EMa) // Linear fit is made explicitly to fix the last bin for the randomization
-  {
-    G4int chk=1;
-    G4int ran=mL/2;
-    G4int sep=ran;  // as a result = an index of the left edge of the interval
-    while(ran>=2)
-    {
-      G4int newran=ran/2;
-      if(lastE<=lastEN[sep]) sep-=newran;
-      else                   sep+=newran;
-      ran=newran;
-      chk=chk+chk; 
-    }
-    if(chk+chk!=mL) G4cerr<<"*Warn*G4NuMuNuclearCS::CalcCS:Table! mL="<<mL<<G4endl;
-    G4double lowE=lastEN[sep];
-    G4double highE=lastEN[sep+1];
-    G4double lowTX=lastTX[sep];
-    if(lastE<lowE||sep>=mL||lastE>highE)
-      G4cerr<<"*Warn*G4NuMuNuclearCS::CalcCS:Bin! "<<lowE<<" < "<<lastE<<" < "<<highE
-            <<", sep="<<sep<<", mL="<<mL<<G4endl;
-    lastSig=lastE*(lastE-lowE)*(lastTX[sep+1]-lowTX)/(highE-lowE)+lowTX; // Recover *E
-    if(!onlyCS)                       // Skip the differential cross-section parameters
-    {
-      G4double lowQE=lastQE[sep];
-      lastQEL=(lastE-lowE)*(lastQE[sep+1]-lowQE)/(highE-lowE)+lowQE;
-#ifdef pdebug
-      G4cout<<"G4NuMuNuclearCS::CalcCS: T="<<lastSig<<",Q="<<lastQEL<<",E="<<lastE<<G4endl;
-#endif
-    }
-  }
-  else
-  {
-    lastSig=lastTX[mL]; // @@ No extrapolation, just a const, while it looks shrinking...
-    lastQEL=lastQE[mL];
-  }
-  if(lastQEL<0.) lastQEL = 0.;
-  if(lastSig<0.) lastSig = 0.;
-  // The cross-sections are expected to be in mb
-  lastSig*=mb38;
-  if(!onlyCS) lastQEL*=mb38;
-  return lastSig;
-}
-
-// Calculate the cros-section functions
-// ****************************************************************************************
-// *** This tables are the same for all lepto-nuclear reactions, only mass is different ***
-// ***@@ IT'S REASONABLE TO MAKE ADDiTIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR WITH THIS@@ ***
-// ****************************************************************************************
-G4int G4QANuANuNuclearCrossSection::GetFunctions (G4int z, G4int n,
-                                                     G4double* t, G4double* q, G4double* e)
-{
-  static const G4int nE=65; // !! If change this, change it in GetCrossSection() (*.cc) !!
-  static const G4double nuEn[nE]={0.,
-  1.00463e-5,1.05336e-5,1.10692e-5,1.16592e-5,1.23109e-5,1.30323e-5,1.38331e-5,1.47245e-5,
-  1.57194e-5,1.68335e-5,1.80848e-5,1.94948e-5,2.10894e-5,2.28991e-5,2.49608e-5,2.73189e-5,
-  3.00273e-5,3.31516e-5,3.67722e-5,4.09881e-5,4.59217e-5,5.17255e-5,5.85908e-5,6.67583e-5,
-  7.65338e-5,8.83078e-5,.000102583,.000120011,.000141441,.000167995,.000201160,.000242926,
-  .000295985,.000364008,.000452051,.000567152,.000719210,.000922307,.001196710,.001571930,
-  .002091530,.002820590,.003857810,.005354930,.007548840,.010815300,.015760100,.023376900,
-  .035325600,.054430800,.085595700,.137508000,.225898000,.379892000,.654712000,1.15767000,
-  2.10277000,3.92843000,7.55861000,14.9991000,30.7412000,65.1734000,143.155000,326.326000};
-  static const G4double TOTX[nE]={0.,
-  3.63538e-5,3.81165e-5,4.00539e-5,4.21884e-5,4.45454e-5,4.71548e-5,5.00511e-5,5.32747e-5,
-  5.68730e-5,6.09016e-5,6.54261e-5,7.05246e-5,7.62894e-5,8.28315e-5,9.02838e-5,9.88066e-5,
-  .000108594,.000119884,.000132964,.000148191,.000166007,.000186959,.000211736,.000241202,
-  .000276453,.000318890,.000370311,.000433042,.000510116,.000605516,.000724514,.000874144,
-  .001063870,.001306520,.001619660,.002027520,.002563780,.003275710,.004230080,.005521890,
-  .007286920,.009719890,.013099700,.018695100,.029208400,.042095000,.059253700,.082373900,
-  .113071000,.151041000,.191803000,.224208000,.234187000,.217774000,.187139000,.157818000,
-  .137494000,.125872000,.120462000,.119148000,.120418000,.123027000,.126408000,.129071000};
-  static const G4double QELX[nE]={0.,
-  .365220e-9,.401502e-9,.443364e-9,.491885e-9,.548393e-9,.614536e-9,.692362e-9,.784441e-9,
-  .894012e-9,1.02519e-9,1.18322e-9,1.37487e-9,1.60890e-9,1.89677e-9,2.25355e-9,2.69928e-9,
-  3.26079e-9,3.97433e-9,4.88937e-9,6.07407e-9,7.62331e-9,9.67058e-9,1.24058e-8,1.61022e-8,
-  2.11580e-8,2.81605e-8,3.79876e-8,5.19696e-8,7.21515e-8,1.01724e-7,1.45743e-7,2.12353e-7,
-  3.14890e-7,4.75585e-7,7.32171e-7,1.14991e-6,1.84390e-6,3.02121e-6,5.06217e-6,8.68002e-6,
-  1.52408e-5,2.74159e-5,5.05363e-5,.000100111,.000220489,.000455269,.000933841,.001925650,
-  .003994300,.008221270,.016417600,.030830400,.052902400,.082519200,.115560000,.149598000,
-  .184112000,.215102000,.238253000,.252949000,.261267000,.265626000,.267782000,.268791000};
-  // --------------------------------
-  G4int first=0;
-  if(z<0.)
-  {
-    first=1;
-    z=-z;
-  }
-  if(z<1 || z>92)             // neutron & plutonium are forbidden
-  {
-    G4cout<<"*G4QANuANuNuclearCrossSection::GetFunctions:Z="<<z<<".No CS returned"<<G4endl;
-    return -1;
-  }
-  for(G4int k=0; k<nE; k++)
-  {
-    G4double a=n+z;
-    G4double za=z+a;
-    G4double dz=z+z;
-    G4double da=a+a;
-    G4double ta=da+a;
-    if(first) e[k]=nuEn[k];       // Energy of neutrino E (first bin k=0 can be modified)
-    t[k]=TOTX[k]*nuEn[k]*(za+za)/ta+QELX[k]*(dz+dz-da)/ta; // TotalCrossSection
-    q[k]=QELX[k]*dz/a;                                     // QuasiElasticCrossSection
-  }
-  return first;
-}
-
-// Randomize Q2 from neutrino to the scattered muon when the scattering is quasi-elastic
-G4double G4QANuANuNuclearCrossSection::GetQEL_ExchangeQ2()
-{
-  static const double MN=.931494043;   // Nucleon mass (inside nucleus, atomicMassUnit,GeV)
-  static const G4double power=-3.5;    // direct power for the magic variable
-  static const G4double pconv=1./power;// conversion power for the magic variable
-  static const G4int nQ2=101;          // #Of point in the Q2l table (in GeV^2)
-  static const G4int lQ2=nQ2-1;        // index of the last in the Q2l table
-  static const G4int bQ2=lQ2-1;        // index of the before last in the Q2 ltable
-  // Reversed table
-  static const G4double Xl[nQ2]={5.20224e-16,
- .006125,.0137008,.0218166,.0302652,.0389497,.0478144,.0568228,.0659497,.0751768,.0844898,
- .093878, .103332, .112844, .122410, .132023, .141680, .151376, .161109, .170875, .180672,
- .190499, .200352, .210230, .220131, .230055, .239999, .249963, .259945, .269944, .279960,
- .289992, .300039, .310099, .320173, .330260, .340359, .350470, .360592, .370724, .380867,
- .391019, .401181, .411352, .421531, .431719, .441915, .452118, .462329, .472547, .482771,
- .493003, .503240, .513484, .523734, .533989, .544250, .554517, .564788, .575065, .585346,
- .595632, .605923, .616218, .626517, .636820, .647127, .657438, .667753, .678072, .688394,
- .698719, .709048, .719380, .729715, .740053, .750394, .760738, .771085, .781434, .791786,
- .802140, .812497, .822857, .833219, .843582, .853949, .864317, .874687, .885060, .895434,
- .905810, .916188, .926568, .936950, .947333, .957719, .968105, .978493, .988883, .999275};
-   // Direct table
-  static const G4double Xmax=Xl[lQ2];
-  static const G4double Xmin=Xl[0];
-  static const G4double dX=(Xmax-Xmin)/lQ2;  // step in X(Q2, GeV^2)
-  static const G4double inl[nQ2]={0,
- 1.52225, 2.77846, 3.96651, 5.11612, 6.23990, 7.34467, 8.43466, 9.51272, 10.5809, 11.6406,
- 12.6932, 13.7394, 14.7801, 15.8158, 16.8471, 17.8743, 18.8979, 19.9181, 20.9353, 21.9496,
- 22.9614, 23.9707, 24.9777, 25.9826, 26.9855, 27.9866, 28.9860, 29.9837, 30.9798, 31.9745,
- 32.9678, 33.9598, 34.9505, 35.9400, 36.9284, 37.9158, 38.9021, 39.8874, 40.8718, 41.8553,
- 42.8379, 43.8197, 44.8007, 45.7810, 46.7605, 47.7393, 48.7174, 49.6950, 50.6718, 51.6481,
- 52.6238, 53.5990, 54.5736, 55.5476, 56.5212, 57.4943, 58.4670, 59.4391, 60.4109, 61.3822,
- 62.3531, 63.3236, 64.2937, 65.2635, 66.2329, 67.2019, 68.1707, 69.1390, 70.1071, 71.0748,
- 72.0423, 73.0095, 73.9763, 74.9429, 75.9093, 76.8754, 77.8412, 78.8068, 79.7721, 80.7373,
- 81.7022, 82.6668, 83.6313, 84.5956, 85.5596, 86.5235, 87.4872, 88.4507, 89.4140, 90.3771,
- 91.3401, 92.3029, 93.2656, 94.2281, 95.1904, 96.1526, 97.1147, 98.0766, 99.0384, 100.000};
-  G4double Enu=lastE;                 // Get energy of the last calculated cross-section
-  G4double dEnu=Enu+Enu;              // doubled energy of nu/anu
-  G4double Enu2=Enu*Enu;              // squared energy of nu/anu
-  G4double ME=Enu*MN;                 // M*E
-  G4double dME=ME+ME;                 // 2*M*E
-  G4double dEMN=(dEnu+MN)*ME;
-  G4double sqE=Enu*ME;
-  G4double E2M=MN*Enu2;
-  G4double ymax=(E2M+sqE)/dEMN;
-  G4double Q2mi=0.; // Q2_min(E_nu)
-  G4double Q2ma=dME*ymax;                                                  // Q2_max(E_nu)
-  G4double Xma=std::pow((1.+Q2mi),power);  // X_max(E_nu)
-  G4double Xmi=std::pow((1.+Q2ma),power);  // X_min(E_nu)
-  // Find the integral values integ(Xmi) & integ(Xma) using the direct table
-  G4double rXi=(Xmi-Xmin)/dX;
-  G4int    iXi=static_cast<int>(rXi);
-  if(iXi<0) iXi=0;
-  if(iXi>bQ2) iXi=bQ2;
-  G4double dXi=rXi-iXi;
-  G4double bnti=inl[iXi];
-  G4double inti=bnti+dXi*(inl[iXi+1]-bnti);
-  //
-  G4double rXa=(Xma-Xmin)/dX;
-  G4int    iXa=static_cast<int>(rXa);
-  if(iXa<0) iXa=0;
-  if(iXa>bQ2) iXa=bQ2;
-  G4double dXa=rXa-iXa;
-  G4double bnta=inl[iXa];
-  G4double inta=bnta+dXa*(inl[iXa+1]-bnta);
-  // *** Find X using the reversed table ***
-  G4double intx=inti+(inta-inti)*G4UniformRand();
-  G4int    intc=static_cast<int>(intx);
-  if(intc<0) intc=0;
-  if(intc>bQ2) intc=bQ2;         // If it is more than max, then the BAD extrapolation
-  G4double dint=intx-intc;
-  G4double mX=Xl[intc];
-  G4double X=mX+dint*(Xl[intc+1]-mX);
-  G4double Q2=std::pow(X,pconv)-1.;
-  return Q2*GeV*GeV;
-}
-
-// Randomize Q2 from neutrino to the scattered muon when the scattering is not quasiElastic
-G4double G4QANuANuNuclearCrossSection::GetNQE_ExchangeQ2()
-{
-  static const double mpi=.13957018;    // charged pi meson mass in GeV
-  static const double MN=.931494043;    // Nucleon mass (inside nucleus,atomicMassUnit,GeV)
-  static const double dMN=MN+MN;        // 2*M_N in GeV
-  static const double mcV=(dMN+mpi)*mpi;// constant of W>M+mc cut for Quasi-Elastic
-  static const G4int power=7;           // direct power for the magic variable
-  static const G4double pconv=1./power; // conversion power for the magic variable
-  static const G4int nX=21;             // #Of point in the Xl table (in GeV^2)
-  static const G4int lX=nX-1;           // index of the last in the Xl table
-  static const G4int bX=lX-1;           // @@ index of the before last in the Xl table
-  static const G4int nE=20;             // #Of point in the El table (in GeV^2)
-  static const G4int bE=nE-1;           // index of the last in the El table
-  static const G4int pE=bE-1;           // index of the before last in the El table
-  // Reversed table
-  static const G4double X0[nX]={5.21412e-05,
- .437860, .681908, .891529, 1.08434, 1.26751, 1.44494, 1.61915, 1.79198, 1.96493, 2.13937,
- 2.31664, 2.49816, 2.68559, 2.88097, 3.08705, 3.30774, 3.54917, 3.82233, 4.15131, 4.62182};
-  static const G4double X1[nX]={.00102591,
- 1.00443, 1.55828, 2.03126, 2.46406, 2.87311, 3.26723, 3.65199, 4.03134, 4.40835, 4.78561,
- 5.16549, 5.55031, 5.94252, 6.34484, 6.76049, 7.19349, 7.64917, 8.13502, 8.66246, 9.25086};
-  static const G4double X2[nX]={.0120304,
- 2.59903, 3.98637, 5.15131, 6.20159, 7.18024, 8.10986, 9.00426, 9.87265, 10.7217, 11.5564,
- 12.3808, 13.1983, 14.0116, 14.8234, 15.6359, 16.4515, 17.2723, 18.1006, 18.9386, 19.7892};
-  static const G4double X3[nX]={.060124,
- 5.73857, 8.62595, 10.9849, 13.0644, 14.9636, 16.7340, 18.4066, 20.0019, 21.5342, 23.0142,
- 24.4497, 25.8471, 27.2114, 28.5467, 29.8564, 31.1434, 32.4102, 33.6589, 34.8912, 36.1095};
-  static const G4double X4[nX]={.0992363,
- 8.23746, 12.1036, 15.1740, 17.8231, 20.1992, 22.3792, 24.4092, 26.3198, 28.1320, 29.8615,
- 31.5200, 33.1169, 34.6594, 36.1536, 37.6044, 39.0160, 40.3920, 41.7353, 43.0485, 44.3354};
-  static const G4double X5[nX]={.0561127,
- 7.33661, 10.5694, 13.0778, 15.2061, 17.0893, 18.7973, 20.3717, 21.8400, 23.2211, 24.5291,
- 25.7745, 26.9655, 28.1087, 29.2094, 30.2721, 31.3003, 32.2972, 33.2656, 34.2076, 35.1265};
-  static const G4double X6[nX]={.0145859,
- 4.81774, 6.83565, 8.37399, 9.66291, 10.7920, 11.8075, 12.7366, 13.5975, 14.4025, 15.1608,
- 15.8791, 16.5628, 17.2162, 17.8427, 18.4451, 19.0259, 19.5869, 20.1300, 20.6566, 21.1706};
-  static const G4double X7[nX]={.00241155,
- 2.87095, 4.02492, 4.89243, 5.61207, 6.23747, 6.79613, 7.30433, 7.77270, 8.20858, 8.61732,
- 9.00296, 9.36863, 9.71682, 10.0495, 10.3684, 10.6749, 10.9701, 11.2550, 11.5306, 11.7982};
-  static const G4double X8[nX]={.000316863,
- 1.76189, 2.44632, 2.95477, 3.37292, 3.73378, 4.05420, 4.34415, 4.61009, 4.85651, 5.08666,
- 5.30299, 5.50738, 5.70134, 5.88609, 6.06262, 6.23178, 6.39425, 6.55065, 6.70149, 6.84742};
-  static const G4double X9[nX]={3.73544e-05,
- 1.17106, 1.61289, 1.93763, 2.20259, 2.42976, 2.63034, 2.81094, 2.97582, 3.12796, 3.26949,
- 3.40202, 3.52680, 3.64482, 3.75687, 3.86360, 3.96557, 4.06323, 4.15697, 4.24713, 4.33413};
-  static const G4double XA[nX]={4.19131e-06,
- .849573, 1.16208, 1.38955, 1.57379, 1.73079, 1.86867, 1.99221, 2.10451, 2.20770, 2.30332,
- 2.39252, 2.47622, 2.55511, 2.62977, 2.70066, 2.76818, 2.83265, 2.89437, 2.95355, 3.01051};
-  static const G4double XB[nX]={4.59981e-07,
- .666131, .905836, 1.07880, 1.21796, 1.33587, 1.43890, 1.53080, 1.61399, 1.69011, 1.76040,
- 1.82573, 1.88682, 1.94421, 1.99834, 2.04959, 2.09824, 2.14457, 2.18878, 2.23107, 2.27162};
-  static const G4double XC[nX]={4.99861e-08,
- .556280, .752730, .893387, 1.00587, 1.10070, 1.18317, 1.25643, 1.32247, 1.38269, 1.43809,
- 1.48941, 1.53724, 1.58203, 1.62416, 1.66391, 1.70155, 1.73728, 1.77128, 1.80371, 1.83473};
-  static const G4double XD[nX]={5.40832e-09,
- .488069, .657650, .778236, .874148, .954621, 1.02432, 1.08599, 1.14138, 1.19172, 1.23787,
- 1.28049, 1.32008, 1.35705, 1.39172, 1.42434, 1.45514, 1.48429, 1.51197, 1.53829, 1.56339};
-  static const G4double XE[nX]={5.84029e-10,
- .445057, .597434, .705099, .790298, .861468, .922865, .976982, 1.02542, 1.06930, 1.10939,
- 1.14630, 1.18050, 1.21233, 1.24208, 1.27001, 1.29630, 1.32113, 1.34462, 1.36691, 1.38812};
-  static const G4double XF[nX]={6.30137e-11,
- .418735, .560003, .659168, .737230, .802138, .857898, .906854, .950515, .989915, 1.02580,
- 1.05873, 1.08913, 1.11734, 1.14364, 1.16824, 1.19133, 1.21306, 1.23358, 1.25298, 1.27139};
-  static const G4double XG[nX]={6.79627e-12,
- .405286, .539651, .633227, .706417, .766929, .818642, .863824, .903931, .939963, .972639,
- 1.00250, 1.02995, 1.05532, 1.07887, 1.10082, 1.12134, 1.14058, 1.15867, 1.17572, 1.19183};
-  static const G4double XH[nX]={7.32882e-13,
- .404391, .535199, .625259, .695036, .752243, .800752, .842823, .879906, .912994, .942802,
- .969862, .994583, 1.01729, 1.03823, 1.05763, 1.07566, 1.09246, 1.10816, 1.12286, 1.13667};
-  static const G4double XI[nX]={7.90251e-14,
- .418084, .548382, .636489, .703728, .758106, .803630, .842633, .876608, .906576, .933269,
- .957233, .978886, .998556, 1.01651, 1.03295, 1.04807, 1.06201, 1.07489, 1.08683, 1.09792};
-  static const G4double XJ[nX]={8.52083e-15,
- .447299, .579635, .666780, .731788, .783268, .825512, .861013, .891356, .917626, .940597,
- .960842, .978802, .994820, 1.00917, 1.02208, 1.03373, 1.04427, 1.05383, 1.06253, 1.07046};
-  // Direct table
-  static const G4double Xmin[nE]={X0[0],X1[0],X2[0],X3[0],X4[0],X5[0],X6[0],X7[0],X8[0],
-                        X9[0],XA[0],XB[0],XC[0],XD[0],XE[0],XF[0],XG[0],XH[0],XI[0],XJ[0]};
-  static const G4double dX[nE]={
-    (X0[lX]-X0[0])/lX, (X1[lX]-X1[0])/lX, (X2[lX]-X2[0])/lX, (X3[lX]-X3[0])/lX,
-    (X4[lX]-X4[0])/lX, (X5[lX]-X5[0])/lX, (X6[lX]-X6[0])/lX, (X7[lX]-X7[0])/lX,
-    (X8[lX]-X8[0])/lX, (X9[lX]-X9[0])/lX, (XA[lX]-XA[0])/lX, (XB[lX]-XB[0])/lX,
-    (XC[lX]-XC[0])/lX, (XD[lX]-XD[0])/lX, (XE[lX]-XE[0])/lX, (XF[lX]-XF[0])/lX,
-    (XG[lX]-XG[0])/lX, (XH[lX]-XH[0])/lX, (XI[lX]-XI[0])/lX, (XJ[lX]-XJ[0])/lX};
-  static const G4double* Xl[nE]=
-                             {X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,XA,XB,XC,XD,XE,XF,XG,XH,XI,XJ};
-  static const G4double I0[nX]={0,
- .354631, 1.08972, 2.05138, 3.16564, 4.38343, 5.66828, 6.99127, 8.32858, 9.65998, 10.9680,
- 12.2371, 13.4536, 14.6050, 15.6802, 16.6686, 17.5609, 18.3482, 19.0221, 19.5752, 20.0000};
-  static const G4double I1[nX]={0,
- .281625, .877354, 1.67084, 2.60566, 3.64420, 4.75838, 5.92589, 7.12829, 8.34989, 9.57708,
- 10.7978, 12.0014, 13.1781, 14.3190, 15.4162, 16.4620, 17.4496, 18.3724, 19.2245, 20.0000};
-  static const G4double I2[nX]={0,
- .201909, .642991, 1.24946, 1.98463, 2.82370, 3.74802, 4.74263, 5.79509, 6.89474, 8.03228,
- 9.19947, 10.3889, 11.5938, 12.8082, 14.0262, 15.2427, 16.4527, 17.6518, 18.8356, 20.0000};
-  static const G4double I3[nX]={0,
- .140937, .461189, .920216, 1.49706, 2.17728, 2.94985, 3.80580, 4.73758, 5.73867, 6.80331,
- 7.92637, 9.10316, 10.3294, 11.6013, 12.9150, 14.2672, 15.6548, 17.0746, 18.5239, 20.0000};
-  static const G4double I4[nX]={0,
- .099161, .337358, .694560, 1.16037, 1.72761, 2.39078, 3.14540, 3.98768, 4.91433, 5.92245,
- 7.00942, 8.17287, 9.41060, 10.7206, 12.1010, 13.5500, 15.0659, 16.6472, 18.2924, 20.0000};
-  static const G4double I5[nX]={0,
- .071131, .255084, .543312, .932025, 1.41892, 2.00243, 2.68144, 3.45512, 4.32283, 5.28411,
- 6.33859, 7.48602, 8.72621, 10.0590, 11.4844, 13.0023, 14.6128, 16.3158, 18.1115, 20.0000};
-  static const G4double I6[nX]={0,
- .053692, .202354, .443946, .778765, 1.20774, 1.73208, 2.35319, 3.07256, 3.89177, 4.81249,
- 5.83641, 6.96528, 8.20092, 9.54516, 10.9999, 12.5670, 14.2486, 16.0466, 17.9630, 20.0000};
-  static const G4double I7[nX]={0,
- .043065, .168099, .376879, .672273, 1.05738, 1.53543, 2.10973, 2.78364, 3.56065, 4.44429,
- 5.43819, 6.54610, 7.77186, 9.11940, 10.5928, 12.1963, 13.9342, 15.8110, 17.8313, 20.0000};
-  static const G4double I8[nX]={0,
- .036051, .143997, .327877, .592202, .941572, 1.38068, 1.91433, 2.54746, 3.28517, 4.13277,
- 5.09574, 6.17984, 7.39106, 8.73568, 10.2203, 11.8519, 13.6377, 15.5854, 17.7033, 20.0000};
-  static const G4double I9[nX]={0,
- .030977, .125727, .289605, .528146, .846967, 1.25183, 1.74871, 2.34384, 3.04376, 3.85535,
- 4.78594, 5.84329, 7.03567, 8.37194, 9.86163, 11.5150, 13.3430, 15.3576, 17.5719, 20.0000};
-  static const G4double IA[nX]={0,
- .027129, .111420, .258935, .475812, .768320, 1.14297, 1.60661, 2.16648, 2.83034, 3.60650,
- 4.50394, 5.53238, 6.70244, 8.02569, 9.51488, 11.1841, 13.0488, 15.1264, 17.4362, 20.0000};
-  static const G4double IB[nX]={0,
- .024170, .100153, .234345, .433198, .703363, 1.05184, 1.48607, 2.01409, 2.64459, 3.38708,
- 4.25198, 5.25084, 6.39647, 7.70319, 9.18708, 10.8663, 12.7617, 14.8968, 17.2990, 20.0000};
-  static const G4double IC[nX]={0,
- .021877, .091263, .214670, .398677, .650133, .976322, 1.38510, 1.88504, 2.48555, 3.19709,
- 4.03129, 5.00127, 6.12184, 7.40989, 8.88482, 10.5690, 12.4888, 14.6748, 17.1638, 20.0000};
-  static const G4double ID[nX]={0,
- .020062, .084127, .198702, .370384, .606100, .913288, 1.30006, 1.77535, 2.34912, 3.03253,
- 3.83822, 4.78063, 5.87634, 7.14459, 8.60791, 10.2929, 12.2315, 14.4621, 17.0320, 20.0000};
-  static const G4double IE[nX]={0,
- .018547, .078104, .185102, .346090, .567998, .858331, 1.22535, 1.67824, 2.22735, 2.88443,
- 3.66294, 4.57845, 5.64911, 6.89637, 8.34578, 10.0282, 11.9812, 14.2519, 16.8993, 20.0000};
-  static const G4double IF[nX]={0,
- .017143, .072466, .172271, .323007, .531545, .805393, 1.15288, 1.58338, 2.10754, 2.73758,
- 3.48769, 4.37450, 5.41770, 6.64092, 8.07288, 9.74894, 11.7135, 14.0232, 16.7522, 20.0000};
-  static const G4double IG[nX]={0,
- .015618, .066285, .158094, .297316, .490692, .745653, 1.07053, 1.47479, 1.96931, 2.56677,
- 3.28205, 4.13289, 5.14068, 6.33158, 7.73808, 9.40133, 11.3745, 13.7279, 16.5577, 20.0000};
-  static const G4double IH[nX]={0,
- .013702, .058434, .139923, .264115, .437466, .667179, .961433, 1.32965, 1.78283, 2.33399,
- 2.99871, 3.79596, 4.74916, 5.88771, 7.24937, 8.88367, 10.8576, 13.2646, 16.2417, 20.0000};
-  static const G4double II[nX]={0,
- .011264, .048311, .116235, .220381, .366634, .561656, .813132, 1.13008, 1.52322, 2.00554,
- 2.59296, 3.30542, 4.16834, 5.21490, 6.48964, 8.05434, 9.99835, 12.4580, 15.6567, 20.0000};
-  static const G4double IJ[nX]={0,
- .008628, .037206, .089928, .171242, .286114, .440251, .640343, .894382, 1.21208, 1.60544,
- 2.08962, 2.68414, 3.41486, 4.31700, 5.44048, 6.85936, 8.69067, 11.1358, 14.5885, 20.0000};
-  static const G4double* Il[nE]=
-                             {I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ};
-  static const G4double lE[nE]={
--1.98842,-1.58049,-1.17256,-.764638,-.356711, .051215, .459141, .867068, 1.27499, 1.68292,
- 2.09085, 2.49877, 2.90670, 3.31463, 3.72255, 4.13048, 4.53840, 4.94633, 5.35426, 5.76218};
-  static const G4double lEmi=lE[0];
-  static const G4double lEma=lE[nE-1];
-  static const G4double dlE=(lEma-lEmi)/bE;
-  //***************************************************************************************
-  G4double Enu=lastE;                 // Get energy of the last calculated cross-section
-  G4double lEn=std::log(Enu);         // log(E) for interpolation
-  G4double rE=(lEn-lEmi)/dlE;         // Position of the energy
-  G4int fE=static_cast<int>(rE);      // Left bin for interpolation
-  if(fE<0) fE=0;
-  if(fE>pE)fE=pE;
-  G4int    sE=fE+1;                   // Right bin for interpolation
-  G4double dE=rE-fE;                  // relative log shift from the left bin
-  G4double dEnu=Enu+Enu;              // doubled energy of nu/anu
-  G4double Enu2=Enu*Enu;              // squared energy of nu/anu
-  G4double Emu=Enu;                   // Free Energy of neutrino/anti-neutrino
-  G4double ME=Enu*MN;                 // M*E
-  G4double dME=ME+ME;                 // 2*M*E
-  G4double dEMN=(dEnu+MN)*ME;
-  G4double sqE=Enu*ME;
-  G4double E2M=MN*Enu2;
-  G4double ymax=(E2M+sqE)/dEMN;
-  G4double Q2mi=0.;                   // Q2_min(E_nu)
-  G4double Q2ma=dME*ymax;             // Q2_max(E_nu)
-  G4double Q2nq=Emu*dMN-mcV;
-  if(Q2ma>Q2nq) Q2ma=Q2nq;            // Correction for Non Quasi Elastic
-  // --- now r_min=Q2mi/Q2ma and r_max=1.; when r is randomized -> Q2=r*Q2ma ---
-  G4double Rmi=Q2mi/Q2ma;
-  G4double shift=.875/(1.+.2977/Enu/Enu)/std::pow(Enu,.78);
-  // --- E-interpolation must be done in a log scale ---
-  G4double Xmi=std::pow((shift-Rmi),power);// X_min(E_nu)
-  G4double Xma=std::pow((shift-1.),power); // X_max(E_nu)
-  // Find the integral values integ(Xmi) & integ(Xma) using the direct table
-  G4double idX=dX[fE]+dE*(dX[sE]-dX[fE]); // interpolated X step
-  G4double iXmi=Xmin[fE]+dE*(Xmin[sE]-Xmin[fE]); // interpolated X minimum
-  G4double rXi=(Xmi-iXmi)/idX;
-  G4int    iXi=static_cast<int>(rXi);
-  if(iXi<0) iXi=0;
-  if(iXi>bX) iXi=bX;
-  G4double dXi=rXi-iXi;
-  G4double bntil=Il[fE][iXi];
-  G4double intil=bntil+dXi*(Il[fE][iXi+1]-bntil);
-  G4double bntir=Il[sE][iXi];
-  G4double intir=bntir+dXi*(Il[sE][iXi+1]-bntir);
-  G4double inti=intil+dE*(intir-intil);// interpolated begin of the integral
-  //
-  G4double rXa=(Xma-iXmi)/idX;
-  G4int    iXa=static_cast<int>(rXa);
-  if(iXa<0) iXa=0;
-  if(iXa>bX) iXa=bX;
-  G4double dXa=rXa-iXa;
-  G4double bntal=Il[fE][iXa];
-  G4double intal=bntal+dXa*(Il[fE][iXa+1]-bntal);
-  G4double bntar=Il[sE][iXa];
-  G4double intar=bntar+dXa*(Il[sE][iXa+1]-bntar);
-  G4double inta=intal+dE*(intar-intal);// interpolated end of the integral
-  //
-  // *** Find X using the reversed table ***
-  G4double intx=inti+(inta-inti)*G4UniformRand(); 
-  G4int    intc=static_cast<int>(intx);
-  if(intc<0) intc=0;
-  if(intc>bX) intc=bX;
-  G4double dint=intx-intc;
-  G4double mXl=Xl[fE][intc];
-  G4double Xlb=mXl+dint*(Xl[fE][intc+1]-mXl);
-  G4double mXr=Xl[sE][intc];
-  G4double Xrb=mXr+dint*(Xl[sE][intc+1]-mXr);
-  G4double X=Xlb+dE*(Xrb-Xlb);        // interpolated X value
-  G4double R=shift-std::pow(X,pconv);
-  G4double Q2=R*Q2ma;
-  return Q2*GeV*GeV;
-}
-
-// It returns a fraction of the direct interaction of the neutrino with quark-partons
-G4double G4QANuANuNuclearCrossSection::GetDirectPart(G4double Q2)
-{
-  G4double f=Q2/4.62;
-  G4double ff=f*f;
-  G4double r=ff*ff;
-  G4double s=std::pow((1.+.6/Q2),(-1.-(1.+r)/(12.5+r/.3)));
-  //@@ It is the same for nu/anu, but for nu it is a bit less, and for anu a bit more (par)
-  return 1.-s*(1.-s/2);
-}
-
-// #of quark-partons in the nonperturbative phase space is the same for neut and anti-neut
-G4double G4QANuANuNuclearCrossSection::GetNPartons(G4double Q2)
-{
-  return 3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space
-}
-
-// This class can provide only virtual exchange by gamma (a substitute for Z0 boson)
-G4int G4QANuANuNuclearCrossSection::GetExchangePDGCode() {return 22;}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuENuclearCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuENuclearCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,775 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QANuENuclearCrossSection.cc,v 1.4 2009/05/08 15:16:26 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QANuENuclearCrossSection for (anti_nu_e,e+) cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 24-SEP-2007
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 24-SEP-2007
-// 
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-//=========================================================================================
-
-//#define debug
-//#define edebug
-//#define pdebug
-//#define ppdebug
-//#define tdebug
-//#define sdebug
-
-#include "G4QANuENuclearCrossSection.hh"
-
-// Initialization of the
-G4bool    G4QANuENuclearCrossSection::onlyCS=true;//Flag to calculate only CS (not QE)
-G4double  G4QANuENuclearCrossSection::lastSig=0.;//Last calculated total cross section
-G4double  G4QANuENuclearCrossSection::lastQEL=0.;//Last calculated quasi-el. cross section
-G4int     G4QANuENuclearCrossSection::lastL=0;   //Last used in cross section TheLastBin
-G4double  G4QANuENuclearCrossSection::lastE=0.;  //Last used in cross section TheEnergy
-G4double* G4QANuENuclearCrossSection::lastEN=0;  //Pointer to the Energy Scale of TX & QE
-G4double* G4QANuENuclearCrossSection::lastTX=0;  //Pointer to the LastArray of TX function
-G4double* G4QANuENuclearCrossSection::lastQE=0;  //Pointer to the LastArray of QE function
-G4int     G4QANuENuclearCrossSection::lastPDG=0; // The last PDG code of the projectile
-G4int     G4QANuENuclearCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QANuENuclearCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QANuENuclearCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QANuENuclearCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QANuENuclearCrossSection::lastCS=0.; // Last value of the Cross Section
-G4int     G4QANuENuclearCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QANuENuclearCrossSection::GetPointer()
-{
-  static G4QANuENuclearCrossSection theCrossSection;//**Static body of the Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QANuENuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom,
-                                                      G4int tgZ, G4int tgN, G4int pPDG)
-{
-  static G4int j;                      // A#0f records found in DB for this projectile
-  static std::vector <G4int>    colPDG;// Vector of the projectile PDG code
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-  G4double pEn=pMom;
-#ifdef debug
-  G4cout<<"G4QAENCS::GetCS:>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG="<<pPDG<<"("<<lastPDG<<"), T="<<pEn<<"("<<lastTH<<")"<<",Sz="
-        <<colN.size()<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  if(pPDG!=-12)
-  {
-#ifdef debug
-    G4cout<<"G4QAENCS::GetCS: *** Found pPDG="<<pPDG<<" ====> CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // projectile PDG=0 is a mistake (?!) @@
-  }
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tgN!=lastN || tgZ!=lastZ || pPDG!=lastPDG)// The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastPDG = pPDG;                    // The last PDG of the projectile
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-    if(lastI) for(G4int i=0; i<lastI; i++) if(colPDG[i]==pPDG) // The partType is found
-    {                                  // The nucleus with projPDG is found in AMDB
-      if(colN[i]==tgN && colZ[i]==tgZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QAENCS::GetCS:*Found*P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(pEn<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QAENCS::GetCS:Found T="<<pEn<<" < Threshold="<<lastTH<<",X=0"<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastCS =colCS[i];                // Last CrossSect (A-dependent)
-        if(std::fabs(lastP/pMom-1.)<tolerance)
-        {
-#ifdef pdebug
-          G4cout<<"G4QAENCS::GetCS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QAENCS::G:UpdaDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // read & update
-#ifdef pdebug
-        G4cout<<"G4QAENCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(lastCS<=0. && pEn>lastTH)    // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QAENCS::GetCS: New T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-        break;                           // Go out of the LOOP
-      }
-#ifdef pdebug
-      G4cout<<"---G4QAENCrossSec::GetCrosSec:pPDG="<<pPDG<<",j="<<j<<",N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<",cPDG="<<colPDG[i]<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      j++;                             // Increment a#0f records found in DB for this pPDG
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QAENCS::GetCrosSec:CalcNew P="<<pMom<<",f="<<fCS<<",lstI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,j,lastPDG,lastZ,lastN,pMom); //calculate & create
-      if(lastCS<=0.)
-      {
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QAENCrossSection::GetCrossSect: NewThresh="<<lastTH<<",T="<<pEn<<G4endl;
-#endif
-        if(pEn>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QAENCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QAENCS::GetCrosSec:New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      colN.push_back(tgN);
-      colZ.push_back(tgZ);
-      colPDG.push_back(pPDG);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colCS.push_back(lastCS);
-#ifdef pdebug
-      G4cout<<"G4QAENCS::GetCS:1st,P="<<pMom<<"(MeV),X="<<lastCS*millibarn<<"(mb)"<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QAENCS::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colPDG[lastI]=pPDG;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-  else if(pEn<=lastTH)
-  {
-#ifdef pdebug
-    G4cout<<"G4QAENCS::GetCS: Current T="<<pEn<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  else if(std::fabs(lastP/pMom-1.)<tolerance)
-  {
-#ifdef pdebug
-    G4cout<<"G4QAENCS::GetCS:OldCur P="<<pMom<<"="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return lastCS*millibarn;     // Use theLastCS
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"G4QAENCS::GetCS:UpdaCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastCS=CalculateCrossSection(fCS,1,j,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-    lastP=pMom;
-  }
-#ifdef pdebug
-  G4cout<<"G4QAENCS::GetCrSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  return lastCS*millibarn;
-}
-
-// Gives the threshold energy = the same for all nuclei (@@ can be reduced for hevy nuclei)
-G4double G4QANuENuclearCrossSection::ThresholdEnergy(G4int Z, G4int N, G4int)
-{
-  //static const G4double mNeut = G4NucleiProperties::GetNuclearMass(1,0)/GeV;
-  //static const G4double mProt = G4NucleiProperties::GetNuclearMass(1,1)/GeV;
-  //static const G4double mDeut = G4NucleiProperties::GetNuclearMass(2,1)/GeV/2.;
-  static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV)
-  static const G4double dmN=mN+mN;    // Doubled nucleon mass (2*AtomicMassUnit, GeV)
-  static const G4double me=.00051099892; // electron mass in GeV
-  static const G4double me2=me*me;    // Squared mass of an electron in GeV^2
-  static const G4double thresh=me+me2/dmN; // Universal threshold in GeV
-  // ---------
-  //static const G4double infEn = 9.e27;
-  G4double dN=0.;
-  if(Z>0||N>0) dN=thresh*GeV; // @@ if upgraded, change it in a total cross section
-  //@@ "dN=me+me2/G4NucleiProperties::GetNuclearMass(<G4double>(Z+N),<G4double>(Z)/GeV"
-  return dN;
-}
-
-// The main member function giving the gamma-A cross section (E_kin in MeV, CS in mb)
-G4double G4QANuENuclearCrossSection::CalculateCrossSection(G4bool CS, G4int F, G4int I,
-                                       G4int , G4int targZ, G4int targN, G4double Momentum)
-{
-  static const G4double mb38=1.E-11;// Conversion 10^-38 cm^2 to mb=10^-27 cm^2
-  static const G4int nE=65;   // !! If change this, change it in GetFunctions() !!
-  static const G4int mL=nE-1;
-  static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV)
-  static const G4double dmN=mN+mN;      // Doubled nucleon mass (2*AtomicMassUnit, GeV)
-  static const G4double me=.00051099892;// electron mass in GeV
-  static const G4double me2=me*me;      // Squared mass of an electron in GeV^2
-  static const G4double EMi=me+me2/dmN; // Universal threshold of the reaction in GeV
-  static const G4double EMa=300.;       // Maximum tabulated Energy of nu_e in GeV 
-  // *** Begin of the Associative memory for acceleration of the cross section calculations
-  static std::vector <G4double> colH;   //?? Vector of HighEnergyCoefficients (functional)
-  static std::vector <G4double*> TX;    // Vector of pointers to the TX tabulated functions
-  static std::vector <G4double*> QE;    // Vector of pointers to the QE tabulated functions
-  static G4bool first=true;             // Flag of initialization of the energy axis
-  // *** End of Static Definitions (Associative Memory) ***
-  //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Electron
-  //G4double TotEnergy2=Momentum;
-  onlyCS=CS;                            // Flag to calculate only CS (not TX & QE)
-  lastE=Momentum/GeV;                   // Kinetic energy of the electron neutrino (in GeV)
-  if (lastE<=EMi)                       // Energy is below the minimum energy in the table
-  {
-    lastE=0.;
-    lastSig=0.;
-    return 0.;
-  }
-  G4int Z=targZ;                        // New Z, which can change the sign
-  if(F<=0)                              // This isotope was not the last used isotop
-  {
-    if(F<0)                          // This isotope was found in DAMDB =========> RETRIEVE
-    {
-      lastTX =TX[I];                 // Pointer to the prepared TX function (same isotope)
-      lastQE =QE[I];                 // Pointer to the prepared QE function (same isotope)
-   }
-   else                              // This isotope wasn't calculated previously => CREATE
-   {
-      if(first)
-      {
-        lastEN = new G4double[nE];   // This must be done only once!
-        Z=-Z;                        // To explain GetFunctions that E-axis must be filled
-        first=false;                 // To make it only once
-      }
-      lastTX = new G4double[nE];     // Allocate memory for the new TX function
-      lastQE = new G4double[nE];     // Allocate memory for the new QE function
-      G4int res=GetFunctions(Z,targN,lastTX,lastQE,lastEN);//@@analize(0=first,-1=bad,1=OK)
-      if(res<0) G4cerr<<"*W*G4NuENuclearCS::CalcCrossSect:Bad Function Retrieve"<<G4endl;
-      // *** The synchronization check ***
-      G4int sync=TX.size();
-      if(sync!=I) G4cerr<<"***G4NuENuclearCS::CalcCrossSect:Sync.="<<sync<<"#"<<I<<G4endl;
-      TX.push_back(lastTX);
-      QE.push_back(lastQE);
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW Calculate the Cross Section =====================
-  if (lastE<=EMi)                    // Check that antiNuEnergy is higher than ThreshE
-  {
-    lastE=0.;
-    lastSig=0.;
-    return 0.;
-  }
-  if(lastE<EMa) // Linear fit is made explicitly to fix the last bin for the randomization
-  {
-    G4int chk=1;
-    G4int ran=mL/2;
-    G4int sep=ran;  // as a result = an index of the left edge of the interval
-    while(ran>=2)
-    {
-      G4int newran=ran/2;
-      G4double oldL=lastEN[sep];
-      if(lastE<=oldL) sep-=newran;
-      else            sep+=newran;
-#ifdef pdebug
-      G4cout<<"G4ANuE::CCS:n="<<newran<<",s="<<sep<<",E="<<lastE<<",oE="<<oldL<<G4endl;
-#endif
-      ran=newran;
-      chk=chk+chk; 
-    }
-    if(chk+chk!=mL) G4cerr<<"*Warn*G4NuENuclearCS::CalcCS:Table! mL="<<mL<<G4endl;
-    G4double lowE=lastEN[sep];
-    G4double highE=lastEN[sep+1];
-    G4double lowTX=lastTX[sep];
-    if(lastE<lowE||sep>=mL||lastE>highE)
-      G4cerr<<"*Warn*G4ANuENuclearCS::CalcCS:Bin! "<<lowE<<" < "<<lastE<<" < "<<highE
-            <<", sep="<<sep<<", mL="<<mL<<G4endl;
-    lastSig=lastE*(lastE-lowE)*(lastTX[sep+1]-lowTX)/(highE-lowE)+lowTX; // Recover *E
-    if(!onlyCS)                       // Skip the differential cross-section parameters
-    {
-      G4double lowQE=lastQE[sep];
-      lastQEL=(lastE-lowE)*(lastQE[sep+1]-lowQE)/(highE-lowE)+lowQE;
-#ifdef pdebug
-      G4cout<<"G4ANuENuclearCS::CalcCS: T="<<lastSig<<",Q="<<lastQEL<<",E="<<lastE<<G4endl;
-#endif
-    }
-  }
-  else
-  {
-    lastSig=lastTX[mL]; // @@ No extrapolation, just a const, while it looks shrinking...
-    lastQEL=lastQE[mL];
-  }
-  if(lastQEL<0.) lastQEL = 0.;
-  if(lastSig<0.) lastSig = 0.;
-  // The cross-sections are expected to be in mb
-  lastSig*=mb38;
-  if(!onlyCS) lastQEL*=mb38;
-  return lastSig;
-}
-
-// Calculate the cros-section functions
-// ****************************************************************************************
-// *** This tables are the same for all lepto-nuclear reactions, only mass is different ***
-// ***@@ IT'S REASONABLE TO MAKE ADDiTIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR WITH THIS@@ ***
-// ****************************************************************************************
-G4int G4QANuENuclearCrossSection::GetFunctions (G4int z, G4int n,
-                                                     G4double* t, G4double* q, G4double* e)
-{
-  static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV)
-  static const G4double dmN=mN+mN;    // Doubled nucleon mass (2*AtomicMassUnit, GeV)
-  static const G4double me=.00051099892; // electron mass in GeV
-  static const G4double me2=me*me;    // Squared mass of an electron in GeV^2
-  static const G4double thresh=me+me2/dmN; // Universal threshold in GeV
-  static const G4int nE=65; // !! If change this, change it in CalculateCrossSection() !!
-  static const G4double nuEn[nE]={thresh,
-    .00051331,.00053602,.00056078,.00058783,.00061743,.00064990,.00068559,.00072492,
-    .00076834,.00081641,.00086975,.00092912,.00099536,.00106950,.00115273,.00124646,
-    .00135235,.00147241,.00160901,.00176503,.00194392,.00214986,.00238797,.00266448,
-    .00298709,.00336531,.00381094,.00433879,.00496745,.00572047,.00662785,.00772806,
-    .00907075,.01072050,.01276190,.01530660,.01850330,.02255110,.02771990,.03437780,
-    .04303240,.05438970,.06944210,.08959920,.11688400,.15423600,.20597200,.27851200,
-    .38153100,.52979600,.74616300,1.0665200,1.5480900,2.2834800,3.4251100,5.2281000,
-    8.1270200,12.875900,20.808500,34.331200,57.877800,99.796200,176.16300,318.68200};
-  static const G4double TOTX[nE]={0.,
-    .00046923,.00160693,.00229560,.00288772,.00344344,.00398831,.00453725,.00510087,
-    .00568797,.00630663,.00696489,.00767121,.00843477,.00926586,.01017610,.01117910,
-    .01229040,.01352820,.01491430,.01647420,.01823820,.02024280,.02253130,.02515600,
-    .02818010,.03167950,.03574640,.04049260,.04605330,.05739330,.07028190,.08396290,
-    .09969400,.11756200,.13812500,.16207000,.19099600,.22447700,.26434900,.31051900,
-    .36357400,.42242900,.48500000,.54692800,.60140500,.63996800,.65519300,.64339200,
-    .60784300,.55734400,.50212600,.45116800,.40962600,.37854800,.35702100,.34330900,
-    .33576200,.33300100,.33387100,.33737700,.34235200,.34880100,.35507500,.35961200};
-  static const G4double QELX[nE]={0.,
-  2.40856e-7,8.61338e-7,1.28732e-6,1.69747e-6,2.12608e-6,2.59201e-6,3.11071e-6,3.69770e-6,
-  4.37028e-6,5.14877e-6,6.05773e-6,7.12746e-6,8.39567e-6,9.90987e-6,1.17304e-5,1.39343e-5,
-  1.66209e-5,1.99191e-5,2.39974e-5,2.90775e-5,3.54536e-5,4.35191e-5,5.38039e-5,6.70278e-5,
-  8.41765e-5,.000106611,.000136228,.000175689,.000228768,.000328317,.000465818,.000648870,
-  .000904299,.001260330,.001762740,.002480740,.003534040,.005062210,.007327720,.010675000,
-  .015645500,.022975800,.033679400,.049004300,.070294800,.098706100,.134951000,.179193000,
-  .231297000,.287287000,.344760000,.404397000,.465915000,.527060000,.584085000,.632748000,
-  .671346000,.699744000,.719355000,.732541000,.740996000,.746249000,.749265000,.751160000};
-  // --------------------------------
-  G4int first=0;
-  if(z<0.)
-  {
-    first=1;
-    z=-z;
-  }
-  if(z<1 || z>92)                 // neutron & plutonium are forbidden
-  {
-    G4cout<<"***G4QANuENuclearCrossSection::GetFunctions:Z="<<z<<".No CS returned"<<G4endl;
-    return -1;
-  }
-  for(G4int k=0; k<nE; k++)
-  {
-    G4double a=n+z;
-    G4double za=z+a;
-    G4double dz=z+z;
-    G4double da=a+a;
-    G4double ta=da+a;
-    if(first) e[k]=nuEn[k];       // Energy of neutrino E (first bin k=0 can be modified)
-    t[k]=TOTX[k]*nuEn[k]*(za+za)/ta+QELX[k]*(dz+dz-da)/ta; // TotalCrossSection
-    q[k]=QELX[k]*dz/a;                                     // QuasiElasticCrossSection
-  }
-  return first;
-}
-
-// Randomize Q2 from neutrino to the scattered electron when scattering is quasi-elastic
-G4double G4QANuENuclearCrossSection::GetQEL_ExchangeQ2()
-{
-  static const G4double me=.00051099892; // electron mass in GeV
-  static const G4double me2=me*me;     // Squared mass of an electron in GeV^2
-  static const G4double hme2=me2/2;    // .5*m_e^2 in GeV^2
-  static const double MN=.931494043;   // Nucleon mass (inside nucleus, atomicMassUnit,GeV)
-  static const double MN2=MN*MN;       // M_N^2 in GeV^2
-  static const G4double power=-3.5;    // direct power for the magic variable
-  static const G4double pconv=1./power;// conversion power for the magic variable
-  static const G4int nQ2=101;          // #Of point in the Q2l table (in GeV^2)
-  static const G4int lQ2=nQ2-1;        // index of the last in the Q2l table
-  static const G4int bQ2=lQ2-1;        // index of the before last in the Q2 ltable
-  // Reversed table
-  static const G4double Xl[nQ2]={5.20224e-16,
- .006125,.0137008,.0218166,.0302652,.0389497,.0478144,.0568228,.0659497,.0751768,.0844898,
- .093878, .103332, .112844, .122410, .132023, .141680, .151376, .161109, .170875, .180672,
- .190499, .200352, .210230, .220131, .230055, .239999, .249963, .259945, .269944, .279960,
- .289992, .300039, .310099, .320173, .330260, .340359, .350470, .360592, .370724, .380867,
- .391019, .401181, .411352, .421531, .431719, .441915, .452118, .462329, .472547, .482771,
- .493003, .503240, .513484, .523734, .533989, .544250, .554517, .564788, .575065, .585346,
- .595632, .605923, .616218, .626517, .636820, .647127, .657438, .667753, .678072, .688394,
- .698719, .709048, .719380, .729715, .740053, .750394, .760738, .771085, .781434, .791786,
- .802140, .812497, .822857, .833219, .843582, .853949, .864317, .874687, .885060, .895434,
- .905810, .916188, .926568, .936950, .947333, .957719, .968105, .978493, .988883, .999275};
-   // Direct table
-  static const G4double Xmax=Xl[lQ2];
-  static const G4double Xmin=Xl[0];
-  static const G4double dX=(Xmax-Xmin)/lQ2;  // step in X(Q2, GeV^2)
-  static const G4double inl[nQ2]={0,
- 1.52225, 2.77846, 3.96651, 5.11612, 6.23990, 7.34467, 8.43466, 9.51272, 10.5809, 11.6406,
- 12.6932, 13.7394, 14.7801, 15.8158, 16.8471, 17.8743, 18.8979, 19.9181, 20.9353, 21.9496,
- 22.9614, 23.9707, 24.9777, 25.9826, 26.9855, 27.9866, 28.9860, 29.9837, 30.9798, 31.9745,
- 32.9678, 33.9598, 34.9505, 35.9400, 36.9284, 37.9158, 38.9021, 39.8874, 40.8718, 41.8553,
- 42.8379, 43.8197, 44.8007, 45.7810, 46.7605, 47.7393, 48.7174, 49.6950, 50.6718, 51.6481,
- 52.6238, 53.5990, 54.5736, 55.5476, 56.5212, 57.4943, 58.4670, 59.4391, 60.4109, 61.3822,
- 62.3531, 63.3236, 64.2937, 65.2635, 66.2329, 67.2019, 68.1707, 69.1390, 70.1071, 71.0748,
- 72.0423, 73.0095, 73.9763, 74.9429, 75.9093, 76.8754, 77.8412, 78.8068, 79.7721, 80.7373,
- 81.7022, 82.6668, 83.6313, 84.5956, 85.5596, 86.5235, 87.4872, 88.4507, 89.4140, 90.3771,
- 91.3401, 92.3029, 93.2656, 94.2281, 95.1904, 96.1526, 97.1147, 98.0766, 99.0384, 100.000};
-  G4double Enu=lastE;                 // Get energy of the last calculated cross-section
-  G4double dEnu=Enu+Enu;              // doubled energy of nu/anu
-  G4double Enu2=Enu*Enu;              // squared energy of nu/anu
-  G4double ME=Enu*MN;                 // M*E
-  G4double dME=ME+ME;                 // 2*M*E
-  G4double dEMN=(dEnu+MN)*ME;
-  G4double MEm=ME-hme2;
-  G4double sqE=Enu*std::sqrt(MEm*MEm-me2*MN2);
-  G4double E2M=MN*Enu2-(Enu+MN)*hme2;
-  G4double ymax=(E2M+sqE)/dEMN;
-  G4double ymin=(E2M-sqE)/dEMN;
-  G4double rmin=1.-ymin;
-  G4double rhm2E=hme2/Enu2;
-  G4double Q2mi=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E)); // Q2_min(E_nu)
-  G4double Q2ma=dME*ymax;                                                  // Q2_max(E_nu)
-  G4double Xma=std::pow((1.+Q2mi),power);  // X_max(E_nu)
-  G4double Xmi=std::pow((1.+Q2ma),power);  // X_min(E_nu)
-  // Find the integral values integ(Xmi) & integ(Xma) using the direct table
-  G4double rXi=(Xmi-Xmin)/dX;
-  G4int    iXi=static_cast<int>(rXi);
-  if(iXi<0) iXi=0;
-  if(iXi>bQ2) iXi=bQ2;
-  G4double dXi=rXi-iXi;
-  G4double bnti=inl[iXi];
-  G4double inti=bnti+dXi*(inl[iXi+1]-bnti);
-  //
-  G4double rXa=(Xma-Xmin)/dX;
-  G4int    iXa=static_cast<int>(rXa);
-  if(iXa<0) iXa=0;
-  if(iXa>bQ2) iXa=bQ2;
-  G4double dXa=rXa-iXa;
-  G4double bnta=inl[iXa];
-  G4double inta=bnta+dXa*(inl[iXa+1]-bnta);
-  // *** Find X using the reversed table ***
-  G4double intx=inti+(inta-inti)*G4UniformRand();
-  G4int    intc=static_cast<int>(intx);
-  if(intc<0) intc=0;
-  if(intc>bQ2) intc=bQ2;         // If it is more than max, then the BAD extrapolation
-  G4double dint=intx-intc;
-  G4double mX=Xl[intc];
-  G4double X=mX+dint*(Xl[intc+1]-mX);
-  G4double Q2=std::pow(X,pconv)-1.;
-  return Q2*GeV*GeV;
-}
-
-// Randomize Q2 from neutrino to the scattered electron when scattering is not quasiElastic
-G4double G4QANuENuclearCrossSection::GetNQE_ExchangeQ2()
-{
-  static const double mpi=.13957018;    // charged pi meson mass in GeV
-  static const G4double me=.00051099892;// electron mass in GeV
-  static const G4double me2=me*me;      // Squared mass of an electron in GeV^2
-  static const G4double hme2=me2/2;     // .5*m_e^2 in GeV^2
-  static const double MN=.931494043;    // Nucleon mass (inside nucleus,atomicMassUnit,GeV)
-  static const double MN2=MN*MN;        // M_N^2 in GeV^2
-  static const double dMN=MN+MN;        // 2*M_N in GeV
-  static const double mcV=(dMN+mpi)*mpi;// constant of W>M+mc cut for Quasi-Elastic
-  static const G4int power=7;           // direct power for the magic variable
-  static const G4double pconv=1./power; // conversion power for the magic variable
-  static const G4int nX=21;             // #Of point in the Xl table (in GeV^2)
-  static const G4int lX=nX-1;           // index of the last in the Xl table
-  static const G4int bX=lX-1;           // @@ index of the before last in the Xl table
-  static const G4int nE=20;             // #Of point in the El table (in GeV^2)
-  static const G4int bE=nE-1;           // index of the last in the El table
-  static const G4int pE=bE-1;           // index of the before last in the El table
-  // Reversed table
-  static const G4double X0[nX]={5.21412e-05,
- .437860, .681908, .891529, 1.08434, 1.26751, 1.44494, 1.61915, 1.79198, 1.96493, 2.13937,
- 2.31664, 2.49816, 2.68559, 2.88097, 3.08705, 3.30774, 3.54917, 3.82233, 4.15131, 4.62182};
-  static const G4double X1[nX]={.00102591,
- 1.00443, 1.55828, 2.03126, 2.46406, 2.87311, 3.26723, 3.65199, 4.03134, 4.40835, 4.78561,
- 5.16549, 5.55031, 5.94252, 6.34484, 6.76049, 7.19349, 7.64917, 8.13502, 8.66246, 9.25086};
-  static const G4double X2[nX]={.0120304,
- 2.59903, 3.98637, 5.15131, 6.20159, 7.18024, 8.10986, 9.00426, 9.87265, 10.7217, 11.5564,
- 12.3808, 13.1983, 14.0116, 14.8234, 15.6359, 16.4515, 17.2723, 18.1006, 18.9386, 19.7892};
-  static const G4double X3[nX]={.060124,
- 5.73857, 8.62595, 10.9849, 13.0644, 14.9636, 16.7340, 18.4066, 20.0019, 21.5342, 23.0142,
- 24.4497, 25.8471, 27.2114, 28.5467, 29.8564, 31.1434, 32.4102, 33.6589, 34.8912, 36.1095};
-  static const G4double X4[nX]={.0992363,
- 8.23746, 12.1036, 15.1740, 17.8231, 20.1992, 22.3792, 24.4092, 26.3198, 28.1320, 29.8615,
- 31.5200, 33.1169, 34.6594, 36.1536, 37.6044, 39.0160, 40.3920, 41.7353, 43.0485, 44.3354};
-  static const G4double X5[nX]={.0561127,
- 7.33661, 10.5694, 13.0778, 15.2061, 17.0893, 18.7973, 20.3717, 21.8400, 23.2211, 24.5291,
- 25.7745, 26.9655, 28.1087, 29.2094, 30.2721, 31.3003, 32.2972, 33.2656, 34.2076, 35.1265};
-  static const G4double X6[nX]={.0145859,
- 4.81774, 6.83565, 8.37399, 9.66291, 10.7920, 11.8075, 12.7366, 13.5975, 14.4025, 15.1608,
- 15.8791, 16.5628, 17.2162, 17.8427, 18.4451, 19.0259, 19.5869, 20.1300, 20.6566, 21.1706};
-  static const G4double X7[nX]={.00241155,
- 2.87095, 4.02492, 4.89243, 5.61207, 6.23747, 6.79613, 7.30433, 7.77270, 8.20858, 8.61732,
- 9.00296, 9.36863, 9.71682, 10.0495, 10.3684, 10.6749, 10.9701, 11.2550, 11.5306, 11.7982};
-  static const G4double X8[nX]={.000316863,
- 1.76189, 2.44632, 2.95477, 3.37292, 3.73378, 4.05420, 4.34415, 4.61009, 4.85651, 5.08666,
- 5.30299, 5.50738, 5.70134, 5.88609, 6.06262, 6.23178, 6.39425, 6.55065, 6.70149, 6.84742};
-  static const G4double X9[nX]={3.73544e-05,
- 1.17106, 1.61289, 1.93763, 2.20259, 2.42976, 2.63034, 2.81094, 2.97582, 3.12796, 3.26949,
- 3.40202, 3.52680, 3.64482, 3.75687, 3.86360, 3.96557, 4.06323, 4.15697, 4.24713, 4.33413};
-  static const G4double XA[nX]={4.19131e-06,
- .849573, 1.16208, 1.38955, 1.57379, 1.73079, 1.86867, 1.99221, 2.10451, 2.20770, 2.30332,
- 2.39252, 2.47622, 2.55511, 2.62977, 2.70066, 2.76818, 2.83265, 2.89437, 2.95355, 3.01051};
-  static const G4double XB[nX]={4.59981e-07,
- .666131, .905836, 1.07880, 1.21796, 1.33587, 1.43890, 1.53080, 1.61399, 1.69011, 1.76040,
- 1.82573, 1.88682, 1.94421, 1.99834, 2.04959, 2.09824, 2.14457, 2.18878, 2.23107, 2.27162};
-  static const G4double XC[nX]={4.99861e-08,
- .556280, .752730, .893387, 1.00587, 1.10070, 1.18317, 1.25643, 1.32247, 1.38269, 1.43809,
- 1.48941, 1.53724, 1.58203, 1.62416, 1.66391, 1.70155, 1.73728, 1.77128, 1.80371, 1.83473};
-  static const G4double XD[nX]={5.40832e-09,
- .488069, .657650, .778236, .874148, .954621, 1.02432, 1.08599, 1.14138, 1.19172, 1.23787,
- 1.28049, 1.32008, 1.35705, 1.39172, 1.42434, 1.45514, 1.48429, 1.51197, 1.53829, 1.56339};
-  static const G4double XE[nX]={5.84029e-10,
- .445057, .597434, .705099, .790298, .861468, .922865, .976982, 1.02542, 1.06930, 1.10939,
- 1.14630, 1.18050, 1.21233, 1.24208, 1.27001, 1.29630, 1.32113, 1.34462, 1.36691, 1.38812};
-  static const G4double XF[nX]={6.30137e-11,
- .418735, .560003, .659168, .737230, .802138, .857898, .906854, .950515, .989915, 1.02580,
- 1.05873, 1.08913, 1.11734, 1.14364, 1.16824, 1.19133, 1.21306, 1.23358, 1.25298, 1.27139};
-  static const G4double XG[nX]={6.79627e-12,
- .405286, .539651, .633227, .706417, .766929, .818642, .863824, .903931, .939963, .972639,
- 1.00250, 1.02995, 1.05532, 1.07887, 1.10082, 1.12134, 1.14058, 1.15867, 1.17572, 1.19183};
-  static const G4double XH[nX]={7.32882e-13,
- .404391, .535199, .625259, .695036, .752243, .800752, .842823, .879906, .912994, .942802,
- .969862, .994583, 1.01729, 1.03823, 1.05763, 1.07566, 1.09246, 1.10816, 1.12286, 1.13667};
-  static const G4double XI[nX]={7.90251e-14,
- .418084, .548382, .636489, .703728, .758106, .803630, .842633, .876608, .906576, .933269,
- .957233, .978886, .998556, 1.01651, 1.03295, 1.04807, 1.06201, 1.07489, 1.08683, 1.09792};
-  static const G4double XJ[nX]={8.52083e-15,
- .447299, .579635, .666780, .731788, .783268, .825512, .861013, .891356, .917626, .940597,
- .960842, .978802, .994820, 1.00917, 1.02208, 1.03373, 1.04427, 1.05383, 1.06253, 1.07046};
-  // Direct table
-  static const G4double Xmin[nE]={X0[0],X1[0],X2[0],X3[0],X4[0],X5[0],X6[0],X7[0],X8[0],
-                        X9[0],XA[0],XB[0],XC[0],XD[0],XE[0],XF[0],XG[0],XH[0],XI[0],XJ[0]};
-  static const G4double dX[nE]={
-    (X0[lX]-X0[0])/lX, (X1[lX]-X1[0])/lX, (X2[lX]-X2[0])/lX, (X3[lX]-X3[0])/lX,
-    (X4[lX]-X4[0])/lX, (X5[lX]-X5[0])/lX, (X6[lX]-X6[0])/lX, (X7[lX]-X7[0])/lX,
-    (X8[lX]-X8[0])/lX, (X9[lX]-X9[0])/lX, (XA[lX]-XA[0])/lX, (XB[lX]-XB[0])/lX,
-    (XC[lX]-XC[0])/lX, (XD[lX]-XD[0])/lX, (XE[lX]-XE[0])/lX, (XF[lX]-XF[0])/lX,
-    (XG[lX]-XG[0])/lX, (XH[lX]-XH[0])/lX, (XI[lX]-XI[0])/lX, (XJ[lX]-XJ[0])/lX};
-  static const G4double* Xl[nE]=
-                             {X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,XA,XB,XC,XD,XE,XF,XG,XH,XI,XJ};
-  static const G4double I0[nX]={0,
- .354631, 1.08972, 2.05138, 3.16564, 4.38343, 5.66828, 6.99127, 8.32858, 9.65998, 10.9680,
- 12.2371, 13.4536, 14.6050, 15.6802, 16.6686, 17.5609, 18.3482, 19.0221, 19.5752, 20.0000};
-  static const G4double I1[nX]={0,
- .281625, .877354, 1.67084, 2.60566, 3.64420, 4.75838, 5.92589, 7.12829, 8.34989, 9.57708,
- 10.7978, 12.0014, 13.1781, 14.3190, 15.4162, 16.4620, 17.4496, 18.3724, 19.2245, 20.0000};
-  static const G4double I2[nX]={0,
- .201909, .642991, 1.24946, 1.98463, 2.82370, 3.74802, 4.74263, 5.79509, 6.89474, 8.03228,
- 9.19947, 10.3889, 11.5938, 12.8082, 14.0262, 15.2427, 16.4527, 17.6518, 18.8356, 20.0000};
-  static const G4double I3[nX]={0,
- .140937, .461189, .920216, 1.49706, 2.17728, 2.94985, 3.80580, 4.73758, 5.73867, 6.80331,
- 7.92637, 9.10316, 10.3294, 11.6013, 12.9150, 14.2672, 15.6548, 17.0746, 18.5239, 20.0000};
-  static const G4double I4[nX]={0,
- .099161, .337358, .694560, 1.16037, 1.72761, 2.39078, 3.14540, 3.98768, 4.91433, 5.92245,
- 7.00942, 8.17287, 9.41060, 10.7206, 12.1010, 13.5500, 15.0659, 16.6472, 18.2924, 20.0000};
-  static const G4double I5[nX]={0,
- .071131, .255084, .543312, .932025, 1.41892, 2.00243, 2.68144, 3.45512, 4.32283, 5.28411,
- 6.33859, 7.48602, 8.72621, 10.0590, 11.4844, 13.0023, 14.6128, 16.3158, 18.1115, 20.0000};
-  static const G4double I6[nX]={0,
- .053692, .202354, .443946, .778765, 1.20774, 1.73208, 2.35319, 3.07256, 3.89177, 4.81249,
- 5.83641, 6.96528, 8.20092, 9.54516, 10.9999, 12.5670, 14.2486, 16.0466, 17.9630, 20.0000};
-  static const G4double I7[nX]={0,
- .043065, .168099, .376879, .672273, 1.05738, 1.53543, 2.10973, 2.78364, 3.56065, 4.44429,
- 5.43819, 6.54610, 7.77186, 9.11940, 10.5928, 12.1963, 13.9342, 15.8110, 17.8313, 20.0000};
-  static const G4double I8[nX]={0,
- .036051, .143997, .327877, .592202, .941572, 1.38068, 1.91433, 2.54746, 3.28517, 4.13277,
- 5.09574, 6.17984, 7.39106, 8.73568, 10.2203, 11.8519, 13.6377, 15.5854, 17.7033, 20.0000};
-  static const G4double I9[nX]={0,
- .030977, .125727, .289605, .528146, .846967, 1.25183, 1.74871, 2.34384, 3.04376, 3.85535,
- 4.78594, 5.84329, 7.03567, 8.37194, 9.86163, 11.5150, 13.3430, 15.3576, 17.5719, 20.0000};
-  static const G4double IA[nX]={0,
- .027129, .111420, .258935, .475812, .768320, 1.14297, 1.60661, 2.16648, 2.83034, 3.60650,
- 4.50394, 5.53238, 6.70244, 8.02569, 9.51488, 11.1841, 13.0488, 15.1264, 17.4362, 20.0000};
-  static const G4double IB[nX]={0,
- .024170, .100153, .234345, .433198, .703363, 1.05184, 1.48607, 2.01409, 2.64459, 3.38708,
- 4.25198, 5.25084, 6.39647, 7.70319, 9.18708, 10.8663, 12.7617, 14.8968, 17.2990, 20.0000};
-  static const G4double IC[nX]={0,
- .021877, .091263, .214670, .398677, .650133, .976322, 1.38510, 1.88504, 2.48555, 3.19709,
- 4.03129, 5.00127, 6.12184, 7.40989, 8.88482, 10.5690, 12.4888, 14.6748, 17.1638, 20.0000};
-  static const G4double ID[nX]={0,
- .020062, .084127, .198702, .370384, .606100, .913288, 1.30006, 1.77535, 2.34912, 3.03253,
- 3.83822, 4.78063, 5.87634, 7.14459, 8.60791, 10.2929, 12.2315, 14.4621, 17.0320, 20.0000};
-  static const G4double IE[nX]={0,
- .018547, .078104, .185102, .346090, .567998, .858331, 1.22535, 1.67824, 2.22735, 2.88443,
- 3.66294, 4.57845, 5.64911, 6.89637, 8.34578, 10.0282, 11.9812, 14.2519, 16.8993, 20.0000};
-  static const G4double IF[nX]={0,
- .017143, .072466, .172271, .323007, .531545, .805393, 1.15288, 1.58338, 2.10754, 2.73758,
- 3.48769, 4.37450, 5.41770, 6.64092, 8.07288, 9.74894, 11.7135, 14.0232, 16.7522, 20.0000};
-  static const G4double IG[nX]={0,
- .015618, .066285, .158094, .297316, .490692, .745653, 1.07053, 1.47479, 1.96931, 2.56677,
- 3.28205, 4.13289, 5.14068, 6.33158, 7.73808, 9.40133, 11.3745, 13.7279, 16.5577, 20.0000};
-  static const G4double IH[nX]={0,
- .013702, .058434, .139923, .264115, .437466, .667179, .961433, 1.32965, 1.78283, 2.33399,
- 2.99871, 3.79596, 4.74916, 5.88771, 7.24937, 8.88367, 10.8576, 13.2646, 16.2417, 20.0000};
-  static const G4double II[nX]={0,
- .011264, .048311, .116235, .220381, .366634, .561656, .813132, 1.13008, 1.52322, 2.00554,
- 2.59296, 3.30542, 4.16834, 5.21490, 6.48964, 8.05434, 9.99835, 12.4580, 15.6567, 20.0000};
-  static const G4double IJ[nX]={0,
- .008628, .037206, .089928, .171242, .286114, .440251, .640343, .894382, 1.21208, 1.60544,
- 2.08962, 2.68414, 3.41486, 4.31700, 5.44048, 6.85936, 8.69067, 11.1358, 14.5885, 20.0000};
-  static const G4double* Il[nE]=
-                             {I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ};
-  static const G4double lE[nE]={
--1.98842,-1.58049,-1.17256,-.764638,-.356711, .051215, .459141, .867068, 1.27499, 1.68292,
- 2.09085, 2.49877, 2.90670, 3.31463, 3.72255, 4.13048, 4.53840, 4.94633, 5.35426, 5.76218};
-  static const G4double lEmi=lE[0];
-  static const G4double lEma=lE[nE-1];
-  static const G4double dlE=(lEma-lEmi)/bE;
-  //***************************************************************************************
-  G4double Enu=lastE;                 // Get energy of the last calculated cross-section
-  G4double lEn=std::log(Enu);         // log(E) for interpolation
-  G4double rE=(lEn-lEmi)/dlE;         // Position of the energy
-  G4int fE=static_cast<int>(rE);      // Left bin for interpolation
-  if(fE<0) fE=0;
-  if(fE>pE)fE=pE;
-  G4int    sE=fE+1;                   // Right bin for interpolation
-  G4double dE=rE-fE;                  // relative log shift from the left bin
-  G4double dEnu=Enu+Enu;              // doubled energy of nu/anu
-  G4double Enu2=Enu*Enu;              // squared energy of nu/anu
-  G4double Ee=Enu-me;               // Free Energy of neutrino/anti-neutrino
-  G4double ME=Enu*MN;                 // M*E
-  G4double dME=ME+ME;                 // 2*M*E
-  G4double dEMN=(dEnu+MN)*ME;
-  G4double MEm=ME-hme2;
-  G4double sqE=Enu*std::sqrt(MEm*MEm-me2*MN2);
-  G4double E2M=MN*Enu2-(Enu+MN)*hme2;
-  G4double ymax=(E2M+sqE)/dEMN;
-  G4double ymin=(E2M-sqE)/dEMN;
-  G4double rmin=1.-ymin;
-  G4double rhm2E=hme2/Enu2;
-  G4double Q2mi=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E)); // Q2_min(E_nu)
-  G4double Q2ma=dME*ymax;                                                  // Q2_max(E_nu)
-  G4double Q2nq=Ee*dMN-mcV;
-  if(Q2ma>Q2nq) Q2ma=Q2nq;            // Correction for Non Quasi Elastic
-  // --- now r_min=Q2mi/Q2ma and r_max=1.; when r is randomized -> Q2=r*Q2ma ---
-  G4double Rmi=Q2mi/Q2ma;
-  G4double shift=.875/(1.+.2977/Enu/Enu)/std::pow(Enu,.78);
-  // --- E-interpolation must be done in a log scale ---
-  G4double Xmi=std::pow((shift-Rmi),power);// X_min(E_nu)
-  G4double Xma=std::pow((shift-1.),power); // X_max(E_nu)
-  // Find the integral values integ(Xmi) & integ(Xma) using the direct table
-  G4double idX=dX[fE]+dE*(dX[sE]-dX[fE]); // interpolated X step
-  G4double iXmi=Xmin[fE]+dE*(Xmin[sE]-Xmin[fE]); // interpolated X minimum
-  G4double rXi=(Xmi-iXmi)/idX;
-  G4int    iXi=static_cast<int>(rXi);
-  if(iXi<0) iXi=0;
-  if(iXi>bX) iXi=bX;
-  G4double dXi=rXi-iXi;
-  G4double bntil=Il[fE][iXi];
-  G4double intil=bntil+dXi*(Il[fE][iXi+1]-bntil);
-  G4double bntir=Il[sE][iXi];
-  G4double intir=bntir+dXi*(Il[sE][iXi+1]-bntir);
-  G4double inti=intil+dE*(intir-intil);// interpolated begin of the integral
-  //
-  G4double rXa=(Xma-iXmi)/idX;
-  G4int    iXa=static_cast<int>(rXa);
-  if(iXa<0) iXa=0;
-  if(iXa>bX) iXa=bX;
-  G4double dXa=rXa-iXa;
-  G4double bntal=Il[fE][iXa];
-  G4double intal=bntal+dXa*(Il[fE][iXa+1]-bntal);
-  G4double bntar=Il[sE][iXa];
-  G4double intar=bntar+dXa*(Il[sE][iXa+1]-bntar);
-  G4double inta=intal+dE*(intar-intal);// interpolated end of the integral
-  //
-  // *** Find X using the reversed table ***
-  G4double intx=inti+(inta-inti)*G4UniformRand(); 
-  G4int    intc=static_cast<int>(intx);
-  if(intc<0) intc=0;
-  if(intc>bX) intc=bX;
-  G4double dint=intx-intc;
-  G4double mXl=Xl[fE][intc];
-  G4double Xlb=mXl+dint*(Xl[fE][intc+1]-mXl);
-  G4double mXr=Xl[sE][intc];
-  G4double Xrb=mXr+dint*(Xl[sE][intc+1]-mXr);
-  G4double X=Xlb+dE*(Xrb-Xlb);        // interpolated X value
-  G4double R=shift-std::pow(X,pconv);
-  G4double Q2=R*Q2ma;
-  return Q2*GeV*GeV;
-}
-
-// It returns a fraction of the direct interaction of the neutrino with quark-partons
-G4double G4QANuENuclearCrossSection::GetDirectPart(G4double Q2)
-{
-  G4double f=Q2/4.62;
-  G4double ff=f*f;
-  G4double r=ff*ff;
-  G4double s=std::pow((1.+.6/Q2),(-1.-(1.+r)/(12.5+r/.3)));
-  //@@ It is the same for nu/anu, but for nu it is a bit less, and for anu a bit more (par)
-  return 1.-s*(1.-s/2);
-}
-
-// #of quark-partons in the nonperturbative phase space is the same for neut and anti-neut
-G4double G4QANuENuclearCrossSection::GetNPartons(G4double Q2)
-{
-  return 3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space
-}
-
-// This class can provide only virtual exchange pi- (a substitute for W- boson)
-G4int G4QANuENuclearCrossSection::GetExchangePDGCode() {return -211;}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuMuNuclearCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuMuNuclearCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,769 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QANuMuNuclearCrossSection.cc,v 1.13 2009/05/08 15:16:26 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QANuMuNuclearCrossSection for (anu_mu,mu+)A cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 17-Oct-03
-// 
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-//=========================================================================================
-
-//#define debug
-//#define edebug
-//#define pdebug
-//#define ppdebug
-//#define tdebug
-//#define sdebug
-
-#include "G4QANuMuNuclearCrossSection.hh"
-
-// Initialization of the
-G4bool    G4QANuMuNuclearCrossSection::onlyCS=true;//Flag to calculate only CS (not QE)
-G4double  G4QANuMuNuclearCrossSection::lastSig=0.;//Last calculated total cross section
-G4double  G4QANuMuNuclearCrossSection::lastQEL=0.;//Last calculated quasi-el. cross section
-G4int     G4QANuMuNuclearCrossSection::lastL=0;   //Last used in cross section TheLastBin
-G4double  G4QANuMuNuclearCrossSection::lastE=0.;  //Last used in cross section TheEnergy
-G4double* G4QANuMuNuclearCrossSection::lastEN=0;  //Pointer to the Energy Scale of TX & QE
-G4double* G4QANuMuNuclearCrossSection::lastTX=0;  //Pointer to the LastArray of TX function
-G4double* G4QANuMuNuclearCrossSection::lastQE=0;  //Pointer to the LastArray of QE function
-G4int     G4QANuMuNuclearCrossSection::lastPDG=0; // The last PDG code of the projectile
-G4int     G4QANuMuNuclearCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QANuMuNuclearCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QANuMuNuclearCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QANuMuNuclearCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QANuMuNuclearCrossSection::lastCS=0.; // Last value of the Cross Section
-G4int     G4QANuMuNuclearCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QANuMuNuclearCrossSection::GetPointer()
-{
-  static G4QANuMuNuclearCrossSection theCrossSection;//**Static body of the Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QANuMuNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom,
-                                                      G4int tgZ, G4int tgN, G4int pPDG)
-{
-  static G4int j;                      // A#0f records found in DB for this projectile
-  static std::vector <G4int>    colPDG;// Vector of the projectile PDG code
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-  G4double pEn=pMom;
-#ifdef debug
-  G4cout<<"G4QAMNCS::GetCS:>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG="<<pPDG<<"("<<lastPDG<<"), T="<<pEn<<"("<<lastTH<<")"<<",Sz="
-        <<colN.size()<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  if(pPDG!=-14)
-  {
-#ifdef debug
-    G4cout<<"G4QAMNCS::GetCS: *** Found pPDG="<<pPDG<<" ====> CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // projectile PDG=0 is a mistake (?!) @@
-  }
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tgN!=lastN || tgZ!=lastZ || pPDG!=lastPDG)// The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastPDG = pPDG;                    // The last PDG of the projectile
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-    if(lastI) for(G4int i=0; i<lastI; i++) if(colPDG[i]==pPDG) // The partType is found
-    {                                  // The nucleus with projPDG is found in AMDB
-      if(colN[i]==tgN && colZ[i]==tgZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QAMNCS::GetCS:*Found*P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(pEn<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QAMNCS::GetCS:Found T="<<pEn<<" < Threshold="<<lastTH<<",X=0"<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastCS =colCS[i];                // Last CrossSect (A-dependent)
-        if(std::fabs(lastP/pMom-1.)<tolerance)
-        {
-#ifdef pdebug
-          G4cout<<"G4QAMNCS::GetCS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QAMNCS::G:UpdaDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // read & update
-#ifdef pdebug
-        G4cout<<"G4QAMNCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(lastCS<=0. && pEn>lastTH)    // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QAMNCS::GetCS: New T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-        break;                           // Go out of the LOOP
-      }
-#ifdef pdebug
-      G4cout<<"---G4QAMNCrossSec::GetCrosSec:pPDG="<<pPDG<<",j="<<j<<",N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<",cPDG="<<colPDG[i]<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      j++;                             // Increment a#0f records found in DB for this pPDG
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QAMNCS::GetCrosSec:CalcNew P="<<pMom<<",f="<<fCS<<",lstI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,j,lastPDG,lastZ,lastN,pMom); //calculate & create
-      if(lastCS<=0.)
-      {
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QAMNCrossSection::GetCrossSect: NewThresh="<<lastTH<<",T="<<pEn<<G4endl;
-#endif
-        if(pEn>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QAMNCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QAMNCS::GetCrosSec:New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      colN.push_back(tgN);
-      colZ.push_back(tgZ);
-      colPDG.push_back(pPDG);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colCS.push_back(lastCS);
-#ifdef pdebug
-      G4cout<<"G4QAMNCS::GetCS:1st,P="<<pMom<<"(MeV),X="<<lastCS*millibarn<<"(mb)"<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QAMNCS::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colPDG[lastI]=pPDG;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-  else if(pEn<=lastTH)
-  {
-#ifdef pdebug
-    G4cout<<"G4QAMNCS::GetCS: Current T="<<pEn<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  else if(std::fabs(lastP/pMom-1.)<tolerance)
-  {
-#ifdef pdebug
-    G4cout<<"G4QAMNCS::GetCS:OldCur P="<<pMom<<"="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return lastCS*millibarn;     // Use theLastCS
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"G4QAMNCS::GetCS:UpdaCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastCS=CalculateCrossSection(fCS,1,j,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-    lastP=pMom;
-  }
-#ifdef pdebug
-  G4cout<<"G4QAMNCS::GetCrSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  return lastCS*millibarn;
-}
-
-// Gives the threshold energy = the same for all nuclei (@@ can be reduced for hevy nuclei)
-G4double G4QANuMuNuclearCrossSection::ThresholdEnergy(G4int Z, G4int N, G4int)
-{
-  //static const G4double mNeut = G4NucleiProperties::GetNuclearMass(1,0)/GeV;
-  //static const G4double mProt = G4NucleiProperties::GetNuclearMass(1,1)/GeV;
-  //static const G4double mDeut = G4NucleiProperties::GetNuclearMass(2,1)/GeV/2.;
-  static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV)
-  static const G4double dmN=mN+mN;    // Doubled nucleon mass (2*AtomicMassUnit, GeV)
-  static const G4double mmu=.105658369; // Mass of a muon in GeV
-  static const G4double mmu2=mmu*mmu;   // Squared mass of a muon in GeV^2
-  static const G4double thresh=mmu+mmu2/dmN; // Universal threshold in GeV
-  // ---------
-  //static const G4double infEn = 9.e27;
-  G4double dN=0.;
-  if(Z>0||N>0) dN=thresh*GeV; // @@ if upgraded, change it in a total cross section
-  //@@ "dN=mmu+mmu2/G4NucleiProperties::GetNuclearMass(<G4double>(Z+N),<G4double>(Z)/GeV"
-  return dN;
-}
-
-// The main member function giving the gamma-A cross section (E_kin in MeV, CS in mb)
-G4double G4QANuMuNuclearCrossSection::CalculateCrossSection(G4bool CS, G4int F, G4int I,
-                                       G4int , G4int targZ, G4int targN, G4double Momentum)
-{
-  static const G4double mb38=1.E-11;// Conversion 10^-38 cm^2 to mb=10^-27 cm^2
-  static const G4int nE=65;   // !! If change this, change it in GetFunctions() (*.hh) !!
-  static const G4int mL=nE-1;
-  static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV)
-  static const G4double dmN=mN+mN;      // Doubled nucleon mass (2*AtomicMassUnit, GeV)
-  static const G4double mmu=.105658369; // Mass of a muon in GeV
-  static const G4double mmu2=mmu*mmu;   // Squared mass of a muon in GeV^2
-  static const G4double EMi=mmu+mmu2/dmN; // Universal threshold of the reaction in GeV
-  static const G4double EMa=300.;       // Maximum tabulated Energy of nu_mu in GeV 
-  // *** Begin of the Associative memory for acceleration of the cross section calculations
-  static std::vector <G4double> colH;   //?? Vector of HighEnergyCoefficients (functional)
-  static std::vector <G4double*> TX;    // Vector of pointers to the TX tabulated functions
-  static std::vector <G4double*> QE;    // Vector of pointers to the QE tabulated functions
-  static G4bool first=true;             // Flag of initialization of the energy axis
-  // *** End of Static Definitions (Associative Memory) ***
-  //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Muon
-  //G4double TotEnergy2=Momentum;
-  onlyCS=CS;                            // Flag to calculate only CS (not TX & QE)
-  lastE=Momentum/GeV;                   // Kinetic energy of the muon neutrino (in GeV!)
-  if (lastE<=EMi)                       // Energy is below the minimum energy in the table
-  {
-    lastE=0.;
-    lastSig=0.;
-    return 0.;
-  }
-  G4int Z=targZ;                        // New Z, which can change the sign
-  if(F<=0)                              // This isotope was not the last used isotop
-  {
-    if(F<0)                          // This isotope was found in DAMDB =========> RETRIEVE
-    {
-      lastTX =TX[I];                 // Pointer to the prepared TX function (same isotope)
-      lastQE =QE[I];                 // Pointer to the prepared QE function (same isotope)
-   }
-   else                              // This isotope wasn't calculated previously => CREATE
-   {
-      if(first)
-      {
-        lastEN = new G4double[nE];   // This must be done only once!
-        Z=-Z;                        // To explain GetFunctions that E-axis must be filled
-        first=false;                 // To make it only once
-      }
-      lastTX = new G4double[nE];     // Allocate memory for the new TX function
-      lastQE = new G4double[nE];     // Allocate memory for the new QE function
-      G4int res=GetFunctions(Z,targN,lastTX,lastQE,lastEN);//@@analize(0=first,-1=bad,1=OK)
-      if(res<0) G4cerr<<"*W*G4NuMuNuclearCS::CalcCrossSect:Bad Function Retrieve"<<G4endl;
-      // *** The synchronization check ***
-      G4int sync=TX.size();
-      if(sync!=I) G4cerr<<"***G4NuMuNuclearCS::CalcCrossSect:Sync.="<<sync<<"#"<<I<<G4endl;
-      TX.push_back(lastTX);
-      QE.push_back(lastQE);
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW Calculate the Cross Section =====================
-  if (lastE<=EMi)                    // Check that antiNuEnergy is higher than ThreshE
-  {
-    lastE=0.;
-    lastSig=0.;
-    return 0.;
-  }
-  if(lastE<EMa) // Linear fit is made explicitly to fix the last bin for the randomization
-  {
-    G4int chk=1;
-    G4int ran=mL/2;
-    G4int sep=ran;  // as a result = an index of the left edge of the interval
-    while(ran>=2)
-    {
-      G4int newran=ran/2;
-      if(lastE<=lastEN[sep]) sep-=newran;
-      else                   sep+=newran;
-      ran=newran;
-      chk=chk+chk; 
-    }
-    if(chk+chk!=mL) G4cerr<<"*Warn*G4NuMuNuclearCS::CalcCS:Table! mL="<<mL<<G4endl;
-    G4double lowE=lastEN[sep];
-    G4double highE=lastEN[sep+1];
-    G4double lowTX=lastTX[sep];
-    if(lastE<lowE||sep>=mL||lastE>highE)
-      G4cerr<<"*Warn*G4NuMuNuclearCS::CalcCS:Bin! "<<lowE<<" < "<<lastE<<" < "<<highE
-            <<", sep="<<sep<<", mL="<<mL<<G4endl;
-    lastSig=lastE*(lastE-lowE)*(lastTX[sep+1]-lowTX)/(highE-lowE)+lowTX; // Recover *E
-    if(!onlyCS)                       // Skip the differential cross-section parameters
-    {
-      G4double lowQE=lastQE[sep];
-      lastQEL=(lastE-lowE)*(lastQE[sep+1]-lowQE)/(highE-lowE)+lowQE;
-#ifdef pdebug
-      G4cout<<"G4NuMuNuclearCS::CalcCS: T="<<lastSig<<",Q="<<lastQEL<<",E="<<lastE<<G4endl;
-#endif
-    }
-  }
-  else
-  {
-    lastSig=lastTX[mL]; // @@ No extrapolation, just a const, while it looks shrinking...
-    lastQEL=lastQE[mL];
-  }
-  if(lastQEL<0.) lastQEL = 0.;
-  if(lastSig<0.) lastSig = 0.;
-  // The cross-sections are expected to be in mb
-  lastSig*=mb38;
-  if(!onlyCS) lastQEL*=mb38;
-  return lastSig;
-}
-
-// Calculate the cros-section functions
-// ****************************************************************************************
-// *** This tables are the same for all lepto-nuclear reactions, only mass is different ***
-// ***@@ IT'S REASONABLE TO MAKE ADDiTIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR WITH THIS@@ ***
-// ****************************************************************************************
-G4int G4QANuMuNuclearCrossSection::GetFunctions (G4int z, G4int n,
-                                                     G4double* t, G4double* q, G4double* e)
-{
-  static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV)
-  static const G4double dmN=mN+mN;    // Doubled nucleon mass (2*AtomicMassUnit, GeV)
-  static const G4double mmu=.105658369; // Mass of a muon in GeV
-  static const G4double mmu2=mmu*mmu;   // Squared mass of a muon in GeV^2
-  static const G4double thresh=mmu+mmu2/dmN; // Universal threshold in GeV
-  static const G4int nE=65; // !! If change this, change it in GetCrossSection() (*.cc) !!
-  static const G4double nuEn[nE]={thresh,
-    .112039,.116079,.120416,.125076,.130090,.135494,.141324,.147626,.154445,.161838,
-    .169864,.178594,.188105,.198485,.209836,.222272,.235923,.250941,.267497,.285789,
-    .306045,.328530,.353552,.381466,.412689,.447710,.487101,.531538,.581820,.638893,
-    .703886,.778147,.863293,.961275,1.07445,1.20567,1.35843,1.53701,1.74667,1.99390,
-    2.28679,2.63542,3.05245,3.55386,4.15990,4.89644,5.79665,6.90336,8.27224,9.97606,
-    12.1106,14.8029,18.2223,22.5968,28.2351,35.5587,45.1481,57.8086,74.6682,97.3201,
-    128.036,170.085,228.220,309.420};
-  static const G4double TOTX[nE]={0.,
-    .077498,.247583,.329691,.386384,.429087,.462699,.489899,.512316,.530996,.546614,
-    .559616,.570292,.578840,.585395,.590053,.593083,.594197,.593614,.591396,.587611,
-    .582335,.575653,.567667,.558490,.548417,.537270,.525352,.512825,.499857,.486620,
-    .473283,.460014,.446970,.434294,.422116,.410656,.399782,.389665,.380349,.371860,
-    .364207,.357387,.351388,.346192,.341778,.338122,.335198,.332980,.331439,.330544,
-    .330263,.330558,.331391,.332718,.334494,.336667,.339182,.341697,.344470,.348125,
-    .351322,.354481,.357507,.359239};
-  static const G4double QELX[nE]={0.,
-    .008683,.028739,.039700,.048327,.055820,.062693,.069235,.075631,.082010,.088463,
-    .095059,.101851,.108883,.116192,.123814,.131826,.140185,.148962,.158197,.167933,
-    .178221,.189119,.200700,.213045,.226326,.240454,.255277,.270612,.286388,.302608,
-    .319318,.336582,.354468,.373031,.392427,.412445,.433146,.454448,.476222,.498289,
-    .520430,.542558,.564130,.585003,.604928,.623680,.641266,.657255,.671704,.684586,
-    .696111,.706028,.714553,.721951,.728085,.733182,.737348,.740958,.743716,.746059,
-    .747806,.749129,.750331,.751100};
-
-  // --------------------------------
-  G4int first=0;
-  if(z<0.)
-  {
-    first=1;
-    z=-z;
-  }
-  if(z<1 || z>92)             // neutron & plutonium are forbidden
-  {
-    G4cout<<"**G4QANuMuNuclearCrossSection::GetFunctions:Z="<<z<<".No CS returned"<<G4endl;
-    return -1;
-  }
-  for(G4int k=0; k<nE; k++)
-  {
-    G4double a=n+z;
-    G4double za=z+a;
-    G4double dz=z+z;
-    G4double da=a+a;
-    G4double ta=da+a;
-    if(first) e[k]=nuEn[k];       // Energy of neutrino E (first bin k=0 can be modified)
-    t[k]=TOTX[k]*nuEn[k]*(za+za)/ta+QELX[k]*(dz+dz-da)/ta; // TotalCrossSection
-    q[k]=QELX[k]*dz/a;                                     // QuasiElasticCrossSection
-  }
-  return first;
-}
-
-// Randomize Q2 from neutrino to the scattered muon when the scattering is quasi-elastic
-G4double G4QANuMuNuclearCrossSection::GetQEL_ExchangeQ2()
-{
-  static const G4double mmu=.105658369;// Mass of muon in GeV
-  static const G4double mmu2=mmu*mmu;  // Squared Mass of muon in GeV^2
-  static const double hmmu2=mmu2/2;    // .5*m_mu^2 in GeV^2
-  static const double MN=.931494043;   // Nucleon mass (inside nucleus, atomicMassUnit,GeV)
-  static const double MN2=MN*MN;       // M_N^2 in GeV^2
-  static const G4double power=-3.5;    // direct power for the magic variable
-  static const G4double pconv=1./power;// conversion power for the magic variable
-  static const G4int nQ2=101;          // #Of point in the Q2l table (in GeV^2)
-  static const G4int lQ2=nQ2-1;        // index of the last in the Q2l table
-  static const G4int bQ2=lQ2-1;        // index of the before last in the Q2 ltable
-  // Reversed table
-  static const G4double Xl[nQ2]={5.20224e-16,
- .006125,.0137008,.0218166,.0302652,.0389497,.0478144,.0568228,.0659497,.0751768,.0844898,
- .093878, .103332, .112844, .122410, .132023, .141680, .151376, .161109, .170875, .180672,
- .190499, .200352, .210230, .220131, .230055, .239999, .249963, .259945, .269944, .279960,
- .289992, .300039, .310099, .320173, .330260, .340359, .350470, .360592, .370724, .380867,
- .391019, .401181, .411352, .421531, .431719, .441915, .452118, .462329, .472547, .482771,
- .493003, .503240, .513484, .523734, .533989, .544250, .554517, .564788, .575065, .585346,
- .595632, .605923, .616218, .626517, .636820, .647127, .657438, .667753, .678072, .688394,
- .698719, .709048, .719380, .729715, .740053, .750394, .760738, .771085, .781434, .791786,
- .802140, .812497, .822857, .833219, .843582, .853949, .864317, .874687, .885060, .895434,
- .905810, .916188, .926568, .936950, .947333, .957719, .968105, .978493, .988883, .999275};
-   // Direct table
-  static const G4double Xmax=Xl[lQ2];
-  static const G4double Xmin=Xl[0];
-  static const G4double dX=(Xmax-Xmin)/lQ2;  // step in X(Q2, GeV^2)
-  static const G4double inl[nQ2]={0,
- 1.52225, 2.77846, 3.96651, 5.11612, 6.23990, 7.34467, 8.43466, 9.51272, 10.5809, 11.6406,
- 12.6932, 13.7394, 14.7801, 15.8158, 16.8471, 17.8743, 18.8979, 19.9181, 20.9353, 21.9496,
- 22.9614, 23.9707, 24.9777, 25.9826, 26.9855, 27.9866, 28.9860, 29.9837, 30.9798, 31.9745,
- 32.9678, 33.9598, 34.9505, 35.9400, 36.9284, 37.9158, 38.9021, 39.8874, 40.8718, 41.8553,
- 42.8379, 43.8197, 44.8007, 45.7810, 46.7605, 47.7393, 48.7174, 49.6950, 50.6718, 51.6481,
- 52.6238, 53.5990, 54.5736, 55.5476, 56.5212, 57.4943, 58.4670, 59.4391, 60.4109, 61.3822,
- 62.3531, 63.3236, 64.2937, 65.2635, 66.2329, 67.2019, 68.1707, 69.1390, 70.1071, 71.0748,
- 72.0423, 73.0095, 73.9763, 74.9429, 75.9093, 76.8754, 77.8412, 78.8068, 79.7721, 80.7373,
- 81.7022, 82.6668, 83.6313, 84.5956, 85.5596, 86.5235, 87.4872, 88.4507, 89.4140, 90.3771,
- 91.3401, 92.3029, 93.2656, 94.2281, 95.1904, 96.1526, 97.1147, 98.0766, 99.0384, 100.000};
-  G4double Enu=lastE;                 // Get energy of the last calculated cross-section
-  G4double dEnu=Enu+Enu;              // doubled energy of nu/anu
-  G4double Enu2=Enu*Enu;              // squared energy of nu/anu
-  G4double ME=Enu*MN;                 // M*E
-  G4double dME=ME+ME;                 // 2*M*E
-  G4double dEMN=(dEnu+MN)*ME;
-  G4double MEm=ME-hmmu2;
-  G4double sqE=Enu*std::sqrt(MEm*MEm-mmu2*MN2);
-  G4double E2M=MN*Enu2-(Enu+MN)*hmmu2;
-  G4double ymax=(E2M+sqE)/dEMN;
-  G4double ymin=(E2M-sqE)/dEMN;
-  G4double rmin=1.-ymin;
-  G4double rhm2E=hmmu2/Enu2;
-  G4double Q2mi=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E)); // Q2_min(E_nu)
-  G4double Q2ma=dME*ymax;                                                  // Q2_max(E_nu)
-  G4double Xma=std::pow((1.+Q2mi),power);  // X_max(E_nu)
-  G4double Xmi=std::pow((1.+Q2ma),power);  // X_min(E_nu)
-  // Find the integral values integ(Xmi) & integ(Xma) using the direct table
-  G4double rXi=(Xmi-Xmin)/dX;
-  G4int    iXi=static_cast<int>(rXi);
-  if(iXi<0) iXi=0;
-  if(iXi>bQ2) iXi=bQ2;
-  G4double dXi=rXi-iXi;
-  G4double bnti=inl[iXi];
-  G4double inti=bnti+dXi*(inl[iXi+1]-bnti);
-  //
-  G4double rXa=(Xma-Xmin)/dX;
-  G4int    iXa=static_cast<int>(rXa);
-  if(iXa<0) iXa=0;
-  if(iXa>bQ2) iXa=bQ2;
-  G4double dXa=rXa-iXa;
-  G4double bnta=inl[iXa];
-  G4double inta=bnta+dXa*(inl[iXa+1]-bnta);
-  // *** Find X using the reversed table ***
-  G4double intx=inti+(inta-inti)*G4UniformRand();
-  G4int    intc=static_cast<int>(intx);
-  if(intc<0) intc=0;
-  if(intc>bQ2) intc=bQ2;         // If it is more than max, then the BAD extrapolation
-  G4double dint=intx-intc;
-  G4double mX=Xl[intc];
-  G4double X=mX+dint*(Xl[intc+1]-mX);
-  G4double Q2=std::pow(X,pconv)-1.;
-  return Q2*GeV*GeV;
-}
-
-// Randomize Q2 from neutrino to the scattered muon when the scattering is not quasiElastic
-G4double G4QANuMuNuclearCrossSection::GetNQE_ExchangeQ2()
-{
-  static const double mpi=.13957018;    // charged pi meson mass in GeV
-  static const G4double mmu=.105658369; // Mass of muon in GeV
-  static const G4double mmu2=mmu*mmu;   // Squared Mass of muon in GeV^2
-  static const double hmmu2=mmu2/2;     // .5*m_mu^2 in GeV^2
-  static const double MN=.931494043;    // Nucleon mass (inside nucleus,atomicMassUnit,GeV)
-  static const double MN2=MN*MN;        // M_N^2 in GeV^2
-  static const double dMN=MN+MN;        // 2*M_N in GeV
-  static const double mcV=(dMN+mpi)*mpi;// constant of W>M+mc cut for Quasi-Elastic
-  static const G4int power=7;           // direct power for the magic variable
-  static const G4double pconv=1./power; // conversion power for the magic variable
-  static const G4int nX=21;             // #Of point in the Xl table (in GeV^2)
-  static const G4int lX=nX-1;           // index of the last in the Xl table
-  static const G4int bX=lX-1;           // @@ index of the before last in the Xl table
-  static const G4int nE=20;             // #Of point in the El table (in GeV^2)
-  static const G4int bE=nE-1;           // index of the last in the El table
-  static const G4int pE=bE-1;           // index of the before last in the El table
-  // Reversed table
-  static const G4double X0[nX]={5.21412e-05,
- .437860, .681908, .891529, 1.08434, 1.26751, 1.44494, 1.61915, 1.79198, 1.96493, 2.13937,
- 2.31664, 2.49816, 2.68559, 2.88097, 3.08705, 3.30774, 3.54917, 3.82233, 4.15131, 4.62182};
-  static const G4double X1[nX]={.00102591,
- 1.00443, 1.55828, 2.03126, 2.46406, 2.87311, 3.26723, 3.65199, 4.03134, 4.40835, 4.78561,
- 5.16549, 5.55031, 5.94252, 6.34484, 6.76049, 7.19349, 7.64917, 8.13502, 8.66246, 9.25086};
-  static const G4double X2[nX]={.0120304,
- 2.59903, 3.98637, 5.15131, 6.20159, 7.18024, 8.10986, 9.00426, 9.87265, 10.7217, 11.5564,
- 12.3808, 13.1983, 14.0116, 14.8234, 15.6359, 16.4515, 17.2723, 18.1006, 18.9386, 19.7892};
-  static const G4double X3[nX]={.060124,
- 5.73857, 8.62595, 10.9849, 13.0644, 14.9636, 16.7340, 18.4066, 20.0019, 21.5342, 23.0142,
- 24.4497, 25.8471, 27.2114, 28.5467, 29.8564, 31.1434, 32.4102, 33.6589, 34.8912, 36.1095};
-  static const G4double X4[nX]={.0992363,
- 8.23746, 12.1036, 15.1740, 17.8231, 20.1992, 22.3792, 24.4092, 26.3198, 28.1320, 29.8615,
- 31.5200, 33.1169, 34.6594, 36.1536, 37.6044, 39.0160, 40.3920, 41.7353, 43.0485, 44.3354};
-  static const G4double X5[nX]={.0561127,
- 7.33661, 10.5694, 13.0778, 15.2061, 17.0893, 18.7973, 20.3717, 21.8400, 23.2211, 24.5291,
- 25.7745, 26.9655, 28.1087, 29.2094, 30.2721, 31.3003, 32.2972, 33.2656, 34.2076, 35.1265};
-  static const G4double X6[nX]={.0145859,
- 4.81774, 6.83565, 8.37399, 9.66291, 10.7920, 11.8075, 12.7366, 13.5975, 14.4025, 15.1608,
- 15.8791, 16.5628, 17.2162, 17.8427, 18.4451, 19.0259, 19.5869, 20.1300, 20.6566, 21.1706};
-  static const G4double X7[nX]={.00241155,
- 2.87095, 4.02492, 4.89243, 5.61207, 6.23747, 6.79613, 7.30433, 7.77270, 8.20858, 8.61732,
- 9.00296, 9.36863, 9.71682, 10.0495, 10.3684, 10.6749, 10.9701, 11.2550, 11.5306, 11.7982};
-  static const G4double X8[nX]={.000316863,
- 1.76189, 2.44632, 2.95477, 3.37292, 3.73378, 4.05420, 4.34415, 4.61009, 4.85651, 5.08666,
- 5.30299, 5.50738, 5.70134, 5.88609, 6.06262, 6.23178, 6.39425, 6.55065, 6.70149, 6.84742};
-  static const G4double X9[nX]={3.73544e-05,
- 1.17106, 1.61289, 1.93763, 2.20259, 2.42976, 2.63034, 2.81094, 2.97582, 3.12796, 3.26949,
- 3.40202, 3.52680, 3.64482, 3.75687, 3.86360, 3.96557, 4.06323, 4.15697, 4.24713, 4.33413};
-  static const G4double XA[nX]={4.19131e-06,
- .849573, 1.16208, 1.38955, 1.57379, 1.73079, 1.86867, 1.99221, 2.10451, 2.20770, 2.30332,
- 2.39252, 2.47622, 2.55511, 2.62977, 2.70066, 2.76818, 2.83265, 2.89437, 2.95355, 3.01051};
-  static const G4double XB[nX]={4.59981e-07,
- .666131, .905836, 1.07880, 1.21796, 1.33587, 1.43890, 1.53080, 1.61399, 1.69011, 1.76040,
- 1.82573, 1.88682, 1.94421, 1.99834, 2.04959, 2.09824, 2.14457, 2.18878, 2.23107, 2.27162};
-  static const G4double XC[nX]={4.99861e-08,
- .556280, .752730, .893387, 1.00587, 1.10070, 1.18317, 1.25643, 1.32247, 1.38269, 1.43809,
- 1.48941, 1.53724, 1.58203, 1.62416, 1.66391, 1.70155, 1.73728, 1.77128, 1.80371, 1.83473};
-  static const G4double XD[nX]={5.40832e-09,
- .488069, .657650, .778236, .874148, .954621, 1.02432, 1.08599, 1.14138, 1.19172, 1.23787,
- 1.28049, 1.32008, 1.35705, 1.39172, 1.42434, 1.45514, 1.48429, 1.51197, 1.53829, 1.56339};
-  static const G4double XE[nX]={5.84029e-10,
- .445057, .597434, .705099, .790298, .861468, .922865, .976982, 1.02542, 1.06930, 1.10939,
- 1.14630, 1.18050, 1.21233, 1.24208, 1.27001, 1.29630, 1.32113, 1.34462, 1.36691, 1.38812};
-  static const G4double XF[nX]={6.30137e-11,
- .418735, .560003, .659168, .737230, .802138, .857898, .906854, .950515, .989915, 1.02580,
- 1.05873, 1.08913, 1.11734, 1.14364, 1.16824, 1.19133, 1.21306, 1.23358, 1.25298, 1.27139};
-  static const G4double XG[nX]={6.79627e-12,
- .405286, .539651, .633227, .706417, .766929, .818642, .863824, .903931, .939963, .972639,
- 1.00250, 1.02995, 1.05532, 1.07887, 1.10082, 1.12134, 1.14058, 1.15867, 1.17572, 1.19183};
-  static const G4double XH[nX]={7.32882e-13,
- .404391, .535199, .625259, .695036, .752243, .800752, .842823, .879906, .912994, .942802,
- .969862, .994583, 1.01729, 1.03823, 1.05763, 1.07566, 1.09246, 1.10816, 1.12286, 1.13667};
-  static const G4double XI[nX]={7.90251e-14,
- .418084, .548382, .636489, .703728, .758106, .803630, .842633, .876608, .906576, .933269,
- .957233, .978886, .998556, 1.01651, 1.03295, 1.04807, 1.06201, 1.07489, 1.08683, 1.09792};
-  static const G4double XJ[nX]={8.52083e-15,
- .447299, .579635, .666780, .731788, .783268, .825512, .861013, .891356, .917626, .940597,
- .960842, .978802, .994820, 1.00917, 1.02208, 1.03373, 1.04427, 1.05383, 1.06253, 1.07046};
-  // Direct table
-  static const G4double Xmin[nE]={X0[0],X1[0],X2[0],X3[0],X4[0],X5[0],X6[0],X7[0],X8[0],
-                        X9[0],XA[0],XB[0],XC[0],XD[0],XE[0],XF[0],XG[0],XH[0],XI[0],XJ[0]};
-  static const G4double dX[nE]={
-    (X0[lX]-X0[0])/lX, (X1[lX]-X1[0])/lX, (X2[lX]-X2[0])/lX, (X3[lX]-X3[0])/lX,
-    (X4[lX]-X4[0])/lX, (X5[lX]-X5[0])/lX, (X6[lX]-X6[0])/lX, (X7[lX]-X7[0])/lX,
-    (X8[lX]-X8[0])/lX, (X9[lX]-X9[0])/lX, (XA[lX]-XA[0])/lX, (XB[lX]-XB[0])/lX,
-    (XC[lX]-XC[0])/lX, (XD[lX]-XD[0])/lX, (XE[lX]-XE[0])/lX, (XF[lX]-XF[0])/lX,
-    (XG[lX]-XG[0])/lX, (XH[lX]-XH[0])/lX, (XI[lX]-XI[0])/lX, (XJ[lX]-XJ[0])/lX};
-  static const G4double* Xl[nE]=
-                             {X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,XA,XB,XC,XD,XE,XF,XG,XH,XI,XJ};
-  static const G4double I0[nX]={0,
- .354631, 1.08972, 2.05138, 3.16564, 4.38343, 5.66828, 6.99127, 8.32858, 9.65998, 10.9680,
- 12.2371, 13.4536, 14.6050, 15.6802, 16.6686, 17.5609, 18.3482, 19.0221, 19.5752, 20.0000};
-  static const G4double I1[nX]={0,
- .281625, .877354, 1.67084, 2.60566, 3.64420, 4.75838, 5.92589, 7.12829, 8.34989, 9.57708,
- 10.7978, 12.0014, 13.1781, 14.3190, 15.4162, 16.4620, 17.4496, 18.3724, 19.2245, 20.0000};
-  static const G4double I2[nX]={0,
- .201909, .642991, 1.24946, 1.98463, 2.82370, 3.74802, 4.74263, 5.79509, 6.89474, 8.03228,
- 9.19947, 10.3889, 11.5938, 12.8082, 14.0262, 15.2427, 16.4527, 17.6518, 18.8356, 20.0000};
-  static const G4double I3[nX]={0,
- .140937, .461189, .920216, 1.49706, 2.17728, 2.94985, 3.80580, 4.73758, 5.73867, 6.80331,
- 7.92637, 9.10316, 10.3294, 11.6013, 12.9150, 14.2672, 15.6548, 17.0746, 18.5239, 20.0000};
-  static const G4double I4[nX]={0,
- .099161, .337358, .694560, 1.16037, 1.72761, 2.39078, 3.14540, 3.98768, 4.91433, 5.92245,
- 7.00942, 8.17287, 9.41060, 10.7206, 12.1010, 13.5500, 15.0659, 16.6472, 18.2924, 20.0000};
-  static const G4double I5[nX]={0,
- .071131, .255084, .543312, .932025, 1.41892, 2.00243, 2.68144, 3.45512, 4.32283, 5.28411,
- 6.33859, 7.48602, 8.72621, 10.0590, 11.4844, 13.0023, 14.6128, 16.3158, 18.1115, 20.0000};
-  static const G4double I6[nX]={0,
- .053692, .202354, .443946, .778765, 1.20774, 1.73208, 2.35319, 3.07256, 3.89177, 4.81249,
- 5.83641, 6.96528, 8.20092, 9.54516, 10.9999, 12.5670, 14.2486, 16.0466, 17.9630, 20.0000};
-  static const G4double I7[nX]={0,
- .043065, .168099, .376879, .672273, 1.05738, 1.53543, 2.10973, 2.78364, 3.56065, 4.44429,
- 5.43819, 6.54610, 7.77186, 9.11940, 10.5928, 12.1963, 13.9342, 15.8110, 17.8313, 20.0000};
-  static const G4double I8[nX]={0,
- .036051, .143997, .327877, .592202, .941572, 1.38068, 1.91433, 2.54746, 3.28517, 4.13277,
- 5.09574, 6.17984, 7.39106, 8.73568, 10.2203, 11.8519, 13.6377, 15.5854, 17.7033, 20.0000};
-  static const G4double I9[nX]={0,
- .030977, .125727, .289605, .528146, .846967, 1.25183, 1.74871, 2.34384, 3.04376, 3.85535,
- 4.78594, 5.84329, 7.03567, 8.37194, 9.86163, 11.5150, 13.3430, 15.3576, 17.5719, 20.0000};
-  static const G4double IA[nX]={0,
- .027129, .111420, .258935, .475812, .768320, 1.14297, 1.60661, 2.16648, 2.83034, 3.60650,
- 4.50394, 5.53238, 6.70244, 8.02569, 9.51488, 11.1841, 13.0488, 15.1264, 17.4362, 20.0000};
-  static const G4double IB[nX]={0,
- .024170, .100153, .234345, .433198, .703363, 1.05184, 1.48607, 2.01409, 2.64459, 3.38708,
- 4.25198, 5.25084, 6.39647, 7.70319, 9.18708, 10.8663, 12.7617, 14.8968, 17.2990, 20.0000};
-  static const G4double IC[nX]={0,
- .021877, .091263, .214670, .398677, .650133, .976322, 1.38510, 1.88504, 2.48555, 3.19709,
- 4.03129, 5.00127, 6.12184, 7.40989, 8.88482, 10.5690, 12.4888, 14.6748, 17.1638, 20.0000};
-  static const G4double ID[nX]={0,
- .020062, .084127, .198702, .370384, .606100, .913288, 1.30006, 1.77535, 2.34912, 3.03253,
- 3.83822, 4.78063, 5.87634, 7.14459, 8.60791, 10.2929, 12.2315, 14.4621, 17.0320, 20.0000};
-  static const G4double IE[nX]={0,
- .018547, .078104, .185102, .346090, .567998, .858331, 1.22535, 1.67824, 2.22735, 2.88443,
- 3.66294, 4.57845, 5.64911, 6.89637, 8.34578, 10.0282, 11.9812, 14.2519, 16.8993, 20.0000};
-  static const G4double IF[nX]={0,
- .017143, .072466, .172271, .323007, .531545, .805393, 1.15288, 1.58338, 2.10754, 2.73758,
- 3.48769, 4.37450, 5.41770, 6.64092, 8.07288, 9.74894, 11.7135, 14.0232, 16.7522, 20.0000};
-  static const G4double IG[nX]={0,
- .015618, .066285, .158094, .297316, .490692, .745653, 1.07053, 1.47479, 1.96931, 2.56677,
- 3.28205, 4.13289, 5.14068, 6.33158, 7.73808, 9.40133, 11.3745, 13.7279, 16.5577, 20.0000};
-  static const G4double IH[nX]={0,
- .013702, .058434, .139923, .264115, .437466, .667179, .961433, 1.32965, 1.78283, 2.33399,
- 2.99871, 3.79596, 4.74916, 5.88771, 7.24937, 8.88367, 10.8576, 13.2646, 16.2417, 20.0000};
-  static const G4double II[nX]={0,
- .011264, .048311, .116235, .220381, .366634, .561656, .813132, 1.13008, 1.52322, 2.00554,
- 2.59296, 3.30542, 4.16834, 5.21490, 6.48964, 8.05434, 9.99835, 12.4580, 15.6567, 20.0000};
-  static const G4double IJ[nX]={0,
- .008628, .037206, .089928, .171242, .286114, .440251, .640343, .894382, 1.21208, 1.60544,
- 2.08962, 2.68414, 3.41486, 4.31700, 5.44048, 6.85936, 8.69067, 11.1358, 14.5885, 20.0000};
-  static const G4double* Il[nE]=
-                             {I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ};
-  static const G4double lE[nE]={
--1.98842,-1.58049,-1.17256,-.764638,-.356711, .051215, .459141, .867068, 1.27499, 1.68292,
- 2.09085, 2.49877, 2.90670, 3.31463, 3.72255, 4.13048, 4.53840, 4.94633, 5.35426, 5.76218};
-  static const G4double lEmi=lE[0];
-  static const G4double lEma=lE[nE-1];
-  static const G4double dlE=(lEma-lEmi)/bE;
-  //***************************************************************************************
-  G4double Enu=lastE;                 // Get energy of the last calculated cross-section
-  G4double lEn=std::log(Enu);         // log(E) for interpolation
-  G4double rE=(lEn-lEmi)/dlE;         // Position of the energy
-  G4int fE=static_cast<int>(rE);      // Left bin for interpolation
-  if(fE<0) fE=0;
-  if(fE>pE)fE=pE;
-  G4int    sE=fE+1;                   // Right bin for interpolation
-  G4double dE=rE-fE;                  // relative log shift from the left bin
-  G4double dEnu=Enu+Enu;              // doubled energy of nu/anu
-  G4double Enu2=Enu*Enu;              // squared energy of nu/anu
-  G4double Emu=Enu-mmu;               // Free Energy of neutrino/anti-neutrino
-  G4double ME=Enu*MN;                 // M*E
-  G4double dME=ME+ME;                 // 2*M*E
-  G4double dEMN=(dEnu+MN)*ME;
-  G4double MEm=ME-hmmu2;
-  G4double sqE=Enu*std::sqrt(MEm*MEm-mmu2*MN2);
-  G4double E2M=MN*Enu2-(Enu+MN)*hmmu2;
-  G4double ymax=(E2M+sqE)/dEMN;
-  G4double ymin=(E2M-sqE)/dEMN;
-  G4double rmin=1.-ymin;
-  G4double rhm2E=hmmu2/Enu2;
-  G4double Q2mi=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E)); // Q2_min(E_nu)
-  G4double Q2ma=dME*ymax;                                                  // Q2_max(E_nu)
-  G4double Q2nq=Emu*dMN-mcV;
-  if(Q2ma>Q2nq) Q2ma=Q2nq;            // Correction for Non Quasi Elastic
-  // --- now r_min=Q2mi/Q2ma and r_max=1.; when r is randomized -> Q2=r*Q2ma ---
-  G4double Rmi=Q2mi/Q2ma;
-  G4double shift=.875/(1.+.2977/Enu/Enu)/std::pow(Enu,.78);
-  // --- E-interpolation must be done in a log scale ---
-  G4double Xmi=std::pow((shift-Rmi),power);// X_min(E_nu)
-  G4double Xma=std::pow((shift-1.),power); // X_max(E_nu)
-  // Find the integral values integ(Xmi) & integ(Xma) using the direct table
-  G4double idX=dX[fE]+dE*(dX[sE]-dX[fE]); // interpolated X step
-  G4double iXmi=Xmin[fE]+dE*(Xmin[sE]-Xmin[fE]); // interpolated X minimum
-  G4double rXi=(Xmi-iXmi)/idX;
-  G4int    iXi=static_cast<int>(rXi);
-  if(iXi<0) iXi=0;
-  if(iXi>bX) iXi=bX;
-  G4double dXi=rXi-iXi;
-  G4double bntil=Il[fE][iXi];
-  G4double intil=bntil+dXi*(Il[fE][iXi+1]-bntil);
-  G4double bntir=Il[sE][iXi];
-  G4double intir=bntir+dXi*(Il[sE][iXi+1]-bntir);
-  G4double inti=intil+dE*(intir-intil);// interpolated begin of the integral
-  //
-  G4double rXa=(Xma-iXmi)/idX;
-  G4int    iXa=static_cast<int>(rXa);
-  if(iXa<0) iXa=0;
-  if(iXa>bX) iXa=bX;
-  G4double dXa=rXa-iXa;
-  G4double bntal=Il[fE][iXa];
-  G4double intal=bntal+dXa*(Il[fE][iXa+1]-bntal);
-  G4double bntar=Il[sE][iXa];
-  G4double intar=bntar+dXa*(Il[sE][iXa+1]-bntar);
-  G4double inta=intal+dE*(intar-intal);// interpolated end of the integral
-  //
-  // *** Find X using the reversed table ***
-  G4double intx=inti+(inta-inti)*G4UniformRand(); 
-  G4int    intc=static_cast<int>(intx);
-  if(intc<0) intc=0;
-  if(intc>bX) intc=bX;
-  G4double dint=intx-intc;
-  G4double mXl=Xl[fE][intc];
-  G4double Xlb=mXl+dint*(Xl[fE][intc+1]-mXl);
-  G4double mXr=Xl[sE][intc];
-  G4double Xrb=mXr+dint*(Xl[sE][intc+1]-mXr);
-  G4double X=Xlb+dE*(Xrb-Xlb);        // interpolated X value
-  G4double R=shift-std::pow(X,pconv);
-  G4double Q2=R*Q2ma;
-  return Q2*GeV*GeV;
-}
-
-// It returns a fraction of the direct interaction of the neutrino with quark-partons
-G4double G4QANuMuNuclearCrossSection::GetDirectPart(G4double Q2)
-{
-  G4double f=Q2/4.62;
-  G4double ff=f*f;
-  G4double r=ff*ff;
-  G4double s=std::pow((1.+.6/Q2),(-1.-(1.+r)/(12.5+r/.3)));
-  //@@ It is the same for nu/anu, but for nu it is a bit less, and for anu a bit more (par)
-  return 1.-s*(1.-s/2);
-}
-
-// #of quark-partons in the nonperturbative phase space is the same for neut and anti-neut
-G4double G4QANuMuNuclearCrossSection::GetNPartons(G4double Q2)
-{
-  return 3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space
-}
-
-// This class can provide only virtual exchange pi- (a substitute for W- boson)
-G4int G4QANuMuNuclearCrossSection::GetExchangePDGCode() {return -211;}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QAtomicElectronScattering.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QAtomicElectronScattering.cc	(revision 1197)
+++ 	(revision )
@@ -1,629 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QAtomicElectronScattering.cc,v 1.5 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QAtomicElectronScattering class -----------------
-//                 by Mikhail Kossov, December 2003.
-// G4QAtomicElectronScattering class of the CHIPS Simulation Branch in GEANT4
-// ---------------------------------------------------------------
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ****************************************************************************************
-// Short description: CHIPS is re3sponsible for photo- and lepto-nuclear
-// reactions. In particular for thr electron-nuclear reactions. At High
-// Energies the nucleons (including neutrons) and nuclear fragments can
-// interact with atomic electrons (reversed electro-nuclear reaction -
-// antilab), while they are missing the nucler-nuclear (ion-ion) reac-
-// tions. This nucleo-electron process comes "for-free" in CHIPS, as the
-// cross-sections of the interaction is known from the electro-nuclear
-// reactions. The only problem is to move the output from the antilab to
-// lab system. This is what this process is aiming to do. It can be used
-// for the ion transport in Geant4.
-// ---------------------------------------------------------------------
-   
-//#define debug
-//#define pdebug
-
-#include "G4QAtomicElectronScattering.hh"
-
-G4QAtomicElectronScattering::G4QAtomicElectronScattering(const G4String& processName):
- G4VDiscreteProcess(processName, fElectromagnetic)
-{
-#ifdef debug
-  G4cout<<"G4QAtomicElectronScattering::Constructor is called"<<G4endl;
-#endif
-  if (verboseLevel>0) G4cout << GetProcessName() << " process is created "<< G4endl;
-
-  G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World with 234 particles
-  G4QNucleus::SetParameters(freeNuc,freeDib,clustProb,mediRatio); // Clusterization param's
-  G4Quasmon::SetParameters(Temperature,SSin2Gluons,EtaEtaprime);  // Hadronic parameters
-  G4QEnvironment::SetParameters(SolidAngle); // SolAngle of pbar-A secondary mesons capture
-  //@@ Initialize here the G4QuasmonString parameters
-}
-
-G4bool   G4QAtomicElectronScattering::manualFlag=false; // If false:use standard parameters
-G4double G4QAtomicElectronScattering::Temperature=180.; // Critical Temperature (High Ener)
-G4double G4QAtomicElectronScattering::SSin2Gluons=0.3;  // Supression of s-quarks (to u&d)
-G4double G4QAtomicElectronScattering::EtaEtaprime=0.3;  // Supression of eta(gg->qq/3g->qq)
-G4double G4QAtomicElectronScattering::freeNuc=0.5;      // % of free nucleons on a surface
-G4double G4QAtomicElectronScattering::freeDib=0.05;     // % of free diBaryons on a surface
-G4double G4QAtomicElectronScattering::clustProb=5.;     // Nuclear clusterization parameter
-G4double G4QAtomicElectronScattering::mediRatio=10.;    // medium/vacuum hadronizationRatio
-G4int    G4QAtomicElectronScattering::nPartCWorld=152;  // #of particles in the CHIPS World
-G4double G4QAtomicElectronScattering::SolidAngle=0.5;   // A part of Solid Angle to capture
-G4bool   G4QAtomicElectronScattering::EnergyFlux=false; // Flag to use EnergyFlux or MultyQ
-G4double G4QAtomicElectronScattering::PiPrThresh=141.4; // PiProductionThreshold for gammas
-G4double G4QAtomicElectronScattering::M2ShiftVir=20000.;// M2=-Q2=m_pi^2 shift of virtGamma
-G4double G4QAtomicElectronScattering::DiNuclMass=1880.; // Double Nucleon Mass for VirtNorm
-
-void G4QAtomicElectronScattering::SetManual()   {manualFlag=true;}
-void G4QAtomicElectronScattering::SetStandard() {manualFlag=false;}
-
-// Fill the private parameters
-void G4QAtomicElectronScattering::SetParameters(G4double temper, G4double ssin2g,
-                                                G4double etaetap, G4double fN, G4double fD,
-                                                G4double cP, G4double mR, G4int nParCW,
-                                                G4double solAn, G4bool efFlag,
-                                                G4double piThresh, G4double mpisq,
-                                                G4double dinum)
-{//  =============================================================================
-  Temperature=temper;
-  SSin2Gluons=ssin2g;
-  EtaEtaprime=etaetap;
-  freeNuc=fN;
-  freeDib=fD;
-  clustProb=cP;
-  mediRatio=mR;
-  nPartCWorld = nParCW;
-  EnergyFlux=efFlag;
-  SolidAngle=solAn;
-  PiPrThresh=piThresh;
-  M2ShiftVir=mpisq;
-  DiNuclMass=dinum;
-  G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World with 234 particles
-  G4QNucleus::SetParameters(freeNuc,freeDib,clustProb,mediRatio); // Clusterization param's
-  G4Quasmon::SetParameters(Temperature,SSin2Gluons,EtaEtaprime);  // Hadronic parameters
-  G4QEnvironment::SetParameters(SolidAngle); // SolAngle of pbar-A secondary mesons capture
-}
-
-// Destructor
-
-G4QAtomicElectronScattering::~G4QAtomicElectronScattering() {}
-
-
-G4LorentzVector G4QAtomicElectronScattering::GetEnegryMomentumConservation()
-{
-  return EnMomConservation;
-}
-
-G4int G4QAtomicElectronScattering::GetNumberOfNeutronsInTarget()
-{
-  return nOfNeutrons;
-}
-
-G4double G4QAtomicElectronScattering::GetMeanFreePath(const G4Track& aTrack,
-                                                      G4double,G4ForceCondition* Fc)
-{
-  *Fc = NotForced;
-  const G4DynamicParticle* incidentParticle = aTrack.GetDynamicParticle();
-  G4ParticleDefinition* incidentParticleDefinition=incidentParticle->GetDefinition();
-  if( !IsApplicable(*incidentParticleDefinition))
-    G4cout<<"-Wa-G4QAtElScat::GetMeanFreePath called for not implemented particle"<<G4endl;
-  // Calculate the mean Cross Section for the set of Elements(*Isotopes) in the Material
-  G4double Momentum = incidentParticle->GetTotalMomentum(); // 3-momentum of the Particle
-  const G4Material* material = aTrack.GetMaterial();        // Get the current material
-  const G4double* NOfNucPerVolume = material->GetVecNbOfAtomsPerVolume();
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QAtomElectScattering::GetMeanFreePath:"<<nE<<" Elem's in theMaterial"<<G4endl;
-#endif
-  G4bool leptoNuc=false;       // By default the reaction is not lepto-nuclear
-  G4VQCrossSection* CSmanager=G4QElectronNuclearCrossSection::GetPointer();
-  if(incidentParticleDefinition == G4Electron::Electron())
-  {
-    CSmanager=G4QElectronNuclearCrossSection::GetPointer();
-    leptoNuc=true;
-  }
-  else G4cout<<"G4QAtomEScattering::GetMeanFreePath:Particle isn't known in CHIPS"<<G4endl;
-  
-  G4QIsotope* Isotopes = G4QIsotope::Get(); // Pointer to the G4QIsotopes singelton
-  G4double sigma=0.;
-  for(G4int i=0; i<nE; ++i)
-  {
-    G4int Z = static_cast<G4int>((*theElementVector)[i]->GetZ()); // Z of the Element
-    std::vector<std::pair<G4int,G4double>*>* cs= Isotopes->GetCSVector(Z); // Pointer to CS
-    G4int nIs=cs->size();                         // A#Of Isotopes in the Element
-    if(nIs) for(G4int j=0; j<nIs; j++)            // Calculate CS for eachIsotope of El
-    {
-      std::pair<G4int,G4double>* curIs=(*cs)[j];  // A pointer, which is used twice
-      G4int N=curIs->first;                       // #ofNeuterons in the isotope
-      curIs->second = CSmanager->GetCrossSection(true,Momentum,Z,N,13); // CS calculation
-    } // End of temporary initialization of the cross sections in the G4QIsotope singeltone
-    sigma+=Isotopes->GetMeanCrossSection(Z)*NOfNucPerVolume[i]; // SUM(MeanCS*NOFNperV)
-  } // End of LOOP over Elements
-
-  // Check that cross section is not zero and return the mean free path
-  if(sigma > 0.) return 1./sigma;                 // Mean path [distance] 
-  return DBL_MAX;
-}
-
-
-G4bool G4QAtomicElectronScattering::IsApplicable(const G4ParticleDefinition& particle) 
-{
-  if      (particle == *(     G4MuonPlus::MuonPlus()     )) return true;
-  else if (particle == *(    G4MuonMinus::MuonMinus()    )) return true; 
-  else if (particle == *(      G4TauPlus::TauPlus()      )) return true;
-  else if (particle == *(     G4TauMinus::TauMinus()     )) return true;
-  else if (particle == *(     G4Electron::Electron()     )) return true;
-  else if (particle == *(     G4Positron::Positron()     )) return true;
-  else if (particle == *(        G4Gamma::Gamma()        )) return true;
-  else if (particle == *(       G4Proton::Proton()       )) return true;
-  //else if (particle == *(      G4Neutron::Neutron()      )) return true;
-  //else if (particle == *(    G4PionMinus::PionMinus()    )) return true;
-  //else if (particle == *(     G4PionPlus::PionPlus()     )) return true;
-  //else if (particle == *(     G4KaonPlus::KaonPlus()     )) return true;
-  //else if (particle == *(    G4KaonMinus::KaonMinus()    )) return true;
-  //else if (particle == *( G4KaonZeroLong::KaonZeroLong() )) return true;
-  //else if (particle == *(G4KaonZeroShort::KaonZeroShort())) return true;
-  //else if (particle == *(       G4Lambda::Lambda()       )) return true;
-  //else if (particle == *(    G4SigmaPlus::SigmaPlus()    )) return true;
-  //else if (particle == *(   G4SigmaMinus::SigmaMinus()   )) return true;
-  //else if (particle == *(    G4SigmaZero::SigmaZero()    )) return true;
-  //else if (particle == *(      G4XiMinus::XiMinus()      )) return true;
-  //else if (particle == *(       G4XiZero::XiZero()       )) return true;
-  //else if (particle == *(   G4OmegaMinus::OmegaMinus()   )) return true;
-  //else if (particle == *(  G4AntiNeutron::AntiNeutron()  )) return true;
-  //else if (particle == *(   G4AntiProton::AntiProton()   )) return true;
-#ifdef debug
-  G4cout<<"***G4QAtomElScattering::IsApplicable: PDG="<<particle.GetPDGEncoding()<<G4endl;
-#endif
-  return false;
-}
-
-G4VParticleChange* G4QAtomicElectronScattering::PostStepDoIt(const G4Track& track,
-                                                             const G4Step& step)
-{
-  static const G4double mu=G4MuonMinus::MuonMinus()->GetPDGMass(); // muon mass
-  static const G4double mu2=mu*mu;                                 // squared muon mass
-  //static const G4double dpi=M_PI+M_PI;   // 2*pi (for Phi distr.) ***changed to twopi***
-  static const G4double mNeut= G4QPDGCode(2112).GetMass();
-  static const G4double mProt= G4QPDGCode(2212).GetMass();
-  static const G4double dM=mProt+mNeut;                            // doubled nucleon mass
-  //static const G4double mPi0 = G4QPDGCode(111).GetMass();
-  //static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0);
-  //static const G4double mPi  = G4QPDGCode(211).GetMass();
-  //static const G4double mMu  = G4QPDGCode(13).GetMass();
-  //static const G4double mTau = G4QPDGCode(15).GetMass();
-  //static const G4double mEl  = G4QPDGCode(11).GetMass();
-  //
-  const G4DynamicParticle* projHadron = track.GetDynamicParticle();
-  const G4ParticleDefinition* particle=projHadron->GetDefinition();
-  G4LorentzVector proj4M=projHadron->Get4Momentum();
-  G4double momentum = projHadron->GetTotalMomentum(); // 3-momentum of the Particle
-  G4double Momentum=proj4M.rho();
-  if(std::fabs(Momentum-momentum)>.001) G4cerr<<"G4QAtElScat::PSDI P="<<Momentum<<"="
-                                              <<momentum<<G4endl;
-#ifdef debug
-  G4double mp=proj4M.m();
-  G4cout<<"G4QAtomElScattering::PostStepDoIt called, P="<<Momentum<<"="<<momentum<<G4endl;
-#endif
-  if (!IsApplicable(*particle))  // Check applicability
-  {
-    G4cerr<<"G4QAtomElectScat::PostStepDoIt:Only gam,e+,e-,mu+,mu-,t+,t-,p are implemented"
-          <<G4endl;
-    return 0;
-  }
-  const G4Material* material = track.GetMaterial();      // Get the current material
-  G4int Z=0;
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int i=0;
-  G4double sum=0.;
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QAtomElectronScat::PostStepDoIt: "<<nE<<" elements in the material."<<G4endl;
-#endif
-  G4int projPDG=0;                           // PDG Code prototype for the captured hadron
-  // Not all these particles are implemented yet (see Is Applicable)
-  if      (particle ==      G4MuonPlus::MuonPlus()     ) projPDG=  -13;
-  else if (particle ==     G4MuonMinus::MuonMinus()    ) projPDG=   13;
-  else if (particle ==      G4Electron::Electron()     ) projPDG=   11;
-  else if (particle ==      G4Positron::Positron()     ) projPDG=  -11;
-  else if (particle ==         G4Gamma::Gamma()        ) projPDG=   22;
-  else if (particle ==        G4Proton::Proton()       ) projPDG= 2212;
-  else if (particle ==       G4Neutron::Neutron()      ) projPDG= 2112;
-  else if (particle ==     G4PionMinus::PionMinus()    ) projPDG= -211;
-  else if (particle ==      G4PionPlus::PionPlus()     ) projPDG=  211;
-  else if (particle ==      G4KaonPlus::KaonPlus()     ) projPDG= 2112;
-  else if (particle ==     G4KaonMinus::KaonMinus()    ) projPDG= -321;
-  else if (particle ==  G4KaonZeroLong::KaonZeroLong() ) projPDG=  130;
-  else if (particle == G4KaonZeroShort::KaonZeroShort()) projPDG=  310;
-  else if (particle ==       G4TauPlus::TauPlus()      ) projPDG=  -15;
-  else if (particle ==      G4TauMinus::TauMinus()     ) projPDG=   15;
-  else if (particle ==        G4Lambda::Lambda()       ) projPDG= 3122;
-  else if (particle ==     G4SigmaPlus::SigmaPlus()    ) projPDG= 3222;
-  else if (particle ==    G4SigmaMinus::SigmaMinus()   ) projPDG= 3112;
-  else if (particle ==     G4SigmaZero::SigmaZero()    ) projPDG= 3212;
-  else if (particle ==       G4XiMinus::XiMinus()      ) projPDG= 3312;
-  else if (particle ==        G4XiZero::XiZero()       ) projPDG= 3322;
-  else if (particle ==    G4OmegaMinus::OmegaMinus()   ) projPDG= 3334;
-  else if (particle ==   G4AntiNeutron::AntiNeutron()  ) projPDG=-2112;
-  else if (particle ==    G4AntiProton::AntiProton()   ) projPDG=-2212;
-#ifdef debug
-  G4int prPDG=particle->GetPDGEncoding();
-  G4cout<<"G4QAtomElScat::PostStepRestDoIt: projPDG="<<projPDG<<",stPDG="<<prPDG<<G4endl;
-#endif
-  if(!projPDG)
-  {
-    G4cerr<<"-Warning-G4QAtomElScattering::PostStepDoIt:Undefined captured hadron"<<G4endl;
-    return 0;
-  }
-  // @@ It's a standard randomization procedure, which can be placed in G4QMaterial class
-  std::vector<G4double> sumfra;
-  for(i=0; i<nE; ++i)
-  {
-    G4double frac=material->GetFractionVector()[i];
-    sum+=frac;
-    sumfra.push_back(sum);             // remember the summation steps
-  }
-  G4double rnd = sum*G4UniformRand();
-  for(i=0; i<nE; ++i) if (rnd<sumfra[i]) break;
-  G4Element* pElement=(*theElementVector)[i];
-  Z=static_cast<G4int>(pElement->GetZ());
-  if(Z<=0)
-  {
-    G4cerr<<"-Warning-G4QAtomicElectronScattering::PostStepDoIt: Element's Z="<<Z<<G4endl;
-    if(Z<0) return 0;
-  }
-  G4int N = Z;
-  G4int isoSize=0;                         // The default for the isoVectorLength is 0
-  G4IsotopeVector* isoVector=pElement->GetIsotopeVector();
-  if(isoVector) isoSize=isoVector->size(); // Get real size of the isotopeVector if exists
-#ifdef debug
-  G4cout<<"G4QAtomicElectronScattering::PostStepDoIt: isovectorLength="<<isoSize<<G4endl;
-#endif
-  if(isoSize)                         // The Element has not trivial abumdance set
-  {
-    // @@ the following solution is temporary till G4Element can contain the QIsotopIndex
-    G4int curInd=G4QIsotope::Get()->GetLastIndex(Z);
-    if(!curInd)                       // The new artificial element must be defined 
-    {
-      std::vector<std::pair<G4int,G4double>*>* newAbund =
-                                               new std::vector<std::pair<G4int,G4double>*>;
-      G4double* abuVector=pElement->GetRelativeAbundanceVector();
-      for(G4int j=0; j<isoSize; j++)
-      {
-        N=pElement->GetIsotope(j)->GetN()-Z;
-        if(pElement->GetIsotope(j)->GetZ()!=Z) G4cerr<<"*G4QCaptureAtRest::AtRestDoIt: Z="
-                                        <<pElement->GetIsotope(j)->GetZ()<<"#"<<Z<<G4endl;
-        G4double abund=abuVector[j];
-        std::pair<G4int,G4double>* pr= new std::pair<G4int,G4double>(N,abund);
-#ifdef debug
-        G4cout<<"G4QAtomElScat::PostStepDoIt:pair#="<<j<<", N="<<N<<",ab="<<abund<<G4endl;
-#endif
-        newAbund->push_back(pr);
-      }
-#ifdef debug
-      G4cout<<"G4QAtomElectScat::PostStepDoIt:pairVectorLength="<<newAbund->size()<<G4endl;
-#endif
-      curInd=G4QIsotope::Get()->InitElement(Z,1,newAbund);
-      for(G4int k=0; k<isoSize; k++) delete (*newAbund)[k];
-      delete newAbund;
-    }
-    // @@ ^^^^^^^^^^ End of the temporary solution ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-    N = G4QIsotope::Get()->GetNeutrons(Z,curInd);
-  }
-  else  N = G4QIsotope::Get()->GetNeutrons(Z);
-  nOfNeutrons=N;                                       // Remember it for energy-mom. check
-  G4double dd=0.025;
-  G4double am=Z+N;
-  G4double sr=std::sqrt(am);
-  G4double dsr=0.01*(sr+sr);
-  if(dsr<dd)dsr=dd;
-  if(manualFlag) G4QNucleus::SetParameters(freeNuc,freeDib,clustProb,mediRatio); // ManualP
-  else if(projPDG==-2212) G4QNucleus::SetParameters(1.-dsr-dsr,dd+dd,5.,10.);//aP ClustPars
-  else if(projPDG==-211)  G4QNucleus::SetParameters(.67-dsr,.32-dsr,5.,9.);//Pi- ClustPars
-#ifdef debug
-  G4cout<<"G4QAtomElectScattering::PostStepDoIt: N="<<N<<" for element with Z="<<Z<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"---Warning---G4QAtomElectScat::PostStepDoIt:Element with N="<<N<< G4endl;
-    return 0;
-  }
-  if(projPDG==11||projPDG==-11||projPDG==13||projPDG==-13||projPDG==15||projPDG==-15)
-  { // Lepto-nuclear case with the equivalent photon algorithm. @@InFuture + neutrino & QE
-    G4double kinEnergy= projHadron->GetKineticEnergy();
-    G4ParticleMomentum dir = projHadron->GetMomentumDirection();
-    G4VQCrossSection* CSmanager=G4QElectronNuclearCrossSection::GetPointer();
-    G4int aProjPDG=std::abs(projPDG);
-    if(aProjPDG==13) CSmanager=G4QMuonNuclearCrossSection::GetPointer();
-    if(aProjPDG==15) CSmanager=G4QTauNuclearCrossSection::GetPointer();
-    G4double xSec=CSmanager->GetCrossSection(false,Momentum,Z,N,13);//Recalculate CrossSect
-    // @@ check a possibility to separate p, n, or alpha (!)
-    if(xSec <= 0.) // The cross-section iz 0 -> Do Nothing
-    {
-      //Do Nothing Action insead of the reaction
-      aParticleChange.ProposeEnergy(kinEnergy);
-      aParticleChange.ProposeLocalEnergyDeposit(0.);
-      aParticleChange.ProposeMomentumDirection(dir) ;
-      return G4VDiscreteProcess::PostStepDoIt(track,step);
-    }
-    G4double photonEnergy = CSmanager->GetExchangeEnergy(); // Energy of EqivExchangePart
-    if( kinEnergy < photonEnergy )
-    {
-      //Do Nothing Action insead of the reaction
-      G4cerr<<"G4QAtomElectScat::PSDoIt: phE="<<photonEnergy<<">leptE="<<kinEnergy<<G4endl;
-      aParticleChange.ProposeEnergy(kinEnergy);
-      aParticleChange.ProposeLocalEnergyDeposit(0.);
-      aParticleChange.ProposeMomentumDirection(dir) ;
-      return G4VDiscreteProcess::PostStepDoIt(track,step);
-    }
-    G4double photonQ2 = CSmanager->GetExchangeQ2(photonEnergy);// Q2(t) of EqivExchangePart
-    G4double W=photonEnergy-photonQ2/dM;// HadronicEnergyFlow (W-energy) for virtual photon
-    if(W<0.) 
-    {
-      //Do Nothing Action insead of the reaction
-      G4cout<<"G4QAtomElScat::PostStepDoIt:(lN) negative equivalent energy W="<<W<<G4endl;
-      aParticleChange.ProposeEnergy(kinEnergy);
-      aParticleChange.ProposeLocalEnergyDeposit(0.);
-      aParticleChange.ProposeMomentumDirection(dir) ;
-      return G4VDiscreteProcess::PostStepDoIt(track,step);
-    }
-    // Update G4VParticleChange for the scattered muon
-    G4VQCrossSection* thePhotonData=G4QPhotonNuclearCrossSection::GetPointer();
-    G4double sigNu=thePhotonData->GetCrossSection(true,photonEnergy, Z, N);// Integrated CS
-    G4double sigK =thePhotonData->GetCrossSection(true, W, Z, N);          // Real CrosSect
-    G4double rndFraction = CSmanager->GetVirtualFactor(photonEnergy, photonQ2);
-    if(sigNu*G4UniformRand()>sigK*rndFraction) 
-    {
-      //Do NothingToDo Action insead of the reaction
-      G4cout<<"G4QAtomElectScat::PostStepDoIt: probability correction - DoNothing"<<G4endl;
-      aParticleChange.ProposeEnergy(kinEnergy);
-      aParticleChange.ProposeLocalEnergyDeposit(0.);
-      aParticleChange.ProposeMomentumDirection(dir) ;
-      return G4VDiscreteProcess::PostStepDoIt(track,step);
-    }
-    G4double iniE=kinEnergy+mu;          // Initial total energy of the muon
-    G4double finE=iniE-photonEnergy;     // Final total energy of the muon
-    if(finE>0) aParticleChange.ProposeEnergy(finE) ;
-    else
-    {
-      aParticleChange.ProposeEnergy(0.) ;
-      aParticleChange.ProposeTrackStatus(fStopAndKill);
-    }
-    // Scatter the muon
-    G4double EEm=iniE*finE-mu2;          // Just an intermediate value to avoid "2*"
-    G4double iniP=std::sqrt(iniE*iniE-mu2);   // Initial momentum of the electron
-    G4double finP=std::sqrt(finE*finE-mu2);   // Final momentum of the electron
-    G4double cost=(EEm+EEm-photonQ2)/iniP/finP; // cos(theta) for the electron scattering
-    if(cost>1.) cost=1.;                 // To avoid the accuracy of calculation problem
-    //else if(cost>1.001)                // @@ error report can be done, but not necessary
-    if(cost<-1.) cost=-1.;               // To avoid the accuracy of calculation problem
-    //else if(cost<-1.001)               // @@ error report can be done, but not necessary
-    // --- Example from electromagnetic physics --
-    //G4ThreeVector newMuonDirection(dirx,diry,dirz);
-    //newMuonDirection.rotateUz(dir);
-    //aParticleChange.ProposeMomentumDirection(newMuonDirection1) ;
-    // The scattering in respect to the derection of the incident muon is made impicitly:
-    G4ThreeVector ort=dir.orthogonal();  // Not normed orthogonal vector (!) (to dir)
-    G4ThreeVector ortx = ort.unit();     // First unit vector orthogonal to the direction
-    G4ThreeVector orty = dir.cross(ortx);// Second unit vector orthoganal to the direction
-    G4double sint=std::sqrt(1.-cost*cost);    // Perpendicular component
-    G4double phi=twopi*G4UniformRand();  // phi of scattered electron
-    G4double sinx=sint*std::sin(phi);         // x-component
-    G4double siny=sint*std::cos(phi);         // y-component
-    G4ThreeVector findir=cost*dir+sinx*ortx+siny*orty;
-    aParticleChange.ProposeMomentumDirection(findir); // new direction for the muon
-    const G4ThreeVector photon3M=iniP*dir-finP*findir;
-    projPDG=22;
-    proj4M=G4LorentzVector(photon3M,photon3M.mag());
-  }
-  G4int targPDG=90000000+Z*1000+N;       // PDG Code of the target nucleus
-  G4QPDGCode targQPDG(targPDG);
-  G4double tM=targQPDG.GetMass();
-  EnMomConservation=proj4M+G4LorentzVector(0.,0.,0.,tM);    // Total 4-mom of the reaction
-  G4QHadronVector* output=new G4QHadronVector; // Prototype of the output G4QHadronVector
-  // @@@@@@@@@@@@@@ Temporary for the testing purposes --- Begin
-  //G4bool elF=false; // Flag of the ellastic scattering is "false" by default
-  //G4double eWei=1.;
-  // @@@@@@@@@@@@@@ Temporary for the testing purposes --- End  
-#ifdef debug
-  G4cout<<"G4QAtomElScat::PostStepDoIt: projPDG="<<projPDG<<", targPDG="<<targPDG<<G4endl;
-#endif
-  G4QHadron* pH = new G4QHadron(projPDG,proj4M);                // ---> DELETED -->------*
-  if(momentum<1000.) // Condition for using G4QEnvironment (not G4QuasmonString)         |
-  { //                                                                                   |
-    G4QHadronVector projHV;                                 //                           |
-    projHV.push_back(pH);                                   // DESTROYED over 2 lines -* |
-    G4QEnvironment* pan= new G4QEnvironment(projHV,targPDG);// ---> DELETED --->-----* | |
-    std::for_each(projHV.begin(), projHV.end(), DeleteQHadron()); // <---<------<----+-+-*
-    projHV.clear(); // <------------<---------------<-------------------<------------+-* .
-#ifdef debug
-    G4cout<<"G4QAtomElectScat::PostStepDoIt: pPDG="<<projPDG<<", mp="<<mp<<G4endl;// |   .
-#endif
-    try                                                           //                 |   ^
-    {                                                             //                 |   .
-      delete output;                                              //                 |   ^
-      output = pan->Fragment();// DESTROYED in the end of the LOOP work space        |   .
-    }                                                             //                 |   ^
-    catch (G4QException& error)//                                                    |   .
-    {                                                             //                 |   ^
-      //#ifdef pdebug
-      G4cerr<<"**G4QAtomElectScat::PostStepDoIt:G4QE Exception is catched"<<G4endl;//|   .
-      //#endif
-      G4Exception("G4QAtomElScat::PostStepDoIt:","27",FatalException,"CHIPScrash");//|   .
-    }                                                             //                 |   ^
-    delete pan;                              // Delete the Nuclear Environment <--<--*   .
-  } //                                                                                   ^
-  else               // Use G4QuasmonString                                              .
-  { //                                                                                   ^
-    G4QuasmonString* pan= new G4QuasmonString(pH,false,targPDG,false);//-> DELETED --*   .
-    delete pH;                                                    // --------<-------+---+
-#ifdef debug
-    G4double mp=G4QPDGCode(projPDG).GetMass();   // Mass of the projectile particle  |
-    G4cout<<"G4QAtomElectScat::PostStepDoIt: pPDG="<<projPDG<<", pM="<<mp<<G4endl; //|
-#endif
-    //G4int tNH=0;                    // Prototype of the number of secondaries inOut|
-    try                                                           //                 |
-    {                                                             //                 |
-      delete output;                                              //                 |
-      output = pan->Fragment();// DESTROYED in the end of the LOOP work space        |
-      // @@@@@@@@@@@@@@ Temporary for the testing purposes --- Begin                 |
-      //tNH=pan->GetNOfHadrons();     // For the test purposes of the String         |
-      //if(tNH==2)                    // At least 2 hadrons are in the Constr.Output |
-      //{//                                                                          |
-      //  elF=true;                   // Just put a flag for the ellastic Scattering |
-      //  delete output;              // Delete a prototype of dummy G4QHadronVector |
-      //  output = pan->GetHadrons(); // DESTROYED in the end of the LOOP work space |
-      //}//                                                                          |
-      //eWei=pan->GetWeight();        // Just an example for the weight of the event |
-#ifdef debug
-      //G4cout<<"=====>>G4QAtomElScat::PostStepDoIt:elF="<<elF<<",n="<<tNH<<G4endl;//|
-#endif
-      // @@@@@@@@@@@@@@ Temporary for the testing purposes --- End                   |
-    }                                                             //                 |
-    catch (G4QException& error)//                                                    |
-    {                                                             //                 |
-      //#ifdef pdebug
-      G4cerr<<"**G4QAtomElectScat::PostStepDoIt: GEN Exception is catched"<<G4endl;//|
-      //#endif
-      G4Exception("G4QAtomElSct::AtRestDoIt:","27",FatalException,"QString Excep");//|
-    }                                                             //                 |
-    delete pan;                              // Delete the Nuclear Environment ---<--*
-  }
-  aParticleChange.Initialize(track);
-  G4double localtime = track.GetGlobalTime();
-  G4ThreeVector position = track.GetPosition();
-  G4TouchableHandle trTouchable = track.GetTouchableHandle();
-  // ------------- From here the secondaries are filled -------------------------
-  G4int tNH = output->size();       // A#of hadrons in the output
-  aParticleChange.SetNumberOfSecondaries(tNH); 
-  // Now add nuclear fragments
-#ifdef debug
-  G4cout<<"G4QAtomElectronScat::PostStepDoIt: "<<tNH<<" particles are generated"<<G4endl;
-#endif
-  G4int nOut=output->size();               // Real length of the output @@ Temporary
-  if(tNH==1) tNH=0;                        // @@ Temporary
-  if(tNH==2&&2!=nOut) G4cout<<"--Warning--G4QAtomElScat::PostStepDoIt: 2 # "<<nOut<<G4endl;
-  // Deal with ParticleChange final state interface to GEANT4 output of the process
-  //if(tNH==2) for(i=0; i<tNH; i++) // @@ Temporary tNH==2 instead of just tNH
-  if(tNH) for(i=0; i<tNH; i++) // @@ Temporary tNH==2 instead of just tNH
-  {
-    // Note that one still has to take care of Hypernuclei (with Lambda or Sigma inside)
-    // Hypernucleus mass calculation and ion-table interface upgrade => work for Hisaya @@
-    // The decau process for hypernuclei must be developed in GEANT4 (change CHIPS body)
-    G4QHadron* hadr=output->operator[](i);   // Pointer to the output hadron    
-    G4int PDGCode = hadr->GetPDGCode();
-    G4int nFrag   = hadr->GetNFragments();
-#ifdef pdebug
-    G4cout<<"G4QAtomElectScat::AtRestDoIt: H#"<<i<<",PDG="<<PDGCode<<",nF="<<nFrag<<G4endl;
-#endif
-    if(nFrag)                // Skip intermediate (decayed) hadrons
-    {
-#ifdef debug
-      G4cout<<"G4QAtomElScat::PostStepDoIt: Intermediate particle is found i="<<i<<G4endl;
-#endif
-      delete hadr;
-      continue;
-    }
-    G4DynamicParticle* theSec = new G4DynamicParticle;  
-    G4ParticleDefinition* theDefinition;
-    if     (PDGCode==90000001) theDefinition = G4Neutron::Neutron();
-    else if(PDGCode==90001000) theDefinition = G4Proton::Proton();//While it can be in ions
-    else if(PDGCode==91000000) theDefinition = G4Lambda::Lambda();
-    else if(PDGCode==311 || PDGCode==-311)
-    {
-      if(G4UniformRand()>.5) theDefinition = G4KaonZeroLong::KaonZeroLong();   // K_L
-      else                   theDefinition = G4KaonZeroShort::KaonZeroShort(); // K_S
-    }
-    else if(PDGCode==91000999) theDefinition = G4SigmaPlus::SigmaPlus();
-    else if(PDGCode==90999001) theDefinition = G4SigmaMinus::SigmaMinus();
-    else if(PDGCode==91999000) theDefinition = G4XiMinus::XiMinus();
-    else if(PDGCode==91999999) theDefinition = G4XiZero::XiZero();
-    else if(PDGCode==92998999) theDefinition = G4OmegaMinus::OmegaMinus();
-    else if(PDGCode >80000000) // Defines hypernuclei as normal nuclei (N=N+S Correction!)
-    {
-      G4int aZ = hadr->GetCharge();
-      G4int aA = hadr->GetBaryonNumber();
-#ifdef pdebug
-      G4cout<<"G4QAtomicElectronScattering::AtRestDoIt:Ion Z="<<aZ<<", A="<<aA<<G4endl;
-#endif
-      theDefinition = G4ParticleTable::GetParticleTable()->FindIon(aZ,aA,0,aZ);
-    }
-    //else theDefinition = G4ParticleTable::GetParticleTable()->FindParticle(PDGCode);
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QAtomElectScat::PostStepDoIt:Define particle with PDG="<<PDGCode<<G4endl;
-#endif
-      theDefinition = G4QPDGToG4Particle::Get()->GetParticleDefinition(PDGCode);
-#ifdef pdebug
-      G4cout<<"G4QAtomElScat::PostStepDoIt:AfterParticleDefinition PDG="<<PDGCode<<G4endl;
-#endif
-    }
-    if(!theDefinition)
-    {
-      G4cout<<"---Warning---G4QAtomElScattering::PostStepDoIt: drop PDG="<<PDGCode<<G4endl;
-      delete hadr;
-      continue;
-    }
-#ifdef pdebug
-    G4cout<<"G4QAtomElScat::PostStepDoIt:Name="<<theDefinition->GetParticleName()<<G4endl;
-#endif
-    theSec->SetDefinition(theDefinition);
-    G4LorentzVector h4M=hadr->Get4Momentum();
-    EnMomConservation-=h4M;
-#ifdef tdebug
-    G4cout<<"G4QCollis::PSDI:"<<i<<","<<PDGCode<<h4M<<h4M.m()<<EnMomConservation<<G4endl;
-#endif
-#ifdef debug
-    G4cout<<"G4QAtomElectScat::PostStepDoIt:#"<<i<<",PDG="<<PDGCode<<",4M="<<h4M<<G4endl;
-#endif
-    theSec->Set4Momentum(h4M); //                                                         ^
-    delete hadr; // <-----<-----------<-------------<---------------------<---------<-----*
-#ifdef debug
-    G4ThreeVector curD=theSec->GetMomentumDirection();              //                    ^
-    G4double curM=theSec->GetMass();                                //                    |
-    G4double curE=theSec->GetKineticEnergy()+curM;                  //                    ^
-    G4cout<<"G4QCollis::PSDoIt:p="<<curD<<curD.mag()<<",e="<<curE<<",m="<<curM<<G4endl;// |
-#endif
-    G4Track* aNewTrack = new G4Track(theSec, localtime, position ); //                    ^
-    aNewTrack->SetTouchableHandle(trTouchable);                     //                    |
-    aParticleChange.AddSecondary( aNewTrack );                      //                    |
-#ifdef debug
-    G4cout<<"G4QAtomicElectronScattering::PostStepDoIt:#"<<i<<" is done."<<G4endl; //     |
-#endif
-  } //                                                                                    |
-  delete output; // instances of the G4QHadrons from the output are already deleted above *
-  aParticleChange.ProposeTrackStatus(fStopAndKill);        // Kill the absorbed particle
-  //return &aParticleChange;                               // This is not enough (ClearILL)
-#ifdef debug
-    G4cout<<"G4QAtomicElectronScattering::PostStepDoIt:****PostStepDoIt done****"<<G4endl;
-#endif
-  return G4VDiscreteProcess::PostStepDoIt(track, step);
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCaptureAtRest.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCaptureAtRest.cc	(revision 1197)
+++ 	(revision )
@@ -1,1450 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QCaptureAtRest.cc,v 1.20 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QCaptureAtRest class -----------------
-//                 by Mikhail Kossov, December 2003.
-// G4QCaptureAtRest class of the CHIPS Simulation Branch in GEANT4
-// ---------------------------------------------------------------
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short Description: This is a universal process for nuclear capture
-// (including annihilation) of all negative particles (negative hadrons,
-// negative leptons: mu- & tau-). It can be used for the cold neutron
-// capture, but somebody should decide what is the probability (defined
-// by the capture cross-section and atomic material properties) to switch
-// the cold neutron to the at-rest neutron. - M.K.2009.
-// ----------------------------------------------------------------------
-
-
-//#define debug
-//#define pdebug
-//#define tdebug
-
-#include "G4QCaptureAtRest.hh"
-#include "G4HadronicProcessStore.hh"
-
-G4QCaptureAtRest::G4QCaptureAtRest(const G4String& processName)
-  : G4VRestProcess(processName, fHadronic), Time(0.), EnergyDeposition(0.)
-{
-  SetProcessSubType(fCapture);
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::Constructor is called"<<G4endl;
-#endif
-  if (verboseLevel>0) G4cout << GetProcessName() << " is created "<< G4endl;
-
-  //G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part. max)
-  G4QNucleus::SetParameters(freeNuc,freeDib,clustProb,mediRatio); // Clusterization param's
-  G4Quasmon::SetParameters(Temperature,SSin2Gluons,EtaEtaprime);  // Hadronic parameters
-  G4QEnvironment::SetParameters(SolidAngle); // SolAngle of pbar-A secondary mesons capture
-  G4HadronicProcessStore::Instance()->RegisterExtraProcess(this);
-}
-
-G4bool   G4QCaptureAtRest::manualFlag=false; // If false then standard parameters are used
-G4double G4QCaptureAtRest::Temperature=180.; // Critical Temperature (sensitive at High En)
-G4double G4QCaptureAtRest::SSin2Gluons=0.3;  // Supression of s-quarks (in respect to u&d)
-G4double G4QCaptureAtRest::EtaEtaprime=0.3;  // Supression of eta mesons (gg->qq/3g->qq)
-G4double G4QCaptureAtRest::freeNuc=0.5;      // Percentage of free nucleons on the surface
-G4double G4QCaptureAtRest::freeDib=0.05;     // Percentage of free diBaryons on the surface
-G4double G4QCaptureAtRest::clustProb=5.;     // Nuclear clusterization parameter
-G4double G4QCaptureAtRest::mediRatio=10.;    // medium/vacuum hadronization ratio
-G4int    G4QCaptureAtRest::nPartCWorld=152;  // The#of particles initialized in CHIPS World
-G4double G4QCaptureAtRest::SolidAngle=0.5;   // Part of Solid Angle to capture (@@A-dep.)
-G4bool   G4QCaptureAtRest::EnergyFlux=false; // Flag for Energy Flux use (not MultyQuasmon)
-G4double G4QCaptureAtRest::PiPrThresh=141.4; // Pion Production Threshold for gammas
-G4double G4QCaptureAtRest::M2ShiftVir=20000.;// Shift for M2=-Q2=m_pi^2 of the virtualGamma
-G4double G4QCaptureAtRest::DiNuclMass=1880.; // DoubleNucleon Mass for VirtualNormalization
-
-void G4QCaptureAtRest::SetManual()   {manualFlag=true;}
-void G4QCaptureAtRest::SetStandard() {manualFlag=false;}
-
-// Fill the private parameters
-void G4QCaptureAtRest::SetParameters(G4double temper, G4double ssin2g, G4double etaetap,
-                                     G4double fN, G4double fD, G4double cP, G4double mR,
-                                     G4int nParCW, G4double solAn, G4bool efFlag,
-                                     G4double piThresh, G4double mpisq, G4double dinum)
-{//  =============================================================================
-  Temperature=temper;
-  SSin2Gluons=ssin2g;
-  EtaEtaprime=etaetap;
-  freeNuc=fN;
-  freeDib=fD;
-  clustProb=cP;
-  mediRatio=mR;
-  nPartCWorld = nParCW;
-  EnergyFlux=efFlag;
-  SolidAngle=solAn;
-  PiPrThresh=piThresh;
-  M2ShiftVir=mpisq;
-  DiNuclMass=dinum;
-  G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World with 234 particles
-  G4QNucleus::SetParameters(freeNuc,freeDib,clustProb,mediRatio); // Clusterization param's
-  G4Quasmon::SetParameters(Temperature,SSin2Gluons,EtaEtaprime);  // Hadronic parameters
-  G4QEnvironment::SetParameters(SolidAngle); // SolAngle of pbar-A secondary mesons capture
-}
-
-// Destructor
-
-G4QCaptureAtRest::~G4QCaptureAtRest()
-{
-  // deregister in the store
-  G4HadronicProcessStore::Instance()->DeRegisterExtraProcess(this);
-}
-
-G4LorentzVector G4QCaptureAtRest::GetEnegryMomentumConservation()
-{
-  return EnMomConservation;
-}
-
-G4int G4QCaptureAtRest::GetNumberOfNeutronsInTarget()
-{
-  return nOfNeutrons;
-}
-
-G4bool G4QCaptureAtRest::IsApplicable(const G4ParticleDefinition& particle) 
-{
-  if      (particle == *(    G4PionMinus::PionMinus()    )) return true;
-  else if (particle == *(    G4KaonMinus::KaonMinus()    )) return true;
-  else if (particle == *(   G4AntiProton::AntiProton()   )) return true;
-  else if (particle == *(    G4MuonMinus::MuonMinus()    )) return true;
-  else if (particle == *(     G4TauMinus::TauMinus()     )) return true;
-  else if (particle == *(   G4SigmaMinus::SigmaMinus()   )) return true;
-  else if (particle == *(      G4XiMinus::XiMinus()      )) return true;
-  else if (particle == *(   G4OmegaMinus::OmegaMinus()   )) return true;
-  else if (particle == *(      G4Neutron::Neutron()      )) return true;
-  else if (particle == *(  G4AntiNeutron::AntiNeutron()  )) return true;
-  else if (particle == *(G4AntiSigmaPlus::AntiSigmaPlus())) return true;
-#ifdef debug
-  G4cout<<"***G4QCaptureAtRest::IsApplicable: PDG="<<particle.GetPDGEncoding()<<G4endl;
-#endif
-  return false;
-}
-
-void G4QCaptureAtRest::PreparePhysicsTable(const G4ParticleDefinition& p) 
-{
-  G4HadronicProcessStore::Instance()->RegisterParticleForExtraProcess(this, &p);
-}
-
-void G4QCaptureAtRest::BuildPhysicsTable(const G4ParticleDefinition& p) 
-{
-  G4HadronicProcessStore::Instance()->PrintInfo(&p);
-}
-
-G4VParticleChange* G4QCaptureAtRest::AtRestDoIt(const G4Track& track, const G4Step& step)
-{
-  static const G4double mNeut = G4QPDGCode(2112).GetMass();
-  static const G4double mNeut2= mNeut*mNeut;
-  static const G4double dmNeut= mNeut+mNeut;
-  static const G4double mProt = G4QPDGCode(2212).GetMass();
-  static const G4double dmProt= mProt+mProt;
-  static const G4double mPi0  = G4QPDGCode(111).GetMass();
-  static const G4double mDeut = G4QPDGCode(2112).GetNuclMass(1,1,0);
-  static const G4double mAlph = G4QPDGCode(2112).GetNuclMass(2,2,0);
-  //static const G4double mPi  = G4QPDGCode(211).GetMass();
-  static const G4double mMu  = G4QPDGCode(13).GetMass();
-  //static const G4double mMu2 = mMu*mMu;
-  //static const G4double dmMu = mMu+mMu;
-  // The best parameters for mu->e+nu+nu decay
-  static const G4double b1=2.784;
-  static const G4double ga=.000015;
-  static const G4double rb=1./b1;
-  //static const G4double mTau = G4QPDGCode(15).GetMass();
-  static const G4double mEl  = G4QPDGCode(11).GetMass();
-  static const G4double mEl2 = mEl*mEl;
-  //-------------------------------------------------------------------------------------
-  static G4bool CWinit = true;                       // CHIPS Warld needs to be initted
-  if(CWinit)
-  {
-    CWinit=false;
-    G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part.max)
-  }
-  //-------------------------------------------------------------------------------------
-  const G4DynamicParticle* stoppedHadron = track.GetDynamicParticle();
-  const G4ParticleDefinition* particle=stoppedHadron->GetDefinition();
-  Time=0.;
-  EnergyDeposition=0.;
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::AtRestDoIt is called,EnDeposition="<<EnergyDeposition<<G4endl;
-#endif
-  if (!IsApplicable(*particle))  // Check applicability
-  {
-    G4cerr<<"G4QCaptureAtRest::AtRestDoIt: Only mu-,pi-,K-,S-,X-,O-,aP,aN,aS+."<< G4endl;
-    return 0;
-  }
-  const G4Material* material = track.GetMaterial();      // Get the current material
-  G4int Z=0;
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int i=0;
-  G4double sum=0.;
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::AtRestDoIt: "<<nE<<" elements in the material."<<G4endl;
-#endif
-  G4int projPDG=0;                           // PDG Code prototype for the captured hadron
-  if      (particle ==     G4MuonMinus::MuonMinus()    ) projPDG=   13;
-  else if (particle ==      G4TauMinus::TauMinus()     ) projPDG=   15; // @@AtomicRad?
-  else if (particle ==     G4PionMinus::PionMinus()    ) projPDG= -211; // @@AtomicRad?
-  else if (particle ==     G4KaonMinus::KaonMinus()    ) projPDG= -321;
-  else if (particle ==    G4AntiProton::AntiProton()   ) projPDG=-2212;
-  else if (particle ==    G4SigmaMinus::SigmaMinus()   ) projPDG= 3112;
-  else if (particle ==       G4XiMinus::XiMinus()      ) projPDG= 3312;
-  else if (particle ==    G4OmegaMinus::OmegaMinus()   ) projPDG= 3334;
-  else if (particle ==       G4Neutron::Neutron()      ) projPDG= 2112;
-  else if (particle ==   G4AntiNeutron::AntiNeutron()  ) projPDG=-2112;
-  else if (particle == G4AntiSigmaPlus::AntiSigmaPlus()) projPDG=-3222;
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::AtRestDoIt: projPDG="<<projPDG<<G4endl;
-#endif
-  if(!projPDG)
-  {
-    G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt: Undefined captured hadron"<<G4endl;
-    return 0;
-  }
-  std::vector<G4double> sumfra;
-  for(i=0; i<nE; ++i)
-  {
-    G4double frac=material->GetFractionVector()[i];
-    if(projPDG==13||projPDG==15)
-    {
-      G4int cZ=static_cast<G4int>((*theElementVector)[i]->GetZ());
-      frac*=cZ;
-      if(cZ==9||cZ==35||cZ==53||cZ==85) frac*=.66;
-      else if                  (cZ== 3) frac*=.50;
-      else if          (cZ==24||cZ==28) frac*=.90;
-      else if          (cZ== 5||cZ==17) frac*=.70;
-      else if                  (cZ== 8) frac*=.56;
-    }
-    sum+=frac;
-    sumfra.push_back(sum);             // remember the summation steps
-  }
-  G4double rnd = sum*G4UniformRand();
-  for(i=0; i<nE; ++i) if (rnd<sumfra[i]) break;
-  G4Element* pElement=(*theElementVector)[i];
-  Z=static_cast<G4int>(pElement->GetZ());
-  if(Z<=0)
-  {
-    G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt:Element with Z="<<Z<< G4endl;
-    if(Z<0) return 0;
-  }
-  G4QIsotope* Isotopes = G4QIsotope::Get(); // Pointer to the G4QIsotopes singleton
-  G4int N = Z;
-  G4int isoSize=0;                         // The default for the isoVectorLength is 0
-  G4int indEl=0;                           // Index of non-natural element or 0 (default)
-  G4IsotopeVector* isoVector=pElement->GetIsotopeVector();
-  if(isoVector) isoSize=isoVector->size(); // Get real size of the isotopeVector if exists
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::AtRestDoIt: isovectorLength="<<isoSize<<G4endl;
-#endif
-  if(isoSize)                              // The Element has not trivial abumdance set
-  {
-    indEl=pElement->GetIndex()+1;          // Index of the non-trivial element is an order
-#ifdef debug
-    G4cout<<"G4QCapAR::GetMFP: iE="<<indEl<<", def="<<Isotopes->IsDefined(Z,indEl)<<G4endl;
-#endif
-    if(!Isotopes->IsDefined(Z,indEl))      // This index is not defined for this Z: define
-    {
-      std::vector<std::pair<G4int,G4double>*>* newAbund =
-                                               new std::vector<std::pair<G4int,G4double>*>;
-      G4double* abuVector=pElement->GetRelativeAbundanceVector();
-      for(G4int j=0; j<isoSize; j++)
-      {
-        N=pElement->GetIsotope(j)->GetN()-Z;
-        if(pElement->GetIsotope(j)->GetZ()!=Z) G4cerr<<"*G4QCaptureAtRest::AtRestDoIt: Z="
-                                        <<pElement->GetIsotope(j)->GetZ()<<"#"<<Z<<G4endl;
-        G4double abund=abuVector[j];
-        std::pair<G4int,G4double>* pr= new std::pair<G4int,G4double>(N,abund);
-#ifdef debug
-        G4cout<<"G4QCaptureAtRest::AtRestDoIt:pair#="<<j<<", N="<<N<<",ab="<<abund<<G4endl;
-#endif
-        newAbund->push_back(pr);
-      }
-#ifdef debug
-      G4cout<<"G4QCaptureAtRest::AtRestDoIt: pairVectorLength="<<newAbund->size()<<G4endl;
-#endif
-      indEl=Isotopes->InitElement(Z,indEl,newAbund); // redefinie newInd (if exists)
-      for(G4int k=0; k<isoSize; k++) delete (*newAbund)[k];
-      delete newAbund;
-    }
-    // @@ ^^^^^^^^^^ End of the temporary solution ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-    N = Isotopes->GetNeutrons(Z,indEl);
-  }
-  else  N = Isotopes->GetNeutrons(Z);
-  nOfNeutrons=N;                                       // Remember it for energy-mom. check
-  G4double dd=0.025;
-  G4double am=Z+N;
-  G4double sr=std::sqrt(am);
-  G4double dsr=0.01*(sr+sr);
-  if(dsr<dd)dsr=dd;
-  if(manualFlag) G4QNucleus::SetParameters(freeNuc,freeDib,clustProb,mediRatio); // ManualP
-  else if(projPDG==-2212) G4QNucleus::SetParameters(1.-dsr-dsr,dd+dd,5.,10.);//aP ClustPars
-  else if(projPDG==-211)  G4QNucleus::SetParameters(.67-dsr,.32-dsr,5.,9.);//Pi- ClustPars
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::AtRestDoIt: N="<<N<<" for element with Z="<<Z<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt:Element with N="<<N<< G4endl;
-    return 0;
-  }
-  G4bool lepChan=true;
-  if(projPDG==13)
-  {
-     CalculateEnergyDepositionOfMuCapture(Z);// Fills the "EnergyDeposition" value
-     lepChan=RandomizeMuDecayOrCapture(Z, N);// Fills the "Time" value
-  }
-  else if(projPDG==15)
-  {
-     CalculateEnergyDepositionOfTauCapture(Z);// Fills the "EnergyDeposition" value
-     lepChan=RandomizeTauDecayOrCapture(Z,N);// Fills the "Time" value
-  }
-  G4double mp=G4QPDGCode(projPDG).GetMass(); // Mass of the captured hadron
-  G4int targPDG=90000000+Z*1000+N;           // PDG Code of the target nucleus
-  G4QHadronVector* output=new G4QHadronVector; // Prototype of the output G4QHadronVector
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::AtRestDoIt: projPDG="<<projPDG<<", targPDG="<<targPDG<<G4endl;
-#endif
-  G4double      weight    = track.GetWeight();
-  G4double      localtime = track.GetGlobalTime();
-  G4ThreeVector position  = track.GetPosition();
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::AtRestDoIt: t="<<localtime<<", p="<<position<<G4endl;
-#endif
-  G4TouchableHandle trTouchable = track.GetTouchableHandle();
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::AtRestDoIt: touch="<<trTouchable<<G4endl;
-#endif
-  localtime += Time;
-  std::vector<G4double>* cascE = new std::vector<G4double>;
-  std::vector<G4Track*>* cascT = new std::vector<G4Track*>;
-  G4bool neutronElastic = false;             // Flag of elastic neutro-nucleeus Scattering
-  G4bool chargExElastic = false;             // Flag of charge exchange Quasi-Elastic Scat.
-  G4LorentzVector proj4M;
-  G4double mAT=0.;                           // Prototype of mass of the GS target nucleus
-  G4double totNE=0.;                         // Prototype of total neutron energy
-  G4double mAP=0.;                           // Prototype of M_GSCompoundNucleus-proton
-  if(projPDG==2112)
-  {
-    proj4M=stoppedHadron->Get4Momentum();
-    totNE=proj4M.e();
-    // For low energy neutrons the threshold of the capture must be checked
-    G4QPDGCode QPDGbase;
-    mAT=QPDGbase.GetNuclMass(Z,N,0);          // mass of the GS target nucleus
-    G4double mAR=std::sqrt(mAT*(mAT+totNE+totNE)+mNeut2); // Real compound mass
-    G4double mAN=QPDGbase.GetNuclMass(Z,N+1,0); // mass of the GS compound nucleus
-    mAP=QPDGbase.GetNuclMass(Z-1,N+1,0);      // M_GSCompoundNucleus-proton
-    G4double mAA=1000000.; // Default (light nuclei) mass of the GSCompoundNucleus-alpha
-    if(Z>=2 && N>=1) mAA=QPDGbase.GetNuclMass(Z-2,N-1,0); // mass of GSCompNucleus-alpha
-    G4double eProt=mAR-mAP-mProt;             // Possible kin Enrgy of residual proton
-    if(mAR<mAN && eProt>0.)                   // Compound is impossible but ChEx's possible
-    {
-#ifdef debug
-      G4cout<<"G4QCaptureAtRest::AtRestDoIt: n-Capture isn't possible mC="<<mAR<<" < mGS="
-            <<mAN<<", Ep="<<eProt<<G4endl;
-#endif
-      G4double eNeut=totNE-mNeut;             // Kinetic energy of the projectile neutron
-      if(eNeut<0.) eNeut=0.;                  // This is just an accuracy correction
-      if(eNeut<.0001) chargExElastic=true;    // neutron is too soft -> charge Exchange
-      else
-      {
-        G4double probP=std::sqrt(eProt*(dmProt+eProt));
-        G4double probN=std::sqrt(eNeut*(dmNeut+eNeut));
-        if((probN+probP)*G4UniformRand()<probN) neutronElastic=true; // nElastic Scattering
-        else chargExElastic=true; // proton's phase space is bigger -> chargeExchange
-      }
-    }
-    else if(mAR<=mAN||(mAR<=mAP+mProt&&mAR<=mAA+mAlph)) // Impossible to radiate n or Alpha
-    {
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt: n-Capture only elastic is possible"<<G4endl;
-#endif
-      neutronElastic=true; // nElaScattering
-    }
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt: n-Capture El="<<neutronElastic<<", Ex="
-          <<chargExElastic<<G4endl;
-#endif
-  }
-  G4int           nuPDG=14;                  // Prototype for weak decay
-  if(projPDG==15) nuPDG=16;
-#ifdef debug
-  G4int CV=0;
-  G4cout<<"G4QCaptureAtRest::AtRestDoIt:DecayIf is reached CV="<<CV<<G4endl;
-#endif
-  if(projPDG==2112 && neutronElastic)        // Elastic scattering of low energy neutron
-  {
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt:nElast, 4M="<<proj4M<<",Z="<<Z<<",N="<<N<<G4endl;
-#endif
-    G4LorentzVector a4Mom(0.,0.,0.,mAT);     // 4-momentum of the target nucleus
-    G4LorentzVector totLV=proj4M+a4Mom;      // 4-momentum of the compound system
-    G4LorentzVector n4Mom(0.,0.,0.,mNeut);   // mass of the secondary neutron
-    if(!G4QHadron(totLV).DecayIn2(a4Mom,n4Mom))
-    {
-      G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt:n+A=>n+A,Z="<<Z<<",N="<<N<<G4endl;
-      return 0;
-    }
-    G4QHadron* secnuc = new G4QHadron(targPDG,a4Mom); // Create recoil nucleus
-    output->push_back(secnuc);               // Fill recoil nucleus to the output
-    G4QHadron* neutron = new G4QHadron(2112,n4Mom);    // Create Hadron for the Neutron
-    output->push_back(neutron);              // Fill the neutron to the output
-#ifdef debug
-    CV=27;
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt:ElasN="<<n4Mom<<",A="<<a4Mom<<",CV="<<CV<<G4endl;
-#endif
-  }
-  else if(projPDG==2112 && chargExElastic)   // ChargeEx from neutron to proton: (n,p) reac
-  {
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt:npChEx, 4M="<<proj4M<<",Z="<<Z<<",N="<<N<<G4endl;
-#endif
-    G4LorentzVector totLV(0.,0.,0.,mAT);     // 4-momentum of the target nucleus
-    totLV+=proj4M;                           // 4-momentum of the compound system
-    G4LorentzVector a4Mom(0.,0.,0.,mAP);     // 4-momentum of the residual to (n,p)
-    G4LorentzVector p4Mom(0.,0.,0.,mProt);   // mass of the secondary proton
-    if(!G4QHadron(totLV).DecayIn2(a4Mom,p4Mom))
-    {
-      G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt:n+A=p+A',Z="<<Z<<",N="<<N<<G4endl;
-      return 0;
-    }
-    G4QHadron* secnuc = new G4QHadron(targPDG-999,a4Mom); // Create recharged nucleus
-    output->push_back(secnuc);               // Fill recharged nucleus to the output
-    G4QHadron* proton = new G4QHadron(2212,p4Mom); // Create Hadron for the Proton
-    output->push_back(proton) ;              // Fill the proton to the output
-#ifdef debug
-    CV=21;
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt:ChExP="<<p4Mom<<",A="<<a4Mom<<",CV="<<CV<<G4endl;
-#endif
-  }
-  else if(projPDG==-211 && targPDG==90001000)// Use Panofsky Ratio for (p+pi-) system decay
-  {                                          // (p+pi-=>n+pi0)/p+pi-=>n+gamma) = 3/2
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt: Panofsky targPDG="<<targPDG<<G4endl;
-#endif
-    G4LorentzVector totLV(0.,0.,0.,mp+mProt);// 4-momentum of the compound system
-    G4int pigamPDG=111;                      // Prototype is for pi0
-    G4double pigamM=mPi0;
-    if(G4UniformRand()>0.6)
-    {
-      pigamPDG=22;
-      pigamM=0.;
-    }
-    G4LorentzVector g4Mom(0.,0.,0.,pigamM);  // mass of the photon/Pi0
-    G4LorentzVector n4Mom(0.,0.,0.,mNeut);   // mass of the secondary neutron
-    if(!G4QHadron(totLV).DecayIn2(g4Mom,n4Mom))
-    {
-      G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt: H1+(pi-)=>n+"<<pigamPDG<<G4endl;
-      return 0;
-    }
-    G4QHadron* pigamma = new G4QHadron(pigamPDG,g4Mom); // Creation Hadron for Pi0/Gamma
-    output->push_back(pigamma);              // Fill pi0 or Gamma in the output
-    G4QHadron* neutron = new G4QHadron(2112,n4Mom);    // Create Hadron for the Neutron
-    output->push_back(neutron);              // Fill the neutron to the output
-  }
-  // @@ For pi-,d reactions one can use just nn dedcay (see above) ?
-  // @@ For K- Capture the quasifree n+Lambda+(A-n-p) reaction can be applyed as well...
-  else if(projPDG==-211 && G4UniformRand()>1.&& Z>0&&N>0) // @@Quasi-Free PiCapture => tune
-  {
-    G4double mt=G4QPDGCode(targPDG).GetMass();// Mass of the target Nucleus
-    G4LorentzVector totLV(0.,0.,0.,mp+mt);   // 4-momentum of the (A+pi-) compound system
-    if(Z==1 && N==1)                         // Quasi-Free process on Deuteron
-    {
-      G4LorentzVector f4Mom(0.,0.,0.,mNeut); // First neutron 
-      G4LorentzVector s4Mom(0.,0.,0.,mNeut); // Second neutron
-      if(!G4QHadron(totLV).DecayIn2(f4Mom,s4Mom))
-      {
-        G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt: H2+(pi-)=>n+n"<<G4endl;
-        return 0;
-      }
-      G4QHadron* neutr1 = new G4QHadron(2112,f4Mom); // Create Hadron for the 1st Neutron
-      output->push_back(neutr1);             // Fill pi0 or Gamma in the output
-      G4QHadron* neutr2 = new G4QHadron(2112,s4Mom); // Create Hadron for the 2nd Neutron
-      output->push_back(neutr2);             // Fill the neutron to the output
-    }
-    else
-    {
-      G4int rPDG=targPDG-1001;
-      G4double mr=G4QPDGCode(rPDG).GetMass();// Mass of the residual Nucleus
-      G4LorentzVector f4Mom(0.,0.,0.,mNeut); // First neutron 
-      G4LorentzVector s4Mom(0.,0.,0.,mNeut); // Second neutron
-      G4LorentzVector r4Mom(0.,0.,0.,mr);    // Residual nucleus
-      if(!G4QHadron(totLV).DecayIn3(f4Mom,s4Mom,r4Mom))
-      {
-        G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt: A+(pi-)=>n+n+(A-n-p)"<<G4endl;
-        return 0;
-      }
-      G4QHadron* neutr1 = new G4QHadron(2112,f4Mom); // Create Hadron for the 1st Neutron
-      output->push_back(neutr1);             // Fill the first neutron in the output
-      G4QHadron* neutr2 = new G4QHadron(2112,s4Mom); // Create Hadron for the 2nd Neutron
-      output->push_back(neutr2);             // Fill the second neutron to the output
-      G4QHadron* resnuc = new G4QHadron(rPDG,r4Mom); // Create Hadron for the ResidualNucl
-      output->push_back(resnuc);             // Fill the Residual Nucleus to the output
-    }
-  }
-  else if((projPDG==13||projPDG==15) && !lepChan)//Normal BoundLepton->e+nu+anti_nu_e decay
-  {
-    G4double mbm=mp-EnergyDeposition;        // Mass of the bounded muon
-    G4LorentzVector totLV(0.,0.,0.,mbm);     // 4-momentum of bounded muon/tau
-    if(projPDG==13) // now for tau it is only energy deposition, for mu this EMCascade
-    {
-      MuCaptureEMCascade(Z, N, cascE);
-      G4int nsec=cascE->size();
-      G4DynamicParticle* theSec = 0; // Prototype to fill particle in the G4ParticleChange
-      for(G4int is=0; is<nsec; is++)
-      {
-        G4double ener=cascE->operator[](is);
-        if(ener>0) theSec = new G4DynamicParticle(G4Electron::Electron(),RndmDir(),ener);
-        else       theSec = new G4DynamicParticle(G4Gamma::Gamma(),RndmDir(),-ener);
-        totLV-=theSec->Get4Momentum();
-        G4Track* aNewTrack = new G4Track(theSec, localtime, position );
-        aNewTrack->SetWeight(weight);                                   //    weighted
-        aNewTrack->SetTouchableHandle(trTouchable);
-        cascT->push_back(aNewTrack);
-      }
-#ifdef debug
-      G4cout<<"G4QCaptureAtRest::AtRestDoIt: e+nu+nu decay 4M="<<totLV<<totLV.m()<<G4endl;
-#endif
-      G4double mt=G4QPDGCode(targPDG).GetMass();// Mass of the target Nucleus
-      G4double ee=mEl+RandomizeDecayElectron(Z);// Randomized electron total energy
-      totLV+=G4LorentzVector(0.,0.,0.,mt);      // 4-momentum of the compound system
-      G4double mmt=totLV.m();                   // Total energy of the compound system
-      if(ee>=mbm*(mmt-mbm/2)/mmt)
-      {
-        G4cout<<"-W-G4QCaptureAtRest::AtRestDoIt: Unrealistic E="<<ee<<", m="<<mMu<<G4endl;
-        G4LorentzVector f4Mom(0.,0.,0.,mEl);    // Electron
-        G4LorentzVector s4Mom(0.,0.,0.,mt);     // Quark-A
-        if(!G4QHadron(totLV).DecayIn2(f4Mom,s4Mom))
-        {
-          G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt: (mubound+A)->mu+A"<<G4endl;
-          return 0;
-        }
-        G4QHadron* electron = new G4QHadron(11,f4Mom); // Create Electron
-        output->push_back(electron);            // Fill the electron to the output
-        G4QHadron* resnuc = new G4QHadron(targPDG,s4Mom); // Create Residual Nucleus
-        output->push_back(resnuc);              // Fill the Residual Nucleus to the output
-      }
-      else
-      {
-        G4double mr=std::sqrt(mmt*(mmt-ee-ee)+mEl2); // Mass of the M+nu+nu system
-        if(mr<mt) mr=mt+.000001;                  // To be shure with the next decay
-        G4LorentzVector f4Mom(0.,0.,0.,mEl);      // Electron 
-        G4LorentzVector s4Mom(0.,0.,0.,mr);       // Nucleus+2neutrinos
-        if(!G4QHadron(totLV).DecayIn2(f4Mom,s4Mom))
-        {
-          G4cerr<<"---Warning---G4QCaptureAtRest::AtRestDoIt: (mu+A)=>e+(A+2nu)"<<G4endl;
-          return 0;
-        }
-#ifdef debug
-        G4double fe=f4Mom.e();
-        G4cout<<"G4QCaptureAtRest::AtRestDoIt: Ei="<<ee<<",Ef="<<fe<<",de="<<fe-ee<<G4endl;
-#endif
-        G4QHadron* electron = new G4QHadron(11,f4Mom); // Create Electron
-        output->push_back(electron);             // ==> Fill the electron to the output
-        G4LorentzVector r4Mom(0.,0.,0.,mt);      // residual nucleus
-        G4LorentzVector n4Mom(0.,0.,0.,0.);      // muon neutrino
-        G4LorentzVector a4Mom(0.,0.,0.,0.);      // electron anti-nutrino
-        if(!G4QHadron(s4Mom).DecayIn3(r4Mom,n4Mom,a4Mom))
-        {
-          G4cerr<<"-Warning-G4QCaptureAtRest::AtRestDoIt: (A+2nu)=>A+NuMu+antiNuE"<<G4endl;
-          return 0;
-        }
-#ifdef debug
-        G4cout<<"G4QCaptureAtRest::AtRestDoIt: (A+2nu) Decay is successful - 2"<<G4endl;
-#endif
-        G4QHadron* resnuc = new G4QHadron(targPDG,r4Mom); // Creation Hadron for ResidNucl
-#ifdef debug
-        G4cout<<"G4QCaptureAtRest::AtRestDoIt: ResNuc 4M="<<mt<<r4Mom<<r4Mom.m()<<G4endl;
-#endif
-        output->push_back(resnuc);               // Fill the Residual Nucleus to the output
-#ifdef debug
-        G4cout<<"G4QCaptureAtRest::AtRestDoIt: ResNuc is filled nu="<<n4Mom<<nuPDG<<G4endl;
-#endif
-        G4QHadron* numu = new G4QHadron(nuPDG,n4Mom); // Create Hadron for LeptonicNeutrino
-        output->push_back(numu);                      // Fill Muonic Neutrino to the output
-#ifdef debug
-        G4cout<<"G4QCaptureAtRest::AtRestDoIt:Nu is filled,anu="<<a4Mom<<a4Mom.m()<<G4endl;
-#endif
-        G4QHadron* anue = new G4QHadron(-12,a4Mom); // Create Hadron for the AntiE Neutrino
-        output->push_back(anue);                    // Fill the AntiENeutrino to the output
-#ifdef debug
-        G4cout<<"G4QCaptureAtRest::AtRestDoIt: anu is filled == Success of Mu-cap"<<G4endl;
-#endif
-      }
-    }
-    else                                            // @@Should be developed for tau-lepton
-    {
-      G4int deL=11;                                 // Prototype of decay lepton
-      G4int deN=-12;                                // Prototype of decay neutrino
-      G4double mdl=mEl;                             // Prototype of the decay mass
-      if(G4UniformRand()>.55)                       // Use mu decay instead of e-decay
-      {
-        deL=13;
-        deN=-14;
-        mdl=mMu;
-      }
-      G4LorentzVector e4Mom(0.,0.,0.,mdl);          // mass of the electron
-      G4LorentzVector n4Mom(0.,0.,0.,0.);           // muon neutrino
-      G4LorentzVector a4Mom(0.,0.,0.,0.);           // electron anti-nutrino
-      if(!G4QHadron(totLV).DecayIn3(e4Mom,n4Mom,a4Mom))
-      {
-        G4cerr<<"--Worning--G4QCaptureAtRest::AtRestDoIt:Tau_b=>L+Nu_tau+anti_NuL"<<G4endl;
-        return 0;
-      }
-#ifdef debug
-      G4cout<<"G4QCaptureAtRest::AtRestDoIt: Tau Decay is successful"<<G4endl;
-#endif
-      G4QHadron* lept = new G4QHadron(deL,e4Mom);   // Creation Hadron for the Electron
-#ifdef debug
-      G4cout<<"G4QCaptureAtRest::AtRestDoIt: lepton 4M="<<e4Mom<<e4Mom.m()<<G4endl;
-#endif
-      output->push_back(lept);                      // Fill the Electron in the output
-#ifdef debug
-      G4cout<<"G4QCaptureAtRest::AtRestDoIt: lepton is filled nu="<<n4Mom<<nuPDG<<G4endl;
-#endif
-      G4QHadron* nuta = new G4QHadron(nuPDG,n4Mom); // Create Hadron for LeptonicNeutrino
-#ifdef debug
-      G4cout<<"G4QCaptureAtRest::AtRestDoIt: nu 4M="<<n4Mom<<n4Mom.m()<<G4endl;
-#endif
-      output->push_back(nuta);                      // Fill Muonic Neutrino to the output
-      G4QHadron* anul = new G4QHadron(deN,a4Mom);   // Create Hadron for the AntiE Neutrino
-#ifdef debug
-      G4cout<<"G4QCaptureAtRest::AtRestDoIt: antiNu 4M="<<a4Mom<<a4Mom.m()<<G4endl;
-#endif
-      output->push_back(anul);                      // Fill the AntiENeutrino to the output
-    }
-  }
-  else if((projPDG==13||projPDG==15)&&lepChan&&targPDG==90001000)// LeptonCapture on Proton
-  {
-    G4LorentzVector totLV(0.,0.,0.,mp+mProt-EnergyDeposition);// 4-mom of theCompoundSystem
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt:CapOnProton decay 4M="<<totLV<<totLV.m()<<G4endl;
-#endif
-    G4LorentzVector g4Mom(0.,0.,0.,0.);      // mass of the muon neutrino
-    G4LorentzVector n4Mom(0.,0.,0.,mNeut);   // mass of the secondary neutron
-    if(!G4QHadron(totLV).DecayIn2(g4Mom,n4Mom))
-    {
-      G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt: H1+(mu-)=>n+nu_mu"<<G4endl;
-      return 0;
-    }
-    G4QHadron* neutrino = new G4QHadron(nuPDG,g4Mom); // Creation Hadron for neutrino
-    output->push_back(neutrino);             // Fill pi0 or Gamma in the output
-    G4QHadron* neutron = new G4QHadron(2112,n4Mom);    // Create Hadron for the Neutron
-    output->push_back(neutron);              // Fill the neutron to the output
-  }
-  else if((projPDG==13||projPDG==15)&&lepChan&&targPDG==90001001)//LeptonCapture onDeuteron
-  {
-    G4LorentzVector totLV(0.,0.,0.,mp+mDeut-EnergyDeposition);// 4-mom of theCompoundSystem
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt: CapOnDeutr decay 4M="<<totLV<<totLV.m()<<G4endl;
-#endif
-    G4LorentzVector g4Mom(0.,0.,0.,0.);      // mass of the muon neutrino
-    G4LorentzVector n4Mom(0.,0.,0.,mNeut);   // mass of the first neutron
-    G4LorentzVector s4Mom(0.,0.,0.,mNeut);   // mass of the second neutron
-    if(!G4QHadron(totLV).DecayIn3(g4Mom,n4Mom,s4Mom))
-    {
-      G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt: D+(mu-)=>n+n+nu_mu"<<G4endl;
-      return 0;
-    }
-    G4QHadron* neutrino = new G4QHadron(nuPDG,g4Mom); // Creation Hadron for the Neutrino
-    output->push_back(neutrino);             // Fill pi0 or Gamma in the output
-    G4QHadron* neut1 = new G4QHadron(2112,n4Mom);    // Create Hadron for the FirstNeutron
-    output->push_back(neut1);                // Fill the neutron to the output
-    G4QHadron* neut2 = new G4QHadron(2112,s4Mom);    // Create Hadron for the SecondNeutron
-    output->push_back(neut2);                // Fill the neutron to the output
-  }
-  //                                           *** Closed ***
-  else if((projPDG==13||projPDG==15)&&lepChan&&G4UniformRand()>1&&Z>0&&N>0)//@@QuasiFreeCap
-  {
-    G4double mt=G4QPDGCode(targPDG).GetMass();// Mass of the target Nucleus
-    G4LorentzVector totLV(0.,0.,0.,mp+mt-EnergyDeposition);// 4-mom of the(A+mu-) compound
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt: Quasi-Free decay 4M="<<totLV<<totLV.m()<<G4endl;
-#endif
-    G4int rPDG=targPDG-1000;                  // Subtract one proton from the nucleus
-    G4double mr=G4QPDGCode(rPDG).GetMass();   // Mass of the residual Nucleus
-    G4LorentzVector f4Mom(0.,0.,0.,0.);       // Muon neutrino 
-    G4LorentzVector s4Mom(0.,0.,0.,mNeut);    // Second neutron
-    G4LorentzVector r4Mom(0.,0.,0.,mr);       // Residual nucleus
-    if(!G4QHadron(totLV).DecayIn3(f4Mom,s4Mom,r4Mom))
-    {
-      G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt: A+(mu-)=>nu_mu+n+(A-p)"<<G4endl;
-      return 0;
-    }
-    G4QHadron* neutrino = new G4QHadron(nuPDG,f4Mom); // Create Hadron for the 1st Neutron
-    output->push_back(neutrino);              // Fill nutrino_mu in the output
-    G4QHadron* neutron = new G4QHadron(2112,s4Mom);// Create Hadron for the 2nd Neutron
-    output->push_back(neutron);               // Fill the neutron to the output
-    G4QHadron* resnuc = new G4QHadron(rPDG,r4Mom); // Create Hadron for the ResidualNucl
-    output->push_back(resnuc);                // Fill the Residual Nucleus to the output
-  }
-  else                                        // *** THIS works for all particles ! ***
-  //else if(1>2)// !! Immediately change back - Very temporary to avoid nuclear capture !!
-  {
-    G4QHadron* neutr = 0; // Create Neutrino
-    if(projPDG==13||projPDG==15) mp-=EnergyDeposition;//TheEnergyDeposit is only for LepCap
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt: CHIPS M="<<mp<<",dE="<<EnergyDeposition<<G4endl;
-#endif
-    G4LorentzVector projLV(0.,0.,0.,mp);
-    if(projPDG==13) // now for tau it is only energy deposition, for mu this EMCascade+qqnu
-    {
-      MuCaptureEMCascade(Z, N, cascE);
-      G4int nsec=cascE->size();
-      G4DynamicParticle* theSec = 0; // Prototype to fill particle in the G4ParticleChange
-      for(G4int is=0; is<nsec; is++)
-      {
-        G4double ener=cascE->operator[](is);
-        if(ener>0) theSec = new G4DynamicParticle(G4Electron::Electron(),RndmDir(),ener);
-        else       theSec = new G4DynamicParticle(G4Gamma::Gamma(),RndmDir(),-ener);
-        projLV-=theSec->Get4Momentum();
-        G4Track* aNewTrack = new G4Track(theSec, localtime, position );
-        aNewTrack->SetWeight(weight);                                   //    weighted
-        aNewTrack->SetTouchableHandle(trTouchable);
-        cascT->push_back(aNewTrack);
-      }
-      // ----- Ericson mu to pi conversion ----- ????? -----
-      if(G4UniformRand()<.04) // .04 is a parameter !
-      {
-        projPDG=-211;
-        // Phase space decay of mu->nu+q+aq M=1
-        //G4LorentzVector f4Mom(0.,0.,0.,0.);      // Muon neutrino 
-        //G4LorentzVector s4Mom(0.,0.,0.,0.);      // Quark
-        //G4LorentzVector r4Mom(0.,0.,0.,0.);      // Anti-Quark
-        //if(!G4QHadron(projLV).DecayIn3(f4Mom,s4Mom,r4Mom))
-        //{
-        //  G4cerr<<"--Worning--G4QCaptureAtRest::AtRestDoIt: (mu-)=>q+aq+nu, M=1"<<G4endl;
-        //  return 0;
-        //}
-        // Phase space decay of mu->nu+q+aq with matrix element
-        G4double mmu2=projLV.m2();
-        G4double mmu=std::sqrt(mmu2);
-        G4double hmm=mmu/2.;
-        G4double dmm=mmu+mmu;
-        G4double qp=std::pow((std::pow(1.+ga*std::pow(hmm,b1),G4UniformRand())-1.)/ga,rb);
-        G4double mqq=0.;
-        if(qp<hmm) mqq=std::sqrt(mmu2-dmm*qp);
-        G4LorentzVector f4Mom(0.,0.,0.,0.);      // Muon neutrino 
-        G4LorentzVector s4Mom(0.,0.,0.,mqq);     // Quark-Antiquark
-        if(!G4QHadron(projLV).DecayIn2(f4Mom,s4Mom))
-        {
-          G4cerr<<"---Worning---G4QCaptureAtRest::AtRestDoIt: (mu-)=>q+aq+nu, M#1"<<G4endl;
-          return 0;
-        }
-        neutr = new G4QHadron(nuPDG,f4Mom);      // Create Neutrino
-        projLV-=f4Mom;
-        // end of --- ??? ---
-      }
-    }
-    G4QPDGCode targQPDG(targPDG);
-    G4double tM=mp+targQPDG.GetMass();
-    EnMomConservation=G4LorentzVector(0.,0.,0.,tM);         // Total 4-mom of the reaction
-#ifdef tdebug
-    G4cout<<"====>G4QCapAR:E/MCons, p="<<mp<<","<<projPDG<<",t="<<tM<<","<<targPDG<<",t4M="
-          <<EnMomConservation<<G4endl;
-#endif
-    G4QHadron* pH = new G4QHadron(projPDG,projLV);          // ---> DELETED---->---->----+
-    G4QHadronVector projHV;                                 //                           |
-    projHV.push_back(pH);                                   // DESTROYED over 2 lines -+ |
-    G4QEnvironment* pan= new G4QEnvironment(projHV,targPDG);// ---> DELETED --->-----+ | |
-    std::for_each(projHV.begin(), projHV.end(), DeleteQHadron()); // <---<------<----+-+-+
-    projHV.clear(); // <------------<---------------<-------------------<------------+-+
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt: pPDG="<<projPDG<<", m="<<mp<<G4endl; //   |
-#endif
-    try                                                           //                 |
-    {                                                             //                 |
-      delete output;                                              //                 |
-      output = pan->Fragment();// DESTROYED in the end of the LOOP work space        |
-    }                                                             //                 |
-    catch (G4QException& error)//                                                    |
-    {                                                             //                 |
-      //#ifdef pdebug
-      G4cerr<<"***G4QCaptureAtRest::AtRestDoIt: Exception is catched"<<G4endl; //    |
-      //#endif
-      G4Exception("G4QCaptureAtRest::AtRestDoIt:","27",FatalException,"Gen.CHIPS Except.");
-    }                                                             //                 |
-    delete pan;                              // Delete the Nuclear Environment <--<--+
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt: CHIPS fragmentation is done, CV="<<CV<<G4endl;
-#endif
-    // ----- Ericson mu to pi conversion ----- ????? -----
-    if(neutr) output->push_back(neutr);      // Fill nutrino_mu in the output
-    // end of --- ??? ---
-  }
-  aParticleChange.Initialize(track);
-  G4int tNH = output->size(); // A#of hadrons in the output without EM Cascade
-  G4int nsec=cascE->size();
-  aParticleChange.SetNumberOfSecondaries(tNH+nsec); 
-  for(G4int is=0; is<nsec; is++) aParticleChange.AddSecondary((*cascT)[is]);
-  cascE->clear();
-  delete cascE;
-  cascT->clear();
-  delete cascT;
-  // Now add nuclear fragments
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::AtRestDoIt: "<<tNH<<" particles are generated"<<G4endl;
-#endif
-  // Deal with ParticleChange final state interface to GEANT4 output of the process
-  for(i=0; i<tNH; i++)
-  {
-    // Note that one still has to take care of Hypernuclei (with Lambda or Sigma inside)
-    // Hypernucleus mass calculation and ion-table interface upgrade => work for Hisaya @@
-    // The decau process for hypernuclei must be developed in GEANT4 (change CHIPS body)
-    G4QHadron* hadr=output->operator[](i);   // Pointer to the output hadron    
-    if(hadr->GetNFragments())                // Intermediate hadron
-    {
-#ifdef debug
-      G4cout<<"G4QCaptureAtRest::AtRestDoIt: Intermediate particle is found i="<<i<<G4endl;
-#endif
-      delete hadr;
-      continue;
-    }
-    G4DynamicParticle* theSec = new G4DynamicParticle;  
-    G4int PDGCode = hadr->GetPDGCode();
-#ifdef pdebug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt:#"<<i<<",PDG="<<PDGCode<<G4endl;
-#endif
-    G4ParticleDefinition* theDefinition=0;
-    if     (PDGCode==90000001) theDefinition = G4Neutron::Neutron();
-    else if(PDGCode==90001000) theDefinition = G4Proton::Proton();//While it can be in ions
-    else if(PDGCode==91000000) theDefinition = G4Lambda::Lambda();
-    else if(PDGCode==311 || PDGCode==-311)
-    {
-      if(G4UniformRand()>.5) theDefinition = G4KaonZeroLong::KaonZeroLong();   // K_L
-      else                   theDefinition = G4KaonZeroShort::KaonZeroShort(); // K_S
-    }
-    else if(PDGCode==91000999) theDefinition = G4SigmaPlus::SigmaPlus();
-    else if(PDGCode==90999001) theDefinition = G4SigmaMinus::SigmaMinus();
-    else if(PDGCode==91999000) theDefinition = G4XiMinus::XiMinus();
-    else if(PDGCode==91999999) theDefinition = G4XiZero::XiZero();
-    else if(PDGCode==92998999) theDefinition = G4OmegaMinus::OmegaMinus();
-    else if(PDGCode >80000000) // Defines hypernuclei as normal nuclei (N=N+S Correction!)
-    {
-      G4int aZ = hadr->GetCharge();
-      G4int aA = hadr->GetBaryonNumber();
-#ifdef pdebug
-      G4cout<<"G4QCaptureAtRest::AtRestDoIt:Ion Z="<<aZ<<", A="<<aA<<G4endl;
-#endif
-      //if      (PDGCode==90001001) theDefinition = G4Deuteron::Deuteron();
-      //else if (PDGCode==90001002) theDefinition = G4Triton::Triton();
-      //else if (PDGCode==90002001) theDefinition = G4He3::He3();
-      //else if (PDGCode==90002002) theDefinition = G4Alpha::Alpha();
-      //else
-      theDefinition = G4ParticleTable::GetParticleTable()->FindIon(aZ,aA,0,aZ);
-    }
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QCaptureAtRest::AtRestDoIt:Define particle with PDG="<<PDGCode<<G4endl;
-#endif
-      theDefinition = G4QPDGToG4Particle::Get()->GetParticleDefinition(PDGCode);
-#ifdef pdebug
-      G4cout<<"G4QCaptureAtRest::AtRestDoIt:AfterParticleDefinition PDG="<<PDGCode<<G4endl;
-#endif
-    }
-    if(!theDefinition)
-    {
-      G4cout<<"---Worning---G4QCaptureAtRest::AtRestDoIt: drop PDG="<<PDGCode<<G4endl;
-      delete hadr;
-      continue;
-    }
-#ifdef pdebug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt:Name="<<theDefinition->GetParticleName()<<G4endl;
-#endif
-    theSec->SetDefinition(theDefinition);
-    G4LorentzVector h4M=hadr->Get4Momentum();
-    EnMomConservation-=h4M;
-#ifdef tdebug
-    G4cout<<"G4QCapAR::ARDoIt:"<<i<<","<<PDGCode<<h4M<<h4M.m()<<EnMomConservation<<G4endl;
-#endif
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt:#"<<i<<",PDG="<<PDGCode<<",4M="<<h4M<<G4endl;
-#endif
-    theSec->Set4Momentum(h4M);
-    delete hadr;
-#ifdef debug
-    G4ThreeVector curD=theSec->GetMomentumDirection();
-    G4double curM=theSec->GetMass();
-    G4double curE=theSec->GetKineticEnergy()+curM;
-    G4cout<<"G4QCapAtRest::AtRDoIt:p="<<curD<<curD.mag()<<",e="<<curE<<",m="<<curM<<G4endl;
-#endif
-    G4Track* aNewTrack = new G4Track(theSec, localtime, position );
-    aNewTrack->SetWeight(weight);                                   //    weighted
-    aNewTrack->SetTouchableHandle(trTouchable);
-    aParticleChange.AddSecondary( aNewTrack );
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::AtRestDoIt:#"<<i<<" is done."<<G4endl;
-#endif
-  }
-  delete output;
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::AtRestDoIt: the EnergyDeposition="<<EnergyDeposition<<G4endl;
-#endif
-  aParticleChange.ProposeLocalEnergyDeposit(EnergyDeposition);// Fill EnergyDeposition
-  aParticleChange.ProposeTrackStatus(fStopAndKill);           // Kill the absorbed particle
-  //return &aParticleChange;                               // This is not enough (ClearILL)
-  return G4VRestProcess::AtRestDoIt(track, step);
-}
-
-// The MeanLifeTime (before NucCapture) exists only for MuonCapture, which is a WeakProcess
-G4double G4QCaptureAtRest::GetMeanLifeTime(const G4Track& aTrack, G4ForceCondition*)
-{
-  const G4DynamicParticle* stoppedHadron = aTrack.GetDynamicParticle();
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::GetMeanLifeTime is called"<<G4endl;
-#endif
-  if (*(stoppedHadron->GetDefinition())==*(G4MuonMinus::MuonMinus()) ||
-      *(stoppedHadron->GetDefinition())==*(G4TauMinus::TauMinus())      ) return Time;
-  else return 0.;
-}
-
-// Muon can decay or to be captured by the nucleus (Z,N): true=MuCapture, false=MuDecay
-G4bool G4QCaptureAtRest::RandomizeMuDecayOrCapture(G4int Z, G4int N)
-{
-  static G4int mZ=0;                          // static memory about the last Z
-  static G4int mN=0;                          // static memory about the last N
-  static G4double mH=0.;                      // static memory about the last Huff(Z,N)
-  static G4double mR=0.;                      // static memory about the last rate(Z,N)
-  static const G4int nAZ=17;                  // total number of tabulated isotopes
-  static const G4int nZm=10;                  // (maximumZ)+1 for which rates are tabulated
-  static const G4int rin[nZm]={0,0,1,1,1,2,3,4,5,6}; // i=rin[Z]+N for the tabulated rate
-  static const G4double rate[nAZ]={.00000045, .00000047, .00000215, .000000356, .00000468,
-                                   .00000226, .00000610, .00002750, .000023500, .00003790,
-                                   .00003500, .00006600, .00006200, .000102500, .00009500,
-                                   .00008800, .00022900};
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::RandomizeMuDecayOrCapture is called"<<G4endl;
-#endif
-  G4double z=Z;
-  G4double Huff=1.;
-  if(Z==mZ && N==mN)    Huff=mH;   // Use already calculated value
-  else if(Z==8 || Z==9) Huff=.998; // Use nontrivial values for O and F
-  // @@ Cash this values ! (M.K.)
-  else if(Z>9) Huff=1.-.000394*std::pow(z,2.19)/(1.+12.18*std::exp(z*.01373));
-  G4double pD=.00045516*Huff;    // 1/MeanLifeTime of muon in atoms (in ns^-1)?
-  G4double pC=1.e99;             // Default 1/MeanLifeTime of muon NuclCapture(in ns^-1)
-  // @@ Use Primakov correction (1-1.5625*N/(Z+N)) for isotopes. (M.K.)
-  if(Z==mZ && N==mN)    pC=mR;   // Use already calculated value
-  else if(Z>9) pC=.0000001256*std::pow(z,3.5)/(1.+.00429*std::exp(1.67*std::pow(z,.39)));
-  else if(Z>0) pC=rate[rin[Z]+N];                // Tabulated light isotopes
-  else G4cout<<"--Warning--G4QCaptureAtRest::RandomizeMuDecayOrCapture: NEG Z="<<Z<<G4endl;
-  mZ=Z; mN=N; mH=Huff; mR=pC;    // Remember the last calculated parameters
-  //G4double DLifeT=-std::log(G4UniformRand())/pD;// Time of the muon decay inside the atom
-  //G4double CLifeT=-std::log(G4UniformRand())/pC;// Time of the muon capture by nucleus
-  //if(DLifeT<CLifeT)
-  //{
-  //  Time=DLifeT;
-#ifdef debug
-  //  G4cout<<"G4QCaptureAtRest::RandomizeMuDecayOrCapture: DecayLifeTime="<<Time<<G4endl;
-#endif
-  //  return false;
-  //}
-  //else
-  //{
-  //  Time=CLifeT;
-#ifdef debug
-  //  G4cout<<"G4QCaptureAtRest::RandomizeMuDecayOrCapture:CaptureLifeTime="<<Time<<G4endl;
-#endif
-  //  return true;
-  //}
-  if((pD+pC)*G4UniformRand()>pD) // CAPTURE @@ Cash pD+pC
-  {
-     Time=-std::log(G4UniformRand())/pC;
-     return true;
-  }
-  else
-  {
-     Time=-std::log(G4UniformRand())/pD;
-     return false;
-  }
-}
-
-// Calculate the TotalEnergyDeposition for the AtomicCascadeDecay of MuMesoAtom to K-shell
-void G4QCaptureAtRest::CalculateEnergyDepositionOfMuCapture(G4int Z) // (2p->1s) in MeV
-{
-  EnergyDeposition = .0029035*Z*Z*(1.-.0056817*Z)-.0006343; // MeV
-#ifdef debug
-  G4cout<<"G4QCaptureAtR::CalculateEnergyDepositionOfMuCapture="<<EnergyDeposition<<G4endl;
-#endif
-}
-
-// Calculate gamma cascade from high (14th level) to the K(1s)-shell (follows V.Ivanchenko)
-void G4QCaptureAtRest::MuCaptureEMCascade(G4int Z, G4int N, std::vector<G4double>* dV)
-{ 
-  static const G4double mEl  = G4Electron::Electron()->GetPDGMass(); // GEANT4 style
-  static const G4double mMu  = G4MuonMinus::MuonMinus()->GetPDGMass();
-  //static const G4double mEl  = G4QPDGCode(11).GetMass(); // CHIPS style
-  //static const G4double mMu  = G4QPDGCode(13).GetMass();
-  static const G4double vEl  = .0000136/mEl;
-  //static const G4double dElM = mEl+mEl;
-  // Inicialization - cascade start from 14th level (N.C.Mukhopadhyay Phy.Rep. 30 (1977) 1)
-  G4double EnergyLevel[14];
-  G4double dZ=Z;
-  G4double nucM=G4NucleiProperties::GetNuclearMass(dZ+N,dZ);
-  if(nucM<900.) nucM=G4QPDGCode(2112).GetNuclMass(Z,N,0); // CHIPS style
-
-  G4double mass = mMu*nucM/(mMu+nucM);        //equivalemtMassOfMuon in C.M. muA-system
-
-  G4double Z2=Z*Z;
-  G4double KEnergy = vEl*Z2*mass;             // Finaite nuclear size (?)
-
-  EnergyLevel[0] = EnergyDeposition;
-#ifdef debug
-  G4cout<<"G4QCapAtR::MuCapEMCascade:E="<<EnergyDeposition<<",e="<<mEl<<",m="<<mMu<<G4endl;
-#endif
-  for(G4int i=2; i<15; i++) EnergyLevel[i-1]=KEnergy/i/i; // To simple to be right (? M.K.)
-
-  G4int nAuger = 1;
-  G4int nGamma = 0;
-  G4int nLevel = 13;
-  G4double DeltaE=0.;
-  G4double pGamma = Z2*Z2;
-
-  // Capture on 14-th level
-  G4double energy=EnergyLevel[13];
-  //G4double ptot = sqrt(energy*(energy + dElM));
-  //G4ThreeVector moment = ptot * RndmDir();
-#ifdef debug
-  G4cout<<"G4QCaptureAtR::MuCaptureEMCascade: first electron E="<<energy<<G4endl;
-#endif
-  dV->push_back(energy);
-#ifdef debug
-  G4cout<<"G4QCaptureAtR::MuCaptureEMCascade:before while nl="<<nLevel<<G4endl;
-#endif
-  // Algorithm of Vladimir Ivanchenko
-  while(nLevel>0)                     // Radiative transitions and  Auger electron emission
-  {
-#ifdef debug
-    G4cout<<"G4QCaptureAtR::MuCaptureEMCascade: in while nLevel="<<nLevel<<G4endl;
-#endif
-    // case of Auger electrons
-    if((nAuger < Z) && ((pGamma + 10000.0) * G4UniformRand() < 10000.0) ) // 10000 (? M.K.)
-    {
-      nAuger++;                       // Radiate one more Auger electron
-      DeltaE = EnergyLevel[nLevel-1] - EnergyLevel[nLevel];
-      nLevel--;
-#ifdef debug
-   G4cout<<"G4QCaptureAtR::MuCaptureEMCascade: Auger_e E="<<DeltaE<<G4endl;
-#endif
-      dV->push_back(DeltaE);
-    }
-    else // Rad transitions from C.S.Wu and L.Wilets, Ann. Rev. Nuclear Sci. 19 (1969) 527.
-    {
-      G4int iLevel = nLevel - 1 ;
-      G4double var = 10.0 + iLevel * G4UniformRand(); // 10.0 (? M.K.)
-      if(var > 10.0) iLevel -= G4int(var-10.0) + 1;
-      if( iLevel < 0 ) iLevel = 0;
-      DeltaE = EnergyLevel[iLevel] - EnergyLevel[nLevel];
-      nLevel = iLevel;
-#ifdef debug
-      G4cout<<"G4QCaptureAtR::MuCaptureEMCascade: photon E="<<DeltaE<<G4endl;
-#endif
-      dV->push_back(-DeltaE);
-      nGamma++;
-    }
-  }
-#ifdef debug
-  G4cout<<"G4QCaptureAtR::MuCaptureEMCascade: nElect="<<nAuger<<", nGamm="<<nGamma<<G4endl;
-#endif
-}
-
-// Muon can decay or to be captured by the nucleus (Z,N): true=TauCapture, false=TauDecay
-G4bool G4QCaptureAtRest::RandomizeTauDecayOrCapture(G4int Z, G4int N)
-{
-#ifdef debug
-  G4cout<<"G4QCaptureAtRest::RandomizeMuDecayOrCapture is called"<<G4endl;
-#endif
-  G4double Z27 =0.002727*Z;
-  G4double Z227=Z27*Z27;
-  G4double Z427=Z227*Z227;
-  G4double Zeff=(Z-0.13782)*(1.2162-(0.09118-Z427)*std::sqrt((G4double)Z));// EffNuclCharge
-  G4double Ze2=Zeff*Zeff;      // Squared effective charge of the Nucleus
-  G4double pD=3436.*(1.-Ze2*.00014658);     //@@ 1./MeanLifeTime of Tau in atoms (in ns^-1)
-  G4double pC=227.*Ze2*Ze2/(33.563+N);      //@@1./MeanLifeTime of TauNuclCapture(in ns^-1)
-  if(Z==1&&N==0) pC=10.;                    // @@
-  if(Z==1&&N==1) pC=.2;                     // @@
-  G4double DLifeT=-std::log(G4UniformRand())/pD; // Time of the muon decay inside the atom
-  G4double CLifeT=-std::log(G4UniformRand())/pC; // Time of the muon capture by nucleus
-  if(DLifeT<CLifeT)
-  {
-    Time=DLifeT;
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::RandomizeTauDecayOrCapture: DecayLifeTime="<<Time<<G4endl;
-#endif
-    return false;
-  }
-  else
-  {
-    Time=CLifeT;
-#ifdef debug
-    G4cout<<"G4QCaptureAtRest::RandomizeTauDecayOrCapture: CaptureLifeTime="<<Time<<G4endl;
-#endif
-    return true;
-  }
-}
-
-// Calculate the TotalEnergyDeposition for the AtomicCascadeDecay of TauMesoAtom to K-shell
-void G4QCaptureAtRest::CalculateEnergyDepositionOfTauCapture(G4int Z) // (2p->1s) in MeV
-{
-  EnergyDeposition = .05*Z*Z*(1.-.0056817*Z)-.01; // MeV (@@ Must be improved)
-#ifdef debug
-  G4cout<<"G4QCapAtRest::CalculateEnergyDepositionOfTauCapture="<<EnergyDeposition<<G4endl;
-#endif
-}
-
-// Calculate the TotalEnergyDeposition for the AtomicCascadeDecay of TauMesoAtom to K-shell
-G4double G4QCaptureAtRest::RandomizeDecayElectron(G4int z) // E_kin in MeV
-{
-  static const G4int nZ=12;        // A#of tabulated nuclei
-  static const G4int nE=200;       // A#of tabulated energies for each nucleus
-  static const G4int nEl=nE-1;     // The last tabulated energy for nuclei
-  static const G4int nEb=nE-2;     // The before last tabulated energy for nuclei
-  static G4double tZ[nZ]={1.,2.,4.,6.,8.,11.,15.,20.,30.,45.,65.,92.};
-  //H1(Z=1)
-  static G4double P0[nE]={
-          0.00000,7.28739,9.21005,10.5820,11.6892,12.6350,13.4701,14.2238,14.9144,15.5546,
-          16.1533,16.7171,17.2511,17.7593,18.2450,18.7106,19.1584,19.5901,20.0073,20.4112,
-          20.8031,21.1839,21.5544,21.9153,22.2675,22.6114,22.9476,23.2766,23.5988,23.9146,
-          24.2243,24.5284,24.8270,25.1205,25.4091,25.6931,25.9726,26.2479,26.5192,26.7865,
-          27.0502,27.3103,27.5670,27.8204,28.0706,28.3178,28.5621,28.8035,29.0422,29.2783,
-          29.5118,29.7428,29.9715,30.1978,30.4219,30.6439,30.8637,31.0815,31.2972,31.5111,
-          31.7231,31.9332,32.1416,32.3482,32.5531,32.7564,32.9581,33.1583,33.3569,33.5540,
-          33.7497,33.9439,34.1368,34.3283,34.5185,34.7074,34.8951,35.0815,35.2667,35.4507,
-          35.6335,35.8152,35.9958,36.1753,36.3537,36.5311,36.7075,36.8828,37.0572,37.2306,
-          37.4030,37.5745,37.7451,37.9147,38.0835,38.2515,38.4185,38.5847,38.7501,38.9147,
-          39.0785,39.2415,39.4038,39.5652,39.7260,39.8859,40.0452,40.2038,40.3616,40.5188,
-          40.6753,40.8311,40.9862,41.1407,41.2946,41.4478,41.6004,41.7524,41.9038,42.0546,
-          42.2048,42.3545,42.5035,42.6520,42.8000,42.9474,43.0942,43.2405,43.3863,43.5316,
-          43.6764,43.8206,43.9644,44.1076,44.2504,44.3927,44.5345,44.6759,44.8168,44.9572,
-          45.0972,45.2367,45.3758,45.5145,45.6527,45.7905,45.9279,46.0648,46.2014,46.3375,
-          46.4733,46.6086,46.7436,46.8781,47.0123,47.1461,47.2796,47.4126,47.5453,47.6776,
-          47.8096,47.9412,48.0724,48.2034,48.3339,48.4641,48.5940,48.7236,48.8528,48.9817,
-          49.1103,49.2385,49.3665,49.4941,49.6214,49.7484,49.8751,50.0015,50.1276,50.2534,
-          50.3789,50.5041,50.6290,50.7536,50.8780,51.0021,51.1259,51.2494,51.3727,51.4957,
-          51.6184,51.7409,51.8633,51.9856,52.1080,52.2311,52.3561,52.4857,52.6273,52.8065};
-  //He4(Z=2)
-  static G4double P1[nE]={
-          0.00000,7.27695,9.19653,10.5662,11.6715,12.6156,13.4493,14.2016,14.8910,15.5300,
-          16.1275,16.6903,17.2233,17.7306,18.2153,18.6800,19.1269,19.5578,19.9742,20.3774,
-          20.7685,21.1485,21.5182,21.8785,22.2299,22.5732,22.9087,23.2370,23.5585,23.8737,
-          24.1828,24.4862,24.7843,25.0772,25.3652,25.6486,25.9275,26.2023,26.4729,26.7398,
-          27.0029,27.2625,27.5186,27.7715,28.0212,28.2679,28.5116,28.7525,28.9907,29.2263,
-          29.4593,29.6899,29.9180,30.1439,30.3675,30.5890,30.8083,31.0256,31.2410,31.4544,
-          31.6659,31.8756,32.0835,32.2897,32.4942,32.6970,32.8983,33.0980,33.2962,33.4929,
-          33.6881,33.8820,34.0744,34.2655,34.4553,34.6438,34.8310,35.0170,35.2018,35.3854,
-          35.5678,35.7492,35.9293,36.1085,36.2865,36.4635,36.6395,36.8144,36.9884,37.1614,
-          37.3334,37.5046,37.6748,37.8441,38.0125,38.1800,38.3467,38.5126,38.6776,38.8418,
-          39.0053,39.1679,39.3298,39.4909,39.6512,39.8109,39.9698,40.1280,40.2855,40.4423,
-          40.5984,40.7539,40.9087,41.0629,41.2164,41.3693,41.5215,41.6732,41.8242,41.9747,
-          42.1246,42.2739,42.4226,42.5707,42.7184,42.8654,43.0119,43.1579,43.3034,43.4483,
-          43.5928,43.7367,43.8801,44.0231,44.1655,44.3075,44.4490,44.5900,44.7306,44.8707,
-          45.0104,45.1496,45.2884,45.4267,45.5646,45.7021,45.8392,45.9758,46.1121,46.2479,
-          46.3833,46.5184,46.6530,46.7873,46.9211,47.0546,47.1878,47.3205,47.4529,47.5849,
-          47.7166,47.8479,47.9788,48.1094,48.2397,48.3696,48.4992,48.6285,48.7574,48.8860,
-          49.0143,49.1422,49.2699,49.3972,49.5242,49.6509,49.7773,49.9034,50.0292,50.1548,
-          50.2800,50.4050,50.5297,50.6541,50.7783,50.9023,51.0261,51.1498,51.2735,51.3973,
-          51.5215,51.6462,51.7721,51.8999,52.0308,52.1668,52.3115,52.4720,52.6642,52.9396};
-  //Be9(Z=4)
-  static G4double P2[nE]={
-          0.00000,7.23479,9.14334,10.5051,11.6039,12.5425,13.3712,14.1191,14.8044,15.4396,
-          16.0336,16.5930,17.1228,17.6270,18.1088,18.5707,19.0150,19.4432,19.8571,20.2579,
-          20.6466,21.0243,21.3918,21.7499,22.0992,22.4404,22.7739,23.1002,23.4198,23.7330,
-          24.0403,24.3419,24.6381,24.9292,25.2155,25.4971,25.7744,26.0474,26.3165,26.5817,
-          26.8432,27.1012,27.3558,27.6071,27.8553,28.1005,28.3428,28.5823,28.8190,29.0531,
-          29.2847,29.5139,29.7407,29.9652,30.1874,30.4076,30.6256,30.8416,31.0556,31.2677,
-          31.4779,31.6863,31.8930,32.0979,32.3012,32.5028,32.7029,32.9014,33.0984,33.2939,
-          33.4880,33.6806,33.8719,34.0619,34.2505,34.4379,34.6240,34.8088,34.9925,35.1750,
-          35.3563,35.5366,35.7157,35.8937,36.0707,36.2466,36.4215,36.5954,36.7683,36.9403,
-          37.1113,37.2814,37.4506,37.6189,37.7863,37.9528,38.1185,38.2834,38.4475,38.6107,
-          38.7731,38.9348,39.0957,39.2559,39.4153,39.5740,39.7319,39.8892,40.0457,40.2016,
-          40.3568,40.5114,40.6652,40.8185,40.9711,41.1231,41.2744,41.4252,41.5754,41.7249,
-          41.8739,42.0223,42.1702,42.3174,42.4642,42.6104,42.7560,42.9012,43.0458,43.1899,
-          43.3334,43.4765,43.6191,43.7612,43.9028,44.0440,44.1846,44.3248,44.4646,44.6039,
-          44.7427,44.8811,45.0191,45.1566,45.2937,45.4304,45.5666,45.7025,45.8379,45.9730,
-          46.1076,46.2419,46.3757,46.5092,46.6423,46.7750,46.9074,47.0394,47.1710,47.3023,
-          47.4332,47.5637,47.6939,47.8238,47.9533,48.0826,48.2114,48.3400,48.4683,48.5962,
-          48.7239,48.8512,48.9783,49.1052,49.2318,49.3581,49.4843,49.6103,49.7362,49.8620,
-          49.9878,50.1137,50.2397,50.3660,50.4927,50.6200,50.7481,50.8774,51.0083,51.1412,
-          51.2769,51.4163,51.5607,51.7120,51.8729,52.0476,52.2435,52.4742,52.7705,53.2313};
-  //C12(Z=6)
-  static G4double P3[nE]={
-          0.00000,7.18201,9.07814,10.4312,11.5230,12.4557,13.2793,14.0225,14.7036,15.3349,
-          15.9253,16.4814,17.0080,17.5092,17.9882,18.4474,18.8890,19.3148,19.7263,20.1247,
-          20.5112,20.8867,21.2521,21.6082,21.9555,22.2948,22.6264,22.9509,23.2687,23.5802,
-          23.8858,24.1857,24.4803,24.7699,25.0546,25.3347,25.6105,25.8821,26.1497,26.4135,
-          26.6737,26.9303,27.1836,27.4336,27.6805,27.9244,28.1654,28.4037,28.6392,28.8721,
-          29.1026,29.3306,29.5562,29.7796,30.0007,30.2198,30.4367,30.6516,30.8646,31.0756,
-          31.2848,31.4923,31.6979,31.9019,32.1041,32.3048,32.5039,32.7015,32.8975,33.0921,
-          33.2853,33.4770,33.6674,33.8565,34.0443,34.2308,34.4160,34.6000,34.7829,34.9645,
-          35.1451,35.3245,35.5028,35.6800,35.8562,36.0313,36.2055,36.3786,36.5508,36.7220,
-          36.8923,37.0616,37.2301,37.3976,37.5643,37.7302,37.8952,38.0593,38.2227,38.3852,
-          38.5470,38.7080,38.8683,39.0277,39.1865,39.3445,39.5018,39.6585,39.8144,39.9696,
-          40.1242,40.2781,40.4314,40.5840,40.7360,40.8874,41.0382,41.1884,41.3379,41.4869,
-          41.6353,41.7832,41.9305,42.0772,42.2234,42.3690,42.5141,42.6587,42.8028,42.9463,
-          43.0894,43.2319,43.3740,43.5156,43.6567,43.7973,43.9375,44.0772,44.2164,44.3552,
-          44.4936,44.6315,44.7690,44.9060,45.0426,45.1789,45.3147,45.4501,45.5851,45.7197,
-          45.8539,45.9877,46.1211,46.2542,46.3869,46.5193,46.6512,46.7829,46.9142,47.0451,
-          47.1758,47.3061,47.4361,47.5658,47.6952,47.8243,47.9532,48.0819,48.2103,48.3385,
-          48.4666,48.5945,48.7223,48.8501,48.9778,49.1056,49.2335,49.3616,49.4899,49.6187,
-          49.7479,49.8779,50.0087,50.1406,50.2738,50.4087,50.5457,50.6854,50.8282,50.9752,
-          51.1272,51.2858,51.4528,51.6310,51.8244,52.0390,52.2854,52.5832,52.9766,53.6078};
-  //O16(Z=8)
-  static G4double P4[nE]={
-          0.00000,7.11944,9.00194,10.3456,11.4301,12.3566,13.1748,13.9133,14.5901,15.2176,
-          15.8044,16.3570,16.8806,17.3789,17.8550,18.3116,18.7507,19.1741,19.5833,19.9796,
-          20.3640,20.7375,21.1010,21.4552,21.8007,22.1382,22.4681,22.7910,23.1072,23.4172,
-          23.7213,24.0198,24.3130,24.6011,24.8845,25.1633,25.4378,25.7082,25.9746,26.2372,
-          26.4962,26.7517,27.0039,27.2528,27.4987,27.7415,27.9816,28.2188,28.4534,28.6854,
-          28.9149,29.1420,29.3667,29.5892,29.8095,30.0277,30.2438,30.4579,30.6701,30.8803,
-          31.0888,31.2954,31.5004,31.7036,31.9052,32.1051,32.3035,32.5004,32.6958,32.8898,
-          33.0823,33.2734,33.4632,33.6517,33.8388,34.0247,34.2094,34.3929,34.5751,34.7563,
-          34.9363,35.1151,35.2929,35.4696,35.6453,35.8200,35.9936,36.1663,36.3380,36.5088,
-          36.6786,36.8475,37.0155,37.1827,37.3489,37.5144,37.6789,37.8427,38.0057,38.1678,
-          38.3292,38.4899,38.6497,38.8089,38.9673,39.1250,39.2819,39.4382,39.5938,39.7488,
-          39.9030,40.0566,40.2096,40.3619,40.5136,40.6647,40.8152,40.9651,41.1144,41.2632,
-          41.4113,41.5589,41.7059,41.8524,41.9984,42.1438,42.2887,42.4330,42.5769,42.7202,
-          42.8631,43.0054,43.1473,43.2887,43.4296,43.5701,43.7101,43.8496,43.9887,44.1274,
-          44.2656,44.4034,44.5407,44.6777,44.8142,44.9503,45.0861,45.2214,45.3564,45.4910,
-          45.6252,45.7590,45.8925,46.0256,46.1584,46.2909,46.4231,46.5549,46.6865,46.8178,
-          46.9488,47.0796,47.2101,47.3404,47.4706,47.6005,47.7304,47.8601,47.9898,48.1194,
-          48.2491,48.3788,48.5087,48.6388,48.7692,48.8999,49.0311,49.1629,49.2955,49.4289,
-          49.5635,49.6993,49.8367,49.9760,50.1175,50.2617,50.4091,50.5605,50.7166,50.8785,
-          51.0475,51.2256,51.4151,51.6195,51.8439,52.0962,52.3897,52.7496,53.2325,54.0205};
-  //Na23(Z=11)
-  static G4double P5[nE]={
-          0.00000,7.00695,8.86633,10.1943,11.2667,12.1832,12.9928,13.7237,14.3938,15.0151,
-          15.5963,16.1438,16.6625,17.1563,17.6283,18.0810,18.5164,18.9362,19.3421,19.7352,
-          20.1165,20.4872,20.8479,21.1994,21.5424,21.8775,22.2051,22.5257,22.8397,23.1476,
-          23.4497,23.7462,24.0375,24.3239,24.6055,24.8826,25.1555,25.4243,25.6892,25.9503,
-          26.2078,26.4619,26.7127,26.9604,27.2050,27.4466,27.6854,27.9215,28.1550,28.3859,
-          28.6143,28.8404,29.0641,29.2857,29.5050,29.7223,29.9375,30.1508,30.3621,30.5716,
-          30.7793,30.9852,31.1894,31.3919,31.5928,31.7921,31.9899,32.1862,32.3810,32.5743,
-          32.7663,32.9569,33.1462,33.3341,33.5208,33.7063,33.8905,34.0735,34.2554,34.4361,
-          34.6157,34.7942,34.9717,35.1481,35.3235,35.4978,35.6712,35.8436,36.0150,36.1856,
-          36.3552,36.5239,36.6917,36.8586,37.0247,37.1900,37.3544,37.5181,37.6809,37.8430,
-          38.0043,38.1648,38.3246,38.4837,38.6420,38.7997,38.9566,39.1129,39.2685,39.4234,
-          39.5777,39.7314,39.8844,40.0368,40.1885,40.3397,40.4903,40.6403,40.7897,40.9385,
-          41.0868,41.2345,41.3817,41.5284,41.6745,41.8201,41.9652,42.1097,42.2538,42.3974,
-          42.5405,42.6831,42.8253,42.9670,43.1082,43.2490,43.3893,43.5292,43.6687,43.8078,
-          43.9464,44.0847,44.2225,44.3600,44.4971,44.6338,44.7702,44.9062,45.0418,45.1772,
-          45.3122,45.4469,45.5814,45.7155,45.8494,45.9831,46.1165,46.2497,46.3828,46.5156,
-          46.6484,46.7810,46.9136,47.0462,47.1787,47.3113,47.4439,47.5768,47.7098,47.8430,
-          47.9767,48.1107,48.2452,48.3804,48.5163,48.6530,48.7908,48.9297,49.0700,49.2119,
-          49.3556,49.5015,49.6499,49.8012,49.9559,50.1146,50.2780,50.4470,50.6226,50.8063,
-          50.9997,51.2054,51.4263,51.6671,51.9343,52.2382,52.5959,53.0400,53.6438,54.6445};
-  //P31(Z=15)
-  static G4double P6[nE]={
-          0.00000,6.82422,8.64751,9.95140,11.0052,11.9065,12.7032,13.4228,14.0829,14.6952,
-          15.2682,15.8082,16.3200,16.8074,17.2734,17.7205,18.1506,18.5656,18.9668,19.3555,
-          19.7327,20.0995,20.4564,20.8044,21.1441,21.4759,21.8005,22.1182,22.4294,22.7347,
-          23.0342,23.3283,23.6173,23.9014,24.1809,24.4560,24.7270,24.9939,25.2570,25.5164,
-          25.7723,26.0249,26.2742,26.5204,26.7637,27.0040,27.2416,27.4765,27.7088,27.9387,
-          28.1661,28.3912,28.6141,28.8347,29.0533,29.2698,29.4843,29.6969,29.9076,30.1165,
-          30.3236,30.5290,30.7327,30.9348,31.1353,31.3342,31.5317,31.7277,31.9222,32.1153,
-          32.3071,32.4975,32.6867,32.8745,33.0611,33.2465,33.4308,33.6138,33.7957,33.9765,
-          34.1562,34.3349,34.5125,34.6890,34.8646,35.0392,35.2128,35.3855,35.5573,35.7281,
-          35.8980,36.0671,36.2353,36.4027,36.5692,36.7350,36.8999,37.0640,37.2274,37.3900,
-          37.5519,37.7130,37.8734,38.0331,38.1921,38.3505,38.5081,38.6651,38.8214,38.9771,
-          39.1322,39.2866,39.4404,39.5937,39.7463,39.8983,40.0498,40.2007,40.3511,40.5009,
-          40.6502,40.7989,40.9471,41.0948,41.2420,41.3887,41.5349,41.6806,41.8259,41.9707,
-          42.1150,42.2589,42.4024,42.5454,42.6880,42.8302,42.9720,43.1134,43.2545,43.3951,
-          43.5354,43.6754,43.8150,43.9542,44.0932,44.2319,44.3702,44.5084,44.6462,44.7838,
-          44.9212,45.0584,45.1954,45.3323,45.4690,45.6057,45.7422,45.8787,46.0152,46.1517,
-          46.2882,46.4249,46.5617,46.6987,46.8360,46.9735,47.1115,47.2499,47.3888,47.5284,
-          47.6687,47.8098,47.9518,48.0950,48.2394,48.3852,48.5326,48.6819,48.8332,48.9869,
-          49.1432,49.3027,49.4657,49.6327,49.8044,49.9815,50.1649,50.3557,50.5552,50.7653,
-          50.9882,51.2267,51.4850,51.7686,52.0858,52.4496,52.8817,53.4232,54.1672,55.4144};
-  //Ca40(Z=20)
-  static G4double P7[nE]={
-          0.00000,6.55304,8.32352,9.59220,10.6190,11.4982,12.2762,12.9795,13.6251,14.2244,
-          14.7856,15.3149,15.8168,16.2951,16.7526,17.1918,17.6146,18.0227,18.4174,18.8000,
-          19.1714,19.5327,19.8846,20.2277,20.5627,20.8902,21.2106,21.5244,21.8320,22.1337,
-          22.4298,22.7208,23.0067,23.2880,23.5648,23.8373,24.1058,24.3704,24.6313,24.8886,
-          25.1426,25.3933,25.6409,25.8855,26.1272,26.3661,26.6023,26.8360,27.0671,27.2959,
-          27.5223,27.7465,27.9685,28.1884,28.4062,28.6221,28.8360,29.0481,29.2584,29.4669,
-          29.6737,29.8789,30.0824,30.2844,30.4848,30.6838,30.8813,31.0774,31.2721,31.4654,
-          31.6575,31.8482,32.0377,32.2260,32.4131,32.5990,32.7838,32.9675,33.1501,33.3316,
-          33.5120,33.6915,33.8699,34.0474,34.2238,34.3994,34.5740,34.7478,34.9206,35.0926,
-          35.2637,35.4339,35.6034,35.7720,35.9399,36.1070,36.2733,36.4389,36.6037,36.7678,
-          36.9312,37.0939,37.2560,37.4173,37.5780,37.7380,37.8974,38.0562,38.2144,38.3719,
-          38.5289,38.6853,38.8411,38.9963,39.1510,39.3051,39.4587,39.6117,39.7643,39.9163,
-          40.0679,40.2189,40.3695,40.5196,40.6692,40.8184,40.9671,41.1154,41.2633,41.4108,
-          41.5579,41.7045,41.8508,41.9967,42.1423,42.2875,42.4324,42.5769,42.7212,42.8651,
-          43.0087,43.1521,43.2953,43.4381,43.5808,43.7233,43.8655,44.0077,44.1496,44.2915,
-          44.4332,44.5749,44.7166,44.8582,44.9999,45.1416,45.2834,45.4253,45.5675,45.7098,
-          45.8524,45.9953,46.1386,46.2824,46.4267,46.5716,46.7172,46.8635,47.0107,47.1589,
-          47.3083,47.4588,47.6108,47.7643,47.9195,48.0768,48.2362,48.3981,48.5628,48.7306,
-          48.9019,49.0772,49.2570,49.4420,49.6329,49.8306,50.0362,50.2510,50.4768,50.7155,
-          50.9699,51.2436,51.5414,51.8702,52.2401,52.6667,53.1765,53.8195,54.7092,56.213};
-  //Zn64(Z=30)
-  static G4double P8[nE]={
-          0.00000,5.93631,7.58588,8.77313,9.73699,10.5643,11.2979,11.9624,12.5734,13.1415,
-          13.6742,14.1774,14.6552,15.1111,15.5477,15.9674,16.3719,16.7627,17.1412,17.5084,
-          17.8654,18.2129,18.5517,18.8825,19.2058,19.5221,19.8319,20.1356,20.4335,20.7260,
-          21.0135,21.2961,21.5742,21.8479,22.1175,22.3833,22.6453,22.9037,23.1588,23.4106,
-          23.6593,23.9050,24.1479,24.3880,24.6255,24.8605,25.0931,25.3232,25.5512,25.7769,
-          26.0005,26.2221,26.4417,26.6594,26.8753,27.0893,27.3017,27.5123,27.7214,27.9288,
-          28.1348,28.3392,28.5422,28.7437,28.9439,29.1428,29.3404,29.5367,29.7318,29.9257,
-          30.1184,30.3100,30.5005,30.6899,30.8782,31.0655,31.2518,31.4371,31.6215,31.8049,
-          31.9874,32.1690,32.3497,32.5296,32.7086,32.8869,33.0643,33.2409,33.4168,33.5919,
-          33.7663,33.9399,34.1129,34.2851,34.4567,34.6277,34.7979,34.9676,35.1366,35.3050,
-          35.4728,35.6400,35.8067,35.9727,36.1383,36.3033,36.4677,36.6317,36.7951,36.9580,
-          37.1205,37.2825,37.4440,37.6050,37.7656,37.9258,38.0855,38.2449,38.4038,38.5623,
-          38.7205,38.8782,39.0356,39.1927,39.3494,39.5058,39.6618,39.8176,39.9730,40.1281,
-          40.2830,40.4376,40.5920,40.7461,40.9000,41.0537,41.2072,41.3606,41.5137,41.6667,
-          41.8196,41.9724,42.1251,42.2777,42.4303,42.5829,42.7354,42.8880,43.0407,43.1934,
-          43.3462,43.4992,43.6524,43.8058,43.9595,44.1135,44.2679,44.4226,44.5779,44.7336,
-          44.8900,45.0470,45.2047,45.3632,45.5227,45.6831,45.8447,46.0075,46.1716,46.3372,
-          46.5045,46.6735,46.8446,47.0179,47.1936,47.3720,47.5535,47.7382,47.9267,48.1193,
-          48.3166,48.5191,48.7275,48.9426,49.1653,49.3968,49.6383,49.8917,50.1588,50.4424,
-          50.7458,51.0735,51.4316,51.8286,52.2771,52.7968,53.4209,54.2121,55.3131,57.1875};
-  //Rh103(Z=45)
-  static G4double P9[nE]={
-          0.00000,5.00701,6.48187,7.55018,8.42075,9.17008,9.83596,10.4402,10.9967,11.5149,
-          12.0017,12.4619,12.8995,13.3176,13.7185,14.1042,14.4765,14.8365,15.1856,15.5248,
-          15.8548,16.1764,16.4903,16.7972,17.0974,17.3914,17.6797,17.9627,18.2406,18.5137,
-          18.7825,19.0470,19.3075,19.5643,19.8176,20.0674,20.3141,20.5576,20.7983,21.0362,
-          21.2714,21.5041,21.7344,21.9623,22.1880,22.4116,22.6331,22.8527,23.0703,23.2862,
-          23.5003,23.7127,23.9234,24.1327,24.3404,24.5466,24.7514,24.9549,25.1571,25.3580,
-          25.5577,25.7562,25.9535,26.1497,26.3449,26.5390,26.7322,26.9243,27.1155,27.3058,
-          27.4952,27.6837,27.8714,28.0583,28.2445,28.4298,28.6144,28.7984,28.9816,29.1641,
-          29.3460,29.5273,29.7079,29.8880,30.0675,30.2464,30.4248,30.6026,30.7799,30.9568,
-          31.1332,31.3091,31.4845,31.6595,31.8341,32.0083,32.1821,32.3555,32.5286,32.7013,
-          32.8736,33.0456,33.2173,33.3887,33.5598,33.7306,33.9011,34.0713,34.2414,34.4111,
-          34.5806,34.7500,34.9191,35.0880,35.2567,35.4252,35.5936,35.7618,35.9299,36.0978,
-          36.2656,36.4333,36.6008,36.7683,36.9357,37.1031,37.2704,37.4376,37.6048,37.7720,
-          37.9391,38.1063,38.2735,38.4407,38.6080,38.7754,38.9428,39.1103,39.2779,39.4457,
-          39.6136,39.7817,39.9500,40.1184,40.2872,40.4562,40.6255,40.7951,40.9650,41.1354,
-          41.3061,41.4773,41.6490,41.8213,41.9941,42.1675,42.3417,42.5165,42.6922,42.8687,
-          43.0462,43.2246,43.4042,43.5849,43.7669,43.9504,44.1353,44.3218,44.5102,44.7004,
-          44.8928,45.0875,45.2847,45.4846,45.6876,45.8939,46.1038,46.3178,46.5362,46.7596,
-          46.9885,47.2236,47.4656,47.7155,47.9743,48.2434,48.5242,48.8187,49.1292,49.4588,
-          49.8113,50.1919,50.6075,51.0680,51.5878,52.1895,52.9113,53.8254,55.0955,57.2547};
-  //Th159(Z=65)
-  static G4double PA[nE]={
-          0.00000,3.72463,4.98461,5.91463,6.68054,7.34437,7.93719,8.47714,8.97585,9.44132,
-          9.87929,10.2941,10.6890,11.0666,11.4290,11.7780,12.1150,12.4412,12.7576,13.0651,
-          13.3644,13.6563,13.9413,14.2199,14.4925,14.7597,15.0217,15.2789,15.5315,15.7800,
-          16.0244,16.2651,16.5023,16.7361,16.9667,17.1943,17.4190,17.6410,17.8604,18.0774,
-          18.2920,18.5044,18.7147,18.9229,19.1292,19.3336,19.5362,19.7371,19.9364,20.1341,
-          20.3303,20.5251,20.7185,20.9106,21.1014,21.2910,21.4794,21.6667,21.8529,22.0381,
-          22.2223,22.4055,22.5879,22.7693,22.9500,23.1298,23.3088,23.4871,23.6647,23.8416,
-          24.0179,24.1935,24.3685,24.5430,24.7170,24.8904,25.0633,25.2358,25.4078,25.5794,
-          25.7506,25.9214,26.0919,26.2620,26.4319,26.6014,26.7706,26.9396,27.1084,27.2770,
-          27.4453,27.6135,27.7815,27.9494,28.1171,28.2847,28.4522,28.6197,28.7871,28.9545,
-          29.1218,29.2891,29.4564,29.6237,29.7911,29.9586,30.1260,30.2936,30.4613,30.6291,
-          30.7970,30.9651,31.1333,31.3018,31.4704,31.6392,31.8082,31.9775,32.1471,32.3169,
-          32.4870,32.6574,32.8281,32.9992,33.1706,33.3425,33.5147,33.6873,33.8603,34.0338,
-          34.2078,34.3822,34.5572,34.7326,34.9087,35.0852,35.2624,35.4402,35.6187,35.7978,
-          35.9775,36.1580,36.3393,36.5213,36.7041,36.8877,37.0722,37.2576,37.4439,37.6312,
-          37.8196,38.0089,38.1994,38.3910,38.5838,38.7778,38.9731,39.1698,39.3680,39.5676,
-          39.7688,39.9716,40.1762,40.3827,40.5910,40.8014,41.0140,41.2289,41.4463,41.6662,
-          41.8890,42.1147,42.3437,42.5761,42.8122,43.0524,43.2969,43.5462,43.8008,44.0610,
-          44.3276,44.6012,44.8826,45.1727,45.4727,45.7838,46.1077,46.4465,46.8024,47.1788,
-          47.5795,48.0100,48.4774,48.9920,49.5687,50.2309,51.0179,52.0041,53.3576,55.6238};
-
-  //U238(Z=92)
-  static G4double PB[nE]={
-          0.00000,1.93933,2.80877,3.48857,4.06872,4.58456,5.05440,5.48917,5.89607,6.28010,
-          6.64494,6.99335,7.32751,7.64913,7.95964,8.26019,8.55175,8.83516,9.11111,9.38023,
-          9.64304,9.90002,10.1516,10.3981,10.6399,10.8772,11.1105,11.3398,11.5654,11.7875,
-          12.0063,12.2220,12.4347,12.6446,12.8518,13.0564,13.2586,13.4585,13.6561,13.8516,
-          14.0450,14.2364,14.4260,14.6137,14.7998,14.9841,15.1668,15.3480,15.5278,15.7060,
-          15.8829,16.0585,16.2328,16.4059,16.5778,16.7485,16.9181,17.0867,17.2543,17.4208,
-          17.5864,17.7511,17.9149,18.0779,18.2400,18.4013,18.5619,18.7218,18.8809,19.0394,
-          19.1972,19.3544,19.5110,19.6670,19.8225,19.9774,20.1318,20.2858,20.4393,20.5924,
-          20.7450,20.8973,21.0492,21.2007,21.3519,21.5028,21.6534,21.8038,21.9539,22.1037,
-          22.2534,22.4029,22.5522,22.7013,22.8503,22.9992,23.1481,23.2968,23.4455,23.5942,
-          23.7428,23.8915,24.0402,24.1889,24.3377,24.4866,24.6355,24.7846,24.9339,25.0833,
-          25.2329,25.3828,25.5328,25.6832,25.8337,25.9846,26.1359,26.2874,26.4394,26.5917,
-          26.7444,26.8976,27.0513,27.2055,27.3602,27.5155,27.6713,27.8278,27.9849,28.1427,
-          28.3012,28.4604,28.6204,28.7812,28.9429,29.1055,29.2690,29.4334,29.5989,29.7655,
-          29.9331,30.1019,30.2719,30.4431,30.6156,30.7895,30.9648,31.1416,31.3200,31.4999,
-          31.6816,31.8650,32.0502,32.2374,32.4266,32.6178,32.8113,33.0071,33.2053,33.4060,
-          33.6094,33.8156,34.0248,34.2370,34.4525,34.6714,34.8939,35.1203,35.3508,35.5855,
-          35.8249,36.0691,36.3185,36.5734,36.8343,37.1015,37.3756,37.6571,37.9466,38.2448,
-          38.5525,38.8705,39.2000,39.5422,39.8984,40.2703,40.6601,41.0701,41.5034,41.9638,
-          42.4562,42.9870,43.5648,44.2017,44.9151,45.7322,46.6981,47.8972,49.5188,52.1676};
-  static G4double* PP[nZ]= {P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,PA,PB};
-  static const G4int mZ1=93;      // MaxPossibleZ+1
-  static const G4int mZ=mZ1-1;    // MaxPossibleZ
-  static G4double* P[mZ1]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-  //---------------------------------------------------------------------------------------
-  if(z<1 || z>mZ)
-  {
-    G4cout<<"-W-G4QCapAtRest::RandomizeDecayElectron: <=0 or big(>"<<mZ<<") Z="<<z<<G4endl;
-    return 0.;
-  }
-  G4double  Z  = z;
-  G4double* nP = 0;
-  if(!P[z])          // The table for this element must be created
-  {
-    for(G4int i=0; i<nZ; i++)
-    {
-      G4double fZ=tZ[i];
-      if(Z<=fZ)      // The extrapolation bin is found
-      {
-#ifdef debug
-        G4cout<<"G4QCapAtRest::RandomizeDecayElectron: Z="<<Z<<", fZ="<<fZ<<G4endl;
-#endif
-        nP = new G4double[nE];
-        G4double* fP=PP[i];
-        if(Z==fZ) for(G4int j=0; j<nE; j++) nP[j]=fP[j];
-        else
-        {
-          G4int i1=i-1;  // i>2, asthe first tabilated Z are 1,2,4,... and min_i=3
-          G4double  iZ=tZ[i1];
-          G4double* iP=PP[i1];
-          G4double rZ=(Z-iZ)/(fZ-iZ);
-          for(G4int j=0; j<nE; j++) nP[j]=iP[j]+(fP[j]-iP[j])*rZ;
-        }
-#ifdef debug
-        for(G4int k=0; k<nE; k++)G4cout<<"G4QCAR::RandDecEle:P["<<k<<"]="<<nP[k]<<G4endl;
-#endif
-        P[z]=nP;
-        break;
-      }
-    }
-  }
-  else nP=P[z];
-  // At this point the randomization table for the element is in nP
-  G4double R=G4UniformRand()*nE;
-  G4int iR=static_cast<int>(R);
-  if(iR > nEl) iR=nEl;
-  else if(iR<0) iR=0;
-  G4double nPi=nP[iR];
-  G4double nPf=0.;
-  if(iR<nEl) nPf=nP[iR+1];
-  else       nPf=nP[nEl]+(nP[nEl]-nP[nEb])/2; // An artificial tail
-#ifdef debug
-  G4cout<<"G4QCapAtR::RaDEl:R="<<R<<",Ei="<<nPi<<",E="<<MeV*(nPi+(R-iR)*(nPf-nPi))<<G4endl;
-#endif
-  return MeV*(nPi+(R-iR)*(nPf-nPi));
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCoherentChargeExchange.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCoherentChargeExchange.cc	(revision 1197)
+++ 	(revision )
@@ -1,601 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QCoherentChargeExchange.cc,v 1.8 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QCoherentChargeExchange class -----------------
-//                 by Mikhail Kossov, December 2003.
-// G4QCoherentChargeExchange class of the CHIPS Simulation Branch in GEANT4
-// ---------------------------------------------------------------
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ****************************************************************************************
-// Short description: This class resolves an ambiguity in the definition of the
-// "inelastic" cross section. As it was shown in Ph.D.Thesis (M.Kosov,ITEP,1979)
-// it is more reasonable to subdivide the total cross-section in the coherent &
-// incoherent parts, but the measuring method for the "inelastic" cross-sections
-// consideres the lack of the projectile within the narrow forward solid angle
-// with the consequent extrapolation of these partial cross-sections, corresponding
-// to the particular solid angle, to the zero solid angle. The low angle region
-// is shadowed by the elastic (coherent) scattering. BUT the coherent charge
-// exchange (e.g. conversion p->n) is included by this procedure as a constant term
-// in the extrapolation, so the "inelastic" cross-section differes from the
-// incoherent cross-section by the value of the coherent charge exchange cross
-// section. Fortunately, this cross-sectoion drops ruther fast with energy increasing.
-// All Geant4 inelastic hadronic models (including CHIPS) simulate the incoherent
-// reactions. So the incoherent (including quasielastic) cross-section must be used
-// instead of the inelastic cross-section. For that the "inelastic" cross-section
-// must be reduced by the value of the coherent charge-exchange cross-section, which
-// is estimated (it must be tuned!) in this CHIPS class. The angular distribution
-// is made (at present) identical to the corresponding coherent-elastic scattering 
-// -----------------------------------------------------------------------------------
-//#define debug
-//#define pdebug
-//#define tdebug
-//#define nandebug
-//#define ppdebug
-
-#include "G4QCoherentChargeExchange.hh"
-
-// Initialization of static vectors
-G4int    G4QCoherentChargeExchange::nPartCWorld=152;  // #of particles initialized in CHIPS
-std::vector<G4int> G4QCoherentChargeExchange::ElementZ; // Z of element(i) in theLastCalc
-std::vector<G4double> G4QCoherentChargeExchange::ElProbInMat; // SumProbOfElem in Material
-std::vector<std::vector<G4int>*> G4QCoherentChargeExchange::ElIsoN;// N of isotope(j), E(i)
-std::vector<std::vector<G4double>*>G4QCoherentChargeExchange::IsoProbInEl;//SumProbIsotE(i)
-
-// Constructor
-G4QCoherentChargeExchange::G4QCoherentChargeExchange(const G4String& processName)
-  : G4VDiscreteProcess(processName, fHadronic)
-{
-#ifdef debug
-  G4cout<<"G4QCohChargeEx::Constructor is called processName="<<processName<<G4endl;
-#endif
-  if (verboseLevel>0) G4cout << GetProcessName() << " process is created "<< G4endl;
-  SetProcessSubType(fChargeExchange);
-  //G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part. max)
-}
-
-// Destructor
-G4QCoherentChargeExchange::~G4QCoherentChargeExchange() {}
-
-
-G4LorentzVector G4QCoherentChargeExchange::GetEnegryMomentumConservation()
-                                                                {return EnMomConservation;}
-
-G4int G4QCoherentChargeExchange::GetNumberOfNeutronsInTarget() {return nOfNeutrons;}
-
-// output of the function must be in units of length! L=1/sig_V,sig_V=SUM(n(j,i)*sig(j,i)),
-// where n(i,j) is a number of nuclei of the isotop j of the element i in V=1(lengtUnit^3)
-// ********** All CHIPS cross sections are calculated in the surface units ************
-G4double G4QCoherentChargeExchange::GetMeanFreePath(const G4Track& aTrack,G4double Q,
-                                                    G4ForceCondition* Fc)
-{
-  *Fc = NotForced;
-  const G4DynamicParticle* incidentParticle = aTrack.GetDynamicParticle();
-  G4ParticleDefinition* incidentParticleDefinition=incidentParticle->GetDefinition();
-  if( !IsApplicable(*incidentParticleDefinition))
-    G4cout<<"*W*G4QCohChargeEx::GetMeanFreePath called for notImplementedParticle"<<G4endl;
-  // Calculate the mean Cross Section for the set of Elements(*Isotopes) in the Material
-  G4double Momentum = incidentParticle->GetTotalMomentum(); // 3-momentum of the Particle
-#ifdef debug
-  G4double KinEn = incidentParticle->GetKineticEnergy();
-  G4cout<<"G4QCohChEx::GetMeanFreePath: kinE="<<KinEn<<",Mom="<<Momentum<<G4endl; // Result
-#endif
-  const G4Material* material = aTrack.GetMaterial();        // Get the current material
-  const G4double* NOfNucPerVolume = material->GetVecNbOfAtomsPerVolume();
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QCohChargeExchange::GetMeanFreePath:"<<nE<<" Elem's in theMaterial"<<G4endl;
-#endif
-  G4int pPDG=0;
-
-  if     (incidentParticleDefinition == G4Proton::Proton()  ) pPDG=2212;
-  else if(incidentParticleDefinition == G4Neutron::Neutron()) pPDG=2112;
-  else G4cout<<"G4QCohChargeEx::GetMeanFreePath: only nA & pA are implemented"<<G4endl;
-  
-  G4QIsotope* Isotopes = G4QIsotope::Get(); // Pointer to the G4QIsotopes singleton
-  G4double sigma=0.;                        // Sums over elements for the material
-  G4int IPIE=IsoProbInEl.size();            // How many old elements?
-  if(IPIE) for(G4int ip=0; ip<IPIE; ++ip)   // Clean up the SumProb's of Isotopes (SPI)
-  {
-    std::vector<G4double>* SPI=IsoProbInEl[ip]; // Pointer to the SPI vector
-    SPI->clear();
-    delete SPI;
-    std::vector<G4int>* IsN=ElIsoN[ip];     // Pointer to the N vector
-    IsN->clear();
-    delete IsN;
-  }
-  ElProbInMat.clear();                      // Clean up the SumProb's of Elements (SPE)
-  ElementZ.clear();                         // Clear the body vector for Z of Elements
-  IsoProbInEl.clear();                      // Clear the body vector for SPI
-  ElIsoN.clear();                           // Clear the body vector for N of Isotopes
-  for(G4int i=0; i<nE; ++i)
-  {
-    G4Element* pElement=(*theElementVector)[i]; // Pointer to the current element
-    G4int Z = static_cast<G4int>(pElement->GetZ()); // Z of the Element
-    ElementZ.push_back(Z);                  // Remember Z of the Element
-    G4int isoSize=0;                        // The default for the isoVectorLength is 0
-    G4int indEl=0;                          // Index of non-natural element or 0(default)
-    G4IsotopeVector* isoVector=pElement->GetIsotopeVector(); // Get the predefined IsoVect
-    if(isoVector) isoSize=isoVector->size();// Get size of the existing isotopeVector
-#ifdef debug
-    G4cout<<"G4QCoherentChargeExchange::GetMeanFreePath:isovectorLength="<<isoSize<<G4endl;
-#endif
-    if(isoSize)                             // The Element has non-trivial abundance set
-    {
-      indEl=pElement->GetIndex()+1;         // Index of the non-trivial element is an order
-#ifdef debug
-      G4cout<<"G4QCCX::GetMFP: iE="<<indEl<<", def="<<Isotopes->IsDefined(Z,indEl)<<G4endl;
-#endif
-      if(!Isotopes->IsDefined(Z,indEl))     // This index is not defined for this Z: define
-      {
-        std::vector<std::pair<G4int,G4double>*>* newAbund =
-                                               new std::vector<std::pair<G4int,G4double>*>;
-        G4double* abuVector=pElement->GetRelativeAbundanceVector();
-        for(G4int j=0; j<isoSize; j++)      // Calculation of abundance vector for isotopes
-        {
-          G4int N=pElement->GetIsotope(j)->GetN()-Z; // N means A=N+Z !
-          if(pElement->GetIsotope(j)->GetZ()!=Z)G4cerr<<"G4QCohChX::GetMeanFreePath: Z="
-                                         <<pElement->GetIsotope(j)->GetZ()<<"#"<<Z<<G4endl;
-          G4double abund=abuVector[j];
-          std::pair<G4int,G4double>* pr= new std::pair<G4int,G4double>(N,abund);
-#ifdef debug
-          G4cout<<"G4QCohChEx::GetMeanFreePath:pair#="<<j<<",N="<<N<<",ab="<<abund<<G4endl;
-#endif
-          newAbund->push_back(pr);
-        }
-#ifdef debug
-        G4cout<<"G4QCohChEx::GetMeanFreePath: pairVectorLength="<<newAbund->size()<<G4endl;
-#endif
-        indEl=G4QIsotope::Get()->InitElement(Z,indEl,newAbund); // definition of the newInd
-        for(G4int k=0; k<isoSize; k++) delete (*newAbund)[k];   // Cleaning temporary
-        delete newAbund; // Was "new" in the beginning of the name space
-      }
-    }
-    std::vector<std::pair<G4int,G4double>*>* cs= Isotopes->GetCSVector(Z,indEl);//CSPointer
-    std::vector<G4double>* SPI = new std::vector<G4double>; // Pointer to the SPI vector
-    IsoProbInEl.push_back(SPI);
-    std::vector<G4int>* IsN = new std::vector<G4int>; // Pointer to the N vector
-    ElIsoN.push_back(IsN);
-    G4int nIs=cs->size();                   // A#Of Isotopes in the Element
-#ifdef debug
-    G4cout<<"G4QCohChargEx::GMFP:=***=>,#isot="<<nIs<<", Z="<<Z<<", indEl="<<indEl<<G4endl;
-#endif
-    G4double susi=0.;                       // sum of CS over isotopes
-    if(nIs) for(G4int j=0; j<nIs; j++)      // Calculate CS for eachIsotope of El
-    {
-      std::pair<G4int,G4double>* curIs=(*cs)[j]; // A pointer, which is used twice
-      G4int N=curIs->first;                 // #of Neuterons in the isotope j of El i
-      IsN->push_back(N);                    // Remember Min N for the Element
-#ifdef debug
-      G4cout<<"G4QCCX::GMFP:true, P="<<Momentum<<",Z="<<Z<<",N="<<N<<",PDG="<<pPDG<<G4endl;
-#endif
-      G4bool ccsf=true;
-      if(Q==-27.) ccsf=false;
-#ifdef debug
-      G4cout<<"G4QCoherentChargeExchange::GMFP: GetCS #1 j="<<j<<G4endl;
-#endif
-      G4double CSI=CalculateXSt(ccsf, true, Momentum, Z, N, pPDG);// CS(j,i) for theIsotope
-
-#ifdef debug
-      G4cout<<"G4QCohChEx::GetMeanFreePath:jI="<<j<<",Zt="<<Z<<",Nt="<<N<<",Mom="<<Momentum
-            <<", XSec="<<CSI/millibarn<<G4endl;
-#endif
-      curIs->second = CSI;
-      susi+=CSI;                            // Make a sum per isotopes
-      SPI->push_back(susi);                 // Remember summed cross-section
-    } // End of temporary initialization of the cross sections in the G4QIsotope singeltone
-    sigma+=Isotopes->GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i];//SUM(MeanCS*NOfNperV)
-#ifdef debug
-    G4cout<<"G4QCohChEx::GMFP:<S>="<<Isotopes->GetMeanCrossSection(Z,indEl)<<",AddToSigma="
-          <<Isotopes->GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i]<<G4endl;
-#endif
-    ElProbInMat.push_back(sigma);
-  } // End of LOOP over Elements
-  // Check that cross section is not zero and return the mean free path
-#ifdef debug
-  G4cout<<"G4QCoherentChargeExchange::GetMeanFreePath: MeanFreePath="<<1./sigma<<G4endl;
-#endif
-  if(sigma > 0.) return 1./sigma;                 // Mean path [distance] 
-  return DBL_MAX;
-}
-
-G4bool G4QCoherentChargeExchange::IsApplicable(const G4ParticleDefinition& particle) 
-{
-  if      (particle == *(        G4Proton::Proton()        )) return true;
-  else if (particle == *(       G4Neutron::Neutron()       )) return true;
-  //else if (particle == *(     G4MuonMinus::MuonMinus()     )) return true; 
-  //else if (particle == *(       G4TauPlus::TauPlus()       )) return true;
-  //else if (particle == *(      G4TauMinus::TauMinus()      )) return true;
-  //else if (particle == *(      G4Electron::Electron()      )) return true;
-  //else if (particle == *(      G4Positron::Positron()      )) return true;
-  //else if (particle == *(         G4Gamma::Gamma()         )) return true;
-  //else if (particle == *(      G4MuonPlus::MuonPlus()      )) return true;
-  //else if (particle == *(G4AntiNeutrinoMu::AntiNeutrinoMu())) return true;
-  //else if (particle == *(   G4NeutrinoMu::NeutrinoMu()   )) return true;
-  //else if (particle == *(     G4PionMinus::PionMinus()     )) return true;
-  //else if (particle == *(      G4PionPlus::PionPlus()      )) return true;
-  //else if (particle == *(      G4KaonPlus::KaonPlus()      )) return true;
-  //else if (particle == *(     G4KaonMinus::KaonMinus()     )) return true;
-  //else if (particle == *(  G4KaonZeroLong::KaonZeroLong()  )) return true;
-  //else if (particle == *( G4KaonZeroShort::KaonZeroShort() )) return true;
-  //else if (particle == *(        G4Lambda::Lambda()        )) return true;
-  //else if (particle == *(     G4SigmaPlus::SigmaPlus()     )) return true;
-  //else if (particle == *(    G4SigmaMinus::SigmaMinus()    )) return true;
-  //else if (particle == *(     G4SigmaZero::SigmaZero()     )) return true;
-  //else if (particle == *(       G4XiMinus::XiMinus()       )) return true;
-  //else if (particle == *(        G4XiZero::XiZero()        )) return true;
-  //else if (particle == *(    G4OmegaMinus::OmegaMinus()    )) return true;
-  //else if (particle == *(   G4AntiNeutron::AntiNeutron()   )) return true;
-  //else if (particle == *(    G4AntiProton::AntiProton()    )) return true;
-#ifdef debug
-  G4cout<<"***>>G4QCoherChargeExch::IsApplicable: PDG="<<particle.GetPDGEncoding()<<G4endl;
-#endif
-  return false;
-}
-
-G4VParticleChange* G4QCoherentChargeExchange::PostStepDoIt(const G4Track& track,
-                                                           const G4Step& step)
-{
-  static const G4double mProt= G4QPDGCode(2212).GetMass();     // CHIPS pMass in MeV
-  static const G4double mNeut= G4QPDGCode(2212).GetMass();     // CHIPS pMass in MeV
-  //
-  //-------------------------------------------------------------------------------------
-  static G4bool CWinit = true;                       // CHIPS Warld needs to be initted
-  if(CWinit)
-  {
-    CWinit=false;
-    G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part.max)
-  }
-  //-------------------------------------------------------------------------------------
-  const G4DynamicParticle* projHadron = track.GetDynamicParticle();
-  const G4ParticleDefinition* particle=projHadron->GetDefinition();
-#ifdef debug
-  G4cout<<"G4QCohChargeExchange::PostStepDoIt: Before the GetMeanFreePath is called In4M="
-        <<projHadron->Get4Momentum()<<" of PDG="<<particle->GetPDGEncoding()<<", Type="
-        <<particle->GetParticleType()<<", Subtp="<<particle->GetParticleSubType()<<G4endl;
-#endif
-  G4ForceCondition cond=NotForced;
-  GetMeanFreePath(track, -27., &cond);                  // @@ ?? jus to update parameters?
-#ifdef debug
-  G4cout<<"G4QCohChargeExchange::PostStepDoIt: After GetMeanFreePath is called"<<G4endl;
-#endif
-  G4LorentzVector proj4M=(projHadron->Get4Momentum())/MeV; // Convert to MeV!
-  G4double momentum = projHadron->GetTotalMomentum()/MeV; // 3-momentum of the Proj in MeV
-  G4double Momentum = proj4M.rho();                   // @@ Just for the test purposes
-  if(std::fabs(Momentum-momentum)>.000001)
-       G4cerr<<"*Warning*G4QCohChEx::PostStepDoIt:P(IU)="<<Momentum<<"#"<<momentum<<G4endl;
-#ifdef pdebug
-  G4cout<<"G4QCoherentChargeExchange::PostStepDoIt: pP(IU)="<<Momentum<<"="<<momentum
-        <<",pM="<<pM<<",proj4M="<<proj4M<<proj4M.m()<<G4endl;
-#endif
-  if (!IsApplicable(*particle))  // Check applicability
-  {
-    G4cerr<<"G4QCoherentChargeExchange::PostStepDoIt: Only NA is implemented."<<G4endl;
-    return 0;
-  }
-  const G4Material* material = track.GetMaterial();      // Get the current material
-  G4int Z=0;
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QCohChargeExchange::PostStepDoIt: "<<nE<<" elements in the material."<<G4endl;
-#endif
-  G4int projPDG=0;                           // PDG Code prototype for the captured hadron
-  // Not all these particles are implemented yet (see Is Applicable)
-  if      (particle ==          G4Proton::Proton()         ) projPDG= 2212;
-  else if (particle ==         G4Neutron::Neutron()        ) projPDG= 2112;
-  //else if (particle ==       G4PionMinus::PionMinus()      ) projPDG= -211;
-  //else if (particle ==        G4PionPlus::PionPlus()       ) projPDG=  211;
-  //else if (particle ==        G4KaonPlus::KaonPlus()       ) projPDG= 2112;
-  //else if (particle ==       G4KaonMinus::KaonMinus()      ) projPDG= -321;
-  //else if (particle ==    G4KaonZeroLong::KaonZeroLong()   ) projPDG=  130;
-  //else if (particle ==   G4KaonZeroShort::KaonZeroShort()  ) projPDG=  310;
-  //else if (particle ==        G4MuonPlus::MuonPlus()       ) projPDG=  -13;
-  //else if (particle ==       G4MuonMinus::MuonMinus()      ) projPDG=   13;
-  //else if (particle ==      G4NeutrinoMu::NeutrinoMu()     ) projPDG=   14;
-  //else if (particle ==  G4AntiNeutrinoMu::AntiNeutrinoMu() ) projPDG=  -14;
-  //else if (particle ==        G4Electron::Electron()       ) projPDG=   11;
-  //else if (particle ==        G4Positron::Positron()       ) projPDG=  -11;
-  //else if (particle ==       G4NeutrinoE::NeutrinoE()      ) projPDG=   12;
-  //else if (particle ==   G4AntiNeutrinoE::AntiNeutrinoE()  ) projPDG=  -12;
-  //else if (particle ==           G4Gamma::Gamma()          ) projPDG=   22;
-  //else if (particle ==         G4TauPlus::TauPlus()        ) projPDG=  -15;
-  //else if (particle ==        G4TauMinus::TauMinus()       ) projPDG=   15;
-  //else if (particle ==     G4NeutrinoTau::NeutrinoTau()    ) projPDG=   16;
-  //else if (particle == G4AntiNeutrinoTau::AntiNeutrinoTau()) projPDG=  -16;
-  //else if (particle ==          G4Lambda::Lambda()         ) projPDG= 3122;
-  //else if (particle ==       G4SigmaPlus::SigmaPlus()      ) projPDG= 3222;
-  //else if (particle ==      G4SigmaMinus::SigmaMinus()     ) projPDG= 3112;
-  //else if (particle ==       G4SigmaZero::SigmaZero()      ) projPDG= 3212;
-  //else if (particle ==         G4XiMinus::XiMinus()        ) projPDG= 3312;
-  //else if (particle ==          G4XiZero::XiZero()         ) projPDG= 3322;
-  //else if (particle ==      G4OmegaMinus::OmegaMinus()     ) projPDG= 3334;
-  //else if (particle ==     G4AntiNeutron::AntiNeutron()    ) projPDG=-2112;
-  //else if (particle ==      G4AntiProton::AntiProton()     ) projPDG=-2212;
-#ifdef debug
-  G4int prPDG=particle->GetPDGEncoding();
-  G4cout<<"G4QCohChrgExchange::PostStepDoIt: projPDG="<<projPDG<<", stPDG="<<prPDG<<G4endl;
-#endif
-  if(!projPDG)
-  {
-    G4cerr<<"*Warning*G4QCoherentChargeExchange::PostStepDoIt:UndefinedProjHadron"<<G4endl;
-    return 0;
-  }
-  //G4double pM2=proj4M.m2();        // in MeV^2
-  //G4double pM=std::sqrt(pM2);      // in MeV
-  G4double pM=mNeut;
-  G4int    fPDG=2112;
-  if(projPDG==2112)
-  {
-    pM=mProt;
-    fPDG=2212;
-  }
-  G4double pM2=pM*pM;
-  // Element treatment
-  G4int EPIM=ElProbInMat.size();
-#ifdef debug
-  G4cout<<"G4QCohChEx::PostStDoIt:m="<<EPIM<<",n="<<nE<<",T="<<ElProbInMat[EPIM-1]<<G4endl;
-#endif
-  G4int i=0;
-  if(EPIM>1)
-  {
-    G4double rnd = ElProbInMat[EPIM-1]*G4UniformRand();
-    for(i=0; i<nE; ++i)
-    {
-#ifdef debug
-      G4cout<<"G4QCohChEx::PostStepDoIt:EPM["<<i<<"]="<<ElProbInMat[i]<<",r="<<rnd<<G4endl;
-#endif
-      if (rnd<ElProbInMat[i]) break;
-    }
-    if(i>=nE) i=nE-1;                        // Top limit for the Element
-  }
-  G4Element* pElement=(*theElementVector)[i];
-  Z=static_cast<G4int>(pElement->GetZ());
-#ifdef debug
-    G4cout<<"G4QCoherentChargeExchange::PostStepDoIt: i="<<i<<", Z(element)="<<Z<<G4endl;
-#endif
-  if(Z<=0)
-  {
-    G4cerr<<"-Warning-G4QCoherentChargeExchange::PostStepDoIt: Element with Z="<<Z<<G4endl;
-    if(Z<0) return 0;
-  }
-  std::vector<G4double>* SPI = IsoProbInEl[i];// Vector of summedProbabilities for isotopes
-  std::vector<G4int>* IsN = ElIsoN[i];     // Vector of "#of neutrons" in the isotope El[i]
-  G4int nofIsot=SPI->size();               // #of isotopes in the element i
-#ifdef debug
-  G4cout<<"G4QCohChargeExchange::PosStDoIt:nI="<<nofIsot<<",T="<<(*SPI)[nofIsot-1]<<G4endl;
-#endif
-  G4int j=0;
-  if(nofIsot>1)
-  {
-    G4double rndI=(*SPI)[nofIsot-1]*G4UniformRand(); // Randomize the isotop of the Element
-    for(j=0; j<nofIsot; ++j)
-    {
-#ifdef debug
-      G4cout<<"G4QCohChargEx::PostStepDoIt: SP["<<j<<"]="<<(*SPI)[j]<<", r="<<rndI<<G4endl;
-#endif
-      if(rndI < (*SPI)[j]) break;
-    }
-    if(j>=nofIsot) j=nofIsot-1;            // Top limit for the isotope
-  }
-  G4int N =(*IsN)[j]; ;                    // Randomized number of neutrons
-#ifdef debug
-  G4cout<<"G4QCohChargeEx::PostStepDoIt: j="<<i<<", N(isotope)="<<N<<", MeV="<<MeV<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"*Warning*G4QCohChEx::PostStepDoIt: Isotope with Z="<<Z<<", 0>N="<<N<<G4endl;
-    return 0;
-  }
-  nOfNeutrons=N;                           // Remember it for the energy-momentum check
-#ifdef debug
-  G4cout<<"G4QCohChargeExchange::PostStepDoIt: N="<<N<<" for element with Z="<<Z<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"*Warning*G4QCoherentChargeExchange::PostStepDoIt:Element with N="<<N<< G4endl;
-    return 0;
-  }
-  aParticleChange.Initialize(track);
-#ifdef debug
-  G4cout<<"G4QCoherentChargeExchange::PostStepDoIt: track is initialized"<<G4endl;
-#endif
-  G4double      weight    = track.GetWeight();
-  G4double      localtime = track.GetGlobalTime();
-  G4ThreeVector position  = track.GetPosition();
-#ifdef debug
-  G4cout<<"G4QCoherentChargeExchange::PostStepDoIt: before Touchable extraction"<<G4endl;
-#endif
-  G4TouchableHandle trTouchable = track.GetTouchableHandle();
-#ifdef debug
-  G4cout<<"G4QCoherentChargeExchange::PostStepDoIt: Touchable is extracted"<<G4endl;
-#endif
-  //
-  G4int targPDG=90000000+Z*1000+N;         // CHIPS PDG Code of the target nucleus
-  if(projPDG==2212) targPDG+=999;          // convert to final nucleus code
-  else if(projPDG==2112) targPDG-=999;
-  G4QPDGCode targQPDG(targPDG);            // @@ use G4Ion and get rid of CHIPS World
-  G4double tM=targQPDG.GetMass();          // CHIPS final nucleus mass in MeV
-  G4double kinEnergy= projHadron->GetKineticEnergy()*MeV; // Kin energy in MeV (Is *MeV n?)
-  G4ParticleMomentum dir = projHadron->GetMomentumDirection();// It is a unit three-vector
-  G4LorentzVector tot4M=proj4M+G4LorentzVector(0.,0.,0.,tM); // Total 4-mom of the reaction
-#ifdef debug
-  G4cout<<"G4QCohChrgEx::PostStepDoIt: tM="<<tM<<", p4M="<<proj4M<<", t4M="<<tot4M<<G4endl;
-#endif
-  EnMomConservation=tot4M;                 // Total 4-mom of reaction for E/M conservation
-  // @@ Probably this is not necessary any more
-#ifdef debug
-  G4cout<<"G4QCCX::PSDI:false, P="<<Momentum<<",Z="<<Z<<",N="<<N<<",PDG="<<projPDG<<G4endl;
-#endif
-  G4double xSec=CalculateXSt(false, true, Momentum, Z, N, projPDG); // Recalc. CrossSection
-#ifdef debug
-  G4cout<<"G4QCoChEx::PSDI:PDG="<<projPDG<<",P="<<Momentum<<",CS="<<xSec/millibarn<<G4endl;
-#endif
-#ifdef nandebug
-  if(xSec>0. || xSec<0. || xSec==0);
-  else  G4cout<<"*Warning*G4QCohChargeExchange::PSDI: xSec="<<xSec/millibarn<<G4endl;
-#endif
-  // @@ check a possibility to separate p, n, or alpha (!)
-  if(xSec <= 0.) // The cross-section iz 0 -> Do Nothing
-  {
-#ifdef pdebug
-    G4cerr<<"*Warning*G4QCoherentChargeExchange::PSDoIt:*Zero cross-section* PDG="<<projPDG
-          <<",tPDG="<<targPDG<<",P="<<Momentum<<G4endl;
-#endif
-    //Do Nothing Action insead of the reaction
-    aParticleChange.ProposeEnergy(kinEnergy);
-    aParticleChange.ProposeLocalEnergyDeposit(0.);
-    aParticleChange.ProposeMomentumDirection(dir) ;
-    return G4VDiscreteProcess::PostStepDoIt(track,step);
-  }
-  G4double mint=CalculateXSt(false, false, Momentum, Z, N, projPDG);// randomize t in MeV^2
-#ifdef pdebug
-  G4cout<<"G4QCohChEx::PoStDoIt:pPDG="<<projPDG<<",tPDG="<<targPDG<<",P="<<Momentum<<",CS="
-        <<xSec<<",-t="<<mint<<G4endl;
-#endif
-#ifdef nandebug
-  if(mint>-.0000001);
-  else  G4cout<<"*Warning*G4QCoherentChargeExchange::PostStDoIt:-t="<<mint<<G4endl;
-#endif
-  G4double maxt=CalculateXSt(true, false, Momentum, Z, N, projPDG);
-  if(maxt<=0.) maxt=1.e-27;
-  G4double cost=1.-mint/maxt; // cos(theta) in CMS (@@ we neglect mass diff for ChEx)
-  // 
-#ifdef ppdebug
-  G4cout<<"G4QCoherentChargeExchange::PoStDoIt:t="<<mint<<",dpcm2="<<maxt
-        <<",Ek="<<kinEnergy<<",tM="<<tM<<",pM="<<pM<<",cost="<<cost<<G4endl;
-#endif
-  if(cost>1. || cost<-1. || !(cost>-1. || cost<1.))
-  {
-    if(cost>1.000001 || cost<-1.000001 || !(cost>-1. || cost<1.))
-    {
-      G4double tM2=tM*tM;                         // Squared target mass
-      G4double pEn=pM+kinEnergy;                  // tot projectile Energy in MeV
-      G4double sM=(tM+tM)*pEn+tM2+pM2;            // Mondelstam s
-      G4double twop2cm=(tM2+tM2)*(pEn*pEn-pM2)/sM;// Max_t/2 (2*p^2_cm)
-      G4cout<<"*Warning*G4QCohChEx::PostStepDoIt:cos="<<cost<<",t="<<mint<<",T="<<kinEnergy
-            <<",tM="<<tM<<",tmax="<<2*kinEnergy*tM<<",p="<<projPDG<<",t="<<targPDG<<G4endl;
-      G4cout<<"..G4QCohChEx::PoStDoI: dpcm2="<<twop2cm<<"="<<maxt<<G4endl;
-    }
-    if     (cost>1.)  cost=1.;
-    else if(cost<-1.) cost=-1.;
-  }
-  G4LorentzVector reco4M=G4LorentzVector(0.,0.,0.,tM);      // 4mom of the recoil target
-  G4LorentzVector scat4M=G4LorentzVector(0.,0.,0.,pM);      // 4mom of the recoil target
-  G4LorentzVector dir4M=tot4M-G4LorentzVector(0.,0.,0.,(tot4M.e()-tM-pM)*.01);
-  if(!G4QHadron(tot4M).RelDecayIn2(scat4M, reco4M, dir4M, cost, cost))
-  {
-    G4cerr<<"G4QCohChEx::PSDI:t4M="<<tot4M<<",pM="<<pM<<",tM="<<tM<<",cost="<<cost<<G4endl;
-    //G4Exception("G4QCoherentChargeExchange::PostStepDoIt:","009",FatalException,"Decay");
-  }
-#ifdef debug
-  G4cout<<"G4QCohChEx::PoStDoIt:s4M="<<scat4M<<"+r4M="<<reco4M<<"="<<scat4M+reco4M<<G4endl;
-  G4cout<<"G4QCohChEx::PoStDoIt: scatE="<<scat4M.e()-pM<<", recoE="<<reco4M.e()-tM<<",d4M="
-        <<tot4M-scat4M-reco4M<<G4endl;
-#endif
-  // Kill scattered hadron
-  aParticleChange.ProposeTrackStatus(fStopAndKill);
-  // Definition of the scattered nucleon
-  G4DynamicParticle* theSec = new G4DynamicParticle; // A secondary for the recoil hadron 
-  G4ParticleDefinition* theDefinition=G4Proton::Proton();
-  if(projPDG==2212) theDefinition=G4Neutron::Neutron();
-  theSec->SetDefinition(theDefinition);
-  EnMomConservation-=scat4M;
-  theSec->Set4Momentum(scat4M);
-  G4Track* aNewTrack = new G4Track(theSec, localtime, position );
-  aNewTrack->SetWeight(weight);                                   //    weighted
-  aNewTrack->SetTouchableHandle(trTouchable);
-  aParticleChange.AddSecondary( aNewTrack );
-  // Filling the recoil nucleus
-  theSec = new G4DynamicParticle; // A secondary for the recoil hadron 
-  G4int aA = Z+N;
-#ifdef pdebug
-  G4cout<<"G4QCoherentChargeExchange::PostStepDoIt: Ion Z="<<Z<<", A="<<aA<<G4endl;
-#endif
-  theDefinition=G4ParticleTable::GetParticleTable()->FindIon(Z,aA,0,Z);
-  if(!theDefinition)G4cout<<"*Warning*G4QCohChEx::PostStepDoIt:drop PDG="<<targPDG<<G4endl;
-#ifdef pdebug
-  G4cout<<"G4QCohChEx::PostStepDoIt:RecoilName="<<theDefinition->GetParticleName()<<G4endl;
-#endif
-  theSec->SetDefinition(theDefinition);
-  EnMomConservation-=reco4M;
-#ifdef tdebug
-  G4cout<<"G4QCohChEx::PostSDoIt:"<<targPDG<<reco4M<<reco4M.m()<<EnMomConservation<<G4endl;
-#endif
-  theSec->Set4Momentum(reco4M);
-#ifdef debug
-  G4ThreeVector curD=theSec->GetMomentumDirection();
-  G4double curM=theSec->GetMass();
-  G4double curE=theSec->GetKineticEnergy()+curM;
-  G4cout<<"G4QCohChEx::PostStpDoIt:p="<<curD<<curD.mag()<<",e="<<curE<<",m="<<curM<<G4endl;
-#endif
-  // Make a recoil nucleus
-  aNewTrack = new G4Track(theSec, localtime, position );
-  aNewTrack->SetWeight(weight);                                   //    weighted
-  aNewTrack->SetTouchableHandle(trTouchable);
-  aParticleChange.AddSecondary( aNewTrack );
-#ifdef debug
-    G4cout<<"G4QCoherentChargeExchange::PostStepDoIt:*** PostStepDoIt is done ***"<<G4endl;
-#endif
-  return G4VDiscreteProcess::PostStepDoIt(track, step);
-}
-
-G4double G4QCoherentChargeExchange::CalculateXSt(G4bool oxs, G4bool xst, G4double p,
-                                                 G4int Z, G4int N, G4int pPDG) 
-{
-  static G4bool init=false;
-  static G4bool first=true;
-  static G4VQCrossSection* CSmanager;
-  G4QuasiFreeRatios* qfMan=G4QuasiFreeRatios::GetPointer();
-  if(first)                              // Connection with a singletone
-  {
-    CSmanager=G4QElasticCrossSection::GetPointer();
-    first=false;
-  }
-  G4double res=0.;
-  if(oxs && xst)                         // Only the Cross-Section can be returened
-  {
-    res=CSmanager->GetCrossSection(true, p, Z, N, pPDG); // XS for isotope
-    res*=qfMan->ChExElCoef(p*MeV, Z, N, pPDG);
-  }
-  else if(!oxs && xst)                   // Calculate Cross-Section & prepare differential
-  {
-    res=CSmanager->GetCrossSection(false, p, Z, N, pPDG);// XS for isotope + init t-distr.
-    res*=qfMan->ChExElCoef(p*MeV, Z, N, pPDG);
-    // The XS for the nucleus must be calculated the last
-    init=true;
-  }
-  else if(init)                          // Return t-value for scattering (=G4QElastic)
-  {
-    if(oxs) res=CSmanager->GetHMaxT();   // Calculate the max_t value
-    else res=CSmanager->GetExchangeT(Z, N, pPDG); // fanctionally randomized -t in MeV^2
-  }
-  else G4cout<<"*Warning*G4QCohChrgExchange::CalculateXSt: NotInitiatedScattering"<<G4endl;
-  return res;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCollision.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCollision.cc	(revision 1197)
+++ 	(revision )
@@ -1,1822 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QCollision.cc,v 1.32 2009/04/17 15:22:31 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QCollision class -----------------
-//                 by Mikhail Kossov, December 2003.
-// G4QCollision class of the CHIPS Simulation Branch in GEANT4
-// ---------------------------------------------------------------
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ****************************************************************************************
-// Short description: This is a universal class for the incoherent (inelastic)
-// nuclear interactions in the CHIPS model.
-// ---------------------------------------------------------------------------
-//#define debug
-//#define pdebug
-//#define ldebug
-//#define ppdebug
-//#define qedebug
-
-#include "G4QCollision.hh"
-
-// Initialization of static vectors
-std::vector<G4int> G4QCollision::ElementZ;            // Z of the element(i) in theLastCalc
-std::vector<G4double> G4QCollision::ElProbInMat;      // SumProbabilityElements in Material
-std::vector<std::vector<G4int>*> G4QCollision::ElIsoN;    // N of isotope(j) of Element(i)
-std::vector<std::vector<G4double>*>G4QCollision::IsoProbInEl;//SumProbabIsotopes inElementI
-
-G4QCollision::G4QCollision(const G4String& processName): 
- G4VDiscreteProcess(processName, fHadronic)
-{
-#ifdef debug
-  G4cout<<"G4QCollision::Constructor is called"<<G4endl;
-#endif
-  if (verboseLevel>0) G4cout << GetProcessName() << " process is created "<< G4endl;
-  SetProcessSubType(fHadronInelastic);
-  //G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPSWorld (234 part.max)
-  G4QNucleus::SetParameters(freeNuc,freeDib,clustProb,mediRatio); // Clusterization param's
-  G4Quasmon::SetParameters(Temperature,SSin2Gluons,EtaEtaprime);  // Hadronic parameters
-  G4QEnvironment::SetParameters(SolidAngle); // SolAngle of pbar-A secondary mesons capture
-  //@@ Initialize here the G4QuasmonString parameters
-}
-
-G4bool   G4QCollision::manualFlag=false; // If false then standard parameters are used
-G4double G4QCollision::Temperature=180.; // Critical Temperature (sensitive at High En)
-G4double G4QCollision::SSin2Gluons=0.3;  // Supression of s-quarks (in respect to u&d)
-G4double G4QCollision::EtaEtaprime=0.3;  // Supression of eta mesons (gg->qq/3g->qq)
-G4double G4QCollision::freeNuc=0.5;      // Percentage of free nucleons on the surface
-G4double G4QCollision::freeDib=0.05;     // Percentage of free diBaryons on the surface
-G4double G4QCollision::clustProb=5.;     // Nuclear clusterization parameter
-G4double G4QCollision::mediRatio=10.;    // medium/vacuum hadronization ratio
-G4int    G4QCollision::nPartCWorld=152;  // The#of particles initialized in CHIPS World
-G4double G4QCollision::SolidAngle=0.5;   // Part of Solid Angle to capture (@@A-dep.)
-G4bool   G4QCollision::EnergyFlux=false; // Flag for Energy Flux use (not MultyQuasmon)
-G4double G4QCollision::PiPrThresh=141.4; // Pion Production Threshold for gammas
-G4double G4QCollision::M2ShiftVir=20000.;// Shift for M2=-Q2=m_pi^2 of the virtualGamma
-G4double G4QCollision::DiNuclMass=1880.; // DoubleNucleon Mass for VirtualNormalization
-G4double G4QCollision::photNucBias=1.;   // BiasingParameter for photo(e,mu,tau)Nuclear
-G4double G4QCollision::weakNucBias=1.;   // BiasingParameter for ChargedCurrents(nu,mu) 
-
-void G4QCollision::SetManual()   {manualFlag=true;}
-void G4QCollision::SetStandard() {manualFlag=false;}
-
-// Fill the private parameters
-void G4QCollision::SetParameters(G4double temper, G4double ssin2g, G4double etaetap,
-                                     G4double fN, G4double fD, G4double cP, G4double mR,
-                                     G4int nParCW, G4double solAn, G4bool efFlag,
-                                     G4double piThresh, G4double mpisq, G4double dinum)
-{//  =============================================================================
-  Temperature=temper;
-  SSin2Gluons=ssin2g;
-  EtaEtaprime=etaetap;
-  freeNuc=fN;
-  freeDib=fD;
-  clustProb=cP;
-  mediRatio=mR;
-  nPartCWorld = nParCW;
-  EnergyFlux=efFlag;
-  SolidAngle=solAn;
-  PiPrThresh=piThresh;
-  M2ShiftVir=mpisq;
-  DiNuclMass=dinum;
-  G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World with 234 particles
-  G4QNucleus::SetParameters(freeNuc,freeDib,clustProb,mediRatio); // Clusterization param's
-  G4Quasmon::SetParameters(Temperature,SSin2Gluons,EtaEtaprime);  // Hadronic parameters
-  G4QEnvironment::SetParameters(SolidAngle); // SolAngle of pbar-A secondary mesons capture
-}
-
-void G4QCollision::SetPhotNucBias(G4double phnB) {photNucBias=phnB;}
-void G4QCollision::SetWeakNucBias(G4double ccnB) {weakNucBias=ccnB;}
-
-// Destructor
-
-G4QCollision::~G4QCollision() {}
-
-
-G4LorentzVector G4QCollision::GetEnegryMomentumConservation()
-{
-  return EnMomConservation;
-}
-
-G4int G4QCollision::GetNumberOfNeutronsInTarget()
-{
-  return nOfNeutrons;
-}
-
-// output of the function must be in units of length! L=1/sig_V,sig_V=SUM(n(j,i)*sig(j,i)),
-// where n(i,j) is a number of nuclei of the isotop j of the element i in V=1(lengtUnit^3)
-// ********** All CHIPS cross sections are calculated in the surface units ************
-G4double G4QCollision::GetMeanFreePath(const G4Track& aTrack,G4double,G4ForceCondition* Fc)
-{
-#ifdef debug
-  G4cout<<"G4QCollision::GetMeanFreePath: Called Fc="<<*Fc<<G4endl;
-#endif
-  *Fc = NotForced;
-#ifdef debug
-  G4cout<<"G4QCollision::GetMeanFreePath: Before GetDynPart"<<G4endl;
-#endif
-  const G4DynamicParticle* incidentParticle = aTrack.GetDynamicParticle();
-#ifdef debug
-  G4cout<<"G4QCollision::GetMeanFreePath: Before GetDef"<<G4endl;
-#endif
-  G4ParticleDefinition* incidentParticleDefinition=incidentParticle->GetDefinition();
-  if( !IsApplicable(*incidentParticleDefinition))
-    G4cout<<"-W-G4QCollision::GetMeanFreePath called for not implemented particle"<<G4endl;
-  // Calculate the mean Cross Section for the set of Elements(*Isotopes) in the Material
-  G4double Momentum = incidentParticle->GetTotalMomentum(); // 3-momentum of the Particle
-#ifdef debug
-  G4cout<<"G4QCollis::GetMeanFreePath: BeforeGetMaterial"<<G4endl;
-#endif
-  const G4Material* material = aTrack.GetMaterial();        // Get the current material
-  const G4double* NOfNucPerVolume = material->GetVecNbOfAtomsPerVolume();
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QCollision::GetMeanFreePath:"<<nE<<" Elem's in theMaterial"<<G4endl;
-#endif
-  G4bool leptoNuc=false;       // By default the reaction is not lepto-nuclear
-  G4VQCrossSection* CSmanager=0;
-  G4VQCrossSection* CSmanager2=0;
-  G4int pPDG=0;
-  if(incidentParticleDefinition == G4Proton::Proton())
-  {
-    CSmanager=G4QProtonNuclearCrossSection::GetPointer();
-    pPDG=2212;
-  }
-  else if(incidentParticleDefinition == G4Gamma::Gamma())
-  {
-    CSmanager=G4QPhotonNuclearCrossSection::GetPointer();
-    pPDG=22;
-  }
-  else if(incidentParticleDefinition == G4Electron::Electron() ||
-          incidentParticleDefinition == G4Positron::Positron())
-  {
-    CSmanager=G4QElectronNuclearCrossSection::GetPointer();
-    leptoNuc=true;
-    pPDG=11;
-  }
-  else if(incidentParticleDefinition == G4MuonPlus::MuonPlus() ||
-          incidentParticleDefinition == G4MuonMinus::MuonMinus())
-  {
-    CSmanager=G4QMuonNuclearCrossSection::GetPointer();
-    leptoNuc=true;
-    pPDG=13;
-  }
-  else if(incidentParticleDefinition == G4TauPlus::TauPlus() ||
-          incidentParticleDefinition == G4TauMinus::TauMinus())
-  {
-    CSmanager=G4QTauNuclearCrossSection::GetPointer();
-    leptoNuc=true;
-    pPDG=15;
-  }
-  else if(incidentParticleDefinition == G4NeutrinoMu::NeutrinoMu() )
-  {
-    CSmanager=G4QNuMuNuclearCrossSection::GetPointer();
-    CSmanager2=G4QNuNuNuclearCrossSection::GetPointer();
-    leptoNuc=true;
-    pPDG=14;
-  }
-  else if(incidentParticleDefinition == G4AntiNeutrinoMu::AntiNeutrinoMu() )
-  {
-    CSmanager=G4QANuMuNuclearCrossSection::GetPointer();
-    CSmanager2=G4QANuANuNuclearCrossSection::GetPointer();
-    leptoNuc=true;
-    pPDG=-14;
-  }
-  else if(incidentParticleDefinition == G4NeutrinoE::NeutrinoE() )
-  {
-    CSmanager=G4QNuENuclearCrossSection::GetPointer();
-    CSmanager2=G4QNuNuNuclearCrossSection::GetPointer();
-    leptoNuc=true;
-    pPDG=12;
-  }
-  else if(incidentParticleDefinition == G4AntiNeutrinoE::AntiNeutrinoE() )
-  {
-    CSmanager=G4QANuENuclearCrossSection::GetPointer();
-    CSmanager2=G4QANuANuNuclearCrossSection::GetPointer();
-    leptoNuc=true;
-    pPDG=-12;
-  }
-  else G4cout<<"G4QCollision::GetMeanFreePath:Particle isn't implemented in CHIPS"<<G4endl;
-  
-  G4QIsotope* Isotopes = G4QIsotope::Get(); // Pointer to the G4QIsotopes singleton
-  G4double sigma=0.;                        // Sums over elements for the material
-  G4int IPIE=IsoProbInEl.size();            // How many old elements?
-  if(IPIE) for(G4int ip=0; ip<IPIE; ++ip)   // Clean up the SumProb's of Isotopes (SPI)
-  {
-    std::vector<G4double>* SPI=IsoProbInEl[ip]; // Pointer to the SPI vector
-    SPI->clear();
-    delete SPI;
-    std::vector<G4int>* IsN=ElIsoN[ip];     // Pointer to the N vector
-    IsN->clear();
-    delete IsN;
-  }
-  ElProbInMat.clear();                      // Clean up the SumProb's of Elements (SPE)
-  ElementZ.clear();                         // Clear the body vector for Z of Elements
-  IsoProbInEl.clear();                      // Clear the body vector for SPI
-  ElIsoN.clear();                           // Clear the body vector for N of Isotopes
-  for(G4int i=0; i<nE; ++i)
-  {
-    G4Element* pElement=(*theElementVector)[i]; // Pointer to the current element
-    G4int Z = static_cast<G4int>(pElement->GetZ()); // Z of the Element
-    ElementZ.push_back(Z);                  // Remember Z of the Element
-    G4int isoSize=0;                        // The default for the isoVectorLength is 0
-    G4int indEl=0;                          // Index of non-trivial element or 0(default)
-    G4IsotopeVector* isoVector=pElement->GetIsotopeVector(); // Get the predefined IsoVect
-    if(isoVector) isoSize=isoVector->size();// Get size of the existing isotopeVector
-#ifdef debug
-    G4cout<<"G4QCollision::GetMeanFreePath: isovectorLength="<<isoSize<<G4endl; // Result
-#endif
-    if(isoSize)                             // The Element has non-trivial abundance set
-    {
-      indEl=pElement->GetIndex()+1;         // Index of the non-trivial element
-      if(!Isotopes->IsDefined(Z,indEl))     // This index is not defined for this Z: define
-      {
-        std::vector<std::pair<G4int,G4double>*>* newAbund =
-                                               new std::vector<std::pair<G4int,G4double>*>;
-        G4double* abuVector=pElement->GetRelativeAbundanceVector();
-        for(G4int j=0; j<isoSize; j++)      // Calculation of abundance vector for isotopes
-        {
-          G4int N=pElement->GetIsotope(j)->GetN()-Z; // N means A=N+Z !
-          if(pElement->GetIsotope(j)->GetZ()!=Z)G4cerr<<"G4QCollision::GetMeanFreePath"
-                                 <<": Z="<<pElement->GetIsotope(j)->GetZ()<<"#"<<Z<<G4endl;
-          G4double abund=abuVector[j];
-          std::pair<G4int,G4double>* pr= new std::pair<G4int,G4double>(N,abund);
-#ifdef debug
-          G4cout<<"G4QCollision::GetMeanFreePath: p#="<<j<<",N="<<N<<",ab="<<abund<<G4endl;
-#endif
-          newAbund->push_back(pr);
-        }
-#ifdef debug
-        G4cout<<"G4QCollision::GetMeanFreePath: pairVectLength="<<newAbund->size()<<G4endl;
-#endif
-        indEl=G4QIsotope::Get()->InitElement(Z,indEl,newAbund); // definition of the newInd
-        for(G4int k=0; k<isoSize; k++) delete (*newAbund)[k];   // Cleaning temporary
-        delete newAbund; // Was "new" in the beginning of the name space
-      }
-    }
-    std::vector<std::pair<G4int,G4double>*>* cs= Isotopes->GetCSVector(Z,indEl);//CSPointer
-    std::vector<G4double>* SPI = new std::vector<G4double>; // Pointer to the SPI vector
-    IsoProbInEl.push_back(SPI);
-    std::vector<G4int>* IsN = new std::vector<G4int>; // Pointer to the N vector
-    ElIsoN.push_back(IsN);
-    G4int nIs=cs->size();                   // A#Of Isotopes in the Element
-    G4double susi=0.;                       // sum of CS over isotopes
-    if(nIs) for(G4int j=0; j<nIs; j++)      // Calculate CS for eachIsotope of El
-    {
-      std::pair<G4int,G4double>* curIs=(*cs)[j]; // A pointer, which is used twice
-      G4int N=curIs->first;                 // #of Neuterons in the isotope j of El i
-      IsN->push_back(N);                    // Remember Min N for the Element
-      G4double CSI=CSmanager->GetCrossSection(true,Momentum,Z,N,pPDG);//CS(j,i) for isotope
-      if(CSmanager2)CSI+=CSmanager2->GetCrossSection(true,Momentum,Z,N,pPDG);//CS(j,i)nu,nu
-#ifdef debug
-      G4cout<<"GQC::GMF:X="<<CSI<<",M="<<Momentum<<",Z="<<Z<<",N="<<N<<",P="<<pPDG<<G4endl;
-#endif
-      curIs->second = CSI;
-      susi+=CSI;                            // Make a sum per isotopes
-      SPI->push_back(susi);                 // Remember summed cross-section
-    } // End of temporary initialization of the cross sections in the G4QIsotope singeltone
-    sigma+=Isotopes->GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i];//SUM(MeanCS*NOfNperV)
-    ElProbInMat.push_back(sigma);
-  } // End of LOOP over Elements
-#ifdef debug
-  G4cout<<"G4QCol::GetMeanFrPa: S="<<sigma<<",e="<<photNucBias<<",w="<<weakNucBias<<G4endl;
-#endif
-  // Check that cross section is not zero and return the mean free path
-  if(photNucBias!=1.) if(incidentParticleDefinition == G4Gamma::Gamma()         ||
-                         incidentParticleDefinition == G4MuonPlus::MuonPlus()   ||
-                         incidentParticleDefinition == G4MuonMinus::MuonMinus() ||
-                         incidentParticleDefinition == G4Electron::Electron()   ||
-                         incidentParticleDefinition == G4Positron::Positron()   ||  
-                         incidentParticleDefinition == G4TauMinus::TauMinus()   ||
-                         incidentParticleDefinition == G4TauPlus::TauPlus()       )
-                                                                        sigma*=photNucBias;
-  if(weakNucBias!=1.) if(incidentParticleDefinition==G4NeutrinoE::NeutrinoE()            ||
-                         incidentParticleDefinition==G4AntiNeutrinoE::AntiNeutrinoE()    ||
-                         incidentParticleDefinition==G4NeutrinoTau::NeutrinoTau()        ||
-                         incidentParticleDefinition==G4AntiNeutrinoTau::AntiNeutrinoTau()||
-                         incidentParticleDefinition==G4NeutrinoMu::NeutrinoMu()          ||
-                         incidentParticleDefinition==G4AntiNeutrinoMu::AntiNeutrinoMu()   )
-                                                                        sigma*=weakNucBias;
-  if(sigma > 0.) return 1./sigma;                 // Mean path [distance] 
-  return DBL_MAX;
-}
-
-
-G4bool G4QCollision::IsApplicable(const G4ParticleDefinition& particle) 
-{
-  if      (particle == *(      G4MuonPlus::MuonPlus()      )) return true;
-  else if (particle == *(     G4MuonMinus::MuonMinus()     )) return true; 
-  else if (particle == *(       G4TauPlus::TauPlus()       )) return true;
-  else if (particle == *(      G4TauMinus::TauMinus()      )) return true;
-  else if (particle == *(      G4Electron::Electron()      )) return true;
-  else if (particle == *(      G4Positron::Positron()      )) return true;
-  else if (particle == *(         G4Gamma::Gamma()         )) return true;
-  else if (particle == *(        G4Proton::Proton()        )) return true;
-  else if (particle == *( G4AntiNeutrinoE::AntiNeutrinoE() )) return true;
-  else if (particle == *(     G4NeutrinoE::NeutrinoE()     )) return true;
-  else if (particle == *(G4AntiNeutrinoMu::AntiNeutrinoMu())) return true;
-  else if (particle == *(    G4NeutrinoMu::NeutrinoMu()    )) return true;
-  //else if (particle == *(       G4Neutron::Neutron()       )) return true;
-  //else if (particle == *(     G4PionMinus::PionMinus()     )) return true;
-  //else if (particle == *(      G4PionPlus::PionPlus()      )) return true;
-  //else if (particle == *(      G4KaonPlus::KaonPlus()      )) return true;
-  //else if (particle == *(     G4KaonMinus::KaonMinus()     )) return true;
-  //else if (particle == *(  G4KaonZeroLong::KaonZeroLong()  )) return true;
-  //else if (particle == *( G4KaonZeroShort::KaonZeroShort() )) return true;
-  //else if (particle == *(        G4Lambda::Lambda()        )) return true;
-  //else if (particle == *(     G4SigmaPlus::SigmaPlus()     )) return true;
-  //else if (particle == *(    G4SigmaMinus::SigmaMinus()    )) return true;
-  //else if (particle == *(     G4SigmaZero::SigmaZero()     )) return true;
-  //else if (particle == *(       G4XiMinus::XiMinus()       )) return true;
-  //else if (particle == *(        G4XiZero::XiZero()        )) return true;
-  //else if (particle == *(    G4OmegaMinus::OmegaMinus()    )) return true;
-  //else if (particle == *(   G4AntiNeutron::AntiNeutron()   )) return true;
-  //else if (particle == *(    G4AntiProton::AntiProton()    )) return true;
-  //else if (particle == *(G4AntiNeutrinoTau::AntiNeutrinoTau())) return true;
-  //else if (particle == *(    G4NeutrinoTau::NeutrinoTau()    )) return true;
-#ifdef debug
-  G4cout<<"***G4QCollision::IsApplicable: PDG="<<particle.GetPDGEncoding()<<G4endl;
-#endif
-  return false;
-}
-
-G4VParticleChange* G4QCollision::PostStepDoIt(const G4Track& track, const G4Step& step)
-{
-  static const G4double third = 1./3.;
-  static const G4double me=G4Electron::Electron()->GetPDGMass();   // electron mass
-  static const G4double me2=me*me;                                 // squared electron mass
-  static const G4double mu=G4MuonMinus::MuonMinus()->GetPDGMass(); // muon mass
-  static const G4double mu2=mu*mu;                                 // squared muon mass
-  static const G4double mt=G4TauMinus::TauMinus()->GetPDGMass();   // tau mass
-  static const G4double mt2=mt*mt;                                 // squared tau mass
-  //static const G4double dpi=M_PI+M_PI;   // 2*pi (for Phi distr.) ***changed to twopi***
-  static const G4double mNeut= G4QPDGCode(2112).GetMass();
-  static const G4double mNeut2= mNeut*mNeut;
-  static const G4double mProt= G4QPDGCode(2212).GetMass();
-  static const G4double mProt2= mProt*mProt;
-  static const G4double dM=mProt+mNeut;                            // doubled nucleon mass
-  static const G4double hdM=dM/2.;                                 // M of the "nucleon"
-  static const G4double hdM2=hdM*hdM;                              // M2 of the "nucleon"
-  static const G4double mPi0 = G4QPDGCode(111).GetMass();
-  static const G4double mPi0s= mPi0*mPi0;
-  static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0);// Mass of deuteron
-  //static const G4double mDeut2=mDeut*mDeut;                      // SquaredMassOfDeuteron
-  static const G4double mTrit= G4QPDGCode(2112).GetNuclMass(1,2,0);// Mass of tritium
-  static const G4double mHel3= G4QPDGCode(2112).GetNuclMass(2,1,0);// Mass of Helium3
-  static const G4double mAlph= G4QPDGCode(2112).GetNuclMass(2,2,0);// Mass of alpha
-  static const G4double mPi  = G4QPDGCode(211).GetMass();
-  static const G4double tmPi = mPi+mPi;     // Doubled mass of the charged pion
-  static const G4double stmPi= tmPi*tmPi;   // Squared Doubled mass of the charged pion
-  static const G4double mPPi = mPi+mProt;   // Delta threshold
-  static const G4double mPPi2= mPPi*mPPi; // Delta low threshold for W2
-  //static const G4double mDel2= 1400*1400; // Delta up threshold for W2 (in MeV^2)
-  // Static definitions for electrons (nu,e) -----------------------------------------
-  static const G4double meN = mNeut+me;
-  static const G4double meN2= meN*meN;
-  static const G4double fmeN= 4*mNeut2*me2;
-  static const G4double mesN= mNeut2+me2;
-  static const G4double meP = mProt+me;
-  static const G4double meP2= meP*meP;
-  static const G4double fmeP= 4*mProt2*me2;
-  static const G4double mesP= mProt2+me2;
-  static const G4double medM= me2/dM;       // for x limit
-  static const G4double meD = mPPi+me;      // Multiperipheral threshold
-  static const G4double meD2= meD*meD;
-  // Static definitions for muons (nu,mu) -----------------------------------------
-  static const G4double muN = mNeut+mu;
-  static const G4double muN2= muN*muN;
-  static const G4double fmuN= 4*mNeut2*mu2;
-  static const G4double musN= mNeut2+mu2;
-  static const G4double muP = mProt+mu;
-  static const G4double muP2= muP*muP;      // +
-  static const G4double fmuP= 4*mProt2*mu2; // +
-  static const G4double musP= mProt2+mu2;
-  static const G4double mudM= mu2/dM;       // for x limit
-  static const G4double muD = mPPi+mu;      // Multiperipheral threshold
-  static const G4double muD2= muD*muD;
-  // Static definitions for muons (nu,nu) -----------------------------------------
-  //static const G4double nuN = mNeut;
-  //static const G4double nuN2= mNeut2;
-  //static const G4double fnuN= 0.;
-  //static const G4double nusN= mNeut2;
-  //static const G4double nuP = mProt;
-  //static const G4double nuP2= mProt2;
-  //static const G4double fnuP= 0.;
-  //static const G4double nusP= mProt2;
-  //static const G4double nudM= 0.;           // for x limit
-  //static const G4double nuD = mPPi;         // Multiperipheral threshold
-  //static const G4double nuD2= mPPi2;
-  //-------------------------------------------------------------------------------------
-  static G4bool CWinit = true;              // CHIPS Warld needs to be initted
-  if(CWinit)
-  {
-    CWinit=false;
-    G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part.max)
-  }
-  //-------------------------------------------------------------------------------------
-  const G4DynamicParticle* projHadron = track.GetDynamicParticle();
-  const G4ParticleDefinition* particle=projHadron->GetDefinition();
-#ifdef debug
-  G4cout<<"G4QCollision::PostStepDoIt: Before the GetMeanFreePath is called"<<G4endl;
-#endif
-  G4ForceCondition cond=NotForced;
-  GetMeanFreePath(track, 1., &cond);
-#ifdef debug
-  G4cout<<"G4QCollision::PostStepDoIt: After the GetMeanFreePath is called"<<G4endl;
-#endif
-  G4bool scat=false;                                  // No CHEX in proj scattering
-  G4int  scatPDG=0;                                   // Must be filled if true (CHEX)
-  G4LorentzVector proj4M=projHadron->Get4Momentum();  // 4-momentum of the projectile (IU?)
-  G4LorentzVector scat4M=proj4M;                      // Must be filled if true
-  G4double momentum = projHadron->GetTotalMomentum(); // 3-momentum of the Particle
-  G4double Momentum=proj4M.rho();
-  if(std::fabs(Momentum-momentum)>.001)
-    G4cerr<<"*G4QCollision::PostStepDoIt: P="<<Momentum<<"#"<<momentum<<G4endl;
-#ifdef debug
-  G4double mp=proj4M.m();
-  G4cout<<"-->G4QCollis::PostStDoIt:called,P="<<Momentum<<"="<<momentum<<",m="<<mp<<G4endl;
-#endif
-  if (!IsApplicable(*particle))  // Check applicability
-  {
-    G4cerr<<"G4QCollision::PostStepDoIt:Only gam,e+,e-,mu+,mu-,t+,t-,p are implemented."
-          <<G4endl;
-    return 0;
-  }
-  const G4Material* material = track.GetMaterial();      // Get the current material
-  G4int Z=0;
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QCollision::PostStepDoIt: "<<nE<<" elements in the material."<<G4endl;
-#endif
-  G4int projPDG=0;                           // PDG Code prototype for the captured hadron
-  // Not all these particles are implemented yet (see Is Applicable)
-  if      (particle ==        G4MuonPlus::MuonPlus()       ) projPDG=  -13;
-  else if (particle ==       G4MuonMinus::MuonMinus()      ) projPDG=   13;
-  else if (particle ==      G4NeutrinoMu::NeutrinoMu()     ) projPDG=   14;
-  else if (particle ==  G4AntiNeutrinoMu::AntiNeutrinoMu() ) projPDG=  -14;
-  else if (particle ==        G4Electron::Electron()       ) projPDG=   11;
-  else if (particle ==        G4Positron::Positron()       ) projPDG=  -11;
-  else if (particle ==       G4NeutrinoE::NeutrinoE()      ) projPDG=   12;
-  else if (particle ==   G4AntiNeutrinoE::AntiNeutrinoE()  ) projPDG=  -12;
-  else if (particle ==           G4Gamma::Gamma()          ) projPDG=   22;
-  else if (particle ==          G4Proton::Proton()         ) projPDG= 2212;
-  else if (particle ==         G4Neutron::Neutron()        ) projPDG= 2112;
-  else if (particle ==       G4PionMinus::PionMinus()      ) projPDG= -211;
-  else if (particle ==        G4PionPlus::PionPlus()       ) projPDG=  211;
-  else if (particle ==        G4KaonPlus::KaonPlus()       ) projPDG= 2112;
-  else if (particle ==       G4KaonMinus::KaonMinus()      ) projPDG= -321;
-  else if (particle ==    G4KaonZeroLong::KaonZeroLong()   ) projPDG=  130;
-  else if (particle ==   G4KaonZeroShort::KaonZeroShort()  ) projPDG=  310;
-  else if (particle ==         G4TauPlus::TauPlus()        ) projPDG=  -15;
-  else if (particle ==        G4TauMinus::TauMinus()       ) projPDG=   15;
-  else if (particle ==     G4NeutrinoTau::NeutrinoTau()    ) projPDG=   16;
-  else if (particle == G4AntiNeutrinoTau::AntiNeutrinoTau()) projPDG=  -16;
-  else if (particle ==          G4Lambda::Lambda()         ) projPDG= 3122;
-  else if (particle ==       G4SigmaPlus::SigmaPlus()      ) projPDG= 3222;
-  else if (particle ==      G4SigmaMinus::SigmaMinus()     ) projPDG= 3112;
-  else if (particle ==       G4SigmaZero::SigmaZero()      ) projPDG= 3212;
-  else if (particle ==         G4XiMinus::XiMinus()        ) projPDG= 3312;
-  else if (particle ==          G4XiZero::XiZero()         ) projPDG= 3322;
-  else if (particle ==      G4OmegaMinus::OmegaMinus()     ) projPDG= 3334;
-  else if (particle ==     G4AntiNeutron::AntiNeutron()    ) projPDG=-2112;
-  else if (particle ==      G4AntiProton::AntiProton()     ) projPDG=-2212;
-  G4int aProjPDG=std::abs(projPDG);
-#ifdef debug
-  G4int prPDG=particle->GetPDGEncoding();
-  G4cout<<"G4QCollision::PostStepDoIt: projPDG="<<projPDG<<", stPDG="<<prPDG<<G4endl;
-#endif
-  if(!projPDG)
-  {
-    G4cerr<<"---Warning---G4QCollision::PostStepDoIt:Undefined interacting hadron"<<G4endl;
-    return 0;
-  }
-  G4int EPIM=ElProbInMat.size();
-#ifdef debug
-  G4cout<<"G4QCollis::PostStDoIt: m="<<EPIM<<",n="<<nE<<",T="<<ElProbInMat[EPIM-1]<<G4endl;
-#endif
-  G4int i=0;
-  if(EPIM>1)
-  {
-    G4double rnd = ElProbInMat[EPIM-1]*G4UniformRand();
-    for(i=0; i<nE; ++i)
-    {
-#ifdef debug
-      G4cout<<"G4QCollision::PostStepDoIt:E["<<i<<"]="<<ElProbInMat[i]<<",r="<<rnd<<G4endl;
-#endif
-      if (rnd<ElProbInMat[i]) break;
-    }
-    if(i>=nE) i=nE-1;                        // Top limit for the Element
-  }
-  G4Element* pElement=(*theElementVector)[i];
-  Z=static_cast<G4int>(pElement->GetZ());
-#ifdef debug
-    G4cout<<"G4QCollision::PostStepDoIt: i="<<i<<", Z(element)="<<Z<<G4endl;
-#endif
-  if(Z<=0)
-  {
-    G4cerr<<"---Warning---G4QCollision::PostStepDoIt: Element with Z="<<Z<<G4endl;
-    if(Z<0) return 0;
-  }
-  std::vector<G4double>* SPI = IsoProbInEl[i];// Vector of summedProbabilities for isotopes
-  std::vector<G4int>* IsN = ElIsoN[i];     // Vector of "#of neutrons" in the isotope El[i]
-  G4int nofIsot=SPI->size();               // #of isotopes in the element i
-#ifdef debug
-  G4cout<<"G4QCollis::PosStDoIt:n="<<nofIsot<<",T="<<(*SPI)[nofIsot-1]<<G4endl;
-#endif
-  G4int j=0;
-  if(nofIsot>1)
-  {
-    G4double rndI=(*SPI)[nofIsot-1]*G4UniformRand(); // Randomize the isotop of the Element
-    for(j=0; j<nofIsot; ++j)
-    {
-#ifdef debug
-      G4cout<<"G4QCollision::PostStepDoIt: SP["<<j<<"]="<<(*SPI)[j]<<", r="<<rndI<<G4endl;
-#endif
-      if(rndI < (*SPI)[j]) break;
-    }
-    if(j>=nofIsot) j=nofIsot-1;            // Top limit for the isotope
-  }
-  G4int N =(*IsN)[j]; ;                    // Randomized number of neutrons
-#ifdef debug
-  G4cout<<"G4QCollision::PostStepDoIt: Z="<<Z<<", j="<<i<<", N(isotope)="<<N<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"-Warning-G4QCollision::PostStepDoIt: Isotope with Z="<<Z<<", 0>N="<<N<<G4endl;
-    return 0;
-  }
-  nOfNeutrons=N;                           // Remember it for the energy-momentum check
-  G4double dd=0.025;
-  G4double am=Z+N;
-  G4double sr=std::sqrt(am);
-  G4double dsr=0.01*(sr+sr);
-  if(dsr<dd)dsr=dd;
-  if(manualFlag) G4QNucleus::SetParameters(freeNuc,freeDib,clustProb,mediRatio); // ManualP
-  else if(projPDG==-2212) G4QNucleus::SetParameters(1.-dsr-dsr,dd+dd,5.,10.);//aP ClustPars
-  else if(projPDG==-211)  G4QNucleus::SetParameters(.67-dsr,.32-dsr,5.,9.);//Pi- ClustPars
-#ifdef debug
-  G4cout<<"G4QCollision::PostStepDoIt: N="<<N<<" for element with Z="<<Z<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"---Warning---G4QCollision::PostStepDoIt:Element with N="<<N<< G4endl;
-    return 0;
-  }
-  aParticleChange.Initialize(track);
-  G4double weight = track.GetWeight();
-  if(photNucBias!=1.)      weight/=photNucBias;
-  else if(weakNucBias!=1.) weight/=weakNucBias;
-  G4double localtime = track.GetGlobalTime();
-  G4ThreeVector position = track.GetPosition();
-  G4TouchableHandle trTouchable = track.GetTouchableHandle();
-  //
-  G4int targPDG=90000000+Z*1000+N;            // PDG Code of the target nucleus
-  G4QPDGCode targQPDG(targPDG);
-  G4double tgM=targQPDG.GetMass();            // Target mass
-  G4double tM=tgM;                            // Target mass (copy to be changed)
-  G4QHadronVector* output=new G4QHadronVector;// Prototype of EnvironOutput G4QHadronVector
-  G4double absMom = 0.;                       // Prototype of absorbed by nucleus Moment
-  G4QHadronVector* leadhs=new G4QHadronVector;// Prototype of QuasmOutput G4QHadronVectorum
-  G4LorentzVector lead4M(0.,0.,0.,0.);        // Prototype of LeadingQ 4-momentum
-
-  //  
-  // Leptons with photonuclear
-  // Lepto-nuclear case with the equivalent photon algorithm. @@InFuture + NC (?)
-  //
-  if (aProjPDG == 11 || aProjPDG == 13 || aProjPDG == 15)
-  {
-#ifdef debug
-    G4cout<<"G4QCollision::PostStDoIt:startSt="<<aParticleChange.GetTrackStatus()<<G4endl;
-#endif
-    G4double kinEnergy= projHadron->GetKineticEnergy();
-    G4ParticleMomentum dir = projHadron->GetMomentumDirection();
-    G4VQCrossSection* CSmanager=G4QElectronNuclearCrossSection::GetPointer();
-    G4double ml=me;
-    G4double ml2=me2;
-    if(aProjPDG== 13)
-    {
-      CSmanager=G4QMuonNuclearCrossSection::GetPointer();
-      ml=mu;
-      ml2=mu2;
-    }
-    if(aProjPDG== 15)
-    {
-      CSmanager=G4QTauNuclearCrossSection::GetPointer();
-      ml=mt;
-      ml2=mt2;
-    }
-    // @@ Probably this is not necessary any more (?)
-    G4double xSec=CSmanager->GetCrossSection(false,Momentum,Z,N,aProjPDG);// Recalculate XS
-    // @@ check a possibility to separate p, n, or alpha (!)
-    if(xSec <= 0.) // The cross-section is 0 -> Do Nothing
-    {
-#ifdef debug
-      G4cerr<<"---OUT---G4QCollision::PSDoIt: Called for zero Cross-section"<<G4endl;
-#endif
-      //Do Nothing Action insead of the reaction
-      aParticleChange.ProposeEnergy(kinEnergy);
-      aParticleChange.ProposeLocalEnergyDeposit(0.);
-      aParticleChange.ProposeMomentumDirection(dir);
-      aParticleChange.ProposeTrackStatus(fAlive);
-      return G4VDiscreteProcess::PostStepDoIt(track,step);
-    }
-    G4double photonEnergy = CSmanager->GetExchangeEnergy(); // Energy of EqivExchangePart
-#ifdef debug
-    G4cout<<"G4QCol::PStDoIt: kE="<<kinEnergy<<",dir="<<dir<<",phE="<<photonEnergy<<G4endl;
-#endif
-    if( kinEnergy < photonEnergy || photonEnergy < 0.)
-    {
-      //Do Nothing Action insead of the reaction
-      G4cerr<<"--G4QCollision::PSDoIt: photE="<<photonEnergy<<">leptE="<<kinEnergy<<G4endl;
-      aParticleChange.ProposeEnergy(kinEnergy);
-      aParticleChange.ProposeLocalEnergyDeposit(0.);
-      aParticleChange.ProposeMomentumDirection(dir);
-      aParticleChange.ProposeTrackStatus(fAlive);
-      return G4VDiscreteProcess::PostStepDoIt(track,step);
-    }
-    G4double photonQ2 = CSmanager->GetExchangeQ2(photonEnergy);// Q2(t) of EqivExchangePart
-    G4double W=photonEnergy-photonQ2/dM;// HadronicEnergyFlow (W-energy) for virtual photon
-    if(tM<999.) W-=mPi0+mPi0s/dM;       // Pion production threshold for a nucleon target
-    if(W<0.) 
-    {
-      //Do Nothing Action insead of the reaction
-#ifdef debug
-      G4cout<<"--G4QCollision::PostStepDoIt:(lN) negative equivalent energy W="<<W<<G4endl;
-#endif
-      aParticleChange.ProposeEnergy(kinEnergy);
-      aParticleChange.ProposeLocalEnergyDeposit(0.);
-      aParticleChange.ProposeMomentumDirection(dir);
-      aParticleChange.ProposeTrackStatus(fAlive);
-      return G4VDiscreteProcess::PostStepDoIt(track,step);
-    }
-    // Update G4VParticleChange for the scattered muon
-    G4VQCrossSection* thePhotonData=G4QPhotonNuclearCrossSection::GetPointer();
-    G4double sigNu=thePhotonData->GetCrossSection(true,photonEnergy,Z,N,22);//Integrated XS
-    G4double sigK =thePhotonData->GetCrossSection(true, W, Z, N, 22);       // Real XS
-    G4double rndFraction = CSmanager->GetVirtualFactor(photonEnergy, photonQ2);
-    if(sigNu*G4UniformRand()>sigK*rndFraction) 
-    {
-      //Do NothingToDo Action insead of the reaction
-#ifdef debug
-      G4cout<<"-DoNoth-G4QCollision::PostStepDoIt: probab. correction - DoNothing"<<G4endl;
-#endif
-      aParticleChange.ProposeEnergy(kinEnergy);
-      aParticleChange.ProposeLocalEnergyDeposit(0.);
-      aParticleChange.ProposeMomentumDirection(dir);
-      aParticleChange.ProposeTrackStatus(fAlive);
-      return G4VDiscreteProcess::PostStepDoIt(track,step);
-    }
-    G4double iniE=kinEnergy+ml;          // Initial total energy of the lepton
-    G4double finE=iniE-photonEnergy;     // Final total energy of the lepton
-#ifdef pdebug
-    G4cout<<"G4QCollision::PoStDoIt:E="<<iniE<<",lE="<<finE<<"-"<<ml<<"="<<finE-ml<<G4endl;
-#endif
-    aParticleChange.ProposeEnergy(finE-ml);
-    if(finE<=ml)                         // Secondary lepton (e/mu/tau) at rest disappears
-    {
-      aParticleChange.ProposeEnergy(0.);
-      if(aProjPDG== 11) aParticleChange.ProposeTrackStatus(fStopAndKill);
-      else aParticleChange.ProposeTrackStatus(fStopButAlive);
-      aParticleChange.ProposeMomentumDirection(dir);
-    }
-    else aParticleChange.ProposeTrackStatus(fAlive);
-    G4double iniP=std::sqrt(iniE*iniE-ml2); // Initial momentum of the electron
-    G4double finP=std::sqrt(finE*finE-ml2); // Final momentum of the electron
-    G4double cost=(iniE*finE-ml2-photonQ2/2)/iniP/finP; // cos(scat_ang_of_lepton)
-#ifdef pdebug
-    G4cout<<"G4QC::PSDoIt:Q2="<<photonQ2<<",ct="<<cost<<",Pi="<<iniP<<",Pf="<<finP<<G4endl;
-#endif
-    if(cost>1.) cost=1.;                 // To avoid the accuracy of calculation problem
-    if(cost<-1.) cost=-1.;               // To avoid the accuracy of calculation problem
-    //
-    // Scatter the lepton ( @@ make the same thing for real photons)
-    // At this point we have photonEnergy and photonQ2 (with notDefinedPhi)->SelectProjPart
-    G4double absEn = std::pow(am,third)*GeV;  // @@(b) Mean Energy Absorbed by a Nucleus
-    //if(am>1 && absEn < photonEnergy)     // --> the absorption of energy can happen
-    if(absEn < photonEnergy)     // --> the absorption of energy can happen
-    {
-      G4double abtEn = absEn+hdM;        // @@(b) MeanEnergyAbsorbed by a nucleus (+M_N)
-      G4double abEn2 = abtEn*abtEn;      // Squared absorbed Energy + MN
-      G4double abMo2 = abEn2-hdM2;       // Squared absorbed Momentum of compound system
-      G4double phEn2 = photonEnergy*photonEnergy;
-      G4double phMo2 = phEn2+photonQ2;   // Squared momentum of primary virtual photon
-      G4double phMo  = std::sqrt(phMo2); // Momentum of the primary virtual photon
-      absMom         = std::sqrt(abMo2); // Absorbed Momentum
-      if(absMom < phMo)                  // --> the absorption of momentum can happen
-      {
-        G4double dEn = photonEnergy - absEn; // Leading energy
-        G4double dMo = phMo - absMom;    // Leading momentum
-        G4double sF  = dEn*dEn - dMo*dMo;// s of leading particle
-#ifdef ppdebug
-        G4cout<<"-PhotoAbsorption-G4QCol::PStDoIt:sF="<<sF<<",phEn="<<photonEnergy<<G4endl;
-#endif
-        if(sF > stmPi)                   // --> Leading fragmentation is possible
-        {
-          photonEnergy = absEn;          // New value of the photon energy
-          photonQ2=abMo2-absEn*absEn;    // New value of the photon Q2
-          absEn = dEn;                   // Put energy of leading particle to absEn (!)
-        }
-        else absMom=0.;                  // Flag that nothing has happened
-      }
-      else absMom=0.;                    // Flag that nothing has happened
-    }
-    // ------------- End of ProjPart selection
-    //
-    // Scattering in respect to the derection of the incident muon is made impicitly:
-    G4ThreeVector ort=dir.orthogonal();  // Not normed orthogonal vector (!) (to dir)
-    G4ThreeVector ortx = ort.unit();     // First unit vector orthogonal to the direction
-    G4ThreeVector orty = dir.cross(ortx);// Second unit vector orthoganal to the direction
-    G4double sint=std::sqrt(1.-cost*cost); // Perpendicular component
-    G4double phi=twopi*G4UniformRand();  // phi of scattered electron
-    G4double sinx=sint*std::sin(phi);    // x perpendicular component
-    G4double siny=sint*std::cos(phi);    // y perpendicular component
-    G4ThreeVector findir=cost*dir+sinx*ortx+siny*orty;
-    aParticleChange.ProposeMomentumDirection(findir); // new direction for the lepton
-#ifdef pdebug
-    G4cout<<"G4QCollision::PostStepDoIt: E="<<aParticleChange.GetEnergy()<<"="<<finE<<"-"
-          <<ml<<", d="<<*aParticleChange.GetMomentumDirection()<<","<<findir<<G4endl;
-#endif
-    G4ThreeVector photon3M=iniP*dir-finP*findir;// 3D total momentum of photon
-    if(absMom)                           // Photon must be reduced & LeadingSyst fragmented
-    {
-      G4double ptm=photon3M.mag();                    // 3M of the virtual photon
-#ifdef ppdebug
-      G4cout<<"-Absorption-G4QCollision::PostStepDoIt: ph3M="<<photon3M<<", eIn3M="
-            <<iniP*dir<<", eFin3M="<<finP*findir<<", abs3M="<<absMom<<"<ptm="<<ptm<<G4endl;
-#endif
-      G4ThreeVector lead3M=photon3M*(ptm-absMom)/ptm; // Keep the direction for leading Q
-      photon3M-=lead3M; // Reduced photon Momentum (photEn already = absEn)
-      proj4M=G4LorentzVector(lead3M,absEn); // 4-momentum of leading System
-#ifdef ppdebug
-      G4cout<<"-->G4QC::PoStDoIt: new sF="<<proj4M.m2()<<", lead4M="<<proj4M<<G4endl;
-#endif
-      lead4M=proj4M;                        // Remember 4-mom for the total 4-momentum
-      G4Quasmon* pan= new G4Quasmon(G4QContent(1,1,0,1,1,0),proj4M);// ---> DELETED -->---+
-      try                                                           //                    |
-      {                                                             //                    |
-        delete leadhs;                                              //                    |
-        G4QNucleus vac(90000000);                                   //                    |
-        leadhs=pan->Fragment(vac,1);  // DELETED after it is copied to output vector      |
-      }                                                             //                    |
-      catch (G4QException& error)                                   //                    |
-      {                                                             //                    |
-        G4cerr<<"***G4QCollision::PostStepDoIt: G4Quasmon Exception is catched"<<G4endl;//|
-        G4Exception("G4QCollision::PostStepDoIt:","72",FatalException,"QuasmonCrash");  //|
-      }                                                             //                    |
-      delete pan;                              // Delete the Nuclear Environment <----<---+
-#ifdef ppdebug
-      G4cout<<"G4QCol::PStDoIt: l4M="<<proj4M<<proj4M.m2()<<", N="<<leadhs->size()<<",pt="
-            <<ptm<<",pa="<<absMom<<",El="<<absEn<<",Pl="<<ptm-absMom<<G4endl;
-#endif
-    }
-    projPDG=22;
-    proj4M=G4LorentzVector(photon3M,photonEnergy);
-#ifdef debug
-    G4cout<<"G4QCollision::PostStDoIt: St="<<aParticleChange.GetTrackStatus()<<", g4m="
-          <<proj4M<<", lE="<<finE<<", lP="<<finP*findir<<", d="<<findir.mag2()<<G4endl;
-#endif
-
-  //
-  // neutrinoNuclear interactions (nu_e, nu_mu only)
-  //
-  }
-  else if (aProjPDG == 12 || aProjPDG == 14)
-  {
-    G4double kinEnergy= projHadron->GetKineticEnergy()/MeV; // Total energy of the neutrino
-    G4double dKinE=kinEnergy+kinEnergy;  // doubled energy for s calculation
-#ifdef debug
-    G4cout<<"G4QCollision::PostStDoIt: 2*nuEnergy="<<dKinE<<"(MeV), PDG="<<projPDG<<G4endl;
-#endif
-    G4ParticleMomentum dir = projHadron->GetMomentumDirection(); // unit vector
-    G4double ml  = mu;
-    G4double ml2 = mu2;
-    //G4double mlN = muN;
-    G4double mlN2= muN2;
-    G4double fmlN= fmuN;
-    G4double mlsN= musN;
-    //G4double mlP = muP;
-    G4double mlP2= muP2;
-    G4double fmlP= fmuP;
-    G4double mlsP= musP;
-    G4double mldM= mudM;
-    //G4double mlD = muD;
-    G4double mlD2= muD2;
-    if(aProjPDG==12)
-    {
-      ml  = me;
-      ml2 = me2;
-      //mlN = meN;
-      mlN2= meN2;
-      fmlN= fmeN;
-      mlsN= mesN;
-      //mlP = meP;
-      mlP2= meP2;
-      fmlP= fmeP;
-      mlsP= mesP;
-      mldM= medM;
-      //mlD = meD;
-      mlD2= meD2;
-    }
-    G4VQCrossSection* CSmanager =G4QNuMuNuclearCrossSection::GetPointer(); // (nu,l)
-    G4VQCrossSection* CSmanager2=G4QNuNuNuclearCrossSection::GetPointer(); // (nu,nu)
-    proj4M=G4LorentzVector(dir*kinEnergy,kinEnergy);   // temporary
-    G4bool nuanu=true;
-    scatPDG=13;                          // Prototype = secondary scattered mu-
-    if(projPDG==-14)
-    {
-      nuanu=false;                       // Anti-neutrino
-      CSmanager=G4QANuMuNuclearCrossSection::GetPointer();  // (anu,mu+) CC @@ open
-      CSmanager=G4QANuANuNuclearCrossSection::GetPointer(); // (anu,anu) NC @@ open
-      scatPDG=-13;                       // secondary scattered mu+
-    }
-    else if(projPDG==12)
-    {
-      CSmanager=G4QNuENuclearCrossSection::GetPointer(); // @@ open (only CC is changed)
-      scatPDG=11;                        // secondary scattered e-
-    }
-    else if(projPDG==-12)
-    {
-      nuanu=false;                       // anti-neutrino
-      CSmanager=G4QANuENuclearCrossSection::GetPointer();   // (anu,e+) CC @@ open
-      CSmanager=G4QANuANuNuclearCrossSection::GetPointer(); // (anu,anu) NC @@ open
-      scatPDG=-11;                       // secondary scattered e+
-    }
-    // @@ Probably this is not necessary any more
-    G4double xSec1=CSmanager->GetCrossSection(false,Momentum,Z,N,projPDG); //Recalculate XS
-    G4double xSec2=CSmanager2->GetCrossSection(false,Momentum,Z,N,projPDG);//Recalculate XS
-    G4double xSec=xSec1+xSec2;
-    // @@ check a possibility to separate p, n, or alpha (!)
-    if(xSec <= 0.) // The cross-section = 0 -> Do Nothing
-    {
-      G4cerr<<"G4QCollision::PSDoIt:nuE="<<kinEnergy<<",X1="<<xSec1<<",X2="<<xSec2<<G4endl;
-      //Do Nothing Action insead of the reaction
-      aParticleChange.ProposeEnergy(kinEnergy);
-      aParticleChange.ProposeLocalEnergyDeposit(0.);
-      aParticleChange.ProposeMomentumDirection(dir);
-      aParticleChange.ProposeTrackStatus(fAlive);
-      return G4VDiscreteProcess::PostStepDoIt(track,step);
-    }
-    G4bool secnu=false;
-    if(xSec*G4UniformRand()>xSec1)               // recover neutrino/antineutrino
-    {
-      if(scatPDG>0) scatPDG++;
-      else          scatPDG--;
-      secnu=true;
-    }
-    scat=true;                                   // event with changed scattered projectile
-    G4double totCS1 = CSmanager->GetLastTOTCS(); // the last total cross section1(isotope?)
-    G4double totCS2 = CSmanager2->GetLastTOTCS();// the last total cross section2(isotope?)
-    G4double totCS  = totCS1+totCS2;             // the last total cross section (isotope?)
-    if(std::fabs(xSec-totCS*millibarn)/xSec>.0001)
-          G4cout<<"-Warning-G4QCollision::PostStepDoIt: xS="<<xSec<<"# CS="<<totCS<<G4endl;
-    G4double qelCS1 = CSmanager->GetLastQELCS(); // the last quasi-elastic cross section1
-    G4double qelCS2 = CSmanager2->GetLastQELCS();// the last quasi-elastic cross section2
-    G4double qelCS  = qelCS1+qelCS2;             // the last quasi-elastic cross section
-    if(totCS - qelCS < 0.)                       // only at low energies
-    {
-      totCS  = qelCS;
-      totCS1 = qelCS1;
-      totCS2 = qelCS2;
-    }
-    // make different definitions for neutrino and antineutrino
-    G4double mIN=mProt;                          // Just a prototype (for anu, Z=1, N=0)
-    G4double mOT=mNeut;
-    G4double OT=mlN2;
-    G4double mOT2=mNeut2;
-    G4double mlOT=fmlN;
-    G4double mlsOT=mlsN;
-    if(secnu)
-    {
-      if(am*G4UniformRand()>Z)                   // Neutron target
-      {
-        targPDG-=1;                              // subtract neutron
-        projPDG=2112;                            // neutron is going out
-        mIN =mNeut;                     
-        OT  =mNeut2;
-        mOT2=mNeut2;
-        mlOT=0.;
-        mlsOT=mNeut2;
-      }
-      else
-      {
-        targPDG-=1000;                           // subtract neutron
-        projPDG=2212;                            // neutron is going out
-        mOT  =mProt;
-        OT   =mProt2;
-        mOT2 =mProt2;
-        mlOT =0.;
-        mlsOT=mProt2;
-      }
-      ml=0.;
-      ml2=0.;
-      mldM=0.;
-      mlD2=mPPi2;
-      G4QPDGCode targQPDG(targPDG);
-      G4double rM=targQPDG.GetMass();
-      mIN=tM-rM;                                 // bounded in-mass of the neutron
-      tM=rM;
-    }
-    else if(nuanu)
-    {
-      targPDG-=1;                                // Neutrino -> subtract neutron
-      G4QPDGCode targQPDG(targPDG);
-      G4double rM=targQPDG.GetMass();
-      mIN=tM-rM;                                 // bounded in-mass of the neutron
-      tM=rM;
-      mOT=mProt;
-      OT=mlP2;
-      mOT2=mProt2;
-      mlOT=fmlP;
-      mlsOT=mlsP;
-      projPDG=2212;                              // proton is going out
-    }
-    else
-    {
-      if(Z>1||N>0)                               // Calculate the splitted mass
-      {
-        targPDG-=1000;                           // Anti-Neutrino -> subtract proton
-        G4QPDGCode targQPDG(targPDG);
-        G4double rM=targQPDG.GetMass();
-        mIN=tM-rM;                               // bounded in-mass of the proton
-        tM=rM;
-      }
-      else
-      {
-        targPDG=0;
-        mIN=tM;
-        tM=0.;
-      }
-      projPDG=2112;                              // neutron is going out
-    }
-    G4double s=mIN*(mIN+dKinE);                  // s=(M_cm)^2=m2+2mE (m=targetMass,E=E_nu)
-#ifdef debug
-    G4cout<<"G4QCollision::PostStDoIt: s="<<s<<" >? OT="<<OT<<", mlD2="<<mlD2<<G4endl;
-#endif
-    if(s<=OT)                                    // *** Do nothing solution ***
-    {
-      //Do NothingToDo Action insead of the reaction (@@ Can we make it common?)
-      G4cout<<"G4QCollision::PostStepDoIt: tooSmallFinalMassOfCompound: DoNothing"<<G4endl;
-      aParticleChange.ProposeEnergy(kinEnergy);
-      aParticleChange.ProposeLocalEnergyDeposit(0.);
-      aParticleChange.ProposeMomentumDirection(dir);
-      aParticleChange.ProposeTrackStatus(fAlive);
-      return G4VDiscreteProcess::PostStepDoIt(track,step);
-    }
-#ifdef debug
-    G4cout<<"G4QCollision::PostStDoIt: Stop and kill the projectile neutrino"<<G4endl;
-#endif
-    aParticleChange.ProposeEnergy(0.);
-    aParticleChange.ProposeTrackStatus(fStopAndKill); // the initial neutrino is killed
-    // There is no way back from here
-
-    if ( ((secnu || !nuanu || N) && totCS*G4UniformRand() < qelCS) || s < mlD2 ) 
-    {   // Quasi-Elastic interaction
-      G4double Q2=0.;                           // Simulate transferred momentum, in MeV^2
-      if(secnu) Q2=CSmanager2->GetQEL_ExchangeQ2();
-      else      Q2=CSmanager->GetQEL_ExchangeQ2();
-#ifdef debug
-      G4cout<<"G4QCollision::PostStDoIt:QuasiEl(nu="<<secnu<<"),s="<<s<<",Q2="<<Q2<<G4endl;
-#endif
-      //G4double ds=s+s;                          // doubled s
-      G4double sqs=std::sqrt(s);                // M_cm
-      G4double dsqs=sqs+sqs;                    // 2*M_cm
-      G4double pi=(s-mIN*mIN)/dsqs;             // initial momentum in CMS (checked MK)
-      G4double dpi=pi+pi;                       // doubled initial momentum in CMS
-      G4double sd=s-mlsOT;                      // s-ml2-mOT2 (mlsOT=m^2_neut+m^2_lept)
-      G4double qo2=(sd*sd-mlOT)/dsqs;           // squared momentum of secondaries in CMS
-      G4double qo=std::sqrt(qo2);               // momentum of secondaries in CMS
-      G4double cost=(dpi*std::sqrt(qo2+ml2)-Q2-ml2)/dpi/qo; // cos(theta) in CMS (chck MK)
-      G4LorentzVector t4M(0.,0.,0.,mIN);        // 4mom of the effective target
-      G4LorentzVector c4M=t4M+proj4M;           // 4mom of the compound system
-      t4M.setT(mOT);                            // now it is 4mom of the outgoing nucleon
-      scat4M=G4LorentzVector(0.,0.,0.,ml);      // 4mom of the scattered muon
-      if(!G4QHadron(c4M).RelDecayIn2(scat4M, t4M, proj4M, cost, cost))
-      {
-        G4cerr<<"G4QCol::PSD:c4M="<<c4M<<sqs<<",mM="<<ml<<",tM="<<mOT<<",c="<<cost<<G4endl;
-        throw G4QException("G4QCollision::HadronizeQuasm: Can't dec QE nu,lept Compound");
-      }
-      proj4M=t4M;                               // 4mom of the new projectile nucleon
-    }
-    else                                        // ***** Non Quasi Elastic interaction
-    {
-     
-      if ( (secnu && projPDG == 2212) || (!secnu && projPDG == 2112) ) {
-        targPDG+=1;    // Recover target PDG,
-      } else if ( (secnu && projPDG == 2112) || (!secnu && projPDG == 2212) ) { 
-        targPDG+=1000; // if not quasiEl
-      }
-      G4double Q2=0;                            // Simulate transferred momentum, in MeV^2
-      if(secnu) Q2=CSmanager->GetNQE_ExchangeQ2();
-      else      Q2=CSmanager2->GetNQE_ExchangeQ2();
-#ifdef debug
-      G4cout<<"G4QColl::PStDoIt: MultiPeriferal s="<<s<<",Q2="<<Q2<<",T="<<targPDG<<G4endl;
-#endif
-      if(secnu) projPDG=CSmanager2->GetExchangePDGCode();// PDG Code of the effective gamma
-      else      projPDG=CSmanager->GetExchangePDGCode(); // PDG Code of the effective pion
-      //@@ Temporary made only for direct interaction and for N=3 (good for small Q2)
-      //@@ inFuture use N=GetNPartons and directFraction=GetDirectPart, @@ W2...
-      G4double r=G4UniformRand();
-      G4double r1=0.5;                          // (1-x)
-      if(r<0.5)      r1=std::sqrt(r+r)*(.5+.1579*(r-.5));
-      else if(r>0.5) r1=1.-std::sqrt(2.-r-r)*(.5+.1579*(.5-r));
-      G4double xn=1.-mldM/Momentum;             // Normalization of (1-x) [x>mldM/Mom]
-      G4double x1=xn*r1;                        // (1-x)
-      G4double x=1.-x1;                         // x=2k/M
-      //G4double W2=(hdM2+Q2/x)*x1;               // W2 candidate
-      G4double mx=hdM*x;                        // Part of the target to interact with
-      G4double we=Q2/(mx+mx);                   // transfered energy
-      if(we>=kinEnergy-ml-.001) we=kinEnergy-ml-.0001; // safety to avoid nan=sqrt(neg)
-      G4double pot=kinEnergy-we;                // energy of the secondary lepton
-      G4double mlQ2=ml2+Q2;
-      G4double cost=(pot-mlQ2/dKinE)/std::sqrt(pot*pot-ml2); // LS cos(theta)
-      if(std::fabs(cost)>1)
-      {
-#ifdef debug
-        G4cout<<"*G4QCollision::PostStDoIt: cost="<<cost<<", Q2="<<Q2<<", nu="<<we<<", mx="
-              <<mx<<", pot="<<pot<<", 2KE="<<dKinE<<G4endl;
-#endif
-        if(cost>1.) cost=1.;
-        else        cost=-1.;
-        pot=mlQ2/dKinE+dKinE*ml2/mlQ2;          // extreme output momentum
-      }
-      G4double lEn=std::sqrt(pot*pot+ml2);      // Lepton energy
-      G4double lPl=pot*cost;                    // Lepton longitudinal momentum
-      G4double lPt=pot*std::sqrt(1.-cost*cost); // Lepton transverse momentum
-      std::pair<G4double,G4double> d2d=Random2DDirection(); // Randomize phi
-      G4double lPx=lPt*d2d.first;
-      G4double lPy=lPt*d2d.second;
-      G4ThreeVector vdir=proj4M.vect();         // 3D momentum of the projectile
-      G4ThreeVector vz= vdir.unit();            // Ort in the direction of the projectile
-      G4ThreeVector vv= vz.orthogonal();        // Not normed orthogonal vector (!)
-      G4ThreeVector vx= vv.unit();              // First ort orthogonal to the direction
-      G4ThreeVector vy= vz.cross(vx);           // Second ort orthoganal to the direction
-      G4ThreeVector lP= lPl*vz+lPx*vx+lPy*vy;   // 3D momentum of the scattered lepton
-      scat4M=G4LorentzVector(lP,lEn);           // 4mom of the scattered lepton
-      proj4M-=scat4M;                           // 4mom of the W/Z (effective pion/gamma)
-#ifdef debug
-      G4cout<<"G4QCollision::PostStDoIt: proj4M="<<proj4M<<", ml="<<ml<<G4endl;
-#endif
-      // Check that the en/mom transfer is possible, if not -> elastic
-      G4int fintPDG=targPDG;                    // Prototype for the compound nucleus
-      if(!secnu)
-      {
-        if(projPDG<0) fintPDG-= 999;
-        else          fintPDG+= 999;
-      }
-      G4double fM=G4QPDGCode(fintPDG).GetMass();// compound nucleus Mass (MeV)
-      G4double fM2=fM*fM;
-      G4LorentzVector tg4M=G4LorentzVector(0.,0.,0.,tgM);
-      G4LorentzVector c4M=tg4M+proj4M;
-#ifdef debug
-      G4cout<<"G4QCol::PSDI:fM2="<<fM2<<" <? mc4M="<<c4M.m2()<<",dM="<<fM-tgM<<G4endl;
-#endif
-      if(fM2>=c4M.m2())                         // Elastic scattering should be done
-      {
-        G4LorentzVector tot4M=tg4M+proj4M+scat4M; // recover the total 4-momentum
-        s=tot4M.m2();
-        G4double fs=s-fM2-ml2;
-        G4double fMl=fM2*ml2;
-        G4double hQ2max=(fs*fs/2-fMl-fMl)/s;    // Maximum possible Q2/2
-        G4double cost=1.-Q2/hQ2max;             // cos(theta) in CMS (use MultProd Q2)
-#ifdef debug
-        G4cout<<"G4QC::PSDI:ct="<<cost<<",Q2="<<Q2<<",hQ2="<<hQ2max<<",4M="<<tot4M<<G4endl;
-#endif
-        G4double acost=std::fabs(cost);
-        if(acost>1.)
-        {
-          if(acost>1.001) G4cout<<"-Warning-G4QCollision::PostStDoIt: cost="<<cost<<G4endl;
-          if     (cost> 1.) cost= 1.;
-          else if(cost<-1.) cost=-1.;
-        }
-        G4LorentzVector reco4M=G4LorentzVector(0.,0.,0.,fM); // 4mom of the recoilNucleus
-        scat4M=G4LorentzVector(0.,0.,0.,ml); // 4mom of the scatteredLepton
-        G4LorentzVector dir4M=tot4M-G4LorentzVector(0.,0.,0.,(tot4M.e()-ml)*.01);
-        if(!G4QHadron(tot4M).RelDecayIn2(scat4M, reco4M, dir4M, cost, cost))
-        {
-          G4cerr<<"G4QC::PSDI:t4M="<<tot4M<<",lM="<<ml<<",rM="<<fM<<",cost="<<cost<<G4endl;
-          //G4Exception("G4QCollision::PostStepDoIt:","027",FatalException,"ElasticDecay");
-        }
-#ifdef debug
-        G4cout<<"G4QCol::PStDoI:l4M="<<scat4M<<"+r4M="<<reco4M<<"="<<scat4M+reco4M<<G4endl;
-#endif
-        // ----------------------------------------------------
-        G4ParticleDefinition* theDefinition=0; // Prototype of a particle for E-Secondaries
-        // Fill scattered lepton
-        if     (scatPDG==-11) theDefinition = G4Positron::Positron();
-        else if(scatPDG== 11) theDefinition = G4Electron::Electron();
-        else if(scatPDG== 13) theDefinition = G4MuonMinus::MuonMinus();
-        else if(scatPDG==-13) theDefinition = G4MuonPlus::MuonPlus();
-        //else if(scatPDG== 15) theDefinition = G4TauMinus::TauMinus();
-        //else if(scatPDG==-15) theDefinition = G4TauPlus::TauPlus();
-        if     (scatPDG==-12) theDefinition = G4AntiNeutrinoE::AntiNeutrinoE();
-        else if(scatPDG== 12) theDefinition = G4NeutrinoE::NeutrinoE();
-        else if(scatPDG== 14) theDefinition = G4NeutrinoMu::NeutrinoMu();
-        else if(scatPDG==-14) theDefinition = G4AntiNeutrinoMu::AntiNeutrinoMu();
-        //else if(scatPDG== 16) theDefinition = G4NeutrinoTau::NeutrinoTau();
-        //else if(scatPDG==-16) theDefinition = G4AntiNeutrinoTau::AntiNeutrinoTau();
-        else  G4cout<<"-Warning-G4QCollision::PostStDoIt: UnknownLepton="<<scatPDG<<G4endl;
-        G4DynamicParticle* theScL = new G4DynamicParticle(theDefinition,scat4M);
-        G4Track* scatLep = new G4Track(theScL, localtime, position ); //    scattered
-        scatLep->SetWeight(weight);                                   //    weighted
-        scatLep->SetTouchableHandle(trTouchable);                     //    residual
-        aParticleChange.AddSecondary(scatLep);                        //    lepton
-        // Fill residual nucleus
-        if     (fintPDG==90000001) theDefinition = G4Neutron::Neutron(); // neutron
-        else if(fintPDG==90001000) theDefinition = G4Proton::Proton();   // proton
-        else                                                             // ion
-        {
-          G4int fm=static_cast<G4int>(fintPDG/1000000);               // Strange part
-          G4int ZN=fintPDG-1000000*fm;
-          G4int rZ=static_cast<G4int>(ZN/1000);
-          G4int rA=ZN-999*rZ;
-          theDefinition = G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,0,rZ);
-        }
-        G4DynamicParticle* theReN = new G4DynamicParticle(theDefinition,reco4M);
-        G4Track* scatReN = new G4Track(theReN, localtime, position ); //    scattered
-        scatReN->SetWeight(weight);                                   //    weighted
-        scatReN->SetTouchableHandle(trTouchable);                     //    residual
-        aParticleChange.AddSecondary(scatReN);                        //    nucleus
-        return G4VDiscreteProcess::PostStepDoIt(track, step);
-      }
-    }
-  //
-  // quasi-elastic (& pickup process) for p+A(Z,N)
-  //
-  }
-  else if (aProjPDG == 2212 && Z > 0 && N > 0)
-  //else if(2>3) 
-  {
-    G4QuasiFreeRatios* qfMan=G4QuasiFreeRatios::GetPointer();
-    std::pair<G4double,G4double> fief=qfMan->GetRatios(momentum, aProjPDG, Z, N);
-    G4double qepart=fief.first*fief.second;
-    // Keep QE part for the quasi-free nucleons
-    const G4int lCl=3; // The last clProb[lCl]==1. by definition, MUST be increasing
-    G4double clProb[lCl]={.65,.85,.95};// N/P,D,t/He3,He4, integratedProb for .65,.2,.1,.05
-    if(qepart>0.45) qepart=.45; // Quasielastic part is too large - shrink
-    else qepart/=clProb[0];     // Add corresponding number of 2N, 3N, & 4N clusters
-    G4double pickup=1.-qepart;  // Estimate the rest of the cross-section
-    G4double thresh=100.;
-    if(momentum > thresh) pickup*=50./momentum/std::pow((double)Z+N,(double)third); // 50. is a par(!)
-    // pickup = 0.;               // To exclude the pickup process
-    if (N) pickup+=qepart;
-    else   pickup =qepart;
-    G4double rnd=G4UniformRand();
-#ifdef ldebug
-    G4cout<<"-->G4QCol::PSD:QE[p("<<proj4M<<")+(Z="<<Z<<",N="<<N<<")]="<<qepart
-          <<", pickup="<<pickup<<G4endl;
-#endif
-    if(rnd<pickup) // Make a quasi free scattering (out:A-1,h,N) @@ KinLim,CoulBar,PauliBl
-    {
-     G4double dmom=91.;  // Fermi momentum (proto default for a deuteron)
-     G4double fmm=287.;  // @@ Can be A-dependent
-     if(Z>1||N>1) dmom=fmm*std::pow(-std::log(G4UniformRand()),third);
-     // Values to be redefined for quasi-elastic
-     G4LorentzVector r4M(0.,0.,0.,0.);      // Prototype of 4mom of the residual nucleus
-     G4LorentzVector n4M(0.,0.,0.,0.);      // Prototype of 4mom of the quasi-cluster
-     G4int nPDG=90000001;                   // Prototype for quasi-cluster mass calculation
-     G4int restPDG=targPDG;                 // Prototype should be reduced by quasi-cluster
-     G4int rA=Z+N-1;                        // Prototype for the residualNucl definition
-     G4int rZ=Z;                            // residZ: OK for the quasi-free neutron
-     G4int nA=1;                            // Prototype for the quasi-cluster definition
-     G4int nZ=0;                            // nA=1,nZ=0: OK for the quasi-free neutron
-     G4double qM=mNeut;                     // Free mass of the quasi-free cluster
-     G4int A = Z + N;                       // Baryon number of the nucleus
-     if(rnd<qepart)
-     {
-      // ===> First decay a nucleus in a nucleon and a residual (A-1) nucleus
-      // Calculate cluster probabilities (n,p,d,t,he3,he4 now only, can use UpdateClusters)
-      G4double base=1.;  // Base for randomization (can be reduced by totZ & totN)
-      G4int max=lCl;     // Number of boundaries (can be reduced by totZ & totN)
-      // Take into account that at least one nucleon must be left !
-      if (Z<2 || N<2 || A<5) base = clProb[--max]; // Alpha cluster is impossible
-      if ( (Z > 1 && N < 2) || (Z < 2 && N > 1) ) 
-        base=(clProb[max]+clProb[max-1])/2; // t or He3 is impossible
-      if ( (Z < 2 && N < 2) || A < 4) base=clProb[--max];// He3 & t clusters are impossible
-      if(A<3)           base=clProb[--max]; // Deuteron cluster is impossible
-      G4int cln=0;                          // Cluster#0 (Default for the selected nucleon)
-      if(max)                               // Not only nucleons are possible
-      //if(2>3)
-      {
-        G4double ran=base*G4UniformRand();  // Base can be reduced
-        G4int ic=0;                         // Start from the smallest cluster boundary
-        while(ic<max) if(ran>clProb[ic++]) cln=ic;
-      }
-      G4ParticleDefinition* theDefinition;  // Prototype for qfNucleon
-      G4bool cp1 = cln+2==A;                // A=ClusterBN+1 condition
-      if(!cln || cp1)                       // Split in nucleon + (A-1) with Fermi momentum
-      {
-        G4int nln=0;
-        if(cln==2) nln=1;                         // @@ only for cp1: t/He3 choice from A=4
-        // mass(A)=tM. Calculate masses of A-1 (rM) and mN (mNeut or mProt bounded mass)
-        if ( ((!cln || cln == 2) && G4UniformRand()*(A-cln) > (N-nln)) || 
-             ((cln == 3 || cln == 1) && Z > N) )
-        {
-          nPDG=90001000;                          // Update quasi-free nucleon PDGCode to P
-          nZ=1;                                   // Change charge of the quasiFree nucleon
-          qM=mProt;                               // Update quasi-free nucleon mass
-          rZ--;                                   // Reduce the residual Z
-          restPDG-=1000;                          // Reduce the residual PDGCode
-        }
-        else restPDG--;
-        G4LorentzVector t4M(0.,0.,0.,tM);         // 4m of the target nucleus to be decayed
-        G4double rM=G4QPDGCode(restPDG).GetMass();// Mass of the residual nucleus
-        r4M=G4LorentzVector(0.,0.,0.,rM);         // 4mom of the residual nucleus
-        G4double rM2=rM*rM;
-        G4double nM=std::sqrt(rM2+tM*tM-(tM+tM)*std::sqrt(rM2+dmom*dmom));// M of q-nucleon
-        n4M=G4LorentzVector(0.,0.,0.,nM);         // 4mom of the quasi-nucleon
-#ifdef qedebug
-        G4cout<<"G4QCollis::PStDoIt:QE,p="<<dmom<<",tM="<<tM<<",R="<<rM<<",N="<<nM<<G4endl;
-#endif
-        if(!G4QHadron(t4M).DecayIn2(r4M, n4M))
-        {
-          G4cerr<<"G4QCol::PostStDoIt: M="<<tM<<"<rM="<<rM<<"+nM="<<nM<<"="<<rM+nM<<G4endl;
-          throw G4QException("G4QCollision::HadronizeQuasm:Can'tDec totNuc->QENuc+ResNuc");
-        }
-#ifdef qedebug
-        G4cout<<"G4QCol::PStDoIt:QE-N,RA="<<r4M.rho()<<r4M<<",QN="<<n4M.rho()<<n4M<<G4endl;
-#endif
-        if(cp1 && cln)                           // Quasi-cluster case: swap the output
-        {
-          qM=rM;                                 // Scattering will be made on a cluster
-          nln=nPDG;
-          nPDG=restPDG;
-          restPDG=nln;
-          t4M=n4M;
-          n4M=r4M;
-          r4M=t4M;
-          nln=nZ;
-          nZ=rZ;
-          rZ=nln;
-          nln=nA;
-          nA=rA;
-          rA=nln;
-        }
-      }
-      else // Split the cluster (with or w/o "Fermi motion" and "Fermi decay")
-      {
-        if(cln==1)
-        {
-          nPDG=90001001;                  // Deuteron
-          qM=mDeut;
-          nA=2;
-          nZ=1;
-          restPDG-=1001;
-          // Recalculate dmom
-          G4ThreeVector sumv=G4ThreeVector(0.,0.,dmom) +
-                      fmm*std::pow(-std::log(G4UniformRand()),third)*G4RandomDirection();
-          dmom=sumv.mag();
-        }
-        else if(cln==2)
-        {
-          nA=3;
-          if(G4UniformRand()*(A-2)>(N-1)) // He3
-          {
-            nPDG=90002001;
-            qM=mHel3;
-            nZ=2;
-            restPDG-=2001;
-          }
-          else                            // tritium
-          {
-            nPDG=90001002;
-            qM=mTrit;
-            nZ=1;
-            restPDG-=1002;
-          }
-          // Recalculate dmom
-          G4ThreeVector sumv=G4ThreeVector(0.,0.,dmom) +
-                        fmm*std::pow(-std::log(G4UniformRand()),third)*G4RandomDirection()+
-                        fmm*std::pow(-std::log(G4UniformRand()),third)*G4RandomDirection();
-          dmom=sumv.mag();
-        }
-        else
-        {
-          nPDG=90002002;                  // Alpha
-          qM=mAlph;
-          nA=4;
-          nZ=2;
-          restPDG-=2002;
-          G4ThreeVector sumv=G4ThreeVector(0.,0.,dmom) +
-                        fmm*std::pow(-std::log(G4UniformRand()),third)*G4RandomDirection()+
-                        fmm*std::pow(-std::log(G4UniformRand()),third)*G4RandomDirection()+
-                        fmm*std::pow(-std::log(G4UniformRand()),third)*G4RandomDirection();
-          dmom=sumv.mag();
-        }
-        rA=A-nA;
-        rZ=Z-nZ;
-        // This is a simple case of cluster at rest
-        //G4double rM=G4QPDGCode(restPDG).GetMass();// Mass of the residual nucleus
-        //r4M=G4LorentzVector(0.,0.,0.,rM);         // 4mom of the residual nucleus
-        //n4M=G4LorentzVector(0.,0.,0.,tM-rM);      // 4mom of the quasi-free cluster
-        // --- End of the "simple case of cluster at rest"
-        // Make a fake quasi-Fermi distribution for clusters (clusters are not at rest) 
-        G4LorentzVector t4M(0.,0.,0.,tM);         // 4m of the target nucleus to be decayed
-        G4double rM=G4QPDGCode(restPDG).GetMass();// Mass of the residual nucleus
-        r4M=G4LorentzVector(0.,0.,0.,rM);         // 4mom of the residual nucleus
-        G4double rM2=rM*rM;
-        G4double nM=std::sqrt(rM2+tM*tM-(tM+tM)*std::sqrt(rM2+dmom*dmom));// M of q-cluster
-        n4M=G4LorentzVector(0.,0.,0.,nM);         // 4mom of the quasi-nucleon
-#ifdef qedebug
-        G4cout<<"G4QCollis::PStDoIt:QEC,p="<<dmom<<",T="<<tM<<",R="<<rM<<",N="<<nM<<G4endl;
-#endif
-        if(!G4QHadron(t4M).DecayIn2(r4M, n4M))
-        {
-          G4cerr<<"G4QCol::PostStDoIt: M="<<tM<<"<rM="<<rM<<"+cM="<<nM<<"="<<rM+nM<<G4endl;
-          throw G4QException("G4QCollision::HadronizeQuasm:Can'tDec totNuc->QEClu+ResNuc");
-        }
-        // --- End of the moving cluster implementation ---
-#ifdef qedebug
-        G4cout<<"G4QCol::PStDoIt:QEC,RN="<<r4M.rho()<<r4M<<",QCl="<<n4M.rho()<<n4M<<G4endl;
-#endif
-      }
-      G4LorentzVector s4M=n4M+proj4M;             // Tot 4-momentum for scattering
-      G4double prjM2 = proj4M.m2();               // Squared mass of the projectile
-      G4double prjM = std::sqrt(prjM2);           // @@ Get from pPDG (?)
-      G4double minM = prjM+qM;                    // Min mass sum for the final products
-      G4double cmM2 =s4M.m2();
-      if(cmM2>minM*minM)
-      {
-#ifdef qedebug
-        G4cout<<"G4QCol::PStDoIt:***Enter***,cmM2="<<cmM2<<" > minM2="<<minM*minM<<G4endl;
-#endif
-        // Estimate and randomize charge-exchange with quasi-free cluster
-        G4bool chex=false;                        // Flag of the charge exchange scattering
-        G4ParticleDefinition* projpt=G4Proton::Proton(); // Prototype, only for chex=true
-        // This is reserved for the charge-exchange scattering (to help neutron spectras)
-        //if(cln&&!cp1 &&(projPDG==2212&&rA>rZ || projPDG==2112&&rZ>1))// @@ Use proj chex
-        if(2>3)
-        {
-#ifdef qedebug
-          G4cout<<"G4QCol::PStDoIt:-Enter,P="<<projPDG<<",cln="<<cln<<",cp1="<<cp1<<G4endl;
-#endif
-          G4double tprM=mProt;
-          G4double tprM2=mProt2;
-          G4int tprPDG=2212;
-          G4int tresPDG=restPDG+999;
-          if(projPDG==2212)
-          {
-            projpt=G4Neutron::Neutron();
-            tprM=mNeut;
-            tprM2=mNeut2;
-            tprPDG=2112;
-            tresPDG=restPDG-999;
-          }
-          minM=tprM+qM;
-          G4double efE=(cmM2-tprM2-qM*qM)/(qM+qM);
-          G4double efP=std::sqrt(efE*efE-tprM2);
-          G4double chl=qfMan->ChExElCoef(efP*MeV, nZ, nA-nZ, projPDG); // ChEx/Elast(pPDG!)
-#ifdef qedebug
-          G4cout<<"G4QCol::PStDoIt:chl="<<chl<<",P="<<efP<<",nZ="<<nZ<<",nA="<<nA<<G4endl;
-#endif
-          if(chl>0.&&cmM2>minM*minM&&G4UniformRand()<chl/(1.+chl))     // minM is redefined
-          {
-            projPDG=tprPDG;
-            prjM=tprM;
-            G4double rM=G4QPDGCode(tresPDG).GetMass();// Mass of the residual nucleus
-            r4M=G4LorentzVector(0.,0.,0.,rM);         // 4mom of the residual nucleus
-            n4M=G4LorentzVector(0.,0.,0.,tM-rM);      // 4mom of the quasi-free cluster
-            chex=true;                                // Confirm charge exchange scattering
-          }
-        }
-        //
-        std::pair<G4LorentzVector,G4LorentzVector> sctout=qfMan->Scatter(nPDG, n4M,
-                                                                         projPDG, proj4M);
-#ifdef qedebug
-        G4cout<<"G4QCollis::PStDoIt:QElS,proj="<<prjM<<sctout.second<<",qfCl="<<qM
-              <<sctout.first<<",chex="<<chex<<",nA="<<nA<<",nZ="<<nZ<<G4endl;
-#endif
-        aParticleChange.ProposeLocalEnergyDeposit(0.); // Everything is in particles
-        // @@ @@ @@ Coulomb barriers must be checked !! @@ @@ @@ Skip if not
-        if(chex)               // ==> Projectile is changed: fill everything to secondaries
-        {
-          aParticleChange.ProposeEnergy(0.);                // @@ ??
-          aParticleChange.ProposeTrackStatus(fStopAndKill); // projectile nucleon is killed
-          aParticleChange.SetNumberOfSecondaries(3); 
-          G4DynamicParticle* thePrH = new G4DynamicParticle(projpt,sctout.second);
-          G4Track* scatPrH = new G4Track(thePrH, localtime, position ); // scattered & chex
-          scatPrH->SetWeight(weight);                                   //    weighted
-          scatPrH->SetTouchableHandle(trTouchable);                     //   projectile
-          aParticleChange.AddSecondary(scatPrH);                        //     hadron
-        }
-        else               // ==> The leading particle is filled to the updated projectilee
-        {
-          aParticleChange.SetNumberOfSecondaries(2);        // @@ if proj=leading 
-          G4double ldT=(sctout.second).e()-prjM;            // kin Energy of scat project.
-          aParticleChange.ProposeEnergy(ldT);               // Change the kin Energy
-          G4ThreeVector ldV=(sctout.second).vect();         // Change momentum direction
-          aParticleChange.ProposeMomentumDirection(ldV/ldV.mag());
-          aParticleChange.ProposeTrackStatus(fAlive);
-        }
-        // ---------------------------------------------------------
-        // Fill scattered quasi-free nucleon
-        if     (nPDG==90000001) theDefinition = G4Neutron::Neutron();
-        else if(nPDG==90001000) theDefinition = G4Proton::Proton();
-        else theDefinition = G4ParticleTable::GetParticleTable()->FindIon(nZ,nA,0,nZ);//ion
-        G4DynamicParticle* theQFN = new G4DynamicParticle(theDefinition,sctout.first);
-        G4Track* scatQFN = new G4Track(theQFN, localtime, position ); //   scattered
-        scatQFN->SetWeight(weight);                                   //    weighted
-        scatQFN->SetTouchableHandle(trTouchable);                     //   quasi-free
-        aParticleChange.AddSecondary(scatQFN);                        //  nucleon/cluster
-        // ----------------------------------------------------
-        // Fill residual nucleus
-        if     (restPDG==90000001) theDefinition = G4Neutron::Neutron();
-        else if(restPDG==90001000) theDefinition = G4Proton::Proton();
-        else theDefinition = G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,0,rZ);//ion
-        G4DynamicParticle* theReN = new G4DynamicParticle(theDefinition,r4M);
-        G4Track* scatReN = new G4Track(theReN, localtime, position ); //    scattered
-        scatReN->SetWeight(weight);                                   //    weighted
-        scatReN->SetTouchableHandle(trTouchable);                     //    residual
-        aParticleChange.AddSecondary(scatReN);                        //    nucleus
-        return G4VDiscreteProcess::PostStepDoIt(track, step);
-      }
-#ifdef qedebug
-      else G4cout<<"G4QCol::PSD: OUT, M2="<<s4M.m2()<<"<"<<minM*minM<<", N="<<nPDG<<G4endl;
-#endif
-     } // end of proton quasi-elastic (including QE on NF)
-     else // @@ make cost-condition @@ Pickup process (pickup 1 or 2 n and make d or t)
-     {
-       restPDG--;                // Res. nucleus PDG is one neutron less than targ. PDG
-       G4double mPUF=mDeut;      // Prototype of the mass of the created pickup fragment
-       G4ParticleDefinition* theDefinition = G4Deuteron::Deuteron();
-       //theDefinition = G4ParticleTable::GetParticleTable()->FindIon(nZ,nA,0,nZ);//ion
-       G4bool din=false;         // Flag of picking up 2 neutrons to create t (tritium)
-       //G4bool hin=false;         // Flag of picking up 1 n + 1 p to create He3 (NOT IMPL)
-       G4bool tin=false;         // Flag of picking up 2 n + 1 p to create alpha (He4)
-       G4double frn=G4UniformRand();
-       if(N>2 && frn > 0.95)      // .95 is a parameter to pickup 2n (cteate t or +1p=alph)
-       {
-         theDefinition = G4Triton::Triton();
-         restPDG--;              // Res. nucleus PDG is two neutrons less than target PDG
-         rA--;                   // Reduce the baryon number of the residual nucleus
-         mPUF=mTrit;             // The mass of the created pickup fragment (triton)
-         // Recalculate dmom
-         G4ThreeVector sumv=G4ThreeVector(0.,0.,dmom) +
-                       fmm*std::pow(-std::log(G4UniformRand()),third)*G4RandomDirection();
-         dmom=sumv.mag();
-         din=true;
-         if(Z>1 && frn > 0.99)  // 0.99 is a parameter to pickup 2n + 1p and create alpha
-         {
-           theDefinition = G4Alpha::Alpha();
-           restPDG-=1000;        // Res. nucleus PDG is (2 n + 1 p) less than target PDG
-           rA--;                 // Reduce the baryon number of the residual nucleus
-           rZ--;                 // Reduce the charge of the residual nucleus
-           mPUF=mAlph;           // The mass of the created pickup fragment (triton)
-           // Recalculate dmom
-           sumv += fmm*std::pow(-std::log(G4UniformRand()),third)*G4RandomDirection();
-           dmom=sumv.mag();
-           tin=true;
-         }
-       }
-       G4double mPUF2=mPUF*mPUF;
-       G4LorentzVector t4M(0.,0.,0.,tM);         // 4m of the target nucleus to be decayed
-       G4double rM=G4QPDGCode(restPDG).GetMass();// Mass of the residual nucleus
-       G4double rM2=rM*rM;                       // Squared mass of the residual nucleus
-       G4double nM2=rM2+tM*tM-(tM+tM)*std::sqrt(rM2+dmom*dmom);// M2 of boundQF-nucleon(2N)
-       if(nM2 < 0) nM2=0.;
-       G4double nM=std::sqrt(nM2);               // M of bQF-nucleon
-       G4double den2=(dmom*dmom+nM2);            // squared energy of bQF-nucleon
-       G4double den=std::sqrt(den2);             // energy of bQF-nucleon
-#ifdef qedebug
-       G4cout<<"G4QCollis::PStDoIt:PiU,p="<<dmom<<",tM="<<tM<<",R="<<rM<<",N="<<nM<<G4endl;
-#endif
-       G4double qp=momentum*dmom;
-       G4double srm=proj4M.e()*den;
-       G4double cost=(nM2+mProt2+srm+srm-mPUF2)/(qp+qp);
-       G4int ict=0;
-       while(std::fabs(cost)>1. && ict<3)
-       {
-         dmom=91.;  // Fermi momentum (proto default for a deuteron)
-         if(Z>1||N>1) dmom=fmm*std::pow(-std::log(G4UniformRand()),third);
-         if(din)          // Recalculate dmom for the final triton
-         {
-          G4ThreeVector sumv=G4ThreeVector(0.,0.,dmom) +
-                        fmm*std::pow(-std::log(G4UniformRand()),third)*G4RandomDirection();
-          if(tin) sumv+=fmm*std::pow(-std::log(G4UniformRand()),third)*G4RandomDirection();
-          dmom=sumv.mag();
-         }
-         nM2=rM2+tM*tM-(tM+tM)*std::sqrt(rM2+dmom*dmom); // M2 of bQF-nucleon
-         if(nM2 < 0) nM2=0.;
-         nM=std::sqrt(nM2);                      // M of bQF-nucleon
-         den2=(dmom*dmom+nM2);                   // squared energy of bQF-nucleon
-         den=std::sqrt(den2);                    // energy of bQF-nucleon
-         qp=momentum*dmom;
-         srm=proj4M.e()*den;
-         cost=(nM2+mProt2+srm+srm-mPUF2)/(qp+qp);
-         ict++;
-#ifdef ldebug
-         if(ict>2)G4cout<<"G4QCollis::PStDoIt:i="<<ict<<",d="<<dmom<<",ct="<<cost<<G4endl;
-#endif
-       }
-       if(std::fabs(cost)<=1.)
-       {// ---- @@ From here can be a MF for QF nucleon extraction (if used by others)
-        G4ThreeVector vdir = proj4M.vect();  // 3-Vector in the projectile direction
-        G4ThreeVector vx(0.,0.,1.);          // ProtoOrt in theDirection of the projectile
-        G4ThreeVector vy(0.,1.,0.);          // First ProtoOrt orthogonal to the direction
-        G4ThreeVector vz(1.,0.,0.);          // SecondProtoOrt orthoganal to the direction
-        if(vdir.mag2() > 0.)                 // the projectile isn't at rest
-        {
-          vx = vdir.unit();                  // Ort in the direction of the projectile
-          G4ThreeVector vv= vx.orthogonal(); // Not normed orthogonal vector (!)
-          vy = vv.unit();                    // First ort orthogonal to the proj direction
-          vz = vx.cross(vy);                 // Second ort orthoganal to the projDirection
-        }
-        // ---- @@ End of possible MF (Similar is in G4QEnvironment)
-        G4double tdom=dmom*std::sqrt(1-cost*cost);// Transversal component of the Fermi-Mom
-        G4double phi=twopi*G4UniformRand();  // Phi of the Fermi-Mom
-        G4ThreeVector vedm=vx*dmom*cost+vy*tdom*std::sin(phi)+vz*tdom*std::cos(phi);// bQFN
-        G4LorentzVector bqf(vedm,den);      // 4-mom of the bQF nucleon
-        r4M=t4M-bqf;                         // 4mom of the residual nucleus
-        if(std::fabs(r4M.m()-rM)>.001) G4cout<<"G4QCol::PSD:rM="<<rM<<"#"<<r4M.m()<<G4endl;
-        G4LorentzVector f4M=proj4M+bqf;      // Prototype of 4-mom of Deuteron
-        if(std::fabs(f4M.m()-mPUF)>.001)
-                              G4cout<<"G4QCol::PSD:mDeut="<<mPUF<<" # "<<f4M.m()<<G4endl;
-        aParticleChange.ProposeEnergy(0.);   // @@ ??
-        aParticleChange.ProposeTrackStatus(fStopAndKill);// projectile nucleon is killed
-        aParticleChange.SetNumberOfSecondaries(2); 
-        // Fill pickup hadron
-        G4DynamicParticle* theQFN = new G4DynamicParticle(theDefinition,f4M);
-        G4Track* scatQFN = new G4Track(theQFN, localtime, position ); //    pickup
-        scatQFN->SetWeight(weight);                                   //    weighted
-        scatQFN->SetTouchableHandle(trTouchable);                     //    nuclear
-        aParticleChange.AddSecondary(scatQFN);                        //    cluster
-        // ----------------------------------------------------
-        // Fill residual nucleus
-        if     (restPDG==90000001) theDefinition = G4Neutron::Neutron();
-        else if(restPDG==90001000) theDefinition = G4Proton::Proton();
-        else theDefinition = G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,0,rZ);//ion
-        G4DynamicParticle* theReN = new G4DynamicParticle(theDefinition,r4M);
-        G4Track* scatReN = new G4Track(theReN, localtime, position ); //    scattered
-        scatReN->SetWeight(weight);                                   //    weighted
-        scatReN->SetTouchableHandle(trTouchable);                     //    residual
-        aParticleChange.AddSecondary(scatReN);                        //    nucleus
-        return G4VDiscreteProcess::PostStepDoIt(track, step);
-	 }
-     }
-    } // end of decoupled processes for the proton projectile
-  }  // end lepto-nuclear, neutrino-nuclear, proton quasi-elastic
-  EnMomConservation=proj4M+G4LorentzVector(0.,0.,0.,tM);    // Total 4-mom of the reaction
-  if(absMom) EnMomConservation+=lead4M;         // Add E/M of leading System
-#ifdef debug
-  G4cout<<"G4QCollision::PostStDoIt:before St="<<aParticleChange.GetTrackStatus()<<G4endl;
-#endif
-
-  // @@@@@@@@@@@@@@ Temporary for the testing purposes --- Begin
-  //G4bool elF=false; // Flag of the ellastic scattering is "false" by default
-  //G4double eWei=1.;
-  // @@@@@@@@@@@@@@ Temporary for the testing purposes --- End  
-#ifdef ldebug
-  G4cout<<"^^G4QCollision::PostStepDoIt: projPDG="<<projPDG<<", targPDG="<<targPDG<<G4endl;
-#endif
-  G4QHadron* pH = new G4QHadron(projPDG,proj4M);                // ---> DELETED -->----+*
-  //if(momentum<1000.) // Condition for using G4QEnvironment (not G4QuasmonString)      |
-  { //                                                                                  |
-    G4QHadronVector projHV;                                 //                          |
-    projHV.push_back(pH);                                   // DESTROYED over 2 lines-+ |
-    G4QEnvironment* pan= new G4QEnvironment(projHV,targPDG);// ---> DELETED --->----+ | |
-    std::for_each(projHV.begin(), projHV.end(), DeleteQHadron()); // <---<------<---+-+-+
-    projHV.clear(); // <------------<---------------<-------------------<-----------+-+ .
-#ifdef debug
-    G4cout<<"G4QCol::PStDoIt:Proj="<<projPDG<<proj4M<<",Targ="<<targPDG<<G4endl; // |   .
-#endif
-    try                                                           //                |   .
-    {                                                             //                |   .
-      delete output;                                              //                |   .
-      output = pan->Fragment();// DESTROYED in the end of the LOOP work space       |   .
-    }                                                             //                |   .
-    catch (G4QException& error)//                                                   |   .
-    {                                                             //                |   .
-      //#ifdef pdebug
-      G4cerr<<"***G4QCollision::PostStepDoIt: G4QE Exception is catched"<<G4endl;// |   .
-      //#endif
-      G4Exception("G4QCollision::PostStepDoIt:","27",FatalException,"CHIPSCrash");//|   .
-    }                                                             //                |   .
-    delete pan;                              // Delete the Nuclear Environment <-<--+   .
-  } //                                                                                  .
-  //else             // Use G4QuasmonString                                             .
-  //{ //                                                                                  ^
-  //  G4QuasmonString* pan= new G4QuasmonString(pH,false,targPDG,false);//-> DELETED --+  |
-  //  delete pH;                                                    // --------<-------+--+
-#ifdef debug
-  //  G4double mp=G4QPDGCode(projPDG).GetMass();   // Mass of the projectile particle  |
-  //  G4cout<<"G4QCollision::PostStepDoIt: pPDG="<<projPDG<<", pM="<<mp<<G4endl; //    |
-#endif
-  //  //G4int tNH=0;                    // Prototype of the number of secondaries inOut|
-  //  try                                                           //                 |
-  //  {                                                             //                 |
-  //    delete output;                                  //                   |
-  //    output = pan->Fragment();// DESTROYED in the end of the LOOP work space        |
-  //    // @@@@@@@@@@@@@@ Temporary for the testing purposes --- Begin                 |
-  //    //tNH=pan->GetNOfHadrons();     // For the test purposes of the String         |
-  //    //if(tNH==2)                    // At least 2 hadrons are in the Constr.Output |
-  // //{//                                                                          |
-  //    //  elF=true;                   // Just put a flag for the ellastic Scattering |
-  //    //  delete output;              // Delete a prototype of dummy G4QHadronVector |
-  //    //  output = pan->GetHadrons(); // DESTROYED in the end of the LOOP work space |
-  //    //}//                                                                          |
-  //    //eWei=pan->GetWeight();        // Just an example for the weight of the event |
-#ifdef debug
-  //    //G4cout<<"=====>>G4QCollision::PostStepDoIt: elF="<<elF<<",n="<<tNH<<G4endl;//|
-#endif
-  //    // @@@@@@@@@@@@@@ Temporary for the testing purposes --- End                   |
-  //  }                                                             //                 |
-  //  catch (G4QException& error)//                                                    |
-  //  {                                                             //                 |
-  //    //#ifdef pdebug
-  //    G4cerr<<"***G4QCollision::PostStepDoIt: GEN Exception is catched"<<G4endl; //  |
-  //    //#endif
-  //    G4Exception("G4QCollision::PostStDoIt:","27",FatalException,"QString Excep");//|
-  //  }                                                             //                 |
-  //  delete pan;                              // Delete the Nuclear Environment ---<--+
-  //}
-  // --- the scattered hadron with changed nature can be added here ---
-  if(scat)
-  {
-    G4QHadron* scatHadron = new G4QHadron(scatPDG,scat4M);
-    output->push_back(scatHadron);
-  }
-  G4int qNH=leadhs->size();
-  if(absMom)
-  {
-    if(qNH) for(G4int iq=0; iq<qNH; iq++)
-    {
-      G4QHadron* loh=(*leadhs)[iq];   // Pointer to the output hadron
-      output->push_back(loh);
-    }
-    delete leadhs;
-  }
-  // ------------- From here the secondaries are filled -------------------------
-  G4int tNH = output->size();       // A#of hadrons in the output
-  aParticleChange.SetNumberOfSecondaries(tNH); 
-  // Now add nuclear fragments
-#ifdef debug
-  G4cout<<"G4QCollision::PostStepDoIt: "<<tNH<<" particles are generated"<<G4endl;
-#endif
-#ifdef ppdebug
-  if(absMom)G4cout<<"G4QCollision::PostStepDoIt: t="<<tNH<<", q="<<qNH<<G4endl;
-#endif
-  G4int nOut=output->size();               // Real length of the output @@ Temporary
-  if(tNH==1 && !scat)                      // @@ Temporary. Find out why it happened!
-  {
-    G4cout<<"-Warning-G4QCollision::PostStepDoIt: 1 secondary! absMom="<<absMom;
-    if(absMom) G4cout<<", qNH="<<qNH;
-    G4cout<<", PDG0="<<(*output)[0]->GetPDGCode();
-    G4cout<<G4endl;
-    tNH=0;
-    delete output->operator[](0);          // delete the creazy hadron
-    output->pop_back();                    // clean up the output vector
-  }
-  if(tNH==2&&2!=nOut) G4cout<<"--Warning--G4QCollision::PostStepDoIt: 2 # "<<nOut<<G4endl;
-  // Deal with ParticleChange final state interface to GEANT4 output of the process
-  //if(tNH==2) for(i=0; i<tNH; i++)          // @@ Temporary tNH==2 instead of just tNH
-  if(tNH) for(i=0; i<tNH; i++)             // @@ Temporary tNH==2 instead of just tNH
-  {
-    // Note that one still has to take care of Hypernuclei (with Lambda or Sigma inside)
-    // Hypernucleus mass calculation and ion-table interface upgrade => work for Hisaya @@
-    // The decau process for hypernuclei must be developed in GEANT4 (change CHIPS body)
-    G4QHadron* hadr=(*output)[i];          // Pointer to the output hadron    
-    G4int PDGCode = hadr->GetPDGCode();
-    G4int nFrag   = hadr->GetNFragments();
-#ifdef pdebug
-    G4cout<<"G4QCollision::PostStepDoIt: H#"<<i<<",PDG="<<PDGCode<<",nF="<<nFrag
-          <<", 4Mom="<<hadr->Get4Momentum()<<G4endl;
-#endif
-    if(nFrag)                              // Skip intermediate (decayed) hadrons
-    {
-#ifdef debug
-      G4cout<<"G4QCollision::PostStepDoIt: Intermediate particle is found i="<<i<<G4endl;
-#endif
-      delete hadr;
-      continue;
-    }
-    G4DynamicParticle* theSec = new G4DynamicParticle;
-    G4ParticleDefinition* theDefinition;
-    if     (PDGCode==90000001) theDefinition = G4Neutron::Neutron();
-    else if(PDGCode==90001000) theDefinition = G4Proton::Proton();//While it can be in ions
-    else if(PDGCode==91000000) theDefinition = G4Lambda::Lambda();
-    else if(PDGCode==311 || PDGCode==-311)
-    {
-      if(G4UniformRand()>.5) theDefinition = G4KaonZeroLong::KaonZeroLong();   // K_L
-      else                   theDefinition = G4KaonZeroShort::KaonZeroShort(); // K_S
-    }
-    else if(PDGCode==91000999) theDefinition = G4SigmaPlus::SigmaPlus();
-    else if(PDGCode==90999001) theDefinition = G4SigmaMinus::SigmaMinus();
-    else if(PDGCode==91999000) theDefinition = G4XiMinus::XiMinus();
-    else if(PDGCode==91999999) theDefinition = G4XiZero::XiZero();
-    else if(PDGCode==92998999) theDefinition = G4OmegaMinus::OmegaMinus();
-    else if(PDGCode >80000000) // Defines hypernuclei as normal nuclei (N=N+S Correction!)
-    {
-      G4int aZ = hadr->GetCharge();
-      G4int aA = hadr->GetBaryonNumber();
-#ifdef pdebug
-      G4cout<<"G4QCollision::PostStepDoIt:Ion Z="<<aZ<<", A="<<aA<<G4endl;
-#endif
-      theDefinition = G4ParticleTable::GetParticleTable()->FindIon(aZ,aA,0,aZ);
-    }
-    //else theDefinition = G4ParticleTable::GetParticleTable()->FindParticle(PDGCode);
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QCollision::PostStepDoIt:Define particle with PDG="<<PDGCode<<G4endl;
-#endif
-      theDefinition = G4QPDGToG4Particle::Get()->GetParticleDefinition(PDGCode);
-#ifdef pdebug
-      G4cout<<"G4QCollision::PostStepDoIt:AfterParticleDefinition PDG="<<PDGCode<<G4endl;
-#endif
-    }
-    if(!theDefinition)
-    {
-#ifdef debug
-      G4cout<<"---Warning---G4QCollision::PostStepDoIt: drop PDG="<<PDGCode<<G4endl;
-#endif
-      delete hadr;
-      continue;
-    }
-#ifdef pdebug
-    G4cout<<"G4QCollision::PostStepDoIt:Name="<<theDefinition->GetParticleName()<<G4endl;
-#endif
-    theSec->SetDefinition(theDefinition);
-    G4LorentzVector h4M=hadr->Get4Momentum();
-    EnMomConservation-=h4M;
-#ifdef tdebug
-    G4cout<<"G4QCollis::PSDI:"<<i<<","<<PDGCode<<h4M<<h4M.m()<<EnMomConservation<<G4endl;
-#endif
-#ifdef debug
-    G4cout<<"G4QCollision::PostStepDoIt:#"<<i<<",PDG="<<PDGCode<<",4M="<<h4M<<G4endl;
-#endif
-    theSec->Set4Momentum(h4M); //                                                         ^
-    delete hadr; // <-----<-----------<-------------<---------------------<---------<-----+
-#ifdef debug
-    G4ThreeVector curD=theSec->GetMomentumDirection();              //                    ^
-    G4double curM=theSec->GetMass();                                //                    |
-    G4double curE=theSec->GetKineticEnergy()+curM;                  //                    ^
-    G4cout<<"G4QCollis::PSDoIt:p="<<curD<<curD.mag()<<",e="<<curE<<",m="<<curM<<G4endl;// |
-#endif
-    G4Track* aNewTrack = new G4Track(theSec, localtime, position ); //                    ^
-    aNewTrack->SetWeight(weight);                                   //    weighted        |
-    aNewTrack->SetTouchableHandle(trTouchable);                     //                    |
-    aParticleChange.AddSecondary( aNewTrack );                      //                    |
-#ifdef debug
-    G4cout<<"G4QCollision::PostStepDoIt:#"<<i<<" is done."<<G4endl; //                    |
-#endif
-  } //                                                                                    |
-  delete output; // instances of the G4QHadrons from the output are already deleted above +
-#ifdef debug
-  G4cout<<"G4QCollision::PostStDoIt: after St="<<aParticleChange.GetTrackStatus()<<G4endl;
-#endif
-  if(aProjPDG!=11 && aProjPDG!=13 && aProjPDG!=15)
-    aParticleChange.ProposeTrackStatus(fStopAndKill);        // Kill the absorbed particle
-  //return &aParticleChange;                               // This is not enough (ClearILL)
-#ifdef pdebug
-    G4cout<<"G4QCollision::PostStepDoIt: E="<<aParticleChange.GetEnergy()
-          <<", d="<<*aParticleChange.GetMomentumDirection()<<G4endl;
-#endif
-#ifdef ldebug
-  G4cout<<"G4QCollision::PostStepDoIt:*** PostStepDoIt is done ***, P="<<aProjPDG<<", St="
-        <<aParticleChange.GetTrackStatus()<<G4endl;
-#endif
-  return G4VDiscreteProcess::PostStepDoIt(track, step);
-}
-
-std::pair<G4double,G4double> G4QCollision::Random2DDirection()
-{
-  G4double sp=0;              // sin(phi)
-  G4double cp=1.;             // cos(phi)
-  G4double r2=2.;             // to enter the loop
-  while(r2>1. || r2<.0001)    // pi/4 efficiency
-  {
-    G4double s=G4UniformRand();
-    G4double c=G4UniformRand();
-    sp=1.-s-s;
-    cp=1.-c-c;
-    r2=sp*sp+cp*cp;
-  }
-  G4double norm=std::sqrt(r2);
-  return std::make_pair(sp/norm,cp/norm);
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QDiffraction.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QDiffraction.cc	(revision 1197)
+++ 	(revision )
@@ -1,580 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QDiffraction.cc,v 1.6 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QDiffraction class -----------------
-//                 by Mikhail Kossov, Aug 2007.
-// G4QDiffraction class of the CHIPS Simulation Branch in GEANT4
-// ---------------------------------------------------------------
-// Short description: This is a process, which describes the diffraction
-// excitation of the projectile and the nucleus. On nuclei in addition there
-// can be a coherent diffraction process for the projectile, but it is
-// comparably small. The most important part of the diffraction is the
-// progectile diffraction excitation, as in this interaction proton can lose
-// only a small part of its energy and make the shower longer. This is because
-// only 1-2 (n) pions are produce in the diffraction escitation, and the mean
-// kept energy of the nucleon is (1-n/7)=80%. For kaons the kept energy is much
-// smaller (1-n/3.5)=60%, and for pions it is less important (about 40%).
-// ----------------------------------------------------------------------------
-
-//#define debug
-//#define pdebug
-//#define tdebug
-//#define nandebug
-//#define ppdebug
-
-#include "G4QDiffraction.hh"
-
-// Initialization of static vectors
-G4int    G4QDiffraction::nPartCWorld=152;  // #of particles initialized in CHIPS
-std::vector<G4int> G4QDiffraction::ElementZ; // Z of element(i) in theLastCalc
-std::vector<G4double> G4QDiffraction::ElProbInMat; // SumProbOfElem in Material
-std::vector<std::vector<G4int>*> G4QDiffraction::ElIsoN;// N of isotope(j), E(i)
-std::vector<std::vector<G4double>*>G4QDiffraction::IsoProbInEl;//SumProbIsotE(i)
-
-// Constructor
-G4QDiffraction::G4QDiffraction(const G4String& processName):
- G4VDiscreteProcess(processName, fHadronic)
-{
-#ifdef debug
-  G4cout<<"G4QDiffraction::Constructor is called processName="<<processName<<G4endl;
-#endif
-  if (verboseLevel>0) G4cout << GetProcessName() << " process is created "<< G4endl;
-  SetProcessSubType(fHadronInelastic);
-  G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part. max)
-}
-
-// Destructor
-G4QDiffraction::~G4QDiffraction() {}
-
-
-G4LorentzVector G4QDiffraction::GetEnegryMomentumConservation(){return EnMomConservation;}
-
-G4int G4QDiffraction::GetNumberOfNeutronsInTarget() {return nOfNeutrons;}
-
-// output of the function must be in units of length! L=1/sig_V,sig_V=SUM(n(j,i)*sig(j,i)),
-// where n(i,j) is a number of nuclei of the isotop j of the element i in V=1(lengtUnit^3)
-// ********** All CHIPS cross sections are calculated in the surface units ************
-G4double G4QDiffraction::GetMeanFreePath(const G4Track&Track,G4double Q,G4ForceCondition*F)
-{
-  *F = NotForced;
-  const G4DynamicParticle* incidentParticle = Track.GetDynamicParticle();
-  G4ParticleDefinition* incidentParticleDefinition=incidentParticle->GetDefinition();
-  if( !IsApplicable(*incidentParticleDefinition))
-    G4cout<<"-Warning-G4QDiffraction::GetMeanFreePath for notImplemented Particle"<<G4endl;
-  // Calculate the mean Cross Section for the set of Elements(*Isotopes) in the Material
-  G4double Momentum = incidentParticle->GetTotalMomentum(); // 3-momentum of the Particle
-#ifdef debug
-  G4double KinEn = incidentParticle->GetKineticEnergy();
-  G4cout<<"G4QDiffraction::GetMeanFreePath:Prpj, kinE="<<KinEn<<", Mom="<<Momentum<<G4endl;
-#endif
-  const G4Material* material = Track.GetMaterial();        // Get the current material
-  const G4double* NOfNucPerVolume = material->GetVecNbOfAtomsPerVolume();
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QDiffraction::GetMeanFreePath:"<<nE<<" Elems in Material="<<*material<<G4endl;
-#endif
-  G4int pPDG=0;
-  // @@ At present it is made only for n & p, but can be extended if inXS are available
-  if     (incidentParticleDefinition == G4Proton::Proton()  ) pPDG=2212;
-  else if(incidentParticleDefinition == G4Neutron::Neutron()) pPDG=2112;
-  else G4cout<<"G4QDiffraction::GetMeanFreePath: only nA & pA are implemented"<<G4endl;
-  
-  G4QIsotope* Isotopes = G4QIsotope::Get(); // Pointer to the G4QIsotopes singleton
-  G4double sigma=0.;                        // Sums over elements for the material
-  G4int IPIE=IsoProbInEl.size();            // How many old elements?
-  if(IPIE) for(G4int ip=0; ip<IPIE; ++ip)   // Clean up the SumProb's of Isotopes (SPI)
-  {
-    std::vector<G4double>* SPI=IsoProbInEl[ip]; // Pointer to the SPI vector
-    SPI->clear();
-    delete SPI;
-    std::vector<G4int>* IsN=ElIsoN[ip];     // Pointer to the N vector
-    IsN->clear();
-    delete IsN;
-  }
-  ElProbInMat.clear();                      // Clean up the SumProb's of Elements (SPE)
-  ElementZ.clear();                         // Clear the body vector for Z of Elements
-  IsoProbInEl.clear();                      // Clear the body vector for SPI
-  ElIsoN.clear();                           // Clear the body vector for N of Isotopes
-  for(G4int i=0; i<nE; ++i)
-  {
-    G4Element* pElement=(*theElementVector)[i]; // Pointer to the current element
-    G4int Z = static_cast<G4int>(pElement->GetZ()); // Z of the Element
-    ElementZ.push_back(Z);                  // Remember Z of the Element
-    G4int isoSize=0;                        // The default for the isoVectorLength is 0
-    G4int indEl=0;                          // Index of non-natural element or 0(default)
-    G4IsotopeVector* isoVector=pElement->GetIsotopeVector(); // Get the predefined IsoVect
-    if(isoVector) isoSize=isoVector->size();// Get size of the existing isotopeVector
-#ifdef debug
-    G4cout<<"G4QDiffraction::GetMeanFreePath: isovector Length="<<isoSize<<G4endl;
-#endif
-    if(isoSize)                             // The Element has non-trivial abundance set
-    {
-      indEl=pElement->GetIndex()+1;         // Index of the non-trivial element is an order
-#ifdef debug
-      G4cout<<"G4QDiffr::GetMFP:iE="<<indEl<<",def="<<Isotopes->IsDefined(Z,indEl)<<G4endl;
-#endif
-      if(!Isotopes->IsDefined(Z,indEl))     // This index is not defined for this Z: define
-      {
-        std::vector<std::pair<G4int,G4double>*>* newAbund =
-                                               new std::vector<std::pair<G4int,G4double>*>;
-        G4double* abuVector=pElement->GetRelativeAbundanceVector();
-        for(G4int j=0; j<isoSize; j++)      // Calculation of abundance vector for isotopes
-        {
-          G4int N=pElement->GetIsotope(j)->GetN()-Z; // N means A=N+Z !
-          if(pElement->GetIsotope(j)->GetZ()!=Z)G4cerr<<"G4QDiffract::GetMeanFreePath: Z="
-                                         <<pElement->GetIsotope(j)->GetZ()<<"#"<<Z<<G4endl;
-          G4double abund=abuVector[j];
-          std::pair<G4int,G4double>* pr= new std::pair<G4int,G4double>(N,abund);
-#ifdef debug
-          G4cout<<"G4QDiffract::GetMeanFreePath:pair#"<<j<<",N="<<N<<",ab="<<abund<<G4endl;
-#endif
-          newAbund->push_back(pr);
-        }
-#ifdef debug
-        G4cout<<"G4QDiffract::GetMeanFreePath:pairVectorLength="<<newAbund->size()<<G4endl;
-#endif
-        indEl=G4QIsotope::Get()->InitElement(Z,indEl,newAbund); // definition of the newInd
-        for(G4int k=0; k<isoSize; k++) delete (*newAbund)[k];   // Cleaning temporary
-        delete newAbund; // Was "new" in the beginning of the name space
-      }
-    }
-    std::vector<std::pair<G4int,G4double>*>* cs= Isotopes->GetCSVector(Z,indEl);//CSPointer
-    std::vector<G4double>* SPI = new std::vector<G4double>; // Pointer to the SPI vector
-    IsoProbInEl.push_back(SPI);
-    std::vector<G4int>* IsN = new std::vector<G4int>; // Pointer to the N vector
-    ElIsoN.push_back(IsN);
-    G4int nIs=cs->size();                   // A#Of Isotopes in the Element
-#ifdef debug
-    G4cout<<"G4QDiffract::GetMFP:=***=>,#isot="<<nIs<<", Z="<<Z<<", indEl="<<indEl<<G4endl;
-#endif
-    G4double susi=0.;                       // sum of CS over isotopes
-    if(nIs) for(G4int j=0; j<nIs; j++)      // Calculate CS for eachIsotope of El
-    {
-      std::pair<G4int,G4double>* curIs=(*cs)[j]; // A pointer, which is used twice
-      G4int N=curIs->first;                 // #of Neuterons in the isotope j of El i
-      IsN->push_back(N);                    // Remember Min N for the Element
-#ifdef debug
-      G4cout<<"G4QDiff::GMFP:true,P="<<Momentum<<",Z="<<Z<<",N="<<N<<",PDG="<<pPDG<<G4endl;
-#endif
-      G4bool ccsf=true;
-      if(Q==-27.) ccsf=false;
-#ifdef debug
-      G4cout<<"G4QDiffraction::GMFP: GetCS #1 j="<<j<<G4endl;
-#endif
-      G4double CSI=CalculateXS(Momentum, Z, N, pPDG); // XS(j,i) for theIsotope
-
-#ifdef debug
-      G4cout<<"G4QDiffraction::GetMeanFreePath: jI="<<j<<", Zt="<<Z<<", Nt="<<N<<", Mom="
-            <<Momentu<<", XSec="<<CSI/millibarn<<G4endl;
-#endif
-      curIs->second = CSI;
-      susi+=CSI;                            // Make a sum per isotopes
-      SPI->push_back(susi);                 // Remember summed cross-section
-    } // End of temporary initialization of the cross sections in the G4QIsotope singeltone
-    sigma+=Isotopes->GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i];//SUM(MeanCS*NOfNperV)
-#ifdef debug
-    G4cout<<"G4QDiffraction::GetMeanFreePath:<XS>="<<Isotopes->GetMeanCrossSection(Z,indEl)
-          <<",AddSigm="<<Isotopes->GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i]<<G4endl;
-#endif
-    ElProbInMat.push_back(sigma);
-  } // End of LOOP over Elements
-  // Check that cross section is not zero and return the mean free path
-#ifdef debug
-  G4cout<<"G4QDiffraction::GetMeanFreePath: MeanFreePath="<<1./sigma<<G4endl;
-#endif
-  if(sigma > 0.) return 1./sigma;                 // Mean path [distance] 
-  return DBL_MAX;
-}
-
-G4bool G4QDiffraction::IsApplicable(const G4ParticleDefinition& particle) 
-{
-  if      (particle == *(        G4Proton::Proton()        )) return true;
-  else if (particle == *(       G4Neutron::Neutron()       )) return true;
-  //else if (particle == *(     G4MuonMinus::MuonMinus()     )) return true; 
-  //else if (particle == *(       G4TauPlus::TauPlus()       )) return true;
-  //else if (particle == *(      G4TauMinus::TauMinus()      )) return true;
-  //else if (particle == *(      G4Electron::Electron()      )) return true;
-  //else if (particle == *(      G4Positron::Positron()      )) return true;
-  //else if (particle == *(         G4Gamma::Gamma()         )) return true;
-  //else if (particle == *(      G4MuonPlus::MuonPlus()      )) return true;
-  //else if (particle == *(G4AntiNeutrinoMu::AntiNeutrinoMu())) return true;
-  //else if (particle == *(    G4NeutrinoMu::NeutrinoMu()    )) return true;
-  //else if (particle == *(     G4PionMinus::PionMinus()     )) return true;
-  //else if (particle == *(      G4PionPlus::PionPlus()      )) return true;
-  //else if (particle == *(      G4KaonPlus::KaonPlus()      )) return true;
-  //else if (particle == *(     G4KaonMinus::KaonMinus()     )) return true;
-  //else if (particle == *(  G4KaonZeroLong::KaonZeroLong()  )) return true;
-  //else if (particle == *( G4KaonZeroShort::KaonZeroShort() )) return true;
-  //else if (particle == *(        G4Lambda::Lambda()        )) return true;
-  //else if (particle == *(     G4SigmaPlus::SigmaPlus()     )) return true;
-  //else if (particle == *(    G4SigmaMinus::SigmaMinus()    )) return true;
-  //else if (particle == *(     G4SigmaZero::SigmaZero()     )) return true;
-  //else if (particle == *(       G4XiMinus::XiMinus()       )) return true;
-  //else if (particle == *(        G4XiZero::XiZero()        )) return true;
-  //else if (particle == *(    G4OmegaMinus::OmegaMinus()    )) return true;
-  //else if (particle == *(   G4AntiNeutron::AntiNeutron()   )) return true;
-  //else if (particle == *(    G4AntiProton::AntiProton()    )) return true;
-#ifdef debug
-  G4cout<<"***>>G4QDiffraction::IsApplicable: projPDG="<<particle.GetPDGEncoding()<<G4endl;
-#endif
-  return false;
-}
-
-G4VParticleChange* G4QDiffraction::PostStepDoIt(const G4Track& track, const G4Step& step)
-{
-  static const G4double mProt= G4QPDGCode(2212).GetMass();     // CHIPS proton Mass in MeV
-  static const G4double mNeut= G4QPDGCode(2112).GetMass();     // CHIPS neutron Mass in MeV
-  static const G4double mPion= G4QPDGCode(111).GetMass();      // CHIPS Pi0 Mass in MeV
-  static G4QDiffractionRatio* diffRatio;
-  //
-  //-------------------------------------------------------------------------------------
-  static G4bool CWinit = true;                       // CHIPS Warld needs to be initted
-  if(CWinit)
-  {
-    CWinit=false;
-    G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part.max)
-    diffRatio=G4QDiffractionRatio::GetPointer();
-  }
-  //-------------------------------------------------------------------------------------
-  const G4DynamicParticle* projHadron = track.GetDynamicParticle();
-  const G4ParticleDefinition* particle=projHadron->GetDefinition();
-#ifdef debug
-  G4cout<<"G4QDiffraction::PostStepDoIt: Before the GetMeanFreePath is called In4M="
-        <<projHadron->Get4Momentum()<<" of PDG="<<particle->GetPDGEncoding()<<", Type="
-        <<particle->GetParticleType()<<",SubType="<<particle->GetParticleSubType()<<G4endl;
-#endif
-  G4ForceCondition cond=NotForced;
-  GetMeanFreePath(track, -27., &cond);                  // @@ ?? jus to update parameters?
-#ifdef debug
-  G4cout<<"G4QDiffraction::PostStepDoIt: After GetMeanFreePath is called"<<G4endl;
-#endif
-  G4LorentzVector proj4M=(projHadron->Get4Momentum())/MeV; // Convert to MeV!
-  G4double momentum = projHadron->GetTotalMomentum()/MeV; // 3-momentum of the Proj in MeV
-  G4double Momentum = proj4M.rho();                   // @@ Just for the test purposes
-  if(std::fabs(Momentum-momentum)>.000001)
-    G4cerr<<"-Warning-G4QDiffraction::PostStepDoIt:P_IU="<<Momentum<<"#"<<momentum<<G4endl;
-#ifdef pdebug
-  G4cout<<"G4QDiffraction::PostStepDoIt: pP(IU)="<<Momentum<<"="<<momentum
-        <<",proj4M="<<proj4M<<", projM="<<proj4M.m()<<G4endl;
-#endif
-  if (!IsApplicable(*particle))  // Check applicability
-  {
-    G4cerr<<"G4QDiffraction::PostStepDoIt: Only NA is implemented."<<G4endl;
-    return 0;
-  }
-  const G4Material* material = track.GetMaterial();      // Get the current material
-  G4int Z=0;
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QDiffraction::PostStepDoIt: "<<nE<<" elements in the material."<<G4endl;
-#endif
-  G4int projPDG=0;                           // PDG Code prototype for the captured hadron
-  // Not all these particles are implemented yet (see Is Applicable)
-  if      (particle ==          G4Proton::Proton()         ) projPDG= 2212;
-  else if (particle ==         G4Neutron::Neutron()        ) projPDG= 2112;
-  //else if (particle ==       G4PionMinus::PionMinus()      ) projPDG= -211;
-  //else if (particle ==        G4PionPlus::PionPlus()       ) projPDG=  211;
-  //else if (particle ==        G4KaonPlus::KaonPlus()       ) projPDG=  321;
-  //else if (particle ==       G4KaonMinus::KaonMinus()      ) projPDG= -321;
-  //else if (particle ==    G4KaonZeroLong::KaonZeroLong()   ) projPDG=  130;
-  //else if (particle ==   G4KaonZeroShort::KaonZeroShort()  ) projPDG=  310;
-  //else if (particle ==        G4MuonPlus::MuonPlus()       ) projPDG=  -13;
-  //else if (particle ==       G4MuonMinus::MuonMinus()      ) projPDG=   13;
-  //else if (particle ==      G4NeutrinoMu::NeutrinoMu()     ) projPDG=   14;
-  //else if (particle ==  G4AntiNeutrinoMu::AntiNeutrinoMu() ) projPDG=  -14;
-  //else if (particle ==        G4Electron::Electron()       ) projPDG=   11;
-  //else if (particle ==        G4Positron::Positron()       ) projPDG=  -11;
-  //else if (particle ==       G4NeutrinoE::NeutrinoE()      ) projPDG=   12;
-  //else if (particle ==   G4AntiNeutrinoE::AntiNeutrinoE()  ) projPDG=  -12;
-  //else if (particle ==           G4Gamma::Gamma()          ) projPDG=   22;
-  //else if (particle ==         G4TauPlus::TauPlus()        ) projPDG=  -15;
-  //else if (particle ==        G4TauMinus::TauMinus()       ) projPDG=   15;
-  //else if (particle ==     G4NeutrinoTau::NeutrinoTau()    ) projPDG=   16;
-  //else if (particle == G4AntiNeutrinoTau::AntiNeutrinoTau()) projPDG=  -16;
-  //else if (particle ==          G4Lambda::Lambda()         ) projPDG= 3122;
-  //else if (particle ==       G4SigmaPlus::SigmaPlus()      ) projPDG= 3222;
-  //else if (particle ==      G4SigmaMinus::SigmaMinus()     ) projPDG= 3112;
-  //else if (particle ==       G4SigmaZero::SigmaZero()      ) projPDG= 3212;
-  //else if (particle ==         G4XiMinus::XiMinus()        ) projPDG= 3312;
-  //else if (particle ==          G4XiZero::XiZero()         ) projPDG= 3322;
-  //else if (particle ==      G4OmegaMinus::OmegaMinus()     ) projPDG= 3334;
-  //else if (particle ==     G4AntiNeutron::AntiNeutron()    ) projPDG=-2112;
-  //else if (particle ==      G4AntiProton::AntiProton()     ) projPDG=-2212;
-#ifdef debug
-  G4int prPDG=particle->GetPDGEncoding();
-  G4cout<<"G4QDiffraction::PostStepDoIt: projPDG="<<projPDG<<", stPDG="<<prPDG<<G4endl;
-#endif
-  if(!projPDG)
-  {
-    G4cerr<<"-Warning-G4QDiffraction::PostStepDoIt:UndefProjHadron(PDG=0) ->ret 0"<<G4endl;
-    return 0;
-  }
-  //G4double pM2=proj4M.m2();        // in MeV^2
-  //G4double pM=std::sqrt(pM2);      // in MeV
-  G4double pM=mNeut;
-  G4int    fPDG=2112;
-  if(projPDG==2112)
-  {
-    pM=mProt;
-    fPDG=2212;
-  }
-  // Element treatment
-  G4int EPIM=ElProbInMat.size();
-#ifdef debug
-  G4cout<<"G4QDiffra::PostStDoIt: m="<<EPIM<<",n="<<nE<<",T="<<ElProbInMat[EPIM-1]<<G4endl;
-#endif
-  G4int i=0;
-  if(EPIM>1)
-  {
-    G4double rnd = ElProbInMat[EPIM-1]*G4UniformRand();
-    for(i=0; i<nE; ++i)
-    {
-#ifdef debug
-      G4cout<<"G4QDiffra::PostStepDoIt: EPM["<<i<<"]="<<ElProbInMat[i]<<",r="<<rnd<<G4endl;
-#endif
-      if (rnd<ElProbInMat[i]) break;
-    }
-    if(i>=nE) i=nE-1;                        // Top limit for the Element
-  }
-  G4Element* pElement=(*theElementVector)[i];
-  Z=static_cast<G4int>(pElement->GetZ());
-#ifdef debug
-    G4cout<<"G4QDiffraction::PostStepDoIt: i="<<i<<", Z(element)="<<Z<<G4endl;
-#endif
-  if(Z<=0)
-  {
-    G4cerr<<"-Warning-G4QDiffraction::PostStepDoIt: Element with Z="<<Z<<G4endl;
-    if(Z<0) return 0;
-  }
-  std::vector<G4double>* SPI = IsoProbInEl[i];// Vector of summedProbabilities for isotopes
-  std::vector<G4int>* IsN = ElIsoN[i];     // Vector of "#of neutrons" in the isotope El[i]
-  G4int nofIsot=SPI->size();               // #of isotopes in the element i
-#ifdef debug
-  G4cout<<"G4QDiffraction::PostStepDoIt: nI="<<nofIsot<<", T="<<(*SPI)[nofIsot-1]<<G4endl;
-#endif
-  G4int j=0;
-  if(nofIsot>1)
-  {
-    G4double rndI=(*SPI)[nofIsot-1]*G4UniformRand(); // Randomize the isotop of the Element
-    for(j=0; j<nofIsot; ++j)
-    {
-#ifdef debug
-      G4cout<<"G4QDiffraction::PostStepDoIt: SP["<<j<<"]="<<(*SPI)[j]<<",r="<<rndI<<G4endl;
-#endif
-      if(rndI < (*SPI)[j]) break;
-    }
-    if(j>=nofIsot) j=nofIsot-1;            // Top limit for the isotope
-  }
-  G4int N =(*IsN)[j]; ;                    // Randomized number of neutrons
-#ifdef debug
-  G4cout<<"G4QDiffraction::PostStepDoIt: j="<<i<<", N(isotope)="<<N<<", MeV="<<MeV<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"-Warning-G4QDiffraction::PostStepDoIt: Isotope Z="<<Z<<" has 0>N="<<N<<G4endl;
-    return 0;
-  }
-  nOfNeutrons=N;                           // Remember it for the energy-momentum check
-#ifdef debug
-  G4cout<<"G4QDiffraction::PostStepDoIt: N="<<N<<" for element with Z="<<Z<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"*Warning*G4QDiffraction::PostStepDoIt:Element with N="<<N<< G4endl;
-    return 0;
-  }
-  aParticleChange.Initialize(track);
-#ifdef debug
-  G4cout<<"G4QDiffraction::PostStepDoIt: track is initialized"<<G4endl;
-#endif
-  G4double      weight    = track.GetWeight();
-  G4double      localtime = track.GetGlobalTime();
-  G4ThreeVector position  = track.GetPosition();
-#ifdef debug
-  G4cout<<"G4QDiffraction::PostStepDoIt: before Touchable extraction"<<G4endl;
-#endif
-  G4TouchableHandle trTouchable = track.GetTouchableHandle();
-#ifdef debug
-  G4cout<<"G4QDiffraction::PostStepDoIt: Touchable is extracted"<<G4endl;
-#endif
-  G4int targPDG=90000000+Z*1000+N;         // CHIPS PDG Code of the target nucleus
-  G4QPDGCode targQPDG(targPDG);            // @@ use G4Ion and get rid of CHIPS World
-  G4double tM=targQPDG.GetMass();          // CHIPS final nucleus mass in MeV
-  G4double kinEnergy= projHadron->GetKineticEnergy()*MeV; // Kin energy in MeV (Is *MeV n?)
-  G4ParticleMomentum dir = projHadron->GetMomentumDirection();// It is a unit three-vector
-  G4LorentzVector tot4M=proj4M+G4LorentzVector(0.,0.,0.,tM); // Total 4-mom of the reaction
-#ifdef debug
-  G4cout<<"G4QDiffraction::PostStepDoIt: tM="<<tM<<",p4M="<<proj4M<<",t4M="<<tot4M<<G4endl;
-#endif
-  EnMomConservation=tot4M;                 // Total 4-mom of reaction for E/M conservation
-  // @@ Probably this is not necessary any more
-#ifdef debug
-  G4cout<<"G4QDiff::PSDI:false,P="<<Momentum<<",Z="<<Z<<",N="<<N<<",PDG="<<projPDG<<G4endl;
-#endif
-  G4double xSec=CalculateXS(Momentum, Z, N, projPDG); // Recalculate CrossSection
-#ifdef debug
-  G4cout<<"G4QDiffra::PSDI:PDG="<<projPDG<<",P="<<Momentum<<",XS="<<xSec/millibarn<<G4endl;
-#endif
-#ifdef nandebug
-  if(xSec>0. || xSec<0. || xSec==0);
-  else  G4cout<<"-Warning-G4QDiffraction::PostSDI: *NAN* xSec="<<xSec/millibarn<<G4endl;
-#endif
-  // @@ check a possibility to separate p, n, or alpha (!)
-  if(xSec <= 0.) // The cross-section iz 0 -> Do Nothing
-  {
-#ifdef pdebug
-    G4cerr<<"*Warning*G4QDiffraction::PSDoIt:*Zero cross-section* PDG="<<projPDG
-          <<",tPDG="<<targPDG<<",P="<<Momentum<<G4endl;
-#endif
-    //Do Nothing Action insead of the reaction
-    aParticleChange.ProposeEnergy(kinEnergy);
-    aParticleChange.ProposeLocalEnergyDeposit(0.);
-    aParticleChange.ProposeMomentumDirection(dir) ;
-    return G4VDiscreteProcess::PostStepDoIt(track,step);
-  }
-  G4double totCMMass=tot4M.m(); // Total CM mass, pM=projectileMass, tM=targetMass
-  if(totCMMass < mPion+pM+tM) // The diffraction reaction is impossible -> Do Nothing
-  {
-#ifdef pdebug
-    G4cerr<<"*Warning*G4QDiffraction::PSDoIt:*Below Diffraction Threshold* cmM="<<totCMMass
-          <<">pM="<<pM<<"+tM="<<tM<<"+pi0="<<mPion<<"=="<<pM+tM+mPion<<G4endl;
-#endif
-    //Do Nothing Action insead of the reaction
-    aParticleChange.ProposeEnergy(kinEnergy);
-    aParticleChange.ProposeLocalEnergyDeposit(0.);
-    aParticleChange.ProposeMomentumDirection(dir) ;
-    return G4VDiscreteProcess::PostStepDoIt(track,step);
-  }
-  // Kill interacting hadron
-  aParticleChange.ProposeTrackStatus(fStopAndKill);
-  G4QHadronVector* out=diffRatio->TargFragment(projPDG, proj4M, Z, N);
-  G4int nSec=out->size();             // #of secondaries in the diffraction reaction
-  G4DynamicParticle* theSec=0;        // A prototype for secondary for the secondary
-  G4LorentzVector dif4M(0.,0.,0.,0.); // Prototype for the secondary 4-momentum
-  G4int difPDG=0;                     // PDG code of the secondary
-  G4QHadron* difQH=0;                 // Prototype for a Q-secondary
-#ifdef pdebug
-  G4cout<<"G4QDiffraction::PostStepDoIt: =====found===== nSecondaries="<<nSec<<G4endl;
-#endif
-  for(G4int i=0; i<nSec; i++)
-  {
-    difQH = (*out)[i];
-    difPDG= difQH->GetPDGCode();
-    G4ParticleDefinition*  theDefinition=0;
-    if     (difPDG==2212 || difPDG==90001000) theDefinition=G4Proton::Proton();
-    else if(difPDG==2112 || difPDG==90000001) theDefinition=G4Neutron::Neutron();
-    else if(difPDG==  22) theDefinition=G4Gamma::Gamma();
-    else if(difPDG== 111) theDefinition=G4PionZero::PionZero();
-    else if(difPDG==-211 || difPDG==89999001) theDefinition=G4PionMinus::PionMinus();
-    else if(difPDG== 211 || difPDG==90000999) theDefinition=G4PionPlus::PionPlus();
-    else if(difPDG== 321 || difPDG==89001000) theDefinition=G4KaonPlus::KaonPlus();
-    else if(difPDG==-321 || difPDG==90999000) theDefinition=G4KaonMinus::KaonMinus();
-    else if(difPDG== 130 || difPDG==-311 || difPDG==89000001)
-                                              theDefinition=G4KaonZeroLong::KaonZeroLong();
-    else if(difPDG== 310 || difPDG== 311 || difPDG==90999999)
-                                            theDefinition=G4KaonZeroShort::KaonZeroShort();
-    else if(difPDG==3122 || difPDG==91000000) theDefinition=G4Lambda::Lambda();
-    else if(difPDG== 3222) theDefinition=G4SigmaPlus::SigmaPlus();
-    else if(difPDG== 3112) theDefinition=G4SigmaMinus::SigmaMinus();
-    else if(difPDG== 3212) theDefinition=G4SigmaZero::SigmaZero();
-    else if(difPDG== 3312) theDefinition=G4XiMinus::XiMinus();
-    else if(difPDG== 3322) theDefinition=G4XiZero::XiZero();
-    else if(difPDG== 3334) theDefinition=G4OmegaMinus::OmegaMinus();
-    else if(difPDG==-2112) theDefinition=G4AntiNeutron::AntiNeutron();
-    else if(difPDG==-2212) theDefinition=G4AntiProton::AntiProton();
-    else if(difPDG==-3122) theDefinition=G4AntiLambda::AntiLambda();
-    else if(difPDG==-3222) theDefinition=G4AntiSigmaPlus::AntiSigmaPlus();
-    else if(difPDG==-3112) theDefinition=G4AntiSigmaMinus::AntiSigmaMinus();
-    else if(difPDG==-3212) theDefinition=G4AntiSigmaZero::AntiSigmaZero();
-    else if(difPDG==-3312) theDefinition=G4AntiXiMinus::AntiXiMinus();
-    else if(difPDG==-3322) theDefinition=G4AntiXiZero::AntiXiZero();
-    else if(difPDG==-3334) theDefinition=G4AntiOmegaMinus::AntiOmegaMinus();
-    else if(difPDG==  -11) theDefinition=G4Electron::Electron();
-    else if(difPDG==  -13) theDefinition=G4MuonMinus::MuonMinus();
-    else if(difPDG==   11) theDefinition=G4Positron::Positron();
-    else if(difPDG==   13) theDefinition=G4MuonPlus::MuonPlus();
-    else
-    {
-      G4int Z = difQH->GetCharge();
-      G4int B = difQH->GetBaryonNumber();
-      G4int S = difQH->GetStrangeness();
-      if(S||Z>B||Z<0)G4cout<<"-Warning-G4QDif::PoStDoIt:Z="<<Z<<",A="<<B<<",S="<<S<<G4endl;
-      theDefinition = G4ParticleTable::GetParticleTable()->FindIon(Z,B,0,0);
-#ifdef pdebug
-      G4cout<<"G4QDiffraction::PoStDoIt:Ion,Z="<<Z<<",A="<<B<<",D="<<theDefinition<<G4endl;
-#endif
-    }
-    if(theDefinition)
-    {
-      theSec = new G4DynamicParticle;       // A secondary for the recoil hadron 
-      theSec->SetDefinition(theDefinition);
-      dif4M  = difQH->Get4Momentum();
-      EnMomConservation-=dif4M;
-      theSec->Set4Momentum(dif4M);
-      G4Track* aNewTrack = new G4Track(theSec, localtime, position );
-      aNewTrack->SetWeight(weight);                                   //    weighted
-      aNewTrack->SetTouchableHandle(trTouchable);
-      aParticleChange.AddSecondary( aNewTrack );
-#ifdef pdebug
-      G4cout<<"G4QDiffraction::PostStepDoIt: Filled 4M="<<dif4M<<", PDG="<<difPDG<<G4endl;
-#endif
-    }
-    else G4cout<<"-Warning-G4QDif::PSDI: Lost PDG="<<difPDG<<", Z="<<difQH->GetCharge()
-               <<", A="<<difQH->GetBaryonNumber()<<",S ="<<difQH->GetStrangeness()<<G4endl;
-    delete difQH; // Clean up the output QHadrons
-  }
-  delete out;     // Delete the output QHadron-vector
-#ifdef debug
-  G4cout<<"G4QDiffraction::PostStepDoIt:*** PostStepDoIt is done ***"<<G4endl;
-#endif
-  return G4VDiscreteProcess::PostStepDoIt(track, step);
-}
-
-G4double G4QDiffraction::CalculateXS(G4double p, G4int Z, G4int N, G4int PDG) 
-{
-  static G4bool first=true;
-  static G4VQCrossSection* CSmanager;
-  static G4QDiffractionRatio* diffRatio;
-  if(first)                              // Connection with a singletone
-  {
-    CSmanager=G4QProtonNuclearCrossSection::GetPointer();
-    diffRatio=G4QDiffractionRatio::GetPointer();
-    first=false;
-  }
-  //G4double x=CSmanager->GetCrossSection(true, p, Z, N, PDG); // inelastic XS
-  //G4double pIU=p*GeV;                                        // IndependentUnistMomentum
-  //G4double r=diffRatio->GetRatio(pIU, PDG, Z, N);            // Proj. Diffraction Part
-  //G4double s=x*r;                                            // XS for proj. diffraction
-  G4double s=diffRatio->GetTargSingDiffXS(p, PDG, Z, N);     // XS for target diffraction
-#ifdef debug
-  G4cout<<"G4QDiff::CXS:p="<<p<<",Z="<<Z<<",N="<<N<<",C="<<PDG<<",XS="<<s<<G4endl;
-#endif
-  return s;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QDiffractionRatio.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QDiffractionRatio.cc	(revision 1197)
+++ 	(revision )
@@ -1,1320 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QDiffractionRatio.cc,v 1.10 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QDiffractionRatio for N+A Diffraction Interactions
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 15-Oct-06
-// 
-//=======================================================================
-// Short description: Difraction excitation is a part of the incoherent
-// (inelastic) interaction. This part is calculated in the class.
-// --------------------------------------------------------------------
-
-//#define debug
-//#define pdebug
-//#define fdebug
-//#define nandebug
-
-#include "G4QDiffractionRatio.hh"
-
-// Returns Pointer to the G4VQCrossSection class
-G4QDiffractionRatio* G4QDiffractionRatio::GetPointer()
-{
-  static G4QDiffractionRatio theRatios;   // *** Static body of the Diffraction Ratio ***
-  return &theRatios;
-}
-
-// Calculation of pair(QuasiFree/Inelastic,QuasiElastic/QuasiFree)
-G4double G4QDiffractionRatio::GetRatio(G4double pIU, G4int pPDG, G4int tgZ, G4int tgN)
-{
-  static const G4double mNeut= G4QPDGCode(2112).GetMass();
-  static const G4double mProt= G4QPDGCode(2212).GetMass();
-  static const G4double mN=.5*(mNeut+mProt);
-  static const G4double dmN=mN+mN;
-  static const G4double mN2=mN*mN;
-  // Table parameters
-  static const G4int    nps=100;        // Number of steps in the R(s) LinTable
-  static const G4int    mps=nps+1;      // Number of elements in the R(s) LinTable
-  static const G4double sma=6.;         // The first LinTabEl(sqs=0)=1., sqs>sma -> logTab
-  static const G4double ds=sma/nps;     // Step of the linear Table
-  static const G4int    nls=150;        // Number of steps in the R(lns) logTable
-  static const G4int    mls=nls+1;      // Number of elements in the R(lns) logTable
-  static const G4double lsi=1.79;       // The min ln(sqs) logTabEl(sqs=5.99 < sma=6.)
-  static const G4double lsa=8.;         // The max ln(sqs) logTabEl(sqs=5.99 - 2981 GeV)
-  static const G4double mi=std::exp(lsi);// The min s of logTabEl(~ 5.99 GeV)
-  static const G4double ms=std::exp(lsa);// The max s of logTabEl(~ 2981 GeV)
-  static const G4double dl=(lsa-lsi)/nls;// Step of the logarithmic Table
-  static const G4double edl=std::exp(dl);// Multiplication step of the logarithmic Table
-  static const G4double toler=.0001;    // Tolarence (GeV) defining the same sqs
-  static G4double lastS=0.;             // Last sqs value for which R was calculated
-  static G4double lastR=0.;             // Last ratio R which was calculated
-  // Local Associative Data Base:
-  static std::vector<G4int>     vA;     // Vector of calculated A
-  static std::vector<G4double>  vH;     // Vector of max sqs initialized in the LinTable
-  static std::vector<G4int>     vN;     // Vector of topBin number initialized in LinTable
-  static std::vector<G4double>  vM;     // Vector of relMax ln(sqs) initialized in LogTable
-  static std::vector<G4int>     vK;     // Vector of topBin number initialized in LogTable
-  static std::vector<G4double*> vT;     // Vector of pointers to LinTable in C++ heap
-  static std::vector<G4double*> vL;     // Vector of pointers to LogTable in C++ heap
-  // Last values of the Associative Data Base:
-  static G4int     lastPDG=0;           // Last PDG for which R was calculated (now indep)
-  static G4int     lastA=0;             // theLast of calculated A
-  static G4double  lastH=0.;            // theLast of max sqs initialized in the LinTable
-  static G4int     lastN=0;             // theLast of topBin number initialized in LinTable
-  static G4double  lastM=0.;            // theLast of relMax ln(sqs) initialized in LogTab.
-  static G4int     lastK=0;             // theLast of topBin number initialized in LogTable
-  static G4double* lastT=0;             // theLast of pointer to LinTable in the C++ heap
-  static G4double* lastL=0;             // theLast of pointer to LogTable in the C++ heap
-  // LogTable is created only if necessary. R(sqs>2981GeV) calcul by formula for any nuclei
-  G4int A=tgN+tgZ;
-  if(pIU<toler || A<1) return 1.;       // Fake use of toler as non zero number
-  if(A>238)
-  {
-    G4cout<<"-*-Warning-*-G4QuasiFreeRatio::GetRatio: A="<<A<<">238, return zero"<<G4endl;
-    return 0.;
-  }
-  lastPDG=pPDG;                         // @@ at present ratio is PDG independent @@
-  // Calculate sqs
-  G4double pM=G4QPDGCode(pPDG).GetMass()*.001; // Projectile mass in GeV
-  G4double pM2=pM*pM;
-  G4double mom=pIU/gigaelectronvolt;    // Projectile momentum in GeV
-  G4double s=std::sqrt(mN2+pM2+dmN*std::sqrt(pM2+mom*mom));
-  G4int nDB=vA.size();                  // A number of nuclei already initialized in AMDB
-  //  if(nDB && lastA==A && std::fabs(s-lastS)<toler) return lastR;
-  if(nDB && lastA==A && s==lastS) return lastR;   // VI do not use toler
-  if(s>ms)
-  {
-    lastR=CalcDiff2Prod_Ratio(s,A);     // @@ Probably user ought to be notified about bigS
-    return lastR;
-  }
-  G4bool found=false;
-  G4int i=-1;
-  if(nDB) for (i=0; i<nDB; i++) if(A==vA[i]) // Sirch for this A in AMDB
-  {
-    found=true;                         // The A value is found
-    break;
-  }
-  if(!nDB || !found)                    // Create new line in the AMDB
-  {
-    lastA = A;
-    lastT = new G4double[mps];          // Create the linear Table
-    lastN = static_cast<int>(s/ds)+1;   // MaxBin to be initialized
-    if(lastN>nps)
-    {
-      lastN=nps;
-      lastH=sma;
-    }
-    else lastH = lastN*ds;              // Calculate max initialized s for LinTab
-    G4double sv=0;
-    lastT[0]=1.;
-    for(G4int j=1; j<=lastN; j++)       // Calculate LinTab values
-    {
-      sv+=ds;
-      lastT[j]=CalcDiff2Prod_Ratio(sv,A);
-    }
-    if(s>sma)                           // Initialize the logarithmic Table
-    {
-      lastL=new G4double[mls];          // Create the logarithmic Table
-      G4double ls=std::log(s);
-      lastK = static_cast<int>((ls-lsi)/dl)+1; // MaxBin to be initialized in LogTaB
-      if(lastK>nls)
-      {
-        lastK=nls;
-        lastM=lsa-lsi;
-      }
-      else lastM = lastK*dl;            // Calculate max initialized ln(s)-lsi for LogTab
-      sv=mi;
-      for(G4int j=0; j<=lastK; j++)     // Calculate LogTab values
-      {
-        lastL[j]=CalcDiff2Prod_Ratio(sv,A);
-        if(j!=lastK) sv*=edl;
-      }
-    }
-    else                                // LogTab is not initialized
-    {
-      lastL = 0;
-      lastK = 0;
-      lastM = 0.;
-    }
-    i++;                                // Make a new record to AMDB and position on it
-    vA.push_back(lastA);
-    vH.push_back(lastH);
-    vN.push_back(lastN);
-    vM.push_back(lastM);
-    vK.push_back(lastK);
-    vT.push_back(lastT);
-    vL.push_back(lastL);
-  }
-  else                                  // The A value was found in AMDB
-  {
-    lastA=vA[i];
-    lastH=vH[i];
-    lastN=vN[i];
-    lastM=vM[i];
-    lastK=vK[i];
-    lastT=vT[i];
-    lastL=vL[i];
-    if(s>lastM)                          // At least LinTab must be updated
-    {
-      G4int nextN=lastN+1;               // The next bin to be initialized
-      if(lastN<nps)
-      {
-        lastN = static_cast<int>(s/ds)+1;// MaxBin to be initialized
-        if(lastN>nps)
-        {
-          lastN=nps;
-          lastH=sma;
-        }
-        else lastH = lastN*ds;           // Calculate max initialized s for LinTab
-        G4double sv=lastM;
-        for(G4int j=nextN; j<=lastN; j++)// Calculate LogTab values
-        {
-          sv+=ds;
-          lastT[j]=CalcDiff2Prod_Ratio(sv,A);
-        }
-      } // End of LinTab update
-      if(lastN>=nextN)
-      {
-        vH[i]=lastH;
-        vN[i]=lastN;
-      }
-      G4int nextK=lastK+1;
-      if(s>sma && lastK<nls)             // LogTab must be updated
-      {
-        G4double sv=std::exp(lastM+lsi); // Define starting poit (lastM will be changed)
-        G4double ls=std::log(s);
-        lastK = static_cast<int>((ls-lsi)/dl)+1; // MaxBin to be initialized in LogTaB
-        if(lastK>nls)
-        {
-          lastK=nls;
-          lastM=lsa-lsi;
-        }
-        else lastM = lastK*dl;           // Calculate max initialized ln(s)-lsi for LogTab
-        for(G4int j=nextK; j<=lastK; j++)// Calculate LogTab values
-        {
-          sv*=edl;
-          lastL[j]=CalcDiff2Prod_Ratio(sv,A);
-        }
-      } // End of LogTab update
-      if(lastK>=nextK)
-      {
-        vM[i]=lastM;
-        vK[i]=lastK;
-      }
-    }
-  }
-  // Now one can use tabeles to calculate the value
-  if(s<sma)                             // Use linear table
-  {
-    G4int n=static_cast<int>(s/ds);     // Low edge number of the bin
-    G4double d=s-n*ds;                  // Linear shift
-    G4double v=lastT[n];                // Base
-    lastR=v+d*(lastT[n+1]-v)/ds;        // Result
-  }
-  else                                  // Use log table
-  {
-    G4double ls=std::log(s)-lsi;        // ln(s)-l_min
-    G4int n=static_cast<int>(ls/dl);    // Low edge number of the bin
-    G4double d=ls-n*dl;                 // Log shift
-    G4double v=lastL[n];                // Base
-    lastR=v+d*(lastL[n+1]-v)/dl;        // Result
-  }
-  if(lastR<0.) lastR=0.;
-  if(lastR>1.) lastR=1.;
-  return lastR;
-} // End of CalcDiff2Prod_Ratio
-
-// Calculate Diffraction/Production Ratio as a function of total sq(s)(hN) (in GeV), A=Z+N
-G4double G4QDiffractionRatio::CalcDiff2Prod_Ratio(G4double s, G4int A)
-{
-  static G4int    mA=0;
-  static G4double S=.1; // s=SQRT(M_N^2+M_h^2+2*E_h*M_N)
-  static G4double R=0.; // Prototype of the result
-  static G4double p1=0.;
-  static G4double p2=0.;
-  static G4double p4=0.;
-  static G4double p5=0.;
-  static G4double p6=0.;
-  static G4double p7=0.;
-  if(s<=0. || A<=1) return 0.;
-  if(A!=mA && A!=1)
-  {
-    mA=A;
-    G4double a=mA;
-    G4double sa=std::sqrt(a);
-    G4double a2=a*a;
-    G4double a3=a2*a;
-    G4double a4=a3*a;
-    G4double a5=a4*a;
-    G4double a6=a5*a;
-    G4double a7=a6*a;
-    G4double a8=a7*a;
-    G4double a11=a8*a3;
-    G4double a12=a8*a4;
-    G4double p=std::pow(a,0.37);
-    p1=(.023*p+3.5/a3+2.1e6/a12+4.e-14*a5)/(1.+7.6e-4*a*sa+2.15e7/a11);
-    p2=(1.42*std::pow(a,0.61)+1.6e5/a8+4.5e-8*a4)/(1.+4.e-8*a4+1.2e4/a6);
-    G4double q=std::pow(a,0.7);
-    p4=(.036/q+.0009*q)/(1.+6./a3+1.e-7*a3);
-    p5=1.3*std::pow(a,0.1168)/(1.+1.2e-8*a3);
-    p6=.00046*(a+11830./a2);
-    p7=1./(1.+6.17/a2+.00406*a);
-  }
-  else if(A==1 && mA!=1)
-  {
-    p1=.0315;
-    p2=.73417;
-    p4=.01109;
-    p5=1.0972;
-    p6=.065787;
-    p7=.62976;
-  }
-  else if(std::fabs(s-S)/S<.0001) return R;
-  G4double s2=s*s;
-  G4double s4=s2*s2;
-  G4double dl=std::log(s)-p5;
-  R=1./(1.+1./(p1+p2/s4+p4*dl*dl/(1.+p6*std::pow(s,p7))));
-  return R;
-} // End of CalcQF2IN_Ratio
-
-
-G4QHadronVector* G4QDiffractionRatio::TargFragment(G4int pPDG, G4LorentzVector p4M,
-                                                   G4int tgZ, G4int tgN)
-{
-  static const G4double pFm= 0.; // Fermi momentum in MeV (delta function)
-  //static const G4double pFm= 250.; // Fermi momentum in MeV (delta function)
-  static const G4double pFm2= pFm*pFm; // Squared Fermi momentum in MeV^2 (delta function)
-  static const G4double mPi0= G4QPDGCode(111).GetMass(); // pi0 mass (MeV =min diffraction)
-  //static const G4double mPi= G4QPDGCode(211).GetMass();  // pi+- mass (MeV)
-  static const G4double mNeut= G4QPDGCode(2112).GetMass();
-  static const G4double mNeut2=mNeut*mNeut;
-  static const G4double dmNeut=mNeut+mNeut;
-  static const G4double mProt= G4QPDGCode(2212).GetMass();
-  static const G4double mProt2=mProt*mProt;
-  static const G4double dmProt=mProt+mProt;
-  static const G4double maxDM=mProt*12.;
-  //static const G4double mLamb= G4QPDGCode(3122).GetMass();
-  //static const G4double mSigZ= G4QPDGCode(3212).GetMass();
-  //static const G4double mSigM= G4QPDGCode(3112).GetMass();
-  //static const G4double mSigP= G4QPDGCode(3222).GetMass();
-  //static const G4double eps=.003;
-  static const G4double third=1./3.;
-  //
-  G4LorentzVector pr4M=p4M/megaelectronvolt;   // Convert 4-momenta in MeV (keep p4M)
-  // prepare the DONOTHING answer
-  G4QHadronVector* ResHV = new G4QHadronVector;// !! MUST BE DESTROYE/DDELETER by CALLER !!
-  G4QHadron* hadron = new G4QHadron(pPDG,p4M); // Hadron for not scattered projectile
-  ResHV->push_back(hadron);                // It must be cleaned up for real scattering sec
-  // @@ diffraction is simulated as noncoherent (coherent is small)
-  G4int tgA=tgZ+tgN;                       // A of the target
-  G4int tPDG=90000000+tgZ*1000+tgN;        // PDG code of the targetNucleus/recoilNucleus
-  G4double tgM=G4QPDGCode(tPDG).GetMass(); // Mass of the target nucleus
-  G4int rPDG=2112;                         // prototype of PDG code of the recoiled nucleon
-  if(tgA*G4UniformRand()>tgN)              // Substitute by a proton
-  {
-    rPDG=2212;                             // PDG code of the recoiled QF nucleon
-    tPDG-=1000;                            // PDG code of the recoiled nucleus
-  }
-  else tPDG-=1;                            // PDG code of the recoiled nucleus
-  G4double tM=G4QPDGCode(tPDG).GetMass();  // Mass of the recoiled nucleus
-  G4double tE=std::sqrt(tM*tM+pFm2);       // Free energy of the recoil nucleus
-  G4ThreeVector tP=pFm*G4RandomDirection();// 3-mom of the recoiled nucleus
-  G4LorentzVector t4M(tP,tE);              // 4M of the recoil nucleus
-  G4LorentzVector tg4M(0.,0.,0.,tgM);      // Full target 4-momentum
-  G4LorentzVector N4M=tg4M-t4M;            // 4-mom of Quasi-free target nucleon
-  G4LorentzVector tot4M=N4M+p4M;           // total momentum of quasi-free diffraction
-  G4double mT=mNeut;                       // Prototype of mass of QF nucleon
-  G4double mT2=mNeut2;                     // Squared mass of a free nucleon to be excited
-  G4double dmT=dmNeut;                     // Doubled mass              
-  G4int Z=0;                               // Prototype of the isotope Z
-  G4int N=1;                               // Prototype of the Isotope N
-  if(rPDG==2212)                           // Correct it, if this is a proton
-  {
-    mT=mProt;                              // Prototype of mass of QF nucleon to be excited
-    mT2=mProt2;                            // Squared mass of the free nucleon
-    dmT=dmProt;                            // Doubled mass              
-    Z=1;                                   // Z of the isotope
-    N=0;                                   // N of the Isotope
-  }
-  G4double mP2=pr4M.m2();                  // Squared mass of the projectile
-  if(mP2<0.) mP2=0.;                       // Can be a problem for photon (m_min = 2*m_pi0)
-  G4double s=tot4M.m2();                   // @@ Check <0 ...
-  G4double E=(s-mT2-mP2)/dmT;              // Effective interactinEnergy (virt.nucl.target)
-  G4double E2=E*E;
-  if(E<0. || E2<mP2)
-  {
-#ifdef pdebug
-    G4cerr<<"_Warning-G4DifR::TFra:<NegativeEnergy>E="<<E<<",E2="<<E2<<"<M2="<<mP2<<G4endl;
-#endif
-    return ResHV;                          // Do Nothing Action
-  }
-  G4double mP=std::sqrt(mP2);              // Calculate mass of the projectile (to be exc.)
-  if(mP<.1)mP=mPi0;                        // For photons minDiffraction is gam+P->P+Pi0
-  G4double dmP=mP+mP;                      // Doubled mass of the projectile
-  G4double mMin=mP+mPi0;                   // Minimum diffractive mass
-  G4double tA=tgA;                         // Real A of the target
-  G4double sA=5./std::pow(tA,third);       // Mass-screaning
-  //mMin+=mPi0+G4UniformRand()*(mP*sA+mPi0); // *Experimental*
-  mMin+=G4UniformRand()*(mP*sA+mPi0);      // *Experimental*
-  G4double ss=std::sqrt(s);                // CM compound mass (sqrt(s))
-  G4double mMax=ss-mP;                     // Maximum diffraction mass of the projectile
-  if(mMax>maxDM) mMax=maxDM;               // Restriction to avoid too big masses
-  if(mMin>=mMax)
-  {
-#ifdef pdebug
-    G4cerr<<"Warning-G4DifR::TFra:ZeroDiffractionMRange, mi="<<mMin<<", ma="<<mMax<<G4endl;
-#endif
-    return ResHV;                          // Do Nothing Action
-  }
-  G4double R = G4UniformRand();
-  G4double mDif=std::exp(R*std::log(mMax)+(1.-R)*std::log(mMin)); // Low Mass Approximation
-  G4double mDif2=mDif*mDif;
-  G4double ds=s-mP2-mDif2;               
-  G4double e=ds/dmP;
-  G4double P=std::sqrt(e*e-mDif2);      // Momentum in pseudo laboratory system
-  G4VQCrossSection* CSmanager=G4QElasticCrossSection::GetPointer();
-#ifdef debug
-  G4cout<<"G4QDiffR::TargFrag:Before XS, P="<<P<<",Z="<<Z<<",N="<<N<<",PDG="<<pPDG<<G4endl;
-#endif
-  // @@ Temporary NN t-dependence for all hadrons
-  if(pPDG>3400 || pPDG<-3400) G4cout<<"-Warning-G4QDifR::Fragment: pPDG="<<pPDG<<G4endl;
-  G4int PDG=2212;                                                  // *TMP* instead of pPDG
-  G4double xSec=CSmanager->GetCrossSection(false, P, tgZ, tgN, PDG);// Rec.CrossSect *TMP*
-  //G4double xSec=CSmanager->GetCrossSection(false, P, tgZ, tgN, pPDG); // Rec.CrossSect
-#ifdef debug
-  G4cout<<"G4QDiffRat::TargFragment:pPDG="<<pPDG<<",P="<<P<<",CS="<<xSec/millibarn<<G4endl;
-#endif
-#ifdef nandebug
-  if(xSec>0. || xSec<0. || xSec==0);
-  else  G4cout<<"***NAN***G4QDiffractionRatio::TargFragment:xSec="<<xSec/millibarn<<G4endl;
-#endif
-  // @@ check a possibility to separate p, n, or alpha (!)
-  if(xSec <= 0.)                       // The cross-section iz 0 -> Do Nothing
-  {
-#ifdef pdebug
-    G4cerr<<"-Warning-G4QDiffrRatio::TargFragment:**Zero XS**PDG="<<pPDG<<",P="<<P<<G4endl;
-#endif
-    return ResHV;                       //Do Nothing Action
-  }
-  //G4double t=CSmanager->GetExchangeT(tgZ,tgN,pPDG); // functional randomized -t (MeV^2)
-  G4double maxt=(ds*ds-4*mP2*mDif2)/s;  // maximum possible -t
-  G4double tsl=140000.;                 // slope in MeV^2 
-  G4double t=-std::log(G4UniformRand())*tsl;
-#ifdef pdebug
-  G4cout<<"G4QDifR::TFra:ph="<<pPDG<<",P="<<P<<",X="<<xSec<<",t="<<t<<"<"<<maxt<<G4endl;
-#endif
-#ifdef nandebug
-  if(mint>-.0000001);                   // To make the Warning for NAN
-  else  G4cout<<"******G4QDiffractionRatio::TargFragment: -t="<<mint<<G4endl;
-#endif
-  G4double rt=t/maxt;
-  G4double cost=1.-rt-rt;               // cos(theta) in CMS
-#ifdef ppdebug
-  G4cout<<"G4QDiffraRatio::TargFragment: -t="<<t<<", maxt="<<maxt<<", cost="<<cost<<G4endl;
-#endif
-  if(cost>1. || cost<-1. || !(cost>-1. || cost<=1.))
-  {
-    if     (cost>1.)  cost=1.;
-    else if(cost<-1.) cost=-1.;
-    else
-    {
-      G4cerr<<"G4QDiffRat::TargFragm: *NAN* cost="<<cost<<",t="<<t<<",tmax="<<maxt<<G4endl;
-      return ResHV;                     // Do Nothing Action
-    }
-  }
-  G4LorentzVector r4M=G4LorentzVector(0.,0.,0.,mP);      // 4mom of the leading nucleon
-  G4LorentzVector d4M=G4LorentzVector(0.,0.,0.,mDif);    // 4mom of the diffract. Quasmon
-  G4LorentzVector dir4M=tot4M-G4LorentzVector(0.,0.,0.,(tot4M.e()-mT)*.01);
-  if(!G4QHadron(tot4M).RelDecayIn2(r4M, d4M, dir4M, cost, cost))
-  {
-    G4cerr<<"G4QDifR::TFr:M="<<tot4M.m()<<",T="<<mT<<",D="<<mDif<<",T+D="<<mT+mDif<<G4endl;
-    //G4Exception("G4QDifR::Fragm:","009",FatalException,"Decay of ElasticComp");
-    return ResHV; // Do Nothing Action
-  }
-#ifdef debug
-  G4cout<<"G4QDifRat::TargFragm:d4M="<<d4M<<"+r4M="<<r4M<<"="<<d4M+r4M<<"="<<tot4M<<G4endl;
-#endif
-  // Now everything is ready for fragmentation and DoNothing projHadron must be wiped out
-  ResHV->pop_back(); // Clean up pointer to the fake (doNothing) projectile
-  delete hadron;     // Delete the fake (doNothing) projectile hadron
-  hadron = new G4QHadron(pPDG,r4M);     // Hadron for the recoil nucleon
-  ResHV->push_back(hadron);             // Fill the recoil nucleon
-#ifdef debug
-  G4cout<<"G4QDiffractionRatio::TargFragm: *Filled* LeadingNuc="<<r4M<<pPDG<<G4endl;
-#endif
-  G4QHadronVector* leadhs=new G4QHadronVector;// Quasmon Output G4QHadronVectorum --->---*
-  G4QContent dQC=G4QPDGCode(rPDG).GetQuarkContent(); // QuarkContent of quasiFreeNucleon | 
-  G4Quasmon* quasm = new G4Quasmon(dQC,d4M); // Quasmon=DiffractionExcitationQuasmon-*   |
-#ifdef debug
-  G4cout<<"G4QDiffRatio::TgFrag:tPDG="<<tPDG<<",rPDG="<<rPDG<<",d4M="<<d4M<<G4endl;//|   |
-#endif
-  G4QEnvironment* pan= new G4QEnvironment(G4QNucleus(tPDG));// --> DELETED --->---*  |   |
-  pan->AddQuasmon(quasm);                    // Add diffractiveQuasmon to Environ.|  |   |
-#ifdef debug
-  G4cout<<"G4QDiffractionRatio::TargFragment: EnvPDG="<<tPDG<<G4endl; //          |  |   |
-#endif
-  try                                                           //                |  |   |
-  {                                                             //                |  |   |
-    delete leadhs;                                              //                |  |   |
-    leadhs = pan->Fragment();// DESTROYED in the end of the LOOP work space       |  |   |
-  }                                                             //                |  |   |
-  catch (G4QException& error)//                                                   |  |   |
-  {                                                             //                |  |   |
-    //#ifdef pdebug
-    G4cerr<<"***G4QCollision::PostStepDoIt: G4QE Exception is catched"<<G4endl;// |  |   |
-    //#endif
-    G4Exception("G4QCollision::PostStepDoIt:","27",FatalException,"CHIPSCrash");//|  |   |
-  }                                                             //                |  |   |
-  delete pan;                              // Delete the Nuclear Environment <-<--*--*   |
-  G4int qNH=leadhs->size();                // A#of collected hadrons from diff.frag.     |
-  if(qNH) for(G4int iq=0; iq<qNH; iq++)    // Loop over hadrons to fill the result       |
-  {                                        //                                            |
-    G4QHadron* loh=(*leadhs)[iq];          // Pointer to the output hadron               |
-    ResHV->push_back(loh);                 // Fill in the result                         |
-  }                                        //                                            |
-  delete leadhs; // <----<----<----<----<----<----<----<----<----<----<----<----<----<---*
-  return ResHV; // Result
-} // End of TargFragment
-
-
-G4QHadronVector* G4QDiffractionRatio::ProjFragment(G4int pPDG, G4LorentzVector p4M,
-                                                  G4int tgZ, G4int tgN)
-{
-  static const G4double pFm= 250.; // Fermi momentum in MeV (delta function)
-  static const G4double pFm2= pFm*pFm; // Squared Fermi momentum in MeV^2 (delta function)
-  static const G4double mPi0= G4QPDGCode(111).GetMass(); // pi0 mass (MeV =min diffraction)
-  static const G4double mPi= G4QPDGCode(211).GetMass();  // pi+- mass (MeV)
-  static const G4double mNeut= G4QPDGCode(2112).GetMass();
-  static const G4double mNeut2=mNeut*mNeut;
-  static const G4double dmNeut=mNeut+mNeut;
-  static const G4double mProt= G4QPDGCode(2212).GetMass();
-  static const G4double mProt2=mProt*mProt;
-  static const G4double dmProt=mProt+mProt;
-  static const G4double maxDM=mProt*12.;
-  static const G4double mLamb= G4QPDGCode(3122).GetMass();
-  static const G4double mSigZ= G4QPDGCode(3212).GetMass();
-  static const G4double mSigM= G4QPDGCode(3112).GetMass();
-  static const G4double mSigP= G4QPDGCode(3222).GetMass();
-  static const G4double eps=.003;
-  //
-  G4LorentzVector pr4M=p4M/megaelectronvolt;   // Convert 4-momenta in MeV (keep p4M)
-  // prepare the DONOTHING answer
-  G4QHadronVector* ResHV = new G4QHadronVector;// !! MUST BE DESTROYE/DDELETER by CALLER !!
-  G4QHadron* hadron = new G4QHadron(pPDG,p4M); // Hadron for not scattered projectile
-  ResHV->push_back(hadron);                // It must be cleaned up for real scattering sec
-  // @@ diffraction is simulated as noncoherent (coherent is small)
-  G4int tgA=tgZ+tgN;                       // A of the target
-  G4int tPDG=90000000+tgZ*1000+tgN;        // PDG code of the targetNucleus/recoilNucleus
-  G4double tgM=G4QPDGCode(tPDG).GetMass(); // Mass of the target nucleus
-  G4int rPDG=2112;                         // prototype of PDG code of the recoiled nucleon
-  if(tgA*G4UniformRand()>tgN)              // Substitute by a proton
-  {
-    rPDG=2212;                             // PDG code of the recoiled QF nucleon
-    tPDG-=1000;                            // PDG code of the recoiled nucleus
-  }
-  else tPDG-=1;                            // PDG code of the recoiled nucleus
-  G4double tM=G4QPDGCode(tPDG).GetMass();  // Mass of the recoiled nucleus
-  G4double tE=std::sqrt(tM*tM+pFm2);
-  G4ThreeVector tP=pFm*G4RandomDirection();
-  G4LorentzVector t4M(tP,tE);              // 4M of the recoil nucleus
-  G4LorentzVector tg4M(0.,0.,0.,tgM);
-  G4LorentzVector N4M=tg4M-t4M;            // Quasi-free target nucleon
-  G4LorentzVector tot4M=N4M+p4M;           // total momentum of quasi-free diffraction
-  G4double mT=mNeut;
-  G4double mT2=mNeut2;                 // Squared mass of the free nucleon spectator
-  G4double dmT=dmNeut;
-  G4int Z=0;
-  G4int N=1;
-  if(rPDG==2212)
-  {
-    mT=mProt;
-    mT2=mProt2;
-    dmT=dmProt;
-    Z=1;
-    N=0;
-  }
-  G4double mP2=pr4M.m2();               // Squared mass of the projectile
-  if(mP2<0.) mP2=0.;                    // A possible problem for photon (m_min = 2*m_pi0)
-  G4double s=tot4M.m2();                 // @@ Check <0 ...
-  G4double E=(s-mT2-mP2)/dmT;  // Effective interactin energy (virt. nucl. target)
-  G4double E2=E*E;
-  if(E<0. || E2<mP2)
-  {
-#ifdef pdebug
-    G4cerr<<"_Warning-G4DifR::PFra:<NegativeEnergy>E="<<E<<",E2="<<E2<<"<M2="<<mP2<<G4endl;
-#endif
-    return ResHV; // Do Nothing Action
-  }
-  G4double mP=std::sqrt(mP2);
-  if(mP<.1)mP=mPi0;                      // For photons min diffraction is gamma+P->Pi0+Pi0
-  G4double mMin=mP+mPi0;                 // Minimum diffractive mass
-  G4double ss=std::sqrt(s);              // CM compound mass (sqrt(s))
-  G4double mMax=ss-mT;                   // Maximum diffraction mass
-  if(mMax>maxDM) mMax=maxDM;             // Restriction to avoid too big masses
-  if(mMin>=mMax)
-  {
-#ifdef pdebug
-    G4cerr<<"Warning-G4DifR::PFra:ZeroDiffractionMRange, mi="<<mMin<<", ma="<<mMax<<G4endl;
-#endif
-    return ResHV; // Do Nothing Action
-  }
-  G4double R = G4UniformRand();
-  G4double mDif=std::exp(R*std::log(mMax)+(1.-R)*std::log(mMin)); // LowMassApproximation
-  G4double mDif2=mDif*mDif;
-  G4double ds=s-mT2-mDif2;
-  G4double e=ds/dmT;
-  G4double P=std::sqrt(e*e-mDif2);          // Momentum in pseudo laboratory system
-  G4VQCrossSection* CSmanager=G4QElasticCrossSection::GetPointer();
-#ifdef debug
-  G4cout<<"G4QDiffR::PFra: Before XS, P="<<P<<", Z="<<Z<<", N="<<N<<", PDG="<<pPDG<<G4endl;
-#endif
-  // @@ Temporary NN t-dependence for all hadrons
-  if(pPDG>3400 || pPDG<-3400) G4cout<<"-Warning-G4QDifR::Fragment: pPDG="<<pPDG<<G4endl;
-  G4int PDG=2212;                                                  // *TMP* instead of pPDG
-  G4double xSec=CSmanager->GetCrossSection(false, P, tgZ, tgN, PDG);// Rec.CrossSect *TMP*
-  //G4double xSec=CSmanager->GetCrossSection(false, P, tgZ, tgN, pPDG); // Rec.CrossSect
-#ifdef debug
-  G4cout<<"G4QDiffR::ProjFragment:pPDG="<<pPDG<<",P="<<P<<",CS="<<xSec/millibarn<<G4endl;
-#endif
-#ifdef nandebug
-  if(xSec>0. || xSec<0. || xSec==0);
-  else  G4cout<<"***NAN***G4QDiffRatio::ProjFragment: xSec="<<xSec/millibarn<<G4endl;
-#endif
-  // @@ check a possibility to separate p, n, or alpha (!)
-  if(xSec <= 0.) // The cross-section iz 0 -> Do Nothing
-  {
-#ifdef pdebug
-    G4cerr<<"-Warning-G4QDiffRatio::ProjFragment:**Zero XS**PDG="<<pPDG<<",P="<<P<<G4endl;
-#endif
-    return ResHV; //Do Nothing Action
-  }
-  G4double t=CSmanager->GetExchangeT(tgZ,tgN,pPDG); // functional randomized -t (MeV^2)
-  G4double maxt=(ds*ds-4*mT2*mDif2)/s;                 // maximum possible -t
-#ifdef pdebug
-  G4cout<<"G4QDifR::PFra:ph="<<pPDG<<",P="<<P<<",X="<<xSec<<",t="<<mint<<"<"<<maxt<<G4endl;
-#endif
-#ifdef nandebug
-  if(mint>-.0000001);                          // To make the Warning for NAN
-  else  G4cout<<"******G4QDiffractionRatio::ProjFragment: -t="<<mint<<G4endl;
-#endif
-  G4double rt=t/maxt;
-  G4double cost=1.-rt-rt;                          // cos(theta) in CMS
-#ifdef ppdebug
-  G4cout<<"G4QDiffRatio::ProjFragment: -t="<<t<<", maxt="<<maxt<<", cost="<<cost<<G4endl;
-#endif
-  if(cost>1. || cost<-1. || !(cost>-1. || cost<=1.))
-  {
-    if     (cost>1.)  cost=1.;
-    else if(cost<-1.) cost=-1.;
-    else
-    {
-      G4cerr<<"G4QDiffRat::ProjFragm: *NAN* cost="<<cost<<",t="<<t<<",tmax="<<maxt<<G4endl;
-      return ResHV; // Do Nothing Action
-    }
-  }
-  G4LorentzVector r4M=G4LorentzVector(0.,0.,0.,mT);      // 4mom of the recoil nucleon
-  G4LorentzVector d4M=G4LorentzVector(0.,0.,0.,mDif);    // 4mom of the diffract. Quasmon
-  G4LorentzVector dir4M=tot4M-G4LorentzVector(0.,0.,0.,(tot4M.e()-mT)*.01);
-  if(!G4QHadron(tot4M).RelDecayIn2(d4M, r4M, dir4M, cost, cost))
-  {
-    G4cerr<<"G4QDifR::PFr:M="<<tot4M.m()<<",T="<<mT<<",D="<<mDif<<",T+D="<<mT+mDif<<G4endl;
-    //G4Exception("G4QDifR::Fragm:","009",FatalException,"Decay of ElasticComp");
-    return ResHV; // Do Nothing Action
-  }
-#ifdef debug
-  G4cout<<"G4QDiffR::ProjFragm:d4M="<<d4M<<"+r4M="<<r4M<<"="<<d4M+r4M<<"="<<tot4M<<G4endl;
-#endif
-  // Now everything is ready for fragmentation and DoNothing projHadron must be wiped out
-  ResHV->pop_back(); // Clean up pointer to the fake (doNothing) projectile
-  delete hadron;     // Delete the fake (doNothing) projectile hadron
-  hadron = new G4QHadron(tPDG,t4M);  // Hadron for the recoil neucleus
-  ResHV->push_back(hadron);          // Fill the recoil nucleus
-#ifdef debug
-  G4cout<<"G4QDiffractionRatio::ProjFragment: *Filled* RecNucleus="<<t4M<<tPDG<<G4endl;
-#endif
-  hadron = new G4QHadron(rPDG,r4M);  // Hadron for the recoil nucleon
-  ResHV->push_back(hadron);          // Fill the recoil nucleon
-#ifdef debug
-  G4cout<<"G4QDiffractionRatio::ProjFragment: *Filled* RecNucleon="<<r4M<<rPDG<<G4endl;
-#endif
-  G4LorentzVector sum4M(0.,0.,0.,0.);
-  // Now the (pPdg,d4M) Quasmon must be fragmented
-  G4QHadronVector* leadhs = new G4QHadronVector;// Prototype of QuasmOutput G4QHadronVector
-  G4QContent dQC=G4QPDGCode(pPDG).GetQuarkContent(); // Quark Content of the projectile
-  G4Quasmon* pan= new G4Quasmon(dQC,d4M); // --->---->---->----->-----> DELETED -->---*
-  try                                                           //                    |
-  {                                                             //                    |
-    G4QNucleus vac(90000000);                                   //                    |
-    leadhs=pan->Fragment(vac,1);  // DELETED after it is copied to ResHV vector -->---+-*
-  }                                                             //                    | |
-  catch (G4QException& error)                                   //                    | |
-  {                                                             //                    | |
-    G4cerr<<"***G4QDiffractionRatio::ProjFragment: G4Quasmon Exception"<<G4endl;    //| |
-    G4Exception("G4QDiffractionRatio::ProjFragment","72",FatalException,"*Quasmon");//| |
-  }                                                             //                    | |
-  delete pan;                              // Delete the Nuclear Environment <----<---* |
-  G4int qNH=leadhs->size();                // A#of collected hadrons from diff.frag.    |
-  if(qNH) for(G4int iq=0; iq<qNH; iq++)    // Loop over hadrons to fill the result      |
-  {                                        //                                           |
-    G4QHadron* loh=(*leadhs)[iq];          // Pointer to the output hadron              |
-    G4int nL=loh->GetStrangeness();        // A number of Lambdas in the Hypernucleus   |
-    G4int nB=loh->GetBaryonNumber();       // Total Baryon Number of the Hypernucleus   |
-    G4int nC = loh->GetCharge();           // Charge of the Hypernucleus                |
-    G4int oPDG = loh->GetPDGCode();        // Original CHIPS PDG Code of the hadron     |
-    //if((nC>nB || nC<0) && nB>0 && nL>=0 && nL<=nB && oPDG>80000000) // Iso-nucleus    |
-    if(2>3) // Closed because "G4QDR::F:90002999,M=-7.768507e-04,B=2,S=0,C=3" is found  |
-    {
-      G4LorentzVector q4M = loh->Get4Momentum(); // Get 4-momentum of the Isonucleus    |
-      G4double qM=q4M.m();                 // Real mass of the Isonucleus
-#ifdef fdebug
-      G4cout<<"G4QDR::PF:"<<oPDG<<",M="<<qM<<",B="<<nB<<",S="<<nL<<",C="<<nC<<G4endl;// |
-#endif
-      G4int    qPN=nC-nB;                  // Number of pions in the Isonucleus         |
-      G4int    fPDG = 2212;                // Prototype for nP+(Pi+) case               |
-      G4int    sPDG = 211;
-      G4int    tPDG = 3122;                // @@ Sigma0 (?)                             |
-      G4double fMass= mProt;
-      G4double sMass= mPi;
-      G4double tMass= mLamb;               // @@ Sigma0 (?)                             |
-      G4bool   cont=true;                  // Continue flag                             |
-      // ========= Negative state ======
-      if(nC<0)                             // ====== Only Pi- can help                  |
-      {
-        if(nL&&nB==nL)                     // --- n*Lamb + k*(Pi-) State ---            |
-        {
-          sPDG = -211;
-          if(-nC==nL && nL==1)             // Only one Sigma- like (nB=1)               |
-          {
-            if(std::fabs(qM-mSigM)<eps)
-            {
-              loh->SetQPDG(G4QPDGCode(3112));  // This is Sigma-                        |
-              cont=false;                  // Skip decay                                |
-            }
-            else if(qM>mLamb+mPi)          //(2) Sigma- => Lambda + Pi- decay           |
-            {
-              fPDG = 3122;
-              fMass= mLamb;
-            }
-            else if(qM>mSigM)              //(2) Sigma+=>Sigma++gamma decay             |
-            {
-              fPDG = 3112;
-              fMass= mSigM;
-              sPDG = 22;
-              sMass= 0.;
-            }
-            else                           //(2) Sigma-=>Neutron+Pi- decay              |
-            {
-              fPDG = 2112;
-              fMass= mNeut;
-            }
-            qPN  = 1;                      // #of (Pi+ or gamma)'s = 1                  |
-          }
-          else if(-nC==nL)                 //(2) a few Sigma- like                      |
-          {
-            qPN  = 1;                      // One separated Sigma-                      |
-            fPDG = 3112;
-            sPDG = 3112;
-            sMass= mSigM;
-            nB--;
-            fMass= mSigM;
-          }
-          else if(-nC>nL)                  //(2) n*(Sigma-)+m*(Pi-)                     |
-          {
-            qPN  = -nC-nL;                 // #of Pi-'s                                 |
-            fPDG = 3112;
-            fMass= mSigM;
-          }
-          else                             //(2) n*(Sigma-)+m*Lambda(-nC<nL)            |
-          {
-            nB += nC;                      // #of Lambda's                              |
-            fPDG = 3122;
-            fMass= mLamb;
-            qPN  = -nC;                    // #of Sigma+'s                              |
-            sPDG = 3112;
-            sMass= mSigM;
-          }
-          nL   = 0;                        // Only decays in two are above              |
-        }
-        else if(nL)                        // ->n*Lamb+m*Neut+k*(Pi-) State (nL<nB)     |
-        {
-          nB -= nL;                        // #of neutrons                              |
-          fPDG = 2112;
-          fMass= mNeut;
-          G4int nPin = -nC;                           // #of Pi-'s                    
-          if(nL==nPin)                                //(2) m*Neut+n*Sigma-             |
-          {
-            qPN  = nL;                                // #of Sigma-                     |
-            sPDG = 3112;
-            sMass= mSigM;
-            nL   = 0;
-          }
-          else if(nL>nPin)                            //(3) m*P+n*(Sigma+)+k*Lambda     |
-          {
-            nL-=nPin;                                 // #of Lambdas                    |
-            qPN  = nPin;                              // #of Sigma+                     |
-            sPDG = 3112;
-            sMass= mSigM;
-          }
-          else                                 //(3) m*N+n*(Sigma-)+k*(Pi-) (nL<nPin)   |
-          {
-            qPN  = nPin-nL;                           // #of Pi-                        |
-            sPDG = -211;
-            tPDG = 3112;
-            tMass= mSigM;
-          }
-        }
-        else                                          //(2) n*N+m*(Pi-)   (nL=0)        |
-        {
-          sPDG = -211;
-          qPN  = -nC;
-          fPDG = 2112;
-          fMass= mNeut;
-        }
-      }
-      else if(!nC)                                   // *** Should not be here ***      |
-      {
-        if(nL && nL<nB)          //(2) n*Lamb+m*N ***Should not be here***              |
-        {
-          qPN  = nL;
-          fPDG = 2112;                               // mN+nL case                      |
-          sPDG = 3122;
-          sMass= mLamb;
-          nB -= nL;
-          fMass= mNeut;
-          nL   = 0;
-        }
-        else if(nL>1 && nB==nL)  //(2) m*Lamb(m>1) ***Should not be here***             |
-        {
-          qPN  = 1;
-          fPDG = 3122;
-          sPDG = 3122;
-          sMass= mLamb;
-          nB--;
-          fMass= mLamb;
-        }
-        else if(!nL && nB>1)     //(2) n*Neut(n>1) ***Should not be here***             |
-        {
-          qPN  = 1;
-          fPDG = 2112;
-          sPDG = 2112;
-          sMass= mNeut;
-          nB--;
-          fMass= mNeut;
-        }
-        else G4cout<<"*?*G4QDiffractionRatio::ProjFragment: (1) oPDG="<<oPDG<<G4endl;// |
-      }
-      else if(nC>0)              // n*Lamb+(m*P)+(k*Pi+)                                |
-      {
-        if(nL && nL+nC==nB)      //(2) n*Lamb+m*P ***Should not be here***              |
-        {
-          qPN  = nL;
-          nL   = 0;
-          fPDG = 2212;
-          sPDG = 3122;
-          sMass= mLamb;
-          nB  = nC;
-          fMass= mProt;
-        }
-        else if(nL  && nC<nB-nL) //(3)n*L+m*P+k*N ***Should not be here***              |
-        {
-          qPN  = nC;                                  // #of protons                    |
-          fPDG = 2112;                                // mP+nL case                     |
-          sPDG = 2212;
-          sMass= mProt;
-          nB -= nL+nC;                                // #of neutrons                   |
-          fMass= mNeut;
-        }
-        else if(nL  && nB==nL)                        // ---> n*L+m*Pi+ State           |
-        {
-          if(nC==nL && nL==1)                         // Only one Sigma+ like State     |
-          {
-            if(std::fabs(qM-mSigP)<eps)
-            {
-              loh->SetQPDG(G4QPDGCode(3222));         // This is GS Sigma+              |
-              cont=false;                  // Skip decay                                |
-            }
-            else if(qM>mLamb+mPi)                     //(2) Sigma+=>Lambda+Pi+ decay    |
-            {
-              fPDG = 3122;
-              fMass= mLamb;
-            }
-            else if(qM>mNeut+mPi)                     //(2) Sigma+=>Neutron+Pi+ decay   |
-            {
-              fPDG = 2112;
-              fMass= mNeut;
-            }
-            else if(qM>mSigP)                         //(2) Sigma+=>Sigma++gamma decay  |
-            {
-              fPDG = 3222;
-              fMass= mSigP;
-              sPDG = 22;
-              sMass= 0.;
-            }
-            else                                      //(2) Sigma+=>Proton+gamma decay  |
-            {
-              fPDG = 2212;
-              fMass= mProt;
-              sPDG = 22;
-              sMass= 0.;
-            }
-            qPN  = 1;                                 // #of (Pi+ or gamma)'s = 1       |
-          }
-          else if(nC==nL)                             //(2) a few Sigma+ like hyperons  |
-          {
-            qPN  = 1;
-            fPDG = 3222;
-            sPDG = 3222;
-            sMass= mSigP;
-            nB--;
-            fMass= mSigP;
-          }
-          else if(nC>nL)                              //(2) n*(Sigma+)+m*(Pi+)          |
-          {
-            qPN  = nC-nL;                             // #of Pi+'s                      |
-            fPDG = 3222;
-            nB  = nL;                                 // #of Sigma+'s                   |
-            fMass= mSigP;
-          }
-          else                                        //(2) n*(Sigma+)+m*Lambda         |
-          {
-            nB -= nC;                                 // #of Lambda's                   |
-            fPDG = 3122;
-            fMass= mLamb;
-            qPN  = nC;                                // #of Sigma+'s                   |
-            sPDG = 3222;
-            sMass= mSigP;
-          }
-          nL   = 0;                                   // All above are decays in 2      |
-        }
-        else if(nL && nC>nB-nL)                       // n*Lamb+m*P+k*Pi+               |
-        {
-          nB -= nL;                                   // #of protons                    |
-          G4int nPip = nC-nB;                         // #of Pi+'s                      |
-          if(nL==nPip)                                //(2) m*P+n*Sigma+                |
-          {
-            qPN  = nL;                                // #of Sigma+                     |
-            sPDG = 3222;
-            sMass= mSigP;
-            nL   = 0;
-          }
-          else if(nL>nPip)                            //(3) m*P+n*(Sigma+)+k*Lambda     |
-          {
-            nL  -= nPip;                              // #of Lambdas                    |
-            qPN  = nPip;                              // #of Sigma+                     |
-            sPDG = 3222;
-            sMass= mSigP;
-          }
-          else                                        //(3) m*P+n*(Sigma+)+k*(Pi+)      |
-          {
-            qPN  = nPip-nL;                           // #of Pi+                        |
-            tPDG = 3222;
-            tMass= mSigP;
-          }
-        }
-        if(nC<nB)                 //(2) n*P+m*N ***Should not be here***                |
-        {
-          fPDG = 2112;
-          fMass= mNeut;
-          qPN  = nC;
-          sPDG = 2212;
-          sMass= mProt;
-        }
-        else if(nB==nC && nC>1)   //(2) m*Prot(m>1) ***Should not be here***            |
-        {
-          qPN  = 1;
-          fPDG = 2212;
-          sPDG = 2212;
-          sMass= mProt;
-          nB--;
-          fMass= mProt;
-        }
-        else if(nC<=nB||!nB) G4cout<<"*?*G4QDR::ProjFragm: (2) oPDG="<<oPDG<<G4endl; // |
-        // !nL && nC>nB                             //(2) Default condition n*P+m*(Pi+) |
-      }
-      if(cont)                                      // Make a decay                     |
-      {
-        G4double tfM=nB*fMass;
-        G4double tsM=qPN*sMass;
-        G4double ttM=0.;
-        if(nL) ttM=nL*tMass;
-        G4LorentzVector f4Mom(0.,0.,0.,tfM);
-        G4LorentzVector s4Mom(0.,0.,0.,tsM);
-        G4LorentzVector t4Mom(0.,0.,0.,ttM);
-        G4double sum=tfM+tsM+ttM;
-        if(std::fabs(qM-sum)<eps)
-        {
-          f4Mom=q4M*(tfM/sum);
-          s4Mom=q4M*(tsM/sum);
-          if(nL) t4Mom=q4M*(ttM/sum);
-        }
-        else if(!nL && (qM<sum || !G4QHadron(q4M).DecayIn2(f4Mom, s4Mom))) // Error     |
-        {
-          //#ifdef fdebug
-          G4cout<<"***G4QDR::PrFragm:fPDG="<<fPDG<<"*"<<nB<<"(fM="<<fMass<<")+sPDG="<<sPDG
-                <<"*"<<qPN<<"(sM="<<sMass<<")"<<"="<<sum<<" > TM="<<qM<<q4M<<oPDG<<G4endl;
-          //#endif
-          throw G4QException("*G4QDiffractionRatio::ProjFragment: Bad decay in 2"); //  |
-        }
-        else if(nL && (qM<sum || !G4QHadron(q4M).DecayIn3(f4Mom, s4Mom, t4Mom)))// Error|
-        {
-          //#ifdef fdebug
-          G4cout<<"***G4DF::PrFrag: "<<fPDG<<"*"<<nB<<"("<<fMass<<")+"<<sPDG<<"*"<<qPN<<"("
-                <<sMass<<")+Lamb*"<<nL<<"="<<sum<<" > TotM="<<qM<<q4M<<oPDG<<G4endl;
-          //#endif
-          throw G4QException("*G4QDiffractionRatio::ProjFragment: Bad decay in 3"); //  |
-        }
-#ifdef fdebug
-        G4cout<<"G4QDF::ProjFragm: *DONE* n="<<nB<<f4Mom<<fPDG<<", m="<<qPN<<s4Mom<<sPDG
-              <<", l="<<nL<<t4Mom<<G4endl;
-#endif
-        G4bool notused=true;
-        if(nB)                               // There are baryons                       |
-        {
-          f4Mom/=nB;
-          loh->Set4Momentum(f4Mom);          // ! Update the Hadron !                   |
-          loh->SetQPDG(G4QPDGCode(fPDG));    // Baryons                                 |
-          notused=false;                     // Loh was used                            |
-          if(nB>1) for(G4int ih=1; ih<nB; ih++) // Loop over the rest of baryons        |
-          {
-            G4QHadron* Hi = new G4QHadron(fPDG,f4Mom); // Create a Hadron for Baryon    |
-            ResHV->push_back(Hi);            // Fill in the additional nucleon          |
-#ifdef fdebug
-            sum4M+=r4M;                      // Sum 4-momenta for the EnMom check       |
-            G4cout<<"G4QDR::ProjFrag: *additional Nucleon*="<<f4Mom<<fPDG<<G4endl; //   |
-#endif
-          }
-        }
-        if(qPN)                              // There are pions                         |
-        {
-          s4Mom/=qPN;
-          G4int min=0;
-          if(notused)
-          {
-            loh->Set4Momentum(s4Mom);        // ! Update the Hadron 4M !                |
-            loh->SetQPDG(G4QPDGCode(sPDG));  // Update PDG                              |
-            notused=false;                   // loh was used                            |
-            min=1;                           // start value                             |
-          }
-          if(qPN>min) for(G4int ip=min; ip<qPN; ip++) // Loop over pions                |
-          {
-            G4QHadron* Hj = new G4QHadron(sPDG,s4Mom); // Create a Hadron for the meson |
-            ResHV->push_back(Hj);            // Fill in the additional pion             |
-#ifdef fdebug
-            sum4M+=r4M;                      // Sum 4-momenta for the EnMom check       |
-            G4cout<<"G4QDR::ProjFragm: *additional Pion*="<<f4Mom<<fPDG<<G4endl; //     |
-#endif
-          }
-        }
-        if(nL)                               // There are Hyperons                      |
-        {
-          t4Mom/=nL;
-          G4int min=0;
-          if(notused)
-          {
-            loh->Set4Momentum(t4Mom);      // ! Update the Hadron 4M !                  |
-            loh->SetQPDG(G4QPDGCode(tPDG));// Update PDG                                |
-            notused=false;                 // loh was used                              |
-            min=1;                         //   
-          }
-          if(nL>min) for(G4int il=min; il<nL; il++) // Loop over Hyperons               |
-          {
-            G4QHadron* Hk = new G4QHadron(tPDG,t4Mom); // Create a Hadron for Lambda    |
-            ResHV->push_back(Hk);          // Fill in the additional pion               |
-#ifdef fdebug
-            sum4M+=r4M;                    // Sum 4-momenta for the EnMom check         |
-            G4cout<<"G4QDR::ProjFragm: *additional Hyperon*="<<f4Mom<<fPDG<<G4endl; //  |
-#endif
-          }
-        }
-      }                                    // --> End of decay                          |
-    }                                      // -> End of Iso-nuclear treatment           |
-    else if( (nL > 0 && nB > 1) || (nL < 0 && nB < -1) ) 
-    {     // Hypernucleus is found                                                      |
-      G4bool anti=false;                   // Default=Nucleus (true=antinucleus         |
-      if(nB<0)                             // Anti-nucleus                              |
-      {
-        anti=true;                         // Flag of anti-hypernucleus                 |
-        nB=-nB;                            // Reverse the baryon number                 |
-        nC=-nC;                            // Reverse the charge                        |
-        nL=-nL;                            // Reverse the strangeness                   |
-      }
-      G4int hPDG = 90000000+nL*999999+nC*999+nB; // CHIPS PDG Code for Hypernucleus     |
-      G4int nSM=0;                         // A#0f unavoidable Sigma-                   |
-      G4int nSP=0;                         // A#0f unavoidable Sigma+                   |
-      if(nC<0)                             // Negative hypernucleus                     |
-      {
-        if(-nC<=nL)                        // Partial compensation by Sigma-            |
-        {
-          nSM=-nC;                         // Can be compensated by Sigma-              |
-          nL+=nC;                          // Reduce the residual strangeness           |
-        }
-        else                               // All Charge is compensated by Sigma-       |
-        {
-          nSM=nL;                          // The maximum number of Sigma-              |
-          nL=0;                            // Kill the residual strangeness             |
-        }
-      }
-      else if(nC>nB-nL)                    // Extra positive hypernucleus               |
-      {
-        if(nC<=nB)                         // Partial compensation by Sigma+            |
-        {
-          G4int dH=nB-nC;                  // Isotopic shift                            |
-          nSP=nL-dH;                       // Can be compensated by Sigma+              |
-          nL=dH;                           // Reduce the residual strangeness           |
-        }
-        else                               // All Charge is compensated by Sigma+       |
-        {
-          nSP=nL;                          // The maximum number of Sigma+              |
-          nL=0;                            // Kill the residual strangeness             |
-        }
-      }
-      G4LorentzVector r4M=loh->Get4Momentum(); // Real 4-momentum of the hypernucleus   !
-      G4double reM=r4M.m();                    // Real mass of the hypernucleus         |
-#ifdef fdebug
-      G4cout<<"G4QDiffRatio::PrFrag:oPDG=="<<oPDG<<",hPDG="<<hPDG<<",M="<<reM<<G4endl;//|
-#endif
-      G4int rlPDG=hPDG-nL*1000000-nSP*1000999-nSM*999001;// Subtract Lamb/Sig from Nucl.|
-      G4int    sPDG=3122;                      // Prototype for the Hyperon PDG (Lambda)|
-      G4double MLa=mLamb;                      // Prototype for one Hyperon decay       |
-#ifdef fdebug
-      G4cout<<"G4QDiffRatio::PrFrag:*G4*nS+="<<nSP<<",nS-="<<nSM<<",nL="<<nL<<G4endl;// |
-#endif
-      if(nSP||nSM)                         // Sigma+/- improvement                      |
-      {
-        if(nL)                             // By mistake Lambda improvement is found    |
-        {
-          G4cout<<"***G4QDR::PFr:HypN="<<hPDG<<": bothSigm&Lamb -> ImproveIt"<<G4endl;//|
-          //throw G4QException("*G4QDiffractionRatio::Fragment:BothLambda&SigmaInHN");//|
-          // @@ Correction, which does not conserv the charge !! (-> add decay in 3)    |
-          if(nSP) nL+=nSP;                 // Convert Sigma+ to Lambda                  |
-          else    nL+=nSM;                 // Convert Sigma- to Lambda                  |
-        }
-        if(nSP)                            // Sibma+ should be decayed                  |
-        {
-          nL=nSP;                          // #of decaying hyperons                     |
-          sPDG=3222;                       // PDG code of decaying hyperons             |
-          MLa=mSigP;                       // Mass of decaying hyperons                 |
-        }
-        else                               // Sibma+ should be decayed                  |
-        {
-          nL=nSM;                          // #of decaying hyperons                     |
-          sPDG=3112;                       // PDG code of decaying hyperons             |
-          MLa=mSigM;                       // Mass of decaying hyperons                 |
-        }
-      }
-#ifdef fdebug
-      G4cout<<"G4QDiffRat::ProjFrag:*G4*mS="<<MLa<<",sPDG="<<sPDG<<",nL="<<nL<<G4endl;//|
-#endif
-      if(nL>1) MLa*=nL;                    // Total mass of the decaying hyperons       |
-      G4double rlM=G4QNucleus(rlPDG).GetMZNS();// Mass of the NonstrangeNucleus         |
-      if(!nSP&&!nSM&&nL==1&&reM>rlM+mSigZ&&G4UniformRand()>.5) // Conv Lambda->Sigma0   |
-      {
-        sPDG=3212;                         // PDG code of a decaying hyperon            |
-        MLa=mSigZ;                         // Mass of the decaying hyperon              |
-      }
-      G4int rnPDG = hPDG-nL*999999;        // Convert Lambdas to neutrons (for convInN) |
-      G4QNucleus rnN(rnPDG);               // New nonstrange nucleus                    |
-      G4double rnM=rnN.GetMZNS();          // Mass of the new nonstrange nucleus        |
-      // @@ In future take into account Iso-Hypernucleus (Add PI+,R & Pi-,R decays)     |
-      if(rlPDG==90000000)                  // Multy Hyperon (HyperNuc of only hyperons) |
-      {
-        if(nL>1) r4M=r4M/nL;               // split the 4-mom for the MultyLambda       |
-        for(G4int il=0; il<nL; il++)       // loop over Lambdas                         |
-        {
-          if(anti) sPDG=-sPDG;             // For anti-nucleus case                     |
-          G4QHadron* theLam = new G4QHadron(sPDG,r4M); // Make NewHadr for the Hyperon  |
-          ResHV->push_back(theLam);        // Fill in the Lambda                        |
-#ifdef fdebug
-          sum4M+=r4M;                      // Sum 4-momenta for the EnMom check         |
-          G4cout<<"G4QDR::ProjFrag: *additional Lambda*="<<r4M<<sPDG<<G4endl; //        |
-#endif
-        }
-      }
-      else if(reM>rlM+MLa-eps)              // Lambda (or Sigma) can be split           |
-      {
-        G4LorentzVector n4M(0.,0.,0.,rlM);  // 4-mom of the residual nucleus            |
-        G4LorentzVector h4M(0.,0.,0.,MLa);  // 4-mom of the Hyperon                     |
-        G4double sum=rlM+MLa;               // Safety sum                               |
-        if(std::fabs(reM-sum)<eps)          // At rest in CMS                           |
-        {
-          n4M=r4M*(rlM/sum);                // Split tot 4-mom for resNuc               |
-          h4M=r4M*(MLa/sum);                // Split tot 4-mom for Hyperon              |
-        }
-        else if(reM<sum || !G4QHadron(r4M).DecayIn2(n4M,h4M)) // Error in decay         |
-        {
-          G4cerr<<"***G4QDF::PF:HypN,M="<<reM<<"<A+n*L="<<sum<<",d="<<sum-reM<<G4endl;//|
-          throw G4QException("***G4QDiffractionRatio::ProjFragment:HypernuclusDecay");//|
-        }
-#ifdef fdebug
-        G4cout<<"*G4QDR::PF:HypN="<<r4M<<"->A="<<rlPDG<<n4M<<",n*L="<<nL<<h4M<<G4endl;//|
-#endif
-        loh->Set4Momentum(n4M);            // ! Update the Hadron !                     |
-        if(anti && rlPDG==90000001) rlPDG=-2112; // Convert to anti-neutron             |
-        if(anti && rlPDG==90001000) rlPDG=-2212; // Convert to anti-proton              |
-        loh->SetQPDG(G4QPDGCode(rlPDG));   // ConvertedHypernucleus to nonstrange(@anti)|
-        if(rlPDG==90000002)                // Additional action with loH changed to 2n  |
-        {
-          G4LorentzVector newLV=n4M/2.;    // Split 4-momentum                          |
-          loh->Set4Momentum(newLV);        // Reupdate the hadron                       |
-          if(anti) loh->SetQPDG(G4QPDGCode(-2112)); // Make anti-neutron PDG            |
-          else loh->SetQPDG(G4QPDGCode(2112)); // Make neutron PDG                      |
-          G4QHadron* secHadr = new G4QHadron(loh); // Duplicate the neutron             |
-          ResHV->push_back(secHadr);       // Fill in the additional neutron            |
-#ifdef fdebug
-          sum4M+=r4M;                      // Sum 4-momenta for the EnMom check         |
-          G4cout<<"G4QDR::ProgFrag: *additional Neutron*="<<r4M<<sPDG<<G4endl; //       |
-#endif
-        }
-        else if(rlPDG==90002000)           // Additional action with loH change to 2p   |
-        {
-          G4LorentzVector newLV=n4M/2.;    // Split 4-momentum                          |
-          loh->Set4Momentum(newLV);        // Reupdate the hadron                       |
-          if(anti) loh->SetQPDG(G4QPDGCode(-2212)); // Make anti-neutron PDG            |
-          else loh->SetQPDG(G4QPDGCode(2112)); // Make neutron PDG                      |
-          G4QHadron* secHadr = new G4QHadron(loh); // Duplicate the proton              |
-          ResHV->push_back(secHadr);       // Fill in the additional neutron            |
-#ifdef fdebug
-          sum4M+=r4M;                      // Sum 4-momenta for the EnMom check         |
-          G4cout<<"G4QDR::ProjFrag: *additional Proton*="<<r4M<<sPDG<<G4endl; //        |
-#endif
-        }
-        // @@(?) Add multybaryon decays if necessary (Now it anyhow is made later)      |
-#ifdef fdebug
-        G4cout<<"*G4QDiffractionRatio::PrFrag:resNucPDG="<<loh->GetPDGCode()<<G4endl;// |
-#endif
-        if(nL>1) h4M=h4M/nL;               // split the lambda's 4-mom if necessary     |
-        for(G4int il=0; il<nL; il++)       // A loop over excessive hyperons            |
-        {
-          if(anti) sPDG=-sPDG;             // For anti-nucleus case                     |
-          G4QHadron* theLamb = new G4QHadron(sPDG,h4M); // Make NewHadr for the Hyperon |
-          ResHV->push_back(theLamb);       // Fill in the additional neutron            |
-#ifdef fdebug
-          sum4M+=r4M;                      // Sum 4-momenta for the EnMom check         |
-          G4cout<<"G4QDR::ProjFrag: *additional Hyperon*="<<r4M<<sPDG<<G4endl; //       |
-#endif
-        }
-      }
-      else if(reM>rnM+mPi0-eps&&!nSP&&!nSM)// Lambda->N only if Sigmas are absent       |
-      {
-        G4int nPi=static_cast<G4int>((reM-rnM)/mPi0); // Calc. pion multiplicity        |
-        if (nPi>nL) nPi=nL;                // Cut the pion multiplicity                 |
-        G4double npiM=nPi*mPi0;            // Total pion mass                           |
-        G4LorentzVector n4M(0.,0.,0.,rnM); // Residual nucleus 4-momentum               |
-        G4LorentzVector h4M(0.,0.,0.,npiM);// 4-momentum of pions                       |
-        G4double sum=rnM+npiM;             // Safety sum                                |
-        if(std::fabs(reM-sum)<eps)         // At rest                                   |
-        {
-          n4M=r4M*(rnM/sum);               // The residual nucleus part                 |
-          h4M=r4M*(npiM/sum);              // The pion part                             |
-        }
-        else if(reM<sum || !G4QHadron(r4M).DecayIn2(n4M,h4M)) // Error in decay         |
-        {
-          G4cerr<<"*G4QDR::PF:HypN,M="<<reM<<"<A+n*Pi0="<<sum<<",d="<<sum-reM<<G4endl;//|
-          throw G4QException("***G4QDiffractionRatio::ProjFragment:HypernuclDecay"); // |
-        }
-        loh->Set4Momentum(n4M);            // ! Update the Hadron !                     |
-        if(anti && rnPDG==90000001) rnPDG=-2112; // Convert to anti-neutron             |
-        if(anti && rnPDG==90001000) rnPDG=-2212; // Convert to anti-proton              |
-        loh->SetQPDG(G4QPDGCode(rnPDG));   // convert hyperNuc to nonstrangeNuc(@@anti) |
-#ifdef fdebug
-        G4cout<<"*G4QDR::PF:R="<<r4M<<"->A="<<rnPDG<<n4M<<",n*Pi0="<<nPi<<h4M<<G4endl;//|
-#endif
-        if(nPi>1) h4M=h4M/nPi;             // Split the 4-mom if necessary              |
-        for(G4int ihn=0; ihn<nPi; ihn++)   // A loop over additional pions              |
-        {
-          G4QHadron* thePion = new G4QHadron(111,h4M); // Make a New Hadr for the pi0   |
-          ResHV->push_back(thePion);       // Fill in the Pion                          |
-#ifdef fdebug
-          sum4M+=r4M;                      // Sum 4-momenta for the EnMom check         |
-          G4cout<<"G4QDR::ProjFrag: *additional Pion*="<<r4M<<sPDG<<G4endl; //          |
-#endif
-        }
-        if(rnPDG==90000002)                // Additional action with loH change to 2n   |
-        {
-          G4LorentzVector newLV=n4M/2.;    // Split 4-momentum                          |
-          loh->Set4Momentum(newLV);        // Reupdate the hadron                       |
-          if(anti) loh->SetQPDG(G4QPDGCode(-2112)); // Make anti-neutron PDG            |
-          else loh->SetQPDG(G4QPDGCode(2112)); // Make neutron PDG                      |
-          G4QHadron* secHadr = new G4QHadron(loh); // Duplicate the neutron             |
-          ResHV->push_back(secHadr);       // Fill in the additional neutron            |
-#ifdef fdebug
-          sum4M+=r4M;                      // Sum 4-momenta for the EnMom check         |
-          G4cout<<"G4QDR::ProjFrag: *additional Neutron*="<<r4M<<sPDG<<G4endl; //       |
-#endif
-        }
-        else if(rnPDG==90002000)           // Additional action with loH change to 2p   |
-        {
-          G4LorentzVector newLV=n4M/2.;    // Split 4-momentum                          |
-          loh->Set4Momentum(newLV);        // Reupdate the hadron                       |
-          if(anti) loh->SetQPDG(G4QPDGCode(-2212)); // Make anti-neutron PDG            |
-          else loh->SetQPDG(G4QPDGCode(2112)); // Make neutron PDG                      |
-          G4QHadron* secHadr = new G4QHadron(loh); // Duplicate the proton              |
-          ResHV->push_back(secHadr);       // Fill in the additional neutron            |
-#ifdef fdebug
-          sum4M+=r4M;                      // Sum 4-momenta for the EnMom check         |
-          G4cout<<"G4QDR::ProjFrag: *additional Proton*="<<r4M<<sPDG<<G4endl; //        |
-#endif
-        }
-        // @@ Add multybaryon decays if necessary                                       |
-      }
-      else // If this Excepton shows up (lowProbable appearance) => include gamma decay |
-      {
-        G4double d=rlM+MLa-reM;            // Hyperon Excessive energy                  |
-        G4cerr<<"G4QDR::PF:R="<<rlM<<",S+="<<nSP<<",S-="<<nSM<<",L="<<nL<<",d="<<d<<G4endl;
-        d=rnM+mPi0-reM;                    // Pion Excessive energy                     |
-        G4cerr<<"G4QDR::PF:"<<oPDG<<","<<hPDG<<",M="<<reM<<"<"<<rnM+mPi0<<",d="<<d<<G4endl;
-        throw G4QException("G4QDiffractionRatio::ProjFragment: Hypernuclear conver");// |
-      }
-    }                                      // => End of G4 Hypernuclear decay           |
-    ResHV->push_back(loh);                 // Fill in the result                        |
-#ifdef debug
-    sum4M+=loh->Get4Momentum();            // Sum 4-momenta for the EnMom check         |
-    G4cout<<"G4QDR::PrFra:#"<<iq<<","<<loh->Get4Momentum()<<loh->GetPDGCode()<<G4endl;//|
-#endif
-  }                                        //                                           |
-  delete leadhs; // <----<----<----<----<----<----<----<----<----<----<----<----<----<--*
-#ifdef debug
-  G4cout<<"G4QDiffractionRatio::ProjFragment: *End* Sum="<<sum4M<<" =?= d4M="<<d4M<<G4endl;
-#endif
-  return ResHV; // Result
-} // End of ProjFragment
-
-// Calculates Single Diffraction Taarget Excitation Cross-Section (independent Units)
-G4double G4QDiffractionRatio::GetTargSingDiffXS(G4double pIU, G4int pPDG, G4int Z, G4int N)
-{
-  G4double mom=pIU/gigaelectronvolt;    // Projectile momentum in GeV
-  if ( mom < 1. || (pPDG != 2212 && pPDG != 2112) )
-    G4cerr<<"G4QDiffractionRatio::GetTargSingDiffXS isn't applicable p="<<mom<<" GeV, PDG="
-         <<pPDG<<G4endl;
-  G4double A=Z+N;                        // A of the target
-  //return 4.5*std::pow(A,.364)*millibarn; // Result
-  return 3.7*std::pow(A,.364)*millibarn; // Result after mpi0 correction
-
-} // End of ProjFragment
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QDiscProcessMixer.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QDiscProcessMixer.cc	(revision 1197)
+++ 	(revision )
@@ -1,127 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QDiscProcessMixer.cc,v 1.8 2009/04/22 12:26:13 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QDiscProcessMixer class -------------------
-//                 by Mikhail Kossov, Aug 2007.
-// G4QDiscProcessMixer class of the CHIPS Simulation Branch in GEANT4
-// ------------------------------------------------------------------------
-// Short description: universal mixer of processes (NOT models as in GHAD!)
-// depending on the application energy region (defined by users).
-// ------------------------------------------------------------------------
-
-//#define debug
-
-#include "G4QDiscProcessMixer.hh"
-
-// Constructor
-G4QDiscProcessMixer::G4QDiscProcessMixer(const G4String& name,
-                                         const G4ParticleDefinition* particle,
-                                         G4ProcessType pType):
-  G4VDiscreteProcess(name, pType), DPParticle(particle)
-{
-#ifdef debug
-  G4cout<<"G4QDiscProcessMixer::Constructor is called processName="<<name<<G4endl;
-#endif
-  if (verboseLevel>0) G4cout<<GetProcessName()<<" process is created "<<G4endl;
-}
-
-// Destructor
-G4QDiscProcessMixer::~G4QDiscProcessMixer()
-{
-  // Now the responsibility of deleting is deligated to the user, who created them
-  //for_each(theDPVector.begin(), theDPVector.end(), DeleteDiscreteProcess());
-}
-
-void G4QDiscProcessMixer::AddDiscreteProcess(G4VDiscreteProcess* DP, G4double ME)
-{
-  static const G4double maxEn = 1.E8*megaelectronvolt; // Conditional INF
-  if(!theDPVector.size()) // The first process in the DiscreteProcessVector (MaxE=INF)
-  {
-    std::pair<G4VDiscreteProcess*, G4double>* QDiscProc =
-      new std::pair<G4VDiscreteProcess*, G4double>(DP, maxEn);
-    theDPVector.push_back( QDiscProc );
-  }
-  else
-  {
-    if(ME<theDPVector[theDPVector.size()-1]->second)
-    {
-      std::pair<G4VDiscreteProcess*, G4double>* QDiscProc =
-        new std::pair<G4VDiscreteProcess*, G4double>(DP, ME);
-      theDPVector.push_back( QDiscProc );
-    }
-    else // Wrong Max Energy Order for the new process in the sequence of processes
-    {
-      G4cerr<<"G4QDiscProcessMixer::AddDiscreteProcess:LastMaxE("<<theDPVector.size()-1
-            <<")="<<theDPVector[theDPVector.size()-1]->second<<" <= MaxE="<<ME<<G4endl;
-      G4Exception("G4QDiscProcessMixer::AddDiscreteProcess: Wrong Max Energy Order");
-    }
-  }
-}
-
-G4bool G4QDiscProcessMixer::IsApplicable(const G4ParticleDefinition& particle) 
-{
-  if(particle == *DPParticle) return true;
-  return false;
-}
-
-G4double G4QDiscProcessMixer::PostStepGetPhysicalInteractionLength(const G4Track& Track,
-                                                                   G4double  PrevStSize,
-                                                                   G4ForceCondition* F)
-{
-  G4double kEn=Track.GetDynamicParticle()->GetKineticEnergy(); // Projectile kinetic energy
-  G4int maxDP=theDPVector.size();
-  if(maxDP) for(G4int i=maxDP-1; i>-1; i--) if(kEn < theDPVector[i]->second)
-    return theDPVector[i]->first->PostStepGetPhysicalInteractionLength(Track,PrevStSize,F);
-  return DBL_MAX;
-}
-
-// A fake class for compilation only
-G4double G4QDiscProcessMixer::GetMeanFreePath(const G4Track&, G4double, G4ForceCondition*)
-{
-  return DBL_MAX;
-}
-
-G4VParticleChange* G4QDiscProcessMixer::PostStepDoIt(const G4Track& Track,
-                                                     const G4Step& Step)
-{
-  G4double kEn=Track.GetDynamicParticle()->GetKineticEnergy(); // Projectile kinetic energy
-  G4int maxDP=theDPVector.size();
-  if(maxDP) for(G4int i=maxDP-1; i>-1; i--) if(kEn < theDPVector[i]->second)
-  {
-    //EnMomConservation= theDPVector[i]->first->GetEnegryMomentumConservation();
-    //nOfNeutrons      = theDPVector[i]->first->GetNumberOfNeutronsInTarget();
-    return theDPVector[i]->first->PostStepDoIt(Track, Step);
-  }
-  return G4VDiscreteProcess::PostStepDoIt(Track, Step);
-}
-
-//G4LorentzVector G4QDiscProcessMixer::GetEnegryMomentumConservation()
-//                                                              {return EnMomConservation;}
-
-//G4int G4QDiscProcessMixer::GetNumberOfNeutronsInTarget()
-//                                                                    {return nOfNeutrons;}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElastic.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElastic.cc	(revision 1197)
+++ 	(revision )
@@ -1,577 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QElastic.cc,v 1.28 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QElastic class -----------------
-//                 by Mikhail Kossov, December 2003.
-// G4QElastic class of the CHIPS Simulation Branch in GEANT4
-// --------------------------------------------------------------------
-// Short description: At present this is a process for nucleon-nucleus
-// elastic scattering. Mesons and hyperons exist only for the Hydrogen
-// target (see G4QuasiFreeRatios).
-// --------------------------------------------------------------------
-
-//#define debug
-//#define pdebug
-//#define tdebug
-//#define nandebug
-//#define ppdebug
-
-#include "G4QElastic.hh"
-
-// Initialization of static vectors
-G4int    G4QElastic::nPartCWorld=152;        // The#of particles initialized in CHIPS World
-std::vector<G4int> G4QElastic::ElementZ;              // Z of the element(i) in theLastCalc
-std::vector<G4double> G4QElastic::ElProbInMat;        // SumProbabilityElements in Material
-std::vector<std::vector<G4int>*> G4QElastic::ElIsoN;       // N of isotope(j) of Element(i)
-std::vector<std::vector<G4double>*>G4QElastic::IsoProbInEl;//SumProbabIsotopes inElementI
-
-// Constructor
-G4QElastic::G4QElastic(const G4String& processName): 
- G4VDiscreteProcess(processName, fHadronic)
-{
-#ifdef debug
-  G4cout<<"G4QElastic::Constructor is called processName="<<processName<<G4endl;
-#endif
-  if (verboseLevel>0) G4cout << GetProcessName() << " process is created "<< G4endl;
-  SetProcessSubType(fHadronElastic);
-  //G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part. max)
-}
-
-// Destructor
-G4QElastic::~G4QElastic() {}
-
-
-G4LorentzVector G4QElastic::GetEnegryMomentumConservation() {return EnMomConservation;}
-
-G4int G4QElastic::GetNumberOfNeutronsInTarget() {return nOfNeutrons;}
-
-// output of the function must be in units of length! L=1/sig_V,sig_V=SUM(n(j,i)*sig(j,i)),
-// where n(i,j) is a number of nuclei of the isotop j of the element i in V=1(lengtUnit^3)
-// ********** All CHIPS cross sections are calculated in the surface units ************
-G4double G4QElastic::GetMeanFreePath(const G4Track& aTrack,G4double Q,G4ForceCondition* Fc)
-{
-  *Fc = NotForced;
-  const G4DynamicParticle* incidentParticle = aTrack.GetDynamicParticle();
-  G4ParticleDefinition* incidentParticleDefinition=incidentParticle->GetDefinition();
-  if( !IsApplicable(*incidentParticleDefinition))
-    G4cout<<"*W*G4QElastic::GetMeanFreePath: is called for notImplementedParticle"<<G4endl;
-  // Calculate the mean Cross Section for the set of Elements(*Isotopes) in the Material
-  G4double Momentum = incidentParticle->GetTotalMomentum(); // 3-momentum of the Particle
-#ifdef debug
-  G4double KinEn = incidentParticle->GetKineticEnergy();
-  G4cout<<"G4QElastic::GetMeanFreePath: kinE="<<KinEn<<",Mom="<<Momentum<<G4endl; // Result
-#endif
-  const G4Material* material = aTrack.GetMaterial();        // Get the current material
-  const G4double* NOfNucPerVolume = material->GetVecNbOfAtomsPerVolume();
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QElastic::GetMeanFreePath:"<<nE<<" Elem's in theMaterial"<<G4endl;
-#endif
-  G4VQCrossSection* CSmanager=G4QElasticCrossSection::GetPointer();
-  G4int pPDG=0;
-
-  if     (incidentParticleDefinition == G4Proton::Proton()  ) pPDG=2212;
-  else if(incidentParticleDefinition == G4Neutron::Neutron()) pPDG=2112;
-  else G4cout<<"G4QElastic::GetMeanFreePath:only nA & pA are implemented in CHIPS"<<G4endl;
-  
-  G4QIsotope* Isotopes = G4QIsotope::Get(); // Pointer to the G4QIsotopes singleton
-  G4double sigma=0.;                        // Sums over elements for the material
-  G4int IPIE=IsoProbInEl.size();            // How many old elements?
-  if(IPIE) for(G4int ip=0; ip<IPIE; ++ip)   // Clean up the SumProb's of Isotopes (SPI)
-  {
-    std::vector<G4double>* SPI=IsoProbInEl[ip]; // Pointer to the SPI vector
-    SPI->clear();
-    delete SPI;
-    std::vector<G4int>* IsN=ElIsoN[ip];     // Pointer to the N vector
-    IsN->clear();
-    delete IsN;
-  }
-  ElProbInMat.clear();                      // Clean up the SumProb's of Elements (SPE)
-  ElementZ.clear();                         // Clear the body vector for Z of Elements
-  IsoProbInEl.clear();                      // Clear the body vector for SPI
-  ElIsoN.clear();                           // Clear the body vector for N of Isotopes
-  for(G4int i=0; i<nE; ++i)
-  {
-    G4Element* pElement=(*theElementVector)[i]; // Pointer to the current element
-    G4int Z = static_cast<G4int>(pElement->GetZ()); // Z of the Element
-    ElementZ.push_back(Z);                  // Remember Z of the Element
-    G4int isoSize=0;                        // The default for the isoVectorLength is 0
-    G4int indEl=0;                          // Index of non-natural element or 0(default)
-    G4IsotopeVector* isoVector=pElement->GetIsotopeVector(); // Get the predefined IsoVect
-    if(isoVector) isoSize=isoVector->size();// Get size of the existing isotopeVector
-#ifdef debug
-    G4cout<<"G4QElastic::GetMeanFreePath: isovectorLength="<<isoSize<<G4endl; // Result
-#endif
-    if(isoSize)                             // The Element has non-trivial abundance set
-    {
-      indEl=pElement->GetIndex()+1;         // Index of the non-trivial element is an order
-#ifdef debug
-      G4cout<<"G4QEl::GetMFP: iE="<<indEl<<", def="<<Isotopes->IsDefined(Z,indEl)<<G4endl;
-#endif
-      if(!Isotopes->IsDefined(Z,indEl))     // This index is not defined for this Z: define
-      {
-        std::vector<std::pair<G4int,G4double>*>* newAbund =
-                                               new std::vector<std::pair<G4int,G4double>*>;
-        G4double* abuVector=pElement->GetRelativeAbundanceVector();
-        for(G4int j=0; j<isoSize; j++)      // Calculation of abundance vector for isotopes
-        {
-          G4int N=pElement->GetIsotope(j)->GetN()-Z; // N means A=N+Z !
-          if(pElement->GetIsotope(j)->GetZ()!=Z)G4cerr<<"G4QElastic::GetMeanFreePath: Z="
-                                         <<pElement->GetIsotope(j)->GetZ()<<"#"<<Z<<G4endl;
-          G4double abund=abuVector[j];
-          std::pair<G4int,G4double>* pr= new std::pair<G4int,G4double>(N,abund);
-#ifdef debug
-          G4cout<<"G4QElastic::GetMeanFreePath:pair#="<<j<<",N="<<N<<",ab="<<abund<<G4endl;
-#endif
-          newAbund->push_back(pr);
-        }
-#ifdef debug
-        G4cout<<"G4QElastic::GetMeanFreePath: pairVectorLength="<<newAbund->size()<<G4endl;
-#endif
-        indEl=G4QIsotope::Get()->InitElement(Z,indEl,newAbund); // definition of the newInd
-        for(G4int k=0; k<isoSize; k++) delete (*newAbund)[k];   // Cleaning temporary
-        delete newAbund; // Was "new" in the beginning of the name space
-      }
-    }
-    std::vector<std::pair<G4int,G4double>*>* cs= Isotopes->GetCSVector(Z,indEl);//CSPointer
-    std::vector<G4double>* SPI = new std::vector<G4double>; // Pointer to the SPI vector
-    IsoProbInEl.push_back(SPI);
-    std::vector<G4int>* IsN = new std::vector<G4int>; // Pointer to the N vector
-    ElIsoN.push_back(IsN);
-    G4int nIs=cs->size();                   // A#Of Isotopes in the Element
-#ifdef debug
-    G4cout<<"G4QEl::GMFP:=***=>,#isot="<<nIs<<", Z="<<Z<<", indEl="<<indEl<<G4endl;
-#endif
-    G4double susi=0.;                       // sum of CS over isotopes
-    if(nIs) for(G4int j=0; j<nIs; j++)      // Calculate CS for eachIsotope of El
-    {
-      std::pair<G4int,G4double>* curIs=(*cs)[j]; // A pointer, which is used twice
-      G4int N=curIs->first;                 // #of Neuterons in the isotope j of El i
-      IsN->push_back(N);                    // Remember Min N for the Element
-#ifdef debug
-      G4cout<<"G4QEl::GMFP:*true*,P="<<Momentum<<",Z="<<Z<<",N="<<N<<",PDG="<<pPDG<<G4endl;
-#endif
-      G4bool ccsf=true;
-      if(Q==-27.) ccsf=false;
-#ifdef debug
-      G4cout<<"G4QEl::GMFP: GetCS #1 j="<<j<<G4endl;
-#endif
-      G4double CSI=CSmanager->GetCrossSection(ccsf,Momentum,Z,N,pPDG);//CS(j,i) for isotope
-
-#ifdef debug
-      G4cout<<"G4QEl::GMFP: jI="<<j<<", Zt="<<Z<<", Nt="<<N<<", Mom="<<Momentum<<", XSec="
-            <<CSI/millibarn<<G4endl;
-#endif
-      curIs->second = CSI;
-      susi+=CSI;                            // Make a sum per isotopes
-      SPI->push_back(susi);                 // Remember summed cross-section
-    } // End of temporary initialization of the cross sections in the G4QIsotope singeltone
-    sigma+=Isotopes->GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i];//SUM(MeanCS*NOfNperV)
-#ifdef debug
-    G4cout<<"G4QEl::GMFP: <S>="<<Isotopes->GetMeanCrossSection(Z,indEl)<<", AddToSigma="
-          <<Isotopes->GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i]<<G4endl;
-#endif
-    ElProbInMat.push_back(sigma);
-  } // End of LOOP over Elements
-  // Check that cross section is not zero and return the mean free path
-#ifdef debug
-  G4cout<<"G4QElastic::GetMeanFreePath: MeanFreePath="<<1./sigma<<G4endl;
-#endif
-  if(sigma > 0.) return 1./sigma;                 // Mean path [distance] 
-  return DBL_MAX;
-}
-
-
-G4bool G4QElastic::IsApplicable(const G4ParticleDefinition& particle) 
-{
-  if      (particle == *(        G4Proton::Proton()        )) return true;
-  else if (particle == *(       G4Neutron::Neutron()       )) return true;
-  //else if (particle == *(     G4MuonMinus::MuonMinus()     )) return true; 
-  //else if (particle == *(       G4TauPlus::TauPlus()       )) return true;
-  //else if (particle == *(      G4TauMinus::TauMinus()      )) return true;
-  //else if (particle == *(      G4Electron::Electron()      )) return true;
-  //else if (particle == *(      G4Positron::Positron()      )) return true;
-  //else if (particle == *(         G4Gamma::Gamma()         )) return true;
-  //else if (particle == *(      G4MuonPlus::MuonPlus()      )) return true;
-  //else if (particle == *(G4AntiNeutrinoMu::AntiNeutrinoMu())) return true;
-  //else if (particle == *(   G4NeutrinoMu::NeutrinoMu()   )) return true;
-  //else if (particle == *(     G4PionMinus::PionMinus()     )) return true;
-  //else if (particle == *(      G4PionPlus::PionPlus()      )) return true;
-  //else if (particle == *(      G4KaonPlus::KaonPlus()      )) return true;
-  //else if (particle == *(     G4KaonMinus::KaonMinus()     )) return true;
-  //else if (particle == *(  G4KaonZeroLong::KaonZeroLong()  )) return true;
-  //else if (particle == *( G4KaonZeroShort::KaonZeroShort() )) return true;
-  //else if (particle == *(        G4Lambda::Lambda()        )) return true;
-  //else if (particle == *(     G4SigmaPlus::SigmaPlus()     )) return true;
-  //else if (particle == *(    G4SigmaMinus::SigmaMinus()    )) return true;
-  //else if (particle == *(     G4SigmaZero::SigmaZero()     )) return true;
-  //else if (particle == *(       G4XiMinus::XiMinus()       )) return true;
-  //else if (particle == *(        G4XiZero::XiZero()        )) return true;
-  //else if (particle == *(    G4OmegaMinus::OmegaMinus()    )) return true;
-  //else if (particle == *(   G4AntiNeutron::AntiNeutron()   )) return true;
-  //else if (particle == *(    G4AntiProton::AntiProton()    )) return true;
-#ifdef debug
-  G4cout<<"***>>G4QElastic::IsApplicable: PDG="<<particle.GetPDGEncoding()<<G4endl;
-#endif
-  return false;
-}
-
-G4VParticleChange* G4QElastic::PostStepDoIt(const G4Track& track, const G4Step& step)
-{
-  //static const G4double mProt=G4Proton::Proton()->GetPDGMass()*GeV;// proton mass in GeV
-  //static const G4double mProt= G4QPDGCode(2212).GetMass()*.001;    // CHIPS m_p in GeV
-  //static const G4double mP2=mProt*mProt;                           // squared proton mass
-  //
-  //-------------------------------------------------------------------------------------
-  static G4bool CWinit = true;                       // CHIPS Warld needs to be initted
-  if(CWinit)
-  {
-    CWinit=false;
-    G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part.max)
-  }
-  //-------------------------------------------------------------------------------------
-  const G4DynamicParticle* projHadron = track.GetDynamicParticle();
-  const G4ParticleDefinition* particle=projHadron->GetDefinition();
-#ifdef debug
-  G4cout<<"G4QElastic::PostStepDoIt: Before the GetMeanFreePath is called In4M="
-        <<projHadron->Get4Momentum()<<" of PDG="<<particle->GetPDGEncoding()<<", Type="
-        <<particle->GetParticleType()<<", Subtp="<<particle->GetParticleSubType()<<G4endl;
-#endif
-  G4ForceCondition cond=NotForced;
-  GetMeanFreePath(track, -27., &cond);                  // @@ ?? jus to update parameters?
-#ifdef debug
-  G4cout<<"G4QElastic::PostStepDoIt: After the GetMeanFreePath is called"<<G4endl;
-#endif
-  G4LorentzVector proj4M=(projHadron->Get4Momentum())/MeV; // Convert to MeV!
-  G4LorentzVector scat4M=proj4M;                      // @@ Must be filled (?)
-  G4double momentum = projHadron->GetTotalMomentum()/MeV; // 3-momentum of the Proj in MeV
-  G4double Momentum = proj4M.rho();                   // @@ Just for the test purposes
-  if(std::fabs(Momentum-momentum)>.000001)
-           G4cerr<<"*War*G4QElastic::PostStepDoIt:P(IU)="<<Momentum<<"#"<<momentum<<G4endl;
-  G4double pM2=proj4M.m2();        // in MeV^2
-  G4double pM=std::sqrt(pM2);      // in MeV
-#ifdef pdebug
-  G4cout<<"G4QElastic::PostStepDoIt: pP(IU)="<<Momentum<<"="<<momentum<<",pM="<<pM
-        <<",scat4M="<<scat4M<<scat4M.m()<<G4endl;
-#endif
-  if (!IsApplicable(*particle))  // Check applicability
-  {
-    G4cerr<<"G4QElastic::PostStepDoIt: Only NA elastic is implemented."<<G4endl;
-    return 0;
-  }
-  const G4Material* material = track.GetMaterial();      // Get the current material
-  G4int Z=0;
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QElastic::PostStepDoIt: "<<nE<<" elements in the material."<<G4endl;
-#endif
-  G4int projPDG=0;                           // PDG Code prototype for the captured hadron
-  // Not all these particles are implemented yet (see Is Applicable)
-  if      (particle ==          G4Proton::Proton()         ) projPDG= 2212;
-  else if (particle ==         G4Neutron::Neutron()        ) projPDG= 2112;
-  //else if (particle ==       G4PionMinus::PionMinus()      ) projPDG= -211;
-  //else if (particle ==        G4PionPlus::PionPlus()       ) projPDG=  211;
-  //else if (particle ==        G4KaonPlus::KaonPlus()       ) projPDG= 2112;
-  //else if (particle ==       G4KaonMinus::KaonMinus()      ) projPDG= -321;
-  //else if (particle ==    G4KaonZeroLong::KaonZeroLong()   ) projPDG=  130;
-  //else if (particle ==   G4KaonZeroShort::KaonZeroShort()  ) projPDG=  310;
-  //else if (particle ==        G4MuonPlus::MuonPlus()       ) projPDG=  -13;
-  //else if (particle ==       G4MuonMinus::MuonMinus()      ) projPDG=   13;
-  //else if (particle ==      G4NeutrinoMu::NeutrinoMu()     ) projPDG=   14;
-  //else if (particle ==  G4AntiNeutrinoMu::AntiNeutrinoMu() ) projPDG=  -14;
-  //else if (particle ==        G4Electron::Electron()       ) projPDG=   11;
-  //else if (particle ==        G4Positron::Positron()       ) projPDG=  -11;
-  //else if (particle ==       G4NeutrinoE::NeutrinoE()      ) projPDG=   12;
-  //else if (particle ==   G4AntiNeutrinoE::AntiNeutrinoE()  ) projPDG=  -12;
-  //else if (particle ==           G4Gamma::Gamma()          ) projPDG=   22;
-  //else if (particle ==         G4TauPlus::TauPlus()        ) projPDG=  -15;
-  //else if (particle ==        G4TauMinus::TauMinus()       ) projPDG=   15;
-  //else if (particle ==     G4NeutrinoTau::NeutrinoTau()    ) projPDG=   16;
-  //else if (particle == G4AntiNeutrinoTau::AntiNeutrinoTau()) projPDG=  -16;
-  //else if (particle ==          G4Lambda::Lambda()         ) projPDG= 3122;
-  //else if (particle ==       G4SigmaPlus::SigmaPlus()      ) projPDG= 3222;
-  //else if (particle ==      G4SigmaMinus::SigmaMinus()     ) projPDG= 3112;
-  //else if (particle ==       G4SigmaZero::SigmaZero()      ) projPDG= 3212;
-  //else if (particle ==         G4XiMinus::XiMinus()        ) projPDG= 3312;
-  //else if (particle ==          G4XiZero::XiZero()         ) projPDG= 3322;
-  //else if (particle ==      G4OmegaMinus::OmegaMinus()     ) projPDG= 3334;
-  //else if (particle ==     G4AntiNeutron::AntiNeutron()    ) projPDG=-2112;
-  //else if (particle ==      G4AntiProton::AntiProton()     ) projPDG=-2212;
-#ifdef debug
-  G4int prPDG=particle->GetPDGEncoding();
-  G4cout<<"G4QElastic::PostStepDoIt: projPDG="<<projPDG<<", stPDG="<<prPDG<<G4endl;
-#endif
-  if(!projPDG)
-  {
-    G4cerr<<"*Warning*G4QElastic::PostStepDoIt: Undefined interacting hadron"<<G4endl;
-    return 0;
-  }
-  G4int EPIM=ElProbInMat.size();
-#ifdef debug
-  G4cout<<"G4QElastic::PostStDoIt:m="<<EPIM<<",n="<<nE<<",T="<<ElProbInMat[EPIM-1]<<G4endl;
-#endif
-  G4int i=0;
-  if(EPIM>1)
-  {
-    G4double rnd = ElProbInMat[EPIM-1]*G4UniformRand();
-    for(i=0; i<nE; ++i)
-    {
-#ifdef debug
-      G4cout<<"G4QElastic::PostStepDoIt:EPM["<<i<<"]="<<ElProbInMat[i]<<",r="<<rnd<<G4endl;
-#endif
-      if (rnd<ElProbInMat[i]) break;
-    }
-    if(i>=nE) i=nE-1;                        // Top limit for the Element
-  }
-  G4Element* pElement=(*theElementVector)[i];
-  Z=static_cast<G4int>(pElement->GetZ());
-#ifdef debug
-    G4cout<<"G4QElastic::PostStepDoIt: i="<<i<<", Z(element)="<<Z<<G4endl;
-#endif
-  if(Z<=0)
-  {
-    G4cerr<<"---Warning---G4QElastic::PostStepDoIt: Element with Z="<<Z<<G4endl;
-    if(Z<0) return 0;
-  }
-  std::vector<G4double>* SPI = IsoProbInEl[i];// Vector of summedProbabilities for isotopes
-  std::vector<G4int>* IsN = ElIsoN[i];     // Vector of "#of neutrons" in the isotope El[i]
-  G4int nofIsot=SPI->size();               // #of isotopes in the element i
-#ifdef debug
-  G4cout<<"G4QElastic::PosStDoIt: nI="<<nofIsot<<",T="<<(*SPI)[nofIsot-1]<<G4endl;
-#endif
-  G4int j=0;
-  if(nofIsot>1)
-  {
-    G4double rndI=(*SPI)[nofIsot-1]*G4UniformRand(); // Randomize the isotop of the Element
-    for(j=0; j<nofIsot; ++j)
-    {
-#ifdef debug
-      G4cout<<"G4QElastic::PostStepDoIt: SP["<<j<<"]="<<(*SPI)[j]<<", r="<<rndI<<G4endl;
-#endif
-      if(rndI < (*SPI)[j]) break;
-    }
-    if(j>=nofIsot) j=nofIsot-1;            // Top limit for the isotope
-  }
-  G4int N =(*IsN)[j]; ;                    // Randomized number of neutrons
-#ifdef debug
-  G4cout<<"G4QElastic::PostStepDoIt: j="<<i<<", N(isotope)="<<N<<", MeV="<<MeV<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"*Warning*G4QElastic::PostStepDoIt: Isotope with Z="<<Z<<", 0>N="<<N<<G4endl;
-    return 0;
-  }
-  nOfNeutrons=N;                           // Remember it for the energy-momentum check
-#ifdef debug
-  G4cout<<"G4QElastic::PostStepDoIt: N="<<N<<" for element with Z="<<Z<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"*Warning*G4QElastic::PostStepDoIt:Element with N="<<N<< G4endl;
-    return 0;
-  }
-  aParticleChange.Initialize(track);
-#ifdef debug
-  G4cout<<"G4QElastic::PostStepDoIt: track is initialized"<<G4endl;
-#endif
-  G4double weight        = track.GetWeight();
-  G4double localtime     = track.GetGlobalTime();
-  G4ThreeVector position = track.GetPosition();
-#ifdef debug
-  G4cout<<"G4QElastic::PostStepDoIt: before Touchable extraction"<<G4endl;
-#endif
-  G4TouchableHandle trTouchable = track.GetTouchableHandle();
-#ifdef debug
-  G4cout<<"G4QElastic::PostStepDoIt: Touchable is extracted"<<G4endl;
-#endif
-  //
-  G4int targPDG=90000000+Z*1000+N;         // CHIPS PDG Code of the target nucleus
-  G4QPDGCode targQPDG(targPDG);         // @@ one can use G4Ion and get rid of CHIPS World
-  G4double tM=targQPDG.GetMass();          // CHIPS target mass in MeV
-  G4double kinEnergy= projHadron->GetKineticEnergy()*MeV; // Kin energy in MeV (Is *MeV n?)
-  G4ParticleMomentum dir = projHadron->GetMomentumDirection();// It is a unit three-vector
-  G4LorentzVector tot4M=proj4M+G4LorentzVector(0.,0.,0.,tM); // Total 4-mom of the reaction
-#ifdef debug
-  G4cout<<"G4QElastic::PostStepDoIt: tM="<<tM<<", p4M="<<proj4M<<", t4M="<<tot4M<<G4endl;
-#endif
-  EnMomConservation=tot4M;                 // Total 4-mom of reaction for E/M conservation
-  G4VQCrossSection* CSmanager=G4QElasticCrossSection::GetPointer();
-  // @@ Probably this is not necessary any more
-#ifdef debug
-  G4cout<<"G4QElas::PSDI:false,P="<<Momentum<<",Z="<<Z<<",N="<<N<<",PDG="<<projPDG<<G4endl;
-#endif
-  G4double xSec=CSmanager->GetCrossSection(false, Momentum, Z, N, projPDG);// Rec.CrossSect
-#ifdef debug
-  G4cout<<"G4QElast::PSDI:pPDG="<<projPDG<<",P="<<Momentum<<",CS="<<xSec/millibarn<<G4endl;
-#endif
-#ifdef nandebug
-  if(xSec>0. || xSec<0. || xSec==0);
-  else  G4cout<<"*Warning*G4QElastic::PostStDoIt: xSec="<<xSec/millibarn<<G4endl;
-#endif
-  // @@ check a possibility to separate p, n, or alpha (!)
-  if(xSec <= 0.) // The cross-section iz 0 -> Do Nothing
-  {
-#ifdef pdebug
-    G4cerr<<"*Warning*G4QElastic::PostStDoIt: *Zero cross-section* PDG="<<projPDG<<",tPDG="
-          <<targPDG<<",P="<<Momentum<<G4endl;
-#endif
-    //Do Nothing Action insead of the reaction
-    aParticleChange.ProposeEnergy(kinEnergy);
-    aParticleChange.ProposeLocalEnergyDeposit(0.);
-    aParticleChange.ProposeMomentumDirection(dir) ;
-    return G4VDiscreteProcess::PostStepDoIt(track,step);
-  }
-  G4double mint=CSmanager->GetExchangeT(Z,N,projPDG); // functional randomized -t in MeV^2
-#ifdef pdebug
-  G4cout<<"G4QElast::PSDI:pPDG="<<projPDG<<",tPDG="<<targPDG<<",P="<<Momentum<<",CS="
-        <<xSec<<",-t="<<mint<<G4endl;
-#endif
-#ifdef nandebug
-  if(mint>-.0000001);
-  else  G4cout<<"*Warning*G4QElastic::PostStDoIt:-t="<<mint<<G4endl;
-#endif
-  //G4double cost=1.-mint/twop2cm;              // cos(theta) in CMS
-  G4double cost=1.-mint/CSmanager->GetHMaxT();// cos(theta) in CMS
-  // 
-#ifdef ppdebug
-  G4cout<<"G4QElastic::PoStDoI:t="<<mint<<",dpcm2="<<CSmanager->GetHMaxT()<<",Ek="
-        <<kinEnergy<<",tM="<<tM<<",pM="<<pM<<",cost="<<cost<<G4endl;
-#endif
-  if(cost>1. || cost<-1. || !(cost>-1. || cost<1.))
-  {
-    if(cost>1.000001 || cost<-1.000001 || !(cost>-1. || cost<1.))
-    {
-      G4double tM2=tM*tM;                         // Squared target mass
-      G4double pEn=pM+kinEnergy;                  // tot projectile Energy in MeV
-      G4double sM=(tM+tM)*pEn+tM2+pM2;            // Mondelstam s
-      G4double twop2cm=(tM2+tM2)*(pEn*pEn-pM2)/sM;// Max_t/2 (2*p^2_cm)
-      G4cout<<"*Warning*G4QElastic::PostStepDoIt:cos="<<cost<<",t="<<mint<<",T="<<kinEnergy
-            <<",tM="<<tM<<",tmax="<<2*kinEnergy*tM<<",p="<<projPDG<<",t="<<targPDG<<G4endl;
-      G4cout<<"..G4QElastic::PoStDoI: dpcm2="<<twop2cm<<"="<<CSmanager->GetHMaxT()<<G4endl;
-    }
-    if     (cost>1.)  cost=1.;
-    else if(cost<-1.) cost=-1.;
-  }
-  G4LorentzVector reco4M=G4LorentzVector(0.,0.,0.,tM);      // 4mom of the recoil target
-  G4LorentzVector dir4M=tot4M-G4LorentzVector(0.,0.,0.,(tot4M.e()-tM-pM)*.01);
-  if(!G4QHadron(tot4M).RelDecayIn2(scat4M, reco4M, dir4M, cost, cost))
-  {
-    G4cerr<<"G4QElastic::PSD:t4M="<<tot4M<<",pM="<<pM<<",tM="<<tM<<",cost="<<cost<<G4endl;
-    //G4Exception("G4QElastic::PostStepDoIt:","009",FatalException,"Decay of ElasticComp");
-  }
-#ifdef debug
-  G4cout<<"G4QElastic::PoStDoIt:s4M="<<scat4M<<"+r4M="<<reco4M<<"="<<scat4M+reco4M<<G4endl;
-  G4cout<<"G4QElastic::PoStDoIt: scatE="<<scat4M.e()-pM<<", recoE="<<reco4M.e()-tM<<",d4M="
-        <<tot4M-scat4M-reco4M<<G4endl;
-#endif
-  // Update G4VParticleChange for the scattered projectile
-  G4double finE=scat4M.e()-pM;             // Final kinetic energy of the scattered proton
-  if(finE>0.0) aParticleChange.ProposeEnergy(finE);
-  else
-  {
-    if(finE<-1.e-8 || !(finE>-1.||finE<1.)) // NAN or negative
-      G4cerr<<"*Warning*G4QElastic::PostStDoIt: Zero or negative scattered E="<<finE
-            <<", s4M="<<scat4M<<", r4M="<<reco4M<<", d4M="<<tot4M-scat4M-reco4M<<G4endl;
-    //G4Exception("G4QElastic::PostStDoIt()","009", FatalException," <0 or nan energy");
-    aParticleChange.ProposeEnergy(0.) ;
-    aParticleChange.ProposeTrackStatus(fStopButAlive);
-  }
-  G4ThreeVector findir=scat4M.vect()/scat4M.rho();  // Unit vector in new direction
-  aParticleChange.ProposeMomentumDirection(findir); // new direction for the scattered part
-  EnMomConservation-=scat4M;                        // It must be initialized by (pE+tM,pP)
-  // This is how in general the secondary should be identified
-  G4DynamicParticle* theSec = new G4DynamicParticle; // A secondary for the recoil hadron 
-  //G4int targPDG=2212;                      // PDG for the recoil proton @@only for p targ
-  //G4ParticleDefinition* theDefinition=G4Proton::Proton(); // @@ only for p target
-  G4int aA = Z+N;
-#ifdef pdebug
-  G4cout<<"G4QElastic::PostStepDoIt: Ion Z="<<Z<<", A="<<aA<<G4endl;
-#endif
-  G4ParticleDefinition* theDefinition=G4ParticleTable::GetParticleTable()
-                                                                       ->FindIon(Z,aA,0,Z);
-  if(!theDefinition)G4cout<<"*Warning*G4QElastic::PostStepDoIt:drop PDG="<<targPDG<<G4endl;
-#ifdef pdebug
-  G4cout<<"G4QElastic::PostStepDoIt:RecoilName="<<theDefinition->GetParticleName()<<G4endl;
-#endif
-  theSec->SetDefinition(theDefinition);
-
-  EnMomConservation-=reco4M;
-#ifdef tdebug
-  G4cout<<"G4QElastic::PostSDoIt:"<<targPDG<<reco4M<<reco4M.m()<<EnMomConservation<<G4endl;
-#endif
-  theSec->Set4Momentum(reco4M);
-#ifdef debug
-  G4ThreeVector curD=theSec->GetMomentumDirection();
-  G4double curM=theSec->GetMass();
-  G4double curE=theSec->GetKineticEnergy()+curM;
-  G4cout<<"G4QElastic::PSDoIt:p="<<curD<<curD.mag()<<",e="<<curE<<",m="<<curM<<G4endl;
-#endif
-  // Make a recoil nucleus
-  G4Track* aNewTrack = new G4Track(theSec, localtime, position );
-  aNewTrack->SetWeight(weight);                                   //    weighted
-  aNewTrack->SetTouchableHandle(trTouchable);
-  aParticleChange.AddSecondary( aNewTrack );
-#ifdef debug
-    G4cout<<"G4QElastic::PostStepDoIt: **** PostStepDoIt is done ****"<<G4endl;
-#endif
-  return G4VDiscreteProcess::PostStepDoIt(track, step);
-}
-
-// @@ For future improvement @@
-G4double G4QElastic::CalculateXSt(G4bool oxs, G4bool xst, G4double p, G4int Z, G4int N,
-                                  G4int pPDG) 
-{
-  static G4bool init=false;
-  static G4bool first=true;
-  static G4VQCrossSection* CSmanager;
-  if(first)                              // Connection with a singletone
-  {
-    CSmanager=G4QElasticCrossSection::GetPointer();
-    first=false;
-  }
-  G4double res=0.;
-  if(oxs && xst)                         // Only the Cross-Section can be returened
-  {
-    res=CSmanager->GetCrossSection(true, p, Z, N, pPDG); // XS for isotope
-  }
-  else if(!oxs && xst)                   // Calculate Cross-Section & prepare differential
-  {
-    res=CSmanager->GetCrossSection(false, p, Z, N, pPDG);// XS for isotope + init t-distr.
-    // The XS for the nucleus must be calculated the last
-    init=true;
-  }
-  else if(init)                          // Return t-value for scattering (=G4QElastic)
-  {
-    if(oxs) res=CSmanager->GetHMaxT();   // Calculate the max_t value
-    else res=CSmanager->GetExchangeT(Z, N, pPDG); // functionally randomized -t in MeV^2
-  }
-  else G4cout<<"*Warning*G4QElastic::CalculateXSt:*NotInitiatedScattering"<<G4endl;
-  return res;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElasticCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElasticCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,1360 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QElasticCrossSection.cc,v 1.37 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QElasticCrossSection for N+A elastic cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 15-Oct-06
-// 
-//================================================================================
-// Short description: Interaction cross-sections for the G4QElastic process
-// -------------------------------------------------------------------------------
-
-//#define debug
-//#define isodebug
-//#define pdebug
-//#define ppdebug
-//#define tdebug
-//#define sdebug
-
-#include "G4QElasticCrossSection.hh"
-
-// Initialization of the static parameters
-const G4int G4QElasticCrossSection::nPoints=128;//#of points in the AMDB tables(>anyPar)(D)
-const G4int G4QElasticCrossSection::nLast=nPoints-1; // the Last element in the table   (D)
-G4double  G4QElasticCrossSection::lPMin=-8.;  // Min tabulated logarithmic Momentum     (D)
-G4double  G4QElasticCrossSection::lPMax= 8.;  // Max tabulated logarithmic Momentum     (D)
-G4double  G4QElasticCrossSection::dlnP=(lPMax-lPMin)/nLast;// Log step in the table     (D)
-G4bool    G4QElasticCrossSection::onlyCS=true;// Flag to calculate only CS (not Si/Bi)  (L)
-G4double  G4QElasticCrossSection::lastSIG=0.; // Last calculated cross section          (L)
-G4double  G4QElasticCrossSection::lastLP=-10.;// Last log(mom_of_the_incident_hadron)   (L)
-G4double  G4QElasticCrossSection::lastTM=0.;  // Last t_maximum                         (L)
-G4double  G4QElasticCrossSection::theSS=0.;   // The Last sq.slope of first difruction  (L)
-G4double  G4QElasticCrossSection::theS1=0.;   // The Last mantissa of first difruction  (L)
-G4double  G4QElasticCrossSection::theB1=0.;   // The Last slope of first difruction     (L)
-G4double  G4QElasticCrossSection::theS2=0.;   // The Last mantissa of second difruction (L)
-G4double  G4QElasticCrossSection::theB2=0.;   // The Last slope of second difruction    (L)
-G4double  G4QElasticCrossSection::theS3=0.;   // The Last mantissa of third difruction  (L)
-G4double  G4QElasticCrossSection::theB3=0.;   // The Last slope of third difruction     (L)
-G4double  G4QElasticCrossSection::theS4=0.;   // The Last mantissa of 4-th difruction   (L)
-G4double  G4QElasticCrossSection::theB4=0.;   // The Last slope of 4-th difruction      (L)
-G4int     G4QElasticCrossSection::lastTZ=0;   // Last atomic number of the target    
-G4int     G4QElasticCrossSection::lastTN=0;   // Last number of neutrons of the target
-G4double  G4QElasticCrossSection::lastPIN=0.; // Last initialized max momentum
-G4double* G4QElasticCrossSection::lastCST=0;  // Elastic cross-section table               
-G4double* G4QElasticCrossSection::lastPAR=0;  // Parameters for functional calculation     
-G4double* G4QElasticCrossSection::lastSST=0;  // E-dep of sq.slope of the first difruction 
-G4double* G4QElasticCrossSection::lastS1T=0;  // E-dep of mantissa of the first difruction 
-G4double* G4QElasticCrossSection::lastB1T=0;  // E-dep of the slope of the first difruction
-G4double* G4QElasticCrossSection::lastS2T=0;  // E-dep of mantissa of the second difruction
-G4double* G4QElasticCrossSection::lastB2T=0;  // E-dep of the slope of theSecond difruction
-G4double* G4QElasticCrossSection::lastS3T=0;  // E-dep of mantissa of the third difruction 
-G4double* G4QElasticCrossSection::lastB3T=0;  // E-dep of the slope of the third difruction
-G4double* G4QElasticCrossSection::lastS4T=0;  // E-dep of mantissa of the 4-th difruction 
-G4double* G4QElasticCrossSection::lastB4T=0;  // E-dep of the slope of the 4-th difruction
-G4int     G4QElasticCrossSection::lastPDG=0;  // The last PDG code of the projectile
-G4int     G4QElasticCrossSection::lastN=0;    // The last N of calculated nucleus
-G4int     G4QElasticCrossSection::lastZ=0;    // The last Z of calculated nucleus
-G4double  G4QElasticCrossSection::lastP=0.;   // Last used in cross section Momentum
-G4double  G4QElasticCrossSection::lastTH=0.;  // Last threshold momentum
-G4double  G4QElasticCrossSection::lastCS=0.;  // Last value of the Cross Section
-G4int     G4QElasticCrossSection::lastI=0;    // The last position in the DAMDB
-
-std::vector<G4double*> G4QElasticCrossSection::PAR; // Vector of parameters for functCalcul
-std::vector<G4double*> G4QElasticCrossSection::CST; // Vector of cross-section table
-std::vector<G4double*> G4QElasticCrossSection::SST; // Vector of the first squared slope
-std::vector<G4double*> G4QElasticCrossSection::S1T; // Vector of the first mantissa
-std::vector<G4double*> G4QElasticCrossSection::B1T; // Vector of the first slope
-std::vector<G4double*> G4QElasticCrossSection::S2T; // Vector of the secon mantissa
-std::vector<G4double*> G4QElasticCrossSection::B2T; // Vector of the second slope
-std::vector<G4double*> G4QElasticCrossSection::S3T; // Vector of the third mantissa
-std::vector<G4double*> G4QElasticCrossSection::B3T; // Vector of the third slope
-std::vector<G4double*> G4QElasticCrossSection::S4T; // Vector of the 4-th mantissa (gloria)
-std::vector<G4double*> G4QElasticCrossSection::B4T; // Vector of the 4-th slope    (gloria)
-
-G4QElasticCrossSection::G4QElasticCrossSection()
-{
-}
-
-G4QElasticCrossSection::~G4QElasticCrossSection()
-{
-  std::vector<G4double*>::iterator pos;
-  for (pos=CST.begin(); pos<CST.end(); pos++)
-  { delete [] *pos; }
-  CST.clear();
-  for (pos=PAR.begin(); pos<PAR.end(); pos++)
-  { delete [] *pos; }
-  PAR.clear();
-  for (pos=SST.begin(); pos<SST.end(); pos++)
-  { delete [] *pos; }
-  SST.clear();
-  for (pos=S1T.begin(); pos<S1T.end(); pos++)
-  { delete [] *pos; }
-  S1T.clear();
-  for (pos=B1T.begin(); pos<B1T.end(); pos++)
-  { delete [] *pos; }
-  B1T.clear();
-  for (pos=S2T.begin(); pos<S2T.end(); pos++)
-  { delete [] *pos; }
-  S2T.clear();
-  for (pos=B2T.begin(); pos<B2T.end(); pos++)
-  { delete [] *pos; }
-  B2T.clear();
-  for (pos=S3T.begin(); pos<S3T.end(); pos++)
-  { delete [] *pos; }
-  S3T.clear();
-  for (pos=B3T.begin(); pos<B3T.end(); pos++)
-  { delete [] *pos; }
-  B3T.clear();
-  for (pos=S4T.begin(); pos<S4T.end(); pos++)
-  { delete [] *pos; }
-  S4T.clear();
-  for (pos=B4T.begin(); pos<B4T.end(); pos++)
-  { delete [] *pos; }
-  B4T.clear();
-}
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QElasticCrossSection::GetPointer()
-{
-  static G4QElasticCrossSection theCrossSection; //**Static body of the QEl Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QElasticCrossSection::GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ,
-                                                 G4int tgN, G4int pPDG)
-{
-  static std::vector <G4int>    colPDG;// Vector of the projectile PDG code
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-  if(tgZ==0 && tgN==1)                 // Temporary change for Quasi-Elastic
-  {
-    tgZ=1;
-    tgN=1;
-    if     (pPDG==2212) pPDG=2112;
-    else if(pPDG==2112) pPDG=2212;
-  }
-  G4double pEn=pMom;
-  onlyCS=fCS;
-#ifdef pdebug
-  G4cout<<"G4QElCS::GetCS:>>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG="<<pPDG<<"("<<lastPDG<<"), T="<<pEn<<"("<<lastTH<<")"<<",Sz="
-        <<colN.size()<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  if(!pPDG)
-  {
-#ifdef pdebug
-    G4cout<<"G4QElCS::GetCS: *** Found pPDG="<<pPDG<<" ====> CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // projectile PDG=0 is a mistake (?!) @@
-  }
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-//GF the block will update parameters, needed for quasi-eleastic
-//GF if(tgN!=lastN || tgZ!=lastZ || pPDG!=lastPDG)// The nucleus isn't the LastUsedIsotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastPDG = pPDG;                    // The last PDG of the projectile
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    if(lastI) for(G4int i=0; i<lastI; i++) // Loop over proj/tgZ/tgN lines of DB
-    {                                  // The nucleus with projPDG is found in AMDB
-      if(colPDG[i]==pPDG && colN[i]==tgN && colZ[i]==tgZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QElCS::GetCS:*Found* P="<<pMom<<",Threshold="<<lastTH<<",i="<<i<<G4endl;
-        //CalculateCrossSection(fCS,-27,i,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(pEn<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QElCS::GetCS:Found T="<<pEn<<" < Threshold="<<lastTH<<",CS=0"<<G4endl;
-          //CalculateCrossSection(fCS,-27,i,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastCS =colCS[i];                // Last CrossSect (A-dependent)
-        //  if(std::fabs(lastP/pMom-1.)<tolerance) //VI (do not use tolerance)
-        if(lastP == pMom)   // V.Ivanchenko safe solution
-        {
-#ifdef pdebug
-          G4cout<<"G4QElCS::GetCS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-#endif
-          CalculateCrossSection(fCS,-1,i,lastPDG,lastZ,lastN,pMom); // Update param's only
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QElCS::G:UpdateDB P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",i="<<i<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,i,lastPDG,lastZ,lastN,pMom); // read & update
-#ifdef pdebug
-        G4cout<<"G4QElCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<G4endl;
-        //CalculateCrossSection(fCS,-27,i,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(lastCS<=0. && pEn>lastTH)    // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QElCS::GetCS: New T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-        break;                           // Go out of the LOOP with found lastI
-      }
-#ifdef pdebug
-      G4cout<<"---G4QElCrossSec::GetCrosSec:pPDG="<<pPDG<<",i="<<i<<",N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<",cPDG="<<colPDG[i]<<G4endl;
-      //CalculateCrossSection(fCS,-27,i,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QElCS::GetCrosSec:CalcNew P="<<pMom<<",f="<<fCS<<",lastI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,lastI,lastPDG,lastZ,lastN,pMom);//calculate&create
-      if(lastCS<=0.)
-      {
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QElCrossSection::GetCrossSect: NewThresh="<<lastTH<<",T="<<pEn<<G4endl;
-#endif
-        if(pEn>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QElCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QElCS::GetCrosSec: New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-      //CalculateCrossSection(fCS,-27,lastI,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      colN.push_back(tgN);
-      colZ.push_back(tgZ);
-      colPDG.push_back(pPDG);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colCS.push_back(lastCS);
-#ifdef pdebug
-      G4cout<<"G4QElCS::GetCS:1st,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-      //CalculateCrossSection(fCS,-27,lastI,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QElCS::GetCS: Update lastI="<<lastI<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colPDG[lastI]=pPDG;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-
-//GF
-// else if(pEn<=lastTH)
-// {
-//#ifdef pdebug
-//  G4cout<<"G4QElCS::GetCS: Current T="<<pEn<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-//  //CalculateCrossSection(fCS,-27,lastI,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-//#endif
-//  return 0.;                         // Momentum is below the Threshold Value -> CS=0
-// }
-// //  else if(std::fabs(lastP/pMom-1.)<tolerance)
-// else if(lastP == pMom) // V.Ivanchenko safe solution
-// {
-//#ifdef pdebug
-//  G4cout<<"G4QElCS::GetCS:OldCur P="<<pMom<<"="<<pMom<<", CS="<<lastCS*millibarn<<G4endl;
-//  //CalculateCrossSection(fCS,-27,lastI,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-//  G4cout<<"G4QElCS::GetCrSec:***SAME***, onlyCS="<<onlyCS<<G4endl;
-//#endif
-//  return lastCS*millibarn;     // Use theLastCS
-// }
-// else
-// {
-//#ifdef pdebug
-//  G4cout<<"G4QElCS::GetCS:UpdatCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-//#endif
-//  lastCS=CalculateCrossSection(fCS,1,lastI,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-//  lastP=pMom;
-// }
-//GF
-
-#ifdef pdebug
-  G4cout<<"G4QElCS::GetCrSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-  //CalculateCrossSection(fCS,-27,lastI,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-  G4cout<<"G4QElCS::GetCrSec:***End***, onlyCS="<<onlyCS<<G4endl;
-#endif
-  return lastCS*millibarn;
-}
-
-// Calculation of total elastic cross section (p in IU, CS in mb) @@ Units (?)
-// F=0 - create AMDB, F=-1 - read&update AMDB, F=1 - update AMDB (sinchro with higher AMDB)
-G4double G4QElasticCrossSection::CalculateCrossSection(G4bool CS,G4int F,G4int I,G4int PDG,
-                                                       G4int tgZ, G4int tgN, G4double pIU)
-{
-  // *** Begin of Associative Memory DB for acceleration of the cross section calculations
-  static std::vector <G4double>  PIN;   // Vector of max initialized log(P) in the table
-  // *** End of Static Definitions (Associative Memory Data Base) ***
-  if(tgZ==0 && tgN==1)                 // Temporary change for Quasi-Elastic
-  {
-    tgZ=1;
-    tgN=1;
-    if     (PDG==2212) PDG=2112;
-    else if(PDG==2112) PDG=2212;
-  }
-  G4double pMom=pIU/GeV;                // All calculations are in GeV
-  onlyCS=CS;                            // Flag to calculate only CS (not Si/Bi)
-#ifdef pdebug
-  G4cout<<"G4QElasticCrossSection::CalcCS:->onlyCS="<<onlyCS<<",F="<<F<<",p="<<pIU<<G4endl;
-#endif
-  lastLP=std::log(pMom);                // Make a logarithm of the momentum for calculation
-  if(F)                                 // This isotope was found in AMDB =>RETRIEVE/UPDATE
-  {
-    if(F<0)                             // the AMDB must be loded
-    {
-      lastPIN = PIN[I];                 // Max log(P) initialised for this table set
-      lastPAR = PAR[I];                 // Pointer to the parameter set
-      lastCST = CST[I];                 // Pointer to the total sross-section table
-      lastSST = SST[I];                 // Pointer to the first squared slope
-      lastS1T = S1T[I];                 // Pointer to the first mantissa
-      lastB1T = B1T[I];                 // Pointer to the first slope
-      lastS2T = S2T[I];                 // Pointer to the second mantissa
-      lastB2T = B2T[I];                 // Pointer to the second slope
-      lastS3T = S3T[I];                 // Pointer to the third mantissa
-      lastB3T = B3T[I];                 // Pointer to the rhird slope
-      lastS4T = S4T[I];                 // Pointer to the 4-th mantissa
-      lastB4T = B4T[I];                 // Pointer to the 4-th slope
-#ifdef pdebug
-      G4cout<<"G4QElasticCS::CalcCS: DB is updated for I="<<I<<",*,PIN4="<<PIN[4]<<G4endl;
-#endif
-    }
-#ifdef pdebug
-    G4cout<<"G4QElasticCrossSection::CalcCS:*read*, LP="<<lastLP<<",PIN="<<lastPIN<<G4endl;
-#endif
-    if(lastLP>lastPIN && lastLP<lPMax)
-    {
-      lastPIN=GetPTables(lastLP,lastPIN,PDG,tgZ,tgN);// Can update upper logP-Limit in tabs
-#ifdef pdebug
-      G4cout<<"G4QElCS::CalcCS:*updated(I)*,LP="<<lastLP<<"<IN["<<I<<"]="<<lastPIN<<G4endl;
-#endif
-      PIN[I]=lastPIN;                   // Remember the new P-Limit of the tables
-    }
-  }
-  else                                  // This isotope wasn't initialized => CREATE
-  {
-    lastPAR = new G4double[nPoints];    // Allocate memory for parameters of CS function
-    lastPAR[nLast]=0;                   // Initialization for VALGRIND
-    lastCST = new G4double[nPoints];    // Allocate memory for Tabulated CS function    
-    lastSST = new G4double[nPoints];    // Allocate memory for Tabulated first sqaredSlope 
-    lastS1T = new G4double[nPoints];    // Allocate memory for Tabulated first mantissa 
-    lastB1T = new G4double[nPoints];    // Allocate memory for Tabulated first slope    
-    lastS2T = new G4double[nPoints];    // Allocate memory for Tabulated second mantissa
-    lastB2T = new G4double[nPoints];    // Allocate memory for Tabulated second slope   
-    lastS3T = new G4double[nPoints];    // Allocate memory for Tabulated third mantissa 
-    lastB3T = new G4double[nPoints];    // Allocate memory for Tabulated third slope    
-    lastS4T = new G4double[nPoints];    // Allocate memory for Tabulated 4-th mantissa 
-    lastB4T = new G4double[nPoints];    // Allocate memory for Tabulated 4-th slope    
-#ifdef pdebug
-    G4cout<<"G4QElasticCrossSection::CalcCS:*ini*,lastLP="<<lastLP<<",min="<<lPMin<<G4endl;
-#endif
-    lastPIN = GetPTables(lastLP,lPMin,PDG,tgZ,tgN); // Returns the new P-limit for tables
-#ifdef pdebug
-    G4cout<<"G4QElCS::CalcCS:*i*Z="<<tgZ<<",N="<<tgN<<",PDG="<<PDG<<",LP"<<lastPIN<<G4endl;
-#endif
-    PIN.push_back(lastPIN);             // Fill parameters of CS function to AMDB
-    PAR.push_back(lastPAR);             // Fill parameters of CS function to AMDB
-    CST.push_back(lastCST);             // Fill Tabulated CS function to AMDB    
-    SST.push_back(lastSST);             // Fill Tabulated first sq.slope to AMDB 
-    S1T.push_back(lastS1T);             // Fill Tabulated first mantissa to AMDB 
-    B1T.push_back(lastB1T);             // Fill Tabulated first slope to AMDB    
-    S2T.push_back(lastS2T);             // Fill Tabulated second mantissa to AMDB 
-    B2T.push_back(lastB2T);             // Fill Tabulated second slope to AMDB    
-    S3T.push_back(lastS3T);             // Fill Tabulated third mantissa to AMDB 
-    B3T.push_back(lastB3T);             // Fill Tabulated third slope to AMDB    
-    S4T.push_back(lastS4T);             // Fill Tabulated 4-th mantissa to AMDB 
-    B4T.push_back(lastB4T);             // Fill Tabulated 4-th slope to AMDB    
-  } // End of creation/update of the new set of parameters and tables
-  // ============= NOW Update (if necessary) and Calculate the Cross Section ===========
-#ifdef pdebug
-  G4cout<<"G4QElCS::CalcCS:?update?,LP="<<lastLP<<",IN="<<lastPIN<<",ML="<<lPMax<<G4endl;
-#endif
-  if(lastLP>lastPIN && lastLP<lPMax)
-  {
-    lastPIN = GetPTables(lastLP,lastPIN,PDG,tgZ,tgN);
-#ifdef pdebug
-    G4cout<<"G4QElCS::CalcCS: *updated(O)*, LP="<<lastLP<<" < IN="<<lastPIN<<G4endl;
-#endif
-  }
-#ifdef pdebug
-  G4cout<<"G4QElastCS::CalcCS: lastLP="<<lastLP<<",lPM="<<lPMin<<",lPIN="<<lastPIN<<G4endl;
-#endif
-  if(!onlyCS) lastTM=GetQ2max(PDG, tgZ, tgN, pMom); // Calculate (-t)_max=Q2_max (GeV2)
-#ifdef pdebug
-  G4cout<<"G4QElasticCrosSec::CalcCS:oCS="<<onlyCS<<",-t="<<lastTM<<", p="<<lastLP<<G4endl;
-#endif
-  if(lastLP>lPMin && lastLP<=lastPIN)   // Linear fit is made using precalculated tables
-  {
-    if(lastLP==lastPIN) // VI do not use tolerance
-      //    if(std::fabs(lastLP-lastPIN)<.0001) // Just take the highest tabulated value
-    {
-      G4double shift=(lastLP-lPMin)/dlnP+.000001; // Log distance from lPMin
-      G4int    blast=static_cast<int>(shift); // this is a bin number of the lower edge (0)
-      if(blast<0 || blast>=nLast) G4cout<<"G4QEleastCS::CCS:b="<<blast<<","<<nLast<<G4endl;
-      lastSIG = lastCST[blast];
-      if(!onlyCS)                       // Skip the differential cross-section parameters
-      {
-        theSS  = lastSST[blast];
-        theS1  = lastS1T[blast];
-        theB1  = lastB1T[blast];
-        theS2  = lastS2T[blast];
-        theB2  = lastB2T[blast];
-        theS3  = lastS3T[blast];
-        theB3  = lastB3T[blast];
-        theS4  = lastS4T[blast];
-        theB4  = lastB4T[blast];
-      }
-#ifdef pdebug
-      G4cout<<"G4QElasticCrossSection::CalculateCS:(E) S1="<<theS1<<", B1="<<theB1<<G4endl;
-#endif
-    }
-    else
-    {
-      G4double shift=(lastLP-lPMin)/dlnP;        // a shift from the beginning of the table
-      G4int    blast=static_cast<int>(shift);    // the lower bin number
-      if(blast<0)   blast=0;
-      if(blast>=nLast) blast=nLast-1;            // low edge of the last bin
-      shift-=blast;                              // step inside the unit bin
-      G4int lastL=blast+1;                       // the upper bin number
-      G4double SIGL=lastCST[blast];              // the basic value of the cross-section
-      lastSIG= SIGL+shift*(lastCST[lastL]-SIGL); // calculated total elastic cross-section
-#ifdef pdebug
-      G4cout<<"G4QElCS::CalcCrossSection: Sig="<<lastSIG<<", P="<<pMom<<", Z="<<tgZ<<", N="
-            <<tgN<<", PDG="<<PDG<<", onlyCS="<<onlyCS<<G4endl;
-#endif
-      if(!onlyCS)                       // Skip the differential cross-section parameters
-      {
-        G4double SSTL=lastSST[blast];           // the low bin of the first squared slope
-        theSS=SSTL+shift*(lastSST[lastL]-SSTL); // the basic value of the first sq.slope
-        G4double S1TL=lastS1T[blast];           // the low bin of the first mantissa
-        theS1=S1TL+shift*(lastS1T[lastL]-S1TL); // the basic value of the first mantissa
-        G4double B1TL=lastB1T[blast];           // the low bin of the first slope
-#ifdef pdebug
-        G4cout<<"G4QElCS::CalcCrossSection:bl="<<blast<<",ls="<<lastL<<",SL="<<S1TL<<",SU="
-              <<lastS1T[lastL]<<",BL="<<B1TL<<",BU="<<lastB1T[lastL]<<G4endl;
-#endif
-        theB1=B1TL+shift*(lastB1T[lastL]-B1TL); // the basic value of the first slope
-        G4double S2TL=lastS2T[blast];           // the low bin of the second mantissa
-        theS2=S2TL+shift*(lastS2T[lastL]-S2TL); // the basic value of the second mantissa
-        G4double B2TL=lastB2T[blast];           // the low bin of the second slope
-        theB2=B2TL+shift*(lastB2T[lastL]-B2TL); // the basic value of the second slope
-        G4double S3TL=lastS3T[blast];           // the low bin of the third mantissa
-        theS3=S3TL+shift*(lastS3T[lastL]-S3TL); // the basic value of the third mantissa
-#ifdef pdebug
-        G4cout<<"G4QElCS::CCS: s3l="<<S3TL<<",sh3="<<shift<<",s3h="<<lastS3T[lastL]<<",b="
-              <<blast<<",l="<<lastL<<G4endl;
-#endif
-        G4double B3TL=lastB3T[blast];           // the low bin of the third slope
-        theB3=B3TL+shift*(lastB3T[lastL]-B3TL); // the basic value of the third slope
-        G4double S4TL=lastS4T[blast];           // the low bin of the 4-th mantissa
-        theS4=S4TL+shift*(lastS4T[lastL]-S4TL); // the basic value of the 4-th mantissa
-#ifdef pdebug
-        G4cout<<"G4QElCS::CCS: s4l="<<S4TL<<",sh4="<<shift<<",s4h="<<lastS4T[lastL]<<",b="
-              <<blast<<",l="<<lastL<<G4endl;
-#endif
-        G4double B4TL=lastB4T[blast];           // the low bin of the 4-th slope
-        theB4=B4TL+shift*(lastB4T[lastL]-B4TL); // the basic value of the 4-th slope
-      }
-#ifdef pdebug
-      G4cout<<"G4QElasticCrossSection::CalculateCS:(I) S1="<<theS1<<", B1="<<theB1<<G4endl;
-#endif
-    }
-  }
-  else lastSIG=GetTabValues(lastLP, PDG, tgZ, tgN); // Direct calculation beyond the table
-  if(lastSIG<0.) lastSIG = 0.;                   // @@ a Warning print can be added
-#ifdef pdebug
-  G4cout<<"G4QElasticCrossSection::CalculateCS: END, onlyCS="<<onlyCS<<G4endl;
-#endif
-  return lastSIG;
-}
-
-// It has parameter sets for all tZ/tN/PDG, using them the tables can be created/updated
-G4double G4QElasticCrossSection::GetPTables(G4double LP,G4double ILP, G4int PDG, G4int tgZ,
-                                                                                 G4int tgN)
-{
-  // @@ At present all nA==pA ---------> Each neucleus can have not more than 51 parameters
-  static const G4double pwd=2727;
-  const G4int n_npel=24;                // #of parameters for np-elastic (<nPoints=128)
-  const G4int n_ppel=32;                // #of parameters for pp-elastic (<nPoints=128)
-  //                      -0- -1-  -2- -3- -4-  -5- -6- -7- -8- -9--10--11--12--13- -14-
-  G4double np_el[n_npel]={12.,.05,.0001,5.,.35,6.75,.14,19.,.6,6.75,.14,13.,.14,.6,.00013,
-                          75.,.001,7.2,4.32,.012,2.5,0.0,12.,.34};
-  //                      -15--16--17- -18- -19--20--21--22--23-
-  //                       -0-   -1-  -2- -3- -4- -5-  -6-  -7-  -8--9--10--11--12--13-
-  G4double pp_el[n_ppel]={2.865,18.9,.6461,3.,9.,.425,.4276,.0022,5.,74.,3.,3.4,.2,.17,
-                          .001,8.,.055,3.64,5.e-5,4000.,1500.,.46,1.2e6,3.5e6,5.e-5,1.e10,
-                          8.5e8,1.e10,1.1,3.4e6,6.8e6,0.};
-  //                      -14--15- -16- -17- -18-  -19- -20- -21- -22-  -23-   -24-  -25-
-  //                       -26- -27-  -28- -29- -30- -31-
-  //                      -0- -1--2- -3-  -4-  -5-  -6-    -7-  -8- -9- -10--11--12--13-
-  if(tgZ==0 && tgN==1)                 // Temporary change for Quasi-Elastic
-  {
-    tgZ=1;
-    tgN=1;
-    if     (PDG==2212) PDG=2112;
-    else if(PDG==2112) PDG=2212;
-  }
-  if(PDG==2212 || PDG==2112)
-  {
-    // --- Total np elastic cross section cs & s1/b1 (t), s2/b2 (u) --- NotTuned for highE
-    //p2=p*p;p3=p2*p;sp=sqrt(p);p2s=p2*sp;lp=log(p);dl1=lp-(5.=par(3));p4=p2*p2; p=|3-mom|
-    //CS=12./(p2s+.05*p+.0001/sqrt(sp))+.35/p+(6.75+.14*dl1*dl1+19./p)/(1.+.6/p4);
-    //  par(0)   par(1) par(2)        par(4) par(5) par(6)     par(7)     par(8)
-    //s1=(6.75+.14*dl2*dl2+13./p)/(1.+.14/p4)+.6/(p4+.00013), s2=(75.+.001/p4/p)/p3
-    //  par(9) par(10)   par(11)     par(12) par(13) par(14)  par(15) par(16)
-    //b1=(7.2+4.32/(p4*p4+.012*p3))/(1.+2.5/p4), ss=0., b2=12./(p*sp+.34)
-    //par(17) par(18)    par(19)       par(20)  par(21)   par(22)   par(23)
-    //
-    // -- Total pp elastic cross section cs & s1/b1 (main), s2/b2 (tail1), s3/b3 (tail2) --
-    //p2=p*p;p3=p2*p;sp=sqrt(p);p2s=p2*sp;lp=log(p);dl1=lp-(3.=par(3));p4=p2*p2; p=|3-mom|
-    //CS=2.865/p2s/(1+.0022/p2s)+(18.9+.6461*dl1*dl1+9./p)/(1.+.425*lp)/(1.+.4276/p4);
-    //   par(0)       par(7)     par(1) par(2)      par(4)      par(5)         par(6)
-    //dl2=lp-5., s1=(74.+3.*dl2*dl2)/(1+3.4/p4/p)+(.2/p2+17.*p)/(p4+.001*sp),
-    //     par(8) par(9) par(10)        par(11)   par(12)par(13)    par(14)
-    // b1=8.*p**.055/(1.+3.64/p3); s2=5.e-5+4000./(p4+1500.*p); b2=.46+1.2e6/(p4+3.5e6/sp);
-    // par(15) par(16)  par(17)     par(18) par(19)  par(20)   par(21) par(22)  par(23)
-    // s3=5.e-5+1.e10/(p4*p4+8.5e8*p2+1.e10); b3=1.1+3.4e6/(p4+6.8e6); ss=0.
-    //  par(24) par(25)     par(26)  par(27) par(28) par(29)  par(30)   par(31)
-    //
-    if(lastPAR[nLast]!=pwd) // A unique flag to avoid the repeatable definition
-    {
-      if ( (PDG == 2112 && tgZ == 1 && tgN == 0) || 
-           (PDG == 2212 && tgZ == 0 && tgN == 1) ) {
-        for (G4int ip=0; ip<n_npel; ip++) lastPAR[ip]=np_el[ip]; //np/pn
-
-      } else if ( (PDG == 2212 && tgZ == 1 && tgN == 0) || 
-                  (PDG == 2112 && tgZ == 0 && tgN == 1) ) {
-        for (G4int ip=0; ip<n_ppel; ip++) lastPAR[ip]=pp_el[ip]; //pp/nn
-
-      } else {
-        G4double a=tgZ+tgN;
-        G4double sa=std::sqrt(a);
-        G4double ssa=std::sqrt(sa);
-        G4double asa=a*sa;
-        G4double a2=a*a;
-        G4double a3=a2*a;
-        G4double a4=a3*a;
-        G4double a5=a4*a;
-        G4double a6=a4*a2;
-        G4double a7=a6*a;
-        G4double a8=a7*a;
-        G4double a9=a8*a;
-        G4double a10=a5*a5;
-        G4double a12=a6*a6;
-        G4double a14=a7*a7;
-        G4double a16=a8*a8;
-        G4double a17=a16*a;
-        G4double a32=a16*a16;
-        G4double r1a16=3.e16/a16;
-        G4double r2a16=2.e13/a16;
-        G4double r3a16=6.e13/a16;
-        G4double pa10=5.e-27*a10;
-        // Reaction cross-section parameters (pel=peh_fit.f)
-        lastPAR[0]=a/3.;                                                       // p1(p/n)
-        //lastPAR[0]=.28*a;                                                      // p1(p/n)
-        lastPAR[1]=4.5*a*ssa/(1.+6./a3)/(1.+1.e-2*a);                          // p2(p/n)
-        //lastPAR[1]=4.8*std::pow(a,1.14)/(1.+3.6/a3);                           // p2(p/n)
-        if(PDG==2112)                           // Neutron projectile
-        {
-          lastPAR[2]=3.3/a+.5*ssa/(1.+2.e7/a8);                                // p3 (old)
-          if(a<6.5)
-          {
-            lastPAR[3]=1./(1.+.00123*a4);                                      // p4
-            lastPAR[4]=1.5e-4/a2/(a+1.2e-6*a12)+1.5e-6;                        // p5
-            lastPAR[5]=.0062/(a+5.e-11*a16);                                   // p6
-            lastPAR[6]=3.2e-14/a6/(1.+4.e-10*a17);                             // p7
-            lastPAR[7]=.847/a4/(a+.0005*a8)+.00045;                            // p8
-            lastPAR[8]=.413/a16+7.e-7;                                         // p9
-          }
-          else
-          {
-            lastPAR[3]=a*(.5+1.e-10*a4)/(1.+7.e5/a6);                          // p4
-            lastPAR[4]=a*3.e-5/(1.+2.e12/a12);                                 // p5
-            lastPAR[5]=(.0006+1.e-14*a5)/(1.+4.e5/a3)/(1.+3.e23/a16/a8);       // p6
-            lastPAR[6]=1.e-22*a4/(1.+5.e16*(1.+5e31/a32)/a16);                 // p7
-            lastPAR[7]=(8.+.00016*a2)/(1.+1.4e14/a16);                         // p8
-            lastPAR[8]=.0013;                                                  // p9
-          }
-        }
-        else                                   // Proton projectile
-        {
-          lastPAR[2]=3.3/a+.8*ssa/(1.+2.e7/a8);                                // p3
-          //lastPAR[2]=3.3/a+.7*ssa/(1.+2.e7/a8);                                // p3(old)
-          lastPAR[3]=1./(1.+6.e-9*a12)+.6*a/(1.+1.6e15/a16);                   // p4
-          lastPAR[4]=6.e-4/(a4+3.e-6*a12)+.16/(a+9.e5/a3+r1a16*r1a16);         // p5
-          lastPAR[5]=3.e-4/a2+(1.5e-3+3.e-14*a7)/(1.+r2a16*r2a16+3.e-12*a6);   // p6
-          lastPAR[6]=4.e-30+(1.2e-28*a3+pa10*pa10)/(1.+r3a16*r3a16+4.e-26*a14);// p7
-          lastPAR[7]=.1/(1.+1.7e-8*a16)+1./(1.+1.7e18/a16+2.e-6*a4);         // p8
-          //lastPAR[7]=.07/(1.+1.7e-8*a16)+.5/(1.+1.7e18/a16+4.5e-7*a4);         // p8(old)
-          lastPAR[8]=(1.5e-10+2.e-18*a8)/(1.+3.e-25*a16);                      // p9
-        }
-        // @@ the differential cross-section is parameterized separately for A>6 & A<7
-        if(a<6.5)
-        {
-          G4double a28=a16*a12;
-          // The main pre-exponent      (pel_sg)
-          lastPAR[ 9]=4000*a;                                // p1
-          lastPAR[10]=1.2e7*a8+380*a17;                      // p2
-          lastPAR[11]=.7/(1.+4.e-12*a16);                    // p3
-          lastPAR[12]=2.5/a8/(a4+1.e-16*a32);                // p4
-          lastPAR[13]=.28*a;                                 // p5
-          lastPAR[14]=1.2*a2+2.3;                            // p6
-          lastPAR[15]=3.8/a;                                 // p7
-          // The main slope             (pel_sl)
-          lastPAR[16]=.01/(1.+.0024*a5);                     // p1
-          lastPAR[17]=.2*a;                                  // p2
-          lastPAR[18]=9.e-7/(1.+.035*a5);                    // p3
-          lastPAR[19]=(42.+2.7e-11*a16)/(1.+.14*a);          // p4
-          // The main quadratic         (pel_sh)
-          lastPAR[20]=2.25*a3;                               // p1
-          lastPAR[21]=18.;                                   // p2
-          lastPAR[22]=2.4e-3*a8/(1.+2.6e-4*a7);              // p3
-          lastPAR[23]=3.5e-36*a32*a8/(1.+5.e-15*a32/a);      // p4
-          // The 1st max pre-exponent   (pel_qq)
-          lastPAR[24]=1.e5/(a8+2.5e12/a16);                  // p1
-          //lastPAR[24]=8.e4/(a8+2.5e12/a16);                  // p1 (old)
-          lastPAR[25]=8.e7/(a12+1.e-27*a28*a28);             // p2 
-          lastPAR[26]=.0006*a3;                              // p3
-          //lastPAR[26]=.0011*a3;                              // p3 (old)
-          // The 1st max slope          (pel_qs)
-          lastPAR[27]=10.+4.e-8*a12*a;                       // p1
-          lastPAR[28]=.114;                                  // p2
-          lastPAR[29]=.003;                                  // p3
-          lastPAR[30]=2.e-23;                                // p4
-          // The effective pre-exponent (pel_ss)
-          lastPAR[31]=1./(1.+.0001*a8);                      // p1
-          lastPAR[32]=1.5e-4/(1.+5.e-6*a12);                 // p2
-          lastPAR[33]=.03;                                   // p3
-          // The effective slope        (pel_sb)
-          lastPAR[34]=a/2;                                   // p1
-          lastPAR[35]=2.e-7*a4;                              // p2
-          lastPAR[36]=4.;                                    // p3
-          lastPAR[37]=64./a3;                                // p4
-          // The gloria pre-exponent    (pel_us)
-          lastPAR[38]=1.e8*std::exp(.32*asa);                // p1
-          //lastPAR[38]=1.05e8*std::exp(.32*asa);              // p1 (old)
-          lastPAR[39]=20.*std::exp(.45*asa);                // p2
-          //lastPAR[39]=19.5*std::exp(.45*asa);                // p2 (old)
-          lastPAR[40]=7.e3+2.4e6/a5;                         // p3
-          lastPAR[41]=2.5e5*std::exp(.085*a3);               // p4
-          lastPAR[42]=2.5*a;                                 // p5
-          // The gloria slope           (pel_ub)
-          lastPAR[43]=920.+.03*a8*a3;                        // p1
-          lastPAR[44]=93.+.0023*a12;                         // p2
-#ifdef pdebug
-         G4cout<<"G4QElCS::CalcCS:la "<<lastPAR[38]<<", "<<lastPAR[39]<<", "<<lastPAR[40]
-               <<", "<<lastPAR[42]<<", "<<lastPAR[43]<<", "<<lastPAR[44]<<G4endl;
-#endif
-        }
-        else
-        {
-          G4double p1a10=2.2e-28*a10;
-          G4double r4a16=6.e14/a16;
-          G4double s4a16=r4a16*r4a16;
-          // a24
-          // a36
-          // The main pre-exponent      (peh_sg)
-          lastPAR[ 9]=4.5*std::pow(a,1.15);                  // p1
-          lastPAR[10]=.06*std::pow(a,.6);                    // p2
-          lastPAR[11]=.6*a/(1.+2.e15/a16);                   // p3
-          lastPAR[12]=.17/(a+9.e5/a3+1.5e33/a32);            // p4
-          lastPAR[13]=(.001+7.e-11*a5)/(1.+4.4e-11*a5);      // p5
-          lastPAR[14]=(p1a10*p1a10+2.e-29)/(1.+2.e-22*a12);  // p6
-          // The main slope             (peh_sl)
-          lastPAR[15]=400./a12+2.e-22*a9;                    // p1
-          lastPAR[16]=1.e-32*a12/(1.+5.e22/a14);             // p2
-          lastPAR[17]=1000./a2+9.5*sa*ssa;                   // p3
-          lastPAR[18]=4.e-6*a*asa+1.e11/a16;                 // p4
-          lastPAR[19]=(120./a+.002*a2)/(1.+2.e14/a16);       // p5
-          lastPAR[20]=9.+100./a;                             // p6
-          // The main quadratic         (peh_sh)
-          lastPAR[21]=.002*a3+3.e7/a6;                       // p1
-          lastPAR[22]=7.e-15*a4*asa;                         // p2
-          lastPAR[23]=9000./a4;                              // p3
-          // The 1st max pre-exponent   (peh_qq)
-          lastPAR[24]=.0011*asa/(1.+3.e34/a32/a4);           // p1
-          lastPAR[25]=1.e-5*a2+2.e14/a16;                    // p2
-          lastPAR[26]=1.2e-11*a2/(1.+1.5e19/a12);            // p3
-          lastPAR[27]=.016*asa/(1.+5.e16/a16);               // p4
-          // The 1st max slope          (peh_qs)
-          lastPAR[28]=.002*a4/(1.+7.e7/std::pow(a-6.83,14)); // p1
-          lastPAR[29]=2.e6/a6+7.2/std::pow(a,.11);           // p2
-          lastPAR[30]=11.*a3/(1.+7.e23/a16/a8);              // p3
-          lastPAR[31]=100./asa;                              // p4
-          // The 2nd max pre-exponent   (peh_ss)
-          lastPAR[32]=(.1+4.4e-5*a2)/(1.+5.e5/a4);           // p1
-          lastPAR[33]=3.5e-4*a2/(1.+1.e8/a8);                // p2
-          lastPAR[34]=1.3+3.e5/a4;                           // p3
-          lastPAR[35]=500./(a2+50.)+3;                       // p4
-          lastPAR[36]=1.e-9/a+s4a16*s4a16;                   // p5
-          // The 2nd max slope          (peh_sb)
-          lastPAR[37]=.4*asa+3.e-9*a6;                       // p1
-          lastPAR[38]=.0005*a5;                              // p2
-          lastPAR[39]=.002*a5;                               // p3
-          lastPAR[40]=10.;                                   // p4
-          // The effective pre-exponent (peh_us)
-          lastPAR[41]=.05+.005*a;                            // p1
-          lastPAR[42]=7.e-8/sa;                              // p2
-          lastPAR[43]=.8*sa;                                 // p3
-          lastPAR[44]=.02*sa;                                // p4
-          lastPAR[45]=1.e8/a3;                               // p5
-          lastPAR[46]=3.e32/(a32+1.e32);                     // p6
-          // The effective slope        (peh_ub)
-          lastPAR[47]=24.;                                   // p1
-          lastPAR[48]=20./sa;                                // p2
-          lastPAR[49]=7.e3*a/(sa+1.);                        // p3
-          lastPAR[50]=900.*sa/(1.+500./a3);                  // p4
-#ifdef pdebug
-         G4cout<<"G4QElCS::CalcCS:ha "<<lastPAR[41]<<", "<<lastPAR[42]<<", "<<lastPAR[43]
-               <<", "<<lastPAR[44]<<", "<<lastPAR[45]<<", "<<lastPAR[46]<<G4endl;
-#endif
-        }
-        // Parameter for lowEnergyNeutrons
-        lastPAR[51]=1.e15+2.e27/a4/(1.+2.e-18*a16);
-      }
-      lastPAR[nLast]=pwd;
-      // and initialize the zero element of the table
-      G4double lp=lPMin;                                      // ln(momentum)
-      G4bool memCS=onlyCS;                                    // ??
-      onlyCS=false;
-      lastCST[0]=GetTabValues(lp, PDG, tgZ, tgN); // Calculate AMDB tables
-      onlyCS=memCS;
-      lastSST[0]=theSS;
-      lastS1T[0]=theS1;
-      lastB1T[0]=theB1;
-      lastS2T[0]=theS2;
-      lastB2T[0]=theB2;
-      lastS3T[0]=theS3;
-      lastB3T[0]=theB3;
-      lastS4T[0]=theS4;
-      lastB4T[0]=theB4;
-#ifdef pdebug
-      G4cout<<"G4QElasticCrossSection::GetPTables:ip=0(init), lp="<<lp<<",S1="<<theS1
-            <<",B1="<<theB1<<",S2="<<theS2<<",B2="<<theB3<<",S3="<<theS3
-            <<",B3="<<theB3<<",S4="<<theS4<<",B4="<<theB4<<G4endl;
-#endif
-    }
-    if(LP>ILP)
-    {
-      G4int ini = static_cast<int>((ILP-lPMin+.000001)/dlnP)+1; // already inited till this
-      if(ini<0) ini=0;
-      if(ini<nPoints)
-      {
-        G4int fin = static_cast<int>((LP-lPMin)/dlnP)+1; // final bin of initialization
-        if(fin>nPoints) fin=nLast;                // Limit of the tabular initialization
-        if(fin>=ini)
-        {
-          G4double lp=0.;
-          for(G4int ip=ini; ip<=fin; ip++)        // Calculate tabular CS,S1,B1,S2,B2,S3,B3
-          {
-            lp=lPMin+ip*dlnP;                     // ln(momentum)
-            G4bool memCS=onlyCS;
-            onlyCS=false;
-            lastCST[ip]=GetTabValues(lp, PDG, tgZ, tgN); // Calculate AMDB tables (ret CS)
-            onlyCS=memCS;
-            lastSST[ip]=theSS;
-            lastS1T[ip]=theS1;
-            lastB1T[ip]=theB1;
-            lastS2T[ip]=theS2;
-            lastB2T[ip]=theB2;
-            lastS3T[ip]=theS3;
-            lastB3T[ip]=theB3;
-            lastS4T[ip]=theS4;
-            lastB4T[ip]=theB4;
-#ifdef pdebug
-            G4cout<<"G4QElasticCrossSection::GetPTables:ip="<<ip<<",lp="<<lp<<",S1="<<theS1
-                  <<",B1="<<theB1<<",S2="<<theS2<<",B2="<<theB2<<",S3="
-                  <<theS3<<",B3="<<theB3<<",S4="<<theS4<<",B4="<<theB4<<G4endl;
-#endif
-          }
-          return lp;
-        }
-        else G4cout<<"*Warning*G4QElasticCrossSection::GetPTables: PDG="<<PDG<<", Z="<<tgZ
-                   <<", N="<<tgN<<", i="<<ini<<" > fin="<<fin<<", LP="<<LP<<" > ILP="<<ILP
-                   <<" nothing is done!"<<G4endl;
-      }
-      else G4cout<<"*Warning*G4QElasticCrossSection::GetPTables: PDG="<<PDG<<", Z="<<tgZ
-                 <<", N="<<tgN<<", i="<<ini<<">= max="<<nPoints<<", LP="<<LP<<" > ILP="
-                 <<ILP<<", lPMax="<<lPMax<<" nothing is done!"<<G4endl;
-    }
-#ifdef pdebug
-    else G4cout<<"*Warning*G4QElasticCrossSection::GetPTables: PDG="<<PDG<<", Z="<<tgZ
-               <<", N="<<tgN<<", LP="<<LP<<" <= ILP="<<ILP<<" nothing is done!"<<G4endl;
-#endif
-  }
-  else
-  {
-    G4cout<<"*Error*G4QElasticCrossSection::GetPTables: PDG="<<PDG<<", Z="<<tgZ<<", N="
-          <<tgN<<", while it is defined only for PDG=2212(p)/2112(n)"<<G4endl;
-    throw G4QException("G4QElasticCrossSection::GetPTables: only nA & pA are implemented");
-  }
-  return ILP;
-}
-
-// Returns Q2=-t in independent units (MeV^2) (all internal calculations are in GeV)
-G4double G4QElasticCrossSection::GetExchangeT(G4int tgZ, G4int tgN, G4int PDG)
-{
-  static const G4double GeVSQ=gigaelectronvolt*gigaelectronvolt;
-  static const G4double third=1./3.;
-  static const G4double fifth=1./5.;
-  static const G4double sevth=1./7.;
-  if(tgZ==0 && tgN==1)                 // Temporary change for Quasi-Elastic
-  {
-    tgZ=1;
-    tgN=1;
-    if     (PDG==2212) PDG=2112;
-    else if(PDG==2112) PDG=2212;
-  }
-#ifdef tdebug
-  G4cout<<"G4QElasticCS::GetExcT:F="<<onlyCS<<",Z="<<tgZ<<",N="<<tgN<<",PDG="<<PDG<<G4endl;
-#endif
-  if(onlyCS) G4cout<<"**Warning*G4QElasticCrossSection::GetExchangeT: onlyCS=true"<<G4endl;
-  if(lastLP<-4.3) return lastTM*GeVSQ*G4UniformRand();// S-wave for p<14 MeV/c (kinE<.1MeV)
-  G4double q2=0.;
-  if(PDG==2112 && tgZ==1 && tgN==0)                // ===> n+p=n+p
-  {
-#ifdef tdebug
-    G4cout<<"G4QElasticCS::GetExchangeT: TM="<<lastTM<<",S1="<<theS1<<",B1="<<theB1<<",S2="
-          <<theS2<<",B2="<<theB2<<",GeV2="<<GeVSQ<<G4endl;
-#endif
-    G4double E1=lastTM*theB1;
-    G4double R1=(1.-std::exp(-E1));
-#ifdef tdebug
-    G4double ts1=-std::log(1.-R1)/theB1;
-    G4double ds1=std::fabs(ts1-lastTM)/lastTM;
-    if(ds1>.0001)
-      G4cout<<"*Warning*G4QElCS::GetExT:1n "<<ts1<<"#"<<lastTM<<",d="<<ds1
-            <<",R1="<<R1<<",E1="<<E1<<G4endl;
-#endif
-    G4double E2=lastTM*theB2;
-    G4double R2=(1.-std::exp(-E2));
-#ifdef tdebug
-    G4double ts2=-std::log(1.-R2)/theB2;
-    G4double ds2=std::fabs(ts2-lastTM)/lastTM;
-    if(ds2>.0001)
-      G4cout<<"*Warning*G4QElCS::GetExT:2n "<<ts2<<"#"<<lastTM<<",d="<<ds2
-            <<",R2="<<R2<<",E2="<<E2<<G4endl;
-#endif
-    //G4double E3=lastTM*theB3;
-    //G4double R3=(1.-std::exp(-E3));
-#ifdef tdebug
-    //G4double ts3=-std::log(1.-R3)/theB3;
-    //G4double ds3=std::fabs(ts3-lastTM)/lastTM;
-    //if(ds3>.01)G4cout<<"*Warn*G4QElCS::GetExT:3n "<<ts3<<"#"<<lastTM<<",d="<<ds3<<G4endl;
-#endif
-    G4double I1=R1*theS1;
-    G4double I2=R2*theS2/theB2;
-    //G4double I3=R3*theS3/theB3;
-    G4double I12=I1+I2;
-    //G4double rand=(I12+I3)*G4UniformRand();
-    G4double rand=I12*G4UniformRand();
-    if     (rand<I1 )
-    {
-      G4double ran=R1*G4UniformRand();
-      if(ran>1.) ran=1.;
-      q2=-std::log(1.-ran)/theB1;       // t-chan
-    }
-    else
-    {
-      G4double ran=R2*G4UniformRand();
-      if(ran>1.) ran=1.;
-      q2=lastTM+std::log(1.-ran)/theB2; // u-chan (ChEx)
-    }
-  }
-  else if(PDG==2212 && tgZ==1 && tgN==0)                // ===> p+p=p+p
-  {
-#ifdef tdebug
-    G4cout<<"G4QElasticCS::GetExchangeT: TM="<<lastTM<<",S1="<<theS1<<",B1="<<theB1<<",S2="
-          <<theS2<<",B2="<<theB2<<",S3="<<theS3<<",B3="<<theB3<<",GeV2="<<GeVSQ<<G4endl;
-#endif
-    G4double E1=lastTM*theB1;
-    G4double R1=(1.-std::exp(-E1));
-#ifdef tdebug
-    G4double ts1=-std::log(1.-R1)/theB1;
-    G4double ds1=std::fabs(ts1-lastTM)/lastTM;
-    if(ds1>.0001)
-      G4cout<<"*Warning*G4QElCS::GetExT:1p "<<ts1<<"#"<<lastTM<<",d="<<ds1
-            <<",R1="<<R1<<",E1="<<E1<<G4endl;
-#endif
-    G4double E2=lastTM*theB2;
-    G4double R2=(1.-std::exp(-E2*E2*E2));
-#ifdef tdebug
-    G4double ts2=std::pow(-std::log(1.-R2),.333333333)/theB2;
-    G4double ds2=std::fabs(ts2-lastTM)/lastTM;
-    if(ds2>.0001)
-      G4cout<<"*Warning*G4QElCS::GetExT:2p "<<ts2<<"#"<<lastTM<<",d="<<ds2
-            <<",R2="<<R2<<",E2="<<E2<<G4endl;
-#endif
-    G4double E3=lastTM*theB3;
-    G4double R3=(1.-std::exp(-E3));
-#ifdef tdebug
-    G4double ts3=-std::log(1.-R3)/theB3;
-    G4double ds3=std::fabs(ts3-lastTM)/lastTM;
-    if(ds3>.0001)
-      G4cout<<"*Warning*G4QElCS::GetExT:3p "<<ts3<<"#"<<lastTM<<",d="<<ds3
-            <<",R3="<<R1<<",E3="<<E3<<G4endl;
-#endif
-    G4double I1=R1*theS1/theB1;
-    G4double I2=R2*theS2;
-    G4double I3=R3*theS3;
-    G4double I12=I1+I2;
-    G4double rand=(I12+I3)*G4UniformRand();
-    if     (rand<I1 )
-    {
-      G4double ran=R1*G4UniformRand();
-      if(ran>1.) ran=1.;
-      q2=-std::log(1.-ran)/theB1;
-    }
-    else if(rand<I12)
-    {
-      G4double ran=R2*G4UniformRand();
-      if(ran>1.) ran=1.;
-      q2=-std::log(1.-ran);
-      if(q2<0.) q2=0.;
-      q2=std::pow(q2,third)/theB2;
-    }
-    else
-    {
-      G4double ran=R3*G4UniformRand();
-      if(ran>1.) ran=1.;
-      q2=-std::log(1.-ran)/theB3;
-    }
-  }
-  else if(PDG==2212 || PDG==2112)
-  {
-    G4double a=tgZ+tgN;
-#ifdef tdebug
-    G4cout<<"G4QElCS::GetExT: a="<<a<<",t="<<lastTM<<",S1="<<theS1<<",B1="<<theB1<<",SS="
-          <<theSS<<",S2="<<theS2<<",B2="<<theB2<<",S3="<<theS3<<",B3="<<theB3<<",S4="
-          <<theS4<<",B4="<<theB4<<G4endl;
-#endif
-    G4double E1=lastTM*(theB1+lastTM*theSS);
-    G4double R1=(1.-std::exp(-E1));
-    G4double tss=theSS+theSS; // for future solution of quadratic equation (imediate check)
-#ifdef tdebug
-    G4double ts1=-std::log(1.-R1)/theB1;
-    if(std::fabs(tss)>1.e-7) ts1=(std::sqrt(theB1*(theB1+(tss+tss)*ts1))-theB1)/tss;
-    G4double ds1=(ts1-lastTM)/lastTM;
-    if(ds1>.0001)
-      G4cout<<"*Warning*G4QElCS::GetExT:1a "<<ts1<<"#"<<lastTM<<",d="<<ds1
-            <<",R1="<<R1<<",E1="<<E1<<G4endl;
-#endif
-    G4double tm2=lastTM*lastTM;
-    G4double E2=lastTM*tm2*theB2;                   // power 3 for lowA, 5 for HighA (1st)
-    if(a>6.5)E2*=tm2;                               // for heavy nuclei
-    G4double R2=(1.-std::exp(-E2));
-#ifdef tdebug
-    G4double ts2=-std::log(1.-R2)/theB2;
-    if(a<6.5)ts2=std::pow(ts2,third);
-    else     ts2=std::pow(ts2,fifth);
-    G4double ds2=std::fabs(ts2-lastTM)/lastTM;
-    if(ds2>.0001)
-      G4cout<<"*Warning*G4QElCS::GetExT:2a "<<ts2<<"#"<<lastTM<<",d="<<ds2
-            <<",R2="<<R2<<",E2="<<E2<<G4endl;
-#endif
-    G4double E3=lastTM*theB3;
-    if(a>6.5)E3*=tm2*tm2*tm2;                       // power 1 for lowA, 7 (2nd) for HighA
-    G4double R3=(1.-std::exp(-E3));
-#ifdef tdebug
-    G4double ts3=-std::log(1.-R3)/theB3;
-    if(a>6.5)ts3=std::pow(ts3,sevth);
-    G4double ds3=std::fabs(ts3-lastTM)/lastTM;
-    if(ds3>.0001)
-      G4cout<<"*Warning*G4QElCS::GetExT:3a "<<ts3<<"#"<<lastTM<<",d="<<ds3
-            <<",R3="<<R3<<",E3="<<E3<<G4endl;
-#endif
-    G4double E4=lastTM*theB4;
-    G4double R4=(1.-std::exp(-E4));
-#ifdef tdebug
-    G4double ts4=-std::log(1.-R4)/theB4;
-    G4double ds4=std::fabs(ts4-lastTM)/lastTM;
-    if(ds4>.0001)
-      G4cout<<"*Warning*G4QElCS::GetExT:4a "<<ts4<<"#"<<lastTM<<",d="<<ds4
-            <<",R4="<<R4<<",E4="<<E4<<G4endl;
-#endif
-    G4double I1=R1*theS1;
-    G4double I2=R2*theS2;
-    G4double I3=R3*theS3;
-    G4double I4=R4*theS4;
-    G4double I12=I1+I2;
-    G4double I13=I12+I3;
-    G4double rand=(I13+I4)*G4UniformRand();
-#ifdef tdebug
-    G4cout<<"G4QElCS::GtExT:1="<<I1<<",2="<<I2<<",3="<<I3<<",4="<<I4<<",r="<<rand<<G4endl;
-#endif
-    if(rand<I1)
-    {
-      G4double ran=R1*G4UniformRand();
-      if(ran>1.) ran=1.;
-      q2=-std::log(1.-ran)/theB1;
-      if(std::fabs(tss)>1.e-7) q2=(std::sqrt(theB1*(theB1+(tss+tss)*q2))-theB1)/tss;
-#ifdef tdebug
-      G4cout<<"G4QElCS::GetExT:Q2="<<q2<<",ss="<<tss/2<<",b1="<<theB1<<",t1="<<ts1<<G4endl;
-#endif
-    }
-    else if(rand<I12)
-    {
-      G4double ran=R2*G4UniformRand();
-      if(ran>1.) ran=1.;
-      q2=-std::log(1.-ran)/theB2;
-      if(q2<0.) q2=0.;
-      if(a<6.5) q2=std::pow(q2,third);
-      else      q2=std::pow(q2,fifth);
-#ifdef tdebug
-      G4cout<<"G4QElCS::GetExT: Q2="<<q2<<", r2="<<R2<<", b2="<<theB2<<",t2="<<ts2<<G4endl;
-#endif
-    }
-    else if(rand<I13)
-    {
-      G4double ran=R3*G4UniformRand();
-      if(ran>1.) ran=1.;
-      q2=-std::log(1.-ran)/theB3;
-      if(q2<0.) q2=0.;
-      if(a>6.5) q2=std::pow(q2,sevth);
-#ifdef tdebug
-      G4cout<<"G4QElCS::GetExT:Q2="<<q2<<", r3="<<R2<<", b3="<<theB2<<",t3="<<ts2<<G4endl;
-#endif
-    }
-    else
-    {
-      G4double ran=R4*G4UniformRand();
-      if(ran>1.) ran=1.;
-      q2=-std::log(1.-ran)/theB4;
-      if(a<6.5) q2=lastTM-q2;                    // u reduced for lightA (starts from 0)
-#ifdef tdebug
-      G4cout<<"G4QElCS::GetExT:Q2="<<q2<<",m="<<lastTM<<",b4="<<theB3<<",t4="<<ts3<<G4endl;
-#endif
-    }
-  }
-  else
-  {
-    G4cout<<"*Error*G4QElasticCrossSection::GetExchangeT: PDG="<<PDG<<", Z="<<tgZ<<", N="
-          <<tgN<<", while it is defined only for PDG=2212 & PDG==2112"<<G4endl;
-    throw G4QException("G4QElasticCrossSection::GetExchangeT: nA and pA are implemented");
-  }
-  if(q2<0.) q2=0.;
-  if(!(q2>=-1.||q2<=1.)) G4cout<<"*NAN*G4QElasticCrossSect::GetExchangeT: -t="<<q2<<G4endl;
-  if(q2>lastTM)
-  {
-#ifdef tdebug
-    G4cout<<"*Warning*G4QElasticCrossSect::GetExT:-t="<<q2<<">"<<lastTM<<G4endl;
-#endif
-    q2=lastTM;
-  }
-  return q2*GeVSQ;
-}
-
-// Returns B in independent units (MeV^-2) (all internal calculations are in GeV) see ExT
-G4double G4QElasticCrossSection::GetSlope(G4int tgZ, G4int tgN, G4int PDG)
-{
-  static const G4double GeVSQ=gigaelectronvolt*gigaelectronvolt;
-#ifdef tdebug
-  G4cout<<"G4QElasticCS::GetSlope:"<<onlyCS<<", Z="<<tgZ<<",N="<<tgN<<",PDG="<<PDG<<G4endl;
-#endif
-  if(onlyCS) G4cout<<"*Warning*G4QElasticCrossSection::GetSlope: onlyCS=true"<<G4endl;
-  if(lastLP<-4.3) return 0.;          // S-wave for p<14 MeV/c (kinE<.1MeV)
-  if(PDG!=2212 && PDG!=2112)
-  {
-    G4cout<<"*Error*G4QElasticCrossSection::GetSlope: PDG="<<PDG<<", Z="<<tgZ<<", N="
-          <<tgN<<", while it is defined only for PDG=2212 & PDG=2112"<<G4endl;
-    throw G4QException("G4QElasticCrossSection::GetSlope: nA and pA are implemented");
-  }
-  if(theB1<0.) theB1=0.;
-  if(!(theB1>=-1.||theB1<=1.))G4cout<<"*NAN*G4QElasticCrossSect::Getslope:"<<theB1<<G4endl;
-  return theB1/GeVSQ;
-}
-
-// Returns half max(Q2=-t) in independent units (MeV^2)
-G4double G4QElasticCrossSection::GetHMaxT()
-{
-  static const G4double HGeVSQ=gigaelectronvolt*gigaelectronvolt/2.;
-  return lastTM*HGeVSQ;
-}
-
-// lastLP is used, so calculating tables, one need to remember and then recover lastLP
-G4double G4QElasticCrossSection::GetTabValues(G4double lp, G4int PDG, G4int tgZ,G4int tgN)
-{
-  if(tgZ==0 && tgN==1)                 // Temporary change for Quasi-Elastic
-  {
-    tgZ=1;
-    tgN=1;
-    if     (PDG==2212) PDG=2112;
-    else if(PDG==2112) PDG=2212;
-  }
-  if(tgZ<0 || tgZ>92)
-  {
-    G4cout<<"*Warning*G4QElasticCS::GetTabValue: (1-92) No isotopes for Z="<<tgZ<<G4endl;
-    return 0.;
-  }
-  G4int iZ=tgZ-1; // Z index
-  if(iZ<0)
-  {
-    iZ=0;         // conversion of the neutron target to the proton target
-    tgZ=1;
-    tgN=0;
-  }
-  //if(nN[iZ][0] < 0)
-  //{
-#ifdef isodebug
-  //  G4cout<<"*Warning*G4QElasticCS::GetTabValue: No isotopes for Z="<<tgZ<<G4endl;
-#endif
-  //  return 0.;
-  //}
-#ifdef pdebug
-  G4cout<<"G4QElasticCS::GetTabVal: lp="<<lp<<",Z="<<tgZ<<",N="<<tgN<<",PDG="<<PDG<<G4endl;
-#endif
-  G4double p=std::exp(lp);              // momentum
-  G4double sp=std::sqrt(p);             // sqrt(p)
-  G4double p2=p*p;            
-  G4double p3=p2*p;
-  G4double p4=p3*p;
-  if ( (PDG == 2112 && tgZ == 1 && tgN == 0) || 
-       (PDG == 2212 && tgZ == 0 && tgN == 1) ) {       // np/pn
-
-    G4double ssp=std::sqrt(sp);           // sqrt(sqrt(p))=p^.25
-    G4double p2s=p2*sp;
-    G4double dl1=lp-lastPAR[3];
-    theSS=lastPAR[21];
-    theS1=(lastPAR[9]+lastPAR[10]*dl1*dl1+lastPAR[11]/p)/(1.+lastPAR[12]/p4)
-          +lastPAR[13]/(p4+lastPAR[14]);
-    theB1=(lastPAR[17]+lastPAR[18]/(p4*p4+lastPAR[19]*p3))/(1.+lastPAR[20]/p4);
-    theS2=(lastPAR[15]+lastPAR[16]/p4/p)/p3;
-    theB2=lastPAR[22]/(p*sp+lastPAR[23]); 
-    theS3=0.;
-    theB3=0.; 
-    theS4=0.;
-    theB4=0.; 
-#ifdef tdebug
-    G4cout<<"G4QElasticCS::GetTableValues:(np) TM="<<lastTM<<",S1="<<theS1<<",B1="<<theB1
-          <<",S2="<<theS2<<",B2="<<theB2<<",S3="<<theS1<<",B3="<<theB1<<G4endl;
-#endif
-    // Returns the total elastic pp cross-section (to avoid spoiling lastSIG)
-    return lastPAR[0]/(p2s+lastPAR[1]*p+lastPAR[2]/ssp)+lastPAR[4]/p
-           +(lastPAR[5]+lastPAR[6]*dl1*dl1+lastPAR[7]/p)/(1.+lastPAR[8]/p4);
-
-  } else if ( (PDG == 2212 && tgZ == 1 && tgN == 0) || 
-              (PDG == 2112 && tgZ == 0 && tgN == 1) ) { // pp/nn
-
-    G4double p2s=p2*sp;
-    G4double dl1=lp-lastPAR[3];
-    G4double dl2=lp-lastPAR[8];
-    theSS=lastPAR[31];
-    theS1=(lastPAR[9]+lastPAR[10]*dl2*dl2)/(1.+lastPAR[11]/p4/p)+
-          (lastPAR[12]/p2+lastPAR[13]*p)/(p4+lastPAR[14]*sp);
-    theB1=lastPAR[15]*std::pow(p,lastPAR[16])/(1.+lastPAR[17]/p3);
-    theS2=lastPAR[18]+lastPAR[19]/(p4+lastPAR[20]*p);
-    theB2=lastPAR[21]+lastPAR[22]/(p4+lastPAR[23]/sp); 
-    theS3=lastPAR[24]+lastPAR[25]/(p4*p4+lastPAR[26]*p2+lastPAR[27]);
-    theB3=lastPAR[28]+lastPAR[29]/(p4+lastPAR[30]); 
-    theS4=0.;
-    theB4=0.; 
-#ifdef tdebug
-    G4cout<<"G4QElasticCS::GetTableValues:(pp) TM="<<lastTM<<",S1="<<theS1<<",B1="<<theB1
-          <<",S2="<<theS2<<",B2="<<theB2<<",S3="<<theS1<<",B3="<<theB1<<G4endl;
-#endif
-    // Returns the total elastic pp cross-section (to avoid spoiling lastSIG)
-    return lastPAR[0]/p2s/(1.+lastPAR[7]/p2s)+(lastPAR[1]+lastPAR[2]*dl1*dl1+lastPAR[4]/p)
-                                                   /(1.+lastPAR[5]*lp)/(1.+lastPAR[6]/p4);
-  }
-  else if(PDG==2212 || PDG==2112) // n/p + A
-  {
-    G4double p5=p4*p;
-    G4double p6=p5*p;
-    G4double p8=p6*p2;
-    G4double p10=p8*p2;
-    G4double p12=p10*p2;
-    G4double p16=p8*p8;
-    //G4double p24=p16*p8;
-    G4double dl=lp-5.;
-    G4double a=tgZ+tgN;
-    G4double pah=std::pow(p,a/2);
-    G4double pa=pah*pah;
-    G4double pa2=pa*pa;
-    if(a<6.5)
-    {
-      theS1=lastPAR[9]/(1.+lastPAR[10]*p4*pa)+lastPAR[11]/(p4+lastPAR[12]*p4/pa2)+
-            (lastPAR[13]*dl*dl+lastPAR[14])/(1.+lastPAR[15]/p2);
-      theB1=(lastPAR[16]+lastPAR[17]*p2)/(p4+lastPAR[18]/pah)+lastPAR[19];
-      theSS=lastPAR[20]/(1.+lastPAR[21]/p2)+lastPAR[22]/(p6/pa+lastPAR[23]/p16);
-      theS2=lastPAR[24]/(pa/p2+lastPAR[25]/p4)+lastPAR[26];
-      theB2=lastPAR[27]*std::pow(p,lastPAR[28])+lastPAR[29]/(p8+lastPAR[30]/p16);
-      theS3=lastPAR[31]/(pa*p+lastPAR[32]/pa)+lastPAR[33];
-      theB3=lastPAR[34]/(p3+lastPAR[35]/p6)+lastPAR[36]/(1.+lastPAR[37]/p2);
-      theS4=p2*(pah*lastPAR[38]*std::exp(-pah*lastPAR[39])+
-                lastPAR[40]/(1.+lastPAR[41]*std::pow(p,lastPAR[42])));
-      theB4=lastPAR[43]*pa/p2/(1.+pa*lastPAR[44]);
-#ifdef tdebug
-      G4cout<<"G4QElCS::GetTabV: lA, p="<<p<<",S1="<<theS1<<",B1="<<theB1<<",SS="<<theSS
-            <<",S2="<<theS2<<",B2="<<theB2<<",S3="<<theS3<<",B3="<<theB3<<",S4="<<theS4
-            <<",B4="<<theB4<<G4endl;
-#endif
-    }
-    else
-    {
-      theS1=lastPAR[9]/(1.+lastPAR[10]/p4)+lastPAR[11]/(p4+lastPAR[12]/p2)+
-            lastPAR[13]/(p5+lastPAR[14]/p16);
-      theB1=(lastPAR[15]/p8+lastPAR[19])/(p+lastPAR[16]/std::pow(p,lastPAR[20]))+
-            lastPAR[17]/(1.+lastPAR[18]/p4);
-      theSS=lastPAR[21]/(p4/std::pow(p,lastPAR[23])+lastPAR[22]/p4);
-      theS2=lastPAR[24]/p4/(std::pow(p,lastPAR[25])+lastPAR[26]/p12)+lastPAR[27];
-      theB2=lastPAR[28]/std::pow(p,lastPAR[29])+lastPAR[30]/std::pow(p,lastPAR[31]);
-      theS3=lastPAR[32]/std::pow(p,lastPAR[35])/(1.+lastPAR[36]/p12)+
-            lastPAR[33]/(1.+lastPAR[34]/p6);
-      theB3=lastPAR[37]/p8+lastPAR[38]/p2+lastPAR[39]/(1.+lastPAR[40]/p8);
-      theS4=(lastPAR[41]/p4+lastPAR[46]/p)/(1.+lastPAR[42]/p10)+
-            (lastPAR[43]+lastPAR[44]*dl*dl)/(1.+lastPAR[45]/p12);
-      theB4=lastPAR[47]/(1.+lastPAR[48]/p)+lastPAR[49]*p4/(1.+lastPAR[50]*p5);
-#ifdef tdebug
-      G4cout<<"G4QElCS::GetTabV: hA, p="<<p<<",S1="<<theS1<<",B1="<<theB1<<",SS="<<theSS
-            <<",S2="<<theS2<<",B2="<<theB2<<",S3="<<theS3<<",B3="<<theB3<<",S4="<<theS4
-            <<",B4="<<theB4<<G4endl;
-#endif
-    }
-    // Returns the total elastic (n/p)A cross-section (to avoid spoiling lastSIG)
-#ifdef tdebug
-    G4cout<<"G4QElCS::GetTabV: PDG="<<PDG<<",P="<<p<<",N="<<tgN<<",Z="<<tgZ<<G4endl;
-#endif
-    //if(PDG!=2112 || !tgN || p>.1)      // No Low Energy neutron addition
-    if(PDG==2212)                        // Unique formula for protons
-    {
-      G4double rp16=lastPAR[6]/p16;
-      return (lastPAR[0]*dl*dl+lastPAR[1])/(1.+lastPAR[2]/p)+lastPAR[3]/(p4+lastPAR[4]/p2)
-             + lastPAR[5]/(p5+rp16*rp16)+lastPAR[7]/(p4+lastPAR[8]/p4);
-    }
-    else if(a<6.5)                       // neutrons on light nuclei
-     return (lastPAR[0]*dl*dl+lastPAR[1])/(1.+lastPAR[2]/p)+lastPAR[3]/(p4+lastPAR[4]/p2)+
-            lastPAR[5]/(p5+lastPAR[6]/p8)+lastPAR[7]/(p4+lastPAR[8]);
-    else                                 // neutrons on heavy nuclei
-     return (lastPAR[0]*dl*dl+lastPAR[1])/(1.+lastPAR[2]/p)+lastPAR[3]/(p4+lastPAR[4]/p2)+
-            lastPAR[5]/(p8+lastPAR[6]/p8)+lastPAR[7]/(p2+lastPAR[8]);
-    //else
-    //{
-    //  G4int nI=nn[iZ];
-    //  for(G4int i=0; i<nI; i++) if(tgN==nN[iZ][i])
-    //  {
-    //    G4double kE=p2/dNM;
-#ifdef tdebug
-    //  G4cout<<"G4QECS::GTV:P="<<p<<",E="<<kE<<",X="<<nX[iZ][i]<<",T="<<nT[iZ][i]<<G4endl;
-#endif
-    //    if(kE<nT[iZ][i]) return 0.;    // 0 below the threshold (in MeV)
-    //   if(p<2.) return nX[iZ][i];     // At very low momentum(<2MeV/c) -> only LECS
-    //    return lastPAR[3]/(p4+lastPAR[4]/p2)+lastPAR[5]/(p5+rp16*rp16)+
-    //           lastPAR[7]/(p4+lastPAR[8]/p4)+nX[iZ][i]/(1.+lastPAR[51]*p16);
-    //  }
-    //G4cerr<<"*G4QElCS::GTV:PDG="<<PDG<<",Z="<<tgZ<<",N="<<tgN<<": Sig not found"<<G4endl;
-    //}
-  }
-  else
-  {
-    G4cout<<"*Error*G4QElasticCrossSection::GetTabValues: PDG="<<PDG<<", Z="<<tgZ<<", N="
-          <<tgN<<", while it is defined only for PDG=2212/2112, Z>0, N>0"<<G4endl;
-    throw G4QException("G4QElasticCrossSection::GetTabValues: only NA is implemented");
-  }
-  return 0.;
-} // End of GetTableValues
-
-// Returns max -t=Q2 (GeV^2) for the momentum pP(GeV) and the target nucleus (tgN,tgZ)
-G4double G4QElasticCrossSection::GetQ2max(G4int PDG, G4int tgZ, G4int tgN, G4double pP)
-{
-  static const G4double mNeut= G4QPDGCode(2112).GetMass()*.001; // MeV to GeV
-  static const G4double mProt= G4QPDGCode(2212).GetMass()*.001; // MeV to GeV
-  //static const G4double mLamb= G4QPDGCode(3122).GetMass()*.001; // MeV to GeV
-  //static const G4double mHe3 = G4QPDGCode(2112).GetNuclMass(2,1,0)*.001; // MeV to GeV
-  //static const G4double mAlph = G4QPDGCode(2112).GetNuclMass(2,2,0)*.001; // MeV to GeV
-  //static const G4double mDeut = G4QPDGCode(2112).GetNuclMass(1,1,0)*.001; // MeV to GeV
-  static const G4double mProt2= mProt*mProt;
-  static const G4double mNeut2= mNeut*mNeut;
-  //static const G4double mDeut2= mDeut*mDeut;
-  if(tgZ==0 && tgN==1)                 // Temporary change for Quasi-Elastic
-  {
-    tgZ=1;
-    tgN=1;
-    if     (PDG==2212) PDG=2112;
-    else if(PDG==2112) PDG=2212;
-  }
-  G4double pP2=pP*pP;                                 // squared momentum of the projectile
-  if(PDG==2212 && tgZ==1 && tgN==0)
-  {
-    G4double tMid=std::sqrt(pP2+mProt2)*mProt-mProt2; // CMS 90deg value of -t=Q2 (GeV^2)
-    return tMid+tMid;
-  }
-  else if(PDG==2112 && tgZ==0 && tgN==1)
-  {
-    G4double tMid=std::sqrt(pP2+mNeut2)*mNeut-mNeut2;  // CMS 90deg value of -t=Q2 (GeV^2)
-    return tMid+tMid;
-  }
-  else if(PDG==2112 && (tgZ || tgN))                   // ---> nA
-  {
-    G4double mt=mProt;                                 // Target mass in GeV
-    if(tgN||tgZ>1) mt=G4QPDGCode(90000000+tgZ*1000+tgN).GetMass()*.001; // Target mass GeV
-    G4double dmt=mt+mt;
-    G4double s=dmt*std::sqrt(pP2+mNeut2)+mNeut2+mt*mt; // Mondelstam s (in GeV^2)
-    return dmt*dmt*pP2/s;
-  }
-  else if(PDG==2212 && (tgZ || tgN))                   // ---> pA
-  {
-    G4double mt=G4QPDGCode(90000000+tgZ*1000+tgN).GetMass()*.001; // Target mass in GeV
-    G4double dmt=mt+mt;
-    G4double s=dmt*std::sqrt(pP2+mProt2)+mProt2+mt*mt; // Mondelstam s
-    return dmt*dmt*pP2/s;
-  }
-  else
-  {
-    G4cout<<"*Error*G4QElasticCrossSection::GetQ2max: PDG="<<PDG<<", Z="<<tgZ<<", N="
-          <<tgN<<", while it is defined only for p,n projectiles & Z_target>0"<<G4endl;
-    throw G4QException("G4QElasticCrossSection::GetQ2max: only nA & pA are implemented");
-  }
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElectronNuclearCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElectronNuclearCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,2819 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QElectronNuclearCrossSection.cc,v 1.15 2009/05/08 15:16:26 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QElectronNuclearCrossSection for gamma+A cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 17-Oct-03
-// 
-//=================================================================================
-// Short description: reaction cross-sections for electron-nuclear reactions, which
-// are integrals over virtual equivalent photons photons.
-// --------------------------------------------------------------------------------
-
-//#define debug
-#define edebug
-//#define pdebug
-//#define ppdebug
-//#define tdebug
-//#define sdebug
-
-#include "G4QElectronNuclearCrossSection.hh"
-
-// Initialization of the
-G4bool    G4QElectronNuclearCrossSection::onlyCS=true;// Flag to calculate only CS
-G4double  G4QElectronNuclearCrossSection::lastSig=0.;// Last value of the Cross Section
-G4int     G4QElectronNuclearCrossSection::lastL=0; // LastUsed in CrossSections TheLastBin
-G4double  G4QElectronNuclearCrossSection::lastE=0.;// LastUsed in CrossSections TheEnergy
-G4int     G4QElectronNuclearCrossSection::lastF=0; // LastUsed in CrossSections TheFirstBin
-G4double  G4QElectronNuclearCrossSection::lastG=0.;// LastUsed in CrossSections TheGamma
-G4double  G4QElectronNuclearCrossSection::lastH=0.;// LastValue of High Energy A-dependence
-G4double* G4QElectronNuclearCrossSection::lastJ1=0;// Pointer to lastArray of J1 function
-G4double* G4QElectronNuclearCrossSection::lastJ2=0;// Pointer to lastArray of J2 function
-G4double* G4QElectronNuclearCrossSection::lastJ3=0;// Pointer to lastArray of J3 function
-G4int     G4QElectronNuclearCrossSection::lastPDG=0; // The last PDG code of the projectile
-G4int     G4QElectronNuclearCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QElectronNuclearCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QElectronNuclearCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QElectronNuclearCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QElectronNuclearCrossSection::lastCS=0.; // Last value of the Cross Section
-G4int     G4QElectronNuclearCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QElectronNuclearCrossSection::GetPointer()
-{
-  static G4QElectronNuclearCrossSection theCrossSection; //**Static body of Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QElectronNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom,
-                                                         G4int tgZ, G4int tgN, G4int pPDG)
-{
-  static const G4double mel=0.5109989; // Mass of the electron in MeV
-  static const G4double mel2=mel*mel;  // Squared Mass of the electron in MeV
-  static G4int j;                      // A#0f records found in DB for this projectile
-  static std::vector <G4int>    colPDG;// Vector of the projectile PDG code
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-  G4double pEn=std::sqrt(pMom*pMom+mel2)-mel; // ==> electron/positron kinEnergy
-#ifdef pdebug
-  G4cout<<"G4QENCS::GetCS:>>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG="<<pPDG<<"("<<lastPDG<<"), T="<<pEn<<"("<<lastTH<<")"<<",Sz="
-        <<colN.size()<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  if(std::abs(pPDG)!=11)
-  {
-#ifdef pdebug
-    G4cout<<"G4QENCS::GetCS: *** Found pPDG="<<pPDG<<" ====> CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // projectile PDG=0 is a mistake (?!) @@
-  }
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tgN!=lastN || tgZ!=lastZ || pPDG!=lastPDG)// The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastPDG = pPDG;                    // The last PDG of the projectile
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-    if(lastI) for(G4int i=0; i<lastI; i++) if(colPDG[i]==pPDG) // The partType is found
-    {                                  // The nucleus with projPDG is found in AMDB
-      if(colN[i]==tgN && colZ[i]==tgZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QENCS::GetCS:*Found* P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(pEn<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QENCS::GetCS:Found T="<<pEn<<" < Threshold="<<lastTH<<",CS=0"<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastCS =colCS[i];                // Last CrossSect (A-dependent)
- //       if(std::fabs(lastP/pMom-1.)<tolerance) // VI (do not use tolerance) 
-        if(lastP == pMom)
-        {
-#ifdef pdebug
-          G4cout<<"G4QENCS::GetCS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-#endif
-          CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // Update param's only
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QENCS::G:UpdatDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // read & update
-#ifdef pdebug
-        G4cout<<"G4QENCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(lastCS<=0. && pEn>lastTH)    // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QENCS::GetCS: New T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-        break;                           // Go out of the LOOP
-      }
-#ifdef pdebug
-      G4cout<<"---G4QENCrossSec::GetCrosSec:pPDG="<<pPDG<<",j="<<j<<",N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<",cPDG="<<colPDG[i]<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      j++;                             // Increment a#0f records found in DB for this pPDG
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QENCS::GetCrosSec:CalcNew P="<<pMom<<",f="<<fCS<<",lastI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,j,lastPDG,lastZ,lastN,pMom); //calculate & create
-      if(lastCS<=0.)
-      {
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QENCrossSection::GetCrossSect: NewThresh="<<lastTH<<",T="<<pEn<<G4endl;
-#endif
-        if(pEn>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QENCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QENCS::GetCrosSec: New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      colN.push_back(tgN);
-      colZ.push_back(tgZ);
-      colPDG.push_back(pPDG);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colCS.push_back(lastCS);
-#ifdef pdebug
-      G4cout<<"G4QENCS::GetCS:1st,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QENCS::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colPDG[lastI]=pPDG;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-  else if(pEn<=lastTH)
-  {
-#ifdef pdebug
-    G4cout<<"G4QENCS::GetCS: Current T="<<pEn<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  //  else if(std::fabs(lastP/pMom-1.)<tolerance) // VI (do not use tolerance)
-  else if(lastP == pMom)  
-  {
-#ifdef pdebug
-    G4cout<<"G4QENCS::GetCS:OldCur P="<<pMom<<"="<<pMom<<", CS="<<lastCS*millibarn<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return lastCS*millibarn;     // Use theLastCS
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"G4QENCS::GetCS:UpdatCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastCS=CalculateCrossSection(fCS,1,j,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-    lastP=pMom;
-  }
-#ifdef pdebug
-  G4cout<<"G4QENCS::GetCroSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  return lastCS*millibarn;
-}
-
-// Gives the threshold energy for different nuclei (min of p- and n-threshold)
-// *******************************************************************************
-// *** This function is the same for all lepto- & photo-nuclear reactions, for ***
-// *** (nu,l) reactions the mass value of the final state lepton must be added ***
-// ***@@ IT IS REASONABLE TO MAKE ADDITIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR @@***
-// *******************************************************************************
-G4double G4QElectronNuclearCrossSection::ThresholdEnergy(G4int Z, G4int N, G4int)
-{
-  // CHIPS - Direct GEANT
-  //static const G4double mNeut = G4QPDGCode(2112).GetMass();
-  //static const G4double mProt = G4QPDGCode(2212).GetMass();
-  static const G4double mNeut = G4NucleiProperties::GetNuclearMass(1,0)/MeV;
-  static const G4double mProt = G4NucleiProperties::GetNuclearMass(1,1)/MeV;
-  static const G4double mAlph = G4NucleiProperties::GetNuclearMass(4,2)/MeV;
-  // ---------
-  static const G4double infEn = 9.e27;
-
-  G4int A=Z+N;
-  if(A<1) return infEn;
-  else if(A==1) return 144.76; // Pi0 threshold in MeV for the proton: T>m+(m^2+2lm)/2M
-  // CHIPS - Direct GEANT
-  //G4double mT= G4QPDGCode(111).GetNuclMass(Z,N,0);
-  G4double mT= 0.;
-  if(G4NucleiProperties::IsInStableTable(A,Z))
-                               mT = G4NucleiProperties::GetNuclearMass(A,Z)/MeV;
-  else return 0.;       // If it is not in the Table of Stable Nuclei, then the Threshold=0
-  // ---------
-  G4double mP= infEn;
-  //if(Z) mP= G4QPDGCode(111).GetNuclMass(Z-1,N,0);
-  if(Z&&G4NucleiProperties::IsInStableTable(A-1,Z-1))
-         mP = G4NucleiProperties::GetNuclearMass(A-1,Z-1)/MeV;  // ResNucMass for a proton
-  G4double mN= infEn;
-  //if(N) mN= G4QPDGCode(111).GetNuclMass(Z,N-1,0);
-  if(N&&G4NucleiProperties::IsInStableTable(A-1,Z))
-         mN = G4NucleiProperties::GetNuclearMass(A-1,Z)/MeV;    // ResNucMass for a neutron
-
-  G4double mA= infEn;
-  if(N>1&&Z>1&&G4NucleiProperties::IsInStableTable(A-4,Z-2))
-         mA = G4NucleiProperties::GetNuclearMass(A-4.,Z-2.)/MeV;// ResNucMass for an alpha
-
-  G4double dP= mP +mProt - mT;
-  G4double dN= mN +mNeut - mT;
-  G4double dA= mA +mAlph - mT;
-#ifdef pdebug
-  G4cout<<"G4QElectronNucCS::ThreshEn: mP="<<mP<<",dP="<<dP<<",mN="<<mN<<",dN="<<dN<<",mA="
-        <<mA<<",dA="<<dA<<",mT="<<mT<<",A="<<A<<",Z="<<Z<<G4endl;
-#endif
-  if(dP<dN)dN=dP;
-  if(dA<dN)dN=dA;
-  return dN;
-}
-
-// The main member function giving the gamma-A cross section (E in GeV, CS in mb)
-G4double G4QElectronNuclearCrossSection::CalculateCrossSection(G4bool CS, G4int F, G4int I,
-                                        G4int, G4int targZ, G4int targN, G4double Momentum)
-{
-  static const G4int nE=336; // !!  If change this, change it in GetFunctions() (*.hh) !!
-  static const G4int mL=nE-1;
-  static const G4double EMi=2.0612;     // Minimum tabulated Energy of the Electron
-  static const G4double EMa=50000.;     // Maximum tabulated Energy of the Electron 
-  static const G4double lEMi=std::log(EMi); // Min tabulated logarithmic Energy of Electron
-  static const G4double lEMa=std::log(EMa); // Max tabulated logarithmic Energy of Electron
-  static const G4double dlnE=(lEMa-lEMi)/mL; // Log step in the table for electron Energy
-  static const G4double alop=1./137.036/3.14159265; //coefficient for Ee>50000 calculations
-  static const G4double mel=0.5109989;       // Mass of the electron in MeV
-  static const G4double mel2=mel*mel;        // Squared Mass of the electron in MeV
-  static const G4double lmel=std::log(mel);       // Log of the electron mass
-  // *** Begin of the Associative memory for acceleration of the cross section calculations
-  static std::vector <G4int> colF;     // Vector of LastStartPosition in Ji-function tables
-  static std::vector <G4double> colH;  // Vector of HighEnergyCoefficients (functional)
-  static std::vector <G4double*> J1;   // Vector of pointers to the J1 tabulated functions
-  static std::vector <G4double*> J2;   // Vector of pointers to the J2 tabulated functions
-  static std::vector <G4double*> J3;   // Vector of pointers to the J3 tabulated functions
-#ifdef pdebug
-  G4cout<<"G4QElectronNucCrossSection::CalculateCrossSection: ***Called*** "<<J3.size();
-  if(J3.size()) G4cout<<", p="<<J3[0];
-  G4cout<<G4endl;
-  //if(F==-27) return 0.;
-#endif
-  // *** End of Static Definitions (Associative Memory) ***
-  //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Electron
-  onlyCS=CS;                           // Flag to calculate only CS (not Si/Bi)
-  G4double TotEnergy2=Momentum*Momentum+mel2;
-  G4double TotEnergy=std::sqrt(TotEnergy2); // Total energy of the electron
-  lastE=TotEnergy-mel;                 // Kinetic energy of the electron
-#ifdef pdebug
-  G4cout<<"G4QElectronNucCS::CalcCS: P="<<Momentum<<", F="<<F<<", I="<<I<<", Z="<<targZ;
-  if(J3.size()) G4cout<<", p="<<J3[0];
-  G4cout<<", N="<<targN<<", onlyCS="<<CS<<",E="<<lastE<<",th="<<EMi<<G4endl;
-#endif
-  G4double A=targN+targZ;            // New A (can differ from G4double targetAtomicNumber)
-  if(F<=0)                           // This isotope was not the last used isotop
-  {
-    if(F<0)                          // This isotope was found in DAMDB =========> RETRIEVE
-    {                                // ...........................................========
-      if (lastE<=EMi)                // Energy is below the minimum energy in the table
-      {
-        lastE=0.;
-        lastG=0.;
-        lastSig=0.;
-#ifdef pdebug
-        G4cout<<"G4QElectronNucCS::CalcCS: Old CS=0 as lastE="<<lastE<<" < "<<EMi<<G4endl;
-#endif
-        return 0.;
-      }
-      lastJ1 =J1[I];                 // Pointer to the prepared J1 function
-      lastJ2 =J2[I];                 // Pointer to the prepared J2 function
-      lastJ3 =J3[I];                 // Pointer to the prepared J3 function
-      lastF  =colF[I];               // Last ZeroPosition in the J-functions
-      lastH  =colH[I];               // Last High Energy Coefficient (A-dependent)
-    }
-    else                             // This isotope wasn't calculated previously => CREATE
-    {
-      lastJ1 = new G4double[nE];     // Allocate memory for the new J1 function
-      lastJ2 = new G4double[nE];     // Allocate memory for the new J2 function
-      lastJ3 = new G4double[nE];     // Allocate memory for the new J3 function
-      lastF   = GetFunctions(A,lastJ1,lastJ2,lastJ3);//newZeroPos and J-functions filling
-      lastH   = alop*A*(1.-.072*std::log(A)); // like lastSP of G4PhotonuclearCrossSection
-#ifdef pdebug
-      G4cout<<"==>G4QElNCS::CalcCS: pJ1="<<lastJ1<<",pJ2="<<lastJ2<<",pJ3="<<lastJ3;
-      if(lastJ1) G4cout<<", J1="<<lastJ1[0]<<",J2="<<lastJ2[0]<<",J3="<<lastJ3[0];
-      G4cout<<G4endl;
-#endif
-      // *** The synchronization check ***
-      G4int sync=J1.size();
-      if(sync!=I) G4cerr<<"***G4QElectNuclearCS::CalcCS: PDG=11 ,S="<<sync<<"#"<<I<<G4endl;
-      J1.push_back(lastJ1);
-      J2.push_back(lastJ2);
-      J3.push_back(lastJ3);
-      colF.push_back(lastF);
-      colH.push_back(lastH);
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW Calculate the Cross Section =====================
-  if (lastE<=lastTH || lastE<=EMi)   // Check that muKiE is higher than ThreshE
-  {
-    lastE=0.;
-    lastG=0.;
-    lastSig=0.;
-#ifdef pdebug
-    G4cout<<"G4QElectronNucCS::CalcCS:CS=0 as T="<<lastE<<"<"<<EMi<<" || "<<lastTH<<G4endl;
-#endif
-    return 0.;
-  }
-  G4double lE=std::log(lastE);       // log(muE) (it is necessary for the fit)
-  lastG=lE-lmel;                     // Gamma of the electron (used to recover log(eE))
-  G4double dlg1=lastG+lastG-1.;
-  G4double lgoe=lastG/lastE;
-  if(lE<lEMa)       // Log fit is made explicitly to fix the last bin for the randomization
-  {
-    G4double shift=(lE-lEMi)/dlnE;
-    G4int    blast=static_cast<int>(shift);
-#ifdef pdebug
-    G4cout<<"-->G4QElectronNuclearCS::CalcCrossSect:LOGfit b="<<blast<<",max="<<mL<<",lJ1="
-          <<lastJ1<<",lJ2="<<lastJ2<<",lJ3="<<lastJ3<<",lEmin="<<lEMi<<",d="<<dlnE<<G4endl;
-#endif
-    if(blast<0)   blast=0;
-    if(blast>=mL) blast=mL-1;
-    shift-=blast;
-    lastL=blast+1;
-    G4double YNi=dlg1*lastJ1[blast]
-                -lgoe*(lastJ2[blast]+lastJ2[blast]-lastJ3[blast]/lastE);
-    G4double YNj=dlg1*lastJ1[lastL]
-                -lgoe*(lastJ2[lastL]+lastJ2[lastL]-lastJ3[lastL]/lastE);
-    lastSig= YNi+shift*(YNj-YNi);
-    if(lastSig>YNj)lastSig=YNj;
-#ifdef pdebug
-    G4cout<<"G4QElectNucCS::CalcCS:S="<<lastSig<<",lE="<<lE<<",Yi="<<YNi<<",Yj="<<YNj
-          <<",J1="<<lastJ1[blast]<<",J2="<<lastJ2[blast]<<",J3="<<lastJ3[blast]<<G4endl;
-    G4cout<<"G4QElectNucCS::CalcCS:s="<<shift<<",Jb="<<lastJ1[blast]<<",J="<<lastJ1[lastL];
-    if(J3.size()) G4cout<<", p="<<J3[0];
-    G4cout<<",b="<<blast<<",lEmax="<<lEMa<<",lgoe="<<lgoe<<G4endl;
-#endif
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"->G4QElecNucCS::CCS:LOGex="<<lastJ1<<",lJ2="<<lastJ2<<",lJ3="<<lastJ3<<G4endl;
-#endif
-    lastL=mL;
-    G4double term1=lastJ1[mL]+lastH*HighEnergyJ1(lE);
-    G4double term2=lastJ2[mL]+lastH*HighEnergyJ2(lE);
-    G4double term3=lastJ3[mL]+lastH*HighEnergyJ3(lE);
-    lastSig=dlg1*term1-lgoe*(term2+term2-term3/lastE);
-#ifdef pdebug
-    G4cout<<"G4QElNucCS::CalculateCrossSection:S="<<lastSig<<",lE="<<lE<<",J1="
-          <<lastH*HighEnergyJ1(lE)<<",Pm="<<lastJ1[mL]<<",Fm="<<lastJ2[mL]<<",Fh=";
-    if(J3.size()) G4cout<<", p="<<J3[0];
-    G4cout<<lastH*HighEnergyJ2(lE)<<",EM="<<lEMa<<G4endl;
-#endif
-  }
-  if(lastSig<0.) lastSig = 0.;
-#ifdef pdebug
-  if(J3.size()) G4cout<<">>>>>>>>>>G4QElNucCS::CalculateCrossSection: p="<<J3[0]<<G4endl;
-#endif
-  return lastSig;
-}
-
-// Calculate the functions for the log(A)
-// ****************************************************************************************
-// *** This tables are the same for all lepto-nuclear reactions, only mass is different ***
-// ***@@ IT'S REASONABLE TO MAKE ADDiTIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR WITH THIS@@ ***
-// ****************************************************************************************
-G4int G4QElectronNuclearCrossSection::GetFunctions(G4double  a, G4double* x,
-                                                   G4double* y, G4double* z)
-{
-  static const G4int nN=14;
-  static const G4int nE=336; // !! If change this, change it in GetCrossSection() (*.cc) !!
-  static G4int L[nN]={138, 2, 32, 75, 26, 41, 0, 67, 58, 46, 41, 38, 39, 36};
-  // !! @@ Change it from ln(A) to A approximation !!
-  static G4double A[nN]={1.,2.,3.,4.,6.,7.,9.,12.,16.,27.,63.546,118.71,207.2,238.472};
-  static const G4double P00[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,9.508853e-10,
-5.658793e-09,1.254527e-08,2.393031e-08,4.505061e-08,8.774895e-08,1.786164e-07,3.761182e-07,
-8.030425e-07,1.694925e-06,3.434914e-06,6.495386e-06,1.124554e-05,1.778700e-05,2.601897e-05,
-3.581584e-05,4.713652e-05,6.004450e-05,7.469108e-05,9.129458e-05,1.101221e-04,1.314694e-04,
-1.556326e-04,1.828616e-04,2.132878e-04,2.468359e-04,2.831345e-04,3.214679e-04,3.608144e-04,
-3.999890e-04,4.378523e-04,4.735003e-04,5.063667e-04,5.362207e-04,5.630982e-04,5.872062e-04,
-6.088412e-04,6.283321e-04,6.460063e-04,6.621724e-04,6.771140e-04,6.910895e-04,7.043362e-04,
-7.170748e-04,7.295161e-04,7.418666e-04,7.543331e-04,7.671270e-04,7.804653e-04,7.945670e-04,
-8.096392e-04,8.258506e-04,8.432877e-04,8.619005e-04,8.814550e-04,9.015289e-04,9.215770e-04,
-9.410623e-04,9.595795e-04,9.769243e-04,9.930963e-04,1.008264e-03,1.022722e-03,1.036854e-03,
-1.051075e-03,1.065714e-03,1.080833e-03,1.096129e-03,1.111117e-03,1.125415e-03,1.138885e-03,
-1.151571e-03,1.163605e-03,1.175135e-03,1.186298e-03,1.197206e-03,1.207945e-03,1.218575e-03,
-1.229133e-03,1.239639e-03,1.250100e-03,1.260515e-03,1.270882e-03,1.281197e-03,1.291459e-03,
-1.301668e-03,1.311824e-03,1.321929e-03,1.331985e-03,1.341993e-03,1.351954e-03,1.361871e-03,
-1.371743e-03,1.381573e-03,1.391360e-03,1.401105e-03,1.410808e-03,1.420471e-03,1.430093e-03,
-1.439674e-03,1.449216e-03,1.458718e-03,1.468180e-03,1.477604e-03,1.486990e-03,1.496338e-03,
-1.505649e-03,1.514923e-03,1.524160e-03,1.533363e-03,1.542530e-03,1.551662e-03,1.560761e-03,
-1.569826e-03,1.578859e-03,1.587860e-03,1.596829e-03,1.605768e-03,1.614676e-03,1.623555e-03,
-1.632405e-03,1.641227e-03,1.650021e-03,1.658788e-03,1.667529e-03,1.676244e-03,1.684933e-03,
-1.693598e-03,1.702238e-03,1.710855e-03,1.719449e-03,1.728020e-03,1.736570e-03,1.745097e-03,
-1.753604e-03,1.762091e-03,1.770557e-03,1.779004e-03,1.787432e-03,1.795842e-03,1.804234e-03,
-1.812608e-03,1.820965e-03,1.829305e-03,1.837630e-03,1.845938e-03,1.854231e-03,1.862510e-03,
-1.870774e-03,1.879024e-03,1.887260e-03,1.895483e-03,1.903693e-03,1.911891e-03,1.920077e-03,
-1.928252e-03,1.936415e-03,1.944567e-03,1.952709e-03,1.960841e-03,1.968963e-03,1.977075e-03,
-1.985179e-03,1.993274e-03,2.001361e-03,2.009440e-03,2.017511e-03,2.025576e-03,2.033633e-03,
-2.041684e-03,2.049728e-03,2.057767e-03,2.065800e-03,2.073828e-03,2.081851e-03,2.089870e-03,
-2.097884e-03,2.105894e-03,2.113901e-03,2.121904e-03,2.129905e-03,2.137903e-03,2.145898e-03,
-2.153892e-03,2.161884e-03,2.169874e-03,2.177863e-03,2.185852e-03,2.193839e-03,2.201827e-03,
-2.209815e-03,2.217803e-03,2.225791e-03,2.233781e-03,2.241771e-03,2.249764e-03,2.257757e-03
-  };
-  static const G4double P10[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.283819e-07,
-7.765990e-07,1.754155e-06,3.420430e-06,6.607329e-06,1.324941e-05,2.782040e-05,6.046430e-05,
-1.331907e-04,2.897632e-04,6.045196e-04,1.174950e-03,2.087179e-03,3.381598e-03,5.060191e-03,
-7.118943e-03,9.570755e-03,1.245202e-02,1.582161e-02,1.975854e-02,2.435970e-02,2.973661e-02,
-3.600931e-02,4.329446e-02,5.168438e-02,6.121832e-02,7.184951e-02,8.342000e-02,9.565929e-02,
-1.082176e-01,1.207266e-01,1.328639e-01,1.443966e-01,1.551929e-01,1.652103e-01,1.744709e-01,
-1.830362e-01,1.909891e-01,1.984219e-01,2.054289e-01,2.121037e-01,2.185384e-01,2.248245e-01,
-2.310550e-01,2.373266e-01,2.437434e-01,2.504191e-01,2.574803e-01,2.650677e-01,2.733352e-01,
-2.824425e-01,2.925383e-01,3.037299e-01,3.160413e-01,3.293712e-01,3.434732e-01,3.579873e-01,
-3.725249e-01,3.867626e-01,4.005068e-01,4.137140e-01,4.264807e-01,4.390234e-01,4.516594e-01,
-4.647653e-01,4.786698e-01,4.934691e-01,5.089000e-01,5.244803e-01,5.397990e-01,5.546715e-01,
-5.691075e-01,5.832202e-01,5.971567e-01,6.110630e-01,6.250681e-01,6.392783e-01,6.537749e-01,
-6.686149e-01,6.838333e-01,6.994497e-01,7.154739e-01,7.319115e-01,7.487683e-01,7.660517e-01,
-7.837715e-01,8.019397e-01,8.205697e-01,8.396760e-01,8.592735e-01,8.793773e-01,9.000027e-01,
-9.211652e-01,9.428799e-01,9.651625e-01,9.880287e-01,1.011494e+00,1.035576e+00,1.060290e+00,
-1.085653e+00,1.111684e+00,1.138400e+00,1.165821e+00,1.193964e+00,1.222851e+00,1.252503e+00,
-1.282939e+00,1.314184e+00,1.346258e+00,1.379187e+00,1.412994e+00,1.447705e+00,1.483345e+00,
-1.519941e+00,1.557522e+00,1.596116e+00,1.635752e+00,1.676460e+00,1.718273e+00,1.761223e+00,
-1.805343e+00,1.850668e+00,1.897234e+00,1.945076e+00,1.994234e+00,2.044746e+00,2.096652e+00,
-2.149995e+00,2.204816e+00,2.261160e+00,2.319074e+00,2.378603e+00,2.439796e+00,2.502703e+00,
-2.567376e+00,2.633867e+00,2.702233e+00,2.772528e+00,2.844812e+00,2.919145e+00,2.995588e+00,
-3.074206e+00,3.155064e+00,3.238230e+00,3.323776e+00,3.411772e+00,3.502294e+00,3.595419e+00,
-3.691226e+00,3.789797e+00,3.891216e+00,3.995572e+00,4.102954e+00,4.213454e+00,4.327169e+00,
-4.444197e+00,4.564641e+00,4.688605e+00,4.816199e+00,4.947534e+00,5.082726e+00,5.221895e+00,
-5.365163e+00,5.512657e+00,5.664510e+00,5.820856e+00,5.981835e+00,6.147591e+00,6.318273e+00,
-6.494036e+00,6.675037e+00,6.861440e+00,7.053415e+00,7.251136e+00,7.454784e+00,7.664543e+00,
-7.880607e+00,8.103173e+00,8.332447e+00,8.568639e+00,8.811968e+00,9.062659e+00,9.320945e+00,
-9.587066e+00,9.861271e+00,1.014381e+01,1.043496e+01,1.073499e+01,1.104417e+01,1.136281e+01,
-1.169119e+01,1.202964e+01,1.237847e+01,1.273802e+01,1.310862e+01,1.349063e+01,1.388442e+01
-  };
-  static const G4double P20[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.733331e-05,
-1.065910e-04,2.453685e-04,4.892572e-04,9.701734e-04,2.003481e-03,4.340178e-03,9.736092e-03,
-2.212593e-02,4.961468e-02,1.065569e-01,2.128855e-01,3.880845e-01,6.442424e-01,9.865527e-01,
-1.419220e+00,1.950269e+00,2.593461e+00,3.368727e+00,4.302302e+00,5.426842e+00,6.781267e+00,
-8.409767e+00,1.035907e+01,1.267273e+01,1.538236e+01,1.849628e+01,2.198896e+01,2.579646e+01,
-2.982262e+01,3.395557e+01,3.808836e+01,4.213540e+01,4.604002e+01,4.977393e+01,5.333143e+01,
-5.672268e+01,5.996799e+01,6.309401e+01,6.613132e+01,6.911336e+01,7.207629e+01,7.505958e+01,
-7.810711e+01,8.126885e+01,8.460302e+01,8.817811e+01,9.207556e+01,9.639190e+01,1.012394e+02,
-1.067429e+02,1.130306e+02,1.202141e+02,1.283582e+02,1.374455e+02,1.473530e+02,1.578615e+02,
-1.687086e+02,1.796566e+02,1.905484e+02,2.013353e+02,2.120818e+02,2.229636e+02,2.342629e+02,
-2.463419e+02,2.595499e+02,2.740378e+02,2.896053e+02,3.058034e+02,3.222162e+02,3.386384e+02,
-3.550669e+02,3.716193e+02,3.884660e+02,4.057911e+02,4.237738e+02,4.425787e+02,4.623501e+02,
-4.832092e+02,5.052552e+02,5.285702e+02,5.532261e+02,5.792925e+02,6.068416e+02,6.359524e+02,
-6.667118e+02,6.992147e+02,7.335640e+02,7.698696e+02,8.082482e+02,8.488235e+02,8.917255e+02,
-9.370917e+02,9.850666e+02,1.035803e+03,1.089461e+03,1.146211e+03,1.206233e+03,1.269717e+03,
-1.336863e+03,1.407884e+03,1.483006e+03,1.562468e+03,1.646521e+03,1.735436e+03,1.829495e+03,
-1.929001e+03,2.034272e+03,2.145649e+03,2.263490e+03,2.388177e+03,2.520114e+03,2.659730e+03,
-2.807480e+03,2.963847e+03,3.129341e+03,3.304506e+03,3.489917e+03,3.686187e+03,3.893961e+03,
-4.113928e+03,4.346817e+03,4.593401e+03,4.854501e+03,5.130987e+03,5.423784e+03,5.733871e+03,
-6.062289e+03,6.410140e+03,6.778595e+03,7.168898e+03,7.582366e+03,8.020398e+03,8.484480e+03,
-8.976188e+03,9.497193e+03,1.004927e+04,1.063431e+04,1.125430e+04,1.191137e+04,1.260778e+04,
-1.334591e+04,1.412831e+04,1.495767e+04,1.583685e+04,1.676890e+04,1.775703e+04,1.880469e+04,
-1.991550e+04,2.109332e+04,2.234227e+04,2.366670e+04,2.507122e+04,2.656077e+04,2.814056e+04,
-2.981612e+04,3.159335e+04,3.347850e+04,3.547822e+04,3.759955e+04,3.985000e+04,4.223753e+04,
-4.477059e+04,4.745818e+04,5.030985e+04,5.333573e+04,5.654661e+04,5.995394e+04,6.356990e+04,
-6.740741e+04,7.148022e+04,7.580293e+04,8.039107e+04,8.526113e+04,9.043063e+04,9.591822e+04,
-1.017437e+05,1.079281e+05,1.144938e+05,1.214646e+05,1.288658e+05,1.367242e+05,1.450685e+05,
-1.539289e+05,1.633378e+05,1.733295e+05,1.839405e+05,1.952096e+05,2.071781e+05,2.198898e+05,
-2.333914e+05,2.477325e+05,2.629658e+05,2.791474e+05,2.963371e+05,3.145981e+05,3.339980e+05
-  };
-  static const G4double P01[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,2.954211e-05,9.596085e-05,1.664204e-04,2.410445e-04,
-3.199604e-04,4.032996e-04,4.911973e-04,5.837930e-04,6.812306e-04,7.836580e-04,8.913164e-04,
-1.004812e-03,1.124386e-03,1.250223e-03,1.382516e-03,1.521462e-03,1.667264e-03,1.820132e-03,
-1.980284e-03,2.147940e-03,2.320852e-03,2.496690e-03,2.675545e-03,2.857507e-03,3.042673e-03,
-3.231140e-03,3.423010e-03,3.617256e-03,3.809214e-03,3.998293e-03,4.184404e-03,4.367457e-03,
-4.547357e-03,4.723746e-03,4.895195e-03,5.061371e-03,5.222113e-03,5.377254e-03,5.526693e-03,
-5.670813e-03,5.809570e-03,5.942803e-03,6.070341e-03,6.192646e-03,6.310189e-03,6.422827e-03,
-6.530413e-03,6.633483e-03,6.732384e-03,6.826989e-03,6.917342e-03,7.004039e-03,7.087050e-03,
-7.166336e-03,7.242378e-03,7.315204e-03,7.384814e-03,7.451592e-03,7.515520e-03,7.576720e-03,
-7.635427e-03,7.691607e-03,7.745512e-03,7.797147e-03,7.846671e-03,7.894156e-03,7.939695e-03,
-7.983384e-03,8.025299e-03,8.065520e-03,8.104132e-03,8.141187e-03,8.176782e-03,8.210952e-03,
-8.243782e-03,8.275321e-03,8.305622e-03,8.334750e-03,8.362747e-03,8.389662e-03,8.415545e-03,
-8.440441e-03,8.464389e-03,8.487429e-03,8.509600e-03,8.530939e-03,8.551482e-03,8.571260e-03,
-8.590305e-03,8.608648e-03,8.626317e-03,8.643340e-03,8.659743e-03,8.675552e-03,8.690789e-03,
-8.705479e-03,8.719642e-03,8.733300e-03,8.746472e-03,8.759179e-03,8.771437e-03,8.783264e-03,
-8.794677e-03,8.805692e-03,8.816325e-03,8.826589e-03,8.836500e-03,8.846069e-03,8.855311e-03,
-8.864237e-03,8.872859e-03,8.881188e-03,8.889236e-03,8.897012e-03,8.904527e-03,8.911790e-03,
-8.918810e-03,8.925597e-03,8.932158e-03,8.938501e-03,8.944635e-03,8.950567e-03,8.956303e-03,
-8.961852e-03,8.967219e-03,8.972411e-03,8.977434e-03,8.982294e-03,8.986998e-03,8.991551e-03,
-8.995958e-03,9.000224e-03,9.004354e-03,9.008353e-03,9.012227e-03,9.015984e-03,9.019633e-03,
-9.023195e-03,9.026706e-03,9.030244e-03,9.033965e-03,9.038176e-03,9.043389e-03,9.050276e-03,
-9.059416e-03,9.071006e-03,9.084867e-03,9.100704e-03,9.118316e-03,9.137649e-03,9.158778e-03,
-9.181864e-03,9.207136e-03,9.234874e-03,9.265398e-03,9.299061e-03,9.336228e-03,9.377254e-03,
-9.422441e-03,9.471977e-03,9.525862e-03,9.583820e-03,9.645241e-03,9.709165e-03,9.774343e-03,
-9.839376e-03,9.902903e-03,9.963776e-03,1.002117e-02,1.007462e-02,1.012399e-02,1.016939e-02,
-1.021107e-02,1.024941e-02,1.028482e-02,1.031771e-02,1.034850e-02,1.037759e-02,1.040535e-02,
-1.043213e-02,1.045828e-02,1.048413e-02,1.051000e-02,1.053619e-02,1.056302e-02,1.059074e-02,
-1.061960e-02,1.064973e-02,1.068119e-02,1.071387e-02,1.074750e-02,1.078164e-02,1.081576e-02,
-1.084929e-02,1.088177e-02,1.091287e-02,1.094245e-02,1.097052e-02,1.099725e-02,1.102293e-02,
-1.104790e-02,1.107250e-02,1.109694e-02,1.112120e-02,1.114507e-02,1.116831e-02,1.119086e-02,
-1.121276e-02,1.123411e-02,1.125504e-02,1.127562e-02,1.129594e-02,1.131605e-02,1.133598e-02,
-1.135576e-02,1.137542e-02,1.139497e-02,1.141444e-02,1.143383e-02,1.145315e-02,1.147240e-02,
-1.149159e-02,1.151073e-02,1.152981e-02,1.154882e-02,1.156778e-02,1.158668e-02,1.160552e-02,
-1.162429e-02,1.164299e-02,1.166162e-02,1.168018e-02,1.169867e-02,1.171708e-02,1.173542e-02,
-1.175368e-02,1.177187e-02,1.178998e-02,1.180802e-02,1.182597e-02,1.184385e-02,1.186166e-02,
-1.187939e-02,1.189704e-02,1.191463e-02,1.193214e-02,1.194957e-02,1.196694e-02,1.198424e-02,
-1.200146e-02,1.201862e-02,1.203572e-02,1.205275e-02,1.206972e-02,1.208662e-02,1.210346e-02,
-1.212025e-02,1.213697e-02,1.215364e-02,1.217025e-02,1.218681e-02,1.220331e-02,1.221976e-02,
-1.223616e-02,1.225251e-02,1.226881e-02,1.228506e-02,1.230127e-02,1.231743e-02,1.233355e-02,
-1.234962e-02,1.236566e-02,1.238165e-02,1.239760e-02,1.241351e-02,1.242939e-02,1.244523e-02,
-1.246103e-02,1.247679e-02,1.249253e-02,1.250823e-02,1.252390e-02,1.253953e-02,1.255514e-02,
-1.257072e-02,1.258627e-02,1.260179e-02,1.261728e-02,1.263275e-02,1.264819e-02,1.266361e-02,
-1.267901e-02,1.269438e-02,1.270973e-02,1.272506e-02,1.274037e-02,1.275566e-02,1.277093e-02,
-1.278618e-02,1.280141e-02,1.281663e-02,1.283183e-02,1.284702e-02,1.286219e-02,1.287735e-02,
-1.289249e-02,1.290763e-02,1.292275e-02,1.293786e-02,1.295296e-02,1.296804e-02,1.298312e-02,
-1.299819e-02,1.301326e-02,1.302831e-02,1.304336e-02,1.305840e-02,1.307344e-02,1.308847e-02,
-1.310350e-02,1.311853e-02,1.313355e-02,1.314857e-02,1.316358e-02,1.317860e-02,1.319362e-02,
-1.320863e-02,1.322365e-02,1.323866e-02,1.325368e-02,1.326870e-02,1.328372e-02,1.329875e-02
-  };
-  static const G4double P11[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,5.142599e-05,1.703905e-04,3.015318e-04,4.458151e-04,
-6.042723e-04,7.780058e-04,9.681932e-04,1.176093e-03,1.403047e-03,1.650491e-03,1.920179e-03,
-2.214927e-03,2.536789e-03,2.887800e-03,3.270133e-03,3.686105e-03,4.138189e-03,4.629026e-03,
-5.161429e-03,5.738401e-03,6.354262e-03,7.002399e-03,7.684563e-03,8.402602e-03,9.158473e-03,
-9.954245e-03,1.079211e-02,1.166922e-02,1.256544e-02,1.347811e-02,1.440680e-02,1.535097e-02,
-1.631002e-02,1.728180e-02,1.825789e-02,1.923543e-02,2.021240e-02,2.118654e-02,2.215588e-02,
-2.312152e-02,2.408180e-02,2.503409e-02,2.597551e-02,2.690781e-02,2.783303e-02,2.874848e-02,
-2.965126e-02,3.054421e-02,3.142876e-02,3.230222e-02,3.316333e-02,3.401622e-02,3.485909e-02,
-3.568998e-02,3.651243e-02,3.732532e-02,3.812714e-02,3.892091e-02,3.970501e-02,4.047958e-02,
-4.124621e-02,4.200316e-02,4.275250e-02,4.349304e-02,4.422580e-02,4.495060e-02,4.566768e-02,
-4.637734e-02,4.707965e-02,4.777482e-02,4.846319e-02,4.914460e-02,4.981971e-02,5.048815e-02,
-5.115054e-02,5.180682e-02,5.245710e-02,5.310179e-02,5.374084e-02,5.437439e-02,5.500269e-02,
-5.562592e-02,5.624410e-02,5.685739e-02,5.746597e-02,5.806996e-02,5.866950e-02,5.926469e-02,
-5.985567e-02,6.044255e-02,6.102544e-02,6.160445e-02,6.217970e-02,6.275130e-02,6.331935e-02,
-6.388395e-02,6.444520e-02,6.500318e-02,6.555801e-02,6.610977e-02,6.665854e-02,6.720441e-02,
-6.774747e-02,6.828779e-02,6.882546e-02,6.936055e-02,6.989314e-02,7.042330e-02,7.095109e-02,
-7.147659e-02,7.199987e-02,7.252099e-02,7.304001e-02,7.355699e-02,7.407199e-02,7.458508e-02,
-7.509630e-02,7.560571e-02,7.611336e-02,7.661930e-02,7.712359e-02,7.762628e-02,7.812740e-02,
-7.862701e-02,7.912515e-02,7.962186e-02,8.011718e-02,8.061117e-02,8.110391e-02,8.159563e-02,
-8.208616e-02,8.257558e-02,8.306395e-02,8.355139e-02,8.403811e-02,8.452456e-02,8.501170e-02,
-8.550172e-02,8.599961e-02,8.651664e-02,8.707738e-02,8.773149e-02,8.856633e-02,8.970318e-02,
-9.125803e-02,9.328999e-02,9.579442e-02,9.874335e-02,1.021230e-01,1.059470e-01,1.102541e-01,
-1.151048e-01,1.205775e-01,1.267685e-01,1.337904e-01,1.417717e-01,1.508542e-01,1.611870e-01,
-1.729166e-01,1.861694e-01,2.010268e-01,2.174967e-01,2.354851e-01,2.547793e-01,2.750538e-01,
-2.959020e-01,3.168904e-01,3.376171e-01,3.577581e-01,3.770900e-01,3.954917e-01,4.129288e-01,
-4.294320e-01,4.450769e-01,4.599676e-01,4.742255e-01,4.879821e-01,5.013750e-01,5.145470e-01,
-5.276464e-01,5.408286e-01,5.542584e-01,5.681099e-01,5.825682e-01,5.978263e-01,6.140796e-01,
-6.315125e-01,6.502781e-01,6.704690e-01,6.920855e-01,7.150085e-01,7.389925e-01,7.636899e-01,
-7.887092e-01,8.136834e-01,8.383295e-01,8.624834e-01,8.861115e-01,9.093041e-01,9.322622e-01,
-9.552702e-01,9.786340e-01,1.002560e+00,1.027034e+00,1.051840e+00,1.076745e+00,1.101644e+00,
-1.126566e+00,1.151612e+00,1.176902e+00,1.202547e+00,1.228636e+00,1.255240e+00,1.282420e+00,
-1.310225e+00,1.338704e+00,1.367897e+00,1.397846e+00,1.428588e+00,1.460157e+00,1.492584e+00,
-1.525899e+00,1.560130e+00,1.595301e+00,1.631438e+00,1.668565e+00,1.706703e+00,1.745877e+00,
-1.786109e+00,1.827424e+00,1.869844e+00,1.913396e+00,1.958105e+00,2.003998e+00,2.051103e+00,
-2.099449e+00,2.149066e+00,2.199987e+00,2.252243e+00,2.305870e+00,2.360904e+00,2.417381e+00,
-2.475340e+00,2.534822e+00,2.595869e+00,2.658523e+00,2.722829e+00,2.788834e+00,2.856587e+00,
-2.926136e+00,2.997533e+00,3.070832e+00,3.146088e+00,3.223356e+00,3.302697e+00,3.384170e+00,
-3.467838e+00,3.553766e+00,3.642020e+00,3.732669e+00,3.825784e+00,3.921439e+00,4.019708e+00,
-4.120669e+00,4.224403e+00,4.330993e+00,4.440524e+00,4.553084e+00,4.668764e+00,4.787659e+00,
-4.909864e+00,5.035479e+00,5.164607e+00,5.297355e+00,5.433831e+00,5.574149e+00,5.718425e+00,
-5.866778e+00,6.019333e+00,6.176218e+00,6.337563e+00,6.503506e+00,6.674186e+00,6.849749e+00,
-7.030342e+00,7.216120e+00,7.407242e+00,7.603871e+00,7.806178e+00,8.014335e+00,8.228524e+00,
-8.448929e+00,8.675743e+00,8.909163e+00,9.149393e+00,9.396644e+00,9.651133e+00,9.913084e+00,
-1.018273e+01,1.046031e+01,1.074606e+01,1.104026e+01,1.134314e+01,1.165500e+01,1.197610e+01,
-1.230674e+01,1.264721e+01,1.299783e+01,1.335890e+01,1.373077e+01,1.411376e+01,1.450823e+01,
-1.491454e+01,1.533306e+01,1.576417e+01,1.620828e+01,1.666579e+01,1.713713e+01,1.762273e+01,
-1.812306e+01,1.863856e+01,1.916973e+01,1.971706e+01,2.028107e+01,2.086229e+01,2.146127e+01,
-2.207856e+01,2.271477e+01,2.337048e+01,2.404633e+01,2.474296e+01,2.546103e+01,2.620123e+01
-  };
-  static const G4double P21[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,8.952320e-05,3.026305e-04,5.467439e-04,8.257448e-04,
-1.143952e-03,1.506169e-03,1.917732e-03,2.384568e-03,2.913257e-03,3.511097e-03,4.186748e-03,
-4.952288e-03,5.818752e-03,6.797967e-03,7.903042e-03,9.148496e-03,1.055041e-02,1.212656e-02,
-1.389665e-02,1.588243e-02,1.807616e-02,2.046542e-02,2.306750e-02,2.590121e-02,2.898706e-02,
-3.234740e-02,3.600656e-02,3.996753e-02,4.415218e-02,4.855802e-02,5.319252e-02,5.806289e-02,
-6.317608e-02,6.853047e-02,7.408791e-02,7.983893e-02,8.577731e-02,9.189460e-02,9.818275e-02,
-1.046534e-01,1.112996e-01,1.181068e-01,1.250565e-01,1.321638e-01,1.394471e-01,1.468879e-01,
-1.544640e-01,1.622007e-01,1.701127e-01,1.781777e-01,1.863853e-01,1.947763e-01,2.033353e-01,
-2.120436e-01,2.209398e-01,2.300138e-01,2.392506e-01,2.486866e-01,2.583048e-01,2.681087e-01,
-2.781207e-01,2.883204e-01,2.987380e-01,3.093594e-01,3.202022e-01,3.312664e-01,3.425587e-01,
-3.540870e-01,3.658557e-01,3.778718e-01,3.901450e-01,4.026762e-01,4.154819e-01,4.285591e-01,
-4.419246e-01,4.555823e-01,4.695390e-01,4.838088e-01,4.983965e-01,5.133109e-01,5.285640e-01,
-5.441662e-01,5.601251e-01,5.764518e-01,5.931578e-01,6.102545e-01,6.277536e-01,6.456668e-01,
-6.640062e-01,6.827845e-01,7.020148e-01,7.217106e-01,7.418860e-01,7.625554e-01,7.837337e-01,
-8.054363e-01,8.276787e-01,8.504769e-01,8.738478e-01,8.978095e-01,9.223790e-01,9.475746e-01,
-9.734160e-01,9.999218e-01,1.027113e+00,1.055010e+00,1.083634e+00,1.113008e+00,1.143153e+00,
-1.174094e+00,1.205855e+00,1.238460e+00,1.271935e+00,1.306308e+00,1.341604e+00,1.377853e+00,
-1.415083e+00,1.453324e+00,1.492606e+00,1.532963e+00,1.574426e+00,1.617029e+00,1.660807e+00,
-1.705796e+00,1.752032e+00,1.799555e+00,1.848402e+00,1.898615e+00,1.950243e+00,2.003346e+00,
-2.057951e+00,2.114105e+00,2.171862e+00,2.231280e+00,2.292433e+00,2.355430e+00,2.420453e+00,
-2.487871e+00,2.558479e+00,2.634058e+00,2.718555e+00,2.820170e+00,2.953872e+00,3.141548e+00,
-3.406090e+00,3.762360e+00,4.214883e+00,4.764020e+00,5.412646e+00,6.169038e+00,7.047144e+00,
-8.066375e+00,9.251616e+00,1.063353e+01,1.224899e+01,1.414150e+01,1.636113e+01,1.896376e+01,
-2.200875e+01,2.555457e+01,2.965149e+01,3.433211e+01,3.960073e+01,4.542475e+01,5.173186e+01,
-5.841585e+01,6.535063e+01,7.240850e+01,7.947682e+01,8.646893e+01,9.332839e+01,1.000274e+02,
-1.065618e+02,1.129463e+02,1.192092e+02,1.253898e+02,1.315359e+02,1.377029e+02,1.439541e+02,
-1.503616e+02,1.570072e+02,1.639851e+02,1.714029e+02,1.793829e+02,1.880626e+02,1.975917e+02,
-2.081256e+02,2.198120e+02,2.327710e+02,2.470695e+02,2.626961e+02,2.795460e+02,2.974276e+02,
-3.160962e+02,3.353012e+02,3.548335e+02,3.745617e+02,3.944512e+02,4.145723e+02,4.351002e+02,
-4.563033e+02,4.784941e+02,5.019153e+02,5.266048e+02,5.523951e+02,5.790813e+02,6.065771e+02,
-6.349401e+02,6.643178e+02,6.948910e+02,7.268416e+02,7.603404e+02,7.955471e+02,8.326159e+02,
-8.716998e+02,9.129543e+02,9.565398e+02,1.002622e+03,1.051371e+03,1.102964e+03,1.157582e+03,
-1.215413e+03,1.276652e+03,1.341501e+03,1.410169e+03,1.482875e+03,1.559849e+03,1.641333e+03,
-1.727580e+03,1.818857e+03,1.915447e+03,2.017647e+03,2.125773e+03,2.240159e+03,2.361159e+03,
-2.489147e+03,2.624520e+03,2.767701e+03,2.919136e+03,3.079298e+03,3.248691e+03,3.427846e+03,
-3.617331e+03,3.817744e+03,4.029722e+03,4.253941e+03,4.491115e+03,4.742005e+03,5.007417e+03,
-5.288205e+03,5.585276e+03,5.899591e+03,6.232171e+03,6.584097e+03,6.956519e+03,7.350654e+03,
-7.767793e+03,8.209307e+03,8.676651e+03,9.171366e+03,9.695090e+03,1.024956e+04,1.083661e+04,
-1.145821e+04,1.211642e+04,1.281345e+04,1.355162e+04,1.433343e+04,1.516149e+04,1.603861e+04,
-1.696773e+04,1.795200e+04,1.899477e+04,2.009956e+04,2.127014e+04,2.251050e+04,2.382486e+04,
-2.521774e+04,2.669389e+04,2.825838e+04,2.991659e+04,3.167424e+04,3.353738e+04,3.551246e+04,
-3.760630e+04,3.982616e+04,4.217976e+04,4.467528e+04,4.732140e+04,5.012737e+04,5.310298e+04,
-5.625866e+04,5.960545e+04,6.315512e+04,6.692013e+04,7.091374e+04,7.515004e+04,7.964399e+04,
-8.441148e+04,8.946939e+04,9.483567e+04,1.005294e+05,1.065708e+05,1.129813e+05,1.197840e+05,
-1.270030e+05,1.346642e+05,1.427950e+05,1.514246e+05,1.605840e+05,1.703061e+05,1.806259e+05,
-1.915807e+05,2.032100e+05,2.155559e+05,2.286629e+05,2.425788e+05,2.573538e+05,2.730419e+05,
-2.896999e+05,3.073887e+05,3.261726e+05,3.461204e+05,3.673050e+05,3.898039e+05,4.136996e+05,
-4.390797e+05,4.660376e+05,4.946723e+05,5.250894e+05,5.574009e+05,5.917262e+05,6.281921e+05
-  };
-  static const G4double P02[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,4.420900e-05,1.361817e-04,
-2.266269e-04,3.153714e-04,4.017279e-04,4.855357e-04,5.667169e-04,6.451910e-04,7.209150e-04,
-7.941235e-04,8.648089e-04,9.328938e-04,9.982988e-04,1.061300e-03,1.122181e-03,1.180878e-03,
-1.237327e-03,1.291871e-03,1.344747e-03,1.395901e-03,1.445399e-03,1.493678e-03,1.540753e-03,
-1.586647e-03,1.631791e-03,1.676264e-03,1.720139e-03,1.763868e-03,1.807513e-03,1.851337e-03,
-1.895742e-03,1.940822e-03,1.987146e-03,2.034882e-03,2.084594e-03,2.136652e-03,2.191607e-03,
-2.250027e-03,2.312541e-03,2.379824e-03,2.452669e-03,2.531743e-03,2.617905e-03,2.711676e-03,
-2.813598e-03,2.923687e-03,3.041745e-03,3.166730e-03,3.297379e-03,3.432040e-03,3.568683e-03,
-3.705488e-03,3.840963e-03,3.973777e-03,4.102940e-03,4.227769e-03,4.347808e-03,4.462773e-03,
-4.572513e-03,4.676977e-03,4.776189e-03,4.870234e-03,4.959240e-03,5.043366e-03,5.122795e-03,
-5.197723e-03,5.268357e-03,5.334907e-03,5.397586e-03,5.456607e-03,5.512171e-03,5.564479e-03,
-5.613724e-03,5.660086e-03,5.703745e-03,5.744862e-03,5.783597e-03,5.820098e-03,5.854504e-03,
-5.886946e-03,5.917549e-03,5.946428e-03,5.973693e-03,5.999444e-03,6.023779e-03,6.046787e-03,
-6.068552e-03,6.089154e-03,6.108666e-03,6.127159e-03,6.144698e-03,6.161344e-03,6.177157e-03,
-6.192190e-03,6.206496e-03,6.220122e-03,6.233117e-03,6.245523e-03,6.257148e-03,6.267814e-03,
-6.278332e-03,6.288730e-03,6.299041e-03,6.309306e-03,6.319568e-03,6.329890e-03,6.340346e-03,
-6.351039e-03,6.362103e-03,6.373708e-03,6.386067e-03,6.399432e-03,6.414085e-03,6.430316e-03,
-6.448411e-03,6.468623e-03,6.491167e-03,6.516222e-03,6.543944e-03,6.574484e-03,6.608010e-03,
-6.644722e-03,6.684861e-03,6.728714e-03,6.776610e-03,6.828910e-03,6.885984e-03,6.948178e-03,
-7.015759e-03,7.088847e-03,7.167329e-03,7.250781e-03,7.338407e-03,7.429041e-03,7.521215e-03,
-7.613307e-03,7.703728e-03,7.791106e-03,7.874414e-03,7.953011e-03,8.026631e-03,8.095312e-03,
-8.159311e-03,8.219026e-03,8.274939e-03,8.327565e-03,8.377428e-03,8.425044e-03,8.470912e-03,
-8.515509e-03,8.559288e-03,8.602682e-03,8.646088e-03,8.689867e-03,8.734324e-03,8.779691e-03,
-8.826098e-03,8.873546e-03,8.921888e-03,8.970825e-03,9.019927e-03,9.068684e-03,9.116571e-03,
-9.163124e-03,9.207992e-03,9.250957e-03,9.291937e-03,9.330961e-03,9.368142e-03,9.403647e-03,
-9.437672e-03,9.470422e-03,9.502096e-03,9.532883e-03,9.562954e-03,9.592457e-03,9.621524e-03,
-9.650264e-03,9.678770e-03,9.707115e-03,9.735359e-03,9.763547e-03,9.791714e-03,9.819881e-03,
-9.848065e-03,9.876273e-03,9.904506e-03,9.932763e-03,9.961037e-03,9.989320e-03,1.001760e-02,
-1.004587e-02,1.007412e-02,1.010233e-02,1.013050e-02,1.015861e-02,1.018666e-02,1.021463e-02,
-1.024251e-02,1.027031e-02,1.029800e-02,1.032560e-02,1.035308e-02,1.038046e-02,1.040771e-02,
-1.043486e-02,1.046188e-02,1.048878e-02,1.051555e-02,1.054221e-02,1.056874e-02,1.059515e-02,
-1.062144e-02,1.064761e-02,1.067366e-02,1.069959e-02,1.072540e-02,1.075110e-02,1.077668e-02,
-1.080215e-02,1.082752e-02,1.085277e-02,1.087792e-02,1.090296e-02,1.092791e-02,1.095275e-02,
-1.097749e-02,1.100214e-02,1.102670e-02,1.105116e-02,1.107554e-02,1.109983e-02,1.112403e-02,
-1.114815e-02,1.117219e-02,1.119615e-02,1.122003e-02,1.124383e-02,1.126757e-02,1.129123e-02,
-1.131482e-02,1.133834e-02,1.136179e-02,1.138518e-02,1.140851e-02,1.143178e-02,1.145498e-02,
-1.147813e-02,1.150122e-02,1.152426e-02,1.154724e-02,1.157017e-02,1.159305e-02,1.161588e-02,
-1.163867e-02,1.166140e-02,1.168409e-02,1.170674e-02,1.172935e-02,1.175192e-02,1.177444e-02,
-1.179693e-02,1.181938e-02,1.184180e-02,1.186418e-02,1.188652e-02,1.190884e-02,1.193113e-02,
-1.195338e-02,1.197561e-02,1.199781e-02,1.201998e-02,1.204213e-02,1.206425e-02,1.208635e-02,
-1.210843e-02,1.213049e-02,1.215253e-02,1.217455e-02,1.219655e-02,1.221854e-02,1.224051e-02,
-1.226246e-02,1.228440e-02,1.230633e-02,1.232825e-02,1.235016e-02,1.237205e-02,1.239394e-02,
-1.241582e-02,1.243769e-02,1.245956e-02,1.248142e-02,1.250328e-02,1.252513e-02,1.254699e-02,
-1.256884e-02,1.259069e-02,1.261254e-02,1.263439e-02,1.265624e-02,1.267809e-02,1.269995e-02
-};
-  static const G4double P12[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,2.225283e-04,6.969163e-04,
-1.179082e-03,1.668007e-03,2.159647e-03,2.652656e-03,3.146065e-03,3.638813e-03,4.130000e-03,
-4.620522e-03,5.109707e-03,5.596353e-03,6.079144e-03,6.559396e-03,7.038618e-03,7.515675e-03,
-7.989358e-03,8.461919e-03,8.934839e-03,9.407147e-03,9.878911e-03,1.035387e-02,1.083189e-02,
-1.131287e-02,1.180118e-02,1.229762e-02,1.280305e-02,1.332290e-02,1.385829e-02,1.441300e-02,
-1.499297e-02,1.560045e-02,1.624454e-02,1.692928e-02,1.766499e-02,1.845978e-02,1.932536e-02,
-2.027454e-02,2.132233e-02,2.248557e-02,2.378467e-02,2.523919e-02,2.687393e-02,2.870892e-02,
-3.076594e-02,3.305745e-02,3.559175e-02,3.835869e-02,4.134135e-02,4.451165e-02,4.782902e-02,
-5.125391e-02,5.475126e-02,5.828676e-02,6.183222e-02,6.536541e-02,6.886876e-02,7.232843e-02,
-7.573356e-02,7.907571e-02,8.234849e-02,8.554717e-02,8.866842e-02,9.171009e-02,9.467100e-02,
-9.755076e-02,1.003496e-01,1.030683e-01,1.057082e-01,1.082710e-01,1.107584e-01,1.131724e-01,
-1.155154e-01,1.177894e-01,1.199970e-01,1.221403e-01,1.242219e-01,1.262440e-01,1.282088e-01,
-1.301187e-01,1.319759e-01,1.337825e-01,1.355408e-01,1.372527e-01,1.389203e-01,1.405455e-01,
-1.421304e-01,1.436768e-01,1.451865e-01,1.466613e-01,1.481032e-01,1.495139e-01,1.508951e-01,
-1.522486e-01,1.535763e-01,1.548799e-01,1.561612e-01,1.574222e-01,1.586397e-01,1.597917e-01,
-1.609624e-01,1.621554e-01,1.633749e-01,1.646261e-01,1.659155e-01,1.672522e-01,1.686479e-01,
-1.701192e-01,1.716882e-01,1.733847e-01,1.752469e-01,1.773226e-01,1.796681e-01,1.823462e-01,
-1.854234e-01,1.889661e-01,1.930388e-01,1.977039e-01,2.030239e-01,2.090644e-01,2.158990e-01,
-2.236126e-01,2.323048e-01,2.420924e-01,2.531103e-01,2.655101e-01,2.794568e-01,2.951204e-01,
-3.126625e-01,3.322153e-01,3.538544e-01,3.775683e-01,4.032308e-01,4.305865e-01,4.592584e-01,
-4.887811e-01,5.186554e-01,5.484082e-01,5.776430e-01,6.060694e-01,6.335111e-01,6.598960e-01,
-6.852353e-01,7.096034e-01,7.331188e-01,7.559302e-01,7.782067e-01,8.001315e-01,8.218986e-01,
-8.437111e-01,8.657805e-01,8.883258e-01,9.115688e-01,9.357297e-01,9.610168e-01,9.876119e-01,
-1.015650e+00,1.045194e+00,1.076217e+00,1.108583e+00,1.142051e+00,1.176301e+00,1.210968e+00,
-1.245702e+00,1.280202e+00,1.314250e+00,1.347718e+00,1.380565e+00,1.412820e+00,1.444563e+00,
-1.475916e+00,1.507016e+00,1.538017e+00,1.569073e+00,1.600334e+00,1.631945e+00,1.664042e+00,
-1.696751e+00,1.730185e+00,1.764449e+00,1.799637e+00,1.835830e+00,1.873102e+00,1.911516e+00,
-1.951130e+00,1.991990e+00,2.034139e+00,2.077614e+00,2.122447e+00,2.168668e+00,2.216301e+00,
-2.265373e+00,2.315904e+00,2.367919e+00,2.421439e+00,2.476486e+00,2.533084e+00,2.591258e+00,
-2.651032e+00,2.712435e+00,2.775494e+00,2.840241e+00,2.906709e+00,2.974931e+00,3.044946e+00,
-3.116791e+00,3.190508e+00,3.266141e+00,3.343734e+00,3.423336e+00,3.504997e+00,3.588769e+00,
-3.674707e+00,3.762868e+00,3.853312e+00,3.946099e+00,4.041295e+00,4.138965e+00,4.239180e+00,
-4.342009e+00,4.447529e+00,4.555814e+00,4.666945e+00,4.781004e+00,4.898075e+00,5.018245e+00,
-5.141606e+00,5.268252e+00,5.398277e+00,5.531782e+00,5.668870e+00,5.809647e+00,5.954223e+00,
-6.102709e+00,6.255223e+00,6.411885e+00,6.572819e+00,6.738153e+00,6.908018e+00,7.082551e+00,
-7.261893e+00,7.446187e+00,7.635583e+00,7.830235e+00,8.030303e+00,8.235949e+00,8.447343e+00,
-8.664658e+00,8.888076e+00,9.117781e+00,9.353964e+00,9.596824e+00,9.846563e+00,1.010339e+01,
-1.036753e+01,1.063919e+01,1.091862e+01,1.120604e+01,1.150170e+01,1.180587e+01,1.211879e+01,
-1.244074e+01,1.277199e+01,1.311284e+01,1.346358e+01,1.382452e+01,1.419596e+01,1.457824e+01,
-1.497170e+01,1.537667e+01,1.579352e+01,1.622262e+01,1.666435e+01,1.711910e+01,1.758728e+01,
-1.806931e+01,1.856562e+01,1.907666e+01,1.960289e+01,2.014478e+01,2.070283e+01,2.127756e+01,
-2.186947e+01,2.247911e+01,2.310704e+01,2.375385e+01,2.442012e+01,2.510646e+01,2.581353e+01,
-2.654196e+01,2.729244e+01,2.806568e+01,2.886238e+01,2.968330e+01,3.052921e+01,3.140091e+01,
-3.229921e+01,3.322497e+01,3.417906e+01,3.516238e+01,3.617589e+01,3.722053e+01,3.829731e+01
-  };
-  static const G4double P22[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.120131e-03,3.567208e-03,
-6.137882e-03,8.831785e-03,1.163101e-02,1.453145e-02,1.753060e-02,2.062489e-02,2.381127e-02,
-2.709822e-02,3.048398e-02,3.396264e-02,3.752670e-02,4.118793e-02,4.496040e-02,4.883801e-02,
-5.281322e-02,5.690771e-02,6.113789e-02,6.549907e-02,6.999581e-02,7.466886e-02,7.952312e-02,
-8.456445e-02,8.984669e-02,9.538880e-02,1.012118e-01,1.073922e-01,1.139603e-01,1.209824e-01,
-1.285578e-01,1.367447e-01,1.457007e-01,1.555238e-01,1.664127e-01,1.785480e-01,1.921825e-01,
-2.076059e-01,2.251690e-01,2.452818e-01,2.684512e-01,2.952087e-01,3.262268e-01,3.621378e-01,
-4.036571e-01,4.513583e-01,5.057654e-01,5.670252e-01,6.351235e-01,7.097670e-01,7.903118e-01,
-8.760602e-01,9.663525e-01,1.060475e+00,1.157804e+00,1.257815e+00,1.360070e+00,1.464190e+00,
-1.569856e+00,1.676792e+00,1.784762e+00,1.893564e+00,2.003028e+00,2.113012e+00,2.223396e+00,
-2.334084e+00,2.444997e+00,2.556071e+00,2.667265e+00,2.778554e+00,2.889911e+00,3.001327e+00,
-3.112811e+00,3.224358e+00,3.335994e+00,3.447730e+00,3.559596e+00,3.671622e+00,3.783838e+00,
-3.896283e+00,4.009001e+00,4.122034e+00,4.235431e+00,4.349243e+00,4.463526e+00,4.578342e+00,
-4.693754e+00,4.809831e+00,4.926647e+00,5.044285e+00,5.162832e+00,5.282382e+00,5.403039e+00,
-5.524919e+00,5.648145e+00,5.772858e+00,5.899215e+00,6.027391e+00,6.154925e+00,6.279335e+00,
-6.409661e+00,6.546552e+00,6.690783e+00,6.843308e+00,7.005336e+00,7.178452e+00,7.364781e+00,
-7.567228e+00,7.789765e+00,8.037769e+00,8.318377e+00,8.640763e+00,9.016247e+00,9.458163e+00,
-9.981511e+00,1.060252e+01,1.133833e+01,1.220702e+01,1.322802e+01,1.442289e+01,1.581627e+01,
-1.743708e+01,1.931953e+01,2.150424e+01,2.403895e+01,2.697907e+01,3.038737e+01,3.433257e+01,
-3.888631e+01,4.411756e+01,5.008434e+01,5.682345e+01,6.433960e+01,7.259691e+01,8.151634e+01,
-9.098150e+01,1.008525e+02,1.109841e+02,1.212442e+02,1.315260e+02,1.417556e+02,1.518925e+02,
-1.619260e+02,1.718706e+02,1.817614e+02,1.916501e+02,2.016029e+02,2.116989e+02,2.220295e+02,
-2.326990e+02,2.438250e+02,2.555393e+02,2.679864e+02,2.813215e+02,2.957058e+02,3.112976e+02,
-3.282386e+02,3.466366e+02,3.665465e+02,3.879537e+02,4.107678e+02,4.348286e+02,4.599280e+02,
-4.858444e+02,5.123742e+02,5.393579e+02,5.666943e+02,5.943443e+02,6.223268e+02,6.507098e+02,
-6.796009e+02,7.091381e+02,7.394822e+02,7.708109e+02,8.033129e+02,8.371852e+02,8.726312e+02,
-9.098582e+02,9.490768e+02,9.904994e+02,1.034340e+03,1.080815e+03,1.130139e+03,1.182532e+03,
-1.238214e+03,1.297406e+03,1.360335e+03,1.427230e+03,1.498326e+03,1.573865e+03,1.654097e+03,
-1.739279e+03,1.829682e+03,1.925585e+03,2.027284e+03,2.135086e+03,2.249318e+03,2.370323e+03,
-2.498462e+03,2.634120e+03,2.777703e+03,2.929640e+03,3.090388e+03,3.260429e+03,3.440278e+03,
-3.630477e+03,3.831604e+03,4.044271e+03,4.269129e+03,4.506868e+03,4.758219e+03,5.023960e+03,
-5.304913e+03,5.601955e+03,5.916011e+03,6.248067e+03,6.599167e+03,6.970418e+03,7.362995e+03,
-7.778144e+03,8.217189e+03,8.681530e+03,9.172656e+03,9.692145e+03,1.024167e+04,1.082301e+04,
-1.143804e+04,1.208877e+04,1.277731e+04,1.350591e+04,1.427696e+04,1.509299e+04,1.595667e+04,
-1.687087e+04,1.783860e+04,1.886306e+04,1.994767e+04,2.109602e+04,2.231195e+04,2.359952e+04,
-2.496305e+04,2.640711e+04,2.793656e+04,2.955655e+04,3.127256e+04,3.309039e+04,3.501622e+04,
-3.705657e+04,3.921839e+04,4.150907e+04,4.393642e+04,4.650876e+04,4.923490e+04,5.212422e+04,
-5.518666e+04,5.843278e+04,6.187379e+04,6.552160e+04,6.938886e+04,7.348899e+04,7.783625e+04,
-8.244579e+04,8.733369e+04,9.251705e+04,9.801401e+04,1.038438e+05,1.100270e+05,1.165853e+05,
-1.235418e+05,1.309211e+05,1.387492e+05,1.470539e+05,1.558646e+05,1.652126e+05,1.751311e+05,
-1.856555e+05,1.968232e+05,2.086742e+05,2.212509e+05,2.345983e+05,2.487643e+05,2.637997e+05,
-2.797587e+05,2.966988e+05,3.146809e+05,3.337702e+05,3.540357e+05,3.755506e+05,3.983931e+05,
-4.226461e+05,4.483978e+05,4.757419e+05,5.047781e+05,5.356124e+05,5.683574e+05,6.031331e+05,
-6.400668e+05,6.792939e+05,7.209586e+05,7.652140e+05,8.122231e+05,8.621592e+05,9.152064e+05
-  };
-  static const G4double P03[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.409974e-04,
-3.120096e-04,5.006502e-04,7.064650e-04,9.273072e-04,1.160607e-03,1.403015e-03,1.650417e-03,
-1.899130e-03,2.146133e-03,2.388721e-03,2.624876e-03,2.853195e-03,3.072731e-03,3.282883e-03,
-3.483317e-03,3.673901e-03,3.854657e-03,4.025724e-03,4.187333e-03,4.339776e-03,4.483396e-03,
-4.618564e-03,4.745669e-03,4.865110e-03,4.977295e-03,5.082631e-03,5.181502e-03,5.274289e-03,
-5.361367e-03,5.443076e-03,5.519761e-03,5.591731e-03,5.659291e-03,5.722723e-03,5.782293e-03,
-5.838252e-03,5.890835e-03,5.940264e-03,5.986745e-03,6.030472e-03,6.071627e-03,6.110379e-03,
-6.146889e-03,6.181306e-03,6.213770e-03,6.244412e-03,6.273357e-03,6.300718e-03,6.326607e-03,
-6.351124e-03,6.374368e-03,6.396429e-03,6.417395e-03,6.437348e-03,6.456265e-03,6.474073e-03,
-6.491149e-03,6.507570e-03,6.523412e-03,6.538764e-03,6.553724e-03,6.568408e-03,6.582959e-03,
-6.597557e-03,6.612423e-03,6.627837e-03,6.644132e-03,6.661699e-03,6.680967e-03,6.702376e-03,
-6.726353e-03,6.753276e-03,6.783463e-03,6.817177e-03,6.854643e-03,6.896074e-03,6.941701e-03,
-6.991787e-03,7.046648e-03,7.106649e-03,7.172202e-03,7.243749e-03,7.321731e-03,7.406542e-03,
-7.498466e-03,7.597591e-03,7.703710e-03,7.816238e-03,7.934150e-03,8.055987e-03,8.179938e-03,
-8.304010e-03,8.426239e-03,8.544896e-03,8.658642e-03,8.766594e-03,8.868315e-03,8.963752e-03,
-9.053136e-03,9.136896e-03,9.215579e-03,9.289794e-03,9.360172e-03,9.427339e-03,9.491904e-03,
-9.554447e-03,9.615520e-03,9.675636e-03,9.735266e-03,9.794830e-03,9.854684e-03,9.915103e-03,
-9.976259e-03,1.003820e-02,1.010084e-02,1.016395e-02,1.022716e-02,1.029004e-02,1.035209e-02,
-1.041285e-02,1.047195e-02,1.052910e-02,1.058414e-02,1.063704e-02,1.068785e-02,1.073670e-02,
-1.078376e-02,1.082922e-02,1.087331e-02,1.091623e-02,1.095817e-02,1.099930e-02,1.103978e-02,
-1.107975e-02,1.111933e-02,1.115860e-02,1.119765e-02,1.123654e-02,1.127531e-02,1.131400e-02,
-1.135262e-02,1.139120e-02,1.142974e-02,1.146824e-02,1.150669e-02,1.154509e-02,1.158343e-02,
-1.162169e-02,1.165987e-02,1.169795e-02,1.173592e-02,1.177377e-02,1.181149e-02,1.184906e-02,
-1.188649e-02,1.192375e-02,1.196086e-02,1.199779e-02,1.203454e-02,1.207112e-02,1.210751e-02,
-1.214372e-02,1.217975e-02,1.221559e-02,1.225124e-02,1.228671e-02,1.232200e-02,1.235710e-02,
-1.239202e-02,1.242676e-02,1.246133e-02,1.249572e-02,1.252994e-02,1.256399e-02,1.259787e-02,
-1.263159e-02,1.266515e-02,1.269855e-02,1.273181e-02,1.276490e-02,1.279786e-02,1.283067e-02,
-1.286333e-02,1.289586e-02,1.292826e-02,1.296053e-02,1.299266e-02,1.302467e-02,1.305656e-02,
-1.308833e-02,1.311999e-02,1.315153e-02,1.318296e-02,1.321428e-02,1.324550e-02,1.327661e-02,
-1.330763e-02,1.333855e-02,1.336937e-02,1.340010e-02,1.343074e-02,1.346130e-02,1.349177e-02,
-1.352215e-02,1.355246e-02,1.358269e-02,1.361284e-02,1.364292e-02,1.367293e-02,1.370287e-02,
-1.373274e-02,1.376254e-02,1.379228e-02,1.382196e-02,1.385158e-02,1.388114e-02,1.391065e-02,
-1.394010e-02,1.396950e-02,1.399885e-02,1.402815e-02,1.405740e-02,1.408661e-02,1.411577e-02,
-1.414489e-02,1.417397e-02,1.420301e-02,1.423201e-02,1.426098e-02,1.428992e-02,1.431882e-02,
-1.434768e-02,1.437652e-02,1.440533e-02,1.443412e-02,1.446287e-02,1.449161e-02,1.452032e-02,
-1.454901e-02,1.457768e-02,1.460633e-02,1.463496e-02,1.466358e-02,1.469218e-02,1.472077e-02,
-1.474934e-02,1.477791e-02,1.480646e-02,1.483501e-02,1.486355e-02,1.489208e-02,1.492061e-02,
-1.494914e-02,1.497766e-02,1.500618e-02,1.503470e-02,1.506322e-02,1.509175e-02,1.512027e-02
-  };
-  static const G4double P13[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,2.762798e-03,
-6.214464e-03,1.014119e-02,1.455950e-02,1.944870e-02,2.477496e-02,3.048202e-02,3.648846e-02,
-4.271502e-02,4.909153e-02,5.554923e-02,6.203158e-02,6.849397e-02,7.490114e-02,8.122529e-02,
-8.744455e-02,9.354199e-02,9.950466e-02,1.053230e-01,1.109903e-01,1.165020e-01,1.218558e-01,
-1.270507e-01,1.320872e-01,1.369666e-01,1.416915e-01,1.462653e-01,1.506913e-01,1.549735e-01,
-1.591164e-01,1.631241e-01,1.670017e-01,1.707532e-01,1.743837e-01,1.778977e-01,1.812996e-01,
-1.845939e-01,1.877850e-01,1.908772e-01,1.938747e-01,1.967815e-01,1.996017e-01,2.023391e-01,
-2.049976e-01,2.075809e-01,2.100927e-01,2.125365e-01,2.149160e-01,2.172346e-01,2.194959e-01,
-2.217034e-01,2.238606e-01,2.259710e-01,2.280383e-01,2.300664e-01,2.320480e-01,2.339710e-01,
-2.358717e-01,2.377555e-01,2.396290e-01,2.415002e-01,2.433797e-01,2.452813e-01,2.472236e-01,
-2.492319e-01,2.513402e-01,2.535933e-01,2.560486e-01,2.587768e-01,2.618611e-01,2.653936e-01,
-2.694712e-01,2.741902e-01,2.796437e-01,2.859211e-01,2.931111e-01,3.013060e-01,3.106073e-01,
-3.211310e-01,3.330113e-01,3.464030e-01,3.614827e-01,3.784459e-01,3.975016e-01,4.188614e-01,
-4.427220e-01,4.692400e-01,4.984989e-01,5.304750e-01,5.650069e-01,6.017804e-01,6.403371e-01,
-6.801126e-01,7.204962e-01,7.608999e-01,8.008170e-01,8.398607e-01,8.777776e-01,9.144416e-01,
-9.498326e-01,9.840127e-01,1.017105e+00,1.049275e+00,1.080716e+00,1.111643e+00,1.142283e+00,
-1.172873e+00,1.203659e+00,1.234892e+00,1.266822e+00,1.299693e+00,1.333737e+00,1.369155e+00,
-1.406103e+00,1.444672e+00,1.484870e+00,1.526605e+00,1.569693e+00,1.613861e+00,1.658784e+00,
-1.704122e+00,1.749563e+00,1.794852e+00,1.839808e+00,1.884335e+00,1.928413e+00,1.972085e+00,
-2.015447e+00,2.058627e+00,2.101780e+00,2.145070e+00,2.188667e+00,2.232736e+00,2.277440e+00,
-2.322931e+00,2.369348e+00,2.416823e+00,2.465473e+00,2.515403e+00,2.566707e+00,2.619468e+00,
-2.673759e+00,2.729644e+00,2.787177e+00,2.846409e+00,2.907381e+00,2.970134e+00,3.034703e+00,
-3.101119e+00,3.169415e+00,3.239621e+00,3.311767e+00,3.385883e+00,3.462001e+00,3.540153e+00,
-3.620375e+00,3.702702e+00,3.787172e+00,3.873828e+00,3.962711e+00,4.053869e+00,4.147350e+00,
-4.243205e+00,4.341489e+00,4.442258e+00,4.545574e+00,4.651497e+00,4.760095e+00,4.871437e+00,
-4.985593e+00,5.102639e+00,5.222653e+00,5.345715e+00,5.471910e+00,5.601324e+00,5.734049e+00,
-5.870177e+00,6.009805e+00,6.153034e+00,6.299967e+00,6.450712e+00,6.605379e+00,6.764082e+00,
-6.926941e+00,7.094076e+00,7.265614e+00,7.441685e+00,7.622423e+00,7.807966e+00,7.998458e+00,
-8.194045e+00,8.394879e+00,8.601118e+00,8.812923e+00,9.030461e+00,9.253904e+00,9.483429e+00,
-9.719220e+00,9.961464e+00,1.021036e+01,1.046610e+01,1.072890e+01,1.099897e+01,1.127653e+01,
-1.156181e+01,1.185504e+01,1.215646e+01,1.246633e+01,1.278490e+01,1.311243e+01,1.344920e+01,
-1.379550e+01,1.415161e+01,1.451783e+01,1.489447e+01,1.528186e+01,1.568033e+01,1.609020e+01,
-1.651185e+01,1.694562e+01,1.739189e+01,1.785105e+01,1.832350e+01,1.880965e+01,1.930992e+01,
-1.982475e+01,2.035460e+01,2.089992e+01,2.146121e+01,2.203895e+01,2.263366e+01,2.324587e+01,
-2.387613e+01,2.452501e+01,2.519307e+01,2.588093e+01,2.658921e+01,2.731854e+01,2.806960e+01,
-2.884305e+01,2.963961e+01,3.046001e+01,3.130500e+01,3.217535e+01,3.307186e+01,3.399537e+01,
-3.494673e+01,3.592682e+01,3.693656e+01,3.797687e+01,3.904875e+01,4.015319e+01,4.129122e+01,
-4.246392e+01,4.367240e+01,4.491780e+01,4.620129e+01,4.752410e+01,4.888749e+01,5.029275e+01
-  };
-  static const G4double P23[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,5.413975e-02,
-1.238128e-01,2.055575e-01,3.004149e-01,4.086648e-01,5.302738e-01,6.646463e-01,8.104828e-01,
-9.663775e-01,1.131003e+00,1.302922e+00,1.480873e+00,1.663800e+00,1.850809e+00,2.041137e+00,
-2.234130e+00,2.429223e+00,2.625932e+00,2.823840e+00,3.022593e+00,3.221891e+00,3.421481e+00,
-3.621155e+00,3.820738e+00,4.020088e+00,4.219105e+00,4.417721e+00,4.615865e+00,4.813503e+00,
-5.010628e+00,5.207217e+00,5.403298e+00,5.598873e+00,5.793981e+00,5.988660e+00,6.182946e+00,
-6.376896e+00,6.570570e+00,6.764031e+00,6.957349e+00,7.150601e+00,7.343872e+00,7.537254e+00,
-7.730848e+00,7.924762e+00,8.119112e+00,8.314031e+00,8.509661e+00,8.706158e+00,8.903694e+00,
-9.102464e+00,9.302681e+00,9.504585e+00,9.708450e+00,9.914589e+00,1.012220e+01,1.032986e+01,
-1.054144e+01,1.075759e+01,1.097915e+01,1.120725e+01,1.144340e+01,1.168966e+01,1.194894e+01,
-1.222528e+01,1.252429e+01,1.285366e+01,1.322363e+01,1.364736e+01,1.414112e+01,1.472402e+01,
-1.541751e+01,1.624472e+01,1.723002e+01,1.839895e+01,1.977888e+01,2.139989e+01,2.329619e+01,
-2.550749e+01,2.808038e+01,3.106957e+01,3.453874e+01,3.856086e+01,4.321766e+01,4.859753e+01,
-5.479148e+01,6.188616e+01,6.995395e+01,7.904100e+01,8.915485e+01,1.002549e+02,1.122494e+02,
-1.250017e+02,1.383453e+02,1.521040e+02,1.661133e+02,1.802356e+02,1.943703e+02,2.084566e+02,
-2.224704e+02,2.364195e+02,2.503384e+02,2.642840e+02,2.783315e+02,2.925726e+02,3.071140e+02,
-3.220770e+02,3.375972e+02,3.538252e+02,3.709238e+02,3.890662e+02,4.084313e+02,4.291951e+02,
-4.515193e+02,4.755366e+02,5.013340e+02,5.289387e+02,5.583096e+02,5.893384e+02,6.218631e+02,
-6.556933e+02,6.906377e+02,7.265303e+02,7.632504e+02,8.007334e+02,8.389740e+02,8.780231e+02,
-9.179815e+02,9.589917e+02,1.001230e+03,1.044901e+03,1.090228e+03,1.137450e+03,1.186818e+03,
-1.238592e+03,1.293040e+03,1.350433e+03,1.411047e+03,1.475160e+03,1.543054e+03,1.615014e+03,
-1.691327e+03,1.772284e+03,1.858181e+03,1.949319e+03,2.046009e+03,2.148567e+03,2.257322e+03,
-2.372614e+03,2.494796e+03,2.624240e+03,2.761331e+03,2.906477e+03,3.060105e+03,3.222666e+03,
-3.394638e+03,3.576525e+03,3.768859e+03,3.972206e+03,4.187166e+03,4.414372e+03,4.654499e+03,
-4.908260e+03,5.176412e+03,5.459761e+03,5.759158e+03,6.075508e+03,6.409771e+03,6.762966e+03,
-7.136172e+03,7.530536e+03,7.947272e+03,8.387671e+03,8.853101e+03,9.345011e+03,9.864941e+03,
-1.041452e+04,1.099549e+04,1.160967e+04,1.225902e+04,1.294560e+04,1.367160e+04,1.443934e+04,
-1.525129e+04,1.611006e+04,1.701843e+04,1.797933e+04,1.899589e+04,2.007140e+04,2.120939e+04,
-2.241358e+04,2.368790e+04,2.503657e+04,2.646401e+04,2.797495e+04,2.957440e+04,3.126766e+04,
-3.306037e+04,3.495851e+04,3.696842e+04,3.909684e+04,4.135092e+04,4.373823e+04,4.626684e+04,
-4.894528e+04,5.178262e+04,5.478849e+04,5.797312e+04,6.134735e+04,6.492269e+04,6.871139e+04,
-7.272641e+04,7.698154e+04,8.149143e+04,8.627160e+04,9.133857e+04,9.670985e+04,1.024041e+05,
-1.084410e+05,1.148416e+05,1.216281e+05,1.288244e+05,1.364554e+05,1.445480e+05,1.531304e+05,
-1.622330e+05,1.718876e+05,1.821283e+05,1.929912e+05,2.045148e+05,2.167399e+05,2.297098e+05,
-2.434706e+05,2.580712e+05,2.735637e+05,2.900034e+05,3.074489e+05,3.259628e+05,3.456113e+05,
-3.664650e+05,3.885990e+05,4.120927e+05,4.370310e+05,4.635039e+05,4.916070e+05,5.214420e+05,
-5.531172e+05,5.867475e+05,6.224550e+05,6.603699e+05,7.006301e+05,7.433826e+05,7.887837e+05,
-8.369994e+05,8.882063e+05,9.425923e+05,1.000357e+06,1.061713e+06,1.126885e+06,1.196115e+06
-  };
-  static const G4double P04[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,4.442863e-06,
-1.519363e-05,2.703219e-05,4.014211e-05,5.519168e-05,7.230975e-05,9.155962e-05,1.130065e-04,
-1.367177e-04,1.629335e-04,1.925910e-04,2.259139e-04,2.630146e-04,3.040085e-04,3.491052e-04,
-3.991538e-04,4.544632e-04,5.151945e-04,5.815134e-04,6.535550e-04,7.314583e-04,8.154027e-04,
-9.055657e-04,1.001169e-03,1.101697e-03,1.207300e-03,1.317649e-03,1.430881e-03,1.546863e-03,
-1.665438e-03,1.784771e-03,1.904473e-03,2.024325e-03,2.143171e-03,2.260820e-03,2.377119e-03,
-2.491853e-03,2.605055e-03,2.717349e-03,2.828874e-03,2.940853e-03,3.054038e-03,3.169999e-03,
-3.290343e-03,3.417114e-03,3.552511e-03,3.699143e-03,3.859120e-03,4.034680e-03,4.226785e-03,
-4.435314e-03,4.658182e-03,4.892305e-03,5.131845e-03,5.371783e-03,5.606701e-03,5.831779e-03,
-6.043927e-03,6.241290e-03,6.422941e-03,6.588882e-03,6.739685e-03,6.876237e-03,6.999584e-03,
-7.110833e-03,7.211089e-03,7.301407e-03,7.382776e-03,7.456105e-03,7.522221e-03,7.581872e-03,
-7.635730e-03,7.684395e-03,7.728406e-03,7.768250e-03,7.804367e-03,7.837137e-03,7.866907e-03,
-7.893992e-03,7.918663e-03,7.941175e-03,7.961745e-03,7.980577e-03,7.997848e-03,8.013718e-03,
-8.028333e-03,8.041823e-03,8.054305e-03,8.065884e-03,8.076657e-03,8.086709e-03,8.096119e-03,
-8.104959e-03,8.113293e-03,8.121181e-03,8.128676e-03,8.135829e-03,8.142686e-03,8.149290e-03,
-8.155681e-03,8.161895e-03,8.167971e-03,8.173941e-03,8.179842e-03,8.185532e-03,8.190791e-03,
-8.196173e-03,8.201721e-03,8.207490e-03,8.213549e-03,8.219997e-03,8.226961e-03,8.234619e-03,
-8.243208e-03,8.253043e-03,8.264530e-03,8.278167e-03,8.294543e-03,8.314306e-03,8.338122e-03,
-8.366621e-03,8.400357e-03,8.439779e-03,8.485245e-03,8.537046e-03,8.595453e-03,8.660753e-03,
-8.733284e-03,8.813450e-03,8.901722e-03,8.998630e-03,9.104733e-03,9.220575e-03,9.346623e-03,
-9.483175e-03,9.630255e-03,9.787493e-03,9.954018e-03,1.012840e-02,1.030865e-02,1.049233e-02,
-1.067675e-02,1.085922e-02,1.103733e-02,1.120911e-02,1.137317e-02,1.152871e-02,1.167547e-02,
-1.181358e-02,1.194350e-02,1.206587e-02,1.218146e-02,1.229109e-02,1.239560e-02,1.249580e-02,
-1.259247e-02,1.268636e-02,1.277816e-02,1.286849e-02,1.295790e-02,1.304686e-02,1.313576e-02,
-1.322486e-02,1.331430e-02,1.340408e-02,1.349406e-02,1.358398e-02,1.367348e-02,1.376212e-02,
-1.384946e-02,1.393508e-02,1.401867e-02,1.409996e-02,1.417885e-02,1.425528e-02,1.432934e-02,
-1.440114e-02,1.447087e-02,1.453873e-02,1.460494e-02,1.466972e-02,1.473329e-02,1.479584e-02,
-1.485754e-02,1.491855e-02,1.497899e-02,1.503897e-02,1.509858e-02,1.515789e-02,1.521695e-02,
-1.527579e-02,1.533444e-02,1.539291e-02,1.545122e-02,1.550935e-02,1.556730e-02,1.562507e-02,
-1.568263e-02,1.573999e-02,1.579713e-02,1.585402e-02,1.591067e-02,1.596706e-02,1.602317e-02,
-1.607900e-02,1.613455e-02,1.618979e-02,1.624474e-02,1.629938e-02,1.635372e-02,1.640774e-02,
-1.646145e-02,1.651485e-02,1.656795e-02,1.662073e-02,1.667321e-02,1.672539e-02,1.677727e-02,
-1.682885e-02,1.688015e-02,1.693115e-02,1.698188e-02,1.703233e-02,1.708251e-02,1.713242e-02,
-1.718208e-02,1.723147e-02,1.728062e-02,1.732953e-02,1.737819e-02,1.742662e-02,1.747483e-02,
-1.752281e-02,1.757058e-02,1.761813e-02,1.766548e-02,1.771262e-02,1.775957e-02,1.780632e-02,
-1.785289e-02,1.789928e-02,1.794549e-02,1.799152e-02,1.803739e-02,1.808309e-02,1.812863e-02,
-1.817402e-02,1.821925e-02,1.826434e-02,1.830928e-02,1.835409e-02,1.839875e-02,1.844329e-02,
-1.848769e-02,1.853197e-02,1.857613e-02,1.862017e-02,1.866409e-02,1.870791e-02,1.875161e-02,
-1.879521e-02,1.883871e-02,1.888210e-02,1.892541e-02,1.896862e-02,1.901173e-02,1.905476e-02,
-1.909771e-02,1.914058e-02,1.918336e-02,1.922607e-02,1.926871e-02,1.931127e-02,1.935377e-02,
-1.939619e-02,1.943856e-02,1.948086e-02,1.952311e-02,1.956530e-02,1.960743e-02,1.964952e-02,
-1.969155e-02,1.973354e-02,1.977548e-02,1.981737e-02,1.985923e-02,1.990105e-02,1.994283e-02,
-1.998458e-02,2.002629e-02,2.006798e-02,2.010963e-02,2.015126e-02,2.019287e-02,2.023445e-02,
-2.027601e-02,2.031756e-02,2.035908e-02,2.040059e-02,2.044209e-02,2.048358e-02,2.052506e-02,
-2.056653e-02,2.060799e-02,2.064945e-02,2.069091e-02,2.073236e-02,2.077382e-02,2.081528e-02
-  };
-  static const G4double P14[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.830684e-05,
-6.371064e-05,1.154186e-04,1.746380e-04,2.449308e-04,3.275905e-04,4.236803e-04,5.343383e-04,
-6.607827e-04,8.052700e-04,9.741837e-04,1.170286e-03,1.395863e-03,1.653360e-03,1.945987e-03,
-2.281454e-03,2.664366e-03,3.098601e-03,3.588306e-03,4.137638e-03,4.751029e-03,5.433489e-03,
-6.190306e-03,7.018768e-03,7.918090e-03,8.893328e-03,9.945232e-03,1.105935e-02,1.223722e-02,
-1.348004e-02,1.477087e-02,1.610715e-02,1.748784e-02,1.890063e-02,2.034378e-02,2.181580e-02,
-2.331419e-02,2.483956e-02,2.640072e-02,2.800033e-02,2.965740e-02,3.138528e-02,3.321162e-02,
-3.516681e-02,3.729155e-02,3.963237e-02,4.224740e-02,4.519013e-02,4.852109e-02,5.228032e-02,
-5.648894e-02,6.112768e-02,6.615316e-02,7.145565e-02,7.693264e-02,8.246248e-02,8.792602e-02,
-9.323627e-02,9.833048e-02,1.031653e-01,1.077195e-01,1.119872e-01,1.159719e-01,1.196832e-01,
-1.231347e-01,1.263418e-01,1.293208e-01,1.320879e-01,1.346591e-01,1.370493e-01,1.392727e-01,
-1.413425e-01,1.432706e-01,1.450684e-01,1.467463e-01,1.483144e-01,1.497813e-01,1.511550e-01,
-1.524436e-01,1.536536e-01,1.547918e-01,1.558640e-01,1.568759e-01,1.578326e-01,1.587389e-01,
-1.595992e-01,1.604178e-01,1.611987e-01,1.619454e-01,1.626615e-01,1.633503e-01,1.640150e-01,
-1.646587e-01,1.652843e-01,1.658945e-01,1.664923e-01,1.670804e-01,1.676615e-01,1.682383e-01,
-1.688138e-01,1.693906e-01,1.699718e-01,1.705606e-01,1.711603e-01,1.717563e-01,1.723243e-01,
-1.729235e-01,1.735601e-01,1.742424e-01,1.749812e-01,1.757914e-01,1.766935e-01,1.777159e-01,
-1.788979e-01,1.802932e-01,1.819727e-01,1.840281e-01,1.865720e-01,1.897363e-01,1.936664e-01,
-1.985139e-01,2.044278e-01,2.115504e-01,2.200166e-01,2.299583e-01,2.415112e-01,2.548236e-01,
-2.700636e-01,2.874240e-01,3.071261e-01,3.294187e-01,3.545749e-01,3.828823e-01,4.146274e-01,
-4.500720e-01,4.894190e-01,5.327720e-01,5.800920e-01,6.311614e-01,6.855655e-01,7.427020e-01,
-8.018245e-01,8.621139e-01,9.227611e-01,9.830442e-01,1.042383e+00,1.100363e+00,1.156744e+00,
-1.211429e+00,1.264444e+00,1.315911e+00,1.366015e+00,1.414994e+00,1.463113e+00,1.510663e+00,
-1.557947e+00,1.605276e+00,1.652968e+00,1.701334e+00,1.750675e+00,1.801276e+00,1.853388e+00,
-1.907216e+00,1.962904e+00,2.020515e+00,2.080026e+00,2.141319e+00,2.204187e+00,2.268359e+00,
-2.333525e+00,2.399370e+00,2.465608e+00,2.532008e+00,2.598408e+00,2.664720e+00,2.730931e+00,
-2.797093e+00,2.863310e+00,2.929727e+00,2.996517e+00,3.063869e+00,3.131981e+00,3.201051e+00,
-3.271270e+00,3.342824e+00,3.415884e+00,3.490610e+00,3.567148e+00,3.645628e+00,3.726167e+00,
-3.808870e+00,3.893828e+00,3.981122e+00,4.070824e+00,4.163000e+00,4.257706e+00,4.354996e+00,
-4.454920e+00,4.557525e+00,4.662858e+00,4.770965e+00,4.881891e+00,4.995685e+00,5.112397e+00,
-5.232077e+00,5.354782e+00,5.480568e+00,5.609497e+00,5.741634e+00,5.877047e+00,6.015807e+00,
-6.157992e+00,6.303681e+00,6.452959e+00,6.605913e+00,6.762637e+00,6.923226e+00,7.087782e+00,
-7.256411e+00,7.429221e+00,7.606326e+00,7.787844e+00,7.973899e+00,8.164617e+00,8.360131e+00,
-8.560577e+00,8.766096e+00,8.976834e+00,9.192943e+00,9.414578e+00,9.641901e+00,9.875078e+00,
-1.011428e+01,1.035969e+01,1.061148e+01,1.086986e+01,1.113500e+01,1.140711e+01,1.168641e+01,
-1.197310e+01,1.226741e+01,1.256956e+01,1.287978e+01,1.319833e+01,1.352545e+01,1.386140e+01,
-1.420644e+01,1.456086e+01,1.492492e+01,1.529892e+01,1.568317e+01,1.607798e+01,1.648366e+01,
-1.690054e+01,1.732896e+01,1.776928e+01,1.822186e+01,1.868707e+01,1.916530e+01,1.965693e+01,
-2.016239e+01,2.068210e+01,2.121649e+01,2.176601e+01,2.233113e+01,2.291232e+01,2.351008e+01,
-2.412492e+01,2.475737e+01,2.540797e+01,2.607728e+01,2.676588e+01,2.747436e+01,2.820334e+01,
-2.895345e+01,2.972536e+01,3.051974e+01,3.133728e+01,3.217872e+01,3.304478e+01,3.393625e+01,
-3.485392e+01,3.579859e+01,3.677113e+01,3.777240e+01,3.880330e+01,3.986476e+01,4.095774e+01,
-4.208324e+01,4.324227e+01,4.443590e+01,4.566522e+01,4.693134e+01,4.823544e+01,4.957871e+01,
-5.096240e+01,5.238778e+01,5.385619e+01,5.536898e+01,5.692756e+01,5.853340e+01,6.018799e+01,
-6.189289e+01,6.364971e+01,6.546010e+01,6.732578e+01,6.924851e+01,7.123011e+01,7.327248e+01
-  };
-  static const G4double P24[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,7.543486e-05,
-2.672072e-04,4.930762e-04,7.606037e-04,1.088954e-03,1.488138e-03,1.967834e-03,2.538841e-03,
-3.213192e-03,4.009598e-03,4.971730e-03,6.125875e-03,7.497533e-03,9.115105e-03,1.101410e-02,
-1.326287e-02,1.591403e-02,1.901913e-02,2.263546e-02,2.682459e-02,3.165470e-02,3.720349e-02,
-4.355667e-02,5.073638e-02,5.878240e-02,6.778949e-02,7.781758e-02,8.878053e-02,1.007435e-01,
-1.137711e-01,1.277352e-01,1.426538e-01,1.585606e-01,1.753566e-01,1.930607e-01,2.116938e-01,
-2.312639e-01,2.518194e-01,2.735251e-01,2.964705e-01,3.209937e-01,3.473739e-01,3.761401e-01,
-4.079082e-01,4.435227e-01,4.839951e-01,5.306350e-01,5.847703e-01,6.479743e-01,7.215434e-01,
-8.064902e-01,9.030479e-01,1.010929e+00,1.128315e+00,1.253346e+00,1.383526e+00,1.516159e+00,
-1.649089e+00,1.780588e+00,1.909280e+00,2.034281e+00,2.155065e+00,2.271349e+00,2.383027e+00,
-2.490116e+00,2.592716e+00,2.690981e+00,2.785094e+00,2.875255e+00,2.961673e+00,3.044553e+00,
-3.124097e+00,3.200497e+00,3.273938e+00,3.344609e+00,3.412697e+00,3.478359e+00,3.541758e+00,
-3.603063e+00,3.662412e+00,3.719967e+00,3.775859e+00,3.830236e+00,3.883236e+00,3.934991e+00,
-3.985641e+00,4.035323e+00,4.084172e+00,4.132329e+00,4.179936e+00,4.227142e+00,4.274100e+00,
-4.320973e+00,4.367929e+00,4.415151e+00,4.462832e+00,4.511183e+00,4.560430e+00,4.610824e+00,
-4.662638e+00,4.716179e+00,4.771788e+00,4.829854e+00,4.890825e+00,4.953249e+00,5.014598e+00,
-5.081309e+00,5.154369e+00,5.235071e+00,5.325147e+00,5.426966e+00,5.543825e+00,5.680343e+00,
-5.843034e+00,6.040974e+00,6.286575e+00,6.596368e+00,6.991576e+00,7.498259e+00,8.146893e+00,
-8.971439e+00,1.000824e+01,1.129521e+01,1.287183e+01,1.477996e+01,1.706532e+01,1.977947e+01,
-2.298186e+01,2.674168e+01,3.113945e+01,3.626805e+01,4.223285e+01,4.915057e+01,5.714619e+01,
-6.634717e+01,7.687414e+01,8.882816e+01,1.022756e+02,1.172331e+02,1.336549e+02,1.514294e+02,
-1.703848e+02,1.903058e+02,2.109585e+02,2.321157e+02,2.535790e+02,2.751935e+02,2.968551e+02,
-3.185090e+02,3.401451e+02,3.617925e+02,3.835128e+02,4.053955e+02,4.275534e+02,4.501201e+02,
-4.732483e+02,4.971083e+02,5.218876e+02,5.477871e+02,5.750188e+02,6.038010e+02,6.343508e+02,
-6.668734e+02,7.015497e+02,7.385227e+02,7.778839e+02,8.196641e+02,8.638306e+02,9.102926e+02,
-9.589179e+02,1.009554e+03,1.062052e+03,1.116289e+03,1.172185e+03,1.229716e+03,1.288919e+03,
-1.349889e+03,1.412779e+03,1.477789e+03,1.545167e+03,1.615193e+03,1.688177e+03,1.764452e+03,
-1.844372e+03,1.928304e+03,2.016627e+03,2.109729e+03,2.208008e+03,2.311865e+03,2.421710e+03,
-2.537958e+03,2.661032e+03,2.791360e+03,2.929384e+03,3.075553e+03,3.230332e+03,3.394201e+03,
-3.567658e+03,3.751220e+03,3.945429e+03,4.150853e+03,4.368085e+03,4.597754e+03,4.840519e+03,
-5.097080e+03,5.368173e+03,5.654580e+03,5.957127e+03,6.276691e+03,6.614199e+03,6.970636e+03,
-7.347046e+03,7.744537e+03,8.164282e+03,8.607528e+03,9.075596e+03,9.569887e+03,1.009189e+04,
-1.064318e+04,1.122542e+04,1.184040e+04,1.249000e+04,1.317620e+04,1.390113e+04,1.466703e+04,
-1.547628e+04,1.633140e+04,1.723507e+04,1.819012e+04,1.919958e+04,2.026662e+04,2.139464e+04,
-2.258721e+04,2.384817e+04,2.518152e+04,2.659158e+04,2.808286e+04,2.966020e+04,3.132870e+04,
-3.309379e+04,3.496121e+04,3.693706e+04,3.902782e+04,4.124035e+04,4.358193e+04,4.606030e+04,
-4.868365e+04,5.146069e+04,5.440064e+04,5.751330e+04,6.080907e+04,6.429899e+04,6.799476e+04,
-7.190880e+04,7.605431e+04,8.044530e+04,8.509662e+04,9.002404e+04,9.524433e+04,1.007752e+05,
-1.066357e+05,1.128456e+05,1.194264e+05,1.264006e+05,1.337923e+05,1.416267e+05,1.499311e+05,
-1.587342e+05,1.680664e+05,1.779602e+05,1.884499e+05,1.995721e+05,2.113657e+05,2.238718e+05,
-2.371343e+05,2.511997e+05,2.661175e+05,2.819400e+05,2.987232e+05,3.165263e+05,3.354123e+05,
-3.554481e+05,3.767048e+05,3.992580e+05,4.231879e+05,4.485800e+05,4.755247e+05,5.041186e+05,
-5.344641e+05,5.666699e+05,6.008519e+05,6.371329e+05,6.756438e+05,7.165233e+05,7.599193e+05,
-8.059888e+05,8.548986e+05,9.068263e+05,9.619605e+05,1.020502e+06,1.082664e+06,1.148672e+06,
-1.218769e+06,1.293211e+06,1.372270e+06,1.456236e+06,1.545418e+06,1.640143e+06,1.740759e+06
-  };
-  static const G4double P05[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-5.861537e-07,3.061765e-06,5.963955e-06,9.305785e-06,1.342109e-05,1.865336e-05,2.503676e-05,
-3.261650e-05,4.273714e-05,5.639991e-05,7.371320e-05,9.607336e-05,1.289866e-04,1.733628e-04,
-2.302289e-04,3.053102e-04,4.003118e-04,5.138222e-04,6.363068e-04,7.666567e-04,9.046405e-04,
-1.049782e-03,1.203029e-03,1.370490e-03,1.553883e-03,1.754746e-03,1.974232e-03,2.209369e-03,
-2.457122e-03,2.712762e-03,2.971183e-03,3.228184e-03,3.480597e-03,3.726495e-03,3.965194e-03,
-4.197027e-03,4.422883e-03,4.643939e-03,4.861858e-03,5.077910e-03,5.293416e-03,5.509553e-03,
-5.727123e-03,5.946622e-03,6.168285e-03,6.392006e-03,6.617371e-03,6.843719e-03,7.070191e-03,
-7.295793e-03,7.519457e-03,7.740099e-03,7.956683e-03,8.168260e-03,8.374004e-03,8.573230e-03,
-8.765403e-03,8.950129e-03,9.127152e-03,9.296334e-03,9.457647e-03,9.611145e-03,9.756957e-03,
-9.895275e-03,1.002632e-02,1.015036e-02,1.026766e-02,1.037853e-02,1.048327e-02,1.058218e-02,
-1.067556e-02,1.076370e-02,1.084690e-02,1.092544e-02,1.099957e-02,1.106956e-02,1.113566e-02,
-1.119809e-02,1.125710e-02,1.131288e-02,1.136563e-02,1.141557e-02,1.146285e-02,1.150766e-02,
-1.155017e-02,1.159052e-02,1.162888e-02,1.166537e-02,1.170014e-02,1.173328e-02,1.176483e-02,
-1.179510e-02,1.182421e-02,1.185232e-02,1.187957e-02,1.190617e-02,1.193232e-02,1.195832e-02,
-1.198450e-02,1.201129e-02,1.203924e-02,1.206900e-02,1.210130e-02,1.213697e-02,1.217683e-02,
-1.222166e-02,1.227215e-02,1.232884e-02,1.239218e-02,1.246252e-02,1.254018e-02,1.262551e-02,
-1.271890e-02,1.282083e-02,1.293183e-02,1.305251e-02,1.318351e-02,1.332543e-02,1.347880e-02,
-1.364395e-02,1.382089e-02,1.400920e-02,1.420789e-02,1.441539e-02,1.462947e-02,1.484742e-02,
-1.506624e-02,1.528290e-02,1.549464e-02,1.569920e-02,1.589495e-02,1.608089e-02,1.625664e-02,
-1.642228e-02,1.657827e-02,1.672530e-02,1.686422e-02,1.699595e-02,1.712141e-02,1.724154e-02,
-1.735724e-02,1.746933e-02,1.757862e-02,1.768580e-02,1.779151e-02,1.789629e-02,1.800058e-02,
-1.810471e-02,1.820886e-02,1.831308e-02,1.841729e-02,1.852126e-02,1.862466e-02,1.872709e-02,
-1.882813e-02,1.892735e-02,1.902442e-02,1.911908e-02,1.921116e-02,1.930062e-02,1.938748e-02,
-1.947187e-02,1.955394e-02,1.963391e-02,1.971200e-02,1.978844e-02,1.986346e-02,1.993725e-02,
-2.001002e-02,2.008193e-02,2.015313e-02,2.022374e-02,2.029385e-02,2.036355e-02,2.043289e-02,
-2.050193e-02,2.057069e-02,2.063918e-02,2.070743e-02,2.077542e-02,2.084316e-02,2.091063e-02,
-2.097784e-02,2.104476e-02,2.111138e-02,2.117769e-02,2.124368e-02,2.130933e-02,2.137464e-02,
-2.143959e-02,2.150419e-02,2.156841e-02,2.163227e-02,2.169575e-02,2.175885e-02,2.182157e-02,
-2.188391e-02,2.194588e-02,2.200747e-02,2.206869e-02,2.212954e-02,2.219003e-02,2.225016e-02,
-2.230994e-02,2.236936e-02,2.242845e-02,2.248720e-02,2.254562e-02,2.260371e-02,2.266149e-02,
-2.271896e-02,2.277613e-02,2.283300e-02,2.288957e-02,2.294587e-02,2.300189e-02,2.305764e-02,
-2.311312e-02,2.316835e-02,2.322333e-02,2.327806e-02,2.333255e-02,2.338681e-02,2.344084e-02,
-2.349466e-02,2.354825e-02,2.360164e-02,2.365482e-02,2.370780e-02,2.376059e-02,2.381319e-02,
-2.386561e-02,2.391784e-02,2.396991e-02,2.402180e-02,2.407353e-02,2.412509e-02,2.417651e-02,
-2.422776e-02,2.427888e-02,2.432984e-02,2.438067e-02,2.443137e-02,2.448193e-02,2.453236e-02,
-2.458267e-02,2.463286e-02,2.468294e-02,2.473290e-02,2.478275e-02,2.483249e-02,2.488213e-02,
-2.493168e-02,2.498112e-02,2.503047e-02,2.507974e-02,2.512891e-02,2.517800e-02,2.522701e-02,
-2.527595e-02,2.532480e-02,2.537359e-02,2.542230e-02,2.547095e-02,2.551954e-02,2.556806e-02,
-2.561653e-02,2.566494e-02,2.571329e-02,2.576160e-02,2.580985e-02,2.585807e-02,2.590623e-02,
-2.595436e-02,2.600245e-02,2.605050e-02,2.609852e-02,2.614650e-02,2.619446e-02,2.624239e-02,
-2.629030e-02,2.633818e-02,2.638604e-02,2.643389e-02,2.648172e-02,2.652953e-02,2.657733e-02,
-2.662513e-02,2.667291e-02,2.672069e-02,2.676847e-02,2.681624e-02,2.686402e-02,2.691179e-02
-  };
-  static const G4double P15[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-3.974782e-06,2.111703e-05,4.187126e-05,6.655079e-05,9.794658e-05,1.391596e-04,1.910712e-04,
-2.547110e-04,3.424807e-04,4.647771e-04,6.247355e-04,8.380779e-04,1.162192e-03,1.613141e-03,
-2.209563e-03,3.022272e-03,4.083389e-03,5.391437e-03,6.847763e-03,8.447014e-03,1.019379e-02,
-1.208961e-02,1.415500e-02,1.648372e-02,1.911481e-02,2.208779e-02,2.543914e-02,2.914260e-02,
-3.316793e-02,3.745194e-02,4.191903e-02,4.650110e-02,5.114289e-02,5.580689e-02,6.047654e-02,
-6.515418e-02,6.985421e-02,7.459850e-02,7.942200e-02,8.435394e-02,8.942726e-02,9.467447e-02,
-1.001215e-01,1.057883e-01,1.116895e-01,1.178312e-01,1.242106e-01,1.308174e-01,1.376334e-01,
-1.446344e-01,1.517909e-01,1.590700e-01,1.664371e-01,1.738573e-01,1.812967e-01,1.887238e-01,
-1.961101e-01,2.034302e-01,2.106622e-01,2.177880e-01,2.247927e-01,2.316643e-01,2.383937e-01,
-2.449747e-01,2.514023e-01,2.576744e-01,2.637892e-01,2.697473e-01,2.755497e-01,2.811981e-01,
-2.866954e-01,2.920447e-01,2.972497e-01,3.023141e-01,3.072423e-01,3.120386e-01,3.167076e-01,
-3.212540e-01,3.256827e-01,3.299983e-01,3.342061e-01,3.383109e-01,3.423179e-01,3.462322e-01,
-3.500593e-01,3.538045e-01,3.574734e-01,3.610719e-01,3.646061e-01,3.680773e-01,3.714851e-01,
-3.748540e-01,3.781939e-01,3.815172e-01,3.848393e-01,3.881806e-01,3.915678e-01,3.950376e-01,
-3.986393e-01,4.024394e-01,4.065252e-01,4.110083e-01,4.160253e-01,4.217350e-01,4.283120e-01,
-4.359366e-01,4.447861e-01,4.550284e-01,4.668217e-01,4.803198e-01,4.956807e-01,5.130757e-01,
-5.326983e-01,5.547703e-01,5.795448e-01,6.073059e-01,6.383637e-01,6.730439e-01,7.116699e-01,
-7.545360e-01,8.018700e-01,8.537886e-01,9.102508e-01,9.710179e-01,1.035633e+00,1.103430e+00,
-1.173580e+00,1.245163e+00,1.317264e+00,1.389054e+00,1.459853e+00,1.529164e+00,1.596682e+00,
-1.662267e+00,1.725924e+00,1.787763e+00,1.847980e+00,1.906827e+00,1.964596e+00,2.021606e+00,
-2.078191e+00,2.134696e+00,2.191472e+00,2.248861e+00,2.307198e+00,2.366794e+00,2.427929e+00,
-2.490835e+00,2.555683e+00,2.622564e+00,2.691483e+00,2.762350e+00,2.834987e+00,2.909144e+00,
-2.984527e+00,3.060829e+00,3.137758e+00,3.215070e+00,3.292583e+00,3.370189e+00,3.447853e+00,
-3.525611e+00,3.603556e+00,3.681827e+00,3.760598e+00,3.840066e+00,3.920438e+00,4.001928e+00,
-4.084743e+00,4.169087e+00,4.255151e+00,4.343112e+00,4.433133e+00,4.525363e+00,4.619934e+00,
-4.716965e+00,4.816561e+00,4.918816e+00,5.023813e+00,5.131626e+00,5.242324e+00,5.355968e+00,
-5.472618e+00,5.592327e+00,5.715152e+00,5.841146e+00,5.970363e+00,6.102860e+00,6.238695e+00,
-6.377929e+00,6.520625e+00,6.666852e+00,6.816680e+00,6.970186e+00,7.127448e+00,7.288551e+00,
-7.453583e+00,7.622638e+00,7.795812e+00,7.973209e+00,8.154935e+00,8.341103e+00,8.531830e+00,
-8.727236e+00,8.927450e+00,9.132601e+00,9.342828e+00,9.558272e+00,9.779080e+00,1.000540e+01,
-1.023740e+01,1.047524e+01,1.071908e+01,1.096910e+01,1.122548e+01,1.148841e+01,1.175808e+01,
-1.203469e+01,1.231843e+01,1.260954e+01,1.290821e+01,1.321468e+01,1.352918e+01,1.385194e+01,
-1.418323e+01,1.452328e+01,1.487236e+01,1.523075e+01,1.559872e+01,1.597656e+01,1.636457e+01,
-1.676306e+01,1.717234e+01,1.759273e+01,1.802457e+01,1.846822e+01,1.892402e+01,1.939234e+01,
-1.987358e+01,2.036810e+01,2.087633e+01,2.139868e+01,2.193558e+01,2.248747e+01,2.305481e+01,
-2.363808e+01,2.423775e+01,2.485434e+01,2.548836e+01,2.614035e+01,2.681085e+01,2.750044e+01,
-2.820970e+01,2.893925e+01,2.968970e+01,3.046170e+01,3.125593e+01,3.207305e+01,3.291380e+01,
-3.377889e+01,3.466908e+01,3.558515e+01,3.652791e+01,3.749819e+01,3.849684e+01,3.952475e+01,
-4.058284e+01,4.167204e+01,4.279334e+01,4.394772e+01,4.513625e+01,4.635997e+01,4.762000e+01,
-4.891749e+01,5.025360e+01,5.162956e+01,5.304662e+01,5.450609e+01,5.600929e+01,5.755762e+01,
-5.915250e+01,6.079540e+01,6.248786e+01,6.423144e+01,6.602777e+01,6.787852e+01,6.978543e+01,
-7.175028e+01,7.377494e+01,7.586129e+01,7.801133e+01,8.022707e+01,8.251063e+01,8.486417e+01
-  };
-  static const G4double P25[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-2.695366e-05,1.456646e-04,2.940957e-04,4.763706e-04,7.159105e-04,1.040560e-03,1.462756e-03,
-1.997124e-03,2.758357e-03,3.853132e-03,5.331120e-03,7.366831e-03,1.055881e-02,1.514171e-02,
-2.139761e-02,3.019542e-02,4.204851e-02,5.712316e-02,7.444010e-02,9.406277e-02,1.161775e-01,
-1.409425e-01,1.687811e-01,2.011671e-01,2.389176e-01,2.829245e-01,3.341005e-01,3.924354e-01,
-4.578416e-01,5.296390e-01,6.068635e-01,6.885638e-01,7.739318e-01,8.624020e-01,9.537611e-01,
-1.048148e+00,1.145963e+00,1.247793e+00,1.354566e+00,1.467159e+00,1.586602e+00,1.714000e+00,
-1.850381e+00,1.996693e+00,2.153810e+00,2.322424e+00,2.503024e+00,2.695880e+00,2.901036e+00,
-3.118309e+00,3.347312e+00,3.587475e+00,3.838086e+00,4.098335e+00,4.367355e+00,4.644260e+00,
-4.928176e+00,5.218268e+00,5.513750e+00,5.813904e+00,6.118091e+00,6.425733e+00,6.736332e+00,
-7.049470e+00,7.364768e+00,7.681941e+00,8.000723e+00,8.320924e+00,8.642387e+00,8.964984e+00,
-9.288638e+00,9.613299e+00,9.938942e+00,1.026557e+01,1.059321e+01,1.092191e+01,1.125175e+01,
-1.158282e+01,1.191526e+01,1.224919e+01,1.258480e+01,1.292228e+01,1.326186e+01,1.360381e+01,
-1.394841e+01,1.429602e+01,1.464702e+01,1.500188e+01,1.536112e+01,1.572479e+01,1.609281e+01,
-1.646782e+01,1.685103e+01,1.724405e+01,1.764902e+01,1.806883e+01,1.850751e+01,1.897069e+01,
-1.946627e+01,2.000522e+01,2.060253e+01,2.127807e+01,2.205730e+01,2.297138e+01,2.405664e+01,
-2.535341e+01,2.690469e+01,2.875518e+01,3.095123e+01,3.354183e+01,3.658031e+01,4.012667e+01,
-4.424985e+01,4.902993e+01,5.455981e+01,6.094631e+01,6.831029e+01,7.678525e+01,8.651380e+01,
-9.764114e+01,1.103048e+02,1.246205e+02,1.406659e+02,1.584635e+02,1.779675e+02,1.990585e+02,
-2.215491e+02,2.452021e+02,2.697554e+02,2.949511e+02,3.205598e+02,3.463985e+02,3.723392e+02,
-3.983095e+02,4.242881e+02,4.502985e+02,4.764027e+02,5.026947e+02,5.292959e+02,5.563519e+02,
-5.840293e+02,6.125149e+02,6.420137e+02,6.727452e+02,7.049409e+02,7.388395e+02,7.746786e+02,
-8.126858e+02,8.530658e+02,8.959874e+02,9.415706e+02,9.898771e+02,1.040906e+03,1.094598e+03,
-1.150848e+03,1.209525e+03,1.270497e+03,1.333646e+03,1.398899e+03,1.466229e+03,1.535674e+03,
-1.607330e+03,1.681358e+03,1.757972e+03,1.837437e+03,1.920058e+03,2.006179e+03,2.096171e+03,
-2.190427e+03,2.289361e+03,2.393404e+03,2.502995e+03,2.618587e+03,2.740640e+03,2.869622e+03,
-3.006011e+03,3.150290e+03,3.302954e+03,3.464511e+03,3.635478e+03,3.816392e+03,4.007807e+03,
-4.210296e+03,4.424458e+03,4.650917e+03,4.890329e+03,5.143382e+03,5.410798e+03,5.693341e+03,
-5.991817e+03,6.307078e+03,6.640026e+03,6.991616e+03,7.362858e+03,7.754825e+03,8.168654e+03,
-8.605548e+03,9.066788e+03,9.553727e+03,1.006780e+04,1.061054e+04,1.118357e+04,1.178858e+04,
-1.242741e+04,1.310199e+04,1.381436e+04,1.456669e+04,1.536129e+04,1.620059e+04,1.708718e+04,
-1.802382e+04,1.901340e+04,2.005902e+04,2.116395e+04,2.233167e+04,2.356584e+04,2.487038e+04,
-2.624943e+04,2.770738e+04,2.924888e+04,3.087888e+04,3.260261e+04,3.442562e+04,3.635382e+04,
-3.839344e+04,4.055112e+04,4.283390e+04,4.524923e+04,4.780502e+04,5.050969e+04,5.337213e+04,
-5.640180e+04,5.960874e+04,6.300357e+04,6.659759e+04,7.040280e+04,7.443190e+04,7.869840e+04,
-8.321661e+04,8.800174e+04,9.306993e+04,9.843832e+04,1.041251e+05,1.101495e+05,1.165321e+05,
-1.232946e+05,1.304601e+05,1.380532e+05,1.460998e+05,1.546276e+05,1.636660e+05,1.732461e+05,
-1.834010e+05,1.941660e+05,2.055782e+05,2.176775e+05,2.305058e+05,2.441079e+05,2.585314e+05,
-2.738267e+05,2.900474e+05,3.072504e+05,3.254964e+05,3.448495e+05,3.653781e+05,3.871546e+05,
-4.102564e+05,4.347651e+05,4.607680e+05,4.883575e+05,5.176318e+05,5.486956e+05,5.816597e+05,
-6.166422e+05,6.537685e+05,6.931719e+05,7.349941e+05,7.793856e+05,8.265066e+05,8.765271e+05,
-9.296281e+05,9.860018e+05,1.045853e+06,1.109398e+06,1.176869e+06,1.248512e+06,1.324586e+06,
-1.405371e+06,1.491162e+06,1.582272e+06,1.679036e+06,1.781809e+06,1.890967e+06,2.006914e+06
-  };
-  static const G4double P06[nE]={
-1.177941e-08,2.588247e-08,4.232501e-08,6.117863e-08,8.251710e-08,1.064164e-07,1.329550e-07,
-1.622136e-07,1.942754e-07,2.292262e-07,2.671543e-07,3.081509e-07,3.523099e-07,4.005143e-07,
-4.568609e-07,5.221504e-07,5.966563e-07,6.806607e-07,7.744541e-07,8.783361e-07,9.926154e-07,
-1.117610e-06,1.253648e-06,1.407254e-06,1.585177e-06,1.788160e-06,2.016972e-06,2.272402e-06,
-2.555265e-06,2.866400e-06,3.210941e-06,3.607791e-06,4.060525e-06,4.570854e-06,5.140538e-06,
-5.771395e-06,6.471521e-06,7.274318e-06,8.187243e-06,9.213663e-06,1.035705e-05,1.162722e-05,
-1.307801e-05,1.472581e-05,1.657663e-05,1.863670e-05,2.096335e-05,2.361557e-05,2.660333e-05,
-2.993756e-05,3.371561e-05,3.801233e-05,4.284356e-05,4.826338e-05,5.444679e-05,6.143438e-05,
-6.927898e-05,7.822982e-05,8.836866e-05,9.979567e-05,1.128693e-04,1.276837e-04,1.445433e-04,
-1.638882e-04,1.858924e-04,2.113879e-04,2.406623e-04,2.749277e-04,3.149839e-04,3.626925e-04,
-4.199591e-04,4.903319e-04,5.776505e-04,6.896213e-04,8.327844e-04,1.019672e-03,1.256072e-03,
-1.545358e-03,1.876495e-03,2.234266e-03,2.599517e-03,2.965057e-03,3.327538e-03,3.688496e-03,
-4.049256e-03,4.410120e-03,4.770247e-03,5.127797e-03,5.480662e-03,5.826902e-03,6.164910e-03,
-6.493445e-03,6.811580e-03,7.118638e-03,7.414125e-03,7.697697e-03,7.969130e-03,8.228314e-03,
-8.475244e-03,8.710011e-03,8.932790e-03,9.143846e-03,9.343514e-03,9.532163e-03,9.710217e-03,
-9.878136e-03,1.003638e-02,1.018543e-02,1.032577e-02,1.045788e-02,1.058222e-02,1.069925e-02,
-1.080940e-02,1.091309e-02,1.101074e-02,1.110271e-02,1.118937e-02,1.127107e-02,1.134814e-02,
-1.142087e-02,1.148956e-02,1.155449e-02,1.161591e-02,1.167407e-02,1.172919e-02,1.178149e-02,
-1.183119e-02,1.187846e-02,1.192350e-02,1.196648e-02,1.200757e-02,1.204672e-02,1.208376e-02,
-1.211950e-02,1.215412e-02,1.218777e-02,1.222066e-02,1.225302e-02,1.228514e-02,1.231736e-02,
-1.235014e-02,1.238405e-02,1.241978e-02,1.245819e-02,1.250024e-02,1.254701e-02,1.259955e-02,
-1.265887e-02,1.272581e-02,1.280106e-02,1.288513e-02,1.297844e-02,1.308135e-02,1.319425e-02,
-1.331759e-02,1.345191e-02,1.359785e-02,1.375610e-02,1.392741e-02,1.411249e-02,1.431192e-02,
-1.452607e-02,1.475493e-02,1.499797e-02,1.525402e-02,1.552116e-02,1.579678e-02,1.607760e-02,
-1.636002e-02,1.664033e-02,1.691510e-02,1.718143e-02,1.743714e-02,1.768081e-02,1.791177e-02,
-1.812995e-02,1.833578e-02,1.853000e-02,1.871357e-02,1.888757e-02,1.905313e-02,1.921139e-02,
-1.936343e-02,1.951030e-02,1.965297e-02,1.979231e-02,1.992912e-02,2.006408e-02,2.019774e-02,
-2.033054e-02,2.046278e-02,2.059460e-02,2.072598e-02,2.085680e-02,2.098677e-02,2.111556e-02,
-2.124276e-02,2.136797e-02,2.149083e-02,2.161106e-02,2.172847e-02,2.184294e-02,2.195448e-02,
-2.206318e-02,2.216917e-02,2.227266e-02,2.237386e-02,2.247304e-02,2.257041e-02,2.266623e-02,
-2.276069e-02,2.285400e-02,2.294633e-02,2.303782e-02,2.312859e-02,2.321873e-02,2.330833e-02,
-2.339744e-02,2.348610e-02,2.357434e-02,2.366216e-02,2.374958e-02,2.383660e-02,2.392321e-02,
-2.400939e-02,2.409515e-02,2.418046e-02,2.426532e-02,2.434971e-02,2.443362e-02,2.451703e-02,
-2.459996e-02,2.468237e-02,2.476428e-02,2.484568e-02,2.492656e-02,2.500692e-02,2.508678e-02,
-2.516612e-02,2.524495e-02,2.532328e-02,2.540111e-02,2.547844e-02,2.555530e-02,2.563167e-02,
-2.570757e-02,2.578302e-02,2.585800e-02,2.593255e-02,2.600666e-02,2.608034e-02,2.615360e-02,
-2.622645e-02,2.629891e-02,2.637098e-02,2.644266e-02,2.651397e-02,2.658492e-02,2.665552e-02,
-2.672577e-02,2.679569e-02,2.686527e-02,2.693454e-02,2.700349e-02,2.707214e-02,2.714049e-02,
-2.720856e-02,2.727634e-02,2.734385e-02,2.741110e-02,2.747808e-02,2.754481e-02,2.761130e-02,
-2.767754e-02,2.774355e-02,2.780934e-02,2.787490e-02,2.794025e-02,2.800540e-02,2.807034e-02,
-2.813508e-02,2.819963e-02,2.826399e-02,2.832817e-02,2.839218e-02,2.845601e-02,2.851968e-02,
-2.858319e-02,2.864654e-02,2.870974e-02,2.877279e-02,2.883570e-02,2.889848e-02,2.896112e-02,
-2.902362e-02,2.908601e-02,2.914827e-02,2.921042e-02,2.927245e-02,2.933437e-02,2.939619e-02,
-2.945791e-02,2.951952e-02,2.958105e-02,2.964248e-02,2.970383e-02,2.976509e-02,2.982628e-02,
-2.988738e-02,2.994842e-02,3.000938e-02,3.007028e-02,3.013111e-02,3.019189e-02,3.025260e-02,
-3.031327e-02,3.037388e-02,3.043444e-02,3.049496e-02,3.055544e-02,3.061588e-02,3.067628e-02,
-3.073665e-02,3.079699e-02,3.085730e-02,3.091759e-02,3.097785e-02,3.103809e-02,3.109832e-02,
-3.115854e-02,3.121874e-02,3.127894e-02,3.133912e-02,3.139931e-02,3.145949e-02,3.151968e-02
-  };
-  static const G4double P16[nE]={
-1.804258e-08,4.051712e-08,6.777154e-08,1.002656e-07,1.384927e-07,1.829820e-07,2.343007e-07,
-2.930569e-07,3.599020e-07,4.355335e-07,5.206986e-07,6.161967e-07,7.228834e-07,8.436657e-07,
-9.900430e-07,1.165832e-06,1.373705e-06,1.616528e-06,1.897372e-06,2.219523e-06,2.586504e-06,
-3.002083e-06,3.470293e-06,4.017609e-06,4.673657e-06,5.448091e-06,6.351250e-06,7.394207e-06,
-8.588820e-06,9.947777e-06,1.150413e-05,1.335773e-05,1.554391e-05,1.809134e-05,2.103071e-05,
-2.439490e-05,2.825371e-05,3.282620e-05,3.819883e-05,4.443975e-05,5.162192e-05,5.986434e-05,
-6.958951e-05,8.099809e-05,9.423242e-05,1.094449e-04,1.271888e-04,1.480744e-04,1.723673e-04,
-2.003571e-04,2.331035e-04,2.715493e-04,3.161734e-04,3.678507e-04,4.287074e-04,4.996878e-04,
-5.819333e-04,6.787875e-04,7.920050e-04,9.236902e-04,1.079162e-03,1.260946e-03,1.474428e-03,
-1.727161e-03,2.023776e-03,2.378366e-03,2.798406e-03,3.305670e-03,3.917386e-03,4.669086e-03,
-5.599801e-03,6.779798e-03,8.289933e-03,1.028773e-02,1.292223e-02,1.646960e-02,2.109720e-02,
-2.693730e-02,3.383013e-02,4.151002e-02,4.959508e-02,5.793931e-02,6.647249e-02,7.523542e-02,
-8.426714e-02,9.358336e-02,1.031704e-01,1.129855e-01,1.229736e-01,1.330792e-01,1.432514e-01,
-1.534460e-01,1.636247e-01,1.737542e-01,1.838047e-01,1.937493e-01,2.035636e-01,2.132257e-01,
-2.227163e-01,2.320190e-01,2.411202e-01,2.500095e-01,2.586795e-01,2.671245e-01,2.753418e-01,
-2.833311e-01,2.910927e-01,2.986297e-01,3.059453e-01,3.130445e-01,3.199327e-01,3.266157e-01,
-3.331003e-01,3.393933e-01,3.455017e-01,3.514328e-01,3.571940e-01,3.627927e-01,3.682364e-01,
-3.735326e-01,3.786887e-01,3.837123e-01,3.886108e-01,3.933918e-01,3.980628e-01,4.026315e-01,
-4.071056e-01,4.114928e-01,4.158014e-01,4.200395e-01,4.242160e-01,4.283169e-01,4.323171e-01,
-4.362959e-01,4.402669e-01,4.442464e-01,4.482555e-01,4.523215e-01,4.564807e-01,4.607821e-01,
-4.652924e-01,4.701007e-01,4.753240e-01,4.811110e-01,4.876429e-01,4.951294e-01,5.037993e-01,
-5.138871e-01,5.256210e-01,5.392151e-01,5.548691e-01,5.727754e-01,5.931301e-01,6.161452e-01,
-6.420599e-01,6.711473e-01,7.037187e-01,7.401224e-01,7.807376e-01,8.259614e-01,8.761869e-01,
-9.317722e-01,9.929958e-01,1.060005e+00,1.132763e+00,1.211000e+00,1.294186e+00,1.381542e+00,
-1.472082e+00,1.564697e+00,1.658261e+00,1.751727e+00,1.844213e+00,1.935045e+00,2.023775e+00,
-2.110166e+00,2.194160e+00,2.275844e+00,2.355414e+00,2.433149e+00,2.509381e+00,2.584481e+00,
-2.658844e+00,2.732878e+00,2.806997e+00,2.881608e+00,2.957106e+00,3.033862e+00,3.112213e+00,
-3.192444e+00,3.274781e+00,3.359367e+00,3.446260e+00,3.535423e+00,3.626726e+00,3.719962e+00,
-3.814868e+00,3.911152e+00,4.008524e+00,4.106726e+00,4.205551e+00,4.304862e+00,4.404592e+00,
-4.504750e+00,4.605408e+00,4.706697e+00,4.808789e+00,4.911889e+00,5.016222e+00,5.122024e+00,
-5.229531e+00,5.338975e+00,5.450581e+00,5.564558e+00,5.681101e+00,5.800388e+00,5.922581e+00,
-6.047825e+00,6.176250e+00,6.307973e+00,6.443097e+00,6.581718e+00,6.723919e+00,6.869782e+00,
-7.019380e+00,7.172786e+00,7.330069e+00,7.491299e+00,7.656547e+00,7.825885e+00,7.999388e+00,
-8.177134e+00,8.359207e+00,8.545692e+00,8.736681e+00,8.932270e+00,9.132563e+00,9.337664e+00,
-9.547688e+00,9.762753e+00,9.982984e+00,1.020851e+01,1.043947e+01,1.067600e+01,1.091825e+01,
-1.116638e+01,1.142055e+01,1.168091e+01,1.194766e+01,1.222096e+01,1.250100e+01,1.278798e+01,
-1.308209e+01,1.338354e+01,1.369254e+01,1.400932e+01,1.433410e+01,1.466711e+01,1.500860e+01,
-1.535881e+01,1.571802e+01,1.608647e+01,1.646446e+01,1.685226e+01,1.725016e+01,1.765847e+01,
-1.807750e+01,1.850756e+01,1.894900e+01,1.940215e+01,1.986736e+01,2.034499e+01,2.083543e+01,
-2.133906e+01,2.185627e+01,2.238747e+01,2.293309e+01,2.349357e+01,2.406936e+01,2.466091e+01,
-2.526871e+01,2.589326e+01,2.653505e+01,2.719463e+01,2.787252e+01,2.856929e+01,2.928551e+01,
-3.002178e+01,3.077871e+01,3.155693e+01,3.235711e+01,3.317990e+01,3.402601e+01,3.489614e+01,
-3.579106e+01,3.671150e+01,3.765827e+01,3.863217e+01,3.963405e+01,4.066476e+01,4.172521e+01,
-4.281631e+01,4.393901e+01,4.509429e+01,4.628318e+01,4.750671e+01,4.876596e+01,5.006205e+01,
-5.139612e+01,5.276937e+01,5.418302e+01,5.563833e+01,5.713661e+01,5.867921e+01,6.026751e+01,
-6.190297e+01,6.358705e+01,6.532129e+01,6.710728e+01,6.894664e+01,7.084106e+01,7.279228e+01,
-7.480211e+01,7.687239e+01,7.900504e+01,8.120204e+01,8.346544e+01,8.579735e+01,8.819995e+01,
-9.067549e+01,9.322629e+01,9.585477e+01,9.856339e+01,1.013547e+02,1.042314e+02,1.071962e+02
-};
-  static const G4double P26[nE]={
-2.763953e-08,6.345949e-08,1.086410e-07,1.646514e-07,2.331424e-07,3.159704e-07,4.152194e-07,
-5.332258e-07,6.726060e-07,8.362873e-07,1.027541e-06,1.250021e-06,1.507800e-06,1.810470e-06,
-2.190769e-06,2.664122e-06,3.244155e-06,3.946134e-06,4.787143e-06,5.786279e-06,6.964869e-06,
-8.346712e-06,9.958338e-06,1.190868e-05,1.432794e-05,1.728288e-05,2.084815e-05,2.510710e-05,
-3.015277e-05,3.608891e-05,4.311988e-05,5.177849e-05,6.233615e-05,7.505340e-05,9.022094e-05,
-1.081628e-04,1.294330e-04,1.554788e-04,1.870999e-04,2.250498e-04,2.701684e-04,3.236600e-04,
-3.888571e-04,4.678518e-04,5.624921e-04,6.748370e-04,8.101707e-04,9.746542e-04,1.172191e-03,
-1.407177e-03,1.691031e-03,2.035063e-03,2.447271e-03,2.940049e-03,3.539047e-03,4.260131e-03,
-5.122493e-03,6.170607e-03,7.434979e-03,8.952649e-03,1.080167e-02,1.303248e-02,1.573588e-02,
-1.903802e-02,2.303667e-02,2.796869e-02,3.399608e-02,4.150621e-02,5.084875e-02,6.269354e-02,
-7.782102e-02,9.760857e-02,1.237277e-01,1.593755e-01,2.078596e-01,2.751986e-01,3.657927e-01,
-4.837016e-01,6.271917e-01,7.920609e-01,9.710429e-01,1.161533e+00,1.362429e+00,1.575182e+00,
-1.801311e+00,2.041842e+00,2.297083e+00,2.566537e+00,2.849279e+00,3.144251e+00,3.450405e+00,
-3.766771e+00,4.092464e+00,4.426651e+00,4.768529e+00,5.117305e+00,5.472190e+00,5.832406e+00,
-6.197200e+00,6.565854e+00,6.937695e+00,7.312125e+00,7.688622e+00,8.066700e+00,8.445965e+00,
-8.826109e+00,9.206837e+00,9.587977e+00,9.969349e+00,1.035087e+01,1.073249e+01,1.111417e+01,
-1.149595e+01,1.187788e+01,1.226005e+01,1.264257e+01,1.302559e+01,1.340927e+01,1.379384e+01,
-1.417951e+01,1.456656e+01,1.495527e+01,1.534597e+01,1.573905e+01,1.613491e+01,1.653401e+01,
-1.693687e+01,1.734407e+01,1.775627e+01,1.817421e+01,1.859874e+01,1.902838e+01,1.946037e+01,
-1.990328e+01,2.035890e+01,2.082955e+01,2.131826e+01,2.182915e+01,2.236781e+01,2.294202e+01,
-2.356264e+01,2.424460e+01,2.500821e+01,2.588024e+01,2.689479e+01,2.809335e+01,2.952398e+01,
-3.123968e+01,3.329659e+01,3.575267e+01,3.866763e+01,4.210424e+01,4.613052e+01,5.082266e+01,
-5.626792e+01,6.256728e+01,6.983744e+01,7.821214e+01,8.784217e+01,9.889362e+01,1.115436e+02,
-1.259725e+02,1.423521e+02,1.608289e+02,1.815051e+02,2.044192e+02,2.295289e+02,2.567044e+02,
-2.857326e+02,3.163352e+02,3.481975e+02,3.810013e+02,4.144549e+02,4.483161e+02,4.824071e+02,
-5.166161e+02,5.508948e+02,5.852521e+02,6.197460e+02,6.544766e+02,6.895795e+02,7.252210e+02,
-7.615940e+02,7.989157e+02,8.374251e+02,8.773781e+02,9.190446e+02,9.627033e+02,1.008634e+03,
-1.057108e+03,1.108378e+03,1.162661e+03,1.220133e+03,1.280910e+03,1.345053e+03,1.412558e+03,
-1.483376e+03,1.557421e+03,1.634595e+03,1.714809e+03,1.798003e+03,1.884166e+03,1.973341e+03,
-2.065641e+03,2.161241e+03,2.260386e+03,2.363376e+03,2.470569e+03,2.582365e+03,2.699205e+03,
-2.821563e+03,2.949940e+03,3.084860e+03,3.226865e+03,3.376512e+03,3.534371e+03,3.701025e+03,
-3.877070e+03,4.063111e+03,4.259770e+03,4.467683e+03,4.687502e+03,4.919903e+03,5.165583e+03,
-5.425268e+03,5.699711e+03,5.989703e+03,6.296071e+03,6.619683e+03,6.961453e+03,7.322347e+03,
-7.703383e+03,8.105638e+03,8.530251e+03,8.978428e+03,9.451447e+03,9.950663e+03,1.047751e+04,
-1.103351e+04,1.162029e+04,1.223954e+04,1.289309e+04,1.358286e+04,1.431090e+04,1.507936e+04,
-1.589056e+04,1.674691e+04,1.765102e+04,1.860561e+04,1.961359e+04,2.067805e+04,2.180224e+04,
-2.298963e+04,2.424390e+04,2.556894e+04,2.696888e+04,2.844810e+04,3.001123e+04,3.166322e+04,
-3.340927e+04,3.525492e+04,3.720606e+04,3.926890e+04,4.145005e+04,4.375653e+04,4.619574e+04,
-4.877559e+04,5.150442e+04,5.439111e+04,5.744506e+04,6.067625e+04,6.409526e+04,6.771333e+04,
-7.154238e+04,7.559504e+04,7.988472e+04,8.442567e+04,8.923299e+04,9.432270e+04,9.971181e+04,
-1.054184e+05,1.114616e+05,1.178617e+05,1.246404e+05,1.318205e+05,1.394264e+05,1.474839e+05,
-1.560204e+05,1.650649e+05,1.746485e+05,1.848038e+05,1.955658e+05,2.069713e+05,2.190597e+05,
-2.318726e+05,2.454544e+05,2.598521e+05,2.751156e+05,2.912980e+05,3.084555e+05,3.266481e+05,
-3.459394e+05,3.663968e+05,3.880920e+05,4.111014e+05,4.355058e+05,4.613913e+05,4.888493e+05,
-5.179768e+05,5.488770e+05,5.816596e+05,6.164410e+05,6.533451e+05,6.925033e+05,7.340555e+05,
-7.781503e+05,8.249455e+05,8.746091e+05,9.273193e+05,9.832659e+05,1.042650e+06,1.105687e+06,
-1.172603e+06,1.243642e+06,1.319059e+06,1.399130e+06,1.484145e+06,1.574413e+06,1.670262e+06,
-1.772044e+06,1.880129e+06,1.994914e+06,2.116817e+06,2.246287e+06,2.383799e+06,2.529858e+06
-  };
-  static const G4double P07[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,5.615850e-06,7.317061e-05,
-1.569824e-04,2.639676e-04,4.016252e-04,5.863944e-04,8.328386e-04,1.177938e-03,1.649296e-03,
-2.302400e-03,3.161734e-03,4.237816e-03,5.456960e-03,6.730797e-03,7.960891e-03,9.085925e-03,
-1.009134e-02,1.098015e-02,1.176593e-02,1.246461e-02,1.309051e-02,1.365573e-02,1.417019e-02,
-1.464189e-02,1.507718e-02,1.548101e-02,1.585724e-02,1.620889e-02,1.653832e-02,1.684741e-02,
-1.713770e-02,1.741048e-02,1.766689e-02,1.790792e-02,1.813454e-02,1.834756e-02,1.854780e-02,
-1.873604e-02,1.891300e-02,1.907937e-02,1.923580e-02,1.938293e-02,1.952135e-02,1.965163e-02,
-1.977430e-02,1.988986e-02,1.999879e-02,2.010154e-02,2.019852e-02,2.029015e-02,2.037679e-02,
-2.045879e-02,2.053649e-02,2.061020e-02,2.068021e-02,2.074680e-02,2.081022e-02,2.087073e-02,
-2.092857e-02,2.098394e-02,2.103706e-02,2.108813e-02,2.113735e-02,2.118465e-02,2.122987e-02,
-2.127393e-02,2.131701e-02,2.135933e-02,2.140114e-02,2.144273e-02,2.148447e-02,2.152683e-02,
-2.157041e-02,2.161596e-02,2.166444e-02,2.171699e-02,2.177491e-02,2.183961e-02,2.191251e-02,
-2.199488e-02,2.208782e-02,2.219215e-02,2.230849e-02,2.243729e-02,2.257897e-02,2.273395e-02,
-2.290275e-02,2.308599e-02,2.328443e-02,2.349891e-02,2.373031e-02,2.397948e-02,2.424715e-02,
-2.453375e-02,2.483929e-02,2.516314e-02,2.550390e-02,2.585931e-02,2.622620e-02,2.660061e-02,
-2.697807e-02,2.735392e-02,2.772372e-02,2.808361e-02,2.843053e-02,2.876237e-02,2.907794e-02,
-2.937688e-02,2.965945e-02,2.992642e-02,3.017888e-02,3.041812e-02,3.064554e-02,3.086254e-02,
-3.107052e-02,3.127081e-02,3.146466e-02,3.165321e-02,3.183749e-02,3.201839e-02,3.219668e-02,
-3.237296e-02,3.254769e-02,3.272115e-02,3.289347e-02,3.306460e-02,3.323440e-02,3.340257e-02,
-3.356878e-02,3.373266e-02,3.389385e-02,3.405206e-02,3.420704e-02,3.435868e-02,3.450692e-02,
-3.465181e-02,3.479348e-02,3.493210e-02,3.506790e-02,3.520114e-02,3.533207e-02,3.546095e-02,
-3.558802e-02,3.571351e-02,3.583761e-02,3.596050e-02,3.608232e-02,3.620319e-02,3.632322e-02,
-3.644246e-02,3.656098e-02,3.667881e-02,3.679597e-02,3.691248e-02,3.702833e-02,3.714354e-02,
-3.725808e-02,3.737196e-02,3.748515e-02,3.759766e-02,3.770946e-02,3.782055e-02,3.793092e-02,
-3.804056e-02,3.814948e-02,3.825765e-02,3.836510e-02,3.847181e-02,3.857779e-02,3.868304e-02,
-3.878758e-02,3.889140e-02,3.899452e-02,3.909694e-02,3.919867e-02,3.929974e-02,3.940014e-02,
-3.949989e-02,3.959900e-02,3.969749e-02,3.979536e-02,3.989264e-02,3.998933e-02,4.008545e-02,
-4.018101e-02,4.027603e-02,4.037051e-02,4.046447e-02,4.055793e-02,4.065089e-02,4.074337e-02,
-4.083538e-02,4.092693e-02,4.101803e-02,4.110870e-02,4.119895e-02,4.128879e-02,4.137822e-02,
-4.146726e-02,4.155592e-02,4.164422e-02,4.173215e-02,4.181972e-02,4.190696e-02,4.199387e-02,
-4.208045e-02,4.216671e-02,4.225267e-02,4.233834e-02,4.242371e-02,4.250880e-02,4.259361e-02,
-4.267816e-02,4.276246e-02,4.284650e-02,4.293029e-02,4.301385e-02,4.309718e-02,4.318028e-02,
-4.326316e-02,4.334584e-02,4.342831e-02,4.351058e-02,4.359266e-02,4.367456e-02,4.375627e-02,
-4.383781e-02,4.391918e-02,4.400038e-02,4.408143e-02,4.416233e-02,4.424307e-02,4.432368e-02,
-4.440415e-02,4.448448e-02,4.456469e-02,4.464477e-02,4.472474e-02,4.480460e-02,4.488434e-02,
-4.496398e-02,4.504353e-02,4.512297e-02,4.520233e-02,4.528160e-02,4.536079e-02,4.543990e-02,
-4.551894e-02,4.559790e-02,4.567681e-02,4.575564e-02,4.583443e-02,4.591315e-02,4.599183e-02,
-4.607046e-02,4.614905e-02,4.622760e-02,4.630612e-02,4.638460e-02,4.646306e-02,4.654149e-02,
-4.661990e-02,4.669829e-02,4.677667e-02,4.685504e-02,4.693340e-02,4.701176e-02,4.709012e-02
-  };
-  static const G4double P17[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,8.694188e-05,1.151450e-03,
-2.513681e-03,4.307796e-03,6.688706e-03,9.985798e-03,1.452144e-02,2.107299e-02,3.030290e-02,
-4.349128e-02,6.138684e-02,8.449316e-02,1.114863e-01,1.405633e-01,1.695167e-01,1.968221e-01,
-2.219850e-01,2.449239e-01,2.658362e-01,2.850105e-01,3.027228e-01,3.192162e-01,3.346962e-01,
-3.493314e-01,3.632567e-01,3.765775e-01,3.893736e-01,4.017050e-01,4.136155e-01,4.251374e-01,
-4.362941e-01,4.471031e-01,4.575777e-01,4.677296e-01,4.775694e-01,4.871054e-01,4.963468e-01,
-5.053029e-01,5.139821e-01,5.223946e-01,5.305490e-01,5.384555e-01,5.461239e-01,5.535637e-01,
-5.607851e-01,5.677982e-01,5.746128e-01,5.812389e-01,5.876864e-01,5.939653e-01,6.000854e-01,
-6.060565e-01,6.118886e-01,6.175915e-01,6.231750e-01,6.286492e-01,6.340241e-01,6.393099e-01,
-6.445170e-01,6.496560e-01,6.547378e-01,6.597740e-01,6.647766e-01,6.697321e-01,6.746154e-01,
-6.795190e-01,6.844617e-01,6.894666e-01,6.945629e-01,6.997888e-01,7.051949e-01,7.108496e-01,
-7.168454e-01,7.233059e-01,7.303926e-01,7.383100e-01,7.473057e-01,7.576639e-01,7.696919e-01,
-7.837012e-01,7.999913e-01,8.188394e-01,8.405009e-01,8.652194e-01,8.932419e-01,9.248353e-01,
-9.603004e-01,9.999814e-01,1.044271e+00,1.093607e+00,1.148468e+00,1.209355e+00,1.276765e+00,
-1.351156e+00,1.432891e+00,1.522179e+00,1.619010e+00,1.723096e+00,1.833831e+00,1.950298e+00,
-2.071307e+00,2.195490e+00,2.321415e+00,2.447717e+00,2.573196e+00,2.696895e+00,2.818133e+00,
-2.936495e+00,3.051807e+00,3.164089e+00,3.273524e+00,3.380405e+00,3.485116e+00,3.588094e+00,
-3.689814e+00,3.790775e+00,3.891483e+00,3.992439e+00,4.094131e+00,4.197019e+00,4.301527e+00,
-4.408024e+00,4.516815e+00,4.628125e+00,4.742085e+00,4.858732e+00,4.978006e+00,5.099759e+00,
-5.223773e+00,5.349792e+00,5.477539e+00,5.606756e+00,5.737222e+00,5.868772e+00,6.001315e+00,
-6.134829e+00,6.269367e+00,6.405046e+00,6.542037e+00,6.680554e+00,6.820840e+00,6.963154e+00,
-7.107768e+00,7.254950e+00,7.404963e+00,7.558058e+00,7.714470e+00,7.874417e+00,8.038099e+00,
-8.205696e+00,8.377371e+00,8.553273e+00,8.733533e+00,8.918273e+00,9.107605e+00,9.301632e+00,
-9.500452e+00,9.704160e+00,9.912848e+00,1.012661e+01,1.034554e+01,1.056973e+01,1.079929e+01,
-1.103432e+01,1.127492e+01,1.152121e+01,1.177333e+01,1.203138e+01,1.229551e+01,1.256585e+01,
-1.284257e+01,1.312581e+01,1.341573e+01,1.371252e+01,1.401634e+01,1.432738e+01,1.464584e+01,
-1.497192e+01,1.530584e+01,1.564780e+01,1.599804e+01,1.635679e+01,1.672429e+01,1.710079e+01,
-1.748656e+01,1.788187e+01,1.828699e+01,1.870221e+01,1.912783e+01,1.956415e+01,2.001149e+01,
-2.047018e+01,2.094055e+01,2.142296e+01,2.191775e+01,2.242530e+01,2.294600e+01,2.348023e+01,
-2.402840e+01,2.459093e+01,2.516825e+01,2.576081e+01,2.636905e+01,2.699347e+01,2.763453e+01,
-2.829276e+01,2.896865e+01,2.966276e+01,3.037563e+01,3.110782e+01,3.185993e+01,3.263256e+01,
-3.342632e+01,3.424188e+01,3.507988e+01,3.594100e+01,3.682597e+01,3.773550e+01,3.867034e+01,
-3.963126e+01,4.061907e+01,4.163459e+01,4.267867e+01,4.375217e+01,4.485602e+01,4.599113e+01,
-4.715847e+01,4.835904e+01,4.959386e+01,5.086399e+01,5.217051e+01,5.351455e+01,5.489727e+01,
-5.631988e+01,5.778360e+01,5.928972e+01,6.083956e+01,6.243446e+01,6.407585e+01,6.576516e+01,
-6.750389e+01,6.929358e+01,7.113583e+01,7.303229e+01,7.498465e+01,7.699466e+01,7.906413e+01,
-8.119494e+01,8.338901e+01,8.564834e+01,8.797497e+01,9.037104e+01,9.283874e+01,9.538033e+01,
-9.799814e+01,1.006946e+02,1.034722e+02,1.063335e+02,1.092812e+02,1.123179e+02,1.154467e+02,
-1.186703e+02,1.219918e+02,1.254143e+02,1.289411e+02,1.325755e+02,1.363208e+02,1.401808e+02
-  };
-  static const G4double P27[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.345993e-03,1.812154e-02,
-4.026430e-02,7.035354e-02,1.115368e-01,1.703760e-01,2.538581e-01,3.782461e-01,5.589961e-01,
-8.253354e-01,1.198038e+00,1.694231e+00,2.291935e+00,2.955705e+00,3.637254e+00,4.300026e+00,
-4.929838e+00,5.521904e+00,6.078501e+00,6.604750e+00,7.106030e+00,7.587357e+00,8.053179e+00,
-8.507290e+00,8.952817e+00,9.392248e+00,9.827489e+00,1.025995e+01,1.069061e+01,1.112015e+01,
-1.154897e+01,1.197730e+01,1.240524e+01,1.283285e+01,1.326014e+01,1.368706e+01,1.411358e+01,
-1.453973e+01,1.496547e+01,1.539087e+01,1.581597e+01,1.624088e+01,1.666572e+01,1.709063e+01,
-1.751579e+01,1.794142e+01,1.836777e+01,1.879512e+01,1.922377e+01,1.965407e+01,2.008642e+01,
-2.052125e+01,2.095904e+01,2.140031e+01,2.184566e+01,2.229574e+01,2.275125e+01,2.321300e+01,
-2.368188e+01,2.415886e+01,2.464505e+01,2.514170e+01,2.565021e+01,2.616939e+01,2.669677e+01,
-2.724263e+01,2.780976e+01,2.840169e+01,2.902295e+01,2.967960e+01,3.037978e+01,3.113466e+01,
-3.195970e+01,3.287602e+01,3.391207e+01,3.510515e+01,3.650240e+01,3.816072e+01,4.014549e+01,
-4.252816e+01,4.538374e+01,4.878905e+01,5.282265e+01,5.756664e+01,6.310963e+01,6.955058e+01,
-7.700256e+01,8.559606e+01,9.548163e+01,1.068314e+02,1.198391e+02,1.347180e+02,1.516961e+02,
-1.710065e+02,1.928734e+02,2.174931e+02,2.450103e+02,2.754950e+02,3.089205e+02,3.451524e+02,
-3.839498e+02,4.249834e+02,4.678667e+02,5.121950e+02,5.575832e+02,6.036977e+02,6.502788e+02,
-6.971481e+02,7.442078e+02,7.914355e+02,8.388753e+02,8.866283e+02,9.348447e+02,9.837162e+02,
-1.033470e+03,1.084366e+03,1.136689e+03,1.190749e+03,1.246871e+03,1.305393e+03,1.366657e+03,
-1.430999e+03,1.498741e+03,1.570174e+03,1.645547e+03,1.725059e+03,1.808851e+03,1.897003e+03,
-1.989542e+03,2.086454e+03,2.187703e+03,2.293252e+03,2.403083e+03,2.517218e+03,2.635733e+03,
-2.758773e+03,2.886552e+03,3.019360e+03,3.157558e+03,3.301573e+03,3.451893e+03,3.609055e+03,
-3.773646e+03,3.946289e+03,4.127639e+03,4.318381e+03,4.519221e+03,4.730887e+03,4.954126e+03,
-5.189702e+03,5.438396e+03,5.701012e+03,5.978373e+03,6.271328e+03,6.580753e+03,6.907557e+03,
-7.252683e+03,7.617117e+03,8.001887e+03,8.408074e+03,8.836812e+03,9.289295e+03,9.766784e+03,
-1.027061e+04,1.080218e+04,1.136297e+04,1.195458e+04,1.257866e+04,1.323698e+04,1.393143e+04,
-1.466398e+04,1.543675e+04,1.625197e+04,1.711202e+04,1.801940e+04,1.897679e+04,1.998700e+04,
-2.105305e+04,2.217810e+04,2.336552e+04,2.461890e+04,2.594203e+04,2.733891e+04,2.881382e+04,
-3.037128e+04,3.201606e+04,3.375326e+04,3.558825e+04,3.752676e+04,3.957482e+04,4.173887e+04,
-4.402572e+04,4.644258e+04,4.899711e+04,5.169743e+04,5.455215e+04,5.757040e+04,6.076187e+04,
-6.413682e+04,6.770616e+04,7.148143e+04,7.547490e+04,7.969957e+04,8.416924e+04,8.889853e+04,
-9.390298e+04,9.919906e+04,1.048042e+05,1.107370e+05,1.170172e+05,1.236655e+05,1.307042e+05,
-1.381568e+05,1.460482e+05,1.544049e+05,1.632551e+05,1.726285e+05,1.825569e+05,1.930738e+05,
-2.042150e+05,2.160183e+05,2.285240e+05,2.417748e+05,2.558161e+05,2.706959e+05,2.864654e+05,
-3.031790e+05,3.208942e+05,3.396723e+05,3.595783e+05,3.806813e+05,4.030546e+05,4.267761e+05,
-4.519286e+05,4.786000e+05,5.068836e+05,5.368787e+05,5.686906e+05,6.024313e+05,6.382197e+05,
-6.761823e+05,7.164532e+05,7.591751e+05,8.044997e+05,8.525881e+05,9.036114e+05,9.577516e+05,
-1.015202e+06,1.076168e+06,1.140869e+06,1.209535e+06,1.282415e+06,1.359770e+06,1.441879e+06,
-1.529038e+06,1.621562e+06,1.719787e+06,1.824068e+06,1.934784e+06,2.052338e+06,2.177156e+06,
-2.309695e+06,2.450437e+06,2.599897e+06,2.758623e+06,2.927195e+06,3.106232e+06,3.296392e+06
-  };
-  static const G4double P08[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,5.850394e-06,3.813802e-05,7.678856e-05,1.235890e-04,
-1.811834e-04,2.505496e-04,3.370214e-04,4.423119e-04,5.737849e-04,7.362470e-04,9.394324e-04,
-1.193306e-03,1.512903e-03,1.914433e-03,2.424835e-03,3.067238e-03,3.887084e-03,4.914388e-03,
-6.198077e-03,7.742119e-03,9.530727e-03,1.145750e-02,1.342370e-02,1.532690e-02,1.710499e-02,
-1.873750e-02,2.022106e-02,2.156321e-02,2.277662e-02,2.387485e-02,2.487089e-02,2.577662e-02,
-2.660257e-02,2.735786e-02,2.805033e-02,2.868661e-02,2.927238e-02,2.981248e-02,3.031106e-02,
-3.077178e-02,3.119783e-02,3.159205e-02,3.195707e-02,3.229527e-02,3.260875e-02,3.289948e-02,
-3.316932e-02,3.341990e-02,3.365279e-02,3.386940e-02,3.407105e-02,3.425896e-02,3.443423e-02,
-3.459791e-02,3.475094e-02,3.489419e-02,3.502849e-02,3.515456e-02,3.527311e-02,3.538476e-02,
-3.549011e-02,3.558968e-02,3.568400e-02,3.577351e-02,3.585865e-02,3.593982e-02,3.601738e-02,
-3.609170e-02,3.616308e-02,3.623182e-02,3.629822e-02,3.636254e-02,3.642405e-02,3.648154e-02,
-3.653815e-02,3.659408e-02,3.664961e-02,3.670503e-02,3.676072e-02,3.681714e-02,3.687490e-02,
-3.693479e-02,3.699783e-02,3.706528e-02,3.713867e-02,3.721973e-02,3.731032e-02,3.741226e-02,
-3.752719e-02,3.765644e-02,3.780102e-02,3.796161e-02,3.813871e-02,3.833276e-02,3.854422e-02,
-3.877367e-02,3.902186e-02,3.928968e-02,3.957815e-02,3.988836e-02,4.022139e-02,4.057812e-02,
-4.095916e-02,4.136456e-02,4.179369e-02,4.224495e-02,4.271572e-02,4.320224e-02,4.369977e-02,
-4.420281e-02,4.470553e-02,4.520218e-02,4.568761e-02,4.615755e-02,4.660887e-02,4.703959e-02,
-4.744879e-02,4.783646e-02,4.820329e-02,4.855044e-02,4.887942e-02,4.919191e-02,4.948968e-02,
-4.977449e-02,5.004805e-02,5.031198e-02,5.056777e-02,5.081677e-02,5.106018e-02,5.129904e-02,
-5.153419e-02,5.176632e-02,5.199590e-02,5.222324e-02,5.244845e-02,5.267151e-02,5.289225e-02,
-5.311040e-02,5.332567e-02,5.353771e-02,5.374625e-02,5.395103e-02,5.415190e-02,5.434879e-02,
-5.454172e-02,5.473078e-02,5.491615e-02,5.509804e-02,5.527672e-02,5.545245e-02,5.562552e-02,
-5.579619e-02,5.596472e-02,5.613134e-02,5.629624e-02,5.645961e-02,5.662158e-02,5.678228e-02,
-5.694179e-02,5.710018e-02,5.725750e-02,5.741379e-02,5.756906e-02,5.772332e-02,5.787658e-02,
-5.802884e-02,5.818008e-02,5.833029e-02,5.847948e-02,5.862764e-02,5.877475e-02,5.892081e-02,
-5.906581e-02,5.920977e-02,5.935267e-02,5.949453e-02,5.963535e-02,5.977514e-02,5.991390e-02,
-6.005165e-02,6.018840e-02,6.032417e-02,6.045897e-02,6.059282e-02,6.072574e-02,6.085774e-02,
-6.098884e-02,6.111906e-02,6.124841e-02,6.137693e-02,6.150463e-02,6.163152e-02,6.175763e-02,
-6.188297e-02,6.200757e-02,6.213144e-02,6.225460e-02,6.237706e-02,6.249886e-02,6.261999e-02,
-6.274049e-02,6.286037e-02,6.297964e-02,6.309831e-02,6.321642e-02,6.333396e-02,6.345096e-02,
-6.356743e-02,6.368338e-02,6.379883e-02,6.391380e-02,6.402828e-02,6.414231e-02,6.425588e-02,
-6.436902e-02,6.448173e-02,6.459402e-02,6.470592e-02,6.481742e-02,6.492854e-02,6.503929e-02,
-6.514969e-02,6.525973e-02,6.536943e-02,6.547880e-02,6.558786e-02,6.569660e-02,6.580504e-02,
-6.591318e-02,6.602104e-02,6.612863e-02,6.623595e-02,6.634300e-02,6.644981e-02,6.655637e-02,
-6.666270e-02,6.676880e-02,6.687467e-02,6.698034e-02,6.708579e-02,6.719105e-02,6.729611e-02,
-6.740099e-02,6.750569e-02,6.761022e-02,6.771458e-02,6.781878e-02,6.792283e-02,6.802673e-02,
-6.813049e-02,6.823412e-02,6.833761e-02,6.844098e-02,6.854423e-02,6.864738e-02,6.875041e-02,
-6.885334e-02,6.895618e-02,6.905893e-02,6.916159e-02,6.926418e-02,6.936669e-02,6.946912e-02,
-6.957150e-02,6.967381e-02,6.977607e-02,6.987829e-02,6.998045e-02,7.008258e-02,7.018467e-02,
-7.028673e-02,7.038876e-02,7.049077e-02,7.059277e-02,7.069475e-02,7.079672e-02,7.089869e-02
-};
-  static const G4double P18[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,6.824362e-05,4.522706e-04,9.266015e-04,1.519331e-03,
-2.271897e-03,3.207104e-03,4.409961e-03,5.920914e-03,7.867568e-03,1.034890e-02,1.355071e-02,
-1.767709e-02,2.303624e-02,2.998068e-02,3.908692e-02,5.090796e-02,6.646885e-02,8.657934e-02,
-1.124957e-01,1.446424e-01,1.830426e-01,2.256984e-01,2.705794e-01,3.153773e-01,3.585357e-01,
-3.993962e-01,4.376870e-01,4.734083e-01,5.067098e-01,5.377891e-01,5.668544e-01,5.941073e-01,
-6.197329e-01,6.438952e-01,6.667360e-01,6.883758e-01,7.089162e-01,7.284426e-01,7.470277e-01,
-7.647338e-01,7.816149e-01,7.977194e-01,8.130925e-01,8.277769e-01,8.418093e-01,8.552264e-01,
-8.680643e-01,8.803545e-01,8.921305e-01,9.034214e-01,9.142574e-01,9.246668e-01,9.346759e-01,
-9.443113e-01,9.535980e-01,9.625599e-01,9.712203e-01,9.796014e-01,9.877249e-01,9.956119e-01,
-1.003283e+00,1.010757e+00,1.018054e+00,1.025193e+00,1.032192e+00,1.039071e+00,1.045846e+00,
-1.052537e+00,1.059162e+00,1.065739e+00,1.072287e+00,1.078824e+00,1.085267e+00,1.091476e+00,
-1.097776e+00,1.104194e+00,1.110761e+00,1.117517e+00,1.124514e+00,1.131820e+00,1.139531e+00,
-1.147772e+00,1.156712e+00,1.166573e+00,1.177631e+00,1.190221e+00,1.204723e+00,1.221543e+00,
-1.241088e+00,1.263744e+00,1.289862e+00,1.319764e+00,1.353751e+00,1.392131e+00,1.435238e+00,
-1.483446e+00,1.537190e+00,1.596963e+00,1.663320e+00,1.736867e+00,1.818241e+00,1.908081e+00,
-2.006982e+00,2.115434e+00,2.233748e+00,2.361978e+00,2.499847e+00,2.646693e+00,2.801459e+00,
-2.962731e+00,3.128831e+00,3.297953e+00,3.468314e+00,3.638292e+00,3.806530e+00,3.972005e+00,
-4.134030e+00,4.292233e+00,4.446513e+00,4.596991e+00,4.743962e+00,4.887846e+00,5.029151e+00,
-5.168447e+00,5.306340e+00,5.443454e+00,5.580411e+00,5.717819e+00,5.856258e+00,5.996267e+00,
-6.138329e+00,6.282856e+00,6.430177e+00,6.580525e+00,6.734031e+00,6.890722e+00,7.050529e+00,
-7.213302e+00,7.378833e+00,7.546883e+00,7.717208e+00,7.889591e+00,8.063859e+00,8.239901e+00,
-8.417680e+00,8.597232e+00,8.778664e+00,8.962146e+00,9.147902e+00,9.336191e+00,9.527301e+00,
-9.721535e+00,9.919203e+00,1.012061e+01,1.032605e+01,1.053580e+01,1.075013e+01,1.096928e+01,
-1.119347e+01,1.142290e+01,1.165776e+01,1.189822e+01,1.214442e+01,1.239652e+01,1.265463e+01,
-1.291891e+01,1.318945e+01,1.346640e+01,1.374986e+01,1.403997e+01,1.433686e+01,1.464064e+01,
-1.495148e+01,1.526949e+01,1.559485e+01,1.592771e+01,1.626825e+01,1.661662e+01,1.697304e+01,
-1.733768e+01,1.771076e+01,1.809249e+01,1.848310e+01,1.888282e+01,1.929190e+01,1.971059e+01,
-2.013915e+01,2.057787e+01,2.102702e+01,2.148690e+01,2.195783e+01,2.244012e+01,2.293409e+01,
-2.344009e+01,2.395847e+01,2.448959e+01,2.503383e+01,2.559158e+01,2.616323e+01,2.674919e+01,
-2.734990e+01,2.796580e+01,2.859733e+01,2.924496e+01,2.990918e+01,3.059048e+01,3.128937e+01,
-3.200638e+01,3.274207e+01,3.349698e+01,3.427170e+01,3.506682e+01,3.588297e+01,3.672077e+01,
-3.758087e+01,3.846397e+01,3.937074e+01,4.030190e+01,4.125820e+01,4.224040e+01,4.324928e+01,
-4.428566e+01,4.535037e+01,4.644426e+01,4.756824e+01,4.872322e+01,4.991015e+01,5.112999e+01,
-5.238376e+01,5.367249e+01,5.499726e+01,5.635916e+01,5.775935e+01,5.919898e+01,6.067929e+01,
-6.220151e+01,6.376694e+01,6.537690e+01,6.703278e+01,6.873600e+01,7.048801e+01,7.229032e+01,
-7.414450e+01,7.605215e+01,7.801493e+01,8.003455e+01,8.211279e+01,8.425146e+01,8.645245e+01,
-8.871771e+01,9.104924e+01,9.344911e+01,9.591946e+01,9.846249e+01,1.010805e+02,1.037758e+02,
-1.065509e+02,1.094082e+02,1.123504e+02,1.153801e+02,1.185000e+02,1.217131e+02,1.250223e+02,
-1.284306e+02,1.319411e+02,1.355571e+02,1.392819e+02,1.431190e+02,1.470720e+02,1.511445e+02,
-1.553403e+02,1.596635e+02,1.641179e+02,1.687079e+02,1.734378e+02,1.783119e+02,1.833351e+02
-  };
-  static const G4double P28[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,7.960502e-04,5.364017e-03,1.118562e-02,1.869316e-02,
-2.852749e-02,4.113714e-02,5.787072e-02,7.955515e-02,1.083806e-01,1.462818e-01,1.967401e-01,
-2.638146e-01,3.536865e-01,4.737998e-01,6.362798e-01,8.538194e-01,1.149192e+00,1.542907e+00,
-2.066174e+00,2.735516e+00,3.560003e+00,4.504415e+00,5.528958e+00,6.583511e+00,7.631145e+00,
-8.653933e+00,9.642298e+00,1.059309e+01,1.150711e+01,1.238671e+01,1.323493e+01,1.405501e+01,
-1.485012e+01,1.562315e+01,1.637661e+01,1.711263e+01,1.783294e+01,1.853896e+01,1.923178e+01,
-1.991230e+01,2.058123e+01,2.123916e+01,2.188666e+01,2.252430e+01,2.315250e+01,2.377173e+01,
-2.438256e+01,2.498540e+01,2.558088e+01,2.616948e+01,2.675181e+01,2.732849e+01,2.790012e+01,
-2.846739e+01,2.903101e+01,2.959170e+01,3.015023e+01,3.070742e+01,3.126414e+01,3.182130e+01,
-3.237989e+01,3.294094e+01,3.350557e+01,3.407498e+01,3.465046e+01,3.523340e+01,3.582530e+01,
-3.642781e+01,3.704271e+01,3.767193e+01,3.831763e+01,3.898218e+01,3.965715e+01,4.032768e+01,
-4.102906e+01,4.176548e+01,4.254216e+01,4.336573e+01,4.424489e+01,4.519125e+01,4.622060e+01,
-4.735458e+01,4.862267e+01,5.006425e+01,5.173064e+01,5.368618e+01,5.600789e+01,5.878339e+01,
-6.210756e+01,6.607900e+01,7.079781e+01,7.636571e+01,8.288853e+01,9.048030e+01,9.926829e+01,
-1.093979e+02,1.210367e+02,1.343782e+02,1.496435e+02,1.670814e+02,1.869668e+02,2.095939e+02,
-2.352665e+02,2.642811e+02,2.969039e+02,3.333440e+02,3.737232e+02,4.180489e+02,4.661957e+02,
-5.179023e+02,5.727873e+02,6.303818e+02,6.901743e+02,7.516590e+02,8.143781e+02,8.779563e+02,
-9.421156e+02,1.006680e+03,1.071573e+03,1.136805e+03,1.202469e+03,1.268723e+03,1.335784e+03,
-1.403917e+03,1.473430e+03,1.544668e+03,1.618005e+03,1.693837e+03,1.772579e+03,1.854654e+03,
-1.940482e+03,2.030475e+03,2.125017e+03,2.224456e+03,2.329092e+03,2.439170e+03,2.554874e+03,
-2.676334e+03,2.803633e+03,2.936826e+03,3.075954e+03,3.221074e+03,3.372272e+03,3.529685e+03,
-3.693517e+03,3.864050e+03,4.041643e+03,4.226743e+03,4.419872e+03,4.621628e+03,4.832678e+03,
-5.053744e+03,5.285606e+03,5.529085e+03,5.785043e+03,6.054376e+03,6.338009e+03,6.636897e+03,
-6.952019e+03,7.284382e+03,7.635021e+03,8.005001e+03,8.395420e+03,8.807417e+03,9.242171e+03,
-9.700911e+03,1.018492e+04,1.069554e+04,1.123417e+04,1.180231e+04,1.240150e+04,1.303339e+04,
-1.369971e+04,1.440231e+04,1.514313e+04,1.592423e+04,1.674777e+04,1.761608e+04,1.853161e+04,
-1.949694e+04,2.051483e+04,2.158819e+04,2.272013e+04,2.391392e+04,2.517305e+04,2.650119e+04,
-2.790227e+04,2.938043e+04,3.094006e+04,3.258584e+04,3.432269e+04,3.615588e+04,3.809095e+04,
-4.013379e+04,4.229066e+04,4.456817e+04,4.697334e+04,4.951363e+04,5.219692e+04,5.503158e+04,
-5.802649e+04,6.119106e+04,6.453527e+04,6.806970e+04,7.180556e+04,7.575476e+04,7.992991e+04,
-8.434440e+04,8.901242e+04,9.394902e+04,9.917018e+04,1.046928e+05,1.105349e+05,1.167156e+05,
-1.232549e+05,1.301745e+05,1.374970e+05,1.452466e+05,1.534490e+05,1.621312e+05,1.713222e+05,
-1.810526e+05,1.913548e+05,2.022635e+05,2.138150e+05,2.260484e+05,2.390048e+05,2.527280e+05,
-2.672645e+05,2.826635e+05,2.989775e+05,3.162621e+05,3.345761e+05,3.539825e+05,3.745475e+05,
-3.963420e+05,4.194409e+05,4.439240e+05,4.698758e+05,4.973862e+05,5.265506e+05,5.574705e+05,
-5.902534e+05,6.250137e+05,6.618730e+05,7.009603e+05,7.424127e+05,7.863758e+05,8.330043e+05,
-8.824628e+05,9.349258e+05,9.905789e+05,1.049619e+06,1.112257e+06,1.178714e+06,1.249227e+06,
-1.324048e+06,1.403444e+06,1.487699e+06,1.577115e+06,1.672012e+06,1.772733e+06,1.879639e+06,
-1.993117e+06,2.113574e+06,2.241448e+06,2.377201e+06,2.521325e+06,2.674344e+06,2.836814e+06,
-3.009326e+06,3.192510e+06,3.387034e+06,3.593610e+06,3.812994e+06,4.045989e+06,4.293452e+06
-  };
-  static const G4double P09[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,7.515803e-06,1.731827e-05,
-2.874685e-05,4.278170e-05,6.015953e-05,8.098262e-05,1.059240e-04,1.374744e-04,1.760954e-04,
-2.225746e-04,2.816669e-04,3.547278e-04,4.438203e-04,5.576081e-04,6.979665e-04,8.731555e-04,
-1.095439e-03,1.369207e-03,1.718647e-03,2.151439e-03,2.698367e-03,3.379582e-03,4.229614e-03,
-5.283815e-03,6.581892e-03,8.166275e-03,1.007243e-02,1.232577e-02,1.488678e-02,1.770487e-02,
-2.061095e-02,2.348657e-02,2.621326e-02,2.873192e-02,3.102728e-02,3.310043e-02,3.496870e-02,
-3.665237e-02,3.817043e-02,3.954315e-02,4.078897e-02,4.192379e-02,4.296125e-02,4.391292e-02,
-4.478859e-02,4.559645e-02,4.634342e-02,4.703529e-02,4.767699e-02,4.827277e-02,4.882633e-02,
-4.934096e-02,4.981961e-02,5.026497e-02,5.067957e-02,5.106575e-02,5.142564e-02,5.176126e-02,
-5.207454e-02,5.236721e-02,5.264095e-02,5.289729e-02,5.313769e-02,5.336347e-02,5.357588e-02,
-5.377608e-02,5.396514e-02,5.414407e-02,5.431378e-02,5.447513e-02,5.462891e-02,5.477585e-02,
-5.491664e-02,5.505189e-02,5.518220e-02,5.530808e-02,5.543004e-02,5.554853e-02,5.566397e-02,
-5.577674e-02,5.588719e-02,5.599565e-02,5.610241e-02,5.620776e-02,5.631089e-02,5.641045e-02,
-5.650990e-02,5.660948e-02,5.670951e-02,5.681040e-02,5.691268e-02,5.701709e-02,5.712461e-02,
-5.723655e-02,5.735463e-02,5.748102e-02,5.761830e-02,5.776937e-02,5.793723e-02,5.812477e-02,
-5.833443e-02,5.856813e-02,5.882715e-02,5.911232e-02,5.942417e-02,5.976317e-02,6.012990e-02,
-6.052514e-02,6.094997e-02,6.140573e-02,6.189398e-02,6.241639e-02,6.297464e-02,6.357021e-02,
-6.420419e-02,6.487694e-02,6.558787e-02,6.633509e-02,6.711523e-02,6.792326e-02,6.875260e-02,
-6.959533e-02,7.044270e-02,7.128573e-02,7.211586e-02,7.292555e-02,7.370873e-02,7.446102e-02,
-7.517973e-02,7.586367e-02,7.651297e-02,7.712872e-02,7.771273e-02,7.826729e-02,7.879494e-02,
-7.929835e-02,7.978018e-02,8.024301e-02,8.068929e-02,8.112124e-02,8.154090e-02,8.195006e-02,
-8.235029e-02,8.274289e-02,8.312891e-02,8.350916e-02,8.388422e-02,8.425443e-02,8.461996e-02,
-8.498082e-02,8.533691e-02,8.568805e-02,8.603405e-02,8.637472e-02,8.670993e-02,8.703958e-02,
-8.736369e-02,8.768234e-02,8.799567e-02,8.830390e-02,8.860731e-02,8.890618e-02,8.920084e-02,
-8.949159e-02,8.977874e-02,9.006257e-02,9.034333e-02,9.062125e-02,9.089651e-02,9.116928e-02,
-9.143968e-02,9.170781e-02,9.197375e-02,9.223754e-02,9.249923e-02,9.275884e-02,9.301639e-02,
-9.327188e-02,9.352532e-02,9.377671e-02,9.402605e-02,9.427335e-02,9.451861e-02,9.476185e-02,
-9.500306e-02,9.524227e-02,9.547949e-02,9.571474e-02,9.594804e-02,9.617943e-02,9.640892e-02,
-9.663655e-02,9.686235e-02,9.708636e-02,9.730860e-02,9.752912e-02,9.774795e-02,9.796512e-02,
-9.818069e-02,9.839467e-02,9.860712e-02,9.881806e-02,9.902755e-02,9.923560e-02,9.944226e-02,
-9.964757e-02,9.985156e-02,1.000543e-01,1.002557e-01,1.004560e-01,1.006550e-01,1.008529e-01,
-1.010497e-01,1.012454e-01,1.014400e-01,1.016336e-01,1.018262e-01,1.020178e-01,1.022085e-01,
-1.023982e-01,1.025870e-01,1.027750e-01,1.029621e-01,1.031484e-01,1.033339e-01,1.035186e-01,
-1.037025e-01,1.038858e-01,1.040682e-01,1.042500e-01,1.044311e-01,1.046116e-01,1.047914e-01,
-1.049706e-01,1.051492e-01,1.053272e-01,1.055046e-01,1.056815e-01,1.058578e-01,1.060337e-01,
-1.062090e-01,1.063838e-01,1.065581e-01,1.067320e-01,1.069054e-01,1.070784e-01,1.072510e-01,
-1.074231e-01,1.075949e-01,1.077663e-01,1.079373e-01,1.081079e-01,1.082783e-01,1.084482e-01,
-1.086179e-01,1.087872e-01,1.089563e-01,1.091250e-01,1.092935e-01,1.094617e-01,1.096296e-01,
-1.097973e-01,1.099648e-01,1.101320e-01,1.102990e-01,1.104659e-01,1.106325e-01,1.107989e-01,
-1.109651e-01,1.111312e-01,1.112971e-01,1.114629e-01,1.116285e-01,1.117940e-01,1.119593e-01,
-1.121246e-01,1.122897e-01,1.124547e-01,1.126197e-01,1.127845e-01,1.129493e-01,1.131140e-01,
-1.132786e-01,1.134432e-01,1.136078e-01,1.137723e-01,1.139367e-01,1.141012e-01,1.142656e-01
-  };
-  static const G4double P19[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,5.927935e-05,1.389914e-04,
-2.349414e-04,3.566209e-04,5.121431e-04,7.045053e-04,9.423805e-04,1.252973e-03,1.645359e-03,
-2.132778e-03,2.772367e-03,3.588379e-03,4.615362e-03,5.968874e-03,7.691507e-03,9.910494e-03,
-1.281519e-02,1.650640e-02,2.136751e-02,2.757845e-02,3.567673e-02,4.608131e-02,5.947584e-02,
-7.661025e-02,9.837506e-02,1.257751e-01,1.597774e-01,2.012338e-01,2.498273e-01,3.049689e-01,
-3.636123e-01,4.234494e-01,4.819630e-01,5.377010e-01,5.900857e-01,6.388778e-01,6.842212e-01,
-7.263609e-01,7.655421e-01,8.020772e-01,8.362684e-01,8.683839e-01,8.986585e-01,9.272944e-01,
-9.544631e-01,9.803078e-01,1.004947e+00,1.028478e+00,1.050980e+00,1.072520e+00,1.093154e+00,
-1.112933e+00,1.131898e+00,1.150092e+00,1.167553e+00,1.184321e+00,1.200431e+00,1.215920e+00,
-1.230825e+00,1.245180e+00,1.259022e+00,1.272384e+00,1.285302e+00,1.297810e+00,1.309940e+00,
-1.321726e+00,1.333200e+00,1.344393e+00,1.355338e+00,1.366064e+00,1.376603e+00,1.386983e+00,
-1.397235e+00,1.407387e+00,1.417470e+00,1.427510e+00,1.437537e+00,1.447579e+00,1.457663e+00,
-1.467817e+00,1.478068e+00,1.488444e+00,1.498973e+00,1.509682e+00,1.520485e+00,1.531238e+00,
-1.542307e+00,1.553733e+00,1.565564e+00,1.577862e+00,1.590714e+00,1.604236e+00,1.618589e+00,
-1.633991e+00,1.650739e+00,1.669215e+00,1.689901e+00,1.713363e+00,1.740235e+00,1.771177e+00,
-1.806833e+00,1.847794e+00,1.894587e+00,1.947683e+00,2.007527e+00,2.074576e+00,2.149333e+00,
-2.232374e+00,2.324368e+00,2.426086e+00,2.538395e+00,2.662248e+00,2.798655e+00,2.948644e+00,
-3.113195e+00,3.293165e+00,3.489174e+00,3.701503e+00,3.929974e+00,4.173863e+00,4.431848e+00,
-4.702026e+00,4.982009e+00,5.269084e+00,5.560423e+00,5.853292e+00,6.145244e+00,6.434268e+00,
-6.718845e+00,6.997954e+00,7.271040e+00,7.537949e+00,7.798855e+00,8.054192e+00,8.304585e+00,
-8.550792e+00,8.793666e+00,9.034113e+00,9.273058e+00,9.511420e+00,9.750093e+00,9.989927e+00,
-1.023171e+01,1.047615e+01,1.072385e+01,1.097533e+01,1.123096e+01,1.149102e+01,1.175565e+01,
-1.202490e+01,1.229872e+01,1.257701e+01,1.285961e+01,1.314639e+01,1.343720e+01,1.373195e+01,
-1.403061e+01,1.433323e+01,1.463991e+01,1.495084e+01,1.526627e+01,1.558650e+01,1.591187e+01,
-1.624276e+01,1.657956e+01,1.692265e+01,1.727242e+01,1.762926e+01,1.799350e+01,1.836549e+01,
-1.874553e+01,1.913392e+01,1.953093e+01,1.993678e+01,2.035173e+01,2.077597e+01,2.120973e+01,
-2.165319e+01,2.210656e+01,2.257002e+01,2.304378e+01,2.352804e+01,2.402301e+01,2.452891e+01,
-2.504595e+01,2.557440e+01,2.611448e+01,2.666648e+01,2.723067e+01,2.780733e+01,2.839679e+01,
-2.899935e+01,2.961537e+01,3.024518e+01,3.088917e+01,3.154771e+01,3.222121e+01,3.291007e+01,
-3.361474e+01,3.433567e+01,3.507331e+01,3.582815e+01,3.660069e+01,3.739145e+01,3.820096e+01,
-3.902978e+01,3.987847e+01,4.074762e+01,4.163784e+01,4.254976e+01,4.348402e+01,4.444130e+01,
-4.542228e+01,4.642768e+01,4.745822e+01,4.851467e+01,4.959779e+01,5.070840e+01,5.184732e+01,
-5.301540e+01,5.421353e+01,5.544261e+01,5.670357e+01,5.799738e+01,5.932503e+01,6.068754e+01,
-6.208597e+01,6.352141e+01,6.499498e+01,6.650784e+01,6.806117e+01,6.965620e+01,7.129421e+01,
-7.297649e+01,7.470440e+01,7.647932e+01,7.830269e+01,8.017598e+01,8.210072e+01,8.407848e+01,
-8.611087e+01,8.819958e+01,9.034631e+01,9.255287e+01,9.482106e+01,9.715280e+01,9.955002e+01,
-1.020148e+02,1.045491e+02,1.071551e+02,1.098351e+02,1.125913e+02,1.154261e+02,1.183418e+02,
-1.213411e+02,1.244265e+02,1.276007e+02,1.308664e+02,1.342265e+02,1.376838e+02,1.412415e+02,
-1.449027e+02,1.486706e+02,1.525485e+02,1.565399e+02,1.606483e+02,1.648774e+02,1.692309e+02,
-1.737129e+02,1.783272e+02,1.830781e+02,1.879699e+02,1.930070e+02,1.981940e+02,2.035356e+02,
-2.090368e+02,2.147025e+02,2.205380e+02,2.265486e+02,2.327400e+02,2.391178e+02,2.456880e+02,
-2.524567e+02,2.594302e+02,2.666150e+02,2.740179e+02,2.816459e+02,2.895062e+02,2.976061e+02
-  };
-  static const G4double P29[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,4.675863e-04,1.115848e-03,
-1.921474e-03,2.976502e-03,4.368459e-03,6.145635e-03,8.414529e-03,1.147236e-02,1.545930e-02,
-2.057119e-02,2.749440e-02,3.660912e-02,4.844832e-02,6.454972e-02,8.569351e-02,1.138020e-01,
-1.517623e-01,2.015348e-01,2.691639e-01,3.583034e-01,4.782232e-01,6.371509e-01,8.482346e-01,
-1.126750e+00,1.491709e+00,1.965598e+00,2.572184e+00,3.334953e+00,4.257053e+00,5.336097e+00,
-6.519588e+00,7.764801e+00,9.020575e+00,1.025416e+01,1.144977e+01,1.259820e+01,1.369879e+01,
-1.475356e+01,1.576491e+01,1.673737e+01,1.767581e+01,1.858475e+01,1.946828e+01,2.033001e+01,
-2.117302e+01,2.199989e+01,2.281269e+01,2.361303e+01,2.440215e+01,2.518099e+01,2.595023e+01,
-2.671041e+01,2.746196e+01,2.820524e+01,2.894070e+01,2.966884e+01,3.039005e+01,3.110491e+01,
-3.181409e+01,3.251822e+01,3.321818e+01,3.391476e+01,3.460900e+01,3.530194e+01,3.599472e+01,
-3.668862e+01,3.738499e+01,3.808532e+01,3.879119e+01,3.950432e+01,4.022655e+01,4.095989e+01,
-4.170647e+01,4.246862e+01,4.324879e+01,4.404966e+01,4.487409e+01,4.572515e+01,4.660610e+01,
-4.752048e+01,4.847204e+01,4.946482e+01,5.050316e+01,5.159177e+01,5.272361e+01,5.388496e+01,
-5.511729e+01,5.642837e+01,5.782761e+01,5.932695e+01,6.094192e+01,6.269331e+01,6.460937e+01,
-6.672884e+01,6.910427e+01,7.180553e+01,7.492262e+01,7.856680e+01,8.286884e+01,8.797459e+01,
-9.403866e+01,1.012187e+02,1.096725e+02,1.195593e+02,1.310443e+02,1.443066e+02,1.595468e+02,
-1.769950e+02,1.969173e+02,2.196207e+02,2.454567e+02,2.748218e+02,3.081551e+02,3.459309e+02,
-3.886448e+02,4.367924e+02,4.908381e+02,5.511773e+02,6.180927e+02,6.917113e+02,7.719694e+02,
-8.585945e+02,9.511118e+02,1.048877e+03,1.151132e+03,1.257071e+03,1.365912e+03,1.476962e+03,
-1.589651e+03,1.703560e+03,1.818425e+03,1.934131e+03,2.050699e+03,2.168274e+03,2.287105e+03,
-2.407530e+03,2.529963e+03,2.654887e+03,2.782834e+03,2.914378e+03,3.050129e+03,3.190720e+03,
-3.336794e+03,3.488995e+03,3.647955e+03,3.814276e+03,3.988525e+03,4.171219e+03,4.362818e+03,
-4.563730e+03,4.774309e+03,4.994874e+03,5.225720e+03,5.467141e+03,5.719453e+03,5.983016e+03,
-6.258253e+03,6.545669e+03,6.845863e+03,7.159534e+03,7.487485e+03,7.830622e+03,8.189944e+03,
-8.566547e+03,8.961603e+03,9.376365e+03,9.812149e+03,1.027033e+04,1.075235e+04,1.125969e+04,
-1.179388e+04,1.235652e+04,1.294923e+04,1.357370e+04,1.423170e+04,1.492505e+04,1.565562e+04,
-1.642541e+04,1.723648e+04,1.809099e+04,1.899122e+04,1.993956e+04,2.093854e+04,2.199082e+04,
-2.309921e+04,2.426670e+04,2.549643e+04,2.679175e+04,2.815618e+04,2.959348e+04,3.110761e+04,
-3.270279e+04,3.438349e+04,3.615442e+04,3.802062e+04,3.998739e+04,4.206039e+04,4.424559e+04,
-4.654932e+04,4.897832e+04,5.153970e+04,5.424101e+04,5.709028e+04,6.009598e+04,6.326712e+04,
-6.661323e+04,7.014443e+04,7.387144e+04,7.780561e+04,8.195901e+04,8.634439e+04,9.097530e+04,
-9.586609e+04,1.010320e+05,1.064891e+05,1.122546e+05,1.183466e+05,1.247843e+05,1.315882e+05,
-1.387798e+05,1.463820e+05,1.544194e+05,1.629175e+05,1.719038e+05,1.814074e+05,1.914589e+05,
-2.020912e+05,2.133387e+05,2.252383e+05,2.378290e+05,2.511522e+05,2.652516e+05,2.801740e+05,
-2.959687e+05,3.126882e+05,3.303881e+05,3.491275e+05,3.689692e+05,3.899795e+05,4.122292e+05,
-4.357933e+05,4.607512e+05,4.871874e+05,5.151917e+05,5.448592e+05,5.762909e+05,6.095943e+05,
-6.448833e+05,6.822787e+05,7.219092e+05,7.639111e+05,8.084294e+05,8.556178e+05,9.056399e+05,
-9.586691e+05,1.014890e+06,1.074498e+06,1.137701e+06,1.204721e+06,1.275792e+06,1.351163e+06,
-1.431099e+06,1.515882e+06,1.605811e+06,1.701204e+06,1.802397e+06,1.909751e+06,2.023645e+06,
-2.144486e+06,2.272704e+06,2.408756e+06,2.553128e+06,2.706338e+06,2.868935e+06,3.041503e+06,
-3.224662e+06,3.419071e+06,3.625434e+06,3.844494e+06,4.077045e+06,4.323928e+06,4.586041e+06,
-4.864335e+06,5.159824e+06,5.473583e+06,5.806757e+06,6.160565e+06,6.536300e+06,6.935340e+06
-  };
-  static const G4double P010[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-1.420000e-05,4.701887e-05,8.694089e-05,1.341836e-04,1.940077e-04,2.718261e-04,3.681895e-04,
-4.837658e-04,6.323004e-04,8.240919e-04,1.060464e-03,1.350967e-03,1.731360e-03,2.208133e-03,
-2.792245e-03,3.550245e-03,4.501045e-03,5.670796e-03,7.167402e-03,9.014729e-03,1.129037e-02,
-1.410796e-02,1.749772e-02,2.157807e-02,2.639241e-02,3.199085e-02,3.841369e-02,4.559250e-02,
-5.345748e-02,6.167108e-02,6.986856e-02,7.767193e-02,8.480019e-02,9.117305e-02,9.677277e-02,
-1.016834e-01,1.059752e-01,1.097284e-01,1.130297e-01,1.159373e-01,1.185096e-01,1.207998e-01,
-1.228498e-01,1.246924e-01,1.263587e-01,1.278743e-01,1.292600e-01,1.305329e-01,1.317074e-01,
-1.327952e-01,1.338059e-01,1.347478e-01,1.356275e-01,1.364508e-01,1.372227e-01,1.379475e-01,
-1.386291e-01,1.392709e-01,1.398763e-01,1.404481e-01,1.409894e-01,1.415026e-01,1.419903e-01,
-1.424548e-01,1.428983e-01,1.433229e-01,1.437305e-01,1.441228e-01,1.445015e-01,1.448681e-01,
-1.452240e-01,1.455704e-01,1.459086e-01,1.462395e-01,1.465641e-01,1.468832e-01,1.471976e-01,
-1.475078e-01,1.478144e-01,1.481178e-01,1.484184e-01,1.487165e-01,1.490123e-01,1.493060e-01,
-1.495976e-01,1.498872e-01,1.501749e-01,1.504606e-01,1.507445e-01,1.510251e-01,1.513010e-01,
-1.515759e-01,1.518503e-01,1.521247e-01,1.524003e-01,1.526783e-01,1.529609e-01,1.532511e-01,
-1.535529e-01,1.538711e-01,1.542117e-01,1.545816e-01,1.549877e-01,1.554367e-01,1.559341e-01,
-1.564842e-01,1.570896e-01,1.577520e-01,1.584720e-01,1.592503e-01,1.600875e-01,1.609849e-01,
-1.619445e-01,1.629686e-01,1.640604e-01,1.652234e-01,1.664613e-01,1.677779e-01,1.691764e-01,
-1.706592e-01,1.722273e-01,1.738801e-01,1.756140e-01,1.774230e-01,1.792977e-01,1.812255e-01,
-1.831911e-01,1.851767e-01,1.871639e-01,1.891341e-01,1.910700e-01,1.929567e-01,1.947824e-01,
-1.965384e-01,1.982195e-01,1.998234e-01,2.013502e-01,2.028018e-01,2.041820e-01,2.054950e-01,
-2.067461e-01,2.079405e-01,2.090837e-01,2.101810e-01,2.112372e-01,2.122572e-01,2.132451e-01,
-2.142048e-01,2.151398e-01,2.160530e-01,2.169469e-01,2.178237e-01,2.186851e-01,2.195325e-01,
-2.203669e-01,2.211890e-01,2.219995e-01,2.227987e-01,2.235869e-01,2.243642e-01,2.251309e-01,
-2.258871e-01,2.266330e-01,2.273689e-01,2.280950e-01,2.288117e-01,2.295194e-01,2.302182e-01,
-2.309088e-01,2.315914e-01,2.322663e-01,2.329339e-01,2.335944e-01,2.342481e-01,2.348952e-01,
-2.355358e-01,2.361701e-01,2.367983e-01,2.374202e-01,2.380361e-01,2.386460e-01,2.392499e-01,
-2.398478e-01,2.404398e-01,2.410260e-01,2.416063e-01,2.421808e-01,2.427496e-01,2.433128e-01,
-2.438703e-01,2.444223e-01,2.449688e-01,2.455100e-01,2.460459e-01,2.465767e-01,2.471023e-01,
-2.476231e-01,2.481389e-01,2.486500e-01,2.491565e-01,2.496584e-01,2.501560e-01,2.506492e-01,
-2.511383e-01,2.516232e-01,2.521042e-01,2.525813e-01,2.530547e-01,2.535244e-01,2.539906e-01,
-2.544533e-01,2.549127e-01,2.553688e-01,2.558217e-01,2.562715e-01,2.567184e-01,2.571623e-01,
-2.576034e-01,2.580418e-01,2.584775e-01,2.589107e-01,2.593413e-01,2.597694e-01,2.601952e-01,
-2.606187e-01,2.610399e-01,2.614590e-01,2.618760e-01,2.622909e-01,2.627038e-01,2.631147e-01,
-2.635238e-01,2.639311e-01,2.643365e-01,2.647403e-01,2.651423e-01,2.655427e-01,2.659416e-01,
-2.663389e-01,2.667347e-01,2.671291e-01,2.675220e-01,2.679136e-01,2.683038e-01,2.686928e-01,
-2.690805e-01,2.694670e-01,2.698523e-01,2.702364e-01,2.706195e-01,2.710015e-01,2.713824e-01,
-2.717623e-01,2.721413e-01,2.725193e-01,2.728963e-01,2.732725e-01,2.736479e-01,2.740223e-01,
-2.743960e-01,2.747690e-01,2.751411e-01,2.755126e-01,2.758833e-01,2.762534e-01,2.766228e-01,
-2.769916e-01,2.773598e-01,2.777275e-01,2.780946e-01,2.784611e-01,2.788272e-01,2.791927e-01,
-2.795578e-01,2.799225e-01,2.802868e-01,2.806506e-01,2.810141e-01,2.813772e-01,2.817400e-01,
-2.821025e-01,2.824646e-01,2.828265e-01,2.831881e-01,2.835495e-01,2.839107e-01,2.842716e-01,
-2.846324e-01,2.849930e-01,2.853535e-01,2.857138e-01,2.860740e-01,2.864341e-01,2.867942e-01
-  };
-  static const G4double P110[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-9.591763e-05,3.231969e-04,6.087125e-04,9.576234e-04,1.414059e-03,2.027041e-03,2.810721e-03,
-3.781121e-03,5.069066e-03,6.785649e-03,8.969373e-03,1.174027e-02,1.548527e-02,2.032949e-02,
-2.645527e-02,3.465992e-02,4.527966e-02,5.876373e-02,7.656597e-02,9.923844e-02,1.280600e-01,
-1.648770e-01,2.105763e-01,2.673302e-01,3.364120e-01,4.192864e-01,5.173684e-01,6.304481e-01,
-7.582455e-01,8.958848e-01,1.037582e+00,1.176684e+00,1.307744e+00,1.428590e+00,1.538109e+00,
-1.637162e+00,1.726448e+00,1.806975e+00,1.880027e+00,1.946380e+00,2.006917e+00,2.062500e+00,
-2.113806e+00,2.161365e+00,2.205714e+00,2.247309e+00,2.286523e+00,2.323671e+00,2.359012e+00,
-2.392761e+00,2.425097e+00,2.456165e+00,2.486085e+00,2.514957e+00,2.542866e+00,2.569884e+00,
-2.596079e+00,2.621512e+00,2.646242e+00,2.670327e+00,2.693830e+00,2.716805e+00,2.739313e+00,
-2.761415e+00,2.783170e+00,2.804641e+00,2.825886e+00,2.846969e+00,2.867949e+00,2.888885e+00,
-2.909838e+00,2.930865e+00,2.952023e+00,2.973366e+00,2.994948e+00,3.016818e+00,3.039026e+00,
-3.061616e+00,3.084631e+00,3.108110e+00,3.132088e+00,3.156597e+00,3.181666e+00,3.207319e+00,
-3.233578e+00,3.260461e+00,3.287985e+00,3.316164e+00,3.345014e+00,3.374420e+00,3.404208e+00,
-3.434812e+00,3.466295e+00,3.498755e+00,3.532340e+00,3.567273e+00,3.603879e+00,3.642620e+00,
-3.684134e+00,3.729263e+00,3.779065e+00,3.834802e+00,3.897876e+00,3.969744e+00,4.051813e+00,
-4.145355e+00,4.251473e+00,4.371124e+00,4.505184e+00,4.654526e+00,4.820112e+00,5.003050e+00,
-5.204640e+00,5.426399e+00,5.670065e+00,5.937583e+00,6.231072e+00,6.552772e+00,6.904959e+00,
-7.289825e+00,7.709327e+00,8.164993e+00,8.657708e+00,9.187498e+00,9.753341e+00,1.035304e+01,
-1.098318e+01,1.163929e+01,1.231599e+01,1.300745e+01,1.370769e+01,1.441103e+01,1.511244e+01,
-1.580777e+01,1.649383e+01,1.716840e+01,1.783020e+01,1.847874e+01,1.911420e+01,1.973730e+01,
-2.034918e+01,2.095125e+01,2.154514e+01,2.213262e+01,2.271548e+01,2.329555e+01,2.387461e+01,
-2.445438e+01,2.503650e+01,2.562246e+01,2.621364e+01,2.681125e+01,2.741634e+01,2.802980e+01,
-2.865235e+01,2.928457e+01,2.992690e+01,3.057966e+01,3.124314e+01,3.191753e+01,3.260304e+01,
-3.329988e+01,3.400829e+01,3.472857e+01,3.546106e+01,3.620616e+01,3.696434e+01,3.773610e+01,
-3.852199e+01,3.932257e+01,4.013841e+01,4.097009e+01,4.181816e+01,4.268318e+01,4.356564e+01,
-4.446606e+01,4.538488e+01,4.632254e+01,4.727946e+01,4.825604e+01,4.925267e+01,5.026972e+01,
-5.130758e+01,5.236662e+01,5.344725e+01,5.454987e+01,5.567490e+01,5.682280e+01,5.799403e+01,
-5.918909e+01,6.040851e+01,6.165285e+01,6.292269e+01,6.421865e+01,6.554139e+01,6.689158e+01,
-6.826996e+01,6.967727e+01,7.111431e+01,7.258189e+01,7.408087e+01,7.561215e+01,7.717665e+01,
-7.877533e+01,8.040918e+01,8.207925e+01,8.378660e+01,8.553234e+01,8.731762e+01,8.914361e+01,
-9.101153e+01,9.292265e+01,9.487827e+01,9.687973e+01,9.892841e+01,1.010257e+02,1.031732e+02,
-1.053723e+02,1.076245e+02,1.099316e+02,1.122952e+02,1.147170e+02,1.171987e+02,1.197421e+02,
-1.223492e+02,1.250219e+02,1.277621e+02,1.305719e+02,1.334534e+02,1.364088e+02,1.394403e+02,
-1.425502e+02,1.457410e+02,1.490151e+02,1.523749e+02,1.558232e+02,1.593625e+02,1.629957e+02,
-1.667257e+02,1.705553e+02,1.744876e+02,1.785257e+02,1.826729e+02,1.869325e+02,1.913079e+02,
-1.958027e+02,2.004204e+02,2.051650e+02,2.100402e+02,2.150500e+02,2.201987e+02,2.254904e+02,
-2.309295e+02,2.365206e+02,2.422684e+02,2.481777e+02,2.542534e+02,2.605007e+02,2.669250e+02,
-2.735316e+02,2.803262e+02,2.873146e+02,2.945029e+02,3.018973e+02,3.095041e+02,3.173299e+02,
-3.253817e+02,3.336664e+02,3.421912e+02,3.509637e+02,3.599917e+02,3.692831e+02,3.788461e+02,
-3.886893e+02,3.988214e+02,4.092516e+02,4.199893e+02,4.310440e+02,4.424257e+02,4.541449e+02,
-4.662121e+02,4.786383e+02,4.914349e+02,5.046135e+02,5.181864e+02,5.321660e+02,5.465652e+02,
-5.613974e+02,5.766763e+02,5.924161e+02,6.086315e+02,6.253377e+02,6.425504e+02,6.602857e+02
-  };
-  static const G4double P210[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-6.479160e-04,2.222020e-03,4.264157e-03,6.841262e-03,1.032399e-02,1.515291e-02,2.152677e-02,
-2.967511e-02,4.084384e-02,5.620899e-02,7.638501e-02,1.028167e-01,1.396897e-01,1.889132e-01,
-2.531616e-01,3.419767e-01,4.606012e-01,6.160489e-01,8.278253e-01,1.106110e+00,1.471173e+00,
-1.952294e+00,2.568440e+00,3.357900e+00,4.349247e+00,5.576148e+00,7.074057e+00,8.855419e+00,
-1.093215e+01,1.323883e+01,1.568832e+01,1.816813e+01,2.057800e+01,2.286974e+01,2.501187e+01,
-2.701003e+01,2.886770e+01,3.059561e+01,3.221218e+01,3.372653e+01,3.515134e+01,3.650043e+01,
-3.778462e+01,3.901221e+01,4.019267e+01,4.133432e+01,4.244420e+01,4.352833e+01,4.459184e+01,
-4.563906e+01,4.667362e+01,4.769852e+01,4.871621e+01,4.972874e+01,5.073786e+01,5.174512e+01,
-5.275195e+01,5.375980e+01,5.477015e+01,5.578467e+01,5.680527e+01,5.783387e+01,5.887274e+01,
-5.992444e+01,6.099162e+01,6.207742e+01,6.318504e+01,6.431812e+01,6.548052e+01,6.667634e+01,
-6.791004e+01,6.918632e+01,7.051016e+01,7.188680e+01,7.332174e+01,7.482073e+01,7.638975e+01,
-7.803498e+01,7.976279e+01,8.157970e+01,8.349240e+01,8.550769e+01,8.763244e+01,8.987365e+01,
-9.223838e+01,9.473382e+01,9.736730e+01,1.001464e+02,1.030792e+02,1.061603e+02,1.093776e+02,
-1.127846e+02,1.163971e+02,1.202362e+02,1.243305e+02,1.287201e+02,1.334613e+02,1.386334e+02,
-1.443459e+02,1.507468e+02,1.580279e+02,1.664268e+02,1.762236e+02,1.877291e+02,2.012708e+02,
-2.171791e+02,2.357799e+02,2.573961e+02,2.823579e+02,3.110181e+02,3.437701e+02,3.810638e+02,
-4.234203e+02,4.714435e+02,5.258289e+02,5.873688e+02,6.569534e+02,7.355652e+02,8.242650e+02,
-9.241665e+02,1.036396e+03,1.162036e+03,1.302054e+03,1.457221e+03,1.628023e+03,1.814588e+03,
-2.016629e+03,2.233434e+03,2.463894e+03,2.706587e+03,2.959889e+03,3.222102e+03,3.491605e+03,
-3.766953e+03,4.046947e+03,4.330688e+03,4.617582e+03,4.907339e+03,5.199952e+03,5.495663e+03,
-5.794940e+03,6.098442e+03,6.406997e+03,6.721566e+03,7.043226e+03,7.373149e+03,7.712587e+03,
-8.062854e+03,8.425307e+03,8.801331e+03,9.192321e+03,9.599669e+03,1.002475e+04,1.046890e+04,
-1.093345e+04,1.141964e+04,1.192874e+04,1.246195e+04,1.302049e+04,1.360562e+04,1.421860e+04,
-1.486078e+04,1.553362e+04,1.623867e+04,1.697762e+04,1.775231e+04,1.856473e+04,1.941702e+04,
-2.031147e+04,2.125054e+04,2.223681e+04,2.327300e+04,2.436195e+04,2.550666e+04,2.671021e+04,
-2.797583e+04,2.930685e+04,3.070674e+04,3.217911e+04,3.372772e+04,3.535650e+04,3.706952e+04,
-3.887109e+04,4.076570e+04,4.275810e+04,4.485325e+04,4.705643e+04,4.937318e+04,5.180937e+04,
-5.437120e+04,5.706526e+04,5.989850e+04,6.287829e+04,6.601245e+04,6.930926e+04,7.277750e+04,
-7.642649e+04,8.026610e+04,8.430679e+04,8.855965e+04,9.303645e+04,9.774966e+04,1.027125e+05,
-1.079389e+05,1.134438e+05,1.192429e+05,1.253529e+05,1.317915e+05,1.385774e+05,1.457304e+05,
-1.532716e+05,1.612234e+05,1.696092e+05,1.784543e+05,1.877851e+05,1.976298e+05,2.080182e+05,
-2.189820e+05,2.305546e+05,2.427716e+05,2.556706e+05,2.692916e+05,2.836769e+05,2.988713e+05,
-3.149225e+05,3.318808e+05,3.497998e+05,3.687362e+05,3.887501e+05,4.099053e+05,4.322695e+05,
-4.559143e+05,4.809159e+05,5.073551e+05,5.353173e+05,5.648935e+05,5.961799e+05,6.292788e+05,
-6.642985e+05,7.013543e+05,7.405681e+05,7.820695e+05,8.259959e+05,8.724933e+05,9.217165e+05,
-9.738297e+05,1.029007e+06,1.087434e+06,1.149308e+06,1.214835e+06,1.284239e+06,1.357754e+06,
-1.435629e+06,1.518129e+06,1.605537e+06,1.698150e+06,1.796285e+06,1.900280e+06,2.010491e+06,
-2.127300e+06,2.251108e+06,2.382345e+06,2.521465e+06,2.668952e+06,2.825320e+06,2.991112e+06,
-3.166910e+06,3.353328e+06,3.551019e+06,3.760679e+06,3.983046e+06,4.218903e+06,4.469084e+06,
-4.734475e+06,5.016015e+06,5.314705e+06,5.631606e+06,5.967849e+06,6.324634e+06,6.703234e+06,
-7.105007e+06,7.531392e+06,7.983922e+06,8.464224e+06,8.974029e+06,9.515176e+06,1.008962e+07,
-1.069945e+07,1.134686e+07,1.203421e+07,1.276399e+07,1.353888e+07,1.436168e+07,1.523540e+07
-  };
-  static const G4double P011[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,8.561707e-05,1.906331e-04,3.154098e-04,
-4.819877e-04,6.963055e-04,9.598242e-04,1.274050e-03,1.676401e-03,2.205375e-03,2.864847e-03,
-3.659508e-03,4.684845e-03,6.012414e-03,7.651465e-03,9.662871e-03,1.227193e-02,1.552037e-02,
-1.946512e-02,2.442244e-02,3.048669e-02,3.773801e-02,4.644389e-02,5.668052e-02,6.855143e-02,
-8.219187e-02,9.763501e-02,1.147626e-01,1.335674e-01,1.528473e-01,1.718772e-01,1.898295e-01,
-2.058575e-01,2.199478e-01,2.320907e-01,2.425378e-01,2.514765e-01,2.591877e-01,2.658072e-01,
-2.715525e-01,2.765412e-01,2.808940e-01,2.847237e-01,2.881029e-01,2.911027e-01,2.937862e-01,
-2.962019e-01,2.983884e-01,3.003811e-01,3.022094e-01,3.038971e-01,3.054638e-01,3.069258e-01,
-3.082963e-01,3.095866e-01,3.108058e-01,3.119616e-01,3.130607e-01,3.141086e-01,3.151103e-01,
-3.160703e-01,3.169924e-01,3.178803e-01,3.187374e-01,3.195668e-01,3.203714e-01,3.211538e-01,
-3.219164e-01,3.226615e-01,3.233911e-01,3.241070e-01,3.248106e-01,3.255035e-01,3.261867e-01,
-3.268613e-01,3.275281e-01,3.281876e-01,3.288405e-01,3.294869e-01,3.301272e-01,3.307613e-01,
-3.313894e-01,3.320112e-01,3.326266e-01,3.332354e-01,3.338373e-01,3.344320e-01,3.350193e-01,
-3.355989e-01,3.361705e-01,3.367340e-01,3.372893e-01,3.378364e-01,3.383744e-01,3.389023e-01,
-3.394248e-01,3.399435e-01,3.404607e-01,3.409797e-01,3.415051e-01,3.420432e-01,3.426019e-01,
-3.431912e-01,3.438227e-01,3.445089e-01,3.452623e-01,3.460940e-01,3.470130e-01,3.480253e-01,
-3.491345e-01,3.503420e-01,3.516483e-01,3.530539e-01,3.545595e-01,3.561672e-01,3.578801e-01,
-3.597024e-01,3.616397e-01,3.636979e-01,3.658841e-01,3.682050e-01,3.706672e-01,3.732763e-01,
-3.760363e-01,3.789488e-01,3.820118e-01,3.852192e-01,3.885601e-01,3.920181e-01,3.955715e-01,
-3.991939e-01,4.028554e-01,4.065239e-01,4.101673e-01,4.137552e-01,4.172611e-01,4.206628e-01,
-4.239442e-01,4.270940e-01,4.301065e-01,4.329801e-01,4.357169e-01,4.383219e-01,4.408018e-01,
-4.431646e-01,4.454194e-01,4.475751e-01,4.496409e-01,4.516255e-01,4.535373e-01,4.553840e-01,
-4.571727e-01,4.589098e-01,4.606012e-01,4.622520e-01,4.638665e-01,4.654485e-01,4.670014e-01,
-4.685277e-01,4.700296e-01,4.715090e-01,4.729673e-01,4.744057e-01,4.758250e-01,4.772260e-01,
-4.786094e-01,4.799758e-01,4.813257e-01,4.826595e-01,4.839778e-01,4.852810e-01,4.865695e-01,
-4.878438e-01,4.891042e-01,4.903511e-01,4.915848e-01,4.928055e-01,4.940135e-01,4.952088e-01,
-4.963917e-01,4.975623e-01,4.987206e-01,4.998667e-01,5.010006e-01,5.021224e-01,5.032320e-01,
-5.043297e-01,5.054154e-01,5.064892e-01,5.075511e-01,5.086014e-01,5.096401e-01,5.106674e-01,
-5.116834e-01,5.126883e-01,5.136823e-01,5.146656e-01,5.156384e-01,5.166009e-01,5.175533e-01,
-5.184958e-01,5.194287e-01,5.203523e-01,5.212667e-01,5.221722e-01,5.230690e-01,5.239574e-01,
-5.248375e-01,5.257097e-01,5.265740e-01,5.274309e-01,5.282804e-01,5.291227e-01,5.299582e-01,
-5.307869e-01,5.316092e-01,5.324250e-01,5.332348e-01,5.340385e-01,5.348365e-01,5.356289e-01,
-5.364158e-01,5.371974e-01,5.379738e-01,5.387453e-01,5.395119e-01,5.402738e-01,5.410311e-01,
-5.417840e-01,5.425326e-01,5.432770e-01,5.440173e-01,5.447537e-01,5.454863e-01,5.462151e-01,
-5.469403e-01,5.476620e-01,5.483803e-01,5.490953e-01,5.498071e-01,5.505157e-01,5.512213e-01,
-5.519240e-01,5.526238e-01,5.533208e-01,5.540151e-01,5.547068e-01,5.553960e-01,5.560827e-01,
-5.567669e-01,5.574489e-01,5.581286e-01,5.588061e-01,5.594815e-01,5.601548e-01,5.608261e-01,
-5.614955e-01,5.621630e-01,5.628287e-01,5.634926e-01,5.641548e-01,5.648154e-01,5.654744e-01,
-5.661318e-01,5.667877e-01,5.674422e-01,5.680953e-01,5.687470e-01,5.693975e-01,5.700467e-01,
-5.706946e-01,5.713415e-01,5.719872e-01,5.726318e-01,5.732754e-01,5.739180e-01,5.745597e-01,
-5.752004e-01,5.758403e-01,5.764794e-01,5.771176e-01,5.777552e-01,5.783920e-01,5.790281e-01,
-5.796636e-01,5.802985e-01,5.809328e-01,5.815666e-01,5.821998e-01,5.828326e-01,5.834650e-01,
-5.840970e-01,5.847286e-01,5.853599e-01,5.859909e-01,5.866216e-01,5.872521e-01,5.878823e-01
-  };
-  static const G4double P111[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,5.209548e-04,1.180711e-03,1.990663e-03,
-3.107743e-03,4.592002e-03,6.476688e-03,8.797445e-03,1.186734e-02,1.603420e-02,2.139747e-02,
-2.806967e-02,3.696045e-02,4.884261e-02,6.398504e-02,8.316995e-02,1.088558e-01,1.418609e-01,
-1.832285e-01,2.368826e-01,3.046122e-01,3.881885e-01,4.917300e-01,6.173520e-01,7.676664e-01,
-9.458741e-01,1.154034e+00,1.392213e+00,1.661998e+00,1.947285e+00,2.237778e+00,2.520414e+00,
-2.780710e+00,3.016745e+00,3.226555e+00,3.412755e+00,3.577076e+00,3.723291e+00,3.852749e+00,
-3.968634e+00,4.072420e+00,4.165812e+00,4.250554e+00,4.327670e+00,4.398270e+00,4.463397e+00,
-4.523860e+00,4.580294e+00,4.633332e+00,4.683510e+00,4.731274e+00,4.776995e+00,4.820987e+00,
-4.863513e+00,4.904792e+00,4.945010e+00,4.984323e+00,5.022866e+00,5.060755e+00,5.098099e+00,
-5.134994e+00,5.171534e+00,5.207809e+00,5.243910e+00,5.279928e+00,5.315948e+00,5.352059e+00,
-5.388348e+00,5.424899e+00,5.461794e+00,5.499112e+00,5.536929e+00,5.575317e+00,5.614339e+00,
-5.654057e+00,5.694526e+00,5.735793e+00,5.777899e+00,5.820879e+00,5.864759e+00,5.909560e+00,
-5.955296e+00,6.001974e+00,6.049594e+00,6.098153e+00,6.147641e+00,6.198045e+00,6.249350e+00,
-6.301538e+00,6.354593e+00,6.408503e+00,6.463261e+00,6.518875e+00,6.575240e+00,6.632248e+00,
-6.690414e+00,6.749930e+00,6.811096e+00,6.874363e+00,6.940381e+00,7.010064e+00,7.084648e+00,
-7.165738e+00,7.255305e+00,7.355625e+00,7.469147e+00,7.598323e+00,7.745430e+00,7.912453e+00,
-8.101065e+00,8.312698e+00,8.548675e+00,8.810356e+00,9.099276e+00,9.417241e+00,9.766397e+00,
-1.014926e+01,1.056874e+01,1.102811e+01,1.153097e+01,1.208119e+01,1.268281e+01,1.333988e+01,
-1.405626e+01,1.483537e+01,1.567986e+01,1.659126e+01,1.756967e+01,1.861338e+01,1.971876e+01,
-2.088013e+01,2.208995e+01,2.333920e+01,2.461789e+01,2.591570e+01,2.722262e+01,2.852960e+01,
-2.982889e+01,3.111433e+01,3.238135e+01,3.362699e+01,3.484969e+01,3.604911e+01,3.722590e+01,
-3.838153e+01,3.951805e+01,4.063795e+01,4.174401e+01,4.283916e+01,4.392643e+01,4.500884e+01,
-4.608939e+01,4.717095e+01,4.825627e+01,4.934793e+01,5.044832e+01,5.155962e+01,5.268381e+01,
-5.382263e+01,5.497760e+01,5.615006e+01,5.734118e+01,5.855195e+01,5.978329e+01,6.103600e+01,
-6.231082e+01,6.360849e+01,6.492971e+01,6.627522e+01,6.764576e+01,6.904207e+01,7.046495e+01,
-7.191516e+01,7.339351e+01,7.490076e+01,7.643768e+01,7.800500e+01,7.960342e+01,8.123360e+01,
-8.289618e+01,8.459176e+01,8.632091e+01,8.808419e+01,8.988213e+01,9.171528e+01,9.358418e+01,
-9.548939e+01,9.743150e+01,9.941112e+01,1.014289e+02,1.034855e+02,1.055817e+02,1.077184e+02,
-1.098962e+02,1.121162e+02,1.143792e+02,1.166864e+02,1.190388e+02,1.214375e+02,1.238837e+02,
-1.263787e+02,1.289239e+02,1.315205e+02,1.341702e+02,1.368742e+02,1.396344e+02,1.424522e+02,
-1.453293e+02,1.482676e+02,1.512688e+02,1.543349e+02,1.574678e+02,1.606694e+02,1.639419e+02,
-1.672875e+02,1.707082e+02,1.742066e+02,1.777848e+02,1.814453e+02,1.851906e+02,1.890234e+02,
-1.929462e+02,1.969619e+02,2.010732e+02,2.052830e+02,2.095944e+02,2.140105e+02,2.185344e+02,
-2.231694e+02,2.279189e+02,2.327864e+02,2.377754e+02,2.428897e+02,2.481330e+02,2.535094e+02,
-2.590228e+02,2.646774e+02,2.704774e+02,2.764274e+02,2.825319e+02,2.887956e+02,2.952232e+02,
-3.018199e+02,3.085907e+02,3.155410e+02,3.226763e+02,3.300021e+02,3.375242e+02,3.452488e+02,
-3.531820e+02,3.613300e+02,3.696996e+02,3.782975e+02,3.871306e+02,3.962063e+02,4.055319e+02,
-4.151151e+02,4.249638e+02,4.350862e+02,4.454907e+02,4.561860e+02,4.671811e+02,4.784852e+02,
-4.901079e+02,5.020589e+02,5.143485e+02,5.269872e+02,5.399857e+02,5.533553e+02,5.671075e+02,
-5.812541e+02,5.958075e+02,6.107802e+02,6.261855e+02,6.420367e+02,6.583478e+02,6.751333e+02,
-6.924079e+02,7.101869e+02,7.284863e+02,7.473223e+02,7.667118e+02,7.866722e+02,8.072215e+02,
-8.283782e+02,8.501616e+02,8.725913e+02,8.956879e+02,9.194725e+02,9.439667e+02,9.691932e+02,
-9.951752e+02,1.021937e+03,1.049502e+03,1.077898e+03,1.107150e+03,1.137285e+03,1.168332e+03
-  };
-  static const G4double P211[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,3.170118e-03,7.315363e-03,1.257339e-02,
-2.006524e-02,3.034536e-02,4.382582e-02,6.096755e-02,8.439254e-02,1.172188e-01,1.608402e-01,
-2.168665e-01,2.939658e-01,4.003237e-01,5.402293e-01,7.232315e-01,9.761260e-01,1.311496e+00,
-1.745343e+00,2.326101e+00,3.082613e+00,4.045963e+00,5.277513e+00,6.819248e+00,8.722748e+00,
-1.105116e+01,1.385719e+01,1.716964e+01,2.104044e+01,2.526219e+01,2.969696e+01,3.414706e+01,
-3.837462e+01,4.232892e+01,4.595438e+01,4.927332e+01,5.229426e+01,5.506693e+01,5.759896e+01,
-5.993661e+01,6.209595e+01,6.409989e+01,6.597519e+01,6.773518e+01,6.939684e+01,7.097759e+01,
-7.249103e+01,7.394773e+01,7.535948e+01,7.673677e+01,7.808864e+01,7.942302e+01,8.074691e+01,
-8.206649e+01,8.338723e+01,8.471403e+01,8.605126e+01,8.740299e+01,8.877308e+01,9.016530e+01,
-9.158348e+01,9.303155e+01,9.451368e+01,9.603439e+01,9.759857e+01,9.921130e+01,1.008781e+02,
-1.026050e+02,1.043980e+02,1.062640e+02,1.082097e+02,1.102423e+02,1.123692e+02,1.145981e+02,
-1.169368e+02,1.193933e+02,1.219754e+02,1.246913e+02,1.275491e+02,1.305566e+02,1.337220e+02,
-1.370529e+02,1.405572e+02,1.442423e+02,1.481158e+02,1.521850e+02,1.564570e+02,1.609392e+02,
-1.656389e+02,1.705636e+02,1.757217e+02,1.811220e+02,1.867754e+02,1.926811e+02,1.988382e+02,
-2.053134e+02,2.121426e+02,2.193769e+02,2.270897e+02,2.353854e+02,2.444109e+02,2.543683e+02,
-2.655272e+02,2.782318e+02,2.928987e+02,3.100059e+02,3.300699e+02,3.536201e+02,3.811791e+02,
-4.132549e+02,4.503497e+02,4.929799e+02,5.417037e+02,5.971489e+02,6.600395e+02,7.312176e+02,
-8.116615e+02,9.025013e+02,1.005029e+03,1.120706e+03,1.251160e+03,1.398173e+03,1.563658e+03,
-1.749612e+03,1.958046e+03,2.190894e+03,2.449893e+03,2.736450e+03,3.051500e+03,3.395381e+03,
-3.767744e+03,4.167523e+03,4.592970e+03,5.041778e+03,5.511247e+03,5.998488e+03,6.500670e+03,
-7.015188e+03,7.539806e+03,8.072749e+03,8.612744e+03,9.159028e+03,9.711325e+03,1.026981e+04,
-1.083504e+04,1.140796e+04,1.198979e+04,1.258204e+04,1.318641e+04,1.380480e+04,1.443930e+04,
-1.509210e+04,1.576553e+04,1.646199e+04,1.718399e+04,1.793404e+04,1.871473e+04,1.952866e+04,
-2.037842e+04,2.126663e+04,2.219590e+04,2.316886e+04,2.418816e+04,2.525650e+04,2.637667e+04,
-2.755151e+04,2.878401e+04,3.007731e+04,3.143470e+04,3.285966e+04,3.435587e+04,3.592721e+04,
-3.757777e+04,3.931185e+04,4.113396e+04,4.304881e+04,4.506131e+04,4.717656e+04,4.939988e+04,
-5.173679e+04,5.419304e+04,5.677458e+04,5.948765e+04,6.233872e+04,6.533460e+04,6.848239e+04,
-7.178955e+04,7.526394e+04,7.891383e+04,8.274793e+04,8.677546e+04,9.100617e+04,9.545036e+04,
-1.001189e+05,1.050235e+05,1.101763e+05,1.155902e+05,1.212792e+05,1.272577e+05,1.335413e+05,
-1.401464e+05,1.470904e+05,1.543917e+05,1.620700e+05,1.701459e+05,1.786414e+05,1.875799e+05,
-1.969859e+05,2.068858e+05,2.173072e+05,2.282796e+05,2.398340e+05,2.520035e+05,2.648230e+05,
-2.783297e+05,2.925628e+05,3.075639e+05,3.233770e+05,3.400491e+05,3.576294e+05,3.761706e+05,
-3.957283e+05,4.163613e+05,4.381322e+05,4.611072e+05,4.853564e+05,5.109543e+05,5.379797e+05,
-5.665162e+05,5.966524e+05,6.284822e+05,6.621053e+05,6.976273e+05,7.351601e+05,7.748225e+05,
-8.167405e+05,8.610475e+05,9.078852e+05,9.574039e+05,1.009763e+06,1.065131e+06,1.123687e+06,
-1.185622e+06,1.251138e+06,1.320447e+06,1.393779e+06,1.471372e+06,1.553484e+06,1.640385e+06,
-1.732364e+06,1.829725e+06,1.932793e+06,2.041912e+06,2.157447e+06,2.279787e+06,2.409342e+06,
-2.546550e+06,2.691874e+06,2.845807e+06,3.008872e+06,3.181623e+06,3.364649e+06,3.558578e+06,
-3.764073e+06,3.981840e+06,4.212628e+06,4.457233e+06,4.716501e+06,4.991329e+06,5.282672e+06,
-5.591541e+06,5.919014e+06,6.266233e+06,6.634412e+06,7.024842e+06,7.438893e+06,7.878021e+06,
-8.343775e+06,8.837797e+06,9.361836e+06,9.917747e+06,1.050750e+07,1.113320e+07,1.179707e+07,
-1.250148e+07,1.324894e+07,1.404213e+07,1.488389e+07,1.577725e+07,1.672542e+07,1.773181e+07,
-1.880006e+07,1.993402e+07,2.113780e+07,2.241576e+07,2.377254e+07,2.521307e+07,2.674259e+07
-  };
-  static const G4double P012[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,4.229739e-04,1.122568e-03,
-2.064930e-03,3.284750e-03,4.790517e-03,6.590986e-03,8.900132e-03,1.193812e-02,1.572724e-02,
-2.029405e-02,2.612967e-02,3.360287e-02,4.276376e-02,5.386159e-02,6.777878e-02,8.469189e-02,
-1.048143e-01,1.292053e-01,1.582020e-01,1.919795e-01,2.308545e-01,2.750062e-01,3.220332e-01,
-3.681689e-01,4.129651e-01,4.533231e-01,4.884559e-01,5.187789e-01,5.444843e-01,5.662268e-01,
-5.846749e-01,6.003010e-01,6.136180e-01,6.250143e-01,6.347777e-01,6.432341e-01,6.505388e-01,
-6.569272e-01,6.625246e-01,6.674590e-01,6.718492e-01,6.757719e-01,6.793023e-01,6.825069e-01,
-6.854375e-01,6.881350e-01,6.906373e-01,6.929758e-01,6.951759e-01,6.972587e-01,6.992414e-01,
-7.011385e-01,7.029615e-01,7.047201e-01,7.064225e-01,7.080751e-01,7.096835e-01,7.112527e-01,
-7.127865e-01,7.142885e-01,7.157619e-01,7.172092e-01,7.186329e-01,7.200349e-01,7.214168e-01,
-7.227802e-01,7.241260e-01,7.254552e-01,7.267683e-01,7.280657e-01,7.293477e-01,7.306141e-01,
-7.318649e-01,7.330998e-01,7.343184e-01,7.355204e-01,7.367051e-01,7.378722e-01,7.390210e-01,
-7.401512e-01,7.412621e-01,7.423534e-01,7.434246e-01,7.444755e-01,7.455059e-01,7.465157e-01,
-7.475050e-01,7.484740e-01,7.494234e-01,7.503538e-01,7.512667e-01,7.521635e-01,7.530473e-01,
-7.539251e-01,7.548030e-01,7.556892e-01,7.565948e-01,7.575336e-01,7.585223e-01,7.595799e-01,
-7.607266e-01,7.619819e-01,7.633625e-01,7.648809e-01,7.665452e-01,7.683588e-01,7.703228e-01,
-7.724363e-01,7.746990e-01,7.771113e-01,7.796756e-01,7.823961e-01,7.852792e-01,7.883330e-01,
-7.915675e-01,7.949937e-01,7.986237e-01,8.024699e-01,8.065444e-01,8.108585e-01,8.154213e-01,
-8.202389e-01,8.253131e-01,8.306399e-01,8.362083e-01,8.419994e-01,8.479855e-01,8.541308e-01,
-8.603917e-01,8.667190e-01,8.730602e-01,8.793625e-01,8.855761e-01,8.916562e-01,8.975657e-01,
-9.032762e-01,9.087677e-01,9.140286e-01,9.190547e-01,9.238476e-01,9.284140e-01,9.327639e-01,
-9.369096e-01,9.408651e-01,9.446450e-01,9.482641e-01,9.517370e-01,9.550773e-01,9.582984e-01,
-9.614123e-01,9.644302e-01,9.673624e-01,9.702179e-01,9.730048e-01,9.757305e-01,9.784010e-01,
-9.810219e-01,9.835976e-01,9.861323e-01,9.886290e-01,9.910907e-01,9.935195e-01,9.959175e-01,
-9.982862e-01,1.000627e+00,1.002941e+00,1.005229e+00,1.007492e+00,1.009731e+00,1.011947e+00,
-1.014139e+00,1.016308e+00,1.018455e+00,1.020580e+00,1.022683e+00,1.024763e+00,1.026822e+00,
-1.028859e+00,1.030874e+00,1.032867e+00,1.034838e+00,1.036787e+00,1.038714e+00,1.040619e+00,
-1.042502e+00,1.044363e+00,1.046202e+00,1.048019e+00,1.049815e+00,1.051590e+00,1.053344e+00,
-1.055077e+00,1.056790e+00,1.058483e+00,1.060156e+00,1.061810e+00,1.063446e+00,1.065062e+00,
-1.066661e+00,1.068243e+00,1.069807e+00,1.071355e+00,1.072886e+00,1.074402e+00,1.075902e+00,
-1.077388e+00,1.078859e+00,1.080316e+00,1.081759e+00,1.083190e+00,1.084607e+00,1.086012e+00,
-1.087404e+00,1.088785e+00,1.090155e+00,1.091513e+00,1.092861e+00,1.094198e+00,1.095525e+00,
-1.096843e+00,1.098150e+00,1.099449e+00,1.100739e+00,1.102020e+00,1.103292e+00,1.104557e+00,
-1.105813e+00,1.107062e+00,1.108303e+00,1.109537e+00,1.110764e+00,1.111984e+00,1.113197e+00,
-1.114404e+00,1.115605e+00,1.116799e+00,1.117988e+00,1.119171e+00,1.120348e+00,1.121520e+00,
-1.122687e+00,1.123848e+00,1.125005e+00,1.126156e+00,1.127304e+00,1.128446e+00,1.129584e+00,
-1.130718e+00,1.131848e+00,1.132973e+00,1.134095e+00,1.135213e+00,1.136328e+00,1.137438e+00,
-1.138545e+00,1.139649e+00,1.140750e+00,1.141847e+00,1.142942e+00,1.144033e+00,1.145122e+00,
-1.146208e+00,1.147291e+00,1.148371e+00,1.149450e+00,1.150525e+00,1.151598e+00,1.152669e+00,
-1.153738e+00,1.154805e+00,1.155870e+00,1.156933e+00,1.157993e+00,1.159053e+00,1.160110e+00,
-1.161166e+00,1.162220e+00,1.163272e+00,1.164324e+00,1.165373e+00,1.166422e+00,1.167469e+00,
-1.168515e+00,1.169560e+00,1.170604e+00,1.171647e+00,1.172688e+00,1.173729e+00,1.174769e+00,
-1.175809e+00,1.176847e+00,1.177885e+00,1.178923e+00,1.179959e+00,1.180996e+00,1.182031e+00
-  };
-  static const G4double P112[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,2.669456e-03,7.210759e-03,
-1.353042e-02,2.197839e-02,3.274774e-02,4.604543e-02,6.366403e-02,8.759503e-02,1.184107e-01,
-1.567549e-01,2.073542e-01,2.742402e-01,3.588721e-01,4.647151e-01,6.017175e-01,7.735506e-01,
-9.845531e-01,1.248518e+00,1.572353e+00,1.961623e+00,2.423926e+00,2.965705e+00,3.560928e+00,
-4.163437e+00,4.766978e+00,5.327878e+00,5.831605e+00,6.280136e+00,6.672360e+00,7.014629e+00,
-7.314181e+00,7.575938e+00,7.806026e+00,8.009145e+00,8.188626e+00,8.348974e+00,8.491835e+00,
-8.620696e+00,8.737148e+00,8.843020e+00,8.940169e+00,9.029691e+00,9.112779e+00,9.190558e+00,
-9.263911e+00,9.333538e+00,9.400141e+00,9.464325e+00,9.526593e+00,9.587378e+00,9.647045e+00,
-9.705909e+00,9.764235e+00,9.822253e+00,9.880155e+00,9.938113e+00,9.996274e+00,1.005477e+01,
-1.011373e+01,1.017325e+01,1.023345e+01,1.029441e+01,1.035624e+01,1.041901e+01,1.048279e+01,
-1.054767e+01,1.061369e+01,1.068090e+01,1.074936e+01,1.081909e+01,1.089011e+01,1.096245e+01,
-1.103609e+01,1.111104e+01,1.118729e+01,1.126481e+01,1.134358e+01,1.142356e+01,1.150472e+01,
-1.158702e+01,1.167041e+01,1.175485e+01,1.184030e+01,1.192670e+01,1.201403e+01,1.210224e+01,
-1.219132e+01,1.228126e+01,1.237208e+01,1.246383e+01,1.255663e+01,1.265058e+01,1.274603e+01,
-1.284374e+01,1.294447e+01,1.304928e+01,1.315968e+01,1.327765e+01,1.340570e+01,1.354690e+01,
-1.370470e+01,1.388274e+01,1.408458e+01,1.431338e+01,1.457185e+01,1.486217e+01,1.518618e+01,
-1.554557e+01,1.594212e+01,1.637787e+01,1.685527e+01,1.737730e+01,1.794750e+01,1.857000e+01,
-1.924953e+01,1.999143e+01,2.080156e+01,2.168625e+01,2.265222e+01,2.370633e+01,2.485539e+01,
-2.610582e+01,2.746321e+01,2.893183e+01,3.051411e+01,3.221007e+01,3.401687e+01,3.592851e+01,
-3.793576e+01,4.002641e+01,4.218581e+01,4.439773e+01,4.664525e+01,4.891184e+01,5.118231e+01,
-5.344347e+01,5.568452e+01,5.789724e+01,6.007592e+01,6.221721e+01,6.431975e+01,6.638393e+01,
-6.841150e+01,7.040530e+01,7.236897e+01,7.430671e+01,7.622307e+01,7.812281e+01,8.001079e+01,
-8.189187e+01,8.377082e+01,8.565227e+01,8.754065e+01,8.944017e+01,9.135476e+01,9.328811e+01,
-9.524359e+01,9.722429e+01,9.923302e+01,1.012723e+02,1.033445e+02,1.054517e+02,1.075958e+02,
-1.097786e+02,1.120016e+02,1.142666e+02,1.165748e+02,1.189278e+02,1.213268e+02,1.237731e+02,
-1.262679e+02,1.288124e+02,1.314077e+02,1.340547e+02,1.367544e+02,1.395077e+02,1.423154e+02,
-1.451783e+02,1.480970e+02,1.510722e+02,1.541047e+02,1.571950e+02,1.603439e+02,1.635520e+02,
-1.668202e+02,1.701491e+02,1.735398e+02,1.769930e+02,1.805099e+02,1.840917e+02,1.877394e+02,
-1.914545e+02,1.952384e+02,1.990926e+02,2.030187e+02,2.070186e+02,2.110939e+02,2.152468e+02,
-2.194793e+02,2.237936e+02,2.281918e+02,2.326765e+02,2.372501e+02,2.419151e+02,2.466743e+02,
-2.515305e+02,2.564865e+02,2.615454e+02,2.667102e+02,2.719843e+02,2.773708e+02,2.828733e+02,
-2.884953e+02,2.942405e+02,3.001125e+02,3.061153e+02,3.122530e+02,3.185296e+02,3.249493e+02,
-3.315166e+02,3.382361e+02,3.451123e+02,3.521500e+02,3.593542e+02,3.667299e+02,3.742825e+02,
-3.820173e+02,3.899398e+02,3.980558e+02,4.063711e+02,4.148920e+02,4.236245e+02,4.325751e+02,
-4.417506e+02,4.511576e+02,4.608034e+02,4.706951e+02,4.808402e+02,4.912465e+02,5.019218e+02,
-5.128744e+02,5.241128e+02,5.356456e+02,5.474817e+02,5.596305e+02,5.721016e+02,5.849046e+02,
-5.980497e+02,6.115475e+02,6.254086e+02,6.396443e+02,6.542659e+02,6.692852e+02,6.847145e+02,
-7.005664e+02,7.168537e+02,7.335900e+02,7.507889e+02,7.684647e+02,7.866322e+02,8.053064e+02,
-8.245030e+02,8.442381e+02,8.645283e+02,8.853909e+02,9.068435e+02,9.289045e+02,9.515927e+02,
-9.749276e+02,9.989293e+02,1.023618e+03,1.049017e+03,1.075146e+03,1.102029e+03,1.129689e+03,
-1.158151e+03,1.187440e+03,1.217582e+03,1.248602e+03,1.280530e+03,1.313394e+03,1.347222e+03,
-1.382046e+03,1.417896e+03,1.454806e+03,1.492808e+03,1.531936e+03,1.572228e+03,1.613719e+03,
-1.656447e+03,1.700453e+03,1.745775e+03,1.792457e+03,1.840541e+03,1.890072e+03,1.941097e+03
-  };
-  static const G4double P212[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.684810e-02,4.632984e-02,
-8.871441e-02,1.472267e-01,2.242564e-01,3.224773e-01,4.569173e-01,6.454442e-01,8.960796e-01,
-1.218055e+00,1.656827e+00,2.255513e+00,3.037441e+00,4.046981e+00,5.395760e+00,7.141687e+00,
-9.354437e+00,1.221137e+01,1.582824e+01,2.031476e+01,2.581295e+01,3.246157e+01,3.999597e+01,
-4.786507e+01,5.599726e+01,6.379332e+01,7.101625e+01,7.765137e+01,8.363657e+01,8.902498e+01,
-9.388937e+01,9.827447e+01,1.022502e+02,1.058707e+02,1.091704e+02,1.122111e+02,1.150053e+02,
-1.176048e+02,1.200277e+02,1.222995e+02,1.244494e+02,1.264926e+02,1.284483e+02,1.303362e+02,
-1.321723e+02,1.339697e+02,1.357426e+02,1.375044e+02,1.392669e+02,1.410410e+02,1.428367e+02,
-1.446633e+02,1.465296e+02,1.484437e+02,1.504133e+02,1.524461e+02,1.545493e+02,1.567303e+02,
-1.589966e+02,1.613556e+02,1.638152e+02,1.663834e+02,1.690685e+02,1.718788e+02,1.748232e+02,
-1.779103e+02,1.811492e+02,1.845488e+02,1.881180e+02,1.918658e+02,1.958012e+02,1.999327e+02,
-2.042690e+02,2.088184e+02,2.135892e+02,2.185894e+02,2.238267e+02,2.293087e+02,2.350430e+02,
-2.410367e+02,2.472972e+02,2.538316e+02,2.606472e+02,2.677517e+02,2.751528e+02,2.828593e+02,
-2.908809e+02,2.992293e+02,3.079187e+02,3.169676e+02,3.264006e+02,3.362449e+02,3.465537e+02,
-3.574312e+02,3.689892e+02,3.813869e+02,3.948465e+02,4.096708e+02,4.262580e+02,4.451096e+02,
-4.668260e+02,4.920818e+02,5.215910e+02,5.560706e+02,5.962149e+02,6.426899e+02,6.961495e+02,
-7.572662e+02,8.267702e+02,9.054874e+02,9.943751e+02,1.094553e+03,1.207331e+03,1.334230e+03,
-1.477006e+03,1.637665e+03,1.818480e+03,2.021994e+03,2.251016e+03,2.508599e+03,2.797992e+03,
-3.122568e+03,3.485707e+03,3.890646e+03,4.340289e+03,4.837003e+03,5.382390e+03,5.977096e+03,
-6.620672e+03,7.311514e+03,8.046928e+03,8.823291e+03,9.636310e+03,1.048133e+04,1.135372e+04,
-1.224914e+04,1.316377e+04,1.409450e+04,1.503898e+04,1.599568e+04,1.696385e+04,1.794346e+04,
-1.893518e+04,1.994025e+04,2.096045e+04,2.199802e+04,2.305557e+04,2.413607e+04,2.524277e+04,
-2.637920e+04,2.754912e+04,2.875647e+04,3.000538e+04,3.130013e+04,3.264512e+04,3.404488e+04,
-3.550403e+04,3.702724e+04,3.861931e+04,4.028511e+04,4.202960e+04,4.385786e+04,4.577509e+04,
-4.778667e+04,4.989812e+04,5.211519e+04,5.444383e+04,5.689024e+04,5.946088e+04,6.216245e+04,
-6.500194e+04,6.798661e+04,7.112399e+04,7.442190e+04,7.788844e+04,8.153200e+04,8.536127e+04,
-8.938526e+04,9.361335e+04,9.805527e+04,1.027212e+05,1.076216e+05,1.127678e+05,1.181712e+05,
-1.238442e+05,1.297996e+05,1.360510e+05,1.426127e+05,1.495000e+05,1.567288e+05,1.643162e+05,
-1.722801e+05,1.806398e+05,1.894154e+05,1.986284e+05,2.083016e+05,2.184591e+05,2.291266e+05,
-2.403312e+05,2.521018e+05,2.644689e+05,2.774648e+05,2.911240e+05,3.054827e+05,3.205795e+05,
-3.364554e+05,3.531535e+05,3.707199e+05,3.892030e+05,4.086544e+05,4.291288e+05,4.506839e+05,
-4.733811e+05,4.972852e+05,5.224649e+05,5.489933e+05,5.769474e+05,6.064091e+05,6.374651e+05,
-6.702071e+05,7.047325e+05,7.411446e+05,7.795524e+05,8.200720e+05,8.628259e+05,9.079443e+05,
-9.555652e+05,1.005835e+06,1.058907e+06,1.114948e+06,1.174130e+06,1.236639e+06,1.302669e+06,
-1.372430e+06,1.446140e+06,1.524033e+06,1.606356e+06,1.693372e+06,1.785359e+06,1.882612e+06,
-1.985444e+06,2.094187e+06,2.209195e+06,2.330839e+06,2.459517e+06,2.595650e+06,2.739683e+06,
-2.892091e+06,3.053375e+06,3.224069e+06,3.404739e+06,3.595986e+06,3.798446e+06,4.012797e+06,
-4.239756e+06,4.480087e+06,4.734597e+06,5.004147e+06,5.289647e+06,5.592067e+06,5.912434e+06,
-6.251840e+06,6.611444e+06,6.992476e+06,7.396245e+06,7.824137e+06,8.277627e+06,8.758281e+06,
-9.267762e+06,9.807836e+06,1.038038e+07,1.098738e+07,1.163097e+07,1.231338e+07,1.303701e+07,
-1.380440e+07,1.461824e+07,1.548140e+07,1.639693e+07,1.736806e+07,1.839823e+07,1.949109e+07,
-2.065053e+07,2.188068e+07,2.318592e+07,2.457091e+07,2.604061e+07,2.760029e+07,2.925554e+07,
-3.101232e+07,3.287695e+07,3.485616e+07,3.695711e+07,3.918738e+07,4.155507e+07,4.406876e+07
-  };
-  static const G4double P013[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,3.486588e-04,9.620452e-04,1.718673e-03,2.622926e-03,3.703060e-03,
-5.154692e-03,7.030543e-03,9.343593e-03,1.210723e-02,1.562440e-02,2.020681e-02,2.588705e-02,
-3.270264e-02,4.120096e-02,5.179545e-02,6.455027e-02,7.958144e-02,9.716667e-02,1.174069e-01,
-1.402537e-01,1.647614e-01,1.907608e-01,2.180777e-01,2.456543e-01,2.733481e-01,3.011684e-01,
-3.291280e-01,3.571385e-01,3.844637e-01,4.109055e-01,4.353907e-01,4.572419e-01,4.764803e-01,
-4.931270e-01,5.074779e-01,5.198558e-01,5.305684e-01,5.398436e-01,5.479555e-01,5.550351e-01,
-5.612855e-01,5.668161e-01,5.717392e-01,5.761608e-01,5.801498e-01,5.837742e-01,5.870950e-01,
-5.901599e-01,5.930068e-01,5.956710e-01,5.981820e-01,6.005639e-01,6.028363e-01,6.050157e-01,
-6.071155e-01,6.091467e-01,6.111183e-01,6.130377e-01,6.149109e-01,6.167431e-01,6.185383e-01,
-6.203001e-01,6.220315e-01,6.237350e-01,6.254128e-01,6.270666e-01,6.286979e-01,6.303078e-01,
-6.318973e-01,6.334668e-01,6.350169e-01,6.365477e-01,6.380590e-01,6.395509e-01,6.410229e-01,
-6.424746e-01,6.439056e-01,6.453153e-01,6.467032e-01,6.480686e-01,6.494110e-01,6.507298e-01,
-6.520247e-01,6.532950e-01,6.545406e-01,6.557611e-01,6.569564e-01,6.581265e-01,6.592715e-01,
-6.603918e-01,6.614881e-01,6.625614e-01,6.636131e-01,6.646453e-01,6.656609e-01,6.666658e-01,
-6.676680e-01,6.686761e-01,6.697018e-01,6.707597e-01,6.718679e-01,6.730471e-01,6.743195e-01,
-6.757071e-01,6.772293e-01,6.789009e-01,6.807315e-01,6.827259e-01,6.848850e-01,6.872080e-01,
-6.896938e-01,6.923421e-01,6.951548e-01,6.981356e-01,7.012908e-01,7.046287e-01,7.081597e-01,
-7.118958e-01,7.158503e-01,7.200374e-01,7.244715e-01,7.291667e-01,7.341357e-01,7.393889e-01,
-7.449331e-01,7.507700e-01,7.568949e-01,7.632950e-01,7.699485e-01,7.768239e-01,7.838803e-01,
-7.910682e-01,7.983318e-01,8.056115e-01,8.128477e-01,8.199835e-01,8.269680e-01,8.337591e-01,
-8.403238e-01,8.466393e-01,8.526920e-01,8.584765e-01,8.639943e-01,8.692526e-01,8.742622e-01,
-8.790371e-01,8.835929e-01,8.879462e-01,8.921136e-01,8.961116e-01,8.999559e-01,9.036615e-01,
-9.072423e-01,9.107112e-01,9.140799e-01,9.173590e-01,9.205578e-01,9.236848e-01,9.267473e-01,
-9.297517e-01,9.327034e-01,9.356072e-01,9.384670e-01,9.412861e-01,9.440675e-01,9.468134e-01,
-9.495258e-01,9.522065e-01,9.548567e-01,9.574777e-01,9.600704e-01,9.626357e-01,9.651742e-01,
-9.676864e-01,9.701728e-01,9.726336e-01,9.750691e-01,9.774794e-01,9.798646e-01,9.822246e-01,
-9.845594e-01,9.868688e-01,9.891530e-01,9.914116e-01,9.936448e-01,9.958524e-01,9.980344e-01,
-1.000191e+00,1.002322e+00,1.004428e+00,1.006508e+00,1.008564e+00,1.010594e+00,1.012601e+00,
-1.014583e+00,1.016542e+00,1.018478e+00,1.020391e+00,1.022281e+00,1.024150e+00,1.025997e+00,
-1.027824e+00,1.029630e+00,1.031416e+00,1.033183e+00,1.034931e+00,1.036661e+00,1.038373e+00,
-1.040068e+00,1.041746e+00,1.043408e+00,1.045054e+00,1.046684e+00,1.048300e+00,1.049901e+00,
-1.051488e+00,1.053062e+00,1.054622e+00,1.056169e+00,1.057704e+00,1.059227e+00,1.060738e+00,
-1.062238e+00,1.063727e+00,1.065205e+00,1.066673e+00,1.068130e+00,1.069578e+00,1.071017e+00,
-1.072446e+00,1.073866e+00,1.075278e+00,1.076681e+00,1.078076e+00,1.079463e+00,1.080843e+00,
-1.082215e+00,1.083579e+00,1.084937e+00,1.086288e+00,1.087632e+00,1.088970e+00,1.090301e+00,
-1.091626e+00,1.092946e+00,1.094259e+00,1.095567e+00,1.096870e+00,1.098168e+00,1.099460e+00,
-1.100747e+00,1.102030e+00,1.103308e+00,1.104581e+00,1.105850e+00,1.107115e+00,1.108376e+00,
-1.109632e+00,1.110885e+00,1.112134e+00,1.113379e+00,1.114621e+00,1.115859e+00,1.117094e+00,
-1.118326e+00,1.119555e+00,1.120780e+00,1.122003e+00,1.123223e+00,1.124440e+00,1.125655e+00,
-1.126867e+00,1.128077e+00,1.129284e+00,1.130489e+00,1.131692e+00,1.132893e+00,1.134092e+00,
-1.135289e+00,1.136484e+00,1.137677e+00,1.138868e+00,1.140058e+00,1.141247e+00,1.142434e+00,
-1.143619e+00,1.144803e+00,1.145986e+00,1.147168e+00,1.148349e+00,1.149528e+00,1.150707e+00,
-1.151884e+00,1.153061e+00,1.154237e+00,1.155413e+00,1.156587e+00,1.157761e+00,1.158935e+00
-  };
-  static const G4double P113[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,1.995454e-03,5.606334e-03,1.020784e-02,1.588884e-02,2.290033e-02,
-3.263520e-02,4.562653e-02,6.216957e-02,8.258086e-02,1.094157e-01,1.455118e-01,1.917068e-01,
-2.489316e-01,3.226120e-01,4.174284e-01,5.352577e-01,6.785911e-01,8.516731e-01,1.057284e+00,
-1.296801e+00,1.561942e+00,1.852224e+00,2.166939e+00,2.494770e+00,2.834492e+00,3.186635e+00,
-3.551797e+00,3.929232e+00,4.309095e+00,4.688324e+00,5.050545e+00,5.384012e+00,5.686875e+00,
-5.957193e+00,6.197595e+00,6.411465e+00,6.602403e+00,6.772914e+00,6.926734e+00,7.065197e+00,
-7.191277e+00,7.306340e+00,7.411974e+00,7.509819e+00,7.600857e+00,7.686161e+00,7.766762e+00,
-7.843477e+00,7.916960e+00,7.987876e+00,8.056797e+00,8.124211e+00,8.190532e+00,8.256119e+00,
-8.321275e+00,8.386263e+00,8.451305e+00,8.516592e+00,8.582289e+00,8.648537e+00,8.715465e+00,
-8.783185e+00,8.851798e+00,8.921398e+00,8.992070e+00,9.063890e+00,9.136925e+00,9.211233e+00,
-9.286866e+00,9.363861e+00,9.442250e+00,9.522053e+00,9.603281e+00,9.685935e+00,9.770007e+00,
-9.855482e+00,9.942335e+00,1.003054e+01,1.012005e+01,1.021082e+01,1.030282e+01,1.039600e+01,
-1.049029e+01,1.058565e+01,1.068203e+01,1.077938e+01,1.087765e+01,1.097681e+01,1.107684e+01,
-1.117772e+01,1.127947e+01,1.138215e+01,1.148585e+01,1.159077e+01,1.169718e+01,1.180571e+01,
-1.191727e+01,1.203294e+01,1.215425e+01,1.228322e+01,1.242248e+01,1.257521e+01,1.274509e+01,
-1.293604e+01,1.315194e+01,1.339632e+01,1.367216e+01,1.398189e+01,1.432750e+01,1.471074e+01,
-1.513342e+01,1.559757e+01,1.610563e+01,1.666058e+01,1.726601e+01,1.792615e+01,1.864590e+01,
-1.943082e+01,2.028712e+01,2.122158e+01,2.224152e+01,2.335462e+01,2.456876e+01,2.589168e+01,
-2.733069e+01,2.889211e+01,3.058077e+01,3.239937e+01,3.434789e+01,3.642310e+01,3.861815e+01,
-4.092260e+01,4.332263e+01,4.580166e+01,4.834130e+01,5.092240e+01,5.352617e+01,5.613531e+01,
-5.873476e+01,6.131210e+01,6.385783e+01,6.636527e+01,6.883039e+01,7.125148e+01,7.362876e+01,
-7.596408e+01,7.826048e+01,8.052200e+01,8.275327e+01,8.495940e+01,8.714572e+01,8.931771e+01,
-9.148086e+01,9.364060e+01,9.580217e+01,9.797066e+01,1.001509e+02,1.023474e+02,1.045645e+02,
-1.068062e+02,1.090760e+02,1.113772e+02,1.137131e+02,1.160862e+02,1.184992e+02,1.209544e+02,
-1.234539e+02,1.259998e+02,1.285938e+02,1.312377e+02,1.339332e+02,1.366818e+02,1.394850e+02,
-1.423440e+02,1.452603e+02,1.482350e+02,1.512691e+02,1.543638e+02,1.575200e+02,1.607384e+02,
-1.640199e+02,1.673652e+02,1.707750e+02,1.742501e+02,1.777910e+02,1.813985e+02,1.850734e+02,
-1.888164e+02,1.926284e+02,1.965104e+02,2.004634e+02,2.044885e+02,2.085870e+02,2.127603e+02,
-2.170098e+02,2.213372e+02,2.257441e+02,2.302324e+02,2.348040e+02,2.394612e+02,2.442060e+02,
-2.490408e+02,2.539681e+02,2.589904e+02,2.641105e+02,2.693311e+02,2.746552e+02,2.800858e+02,
-2.856261e+02,2.912794e+02,2.970490e+02,3.029386e+02,3.089517e+02,3.150921e+02,3.213638e+02,
-3.277707e+02,3.343169e+02,3.410068e+02,3.478447e+02,3.548352e+02,3.619830e+02,3.692928e+02,
-3.767697e+02,3.844189e+02,3.922454e+02,4.002549e+02,4.084528e+02,4.168450e+02,4.254374e+02,
-4.342361e+02,4.432473e+02,4.524776e+02,4.619337e+02,4.716224e+02,4.815508e+02,4.917263e+02,
-5.021563e+02,5.128485e+02,5.238111e+02,5.350521e+02,5.465802e+02,5.584039e+02,5.705323e+02,
-5.829747e+02,5.957407e+02,6.088401e+02,6.222830e+02,6.360800e+02,6.502418e+02,6.647796e+02,
-6.797048e+02,6.950292e+02,7.107652e+02,7.269252e+02,7.435222e+02,7.605696e+02,7.780812e+02,
-7.960713e+02,8.145545e+02,8.335460e+02,8.530613e+02,8.731166e+02,8.937286e+02,9.149143e+02,
-9.366915e+02,9.590784e+02,9.820938e+02,1.005757e+03,1.030089e+03,1.055109e+03,1.080839e+03,
-1.107302e+03,1.134519e+03,1.162515e+03,1.191313e+03,1.220939e+03,1.251419e+03,1.282778e+03,
-1.315045e+03,1.348248e+03,1.382416e+03,1.417580e+03,1.453770e+03,1.491019e+03,1.529361e+03,
-1.568829e+03,1.609460e+03,1.651289e+03,1.694355e+03,1.738697e+03,1.784354e+03,1.831369e+03,
-1.879785e+03,1.929646e+03,1.980999e+03,2.033889e+03,2.088367e+03,2.144482e+03,2.202288e+03
-  };
-  static const G4double P213[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,1.142094e-02,3.267935e-02,6.066632e-02,9.636049e-02,1.418783e-01,
-2.071675e-01,2.971476e-01,4.154746e-01,5.662385e-01,7.709965e-01,1.055354e+00,1.431069e+00,
-1.911579e+00,2.550442e+00,3.399081e+00,4.487682e+00,5.854588e+00,7.558283e+00,9.647155e+00,
-1.215838e+01,1.502709e+01,1.826833e+01,2.189443e+01,2.579202e+01,2.995976e+01,3.441746e+01,
-3.918699e+01,4.427325e+01,4.955437e+01,5.499373e+01,6.035267e+01,6.544206e+01,7.021030e+01,
-7.460021e+01,7.862768e+01,8.232331e+01,8.572679e+01,8.886164e+01,9.177863e+01,9.448690e+01,
-9.703032e+01,9.942442e+01,1.016911e+02,1.038565e+02,1.059344e+02,1.079422e+02,1.098987e+02,
-1.118190e+02,1.137160e+02,1.156037e+02,1.174956e+02,1.194037e+02,1.213395e+02,1.233134e+02,
-1.253353e+02,1.274148e+02,1.295607e+02,1.317816e+02,1.340858e+02,1.364815e+02,1.389768e+02,
-1.415800e+02,1.442993e+02,1.471432e+02,1.501202e+02,1.532394e+02,1.565095e+02,1.599395e+02,
-1.635387e+02,1.673159e+02,1.712805e+02,1.754412e+02,1.798071e+02,1.843868e+02,1.891890e+02,
-1.942219e+02,1.994937e+02,2.050125e+02,2.107860e+02,2.168218e+02,2.231274e+02,2.297101e+02,
-2.365773e+02,2.437362e+02,2.511944e+02,2.589596e+02,2.670399e+02,2.754442e+02,2.841827e+02,
-2.932671e+02,3.027119e+02,3.125358e+02,3.227634e+02,3.334288e+02,3.445781e+02,3.563001e+02,
-3.687193e+02,3.819927e+02,3.963408e+02,4.120653e+02,4.295658e+02,4.493503e+02,4.720319e+02,
-4.983109e+02,5.289362e+02,5.646649e+02,6.062317e+02,6.543377e+02,7.096627e+02,7.728953e+02,
-8.447731e+02,9.261237e+02,1.017903e+03,1.121228e+03,1.237410e+03,1.367978e+03,1.514703e+03,
-1.679620e+03,1.865051e+03,2.073617e+03,2.308241e+03,2.572149e+03,2.868835e+03,3.202016e+03,
-3.575541e+03,3.993264e+03,4.458871e+03,4.975670e+03,5.546355e+03,6.172760e+03,6.855637e+03,
-7.594502e+03,8.387576e+03,9.231842e+03,1.012323e+04,1.105692e+04,1.202765e+04,1.303017e+04,
-1.405955e+04,1.511144e+04,1.618224e+04,1.726924e+04,1.837063e+04,1.948547e+04,2.061368e+04,
-2.175592e+04,2.291353e+04,2.408848e+04,2.528322e+04,2.650068e+04,2.774417e+04,2.901736e+04,
-3.032420e+04,3.166894e+04,3.305604e+04,3.449021e+04,3.597630e+04,3.751935e+04,3.912456e+04,
-4.079722e+04,4.254275e+04,4.436670e+04,4.627470e+04,4.827254e+04,5.036614e+04,5.256157e+04,
-5.486506e+04,5.728307e+04,5.982226e+04,6.248955e+04,6.529208e+04,6.823731e+04,7.133295e+04,
-7.458700e+04,7.800776e+04,8.160383e+04,8.538411e+04,8.935781e+04,9.353444e+04,9.792387e+04,
-1.025363e+05,1.073824e+05,1.124731e+05,1.178200e+05,1.234350e+05,1.293307e+05,1.355202e+05,
-1.420175e+05,1.488372e+05,1.559945e+05,1.635058e+05,1.713882e+05,1.796600e+05,1.883405e+05,
-1.974500e+05,2.070104e+05,2.170444e+05,2.275766e+05,2.386327e+05,2.502401e+05,2.624280e+05,
-2.752272e+05,2.886704e+05,3.027922e+05,3.176294e+05,3.332210e+05,3.496083e+05,3.668349e+05,
-3.849474e+05,4.039947e+05,4.240291e+05,4.451057e+05,4.672829e+05,4.906228e+05,5.151909e+05,
-5.410568e+05,5.682940e+05,5.969807e+05,6.271995e+05,6.590381e+05,6.925891e+05,7.279509e+05,
-7.652278e+05,8.045300e+05,8.459747e+05,8.896858e+05,9.357945e+05,9.844402e+05,1.035770e+06,
-1.089941e+06,1.147119e+06,1.207478e+06,1.271207e+06,1.338501e+06,1.409570e+06,1.484636e+06,
-1.563934e+06,1.647715e+06,1.736241e+06,1.829794e+06,1.928671e+06,2.033188e+06,2.143679e+06,
-2.260499e+06,2.384024e+06,2.514653e+06,2.652811e+06,2.798946e+06,2.953535e+06,3.117084e+06,
-3.290130e+06,3.473241e+06,3.667023e+06,3.872116e+06,4.089200e+06,4.318999e+06,4.562278e+06,
-4.819852e+06,5.092583e+06,5.381389e+06,5.687242e+06,6.011176e+06,6.354288e+06,6.717741e+06,
-7.102774e+06,7.510697e+06,7.942907e+06,8.400882e+06,8.886195e+06,9.400517e+06,9.945620e+06,
-1.052339e+07,1.113582e+07,1.178504e+07,1.247331e+07,1.320302e+07,1.397672e+07,1.479713e+07,
-1.566710e+07,1.658970e+07,1.756817e+07,1.860597e+07,1.970674e+07,2.087440e+07,2.211307e+07,
-2.342715e+07,2.482132e+07,2.630054e+07,2.787009e+07,2.953558e+07,3.130298e+07,3.317862e+07,
-3.516924e+07,3.728200e+07,3.952452e+07,4.190489e+07,4.443171e+07,4.711414e+07,4.996191e+07
-};
-  static const G4double* P0[nN]=
-                             {P00,P01,P02,P03,P04,P05,P06,P07,P08,P09,P010,P011,P012,P013};
-  static const G4double* P1[nN]=
-                             {P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P110,P111,P112,P113};
-  static const G4double* P2[nN]=
-                             {P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,P210,P211,P212,P213};
-  // --------------------------------
-#ifdef pdebug
-  G4cout<<"G4QElNucCroSect::GetFunctions is called A="<<a<<G4endl;
-#endif
-  G4int r=-1;                             // Low channel for J-functions
-  if(a<=.9999 || a>238.49)                // Plutonium 244 and higher are forbidden
-  {
-    G4cout<<"***G4QElectronNuclearCrossSection::GetFunctions: A="<<a<<"(?). No CS"<<G4endl;
-    return r;
-  }
-  G4int iA=static_cast<G4int>(a+.499);    // Make the round integer of the atomic number
-  G4double ai=iA;
-  if(a!=ai) a=ai;
-  for(G4int i=0; i<nN; i++)
-  {
-    if(std::fabs(a-A[i])<.5)              // if A coincides with the basic A, get from Tab
-    {
-      for(G4int k=0; k<nE; k++)
-      {
-        x[k]=P0[i][k];                    // J0
-        y[k]=P1[i][k];                    // J1
-        z[k]=P2[i][k];                    // J2
-#ifdef pdebug
-        G4cout<<"G4QElNucCroSect::GetFunctions:exact A="<<a<<",i="<<k<<",J1="<<x[k]<<",J2="
-              <<y[k]<<",J3="<<z[k]<<G4endl;
-#endif
-      }
-      r=L[i];                             // Low channel for the J-functions
-    }
-    if(r<0)                               // Not the basic A-value -> must be calculated
-    {
-      G4int k=0;                          // !! To be good for different compilers !!
-      for(k=1; k<nN; k++)if(a<A[k]) break;// Find the top basic A-value
-      if(k<1) k=1;                        // Extrapolation from the first bin (D)
-      if(k>=nN) k=nN-1;                   // Extrapolation from the last bin (U)
-      G4int     k1=k-1;
-      G4double  xi=A[k1];
-      G4double   b=(a-xi)/(A[k]-xi);
-      for(G4int m=0; m<nE; m++)
-      {
-        G4double xi=P0[k1][m];
-        x[m]=xi+(P0[k][m]-xi)*b;
-        G4double yi=P1[k1][m];
-        y[m]=yi+(P1[k][m]-yi)*b;
-        G4double zi=P2[k1][m];
-        z[m]=zi+(P2[k][m]-zi)*b;
-#ifdef pdebug
-        G4cout<<"G4QElNucCroSect::GetFunctions:inter A="<<a<<",i="<<m<<",J1="<<x[k]<<",J2="
-              <<y[k]<<",J3="<<z[k]<<G4endl;
-#endif
-      }
-      r=L[k];
-      if(L[k1]<r) r=L[k1];
-    }
-  }
-  return r;
-}
-
-G4double G4QElectronNuclearCrossSection::GetExchangeEnergy()
-{
-  // @@ All constants are copy of that from PhotonCrossSection funct. => Make them general.
-  static const G4int nE=336; // !!  If change this, change it in GetFunctions() (*.hh) !!
-  static const G4int mL=nE-1;
-  static const G4double EMi=2.0612;          // Minimum Energy
-  static const G4double EMa=50000.;          // Maximum Energy
-  static const G4double lEMi=std::log(EMi);       // Minimum logarithmic Energy
-  static const G4double lEMa=std::log(EMa);       // Maximum logarithmic Energy
-  static const G4double dlnE=(lEMa-lEMi)/mL; // Logarithmic step in Energy
-  static const G4double mel=0.5109989;       // Mass of electron in MeV
-  static const G4double lmel=std::log(mel);       // Log of electron mass
-  G4double phLE=0.;                     // Prototype of the log(nu=E_gamma)
-  G4double Y[nE];                       // Prepare the array for randomization
-#ifdef debug
-  G4cout<<"G4QElectronNuclearCroSect::GetExEn:"<<lastF<<",L="<<lastL<<",1="<<lastJ1[lastL]
-        <<",2="<<lastJ2[lastL]<<",3="<<lastJ3[lastL]<<",S="<<lastSig<<",E="<<lastE<<G4endl;
-#endif
-  G4double lastLE=lastG+lmel;           // recover log(eE) from the gamma (lastG)
-  G4double dlg1=lastG+lastG-1.;
-  G4double lgoe=lastG/lastE;
-  for(G4int i=lastF;i<=lastL;i++)
-                          Y[i]=dlg1*lastJ1[i]-lgoe*(lastJ2[i]+lastJ2[i]-lastJ3[i]/lastE);
-  G4double ris=lastSig*G4UniformRand(); // If Sig > Y[lastL=mL] -> it is in functRegion
-#ifdef debug
-  G4cout<<"G4QElectronNuclearCrossSection::GetExchEnergy: "<<ris<<",Y="<<Y[lastL]<<G4endl;
-#endif
-  if(ris<Y[lastL])                      // Search in the table
-  {
- G4int j=lastF;
-    G4double Yj=Y[j];                   // It mast be 0 (some times just very small)
-    while (ris>Yj && j<lastL)           // Associative search
-    {
-      j++;
-      Yj=Y[j];                          // High value
-    }
-    G4int j1=j-1;
-    G4double Yi=Y[j1];                  // Low value
-    phLE=lEMi+(j1+(ris-Yi)/(Yj-Yi))*dlnE;
-#ifdef debug
- G4cout<<"G4QElectronNucCS::GetExchEn="<<phLE<<",l="<<lEMi<<",j="<<j<<",ris="<<ris<<",Yi="
-       <<Yi<<",Y="<<Yj<<G4endl;
-#endif
-  }
-  else                                  // Search with the function
-  {
-    if(lastL<mL)G4cerr<<"G4QElNCS::GEE:L="<<lastL<<",S="<<lastSig<<",Y="<<Y[lastL]<<G4endl;
-    G4double f=(ris-Y[lastL])/lastH;    // ScaledResidualValue of the CrossSection integral
-#ifdef pdebug
-    G4cout<<"G4QElNucCS::GetExEn:HighEnergy f="<<f<<",ris="<<ris<<",lastH="<<lastH<<G4endl;
-#endif
-    phLE=SolveTheEquation(f);      // Solve equation to find Log(phE) (compare with lastLE)
-#ifdef pdebug
-    G4cout<<"G4QElectronNuclearCS::GetExchangeEnergy: HighEnergy lphE="<<phLE<<G4endl;
-#endif
-  }
-  if(phLE>lastLE)
-  {
-    G4cerr<<"***G4QElNucCS::GetExEn:N="<<lastN<<",Z="<<lastZ<<", lpE"<<phLE<<">leE"<<lastLE
-        <<",S="<<lastSig<<",rS="<<ris<<",B="<<lastF<<",E="<<lastL<<",Y="<<Y[lastL]<<G4endl;
-    if(lastLE<7.2) phLE=std::log(std::exp(lastLE)-.511);
-    else phLE=7.;
-  }
-  return std::exp(phLE);
-}
-
-G4double G4QElectronNuclearCrossSection::SolveTheEquation(G4double f)
-{
-  // TheseParameters must correspond to ThatOf G4PhotonNuclearCrossSection::GetCrossSection
-  static const G4double shd=1.0734;                    // HE PomShadowing(D)
-  static const G4double poc=0.0375;                    // HE Pomeron coefficient
-  static const G4double pos=16.5;                      // HE Pomeron shift
-  static const G4double reg=.11;                       // HE Reggeon slope
-  static const G4double EMa=50000.;                    // Maximum Energy
-  static const G4double mel=0.5109989;                 // Mass of electron in MeV
-  static const G4double lmel=std::log(mel);                 // Log of electron mass
-  static const G4double z=std::log(EMa);                    // Initial argument
-  static const G4double p=poc*(z-pos)+shd*std::exp(-reg*z); // CrossX on theHighTableEdge
-  static const G4int    imax=27;   // Not more than "imax" steps to find the solution
-  static const G4double eps=0.001; // Accuracy which satisfies the search
-  G4double lastLE=lastG+lmel;                  // recover log(eE) from the gamma (lastG)
-  G4double topLim=lastLE-.001;                 // maximum log(phE) for equivalent photons
-  G4double rE=EMa/std::exp(lastLE);                 // r=EMa/Eel to make the firs guess
-  G4double x=z+f/p/(lastG*(2.-rE*(2.-rE))-1.); // First guess: the first step from the edge
-#ifdef pdebug
-  G4cout<<"G4QElNucCS::SolveTheEq: e="<<eps<<",f="<<f<<",z="<<z<<",p="<<p<<",lastG="<<lastG
-        <<",x="<<x<<G4endl;
-#endif
-  if(x>topLim) x=topLim;
-  for(G4int i=0; i<imax; i++)
-  {
-    G4double fx=Fun(x);
-    G4double df=DFun(x);
-    G4double d=(f-fx)/df;
-    x=x+d;
-#ifdef pdebug
-    G4cout<<"G4QENCS::SolveTheEq:i="<<i<<",d="<<d<<",x="<<x<<",f="<<fx<<",df="<<df<<G4endl;
-#endif
-    if(x>=lastLE)
-    {
-      G4cerr<<"*G4QElNCS::SolveTheEq:*Correction*"<<i<<",d="<<d<<",x="<<x<<">lE="<<lastLE
-            <<",f="<<f<<",fx="<<fx<<",df="<<df<<",A(Z="<<lastZ<<",N="<<lastN<<")"<<G4endl;
-      x=topLim;
-      if(i) G4Exception("G4QElectronNuclearCrossSection::SolveTheEquation()","009",
-                        FatalException,"E_photon>E_electron");
-    }
-    if(std::fabs(d)<eps) break;
-    if(i+1>=imax) G4cerr<<"*G4QENCS::SolveTE:"<<i+2<<">"<<imax<<"->Use bigger max. ln(eE)="
-                        <<lastLE<<",Z="<<lastZ<<", N="<<lastN<<G4endl;
-  }
-  return x;
-}
-
-G4double G4QElectronNuclearCrossSection::GetExchangeQ2(G4double nu)
-{
-  static const G4double mel=0.5109989;   // Mass of electron in MeV
-  static const G4double mel2=mel*mel;    // Squared Mass of electron in MeV
-  G4double y=nu/lastE;                   // Part of energy carried by the equivalent pfoton
-  if(y>=1.-1./(lastG+lastG)) return 0.;  // The region where the method does not work
-  G4double y2=y*y;                       // Squared photonic part of energy
-  G4double ye=1.-y;                      // Part of energy carried by secondary electron
-  G4double Qi2=mel2*y2/ye;               // Minimum Q2
-  G4double Qa2=4*lastE*lastE*ye;         // Maximum Q2
-  G4double iar=Qi2/Qa2;                  // Q2min/Q2max ratio
-  G4double Dy=ye+.5*y2;                  // D(y) function
-  G4double Py=ye/Dy;                     // P(y) function
-  G4double ePy=1.-std::exp(Py);          // 1-exp(P(y)) part
-  G4double Uy=Py*(1.-iar);               // U(y) function
-  G4double Fy=(ye+ye)*(1.+ye)*iar/y2;    // F(y) function
-  G4double fr=iar/(1.-ePy*iar);          // Q-fraction
-  if(Fy<=-fr)
-  {
-#ifdef edebug
-    G4cerr<<"**G4QElNucCrossSec::GetExQ2:Fy="<<Fy<<"+fr="<<fr<<" <0"<<",iar="<<iar<<G4endl;
-#endif
-    return 0.;
-  }    
-  G4double LyQa2=std::log(Fy+fr);        // L(y,Q2max) function
-  G4bool cond=true;
-  G4int maxTry=3;
-  G4int cntTry=0;
-  G4double Q2=Qi2;
-  while(cond&&cntTry<maxTry)             // The loop to avoid x>1.
-  {
-    G4double R=G4UniformRand();          // Random number (0,1)
-    Q2=Qi2*(ePy+1./(std::exp(R*LyQa2-(1.-R)*Uy)-Fy));
-    cntTry++;
-    cond = Q2>1878.*nu;
-  }
-  if(Q2<Qi2)
-  {
-#ifdef edebug
-    G4cerr<<"*G4QElectronNuclearCrossSec::GetExchangeQ2:Q2="<<Q2<<" < Q2min="<<Qi2<<G4endl;
-#endif
-    return Qi2;
-  }  
-  if(Q2>Qa2)
-  {
-#ifdef edebug
-    G4cerr<<"*G4QElectronNucCrossSection::GetExchangeQ2:Q2="<<Q2<<" > Q2max="<<Qi2<<G4endl;
-#endif
-    return Qa2;
-  }  
-  return Q2;
-}
-
-// This class can provide only virtual exchange photons for all nu's and Q2's
-G4int G4QElectronNuclearCrossSection::GetExchangePDGCode() {return 22;}
-
-G4double G4QElectronNuclearCrossSection::GetVirtualFactor(G4double nu, G4double Q2)
-{
-  static const G4double dM=938.27+939.57;// MeanDoubleNucleonMass = m_n+m_p(@@ no binding)
-  static const G4double Q0=843.;         // Coefficient of the dipole nucleonic form-factor
-  static const G4double Q02=Q0*Q0;       // SquaredCoefficient of dipoleNucleonicFormFactor
-  static const G4double blK0=std::log(185.); // Coefficient of the b-function
-  static const G4double bp=0.85;         // Power of the b-function
-  static const G4double clK0=std::log(1390.);// Coefficient of the c-function
-  static const G4double cp=3.;           // Power of the c-function
-  //G4double x=Q2/dM/nu;                 // Direct x definition
-  G4double K=nu-Q2/dM;                   // K=nu*(1-x)
-  if(K<0.)
-  {
-#ifdef edebug
-    G4cerr<<"**G4QEleNucCS::GetVirtFact:K="<<K<<",nu="<<nu<<",Q2="<<Q2<<",dM="<<dM<<G4endl;
-#endif
-    return 0.;
-  }
-  G4double lK=std::log(K);               // ln(K)
-  G4double x=1.-K/nu;                    // This definitin saves one div.
-  G4double GD=1.+Q2/Q02;                 // Reversed nucleonic form-factor
-  G4double b=std::exp(bp*(lK-blK0));     // b-factor
-  G4double c=std::exp(cp*(lK-clK0));     // c-factor
-  G4double r=.5*std::log(Q2+nu*nu)-lK;   // r=.5*log((Q^2+nu^2)/K^2)
-  G4double ef=std::exp(r*(b-c*r*r));     // exponential factor
-  return (1.-x)*ef/GD/GD;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QGluonString.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QGluonString.cc	(revision 1197)
+++ 	(revision )
@@ -1,603 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QGluonString.cc,v 1.4 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QGluonString class -----------------
-//                 by Mikhail Kossov, December 2003.
-// G4QGluonString class of the CHIPS Simulation Branch in GEANT4
-// ---------------------------------------------------------------
-// Short description: CHIPS object for the Quark-Gluon String
-// ---------------------------------------------------------------
-
-//#define debug
-//#define pdebug
-//#define ppdebug
-
-#include "G4QGluonString.hh"
-
-// Initialization of static vectors
-std::vector<G4int> G4QGluonString::ElementZ;       // Z of the element(i) in theLastCalc
-std::vector<G4double> G4QGluonString::ElProbInMat; // SumProbabilityElements in Material
-std::vector<std::vector<G4int>*> G4QGluonString::ElIsoN; // N of isotope(j) of Element(i)
-std::vector<std::vector<G4double>*>G4QGluonString::IsoProbInEl;//SumProbabIsotopeInElementI
-
-G4QGluonString::G4QGluonString(const G4String& processName):
- G4VDiscreteProcess(processName, fHadronic)
-{
-#ifdef debug
-  G4cout<<"G4QGluonString::Constructor is called"<<G4endl;
-#endif
-  if (verboseLevel>0) G4cout<<GetProcessName()<<" process is created by CHIPS"<<G4endl;
-  SetProcessSubType(fHadronInelastic);
-  G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World with 234 particles
-  G4QNucleus::SetParameters(freeNuc,freeDib,clustProb,mediRatio); // Clusterization param's
-  G4Quasmon::SetParameters(Temperature,SSin2Gluons,EtaEtaprime);  // Hadronic parameters
-  G4QEnvironment::SetParameters(SolidAngle); // SolAngle of pbar-A secondary mesons capture
-  //@@ Initialize here other parameters
-}
-
-G4bool   G4QGluonString::manualFlag=false; // If false then standard parameters are used
-G4double G4QGluonString::Temperature=180.; // Critical Temperature (sensitive at High En)
-G4double G4QGluonString::SSin2Gluons=0.3;  // Supression of s-quarks (in respect to u&d)
-G4double G4QGluonString::EtaEtaprime=0.3;  // Supression of eta mesons (gg->qq/3g->qq)
-G4double G4QGluonString::freeNuc=0.5;      // Percentage of free nucleons on the surface
-G4double G4QGluonString::freeDib=0.05;     // Percentage of free diBaryons on the surface
-G4double G4QGluonString::clustProb=5.;     // Nuclear clusterization parameter
-G4double G4QGluonString::mediRatio=10.;    // medium/vacuum hadronization ratio
-G4int    G4QGluonString::nPartCWorld=152;  // The#of particles initialized in CHIPS World
-G4double G4QGluonString::SolidAngle=0.5;   // Part of Solid Angle to capture (@@A-dep.)
-G4bool   G4QGluonString::EnergyFlux=false; // Flag for Energy Flux use (not MultyQuasmon)
-G4double G4QGluonString::PiPrThresh=141.4; // Pion Production Threshold for gammas
-G4double G4QGluonString::M2ShiftVir=20000.;// Shift for M2=-Q2=m_pi^2 of the virtualGamma
-G4double G4QGluonString::DiNuclMass=1880.; // DoubleNucleon Mass for VirtualNormalization
-
-void G4QGluonString::SetManual()   {manualFlag=true;}
-void G4QGluonString::SetStandard() {manualFlag=false;}
-
-// Fill the private parameters
-void G4QGluonString::SetParameters(G4double temper, G4double ssin2g, G4double etaetap,
-                                     G4double fN, G4double fD, G4double cP, G4double mR,
-                                     G4int nParCW, G4double solAn, G4bool efFlag,
-                                     G4double piThresh, G4double mpisq, G4double dinum)
-{//  =============================================================================
-  Temperature=temper;
-  SSin2Gluons=ssin2g;
-  EtaEtaprime=etaetap;
-  freeNuc=fN;
-  freeDib=fD;
-  clustProb=cP;
-  mediRatio=mR;
-  nPartCWorld = nParCW;
-  EnergyFlux=efFlag;
-  SolidAngle=solAn;
-  PiPrThresh=piThresh;
-  M2ShiftVir=mpisq;
-  DiNuclMass=dinum;
-  G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World with 234 particles
-  G4QNucleus::SetParameters(freeNuc,freeDib,clustProb,mediRatio); // Clusterization param's
-  G4Quasmon::SetParameters(Temperature,SSin2Gluons,EtaEtaprime);  // Hadronic parameters
-  G4QEnvironment::SetParameters(SolidAngle); // SolAngle of pbar-A secondary mesons capture
-}
-
-// Destructor
-
-G4QGluonString::~G4QGluonString() {}
-
-// Internal E/P conservation 4-Mom & the selected number of neutrons in the Element
-
-G4LorentzVector G4QGluonString::GetEnegryMomentumConservation()
-{
-  return EnMomConservation;
-}
-
-G4int G4QGluonString::GetNumberOfNeutronsInTarget()
-{
-  return nOfNeutrons;
-}
-
-// output of the function must be in units of length! L=1/sig_V,sig_V=SUM(n(j,i)*sig(j,i)),
-// where n(i,j) is a number of nuclei of the isotop j of the element i in V=1(lengtUnit^3)
-// ********** All CHIPS cross sections are calculated in the surface units ************
-G4double G4QGluonString::GetMeanFreePath(const G4Track& aTrack,
-                                         G4double, G4ForceCondition* Fc)
-{
-#ifdef debug
-  G4cout<<"G4QGluonString::GetMeanFreePath: Called Fc="<<*Fc<<G4endl;
-#endif
-  *Fc = NotForced;
-#ifdef debug
-  G4cout<<"G4QGluonString::GetMeanFreePath: Before GetDynPart"<<G4endl;
-#endif
-  const G4DynamicParticle* incidentParticle = aTrack.GetDynamicParticle();
-#ifdef debug
-  G4cout<<"G4QGluonString::GetMeanFreePath: Before GetDef"<<G4endl;
-#endif
-  G4ParticleDefinition* incidentParticleDefinition=incidentParticle->GetDefinition();
-  if( !IsApplicable(*incidentParticleDefinition))
-    G4cout<<"-W-G4QGluonString::GetMeanFreePath called for NotImplementedParticle"<<G4endl;
-  // Calculate the mean Cross Section for the set of Elements(*Isotopes) in the Material
-  G4double Momentum = incidentParticle->GetTotalMomentum(); // 3-momentum of the Particle
-#ifdef debug
-  G4cout<<"G4QCollis::GetMeanFreePath: BeforeGetMaterial"<<G4endl;
-#endif
-  const G4Material* material = aTrack.GetMaterial();        // Get the current material
-  const G4double* NOfNucPerVolume = material->GetVecNbOfAtomsPerVolume();
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QGluonString::GetMeanFreePath:"<<nE<<" Elem's in theMaterial"<<G4endl;
-#endif
-  G4VQCrossSection* CSmanager=0;
-  G4int pPDG=0;
-  if(incidentParticleDefinition == G4Proton::Proton())
-  {
-    CSmanager=G4QProtonNuclearCrossSection::GetPointer();
-    pPDG=2212;
-  }                            //@@ Make cross-section mahnagers for other mesons & baryons
-  else
-  {
-    G4cerr<<"***G4QGluonString::GetMeanFreePath: Particle isn't implemented"<<G4endl;
-    G4Exception("G4QGluonString::PostStepDoIt:","72",FatalException,"BadProjectile");
-  }
-  
-  G4QIsotope* Isotopes = G4QIsotope::Get(); // Pointer to the G4QIsotopes singleton
-  G4double sigma=0.;                        // Sums over elements for the material
-  G4int IPIE=IsoProbInEl.size();            // How many old elements?
-  if(IPIE) for(G4int ip=0; ip<IPIE; ++ip)   // Clean up the SumProb's of Isotopes (SPI)
-  {
-    std::vector<G4double>* SPI=IsoProbInEl[ip]; // Pointer to the SPI vector
-    SPI->clear();
-    delete SPI;
-    std::vector<G4int>* IsN=ElIsoN[ip];     // Pointer to the N vector
-    IsN->clear();
-    delete IsN;
-  }
-  ElProbInMat.clear();                      // Clean up the SumProb's of Elements (SPE)
-  ElementZ.clear();                         // Clear the body vector for Z of Elements
-  IsoProbInEl.clear();                      // Clear the body vector for SPI
-  ElIsoN.clear();                           // Clear the body vector for N of Isotopes
-  for(G4int i=0; i<nE; ++i)
-  {
-    G4Element* pElement=(*theElementVector)[i]; // Pointer to the current element
-    G4int Z = static_cast<G4int>(pElement->GetZ()); // Z of the Element
-    ElementZ.push_back(Z);                  // Remember Z of the Element
-    G4int isoSize=0;                        // The default for the isoVectorLength is 0
-    G4int indEl=0;                          // Index of non-trivial element or 0(default)
-    G4IsotopeVector* isoVector=pElement->GetIsotopeVector(); // Get the predefined IsoVect
-    if(isoVector) isoSize=isoVector->size();// Get size of the existing isotopeVector
-#ifdef debug
-    G4cout<<"G4QGluonString::GetMeanFreePath: isovectorLength="<<isoSize<<G4endl; // Result
-#endif
-    if(isoSize)                             // The Element has non-trivial abumdance set
-    {
-      indEl=pElement->GetIndex();           // Index of the non-trivial element
-      if(!Isotopes->IsDefined(Z,indEl))     // This index is not defined for this Z: define
-      {
-        std::vector<std::pair<G4int,G4double>*>* newAbund =
-                                               new std::vector<std::pair<G4int,G4double>*>;
-        G4double* abuVector=pElement->GetRelativeAbundanceVector();
-        for(G4int j=0; j<isoSize; j++)      // Calculation of abundance vector for isotopes
-        {
-          G4int N=pElement->GetIsotope(j)->GetN()-Z; // N means A=N+Z !
-          if(pElement->GetIsotope(j)->GetZ()!=Z)G4cerr<<"G4QCaptureAtRest::GetMeanFreePath"
-                                 <<": Z="<<pElement->GetIsotope(j)->GetZ()<<"#"<<Z<<G4endl;
-          G4double abund=abuVector[j];
-          std::pair<G4int,G4double>* pr= new std::pair<G4int,G4double>(N,abund);
-#ifdef debug
-          G4cout<<"G4QGluonString::GetMeanFreePath:p#"<<j<<",N="<<N<<",ab="<<abund<<G4endl;
-#endif
-          newAbund->push_back(pr);
-        }
-#ifdef debug
-        G4cout<<"G4QGluonString::PostStepDoIt:pairVectorLength="<<newAbund->size()<<G4endl;
-#endif
-        indEl=G4QIsotope::Get()->InitElement(Z,indEl,newAbund); // definition of the newInd
-        for(G4int k=0; k<isoSize; k++) delete (*newAbund)[k];   // Cleaning temporary
-        delete newAbund; // Was "new" in the beginning of the name space
-      }
-    }
-    std::vector<std::pair<G4int,G4double>*>* cs= Isotopes->GetCSVector(Z,indEl);//CSPointer
-    std::vector<G4double>* SPI = new std::vector<G4double>; // Pointer to the SPI vector
-    IsoProbInEl.push_back(SPI);
-    std::vector<G4int>* IsN = new std::vector<G4int>; // Pointer to the N vector
-    ElIsoN.push_back(IsN);
-    G4int nIs=cs->size();                   // A#Of Isotopes in the Element
-    G4double susi=0.;                       // sum of CS over isotopes
-    if(nIs) for(G4int j=0; j<nIs; j++)      // Calculate CS for eachIsotope of El
-    {
-      std::pair<G4int,G4double>* curIs=(*cs)[j]; // A pointer, which is used twice
-      G4int N=curIs->first;                 // #of Neuterons in the isotope j of El i
-      IsN->push_back(N);                    // Remember Min N for the Element
-      G4double CSI=CSmanager->GetCrossSection(true,Momentum,Z,N,pPDG);//CS(j,i) for isotope
-#ifdef debug
-      G4cout<<"GQC::GMF:X="<<CSI<<",M="<<Momentum<<",Z="<<Z<<",N="<<N<<",P="<<pPDG<<G4endl;
-#endif
-      curIs->second = CSI;                  // Remenber the calculated cross-section
-      susi+=CSI;                            // Make a sum per isotopes
-      SPI->push_back(susi);                 // Remember summed cross-section
-    } // End of temporary initialization of the cross sections in the G4QIsotope singeltone
-    sigma+=Isotopes->GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i];//SUM(MeanCS*NOfNperV)
-    ElProbInMat.push_back(sigma);
-  } // End of LOOP over Elements
-#ifdef debug
-  G4cout<<"G4QCol::GetMeanFrPa: S="<<sigma<<",e="<<photNucBias<<",w="<<weakNucBias<<G4endl;
-#endif
-  // Check that cross section is not zero and return the mean free path
-  if(sigma > 0.) return 1./sigma;                 // Mean path [distance] 
-  return DBL_MAX;                                 // If Sigma=0, return max value for PATH
-}
-
-// Check applicability of the process
-G4bool G4QGluonString::IsApplicable(const G4ParticleDefinition& particle) 
-{
-  if      (particle == *(        G4Proton::Proton()        )) return true;
-  //else if (particle == *(       G4Neutron::Neutron()       )) return true;
-  //else if (particle == *(     G4PionMinus::PionMinus()     )) return true;
-  //else if (particle == *(      G4PionPlus::PionPlus()      )) return true;
-  //else if (particle == *(      G4KaonPlus::KaonPlus()      )) return true;
-  //else if (particle == *(     G4KaonMinus::KaonMinus()     )) return true;
-  //else if (particle == *(  G4KaonZeroLong::KaonZeroLong()  )) return true;
-  //else if (particle == *( G4KaonZeroShort::KaonZeroShort() )) return true;
-  //else if (particle == *(        G4Lambda::Lambda()        )) return true;
-  //else if (particle == *(     G4SigmaPlus::SigmaPlus()     )) return true;
-  //else if (particle == *(    G4SigmaMinus::SigmaMinus()    )) return true;
-  //else if (particle == *(     G4SigmaZero::SigmaZero()     )) return true;
-  //else if (particle == *(       G4XiMinus::XiMinus()       )) return true;
-  //else if (particle == *(        G4XiZero::XiZero()        )) return true;
-  //else if (particle == *(    G4OmegaMinus::OmegaMinus()    )) return true;
-  //else if (particle == *(   G4AntiNeutron::AntiNeutron()   )) return true;
-  //else if (particle == *(    G4AntiProton::AntiProton()    )) return true;
-  //else if (particle == *(    G4AntiLambda::AntiLambda()    )) return true;
-  //else if (particle == *( G4AntiSigmaPlus::AntiSigmaPlus() )) return true;
-  //else if (particle == *(G4AntiSigmaMinus::AntiSigmaMinus())) return true;
-  //else if (particle == *( G4AntiSigmaZero::AntiSigmaZero() )) return true;
-  //else if (particle == *(   G4AntiXiMinus::AntiXiMinus()   )) return true;
-  //else if (particle == *(    G4AntiXiZero::AntiXiZero()    )) return true;
-  //else if (particle == *(G4AntiOmegaMinus::AntiOmegaMinus())) return true;
-  else G4cerr<<"***G4QGluonString::IsApplicable: PDG?="<<particle.GetPDGEncoding()<<G4endl;
-#ifdef debug
-  G4cout<<"***G4QGluonString::IsApplicable: PDG="<<particle.GetPDGEncoding()<<G4endl;
-#endif
-  return false;
-}
-
-G4VParticleChange* G4QGluonString::PostStepDoIt(const G4Track& track, const G4Step& step)
-{
-  //static const G4double dpi=M_PI+M_PI;   // 2*pi (for Phi distr.) ***changed to twopi***
-  //static const G4double mNeut= G4QPDGCode(2112).GetMass();
-  //static const G4double mNeut2= mNeut*mNeut;          // Squared neutron mass
-  //static const G4double mProt= G4QPDGCode(2212).GetMass();
-  //static const G4double mProt2= mProt*mProt;          // Squared Proton mass
-  //static const G4double dM=mProt+mNeut;               // doubled nucleon mass
-  //static const G4double hdM=dM/2.;                    // M of the "nucleon"
-  //static const G4double hdM2=hdM*hdM;                 // M2 of the "nucleon"
-  //static const G4double mPi0 = G4QPDGCode(111).GetMass();
-  //static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0);
-  //static const G4double mPi  = G4QPDGCode(211).GetMass();
-  //static const G4double tmPi = mPi+mPi;               // DoubledMass of the charged pion
-  //static const G4double stmPi= tmPi*tmPi;             // SquareDoubledMass of ChargedPion
-  //static const G4double mPPi = mPi+mProt;             // Delta threshold
-  //static const G4double mPPi2= mPPi*mPPi;             // Delta low threshold for W2
-  //-------------------------------------------------------------------------------------
-  const G4DynamicParticle* projHadron = track.GetDynamicParticle();
-  const G4ParticleDefinition* particle=projHadron->GetDefinition();
-#ifdef debug
-  G4cout<<"G4QGluonString::PostStepDoIt: Before the GetMeanFreePath is called"<<G4endl;
-#endif
-  G4ForceCondition cond=NotForced;
-  GetMeanFreePath(track, 1., &cond);                  // Just to check that still sig>0
-#ifdef debug
-  G4cout<<"G4QGluonString::PostStepDoIt: After the GetMeanFreePath is called"<<G4endl;
-#endif
-  G4LorentzVector proj4M=projHadron->Get4Momentum();
-  G4double momentum = projHadron->GetTotalMomentum(); // 3-momentum of the Particle
-  G4double Momentum=proj4M.rho();
-  if(std::fabs(Momentum-momentum)>.001)
-    G4cerr<<"G4QGluonString::PostStepDoIt: P="<<Momentum<<"="<<momentum<<G4endl;
-#ifdef debug
-  G4double mp=proj4M.m();
-  G4cout<<"G4QGluonString::PostStepDoIt is called, P="<<Momentum<<"="<<momentum<<G4endl;
-#endif
-  if (!IsApplicable(*particle))  // Check applicability
-  {
-    G4cerr<<"G4QGluonString::PostStepDoIt:Only gam,e+,e-,mu+,mu-,t+,t-,p are implemented."
-          <<G4endl;
-    return 0;
-  }
-  const G4Material* material = track.GetMaterial();      // Get the current material
-  G4int Z=0;
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QGluonString::PostStepDoIt: "<<nE<<" elements in the material."<<G4endl;
-#endif
-  G4int projPDG=0;                           // PDG Code prototype for the captured hadron
-  // Not all these particles are implemented yet (see Is Applicable)
-  if      (particle ==          G4Proton::Proton()         ) projPDG= 2212;
-  //else if (particle ==         G4Neutron::Neutron()        ) projPDG= 2112;
-  //else if (particle ==       G4PionMinus::PionMinus()      ) projPDG= -211;
-  //else if (particle ==        G4PionPlus::PionPlus()       ) projPDG=  211;
-  //else if (particle ==        G4KaonPlus::KaonPlus()       ) projPDG= 2112;
-  //else if (particle ==       G4KaonMinus::KaonMinus()      ) projPDG= -321;
-  //else if (particle ==    G4KaonZeroLong::KaonZeroLong()   ) projPDG=  130;
-  //else if (particle ==   G4KaonZeroShort::KaonZeroShort()  ) projPDG=  310;
-  //else if (particle ==         G4TauPlus::TauPlus()        ) projPDG=  -15;
-  //else if (particle ==        G4TauMinus::TauMinus()       ) projPDG=   15;
-  //else if (particle ==     G4NeutrinoTau::NeutrinoTau()    ) projPDG=   16;
-  //else if (particle == G4AntiNeutrinoTau::AntiNeutrinoTau()) projPDG=  -16;
-  //else if (particle ==          G4Lambda::Lambda()         ) projPDG= 3122;
-  //else if (particle ==       G4SigmaPlus::SigmaPlus()      ) projPDG= 3222;
-  //else if (particle ==      G4SigmaMinus::SigmaMinus()     ) projPDG= 3112;
-  //else if (particle ==       G4SigmaZero::SigmaZero()      ) projPDG= 3212;
-  //else if (particle ==         G4XiMinus::XiMinus()        ) projPDG= 3312;
-  //else if (particle ==          G4XiZero::XiZero()         ) projPDG= 3322;
-  //else if (particle ==      G4OmegaMinus::OmegaMinus()     ) projPDG= 3334;
-  //else if (particle ==     G4AntiNeutron::AntiNeutron()    ) projPDG=-2112;
-  //else if (particle ==      G4AntiProton::AntiProton()     ) projPDG=-2212;
-  //else if (particle ==      G4AntiLambda::AntiLambda()     ) projPDG=-3122;
-  //else if (particle ==   G4AntiSigmaPlus::AntiSigmaPlus()  ) projPDG=-3222;
-  //else if (particle ==  G4AntiSigmaMinus::AntiSigmaMinus() ) projPDG=-3112;
-  //else if (particle ==   G4AntiSigmaZero::AntiSigmaZero()  ) projPDG=-3212;
-  //else if (particle ==     G4AntiXiMinus::AntiXiMinus()    ) projPDG=-3312;
-  //else if (particle ==      G4AntiXiZero::AntiXiZero()     ) projPDG=-3322;
-  //else if (particle ==  G4AntiOmegaMinus::AntiOmegaMinus() ) projPDG=-3334;
-  //G4int aProjPDG=std::abs(projPDG);
-#ifdef debug
-  G4int prPDG=particle->GetPDGEncoding();
-  G4cout<<"G4QGluonString::PostStepDoIt: projPDG="<<projPDG<<", stPDG="<<prPDG<<G4endl;
-#endif
-  if(!projPDG)
-  {
-    G4cerr<<"--Warning--G4QGluonString::PostStepDoIt:Undefined interacting hadron"<<G4endl;
-    return 0;
-  }
-  G4int EPIM=ElProbInMat.size();
-#ifdef debug
-  G4cout<<"G4QCollis::PostStDoIt: m="<<EPIM<<",n="<<nE<<",T="<<ElProbInMat[EPIM-1]<<G4endl;
-#endif
-  G4int i=0;
-  if(EPIM>1)
-  {
-    G4double rnd = ElProbInMat[EPIM-1]*G4UniformRand();
-    for(i=0; i<nE; ++i)
-    {
-#ifdef debug
-      G4cout<<"G4QGluonString::PostStDoIt:E["<<i<<"]="<<ElProbInMat[i]<<",r="<<rnd<<G4endl;
-#endif
-      if (rnd<ElProbInMat[i]) break;
-    }
-    if(i>=nE) i=nE-1;                        // Top limit for the Element
-  }
-  G4Element* pElement=(*theElementVector)[i];
-  Z=static_cast<G4int>(pElement->GetZ());
-#ifdef debug
-    G4cout<<"G4QGluonString::PostStepDoIt: i="<<i<<", Z(element)="<<Z<<G4endl;
-#endif
-  if(Z<=0)
-  {
-    G4cerr<<"---Warning---G4QGluonString::PostStepDoIt: Element with Z="<<Z<<G4endl;
-    if(Z<0) return 0;
-  }
-  std::vector<G4double>* SPI = IsoProbInEl[i];// Vector of summedProbabilities for isotopes
-  std::vector<G4int>* IsN = ElIsoN[i];     // Vector of "#of neutrons" in the isotope El[i]
-  G4int nofIsot=SPI->size();               // #of isotopes in the element i
-#ifdef debug
-  G4cout<<"G4QCollis::PosStDoIt:n="<<nofIsot<<",T="<<(*SPI)[nofIsot-1]<<G4endl;
-#endif
-  G4int j=0;
-  if(nofIsot>1)
-  {
-    G4double rndI=(*SPI)[nofIsot-1]*G4UniformRand(); // Randomize the isotop of the Element
-    for(j=0; j<nofIsot; ++j)
-    {
-#ifdef debug
-      G4cout<<"G4QGluonString::PostStepDoIt:SP["<<j<<"]="<<(*SPI)[j]<<",r="<<rndI<<G4endl;
-#endif
-      if(rndI < (*SPI)[j]) break;
-    }
-    if(j>=nofIsot) j=nofIsot-1;            // Top limit for the isotope
-  }
-  G4int N =(*IsN)[j]; ;                    // Randomized number of neutrons
-#ifdef debug
-  G4cout<<"G4QGluonString::PostStepDoIt: j="<<i<<", N(isotope)="<<N<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"-Warning-G4QGluonString::PostStepDoIt:Isotope with N="<<Z<<"<0,Z="<<Z<<G4endl;
-    return 0;
-  }
-  nOfNeutrons=N;                           // Remember it for the energy-momentum check
-  G4double dd=0.025;
-  G4double am=Z+N;
-  G4double sr=std::sqrt(am);
-  G4double dsr=0.01*(sr+sr);
-  if(dsr<dd)dsr=dd;
-  if(manualFlag) G4QNucleus::SetParameters(freeNuc,freeDib,clustProb,mediRatio);// ManualPa
-  //else if(projPDG==-2212) G4QNucleus::SetParameters(1.-dsr-dsr,dd+dd,5.,10.);//aP CluPars
-  //else if(projPDG==-211)  G4QNucleus::SetParameters(.67-dsr,.32-dsr,5.,9.); //Pi- CluPars
-#ifdef debug
-  G4cout<<"G4QGluonString::PostStepDoIt: N="<<N<<" for element with Z="<<Z<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"---Warning---G4QGluonString::PostStepDoIt:Element with N="<<N<< G4endl;
-    return 0;
-  }
-  aParticleChange.Initialize(track);
-  G4double localtime = track.GetGlobalTime();
-  G4ThreeVector position = track.GetPosition();
-  G4TouchableHandle trTouchable = track.GetTouchableHandle();
-  //
-  G4int targPDG=90000000+Z*1000+N;            // PDG Code of the target nucleus
-  //    =========================
-  G4QPDGCode targQPDG(targPDG);
-  G4double tM=targQPDG.GetMass();
-  G4QHadronVector* output=new G4QHadronVector;// Prototype of EnvironOutput G4QHadronVector
-  G4double absMom = 0.;                       // Prototype of absorbed by nucleus Moment
-  G4QHadronVector* leadhs=new G4QHadronVector;// Prototype of QuasmOutput G4QHadronVectorum
-  G4LorentzVector lead4M(0.,0.,0.,0.);        // Prototype of LeadingQ 4-momentum
-  EnMomConservation=proj4M+G4LorentzVector(0.,0.,0.,tM);    // Total 4-mom of the reaction
-  if(absMom) EnMomConservation+=lead4M;       // Add E/M of leading System
-#ifdef debug
-  G4cout<<"G4QGluonString::PostStepDoIt: projPDG="<<projPDG<<", targPDG="<<targPDG<<G4endl;
-#endif
-  //G4QHadron* pH = new G4QHadron(projPDG,proj4M);
-  // @@@@@@@@@@@@@@@@@@@@@@@@@@ Hrere the CHIPS_QGS must be implemented @@@@@@@@@@@@@@@
-  G4int qNH=leadhs->size();
-  if(absMom)
-  {
-    if(qNH) for(G4int iq=0; iq<qNH; iq++)
-    {
-      G4QHadron* loh=(*leadhs)[iq];   // Pointer to the output hadron
-      output->push_back(loh);
-    }
-    delete leadhs;
-  }
-  // ------------- From here the secondaries are filled -------------------------
-  G4int tNH = output->size();       // A#of hadrons in the output
-  aParticleChange.SetNumberOfSecondaries(tNH); 
-  // Now add nuclear fragments
-#ifdef debug
-  G4cout<<"G4QGluonString::PostStepDoIt: "<<tNH<<" particles are generated"<<G4endl;
-#endif
-#ifdef ppdebug
-  if(absMom)G4cout<<"G4QGluonString::PostStepDoIt: t="<<tNH<<", q="<<qNH<<G4endl;
-#endif
-  G4int nOut=output->size();               // Real length of the output @@ Temporary
-  if(tNH==1)                               // @@ Temporary. Find out why it happened!
-  {
-    G4cout<<"-Warning-G4QGluonString::PostStepDoIt: 1 secondary! absMom="<<absMom;
-    if(absMom) G4cout<<", qNH="<<qNH;
-    G4cout<<", PDG0="<<(*output)[0]->GetPDGCode();
-    G4cout<<G4endl;
-    tNH=0;
-    delete output->operator[](0);          // delete the creazy hadron
-    output->pop_back();                    // clean up the output vector
-  }
-  if(tNH==2&&2!=nOut) G4cout<<"--Warning--G4QGluonString::PostStepDoIt:2 # "<<nOut<<G4endl;
-  // Deal with ParticleChange final state interface to GEANT4 output of the process
-  //if(tNH==2) for(i=0; i<tNH; i++) // @@ Temporary tNH==2 instead of just tNH
-  if(tNH) for(i=0; i<tNH; i++) // @@ Temporary tNH==2 instead of just tNH
-  {
-    // Note that one still has to take care of Hypernuclei (with Lambda or Sigma inside)
-    // Hypernucleus mass calculation and ion-table interface upgrade => work for Hisaya @@
-    // The decau process for hypernuclei must be developed in GEANT4 (change CHIPS body)
-    G4QHadron* hadr=(*output)[i];          // Pointer to the output hadron    
-    G4int PDGCode = hadr->GetPDGCode();
-    G4int nFrag   = hadr->GetNFragments();
-#ifdef pdebug
-    G4cout<<"G4QGluonString::AtRestDoIt: H#"<<i<<",PDG="<<PDGCode<<",nF="<<nFrag<<G4endl;
-#endif
-    if(nFrag)                // Skip intermediate (decayed) hadrons
-    {
-#ifdef debug
-      G4cout<<"G4QGluonString::PostStepDoIt: Intermediate particle is found i="<<i<<G4endl;
-#endif
-      delete hadr;
-      continue;
-    }
-    G4DynamicParticle* theSec = new G4DynamicParticle;  
-    G4ParticleDefinition* theDefinition;
-    if     (PDGCode==90000001) theDefinition = G4Neutron::Neutron();
-    else if(PDGCode==90001000) theDefinition = G4Proton::Proton();//While it can be in ions
-    else if(PDGCode==91000000) theDefinition = G4Lambda::Lambda();
-    else if(PDGCode==311 || PDGCode==-311)
-    {
-      if(G4UniformRand()>.5) theDefinition = G4KaonZeroLong::KaonZeroLong();   // K_L
-      else                   theDefinition = G4KaonZeroShort::KaonZeroShort(); // K_S
-    }
-    else if(PDGCode==91000999) theDefinition = G4SigmaPlus::SigmaPlus();
-    else if(PDGCode==90999001) theDefinition = G4SigmaMinus::SigmaMinus();
-    else if(PDGCode==91999000) theDefinition = G4XiMinus::XiMinus();
-    else if(PDGCode==91999999) theDefinition = G4XiZero::XiZero();
-    else if(PDGCode==92998999) theDefinition = G4OmegaMinus::OmegaMinus();
-    else if(PDGCode >80000000) // Defines hypernuclei as normal nuclei (N=N+S Correction!)
-    {
-      G4int aZ = hadr->GetCharge();
-      G4int aA = hadr->GetBaryonNumber();
-#ifdef pdebug
-      G4cout<<"G4QGluonString::AtRestDoIt:Ion Z="<<aZ<<", A="<<aA<<G4endl;
-#endif
-      theDefinition = G4ParticleTable::GetParticleTable()->FindIon(aZ,aA,0,aZ);
-    }
-    //else theDefinition = G4ParticleTable::GetParticleTable()->FindParticle(PDGCode);
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QGluonString::PostStepDoIt:Define particle with PDG="<<PDGCode<<G4endl;
-#endif
-      theDefinition = G4QPDGToG4Particle::Get()->GetParticleDefinition(PDGCode);
-#ifdef pdebug
-      G4cout<<"G4QGluonString::PostStepDoIt:AfterParticleDefinition PDG="<<PDGCode<<G4endl;
-#endif
-    }
-    if(!theDefinition)
-    {
-#ifdef debug
-      G4cout<<"---Warning---G4QGluonString::PostStepDoIt: drop PDG="<<PDGCode<<G4endl;
-#endif
-      delete hadr;
-      continue;
-    }
-#ifdef pdebug
-    G4cout<<"G4QGluonString::PostStepDoIt:Name="<<theDefinition->GetParticleName()<<G4endl;
-#endif
-    theSec->SetDefinition(theDefinition);
-    G4LorentzVector h4M=hadr->Get4Momentum();
-    EnMomConservation-=h4M;
-#ifdef tdebug
-    G4cout<<"G4QCollis::PSDI:"<<i<<","<<PDGCode<<h4M<<h4M.m()<<EnMomConservation<<G4endl;
-#endif
-#ifdef debug
-    G4cout<<"G4QGluonString::PostStepDoIt:#"<<i<<",PDG="<<PDGCode<<",4M="<<h4M<<G4endl;
-#endif
-    theSec->Set4Momentum(h4M); //                                                         ^
-    delete hadr; // <-----<-----------<-------------<---------------------<---------<-----+
-#ifdef debug
-    G4ThreeVector curD=theSec->GetMomentumDirection();              //                    ^
-    G4double curM=theSec->GetMass();                                //                    |
-    G4double curE=theSec->GetKineticEnergy()+curM;                  //                    ^
-    G4cout<<"G4QCollis::PSDoIt:p="<<curD<<curD.mag()<<",e="<<curE<<",m="<<curM<<G4endl;// |
-#endif
-    G4Track* aNewTrack = new G4Track(theSec, localtime, position ); //                    ^
-    aNewTrack->SetTouchableHandle(trTouchable);                     //                    |
-    aParticleChange.AddSecondary( aNewTrack );                      //                    |
-#ifdef debug
-    G4cout<<"G4QGluonString::PostStepDoIt:#"<<i<<" is done"<<G4endl;//                    |
-#endif
-  } //                                                                                    |
-  delete output; // instances of the G4QHadrons from the output are already deleted above +
-#ifdef debug
-  G4cout<<"G4QGluonString::PostStDoIt: afterSt="<<aParticleChange.GetTrackStatus()<<G4endl;
-#endif
-  aParticleChange.ProposeTrackStatus(fStopAndKill);        // Kill the absorbed particle
-#ifdef debug
-  G4cout<<"G4QGluonString::PostStepDoIt:*** PostStepDoIt is done ***, P="<<aProjPDG
-        <<", St="<<aParticleChange.GetTrackStatus()<<G4endl;
-#endif
-  return G4VDiscreteProcess::PostStepDoIt(track, step);
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QIonIonCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QIonIonCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,509 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// The lust update: M.V. Kossov, CERN/ITEP(Moscow) 19-Aug-07
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QIonIonCrossSection for gamma+A cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-03
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 15-Feb-04
-// --------------------------------------------------------------------------------
-// ****************************************************************************************
-// ***** This HEADER is a property of the CHIPS hadronic package in Geant4 (M. Kosov) *****
-// *********** DO NOT MAKE ANY CHANGE without approval of Mikhail.Kossov@cern.ch **********
-// ****************************************************************************************
-// Short description: CHIPS cross-sectons for Ion-Ion interactions
-// ---------------------------------------------------------------
-//
-//#define debug
-//#define pdebug
-//#define debug3
-//#define debugn
-//#define debugs
-
-#include "G4QIonIonCrossSection.hh"
-
-// Initialization of the
-G4double* G4QIonIonCrossSection::lastLENI=0;// Pointer to the lastArray of LowEn Inelast CS
-G4double* G4QIonIonCrossSection::lastHENI=0;// Pointer to the lastArray of HighEn InelastCS
-G4double* G4QIonIonCrossSection::lastLENE=0;// Pointer to the lastArray of LowEn Elastic CS
-G4double* G4QIonIonCrossSection::lastHENE=0;// Pointer to the lastArray of HighEn ElasticCS
-G4int     G4QIonIonCrossSection::lastPDG=0; // The last PDG code of the projectile
-G4int     G4QIonIonCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QIonIonCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QIonIonCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QIonIonCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QIonIonCrossSection::lastICS=0.;// Last value of the Inelastic Cross Section
-G4double  G4QIonIonCrossSection::lastECS=0.;// Last value of the Elastic Cross Section
-G4int     G4QIonIonCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QIonIonCrossSection::GetPointer()
-{
-  static G4QIonIonCrossSection theCrossSection; //**Static body of Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QIonIonCrossSection::GetCrossSection(G4bool fCS, G4double pMom, G4int tZ,
-                                                G4int tN, G4int pPDG)
-{
-  static G4int j;                      // A#0f records found in DB for this projectile
-  static std::vector <G4int>    colPDG;// Vector of the projectile PDG code
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colICS;// Vector of last inelastic cross-sections
-  static std::vector <G4double> colECS;// Vector of last elastic cross-sections
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-#ifdef pdebug
-  G4cout<<"G4QIICS::GetCS:>>> f="<<fCS<<", Z="<<tZ<<"("<<lastZ<<"), N="<<tN<<"("<<lastN
-        <<"),PDG="<<pPDG<<"("<<lastPDG<<"), p="<<pMom<<"("<<lastTH<<")"<<",Sz="
-        <<colN.size()<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  if(!pPDG)
-  {
-#ifdef pdebug
-    G4cout<<"G4QIonIonCS::GetCS: *** Found pPDG="<<pPDG<<" ====> CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // projectile PDG=0 is a mistake (?!) @@
-  }
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tN!=lastN || tZ!=lastZ || pPDG!=lastPDG)// The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastPDG = pPDG;                    // The last PDG of the projectile
-    lastN   = tN;                      // The last N of the calculated nucleus
-    lastZ   = tZ;                      // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-    if(lastI) for(G4int i=0; i<lastI; i++) if(colPDG[i]==pPDG) // The partType is found
-    {                                  // The nucleus with projPDG is found in AMDB
-      if(colN[i]==tN && colZ[i]==tZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QIICS::GetCS:*Found* P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(pMom<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QIICS::GetCS:Found P="<<pMom<<"<Threshold="<<lastTH<<"->XS=0"<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastICS=colICS[i];               // Last Inelastic Cross-Section (A-dependent)
-        lastECS=colECS[i];               // Last Elastic Cross-Section (A-dependent)
-        if(std::fabs(lastP/pMom-1.)<tolerance)
-        {
-#ifdef pdebug
-          G4cout<<"G4QIonIonCS::GetCS:P="<<pMom<<",InXS="<<lastICS*millibarn<<",ElXS="
-                <<lastECS*millibarn<<G4endl;
-#endif
-          CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // Update param's only
-          if(fCS) return lastICS*millibarn;     // Use theLastInelasticCS
-          return         lastECS*millibarn;     // Use theLastElasticCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QIICS::G:UpdatDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastICS=CalculateCrossSection( true,-1,j,lastPDG,lastZ,lastN,pMom);// read & update
-        lastECS=CalculateCrossSection(false,-1,j,lastPDG,lastZ,lastN,pMom);// read & update
-#ifdef pdebug
-        G4cout<<"G4QIonIonCS::GetCS:=>New(inDB) InCS="<<lastICS<<",ElCS="<<lastECS<<G4endl;
-#endif
-        if((lastICS<=0. || lastECS<=0.) && pMom>lastTH) // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QIonIonCS::GetCS:New,T="<<pMom<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pMom;
-        }
-        break;                           // Go out of the LOOP
-      }
-#ifdef pdebug
-      G4cout<<"--->G4QIonIonCrossSec::GetCrosSec: pPDG="<<pPDG<<",j="<<j<<",N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<",PDG="<<colPDG[i]<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      j++;                             // Increment a#0f records found in DB for this pPDG
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QIICS::GetCrosSec:CalcNew P="<<pMom<<",f="<<fCS<<",lastI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastICS=CalculateCrossSection(true ,0,j,lastPDG,lastZ,lastN,pMom); //calculate&create
-      lastECS=CalculateCrossSection(false,0,j,lastPDG,lastZ,lastN,pMom); //calculate&create
-      if(lastICS<=0. || lastECS<=0.)
-      {
-        lastTH = ThresholdEnergy(tZ, tN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QIonIonCrossSect::GetCrossSect:NewThresh="<<lastTH<<",P="<<pMom<<G4endl;
-#endif
-        if(pMom>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QIonIonCS::GetCS:1-st,P="<<pMom<<">Thresh="<<lastTH<<"->XS=0"<<G4endl;
-#endif
-          lastTH=pMom;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QIICS::GetCS: *New* ICS="<<lastICS<<", ECS="<<lastICS<<",N="<<lastN<<",Z="
-            <<lastZ<<G4endl;
-#endif
-      colN.push_back(tN);
-      colZ.push_back(tZ);
-      colPDG.push_back(pPDG);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colICS.push_back(lastICS);
-      colECS.push_back(lastECS);
-#ifdef pdebug
-      G4cout<<"G4QIICS::GetCS:*1st*, P="<<pMom<<"(MeV), InCS="<<lastICS*millibarn
-            <<", ElCS="<<lastECS*millibarn<<"(mb)"<<G4endl;
-#endif
-      if(fCS) return lastICS*millibarn;     // Use theLastInelasticCS
-      return         lastECS*millibarn;     // Use theLastElasticCS
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QIICS::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colPDG[lastI]=pPDG;
-      colICS[lastI]=lastICS;
-      colECS[lastI]=lastECS;
-    }
-  } // End of parameters udate
-  else if(pMom<=lastTH)
-  {
-#ifdef pdebug
-    G4cout<<"G4QIICS::GetCS: Current T="<<pMom<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  else if(std::fabs(lastP/pMom-1.)<tolerance)
-  {
-#ifdef pdebug
-    G4cout<<"G4QIICS::GetCS:OldCur P="<<pMom<<"="<<pMom<<", InCS="<<lastICS*millibarn
-          <<", ElCS="<<lastECS*millibarn<<"(mb)"<<G4endl;
-#endif
-    if(fCS) return lastICS*millibarn;     // Use theLastInelasticCS
-    return         lastECS*millibarn;     // Use theLastElasticCS
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"G4QIICS::GetCS:UpdatCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastICS=CalculateCrossSection( true,1,j,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-    lastECS=CalculateCrossSection(false,1,j,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-    lastP=pMom;
-  }
-#ifdef pdebug
-  G4cout<<"G4QIICS::GetCroSec:*End*,P="<<pMom<<"(MeV), InCS="<<lastICS*millibarn<<", ElCS="
-        <<lastECS*millibarn<<"(mb)"<<G4endl;
-#endif
-    if(fCS) return lastICS*millibarn;     // Use theLastInelasticCS
-    return         lastECS*millibarn;     // Use theLastElasticCS
-}
-
-// The main member function giving the A-A cross section (Momentum in MeV, CS in mb)
-G4double G4QIonIonCrossSection::CalculateCrossSection(G4bool XS,G4int F,G4int I,G4int pPDG,
-                                                      G4int tZ,G4int tN, G4double TotMom)
-{
-  //static const G4double third=1./3.; // power for A^P->R conversion [R=1.1*A^(1/3)]
-  //static const G4double conv=38.; // coeff. R2->sig=c*(pR+tR)^2, c=pi*10(mb/fm^2)*1.21
-  // If change the following, please change in ::GetFunctions:
-  static const G4double THmin=0.;  // @@ start from threshold (?) minimum Energy Threshold
-  static const G4double dP=10.;    // step for the LEN table
-  static const G4int    nL=100;    // A#of LENesonance points in E (each MeV from 2 to 106)
-  static const G4double Pmin=THmin+(nL-1)*dP; // minE for the HighE part
-  static const G4double Pmax=300000.;   // maxE for the HighE part
-  static const G4int    nH=100;         // A#of HResonance points in lnE
-  static const G4double milP=std::log(Pmin); // Low logarithm energy for the HighE part
-  static const G4double malP=std::log(Pmax); // High logarithm energy (each 2.75 percent)
-  static const G4double dlP=(malP-milP)/(nH-1); // Step in log energy in the HighE part
-  //
-  // Associative memory for acceleration
-  static std::vector <G4double*> LENI;   // Vector of pointers: LowEnIneIonIonCrossSection
-  static std::vector <G4double*> HENI;   // Vector of pointers: HighEnIneIonIonCrossSection
-  static std::vector <G4double*> LENE;   // Vector of pointers: LowEnElaIonIonCrossSection
-  static std::vector <G4double*> HENE;   // Vector of pointers: HighEnElaIonIonCrossSection
-#ifdef debug
-  G4cout<<"G4QIonIonCrossSection::CalcCS:N="<<targN<<",Z="<<targZ<<",P="<<Momentum<<G4endl;
-#endif
-  G4int dPDG=pPDG/10;                // 10SZZZAAA
-  G4int zPDG=dPDG/1000;              // 10SZZZ (?)
-  G4int zA=dPDG%1000;                // proj A
-  G4int pZ=zPDG%1000;                // proj Z (?)
-  G4int pN=zA-pZ;                    // proj N (?)
-  G4double Momentum=TotMom/zA;       // Momentum per nucleon
-  if (Momentum<THmin) return 0.;     // @@ This can be dangerouse for the heaviest nuc.!
-  G4double sigma=0.;
-  if(F&&I) sigma=0.;                 // @@ *!* Fake line *!* to use F & I !!!Temporary!!!
-  G4double tA=tN+tZ;                 // Target weight
-  G4double pA=zA;                    // Projectile weight
-  if(F<=0)                           // This isotope was not the last used isotop
-  {
-    if(F<0)                          // This isotope was found in DAMDB =========> RETRIEVE
-    {
-      lastLENI=LENI[I];              // Pointer to Low Energy inelastic cross sections
-      lastHENI=HENI[I];              // Pointer to High Energy inelastic cross sections
-      lastLENE=LENE[I];              // Pointer to Low Energy inelastic cross sections
-      lastHENE=HENE[I];              // Pointer to High Energy inelastic cross sections
-    }
-    else                             // This isotope wasn't calculated previously => CREATE
-    {
-      lastLENI = new G4double[nL];   // Allocate memory for the new LEN cross sections
-      lastHENI = new G4double[nH];   // Allocate memory for the new HEN cross sections
-      lastLENE = new G4double[nL];   // Allocate memory for the new LEN cross sections
-      lastHENE = new G4double[nH];   // Allocate memory for the new HEN cross sections
-      G4int er=GetFunctions(pZ,pN,tZ,tN,lastLENI,lastHENI,lastLENE,lastHENE);
-      if(er<1) G4cerr<<"*W*G4QIonIonCroSec::CalcCrossSection: pA="<<tA<<",tA="<<tA<<G4endl;
-#ifdef debug
-      G4cout<<"G4QIonIonCrossSection::CalcCS: GetFunctions er="<<er<<",pA="<<pA<<",tA="<<tA
-            <<G4endl;
-#endif
-      // *** The synchronization check ***
-      G4int sync=LENI.size();
-      if(sync!=I) G4cerr<<"***G4IonIonCrossSec::CalcCrossSect:Sync="<<sync<<"#"<<I<<G4endl;
-      LENI.push_back(lastLENI);      // added LEN Inelastic
-      HENI.push_back(lastHENI);      // added HEN Inelastic
-      LENE.push_back(lastLENE);      // added LEN Elastic
-      HENE.push_back(lastHENE);      // added HEN Elastic
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW the Magic Formula =================================
-  if (Momentum<lastTH) return 0.;    // It must be already checked in the interface class
-  else if (Momentum<Pmin)            // LEN region (approximated in E, not in lnE)
-  {
-#ifdef debug
-    G4cout<<"G4QIICS::CalCS:p="<<pA<<",t="<<tA<<",n="<<nL<<",T="<<THmin<<",d="<<dP<<G4endl;
-#endif
-    if(tA<1. || pA<1.)
-    {
-      G4cout<<"-Warning-G4QIICS::CalcCS: pA="<<pA<<" or tA="<<tA<<" aren't nuclei"<<G4endl;
-      sigma=0.;
-    }
-    else
-    {
-      if(XS) sigma=EquLinearFit(Momentum,nL,THmin,dP,lastLENI);
-      else   sigma=EquLinearFit(Momentum,nL,THmin,dP,lastLENE);
-    }
-#ifdef debugn
-    if(sigma<0.) G4cout<<"-Warning-G4QIICS::CalcCS:pA="<<pA<<",tA="<<tA<<",XS="<<XS<<",P="
-                       <<Momentum<<", Th="<<THmin<<", dP="<<dP<<G4endl;
-#endif
-  }
-  else if (Momentum<Pmax)                     // High Energy region
-  {
-    G4double lP=std::log(Momentum);
-#ifdef debug
-    G4cout<<"G4QIonIonCS::CalcCS:before HEN nH="<<nH<<",iE="<<milP<<",dlP="<<dlP<<G4endl;
-#endif
-    if(tA<=1. || pA<=1.)
-    {
-      G4cout<<"-Warning-G4QIICS::CalcCS:pA="<<pA<<"or tA="<<tA<<" aren't composit"<<G4endl;
-      sigma=0.;
-    }
-    else
-    {
-      if(XS) sigma=EquLinearFit(lP,nH,milP,dlP,lastHENI);
-      else   sigma=EquLinearFit(lP,nH,milP,dlP,lastHENE);
-    }
-  }
-  else                                      // UltraHighE region (not frequent)
-  {
-    std::pair<G4double, G4double> inelel = CalculateXS(pZ, pN, tZ, tN, Momentum);
-    if(XS) sigma=inelel.first;
-    else   sigma=inelel.second;
-  }
-#ifdef debug
-  G4cout<<"G4IonIonCrossSection::CalculateCrossSection: sigma="<<sigma<<G4endl;
-#endif
-  if(sigma<0.) return 0.;
-  return sigma;
-}
-
-// Linear fit for YN[N] tabulated (from X0 with fixed step DX) function to X point
-
-// Calculate the functions for the log(A)
-G4int G4QIonIonCrossSection::GetFunctions(G4int pZ,G4int pN,G4int tZ,G4int tN,G4double* li,
-                                          G4double* hi, G4double* le, G4double* he)
-{
-  // If change the following, please change in ::CalculateCrossSection:
-  static const G4double THmin=0.;  // @@ start from threshold (?) minimum Energy Threshold
-  static const G4double dP=10.;    // step for the LEN table
-  static const G4int    nL=100;    // A#of LENesonance points in E (each MeV from 2 to 106)
-  static const G4double Pmin=THmin+(nL-1)*dP;   // minE for the HighE part
-  static const G4double Pmax=100000.;           // maxE for the HighE part
-  static const G4int    nH=100;                 // A#of HResonance points in lnE
-  static const G4double milP=std::log(Pmin);    // Low logarithm energy for the HighE part
-  static const G4double malP=std::log(Pmax);    // High logarithm energy
-  static const G4double dlP=(malP-milP)/(nH-1); // Step in log energy in the HighE part
-  static const G4double lP=std::exp(dlP);       // Multiplication factor in the HighE part
-  // If the cross section approximation formula is changed - replace from file.
-  if(pZ<1 || pN<0 || tZ<1 || pN<0)
-  {
-    G4cout<<"-W-G4QIonIonCS::GetFunct:pZ="<<pZ<<",pN="<<pN<<",tZ="<<tZ<<",tN="<<tN<<G4endl;
-    return -1;
-  }
-  G4double Mom=THmin;
-  for(G4int k=0; k<nL; k++)
-  {
-    std::pair<G4double,G4double> len = CalculateXS(pZ, pN, tZ, tN, Mom);
-    li[k]=len.first;
-    le[k]=len.second;
-    Mom+=dP;
-  }
-  G4double lMom=Pmin;
-  for(G4int j=0; j<nH; j++)
-  {
-    std::pair<G4double,G4double> len = CalculateXS(pZ, pN, pZ, pN, Mom);
-    hi[j]=len.first;
-    he[j]=len.second;
-    lMom*=lP;
-  }
-#ifdef debug
-  G4cout<<"G4QIonIonCS::GetFunctions:p="<<pA<<",t="<<tA<<" pair is calculated"<<G4endl;
-#endif
-  return 1;
-}
-
-// Momentum (Mom=p/A) is in MeV/c, first=InelasticXS, second=ElasticXS (mb)
-std::pair<G4double,G4double> G4QIonIonCrossSection::CalculateXS(G4int pZ,G4int pN,G4int tZ,
-                                                                G4int tN, G4double Mom)
-{
-  static G4VQCrossSection* ElCSman = G4QElasticCrossSection::GetPointer();
-  static G4VQCrossSection* InelPCSman = G4QProtonNuclearCrossSection::GetPointer();
-  static G4VQCrossSection* InelNCSman = G4QNeutronNuclearCrossSection::GetPointer();
-  G4double pA=pZ+pN;
-  G4double tA=tZ+tN;
-  if(pA<.9 || tA<.9 ||pA>239. || tA>239 || Mom < 0.) return std::make_pair(0.,0.);
-  G4double inCS=0.;
-  G4double elCS=0.;
-  if(pA<1.1 || tA<1.1) // Ion-nucleon/nucleon-ion interaction use NA(in,el)
-  {
-    if ( (pZ == 1 && !pN) || (tZ == 1 && !tN) ) // proton-nuclear
-    {
-      elCS=InelPCSman->GetCrossSection(true, Mom, tZ, tN, 2212);
-      inCS=ElCSman->GetCrossSection(true, Mom, tZ, tN, 2212);
-    }
-    else if(pN==1 && !pZ)                // neutron-nuclear
-    {
-      elCS=InelNCSman->GetCrossSection(true, Mom, tZ, tN, 2112);
-      inCS=ElCSman->GetCrossSection(true, Mom, tZ, tN, 2112);
-    }
-    else G4cerr<<"-Warn-G4QIICS::CaCS:pZ="<<pZ<<",pN="<<pN<<",tZ="<<tZ<<",tN="<<tN<<G4endl;
-  }
-  else
-  {
-    G4double P2=Mom*Mom;
-    G4double P4=P2*P2;
-    G4double P8=P4*P4;
-    G4double T=ThresholdMomentum(pZ, pN, tZ, tN); // @@ Can be cashed as lastTH (?)
-    G4double T2=T*T;
-    G4double T4=T2*T2;
-    G4double tot=CalculateTotal(pA, tA, Mom)*P8/(P8+T4*T4); // @@ convert to Indep. Units
-    G4double rat=CalculateElTot(pA, tA, Mom);
-    elCS=tot*rat;
-    inCS=tot-elCS;
-  }
-  return std::make_pair(inCS,elCS);
-}
-
-// Total Ion-ion cross-section (mb), Momentum (Mom) here is p/A (MeV/c=IU)
-G4double G4QIonIonCrossSection::CalculateTotal(G4double pA, G4double tA, G4double Mom)
-{
-  G4double y=std::log(Mom/1000.); // Log of momentum in GeV/c
-  G4double ab=pA+tA;
-  G4double al=std::log(ab);
-  G4double ap=std::log(pA*tA);
-  G4double e=std::pow(pA,0.1)+std::pow(tA,0.1);
-  G4double d=e-1.55/std::pow(al,0.2);
-  G4double f=3.3+130./ab/ab+2.25/e;
-  if(pA<4. || tA<4.) f=4.;
-  G4double c=(385.+11.*ab/(1.+.02*ab*al)+(.5*ab+500./al/al)/al)*std::pow(d,f);
-  G4double r=y-3.-4./ap/ap;
-  return c+d*r*r;
-}
-
-// Ratio elastic/Total, Momentum (Mom) here is p/A (MeV/c=IU)
-G4double G4QIonIonCrossSection::CalculateElTot(G4double pA, G4double tA, G4double Mom)
-{
-  G4double y=std::log(Mom/1000.); // Log of momentum in GeV/c
-  G4double ab=pA*tA;
-  G4double ap=std::log(ab);
-  G4double r=y-3.92-1.73/ap/ap;
-  G4double d=.00166/(1.+.002*std::pow(ab,1.33333));
-  G4double al=std::log(pA+tA);
-  G4double e=1.+.235*(std::fabs(ap-5.78));
-  if     (std::fabs(pA-2.)<.1 && std::fabs(tA-2.)<.1) e=2.18;
-  else if(std::fabs(pA-2.)<.1 && std::fabs(tA-3.)<.1) e=1.90;
-  else if(std::fabs(pA-3.)<.1 && std::fabs(tA-2.)<.1) e=1.90;
-  else if(std::fabs(pA-2.)<.1 && std::fabs(tA-4.)<.1) e=1.65;
-  else if(std::fabs(pA-4.)<.1 && std::fabs(tA-2.)<.1) e=1.65;
-  else if(std::fabs(pA-3.)<.1 && std::fabs(tA-4.)<.1) e=1.32;
-  else if(std::fabs(pA-4.)<.1 && std::fabs(tA-3.)<.1) e=1.32;
-  else if(std::fabs(pA-4.)<.1 && std::fabs(tA-4.)<.1) e=1.;
-  G4double f=.37+.0188*al;
-  G4double g=std::log(std::pow(pA,0.35)+std::pow(tA,0.35));
-  G4double h=g*g;
-  G4double c=f/(1.+e/h/h);
-  return c+d*r*r;
-}
-
-// Electromagnetic momentum/A-threshold (in MeV/c) 
-G4double G4QIonIonCrossSection::ThresholdMomentum(G4int pZ, G4int pN, G4int tZ, G4int tN)
-{
-  static const G4double third=1./3.;
-  static const G4double pM = G4QPDGCode(2212).GetMass(); // Proton mass in MeV
-  static const G4double tpM= pM+pM;       // Doubled proton mass (MeV)
-  if(pZ<.99 || pN<0. || tZ<.99 || tN<0.) return 0.;
-  G4double tA=tZ+tN;
-  G4double pA=pZ+pN;
-  //G4double dE=1.263*tZ/(1.+std::pow(tA,third));
-  G4double dE=pZ*tZ/(std::pow(pA,third)+std::pow(tA,third))/pA; // dE/pA
-  return std::sqrt(dE*(tpM+dE));
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QIonIonElastic.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QIonIonElastic.cc	(revision 1197)
+++ 	(revision )
@@ -1,530 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QIonIonElastic.cc,v 1.4 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QIonIonElastic class -----------------
-//                 by Mikhail Kossov, December 2006.
-// G4QIonIonElastic class of the CHIPS Simulation Branch in GEANT4
-// ---------------------------------------------------------------
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ****************************************************************************************
-// Short description: a simple process for the Ion-Ion elastic scattering.
-// For heavy by heavy ions it can reach 50% of the total cross-section.
-// -----------------------------------------------------------------------
-
-//#define debug
-//#define pdebug
-//#define tdebug
-//#define nandebug
-//#define ppdebug
-
-#include "G4QIonIonElastic.hh"
-
-// Initialization of static vectors
-G4int G4QIonIonElastic::nPartCWorld=152;     // The#of particles initialized in CHIPS World
-std::vector<G4int> G4QIonIonElastic::ElementZ;        // Z of the element(i) in theLastCalc
-std::vector<G4double> G4QIonIonElastic::ElProbInMat;  // SumProbabilityElements in Material
-std::vector<std::vector<G4int>*> G4QIonIonElastic::ElIsoN; // N of isotope(j) of Element(i)
-std::vector<std::vector<G4double>*>G4QIonIonElastic::IsoProbInEl;//SumProbabIsotopes in ElI
-
-// Constructor
-G4QIonIonElastic::G4QIonIonElastic(const G4String& processName):
-  G4VDiscreteProcess(processName, fHadronic)
-{
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::Constructor is called processName="<<processName<<G4endl;
-#endif
-  if (verboseLevel>0) G4cout << GetProcessName() << " process is created "<< G4endl;
-  SetProcessSubType(fHadronElastic);
-  //G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part. max)
-}
-
-// Destructor
-G4QIonIonElastic::~G4QIonIonElastic() {}
-
-// output of the function must be in units of length! L=1/sig_V,sig_V=SUM(n(j,i)*sig(j,i)),
-// where n(i,j) is a number of nuclei of the isotop j of the element i in V=1(lengtUnit^3)
-// ********** All CHIPS cross sections are calculated in the surface units ************
-G4double G4QIonIonElastic::GetMeanFreePath(const G4Track& aTrack, G4double,
-                                           G4ForceCondition* Fc)
-{
-  *Fc = NotForced;
-  const G4DynamicParticle* incidentParticle = aTrack.GetDynamicParticle();
-  G4ParticleDefinition* incidentParticleDefinition=incidentParticle->GetDefinition();
-  if( !IsApplicable(*incidentParticleDefinition))
-    G4cout<<"-Warning-G4QIonIonElastic::GetMeanFreePath: notImplementedParticle"<<G4endl;
-  // Calculate the mean Cross Section for the set of Elements(*Isotopes) in the Material
-  G4double Momentum = incidentParticle->GetTotalMomentum(); // 3-momentum of the Particle
-#ifdef debug
-  G4double KinEn = incidentParticle->GetKineticEnergy();
-  G4cout<<"G4QIonIonElastic::GetMeanFreePath: kinE="<<KinEn<<",Mom="<<Momentum<<G4endl;
-#endif
-  const G4Material* material = aTrack.GetMaterial();        // Get the current material
-  const G4double* NOfNucPerVolume = material->GetVecNbOfAtomsPerVolume();
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::GetMeanFreePath:"<<nE<<" Elem's in theMaterial"<<G4endl;
-#endif
-  G4VQCrossSection* CSmanager=G4QIonIonCrossSection::GetPointer();
-  G4int pPDG=0;
-  // Probably enough: pPDG=incidentParticleDefinition->GetPDGEncoding();
-  if      ( incidentParticleDefinition ==  G4Deuteron::Deuteron()     ) pPDG = 100001002;
-  else if ( incidentParticleDefinition ==  G4Alpha::Alpha()           ) pPDG = 100002004;
-  else if ( incidentParticleDefinition ==  G4Triton::Triton()         ) pPDG = 100001003;
-  else if ( incidentParticleDefinition ==  G4He3::He3()               ) pPDG = 100002003;
-  else if ( incidentParticleDefinition ==  G4GenericIon::GenericIon() )
-  {
-    pPDG=incidentParticleDefinition->GetPDGEncoding();
-#ifdef debug
-    G4int B=incidentParticleDefinition->GetBaryonNumber();
-    G4int C=incidentParticleDefinition->GetPDGCharge();
-    prPDG=100000000+1000*C+B;
-    G4cout<<"G4QIonIonElastic::GetMeanFreePath: PDG="<<prPDG<<"="<<pPDG<<G4endl;
-#endif
-  }
-  else G4cout<<"-Warning-G4QIonIonElastic::GetMeanFreePath:Unknown projectile Ion"<<G4endl;
-  Momentum/=incidentParticleDefinition->GetBaryonNumber(); // Divide Mom by projectile A
-  G4QIsotope* Isotopes = G4QIsotope::Get(); // Pointer to the G4QIsotopes singleton
-  G4double sigma=0.;                        // Sums over elements for the material
-  G4int IPIE=IsoProbInEl.size();            // How many old elements?
-  if(IPIE) for(G4int ip=0; ip<IPIE; ++ip)   // Clean up the SumProb's of Isotopes (SPI)
-  {
-    std::vector<G4double>* SPI=IsoProbInEl[ip]; // Pointer to the SPI vector
-    SPI->clear();
-    delete SPI;
-    std::vector<G4int>* IsN=ElIsoN[ip];     // Pointer to the N vector
-    IsN->clear();
-    delete IsN;
-  }
-  ElProbInMat.clear();                      // Clean up the SumProb's of Elements (SPE)
-  ElementZ.clear();                         // Clear the body vector for Z of Elements
-  IsoProbInEl.clear();                      // Clear the body vector for SPI
-  ElIsoN.clear();                           // Clear the body vector for N of Isotopes
-  for(G4int i=0; i<nE; ++i)
-  {
-    G4Element* pElement=(*theElementVector)[i]; // Pointer to the current element
-    G4int Z = static_cast<G4int>(pElement->GetZ()); // Z of the Element
-    ElementZ.push_back(Z);                  // Remember Z of the Element
-    G4int isoSize=0;                        // The default for the isoVectorLength is 0
-    G4int indEl=0;                          // Index of non-natural element or 0(default)
-    G4IsotopeVector* isoVector=pElement->GetIsotopeVector(); // Get the predefined IsoVect
-    if(isoVector) isoSize=isoVector->size();// Get size of the existing isotopeVector
-#ifdef debug
-    G4cout<<"G4QIonIonElastic::GetMeanFreePath: isovectorLength="<<isoSize<<G4endl;
-#endif
-    if(isoSize)                             // The Element has non-trivial abundance set
-    {
-      indEl=pElement->GetIndex()+1;         // Index of the non-trivial element is an order
-#ifdef debug
-      G4cout<<"G4QIIEl::GetMFP:iE="<<indEl<<", def="<<Isotopes->IsDefined(Z,indEl)<<G4endl;
-#endif
-      if(!Isotopes->IsDefined(Z,indEl))     // This index is not defined for this Z: define
-      {
-        std::vector<std::pair<G4int,G4double>*>* newAbund =
-                                               new std::vector<std::pair<G4int,G4double>*>;
-        G4double* abuVector=pElement->GetRelativeAbundanceVector();
-        for(G4int j=0; j<isoSize; j++)      // Calculation of abundance vector for isotopes
-        {
-          G4int N=pElement->GetIsotope(j)->GetN()-Z; // N means A=N+Z !
-          if(pElement->GetIsotope(j)->GetZ()!=Z) G4cerr<<"G4QIonIonEl::GetMeanFreePath Z="
-                                         <<pElement->GetIsotope(j)->GetZ()<<"#"<<Z<<G4endl;
-          G4double abund=abuVector[j];
-          std::pair<G4int,G4double>* pr= new std::pair<G4int,G4double>(N,abund);
-#ifdef debug
-          G4cout<<"G4QIonIonElastic::GetMeanFP:pair#="<<j<<",N="<<N<<",ab="<<abund<<G4endl;
-#endif
-          newAbund->push_back(pr);
-        }
-#ifdef debug
-        G4cout<<"G4QIonIonElastic::GetMeanFP: pairVectorLength="<<newAbund->size()<<G4endl;
-#endif
-        indEl=G4QIsotope::Get()->InitElement(Z,indEl,newAbund); // definition of the newInd
-        for(G4int k=0; k<isoSize; k++) delete (*newAbund)[k];   // Cleaning temporary
-        delete newAbund; // Was "new" in the beginning of the name space
-      }
-    }
-    std::vector<std::pair<G4int,G4double>*>* cs= Isotopes->GetCSVector(Z,indEl);//CSPointer
-    std::vector<G4double>* SPI = new std::vector<G4double>; // Pointer to the SPI vector
-    IsoProbInEl.push_back(SPI);
-    std::vector<G4int>* IsN = new std::vector<G4int>; // Pointer to the N vector
-    ElIsoN.push_back(IsN);
-    G4int nIs=cs->size();                   // A#Of Isotopes in the Element
-#ifdef debug
-    G4cout<<"G4QIonIonEl::GetMFP:=***=> #isot="<<nIs<<", Z="<<Z<<", indEl="<<indEl<<G4endl;
-#endif
-    G4double susi=0.;                       // sum of CS over isotopes
-    if(nIs) for(G4int j=0; j<nIs; j++)      // Calculate CS for eachIsotope of El
-    {
-      std::pair<G4int,G4double>* curIs=(*cs)[j]; // A pointer, which is used twice
-      G4int N=curIs->first;                 // #of Neuterons in the isotope j of El i
-      IsN->push_back(N);                    // Remember Min N for the Element
-#ifdef debug
-      G4cout<<"G4QIIEl::GMFP:true,P="<<Momentum<<",Z="<<Z<<",N="<<N<<",PDG="<<pPDG<<G4endl;
-#endif
-      G4bool ccsf=false;                    // Extract elastic Ion-Ion cross-section
-#ifdef debug
-      G4cout<<"G4QIonIonElastic::GMFP: GetCS #1 j="<<j<<G4endl;
-#endif
-      G4double CSI=CSmanager->GetCrossSection(ccsf,Momentum,Z,N,pPDG);//CS(j,i) for isotope
-#ifdef debug
-      G4cout<<"G4QIonIonElastic::GMFP: jI="<<j<<", Zt="<<Z<<", Nt="<<N<<", Mom="<<Momentum
-            <<", XSec="<<CSI/millibarn<<G4endl;
-#endif
-      curIs->second = CSI;
-      susi+=CSI;                            // Make a sum per isotopes
-      SPI->push_back(susi);                 // Remember summed cross-section
-    } // End of temporary initialization of the cross sections in the G4QIsotope singeltone
-    sigma+=Isotopes->GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i];//SUM(MeanCS*NOfNperV)
-#ifdef debug
-    G4cout<<"G4QIonIonEl::GMFP:<S>="<<Isotopes->GetMeanCrossSection(Z,indEl)<<",AddToSig="
-          <<Isotopes->GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i]<<G4endl;
-#endif
-    ElProbInMat.push_back(sigma);
-  } // End of LOOP over Elements
-  // Check that cross section is not zero and return the mean free path
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::GetMeanFreePath: MeanFreePath="<<1./sigma<<G4endl;
-#endif
-  if(sigma > 0.) return 1./sigma;                 // Mean path [distance] 
-  return DBL_MAX;
-}
-
-
-G4bool G4QIonIonElastic::IsApplicable(const G4ParticleDefinition& particle) 
-{
-  if      (particle == *( G4Deuteron::Deuteron()     )) return true;
-  else if (particle == *( G4Alpha::Alpha()           )) return true;
-  else if (particle == *( G4Triton::Triton()         )) return true;
-  else if (particle == *( G4He3::He3()               )) return true;
-  else if (particle == *( G4GenericIon::GenericIon() )) return true;
-#ifdef debug
-  G4cout<<"***>>G4QIonIonElastic::IsApplicable: PDG="<<particle.GetPDGEncoding()<<G4endl;
-#endif
-  return false;
-}
-
-G4VParticleChange* G4QIonIonElastic::PostStepDoIt(const G4Track& track, const G4Step& step)
-{
-  static const G4double fm2MeV2 = 3*38938./1.09; // (3/1.09)*(hc)^2 in fm^2*MeV^2
-  static G4bool CWinit = true;                   // CHIPS Warld needs to be initted
-  if(CWinit)
-  {
-    CWinit=false;
-    G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part.max)
-  }
-  //-------------------------------------------------------------------------------------
-  const G4DynamicParticle* projHadron = track.GetDynamicParticle();
-  const G4ParticleDefinition* particle=projHadron->GetDefinition();
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::PostStepDoIt: Before the GetMeanFreePath is called In4M="
-        <<projHadron->Get4Momentum()<<" of PDG="<<particle->GetPDGEncoding()<<", Type="
-        <<particle->GetParticleType()<<", Subtp="<<particle->GetParticleSubType()<<G4endl;
-#endif
-  //G4ForceCondition cond=NotForced;
-  //GetMeanFreePath(track, -27., &cond);                // @@ ?? jus to update parameters?
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::PostStepDoIt: After the GetMeanFreePath is called"<<G4endl;
-#endif
-  G4LorentzVector proj4M=(projHadron->Get4Momentum())/MeV; // Convert to MeV!
-  G4LorentzVector scat4M=proj4M;                      // @@ Must be filled (?)
-  G4double momentum = projHadron->GetTotalMomentum()/MeV; // 3-momentum of the Proj in MeV
-  G4double Momentum = proj4M.rho();                   // @@ Just for the test purposes
-  if(std::fabs(Momentum-momentum)>.000001)
-    G4cerr<<"-Warn-G4QIonIonElastic::PostStepDoIt:P(IU)="<<Momentum<<"#"<<momentum<<G4endl;
-  G4double pM2=proj4M.m2();        // in MeV^2
-  G4double pM=std::sqrt(pM2);      // in MeV
-#ifdef pdebug
-  G4cout<<"G4QIonIonElastic::PostStepDoIt: pP(IU)="<<Momentum<<"="<<momentum<<",pM="<<pM
-        <<",scat4M="<<scat4M<<scat4M.m()<<G4endl;
-#endif
-  if (!IsApplicable(*particle))  // Check applicability
-  {
-    G4cerr<<"G4QIonIonElastic::PostStepDoIt: Only NA elastic is implemented."<<G4endl;
-    return 0;
-  }
-  const G4Material* material = track.GetMaterial();      // Get the current material
-  G4int Z=0;
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::PostStepDoIt: "<<nE<<" elements in the material."<<G4endl;
-#endif
-  // Probably enough: projPDG=particle->GetPDGEncoding();
-  G4int projPDG=0;                           // CHIPS PDG Code for the captured hadron
-  if      (particle ==  G4Deuteron::Deuteron()     ) projPDG= 100001002;
-  else if (particle ==  G4Alpha::Alpha()           ) projPDG= 100002004;
-  else if (particle ==  G4Triton::Triton()         ) projPDG= 100001003;
-  else if (particle ==  G4He3::He3()               ) projPDG= 100002003;
-  else if (particle ==  G4GenericIon::GenericIon() )
-  {
-    projPDG=particle->GetPDGEncoding();
-#ifdef debug
-    G4int B=particle->GetBaryonNumber();
-    G4int C=particle->GetPDGCharge();
-    prPDG=100000000+1000*C+B;
-    G4cout<<"G4QIonIonElastic::PostStepDoIt: PDG="<<prPDG<<"="<<projPDG<<G4endl;
-#endif
-  }
-  else G4cout<<"-Warning-G4QIonIonElastic::PostStepDoIt:Unknown projectile Ion"<<G4endl;
-#ifdef debug
-  G4int prPDG=particle->GetPDGEncoding();
-  G4cout<<"G4QIonIonElastic::PostStepDoIt: projPDG="<<projPDG<<", stPDG="<<prPDG<<G4endl;
-#endif
-  if(!projPDG)
-  {
-    G4cerr<<"-Warning-G4QIonIonElastic::PostStepDoIt:Undefined interactingNucleus"<<G4endl;
-    return 0;
-  }
-  G4double pA=particle->GetBaryonNumber();     // Projectile A
-  G4double pZ=particle->GetPDGCharge();        // Projectile Z
-  G4double pN=pA-pZ;                           // Projectile N
-  G4int EPIM=ElProbInMat.size();
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::PSDI:m="<<EPIM<<",n="<<nE<<",T="<<ElProbInMat[EPIM-1]<<G4endl;
-#endif
-  G4int i=0;
-  if(EPIM>1)
-  {
-    G4double rnd = ElProbInMat[EPIM-1]*G4UniformRand();
-    for(i=0; i<nE; ++i)
-    {
-#ifdef debug
-      G4cout<<"G4QIonIonElastic::PSDI: EPM["<<i<<"]="<<ElProbInMat[i]<<", r="<<rnd<<G4endl;
-#endif
-      if (rnd<ElProbInMat[i]) break;
-    }
-    if(i>=nE) i=nE-1;                        // Top limit for the Element
-  }
-  G4Element* pElement=(*theElementVector)[i];
-  Z=static_cast<G4int>(pElement->GetZ());
-#ifdef debug
-    G4cout<<"G4QIonIonElastic::PostStepDoIt: i="<<i<<", Z(element)="<<Z<<G4endl;
-#endif
-  if(Z<=0)
-  {
-    G4cerr<<"---Warning---G4QIonIonElastic::PostStepDoIt: Element with Z="<<Z<<G4endl;
-    if(Z<0) return 0;
-  }
-  std::vector<G4double>* SPI = IsoProbInEl[i];// Vector of summedProbabilities for isotopes
-  std::vector<G4int>* IsN = ElIsoN[i];     // Vector of "#of neutrons" in the isotope El[i]
-  G4int nofIsot=SPI->size();               // #of isotopes in the element i
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::PosStDoIt: nI="<<nofIsot<<",T="<<(*SPI)[nofIsot-1]<<G4endl;
-#endif
-  G4int j=0;
-  if(nofIsot>1)
-  {
-    G4double rndI=(*SPI)[nofIsot-1]*G4UniformRand(); // Randomize the isotop of the Element
-    for(j=0; j<nofIsot; ++j)
-    {
-#ifdef debug
-      G4cout<<"G4QIonIonElastic::PostStDI: SP["<<j<<"]="<<(*SPI)[j]<<", r="<<rndI<<G4endl;
-#endif
-      if(rndI < (*SPI)[j]) break;
-    }
-    if(j>=nofIsot) j=nofIsot-1;            // Top limit for the isotope
-  }
-  G4int N =(*IsN)[j]; ;                    // Randomized number of neutrons
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::PostStepDoIt:j="<<i<<",N(isotope)="<<N<<", MeV="<<MeV<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"-Warning-G4QIonIonElastic::PostStepDoIt:IsotopeZ="<<Z<<" has 0>N="<<N<<G4endl;
-    return 0;
-  }
-  nOfNeutrons=N;                           // Remember it for the energy-momentum check
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::PostStepDoIt: N="<<N<<" for element with Z="<<Z<<G4endl;
-#endif
-  if(N<0)
-  {
-    G4cerr<<"-Warning-G4QIonIonElastic::PostStepDoIt:Element with N="<<N<< G4endl;
-    return 0;
-  }
-  aParticleChange.Initialize(track);
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::PostStepDoIt: track is initialized"<<G4endl;
-#endif
-  G4double weight        = track.GetWeight();
-  G4double localtime     = track.GetGlobalTime();
-  G4ThreeVector position = track.GetPosition();
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::PostStepDoIt: before Touchable extraction"<<G4endl;
-#endif
-  G4TouchableHandle trTouchable = track.GetTouchableHandle();
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::PostStepDoIt: Touchable is extracted"<<G4endl;
-#endif
-  //
-  G4double tA=Z+N;
-  G4int targPDG=90000000+Z*1000+N;         // CHIPS PDG Code of the target nucleus
-  G4QPDGCode targQPDG(targPDG);            // @@ one can use G4Ion & get rid of CHIPS World
-  G4double tM=targQPDG.GetMass();          // CHIPS target mass in MeV
-  G4double kinEnergy= projHadron->GetKineticEnergy()*MeV; // Kin energy in MeV (Is *MeV n?)
-  G4ParticleMomentum dir = projHadron->GetMomentumDirection();// It is a unit three-vector
-  G4LorentzVector tot4M=proj4M+G4LorentzVector(0.,0.,0.,tM); // Total 4-mom of the reaction
-#ifdef debug
-  G4cout<<"G4QIonIonElastic::PostStDI: tM="<<tM<<", p4M="<<proj4M<<", t4M="<<tot4M<<G4endl;
-#endif
-  EnMomConservation=tot4M;                 // Total 4-mom of reaction for E/M conservation
-  G4VQCrossSection* ELmanager=G4QElasticCrossSection::GetPointer();
-  G4VQCrossSection* CSmanager=G4QIonIonCrossSection::GetPointer();
-  // @@ Probably this is not necessary any more
-#ifdef debug
-  G4cout<<"G4QIIEl::PSDI:false,P="<<Momentum<<",Z="<<Z<<",N="<<N<<",PDG="<<projPDG<<G4endl;
-#endif
-  // false means elastic cross-section
-  G4double xSec=CSmanager->GetCrossSection(false, Momentum, Z, N, projPDG);// Rec.CrossSect
-#ifdef debug
-  G4cout<<"G4QIIEl::PSDI: pPDG="<<projPDG<<",P="<<Momentum<<",CS="<<xSec/millibarn<<G4endl;
-#endif
-#ifdef nandebug
-  if(xSec>0. || xSec<0. || xSec==0);
-  else  G4cout<<"-NaN-Warning-G4QIonIonElastic::PostStDoIt: xSec="<<xSec/millibarn<<G4endl;
-#endif
-  // @@ check a possibility to separate p, n, or alpha (!)
-  if(xSec <= 0.) // The cross-section iz 0 -> Do Nothing
-  {
-#ifdef pdebug
-    G4cerr<<"-Warning-G4QIonIonElastic::PostStDoIt: *Zero cross-section* PDG="<<projPDG
-          <<",tPDG="<<targPDG<<",P="<<Momentum<<G4endl;
-#endif
-    //Do Nothing Action insead of the reaction
-    aParticleChange.ProposeEnergy(kinEnergy);
-    aParticleChange.ProposeLocalEnergyDeposit(0.);
-    aParticleChange.ProposeMomentumDirection(dir) ;
-    return G4VDiscreteProcess::PostStepDoIt(track,step);
-  }
-  G4double dtM=tM+tM;
-  G4double PA=Momentum*pA;
-  G4double PA2=PA*PA;
-  G4double maxt=dtM*PA2/(std::sqrt(PA2+pM2)+tM/2+pM2/dtM);
-#ifdef pdebug
-  G4cout<<"G4QIonIonElastic::PostStDoIt:pPDG="<<projPDG<<",tPDG="<<targPDG<<",P="<<Momentum
-        <<",CS="<<xSec<<",maxt="<<maxt<<G4endl;
-#endif
-  xSec=ELmanager->GetCrossSection(false, Momentum, 1, 0, 2212);// pp=nn
-  G4double B1=ELmanager->GetSlope(1,0,2212); // slope for pp=nn
-  xSec=ELmanager->GetCrossSection(false, Momentum, 1, 0, 2112);// np=pn
-  G4double B2 =ELmanager->GetSlope(1,0,2112); // slope for np=pn
-  G4double mB =((pZ*Z+pN*N)*B1+(pZ*N+pN*Z)*B2)/(pA+tA);
-  G4double pR2=std::pow(pA+4.,.305)/fm2MeV2;
-  G4double tR2=std::pow(tA+4.,.305)/fm2MeV2;
-  G4double eB =mB+pR2+tR2;
-  G4double mint=-std::log(1.-G4UniformRand()*(1.-std::exp(-eB*maxt)))/eB;
-#ifdef pdebug
-  G4cout<<"G4QIonIonElastic::PostStDoIt:B1="<<B1<<",B2="<<B2<<",mB="<<mB
-        <<",pR2="<<pR2<<",tR2="<<tR2<<",eB="<<eB<<",mint="<<mint<<G4endl;
-#endif
-#ifdef nandebug
-  if(mint>-.0000001);
-  else  G4cout<<"-Warning-G4QIonIonElastic::PostStDoIt:-t="<<mint<<G4endl;
-#endif
-  G4double cost=1.-(mint+mint)/maxt; // cos(theta) in CMS
-  // 
-#ifdef ppdebug
-  G4cout<<"G4QIonIonElastic::PoStDoI:t="<<mint<<",dpcm2="<<CSmanager->GetHMaxT()<<",Ek="
-        <<kinEnergy<<",tM="<<tM<<",pM="<<pM<<",cost="<<cost<<G4endl;
-#endif
-  if(cost>1. || cost<-1. || !(cost>-1. || cost<1.))
-  {
-    if(cost>1.000001 || cost<-1.000001 || !(cost>-1. || cost<1.))
-    {
-      G4double tM2=tM*tM;                         // Squared target mass
-      G4double pEn=pM+kinEnergy;                  // tot projectile Energy in MeV
-      G4double sM=dtM*pEn+tM2+pM2;                // Mondelstam s
-      G4double twop2cm=(tM2+tM2)*(pEn*pEn-pM2)/sM;// Max_t/2 (2*p^2_cm)
-      G4cout<<"-Warning-G4QIonIonElastic::PoStDI:cos="<<cost<<",t="<<mint<<",T="<<kinEnergy
-            <<",tM="<<tM<<",tmax="<<2*kinEnergy*tM<<",p="<<projPDG<<",t="<<targPDG<<G4endl;
-      G4cout<<"G4QIonIonElastic::PSDI:dpcm2="<<twop2cm<<"="<<CSmanager->GetHMaxT()<<G4endl;
-    }
-    if     (cost>1.)  cost=1.;
-    else if(cost<-1.) cost=-1.;
-  }
-  G4LorentzVector reco4M=G4LorentzVector(0.,0.,0.,tM);      // 4mom of the recoil target
-  G4LorentzVector dir4M=tot4M-G4LorentzVector(0.,0.,0.,(tot4M.e()-tM-pM)*.01);
-  if(!G4QHadron(tot4M).RelDecayIn2(scat4M, reco4M, dir4M, cost, cost))
-  {
-    G4cerr<<"G4QIonIonE::PSDI:t4M="<<tot4M<<",pM="<<pM<<",tM="<<tM<<",cost="<<cost<<G4endl;
-  }
-#ifdef debug
-  G4cout<<"G4QIonIonElast::PSDI:s4M="<<scat4M<<"+r4M="<<reco4M<<"="<<scat4M+reco4M<<G4endl;
-  G4cout<<"G4QIonIonElastic::PSDI:scatE="<<scat4M.e()-pM<<",recoE="<<reco4M.e()-tM<<",d4M="
-        <<tot4M-scat4M-reco4M<<G4endl;
-#endif
-  // Update G4VParticleChange for the scattered projectile
-  G4double finE=scat4M.e()-pM;             // Final kinetic energy of the scattered proton
-  if(finE>0.0) aParticleChange.ProposeEnergy(finE);
-  else
-  {
-    if(finE<-1.e-8 || !(finE>-1.||finE<1.)) // NAN or negative
-      G4cerr<<"*Warning*G4QIonIonElastic::PostStDoIt: Zero or negative scattered E="<<finE
-            <<", s4M="<<scat4M<<", r4M="<<reco4M<<", d4M="<<tot4M-scat4M-reco4M<<G4endl;
-    aParticleChange.ProposeEnergy(0.) ;
-    aParticleChange.ProposeTrackStatus(fStopButAlive);
-  }
-  G4ThreeVector findir=scat4M.vect()/scat4M.rho();  // Unit vector in new direction
-  aParticleChange.ProposeMomentumDirection(findir); // new direction for the scattered part
-  EnMomConservation-=scat4M;                        // It must be initialized by (pE+tM,pP)
-  // This is how in general the secondary should be identified
-  G4DynamicParticle* theSec = new G4DynamicParticle; // A secondary for the recoil hadron 
-  G4int aA = Z+N;
-#ifdef pdebug
-  G4cout<<"G4QIonIonElastic::PostStepDoIt: Ion Z="<<Z<<", A="<<aA<<G4endl;
-#endif
-  G4ParticleDefinition* theDefinition=G4ParticleTable::GetParticleTable()
-                                                                       ->FindIon(Z,aA,0,Z);
-  if(!theDefinition)G4cout<<"-Warning-G4QIonIonElastic::PoStDI:drop PDG="<<targPDG<<G4endl;
-#ifdef pdebug
-  G4cout<<"G4QIonIonElastic::PoStDI:RecoilName="<<theDefinition->GetParticleName()<<G4endl;
-#endif
-  theSec->SetDefinition(theDefinition);
-
-  EnMomConservation-=reco4M;
-#ifdef tdebug
-  G4cout<<"G4QIonIonElastic::PSD:"<<targPDG<<reco4M<<reco4M.m()<<EnMomConservation<<G4endl;
-#endif
-  theSec->Set4Momentum(reco4M);
-#ifdef debug
-  G4ThreeVector curD=theSec->GetMomentumDirection();
-  G4double curM=theSec->GetMass();
-  G4double curE=theSec->GetKineticEnergy()+curM;
-  G4cout<<"G4QIonIonElastic::PSDI: p="<<curD<<curD.mag()<<",e="<<curE<<",m="<<curM<<G4endl;
-#endif
-  // Make a recoil nucleus
-  G4Track* aNewTrack = new G4Track(theSec, localtime, position );
-  aNewTrack->SetWeight(weight);                                   //    weighted
-  aNewTrack->SetTouchableHandle(trTouchable);
-  aParticleChange.AddSecondary( aNewTrack );
-#ifdef debug
-    G4cout<<"G4QIonIonElastic::PostStepDoIt: **** PostStepDoIt is done ****"<<G4endl;
-#endif
-  return G4VDiscreteProcess::PostStepDoIt(track, step);
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QLowEnergy.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QLowEnergy.cc	(revision 1197)
+++ 	(revision )
@@ -1,1087 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QLowEnergy.cc,v 1.9 2009/03/09 15:41:17 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//      ---------------- G4QLowEnergy class -----------------
-//                 by Mikhail Kossov, Aug 2007.
-// G4QLowEnergy class of the CHIPS Simulation Branch in GEANT4
-// ---------------------------------------------------------------
-// Short description: This is a fast low energy algorithm for the
-// inelastic interactions of nucleons and nuclei (ions) with nuclei.
-// This is a fase-space algorithm, but not quark level. Provides
-// nuclear fragments upto alpha only. Never was tumed (but can be).
-// ---------------------------------------------------------------
-
-//#define debug
-//#define pdebug
-//#define tdebug
-//#define nandebug
-//#define ppdebug
-
-#include "G4QLowEnergy.hh"
-
-// Initialization of static vectors
-G4int    G4QLowEnergy::nPartCWorld=152;  // #of particles initialized in CHIPS
-std::vector<G4int> G4QLowEnergy::ElementZ; // Z of element(i) in theLastCalc
-std::vector<G4double> G4QLowEnergy::ElProbInMat; // SumProbOfElem in Material
-std::vector<std::vector<G4int>*> G4QLowEnergy::ElIsoN;// N of isotope(j), E(i)
-std::vector<std::vector<G4double>*>G4QLowEnergy::IsoProbInEl;//SumProbIsotE(i)
-
-// Constructor
-G4QLowEnergy::G4QLowEnergy(const G4String& processName):
-  G4VDiscreteProcess(processName, fHadronic), evaporate(true)
-{
-#ifdef debug
-  G4cout<<"G4QLowEnergy::Constructor is called processName="<<processName<<G4endl;
-#endif
-  if (verboseLevel>0) G4cout<<GetProcessName()<<" process is created "<<G4endl;
-  SetProcessSubType(fHadronInelastic);
-  G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part. max)
-}
-
-// Destructor
-G4QLowEnergy::~G4QLowEnergy() {}
-
-
-G4LorentzVector G4QLowEnergy::GetEnegryMomentumConservation(){return EnMomConservation;}
-
-G4int G4QLowEnergy::GetNumberOfNeutronsInTarget() {return nOfNeutrons;}
-
-// output of the function must be in units of length! L=1/sig_V,sig_V=SUM(n(j,i)*sig(j,i)),
-// where n(i,j) is a number of nuclei of the isotop j of the element i in V=1(lengtUnit^3)
-// ********** All CHIPS cross sections are calculated in the surface units ************
-G4double G4QLowEnergy::GetMeanFreePath(const G4Track&Track, G4double, G4ForceCondition*F)
-{
-  *F = NotForced;
-  const G4DynamicParticle* incidentParticle = Track.GetDynamicParticle();
-  G4ParticleDefinition* incidentParticleDefinition=incidentParticle->GetDefinition();
-  if( !IsApplicable(*incidentParticleDefinition))
-    G4cout<<"-Warning-G4QLowEnergy::GetMeanFreePath for notImplemented Particle"<<G4endl;
-  // Calculate the mean Cross Section for the set of Elements(*Isotopes) in the Material
-  G4double Momentum = incidentParticle->GetTotalMomentum(); // 3-momentum of the Particle
-#ifdef debug
-  G4double KinEn = incidentParticle->GetKineticEnergy();
-  G4cout<<"G4QLowEnergy::GetMeanFreePath:Prpj, kinE="<<KinEn<<", Mom="<<Momentum<<G4endl;
-#endif
-  const G4Material* material = Track.GetMaterial();        // Get the current material
-  const G4double* NOfNucPerVolume = material->GetVecNbOfAtomsPerVolume();
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QLowEnergy::GetMeanFreePath:"<<nE<<" Elems"<<G4endl;
-#endif
-  G4int pPDG=0;
-  if      ( incidentParticleDefinition ==  G4Proton::Proton()         ) pPDG = 2212;
-  else if ( incidentParticleDefinition ==  G4Deuteron::Deuteron()     ) pPDG = 100001002;
-  else if ( incidentParticleDefinition ==  G4Alpha::Alpha()           ) pPDG = 100002004;
-  else if ( incidentParticleDefinition ==  G4Triton::Triton()         ) pPDG = 100001003;
-  else if ( incidentParticleDefinition ==  G4He3::He3()               ) pPDG = 100002003;
-  else if ( incidentParticleDefinition ==  G4GenericIon::GenericIon() )
-  {
-    pPDG=incidentParticleDefinition->GetPDGEncoding();
-#ifdef debug
-    G4int B=incidentParticleDefinition->GetBaryonNumber();
-    G4int C=incidentParticleDefinition->GetPDGCharge();
-    prPDG=100000000+1000*C+B;
-    G4cout<<"G4QIonIonElastic::GetMeanFreePath: PDG="<<prPDG<<"="<<pPDG<<G4endl;
-#endif
-  }
-  else G4cout<<"-Warning-G4QLowEnergy::GetMeanFreePath: only AA & pA implemented"<<G4endl;
-  G4VQCrossSection* CSmanager=G4QIonIonCrossSection::GetPointer();
-  if(pPDG == 2212) CSmanager=G4QProtonNuclearCrossSection::GetPointer();
-  Momentum/=incidentParticleDefinition->GetBaryonNumber(); // Divide Mom by projectile A
-  G4QIsotope* Isotopes = G4QIsotope::Get(); // Pointer to the G4QIsotopes singleton
-  G4double sigma=0.;                        // Sums over elements for the material
-  G4int IPIE=IsoProbInEl.size();            // How many old elements?
-  if(IPIE) for(G4int ip=0; ip<IPIE; ++ip)   // Clean up the SumProb's of Isotopes (SPI)
-  {
-    std::vector<G4double>* SPI=IsoProbInEl[ip]; // Pointer to the SPI vector
-    SPI->clear();
-    delete SPI;
-    std::vector<G4int>* IsN=ElIsoN[ip];     // Pointer to the N vector
-    IsN->clear();
-    delete IsN;
-  }
-  ElProbInMat.clear();                      // Clean up the SumProb's of Elements (SPE)
-  ElementZ.clear();                         // Clear the body vector for Z of Elements
-  IsoProbInEl.clear();                      // Clear the body vector for SPI
-  ElIsoN.clear();                           // Clear the body vector for N of Isotopes
-  for(G4int i=0; i<nE; ++i)
-  {
-    G4Element* pElement=(*theElementVector)[i]; // Pointer to the current element
-    G4int Z = static_cast<G4int>(pElement->GetZ()); // Z of the Element
-    ElementZ.push_back(Z);                  // Remember Z of the Element
-    G4int isoSize=0;                        // The default for the isoVectorLength is 0
-    G4int indEl=0;                          // Index of non-natural element or 0(default)
-    G4IsotopeVector* isoVector=pElement->GetIsotopeVector(); // Get the predefined IsoVect
-    if(isoVector) isoSize=isoVector->size();// Get size of the existing isotopeVector
-#ifdef debug
-    G4cout<<"G4QLowEnergy::GetMeanFreePath: isovector Length="<<isoSize<<G4endl;
-#endif
-    if(isoSize)                             // The Element has non-trivial abundance set
-    {
-      indEl=pElement->GetIndex()+1;         // Index of the non-trivial element is an order
-#ifdef debug
-      G4cout<<"G4QLowEn::GetMFP:iE="<<indEl<<",def="<<Isotopes->IsDefined(Z,indEl)<<G4endl;
-#endif
-      if(!Isotopes->IsDefined(Z,indEl))     // This index is not defined for this Z: define
-      {
-        std::vector<std::pair<G4int,G4double>*>* newAbund =
-                                               new std::vector<std::pair<G4int,G4double>*>;
-        G4double* abuVector=pElement->GetRelativeAbundanceVector();
-        for(G4int j=0; j<isoSize; j++)      // Calculation of abundance vector for isotopes
-        {
-          G4int N=pElement->GetIsotope(j)->GetN()-Z; // N means A=N+Z !
-          if(pElement->GetIsotope(j)->GetZ()!=Z)G4cerr<<"G4QDiffract::GetMeanFreePath: Z="
-                                         <<pElement->GetIsotope(j)->GetZ()<<"#"<<Z<<G4endl;
-          G4double abund=abuVector[j];
-          std::pair<G4int,G4double>* pr= new std::pair<G4int,G4double>(N,abund);
-#ifdef debug
-          G4cout<<"G4QLowEnergy::GetMeanFreePath:pair#"<<j<<",N="<<N<<",a="<<abund<<G4endl;
-#endif
-          newAbund->push_back(pr);
-        }
-#ifdef debug
-        G4cout<<"G4QLowEnergy::GetMeanFreePath: pairVectLength="<<newAbund->size()<<G4endl;
-#endif
-        indEl=G4QIsotope::Get()->InitElement(Z,indEl,newAbund); // definition of the newInd
-        for(G4int k=0; k<isoSize; k++) delete (*newAbund)[k];   // Cleaning temporary
-        delete newAbund; // Was "new" in the beginning of the name space
-      }
-    }
-    std::vector<std::pair<G4int,G4double>*>* cs= Isotopes->GetCSVector(Z,indEl);//CSPointer
-    std::vector<G4double>* SPI = new std::vector<G4double>; // Pointer to the SPI vector
-    IsoProbInEl.push_back(SPI);
-    std::vector<G4int>* IsN = new std::vector<G4int>; // Pointer to the N vector
-    ElIsoN.push_back(IsN);
-    G4int nIs=cs->size();                   // A#Of Isotopes in the Element
-#ifdef debug
-    G4cout<<"G4QLowEnergy::GetMFP:***=>,#isot="<<nIs<<", Z="<<Z<<", indEl="<<indEl<<G4endl;
-#endif
-    G4double susi=0.;                       // sum of CS over isotopes
-    if(nIs) for(G4int j=0; j<nIs; j++)      // Calculate CS for eachIsotope of El
-    {
-      std::pair<G4int,G4double>* curIs=(*cs)[j]; // A pointer, which is used twice
-      G4int N=curIs->first;                 // #of Neuterons in the isotope j of El i
-      IsN->push_back(N);                    // Remember Min N for the Element
-#ifdef debug
-      G4cout<<"G4QLowE::GMFP:true,P="<<Momentum<<",Z="<<Z<<",N="<<N<<",PDG="<<pPDG<<G4endl;
-#endif
-      G4bool ccsf=true;                    // Extract inelastic Ion-Ion cross-section
-#ifdef debug
-      G4cout<<"G4QLowEnergy::GMFP: GetCS #1 j="<<j<<G4endl;
-#endif
-      G4double CSI=CSmanager->GetCrossSection(ccsf,Momentum,Z,N,pPDG);//CS(j,i) for isotope
-#ifdef debug
-      G4cout<<"G4QLowEnergy::GetMeanFreePath: jI="<<j<<", Zt="<<Z<<", Nt="<<N<<", Mom="
-            <<Momentum<<", XSec="<<CSI/millibarn<<G4endl;
-#endif
-      curIs->second = CSI;
-      susi+=CSI;                            // Make a sum per isotopes
-      SPI->push_back(susi);                 // Remember summed cross-section
-    } // End of temporary initialization of the cross sections in the G4QIsotope singeltone
-    sigma+=Isotopes->GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i];//SUM(MeanCS*NOfNperV)
-#ifdef debug
-    G4cout<<"G4QLowEnergy::GetMeanFreePath:<XS>="<<Isotopes->GetMeanCrossSection(Z,indEl)
-          <<",AddSigm="<<Isotopes->GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i]<<G4endl;
-#endif
-    ElProbInMat.push_back(sigma);
-  } // End of LOOP over Elements
-  // Check that cross section is not zero and return the mean free path
-#ifdef debug
-  G4cout<<"G4QLowEnergy::GetMeanFreePath: MeanFreePath="<<1./sigma<<G4endl;
-#endif
-  if(sigma > 0.) return 1./sigma;                 // Mean path [distance] 
-  return DBL_MAX;
-}
-
-G4bool G4QLowEnergy::IsApplicable(const G4ParticleDefinition& particle) 
-{
-  if      (particle == *(     G4Proton::Proton()     )) return true;
-  else if (particle == *(    G4Neutron::Neutron()    )) return true;
-  else if (particle == *(   G4Deuteron::Deuteron()   )) return true;
-  else if (particle == *(      G4Alpha::Alpha()      )) return true;
-  else if (particle == *(     G4Triton::Triton()     )) return true;
-  else if (particle == *(        G4He3::He3()        )) return true;
-  else if (particle == *( G4GenericIon::GenericIon() )) return true;
-#ifdef debug
-  G4cout<<"***>>G4QLowEnergy::IsApplicable: projPDG="<<particle.GetPDGEncoding()<<G4endl;
-#endif
-  return false;
-}
-
-G4VParticleChange* G4QLowEnergy::PostStepDoIt(const G4Track& track, const G4Step& step)
-{
-  static const G4double mProt= G4QPDGCode(2212).GetMass()/MeV; // CHIPS proton Mass in MeV
-  static const G4double mNeut= G4QPDGCode(2112).GetMass()/MeV; // CHIPS neutron Mass in MeV
-  static const G4double mLamb= G4QPDGCode(3122).GetMass()/MeV; // CHIPS Lambda Mass in MeV
-  static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0)/MeV;
-  static const G4double mTrit= G4QPDGCode(2112).GetNuclMass(1,2,0)/MeV;
-  static const G4double mHel3= G4QPDGCode(2112).GetNuclMass(2,1,0)/MeV;
-  static const G4double mAlph= G4QPDGCode(2112).GetNuclMass(2,2,0)/MeV;
-  static const G4ThreeVector zeroMom(0.,0.,0.);
-  static G4ParticleDefinition* aGamma    = G4Gamma::Gamma();
-  static G4ParticleDefinition* aProton   = G4Proton::Proton();
-  static G4ParticleDefinition* aNeutron  = G4Neutron::Neutron();
-  static G4ParticleDefinition* aLambda   = G4Lambda::Lambda();
-  static G4ParticleDefinition* aDeuteron = G4Deuteron::Deuteron();
-  static G4ParticleDefinition* aTriton   = G4Triton::Triton();
-  static G4ParticleDefinition* aHe3      = G4He3::He3();
-  static G4ParticleDefinition* anAlpha   = G4Alpha::Alpha();
-  static const G4int nCh=26;                         // #of combinations
-  static G4QNucleus Nuc;                             // A fake nucleus to call Evaporation
-  //
-  //-------------------------------------------------------------------------------------
-  static G4bool CWinit = true;                       // CHIPS Warld needs to be initted
-  if(CWinit)
-  {
-    CWinit=false;
-    G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part.max)
-  }
-  //-------------------------------------------------------------------------------------
-  const G4DynamicParticle* projHadron = track.GetDynamicParticle();
-  const G4ParticleDefinition* particle=projHadron->GetDefinition();
-#ifdef debug
-  G4cout<<"G4QLowEnergy::PostStepDoIt: Before the GetMeanFreePath is called In4M="
-        <<projHadron->Get4Momentum()<<" of PDG="<<particle->GetPDGEncoding()<<", Type="
-        <<particle->GetParticleType()<<",SubType="<<particle->GetParticleSubType()<<G4endl;
-#endif
-  //G4ForceCondition cond=NotForced;
-  //GetMeanFreePath(track, -27., &cond);              // @@ ?? jus to update parameters?
-#ifdef debug
-  G4cout<<"G4QLowEnergy::PostStepDoIt: After GetMeanFreePath is called"<<G4endl;
-#endif
-  G4LorentzVector proj4M=(projHadron->Get4Momentum())/MeV; // Convert to MeV!
-  G4double momentum = projHadron->GetTotalMomentum()/MeV; // 3-momentum of the Proj in MeV
-  G4double Momentum = proj4M.rho();                   // @@ Just for the test purposes
-  if(std::fabs(Momentum-momentum)>.000001)
-    G4cerr<<"-Warning-G4QLowEnergy::PostStepDoIt:P_IU="<<Momentum<<"#"<<momentum<<G4endl;
-#ifdef pdebug
-  G4cout<<"G4QLowEnergy::PostStepDoIt: pP(IU)="<<Momentum<<"="<<momentum<<",proj4M/m="
-        <<proj4M<<proj4M.m()<<G4endl;
-#endif
-  if (!IsApplicable(*particle))  // Check applicability
-  {
-    G4cerr<<"G4QLowEnergy::PostStepDoIt: Only NA is implemented."<<G4endl;
-    return 0;
-  }
-  const G4Material* material = track.GetMaterial();      // Get the current material
-  const G4ElementVector* theElementVector = material->GetElementVector();
-  G4int nE=material->GetNumberOfElements();
-#ifdef debug
-  G4cout<<"G4QLowEnergy::PostStepDoIt: "<<nE<<" elements in the material."<<G4endl;
-#endif
-  G4int projPDG=0;                           // PDG Code prototype for the captured hadron
-  // Not all these particles are implemented yet (see Is Applicable)
-  if      (particle ==      G4Proton::Proton()     ) projPDG= 2212;
-  else if (particle ==     G4Neutron::Neutron()    ) projPDG= 2112;
-  else if (particle ==    G4Deuteron::Deuteron()   ) projPDG= 100001002;
-  else if (particle ==       G4Alpha::Alpha()      ) projPDG= 100002004;
-  else if (particle ==      G4Triton::Triton()     ) projPDG= 100001003;
-  else if (particle ==         G4He3::He3()        ) projPDG= 100002003;
-  else if (particle ==  G4GenericIon::GenericIon() )
-  {
-    projPDG=particle->GetPDGEncoding();
-#ifdef debug
-    G4int B=particle->GetBaryonNumber();
-    G4int C=particle->GetPDGCharge();
-    prPDG=100000000+1000*C+B;
-    G4cout<<"G4QLowEnergy::PostStepDoIt: PDG="<<prPDG<<"="<<projPDG<<G4endl;
-#endif
-  }
-  else G4cout<<"-Warning-G4QLowEnergy::PostStepDoIt:Unknown projectile Ion"<<G4endl;
-#ifdef debug
-  G4int prPDG=particle->GetPDGEncoding();
-  G4cout<<"G4QLowEnergy::PostStepDoIt: projPDG="<<projPDG<<", stPDG="<<prPDG<<G4endl;
-#endif
-  if(!projPDG)
-  {
-    G4cerr<<"-Warning-G4QLowEnergy::PostStepDoIt:UndefProjHadron(PDG=0) ->ret 0"<<G4endl;
-    return 0;
-  }
-  // Element treatment
-  G4int EPIM=ElProbInMat.size();
-#ifdef debug
-  G4cout<<"G4QLowEn::PostStDoIt: m="<<EPIM<<", n="<<nE<<",T="<<ElProbInMat[EPIM-1]<<G4endl;
-#endif
-  G4int i=0;
-  if(EPIM>1)
-  {
-    G4double rnd = ElProbInMat[EPIM-1]*G4UniformRand();
-    for(i=0; i<nE; ++i)
-    {
-#ifdef debug
-      G4cout<<"G4QLowEn::PostStepDoIt: EPM["<<i<<"]="<<ElProbInMat[i]<<", r="<<rnd<<G4endl;
-#endif
-      if (rnd<ElProbInMat[i]) break;
-    }
-    if(i>=nE) i=nE-1;                        // Top limit for the Element
-  }
-  G4Element* pElement=(*theElementVector)[i];
-  G4int tZ=static_cast<G4int>(pElement->GetZ());
-#ifdef debug
-    G4cout<<"G4QLowEnergy::PostStepDoIt: i="<<i<<", Z(element)="<<tZ<<G4endl;
-#endif
-  if(tZ<=0)
-  {
-    G4cerr<<"-Warning-G4QLowEnergy::PostStepDoIt: Element with Z="<<tZ<<G4endl;
-    if(tZ<0) return 0;
-  }
-  std::vector<G4double>* SPI = IsoProbInEl[i];// Vector of summedProbabilities for isotopes
-  std::vector<G4int>* IsN = ElIsoN[i];     // Vector of "#of neutrons" in the isotope El[i]
-  G4int nofIsot=SPI->size();               // #of isotopes in the element i
-#ifdef debug
-  G4cout<<"G4QLowEnergy::PostStepDoIt: nI="<<nofIsot<<", T="<<(*SPI)[nofIsot-1]<<G4endl;
-#endif
-  G4int j=0;
-  if(nofIsot>1)
-  {
-    G4double rndI=(*SPI)[nofIsot-1]*G4UniformRand(); // Randomize the isotop of the Element
-    for(j=0; j<nofIsot; ++j)
-    {
-#ifdef debug
-      G4cout<<"G4QLowEnergy::PostStepDoIt: SP["<<j<<"]="<<(*SPI)[j]<<",r="<<rndI<<G4endl;
-#endif
-      if(rndI < (*SPI)[j]) break;
-    }
-    if(j>=nofIsot) j=nofIsot-1;            // Top limit for the isotope
-  }
-  G4int tN =(*IsN)[j]; ;                    // Randomized number of neutrons
-#ifdef debug
-  G4cout<<"G4QLowEnergy::PostStepDoIt: j="<<i<<", N(isotope)="<<tN<<", MeV="<<MeV<<G4endl;
-#endif
-  if(tN<0)
-  {
-    G4cerr<<"-Warning-G4QLowEnergy::PostStepDoIt: Isotope Z="<<tZ<<" has 0>N="<<tN<<G4endl;
-    return 0;
-  }
-  nOfNeutrons=tN;                           // Remember it for the energy-momentum check
-#ifdef debug
-  G4cout<<"G4QLowEnergy::PostStepDoIt: N="<<tN<<" for element with Z="<<tZ<<G4endl;
-#endif
-  if(tN<0)
-  {
-    G4cerr<<"*Warning*G4QLowEnergy::PostStepDoIt:Element with N="<<tN<< G4endl;
-    return 0;
-  }
-  aParticleChange.Initialize(track);
-#ifdef debug
-  G4cout<<"G4QLowEnergy::PostStepDoIt: track is initialized"<<G4endl;
-#endif
-  G4double weight        = track.GetWeight();
-  G4double localtime     = track.GetGlobalTime();
-  G4ThreeVector position = track.GetPosition();
-#ifdef debug
-  G4cout<<"G4QLowEnergy::PostStepDoIt: before Touchable extraction"<<G4endl;
-#endif
-  G4TouchableHandle trTouchable = track.GetTouchableHandle();
-#ifdef debug
-  G4cout<<"G4QLowEnergy::PostStepDoIt: Touchable is extracted"<<G4endl;
-#endif
-  G4QPDGCode targQPDG(90000000+tZ*1000+tN);  // @@ use G4Ion and get rid of CHIPS World
-  G4double tM=targQPDG.GetMass();            // CHIPS target nucleus mass in MeV
-  G4int pL=particle->GetQuarkContent(3)-particle->GetAntiQuarkContent(3); // Strangeness
-  G4int pZ=static_cast<G4int>(particle->GetPDGCharge());  // Charge of the projectile
-  G4int pN=particle->GetBaryonNumber()-pZ-pL;// #of neutrons in projectile
-  G4double pM=targQPDG.GetNuclMass(pZ,pN,0); // CHIPS projectile nucleus mass in MeV
-  G4double cosp=-14*Momentum*(tM-pM)/tM/pM;  // Asymmetry power for angular distribution
-#ifdef debug
-  G4cout<<"G4QLowEnergy::PoStDoIt: Proj("<<pZ<<","<<pN<<","<<pL<<")p="<<pM<<",Targ=("<<tZ
-        <<","<<tN<<"), cosp="<<cosp<<G4endl;
-#endif
-  G4double kinEnergy= projHadron->GetKineticEnergy()*MeV; // Kin energy in MeV (Is *MeV n?)
-  G4ParticleMomentum dir = projHadron->GetMomentumDirection();// It is a unit three-vector
-  G4LorentzVector tot4M=proj4M+G4LorentzVector(0.,0.,0.,tM); // Total 4-mom of the reaction
-#ifdef debug
-  G4cout<<"G4QLowEnergy::PostStepDoIt: tM="<<tM<<",p4M="<<proj4M<<",t4M="<<tot4M<<G4endl;
-#endif
-  EnMomConservation=tot4M;                 // Total 4-mom of reaction for E/M conservation
-  // @@ Probably this is not necessary any more
-#ifdef debug
-  G4cout<<"G4QLE::PSDI:false,P="<<Momentum<<",Z="<<pZ<<",N="<<pN<<",PDG="<<projPDG<<G4endl;
-#endif
-  G4double xSec=CalculateXS(Momentum, tZ, tN, projPDG); // Recalculate CrossSection
-#ifdef debug
-  G4cout<<"G4QLowEn::PSDI:PDG="<<projPDG<<",P="<<Momentum<<",XS="<<xSec/millibarn<<G4endl;
-#endif
-#ifdef nandebug
-  if(xSec>0. || xSec<0. || xSec==0);
-  else  G4cout<<"-Warning-G4QLowEnergy::PostSDI: *NAN* xSec="<<xSec/millibarn<<G4endl;
-#endif
-  // @@ check a possibility to separate p, n, or alpha (!)
-  if(xSec <= 0.) // The cross-section iz 0 -> Do Nothing
-  {
-#ifdef pdebug
-    G4cerr<<"-Warning-G4QLowEnergy::PSDoIt:*Zero cross-section* PDG="<<projPDG
-          <<",Z="<<tZ<<",tN="<<tN<<",P="<<Momentum<<G4endl;
-#endif
-    //Do Nothing Action insead of the reaction
-    aParticleChange.ProposeEnergy(kinEnergy);
-    aParticleChange.ProposeLocalEnergyDeposit(0.);
-    aParticleChange.ProposeMomentumDirection(dir) ;
-    return G4VDiscreteProcess::PostStepDoIt(track,step);
-  }
-  // Kill interacting hadron
-  aParticleChange.ProposeEnergy(0.);
-  aParticleChange.ProposeTrackStatus(fStopAndKill);
-#ifdef debug
-  G4cout<<"G4QLowEn::PSDI: Projectile track is killed"<<G4endl;
-#endif
-  // algorithm implementation --- STARTS HERE --- All calculations are in IU --------
-  G4double totM=tot4M.m(); // total CMS mass of the reaction
-  G4int totN=tN+pN;
-  G4int totZ=tZ+pZ;
-  // @@ Here mass[i] can be calculated if mass=0
-  G4double mass[nCh]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
-                      0.,0.,0.,0.,0.,0.};
-  mass[0] = targQPDG.GetNuclMass(totZ,totN,0); // gamma+gamma
-#ifdef debug
-  G4cout<<"G4QLowEn::PSDI: Nuclear Mass="<<mass[0]<<G4endl;
-#endif
-  if (totN>0 && totZ>0)
-  {
-    mass[1] = targQPDG.GetNuclMass(totZ,totN-1,0); // gamma+neutron
-    mass[2] = targQPDG.GetNuclMass(totZ-1,totN,0); // gamma+proton
-  }
-  if ( (totZ > 0 && totN > 1) || (totN > 0 && totZ > 1) ) 
-     mass[3] = targQPDG.GetNuclMass(totZ-1,totN-1,0); //g+d
-  if ( (totZ > 0 && totN > 2) || (totN > 1 && totZ > 1) ) 
-     mass[4] = targQPDG.GetNuclMass(totZ-1,totN-2,0); //g+t
-  if ( (totZ > 2 && totN > 0) || (totN > 1 && totZ > 1) ) 
-     mass[5] = targQPDG.GetNuclMass(totZ-2,totN-1,0); //g+3
-  if ( (totZ > 2 && totN > 1) || (totN > 2 && totZ > 1) ) 
-     mass[6] = targQPDG.GetNuclMass(totZ-2,totN-2,0); //g+a
-  if ( (totZ > 0 && totN > 1) || totN > 2 ) 
-     mass[7] = targQPDG.GetNuclMass(totZ,totN-2,0); // n+n
-  mass[ 8] = mass[3]; // neutron+proton (the same as a deuteron)
-  if ( (totZ > 1 && totN > 0) || totZ > 2 ) 
-     mass[9] = targQPDG.GetNuclMass(totZ-2,totN,0); // p+p
-  mass[10] = mass[5]; // proton+deuteron (the same as He3)
-  mass[11] = mass[4]; // neutron+deuteron (the same as t)
-  mass[12] = mass[6]; // deuteron+deuteron (the same as alpha)
-  mass[13] = mass[6]; // proton+tritium (the same as alpha)
-  if ( totN > 3 || (totN > 2 && totZ > 0) ) 
-     mass[14] = targQPDG.GetNuclMass(totZ-1,totN-3,0); // n+t
-  if ( totZ > 3 || (totZ > 2 && totN > 0) ) 
-     mass[15] = targQPDG.GetNuclMass(totZ-3,totN-1,0); // He3+p
-  mass[16] = mass[6]; // neutron+He3 (the same as alpha)
-  if ( (totZ > 3 && totN > 1) || (totZ > 2 && totN > 2) ) 
-    mass[17] = targQPDG.GetNuclMass(totZ-3,totN-2,0); // pa
-  if ( (totZ > 1 && totN > 3) || (totZ > 2 && totN > 2) ) 
-    mass[18] = targQPDG.GetNuclMass(totZ-2,totN-3,0); // na
-  if(pL>0)
-  {
-    G4int pL1=pL-1;
-    if(totN>0||totZ>0) mass[19] = targQPDG.GetNuclMass(totZ  ,totN  ,pL1);// Lambda+gamma
-    if( (totN > 0 && totZ > 0) ||        totZ > 1 ) 
-      mass[20]=targQPDG.GetNuclMass(totZ-1,totN  ,pL1);//Lp
-    if( (totN > 0 && totZ > 0) || totN > 0        ) 
-      mass[21]=targQPDG.GetNuclMass(totZ  ,totN-1,pL1);//Ln
-    if( (totN > 1 && totZ > 0) || (totN > 0 && totZ > 1) ) 
-      mass[22]=targQPDG.GetNuclMass(totZ-1,totN-1,pL1);//Ld
-    if( (totN > 2 && totZ > 0) || (totN > 1 && totZ > 1) ) 
-      mass[23]=targQPDG.GetNuclMass(totZ-1,totN-2,pL1);//Lt
-    if( (totN > 0 && totZ > 2) || (totN > 1 && totZ > 1) ) 
-      mass[24]=targQPDG.GetNuclMass(totZ-2,totN-1,pL1);//L3
-    if( (totN > 1 && totZ > 2) || (totN > 2 && totZ > 1) ) 
-      mass[25]=targQPDG.GetNuclMass(totZ-2,totN-2,pL1);//La
-  }
-#ifdef debug
-  G4cout<<"G4QLowEn::PSDI: Residual masses are calculated"<<G4endl;
-#endif
-  G4double tA=tZ+tN; 
-  G4double pA=pZ+pN; 
-  G4double prZ=pZ/pA+tZ/tA;
-  G4double prN=pN/pA+tN/tA;
-  G4double prD=prN*prZ;
-  G4double prA=prD*prD;
-  G4double prH=prD*prZ;
-  G4double prT=prD*prN;
-  G4double fhe3=6.*std::sqrt(tA);
-  G4double prL=0.;
-  if(pL>0) prL=pL/pA;
-  G4double qval[nCh]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
-                      0.,0.,0.,0.,0.,0.};
-  qval[ 0] =  totM - mass[ 0];
-  qval[ 1] = (totM - mass[ 1] - mNeut)*prN;
-  qval[ 2] = (totM - mass[ 2] - mProt)*prZ;
-  qval[ 3] = (totM - mass[ 3] - mDeut)*prD/3.;
-  qval[ 4] = (totM - mass[ 4] - mTrit)*prT/6.;
-  qval[ 5] = (totM - mass[ 5] - mHel3)*prH/fhe3;
-  qval[ 6] = (totM - mass[ 6] - mAlph)*prA/9.;
-  qval[ 7] = (totM - mass[ 7] - mNeut - mNeut)*prN*prN;
-  qval[ 8] = (totM - mass[ 8] - mNeut - mProt)*prD;
-  qval[ 9] = (totM - mass[ 9] - mProt - mProt)*prZ*prZ;
-  qval[10] = (totM - mass[10] - mProt - mDeut)*prH/3.;
-  qval[11] = (totM - mass[11] - mNeut - mDeut)*prT/3.;
-  qval[12] = (totM - mass[12] - mDeut - mDeut)*prA/3./3.;
-  qval[13] = (totM - mass[13] - mProt - mTrit)*prA/6.;
-  qval[14] = (totM - mass[14] - mNeut - mTrit)*prT*prN/6.;
-  qval[15] = (totM - mass[15] - mProt - mHel3)*prH*prZ/fhe3;
-  qval[16] = (totM - mass[16] - mNeut - mHel3)*prA/fhe3;
-  qval[17] = (totM - mass[17] - mProt - mAlph)*prZ*prA/9.;
-  qval[18] = (totM - mass[18] - mNeut - mAlph)*prN*prA/9.;
-  if(pZ>0)
-  {
-    qval[19] = (totM - mass[19] - mLamb)*prL;
-    qval[20] = (totM - mass[20] - mProt - mLamb)*prL*prZ;
-    qval[21] = (totM - mass[21] - mNeut - mLamb)*prL*prN;
-    qval[22] = (totM - mass[22] - mDeut - mLamb)*prL*prD/2.;
-    qval[23] = (totM - mass[23] - mTrit - mLamb)*prL*prT/3.;
-    qval[24] = (totM - mass[24] - mHel3 - mLamb)*prL*prH/fhe3;
-    qval[25] = (totM - mass[25] - mAlph - mLamb)*prL*prA/4;
-  }
-#ifdef debug
-  G4cout<<"G4QLowEn::PSDI: Q-values are calculated, tgA="<<tA<<"prA="<<pA<<G4endl;
-#endif
-
-  if( !pZ && pN==1)
-  {
-    if(G4UniformRand()>(tA-1.)*(tA-1.)/52900.) qval[0] = 0.0;
-    if(G4UniformRand()>kinEnergy/7.925*tA) qval[2]=qval[3]=qval[4]=qval[5]=qval[9]=0.;
-  }
-  else qval[0] = 0.0;
-  
-  G4double qv = 0.0;                        // Total sum of probabilities (q-values)
-  for(G4int i=0; i<nCh; ++i )
-  {
-    if( mass[i] < 500.*MeV ) qval[i] = 0.0; // Close A/Z impossible channels
-    if( qval[i] < 0.0 )      qval[i] = 0.0; // Close the splitting impossible channels
-    qv += qval[i];
-  }
-  // Select the channel
-  G4double qv1 = 0.0;
-  G4double ran = G4UniformRand();
-  G4int index  = 0;
-  for( index=0; index<nCh; ++index )
-  {
-    if( qval[index] > 0.0 )
-    {
-      qv1 += qval[index]/qv;
-      if( ran <= qv1 ) break;
-    }
-  }
-#ifdef debug
-  G4cout<<"G4QLowEn::PSDI: index="<<index<<" < "<<nCh<<G4endl;
-#endif
-  if(index == nCh)
-  {
-    G4cout<<"***G4QLowEnergy::PoStDI:Decay is impossible,totM="<<totM<<",GSM="<<tM<<G4endl;
-    throw G4QException("G4QLowEnergy::PostStepDoIt: Can't decay the Compound");
-  }
-  // @@ Convert it to G4QHadrons    
-  G4DynamicParticle* ResSec = new G4DynamicParticle;
-  G4DynamicParticle* FstSec = new G4DynamicParticle;
-  G4DynamicParticle* SecSec = new G4DynamicParticle;
-#ifdef debug
-  G4cout<<"G4QLowEn::PSDI: Dynamic particles are created pL="<<pL<<G4endl;
-#endif
-
-  G4LorentzVector res4Mom(zeroMom,mass[index]*MeV); // The recoil nucleus prototype
-  G4double mF=0.;
-  G4double mS=0.;
-  G4int    rA=totZ+totN;
-  G4int    rZ=totZ;
-  G4int    rL=pL;
-  G4int complete=3;
-  G4ParticleDefinition* theDefinition;  // Prototype for qfNucleon
-  switch( index )
-  {
-   case 0:
-     if(!evaporate || rA<2)
-     {
-       theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-       if(!theDefinition)
-         G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-       ResSec->SetDefinition( theDefinition );
-       FstSec->SetDefinition( aGamma );
-       SecSec->SetDefinition( aGamma );
-     }
-     else
-     {
-       delete ResSec;
-       delete FstSec;
-       delete SecSec;
-       complete=0;
-     }
-     break;
-   case 1:
-     rA-=1;
-     if(!evaporate || rA<2)
-     {
-       theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-       if(!theDefinition)
-         G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-       ResSec->SetDefinition( theDefinition );
-       SecSec->SetDefinition( aGamma );
-     }
-     else
-     {
-       delete ResSec;
-       delete SecSec;
-       complete=1;
-     }
-     FstSec->SetDefinition( aNeutron );
-     mF=mNeut; // First hadron 4-momentum
-     break;
-   case 2:
-     rA-=1;
-     rZ-=1;
-     if(!evaporate || rA<2)
-     {
-       theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-       if(!theDefinition)
-         G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-       ResSec->SetDefinition( theDefinition );
-       SecSec->SetDefinition( aGamma );
-     }
-     else
-     {
-       delete ResSec;
-       delete SecSec;
-       complete=1;
-     }
-     FstSec->SetDefinition( aProton );
-     mF=mProt; // First hadron 4-momentum
-     break;
-   case 3:
-     rA-=2;
-     rZ-=1;
-     if(!evaporate || rA<2)
-     {
-       theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-       if(!theDefinition)
-         G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-       ResSec->SetDefinition( theDefinition );
-       SecSec->SetDefinition( aGamma );
-     }
-     else
-     {
-       delete ResSec;
-       delete SecSec;
-       complete=1;
-     }
-     FstSec->SetDefinition( aDeuteron );
-     mF=mDeut; // First hadron 4-momentum
-     break;
-   case 4:
-     rA-=3;
-     rZ-=1;
-     if(!evaporate || rA<2)
-     {
-       theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-       if(!theDefinition)
-         G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-       ResSec->SetDefinition( theDefinition );
-       SecSec->SetDefinition( aGamma );
-     }
-     else
-     {
-       delete ResSec;
-       delete SecSec;
-       complete=1;
-     }
-     FstSec->SetDefinition( aTriton );
-     mF=mTrit; // First hadron 4-momentum
-     break;
-   case 5:
-     rA-=3;
-     rZ-=2;
-     if(!evaporate || rA<2)
-     {
-       theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-       if(!theDefinition)
-         G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-       ResSec->SetDefinition( theDefinition );
-       SecSec->SetDefinition( aGamma );
-     }
-     else
-     {
-       delete ResSec;
-       delete SecSec;
-       complete=1;
-     }
-     FstSec->SetDefinition( aHe3);
-     mF=mHel3; // First hadron 4-momentum
-     break;
-   case 6:
-     rA-=4;
-     rZ-=2;
-     if(!evaporate || rA<2)
-     {
-       theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-       if(!theDefinition)
-         G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-       ResSec->SetDefinition( theDefinition );
-       SecSec->SetDefinition( aGamma );
-     }
-     else
-     {
-       delete ResSec;
-       delete SecSec;
-       complete=1;
-     }
-     FstSec->SetDefinition( anAlpha );
-     mF=mAlph; // First hadron 4-momentum
-     break;
-   case 7:
-     rA-=2;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aNeutron );
-     SecSec->SetDefinition( aNeutron );
-     mF=mNeut; // First hadron 4-momentum
-     mS=mNeut; // Second hadron 4-momentum
-     break;
-   case 8:
-     rZ-=1;
-     rA-=2;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aNeutron );
-     SecSec->SetDefinition( aProton );
-     mF=mNeut; // First hadron 4-momentum
-     mS=mProt; // Second hadron 4-momentum
-     break;
-   case 9:
-     rZ-=2;
-     rA-=2;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aProton );
-     SecSec->SetDefinition( aProton );
-     mF=mProt; // First hadron 4-momentum
-     mS=mProt; // Second hadron 4-momentum
-     break;
-   case 10:
-     rZ-=2;
-     rA-=3;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aProton );
-     SecSec->SetDefinition( aDeuteron );
-     mF=mProt; // First hadron 4-momentum
-     mS=mDeut; // Second hadron 4-momentum
-     break;
-   case 11:
-     rZ-=1;
-     rA-=3;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aNeutron );
-     SecSec->SetDefinition( aDeuteron );
-     mF=mNeut; // First hadron 4-momentum
-     mS=mDeut; // Second hadron 4-momentum
-     break;
-   case 12:
-     rZ-=2;
-     rA-=4;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aDeuteron );
-     SecSec->SetDefinition( aDeuteron );
-     mF=mDeut; // First hadron 4-momentum
-     mS=mDeut; // Second hadron 4-momentum
-     break;
-   case 13:
-     rZ-=2;
-     rA-=4;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aProton );
-     SecSec->SetDefinition( aTriton );
-     mF=mProt; // First hadron 4-momentum
-     mS=mTrit; // Second hadron 4-momentum
-     break;
-   case 14:
-     rZ-=1;
-     rA-=4;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aNeutron );
-     SecSec->SetDefinition( aTriton );
-     mF=mNeut; // First hadron 4-momentum
-     mS=mTrit; // Second hadron 4-momentum
-     break;
-   case 15:
-     rZ-=3;
-     rA-=4;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aProton);
-     SecSec->SetDefinition( aHe3 );
-     mF=mProt; // First hadron 4-momentum
-     mS=mHel3; // Second hadron 4-momentum
-     break;
-   case 16:
-     rZ-=2;
-     rA-=4;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aNeutron );
-     SecSec->SetDefinition( aHe3 );
-     mF=mNeut; // First hadron 4-momentum
-     mS=mHel3; // Second hadron 4-momentum
-     break;
-   case 17:
-     rZ-=3;
-     rA-=5;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aProton );
-     SecSec->SetDefinition( anAlpha );
-     mF=mProt; // First hadron 4-momentum
-     mS=mAlph; // Second hadron 4-momentum
-     break;
-   case 18:
-     rZ-=2;
-     rA-=5;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aNeutron );
-     SecSec->SetDefinition( anAlpha );
-     mF=mNeut; // First hadron 4-momentum
-     mS=mAlph; // Second hadron 4-momentum
-     break;
-   case 19:
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aLambda );
-     SecSec->SetDefinition( aGamma );
-     mF=mLamb; // First hadron 4-momentum
-     break;
-   case 20:
-     rZ-=1;
-     rA-=1;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aProton );
-     SecSec->SetDefinition( aLambda );
-     mF=mProt; // First hadron 4-momentum
-     mS=mLamb; // Second hadron 4-momentum
-     break;
-   case 21:
-     rA-=1;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aNeutron );
-     SecSec->SetDefinition( aLambda );
-     mF=mNeut; // First hadron 4-momentum
-     mS=mLamb; // Second hadron 4-momentum
-     break;
-   case 22:
-     rZ-=1;
-     rA-=2;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aDeuteron );
-     SecSec->SetDefinition( aLambda );
-     mF=mDeut; // First hadron 4-momentum
-     mS=mLamb; // Second hadron 4-momentum
-     break;
-   case 23:
-     rZ-=1;
-     rA-=3;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aTriton );
-     SecSec->SetDefinition( aLambda );
-     mF=mTrit; // First hadron 4-momentum
-     mS=mLamb; // Second hadron 4-momentum
-     break;
-   case 24:
-     rZ-=2;
-     rA-=3;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( aHe3 );
-     SecSec->SetDefinition( aLambda );
-     mF=mHel3; // First hadron 4-momentum
-     mS=mLamb; // Second hadron 4-momentum
-     break;
-   case 25:
-     rZ-=2;
-     rA-=4;
-     theDefinition=G4ParticleTable::GetParticleTable()->FindIon(rZ,rA,rL,rZ);
-     if(!theDefinition)
-       G4cerr<<"-Warning-G4LE::PSDI: notDefined, Z="<<rZ<<", A="<<rA<<", L="<<rL<<G4endl;
-     ResSec->SetDefinition( theDefinition );
-     FstSec->SetDefinition( anAlpha );
-     SecSec->SetDefinition( aLambda );
-     mF=mAlph; // First hadron 4-momentum
-     mS=mLamb; // Second hadron 4-momentum
-     break;
-  }
-#ifdef debug
-  G4cout<<"G4QLowEn::PSDI:F="<<mF<<",S="<<mS<<",com="<<complete<<",ev="<<evaporate<<G4endl;
-#endif
-  G4LorentzVector fst4Mom(zeroMom,mF); // Prototype of the first hadron 4-momentum
-  G4LorentzVector snd4Mom(zeroMom,mS); // Prototype of the second hadron 4-momentum
-  G4LorentzVector dir4Mom=tot4M;       // Prototype of the resN decay direction 4-momentum
-  dir4Mom.setE(tot4M.e()/2.);          // Get half energy and total 3-momentum
-  // @@ Can be repeated to take into account the Coulomb Barrier
-  if(!G4QHadron(tot4M).CopDecayIn3(fst4Mom,snd4Mom,res4Mom,dir4Mom,cosp))
-  {                   //                                          
-    G4cerr<<"**G4LowEnergy::PoStDoIt:i="<<index<<",tM="<<totM<<"->M1="<<res4Mom.m()<<"+M2="
-     <<fst4Mom.m()<<"+M3="<<snd4Mom.m()<<"=="<<res4Mom.m()+fst4Mom.m()+snd4Mom.m()<<G4endl;
-    throw G4QException("G4QLowEnergy::PostStepDoIt: Can't decay the Compound");
-  }                   //                                          
-#ifdef debug
-  G4cout<<"G4QLowEn::PSDI:r4M="<<res4Mom<<",f4M="<<fst4Mom<<",s4M="<<snd4Mom<<G4endl;
-#endif
-  G4Track* aNewTrack = 0;
-  if(complete)
-  {
-    FstSec->Set4Momentum(fst4Mom);
-    aNewTrack = new G4Track(FstSec, localtime, position );
-    aNewTrack->SetWeight(weight);                                   //    weighted
-    aNewTrack->SetTouchableHandle(trTouchable);
-    aParticleChange.AddSecondary( aNewTrack );
-    EnMomConservation-=fst4Mom;
-#ifdef debug
-    G4cout<<"G4QLowEn::PSDI: ***Filled*** 1stH4M="<<fst4Mom<<G4endl;
-#endif
-    if(complete>2)                     // Final solution
-    {
-      ResSec->Set4Momentum(res4Mom);
-      aNewTrack = new G4Track(ResSec, localtime, position );
-      aNewTrack->SetWeight(weight);                                   //    weighted
-      aNewTrack->SetTouchableHandle(trTouchable);
-      aParticleChange.AddSecondary( aNewTrack );
-      EnMomConservation-=res4Mom;
-#ifdef debug
-      G4cout<<"G4QLowEn::PSDI: ***Filled*** rA4M="<<res4Mom<<",rZ="<<rZ<<",rA="<<rA<<",rL="
-            <<rL<<G4endl;
-#endif
-      SecSec->Set4Momentum(snd4Mom);
-      aNewTrack = new G4Track(SecSec, localtime, position );
-      aNewTrack->SetWeight(weight);                                   //    weighted
-      aNewTrack->SetTouchableHandle(trTouchable);
-      aParticleChange.AddSecondary( aNewTrack );
-      EnMomConservation-=snd4Mom;
-#ifdef debug
-      G4cout<<"G4QLowEn::PSDI: ***Filled*** 2ndH4M="<<snd4Mom<<G4endl;
-#endif
-    }
-    else res4Mom+=snd4Mom;
-  }
-  else res4Mom=tot4M;
-  if(complete<3)                        // Evaporation of the residual must be done
-  {
-    G4QHadron* rHadron = new G4QHadron(90000000+999*rZ+rA,res4Mom); // Input hadron-nucleus
-    G4QHadronVector* evaHV = new G4QHadronVector; // Output vector of hadrons (delete!)
-    Nuc.EvaporateNucleus(rHadron, evaHV);
-    G4int nOut=evaHV->size();
-    for(G4int i=0; i<nOut; i++)
-    {
-      G4QHadron* curH = (*evaHV)[i];
-      G4int hPDG=curH->GetPDGCode();
-      G4LorentzVector h4Mom=curH->Get4Momentum();
-      EnMomConservation-=h4Mom;
-#ifdef debug
-      G4cout<<"G4QLowEn::PSDI: ***FillingCand#"<<i<<"*** evaH="<<hPDG<<h4Mom<<G4endl;
-#endif
-      if     (hPDG==90000001 || hPDG==2112) theDefinition = aNeutron;
-      else if(hPDG==90001000 || hPDG==2212) theDefinition = aProton;
-      else if(hPDG==91000000 || hPDG==3122) theDefinition = aLambda;
-      else if(hPDG==     22 )               theDefinition = aGamma;
-      else
-      {
-        G4int hZ=curH->GetCharge();
-        G4int hA=curH->GetBaryonNumber();
-        G4int hS=curH->GetStrangeness();
-        theDefinition = G4ParticleTable::GetParticleTable()->FindIon(hZ,hA,hS,0); // ion
-      }
-      if(theDefinition)
-      {
-        G4DynamicParticle* theEQH = new G4DynamicParticle(theDefinition,h4Mom);
-        G4Track* evaQH = new G4Track(theEQH, localtime, position );
-        evaQH->SetWeight(weight);                                   //    weighted
-        evaQH->SetTouchableHandle(trTouchable);
-        aParticleChange.AddSecondary( evaQH );
-      }
-      else G4cerr<<"-Warning-G4QLowEnergy::PostStepDoIt: Bad secondary PDG="<<hPDG<<G4endl;
-    }
-  }
-  // algorithm implementation --- STOPS HERE
-#ifdef debug
-  G4cout<<"G4QLowEnergy::PostStepDoIt:*** PostStepDoIt is done ***"<<G4endl;
-#endif
-  return G4VDiscreteProcess::PostStepDoIt(track, step);
-}
-
-G4double G4QLowEnergy::CalculateXS(G4double p, G4int Z, G4int N, G4int PDG) 
-{
-  static G4bool first=true;
-  static G4VQCrossSection* CSmanager;
-  if(first)                              // Connection with a singletone
-  {
-    CSmanager=G4QIonIonCrossSection::GetPointer();
-    if(PDG == 2212) CSmanager=G4QProtonNuclearCrossSection::GetPointer();
-    first=false;
-  }
-#ifdef debug
-  G4cout<<"G4QLowE::CXS: *DONE* p="<<p<<",Z="<<Z<<",N="<<N<<",PDG="<<PDG<<G4endl;
-#endif
-  return CSmanager->GetCrossSection(true, p, Z, N, PDG);
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QMuonNuclearCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QMuonNuclearCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,2803 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QMuonNuclearCrossSection.cc,v 1.15 2009/05/08 15:16:26 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QMuonNuclearCrossSection for gamma+A cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 17-Oct-03
-// 
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-//=========================================================================================
-// Short description: reaction cross-sections for muon-nuclear reactions, which
-// are integrals over virtual equivalent photons photons. The muon-nuclear GHAD
-// model (not CHIPS) gives 2-3 times smaller scattering angle and deposited energy.
-// --------------------------------------------------------------------------------
-
-//#define debug
-//#define pdebug
-#define edebug
-//#define ppdebug
-//#define tdebug
-//#define sdebug
-
-#include "G4QMuonNuclearCrossSection.hh"
-
-// Initialization of the
-G4bool    G4QMuonNuclearCrossSection::onlyCS=true;// Flag to calculate only CS
-G4double  G4QMuonNuclearCrossSection::lastSig=0.;// Last calculated cross section
-G4int     G4QMuonNuclearCrossSection::lastL=0;   // Last used in cross section TheLastBin
-G4double  G4QMuonNuclearCrossSection::lastE=0.;  // Last used in cross section TheEnergy
-G4int     G4QMuonNuclearCrossSection::lastF=0;   // Last used in cross section TheFirstBin
-G4double  G4QMuonNuclearCrossSection::lastG=0.;  // Last used in cross section TheGamma
-G4double  G4QMuonNuclearCrossSection::lastH=0.;  // LastValue of theHighEnergy A-dependence
-G4double* G4QMuonNuclearCrossSection::lastJ1=0;  // Pointer to the LastArray of J1 function
-G4double* G4QMuonNuclearCrossSection::lastJ2=0;  // Pointer to the LastArray of J2 function
-G4double* G4QMuonNuclearCrossSection::lastJ3=0;  // Pointer to the LastArray of J3 function
-G4int     G4QMuonNuclearCrossSection::lastPDG=0; // The last PDG code of the projectile
-G4int     G4QMuonNuclearCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QMuonNuclearCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QMuonNuclearCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QMuonNuclearCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QMuonNuclearCrossSection::lastCS=0.; // Last value of the Cross Section
-G4int     G4QMuonNuclearCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QMuonNuclearCrossSection::GetPointer()
-{
-  static G4QMuonNuclearCrossSection theCrossSection; //**Static body of the Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QMuonNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom,
-                                                     G4int tgZ, G4int tgN, G4int pPDG)
-{
-  static const G4double mmu=105.65839; // Mass of the muon in MeV
-  static const G4double mmu2=mmu*mmu;  // Squared Mass of muon in MeV^2
-  static G4int j;                      // A#0f records found in DB for this projectile
-  static std::vector <G4int>    colPDG;// Vector of the projectile PDG code
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-  G4double pEn=std::sqrt(pMom*pMom+mmu2)-mmu; // ==> mu-/mu+ kinEnergy
-#ifdef pdebug
-  G4cout<<"G4QMNCS::GetCS:>>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG="<<pPDG<<"("<<lastPDG<<"), T="<<pEn<<"("<<lastTH<<")"<<",Sz="
-        <<colN.size()<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  if(std::abs(pPDG)!=13)
-  {
-#ifdef pdebug
-    G4cout<<"G4QMNCS::GetCS: *** Found pPDG="<<pPDG<<" ====> CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // projectile PDG=0 is a mistake (?!) @@
-  }
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tgN!=lastN || tgZ!=lastZ || pPDG!=lastPDG)// The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastPDG = pPDG;                    // The last PDG of the projectile
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-    if(lastI) for(G4int i=0; i<lastI; i++) if(colPDG[i]==pPDG) // The partType is found
-    {                                  // The nucleus with projPDG is found in AMDB
-      if(colN[i]==tgN && colZ[i]==tgZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QMNCS::GetCS:*Found* P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(pEn<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QMNCS::GetCS:Found T="<<pEn<<" < Threshold="<<lastTH<<",CS=0"<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastCS =colCS[i];                // Last CrossSect (A-dependent)
- //        if(std::fabs(lastP/pMom-1.)<tolerance)
-        if(lastP==pMom)                  // VI do not use tolerance
-        {
-#ifdef pdebug
-          G4cout<<"G4QMNCS::GetCS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-#endif
-          CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // Update param's only
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QMNCS::G:UpdatDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // read & update
-#ifdef pdebug
-        G4cout<<"G4QMNCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(lastCS<=0. && pEn>lastTH)    // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QMNCS::GetCS: New T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-        break;                           // Go out of the LOOP
-      }
-#ifdef pdebug
-      G4cout<<"---G4QMNCrossSec::GetCrosSec:pPDG="<<pPDG<<",j="<<j<<",N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<",cPDG="<<colPDG[i]<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      j++;                             // Increment a#0f records found in DB for this pPDG
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QMNCS::GetCrosSec:CalcNew P="<<pMom<<",f="<<fCS<<",lastI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,j,lastPDG,lastZ,lastN,pMom); //calculate & create
-      if(lastCS<=0.)
-      {
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QMNCrossSection::GetCrossSect: NewThresh="<<lastTH<<",T="<<pEn<<G4endl;
-#endif
-        if(pEn>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QMNCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QMNCS::GetCrosSec: New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      colN.push_back(tgN);
-      colZ.push_back(tgZ);
-      colPDG.push_back(pPDG);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colCS.push_back(lastCS);
-#ifdef pdebug
-      G4cout<<"G4QMNCS::GetCS:1st,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QMNCS::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colPDG[lastI]=pPDG;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-  else if(pEn<=lastTH)
-  {
-#ifdef pdebug
-    G4cout<<"G4QMNCS::GetCS: Current T="<<pEn<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  //  else if(std::fabs(lastP/pMom-1.)<tolerance)
-  else if(lastP==pMom)                 // VI do not use tolerance
-  {
-#ifdef pdebug
-    G4cout<<"G4QMNCS::GetCS:OldCur P="<<pMom<<"="<<pMom<<", CS="<<lastCS*millibarn<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return lastCS*millibarn;     // Use theLastCS
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"G4QMNCS::GetCS:UpdatCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastCS=CalculateCrossSection(fCS,1,j,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-    lastP=pMom;
-  }
-#ifdef pdebug
-  G4cout<<"G4QMNCS::GetCroSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  return lastCS*millibarn;
-}
-
-// Gives the threshold energy for different nuclei (min of p- and n-threshold)
-// *******************************************************************************
-// *** This function is the same for all lepto- & photo-nuclear reactions, for ***
-// *** (nu,l) reactions the mass value of the final state lepton must be added ***
-// ***@@ IT IS REASONABLE TO MAKE ADDITIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR @@***
-// *******************************************************************************
-G4double G4QMuonNuclearCrossSection::ThresholdEnergy(G4int Z, G4int N, G4int)
-{
-  // CHIPS - Direct GEANT
-  //static const G4double mNeut = G4QPDGCode(2112).GetMass();
-  //static const G4double mProt = G4QPDGCode(2212).GetMass();
-  static const G4double mNeut = G4NucleiProperties::GetNuclearMass(1,0)/MeV;
-  static const G4double mProt = G4NucleiProperties::GetNuclearMass(1,1)/MeV;
-  static const G4double mAlph = G4NucleiProperties::GetNuclearMass(4,2)/MeV;
-  // ---------
-  static const G4double infEn = 9.e27;
-
-  G4int A=Z+N;
-  if(A<1) return infEn;
-  else if(A==1) return 160.; // Pi0 threshold in MeV for the proton:T>m+(m^2+2lm)/2M,l=m_mu
-  // CHIPS - Direct GEANT
-  //G4double mT= G4QPDGCode(111).GetNuclMass(Z,N,0);
-  G4double mT= 0.;
-  if(G4NucleiProperties::IsInStableTable(A,Z))
-                            mT = G4NucleiProperties::GetNuclearMass(A,Z)/MeV;
-  else return 0.;       // If it is not in the Table of Stable Nuclei, then the Threshold=0
-  // --------- Splitting thresholds
-  G4double mP= infEn;
-  if(Z&&G4NucleiProperties::IsInStableTable(A-1,Z-1))
-          mP = G4NucleiProperties::GetNuclearMass(A-1,Z-1)/MeV;// ResNucMass for a proton
-
-  G4double mN= infEn;
-  if(N&&G4NucleiProperties::IsInStableTable(A-1,Z))
-          mN = G4NucleiProperties::GetNuclearMass(A-1,Z)/MeV;  // ResNucMass for a neutron
-
-  G4double mA= infEn;
-  if(N>1&&Z>1&&G4NucleiProperties::IsInStableTable(A-4,Z-2))
-          mA=G4NucleiProperties::GetNuclearMass(A-4,Z-2)/MeV;  // ResNucMass for an alpha
-
-  G4double dP= mP +mProt - mT;
-  G4double dN= mN +mNeut - mT;
-  G4double dA= mA +mAlph - mT;
-#ifdef pdebug
-  G4cout<<"G4QMuonNucCS::ThreshEn: mP="<<mP<<",dP="<<dP<<",mN="<<mN<<",dN="<<dN<<",mA="
-        <<mA<<",dA="<<dA<<",mT="<<mT<<",A="<<A<<",Z="<<Z<<G4endl;
-#endif
-  if(dP<dN)dN=dP;
-  if(dA<dN)dN=dA;
-  return dN;
-}
-
-// The main member function giving the gamma-A cross section (E_kin in MeV, CS in mb)
-G4double G4QMuonNuclearCrossSection::CalculateCrossSection(G4bool CS, G4int F, G4int I,
-                                        G4int, G4int targZ, G4int targN, G4double Momentum)
-{
-  static const G4int nE=336;    // !! If change this, change it in GetFunctions() (*.hh) !!
-  static const G4int mL=nE-1;
-  static const G4double EMi=2.0612;          // Minimum tabulated KineticEnergy of Muon
-  static const G4double EMa=50000.;          // Maximum tabulated Energy of the Muon 
-  static const G4double lEMi=std::log(EMi);  // Minimum tabulatedLogarithmKinEnergy of Muon
-  static const G4double lEMa=std::log(EMa);  // Maximum tabulatedLogarithmKinEnergy of Muon
-  static const G4double dlnE=(lEMa-lEMi)/mL; // Logarithmic table step for MuonKinEnergy
-  static const G4double alop=1./137.036/3.14159265; //coeffitient for  E>50000 calculations
-  static const G4double mmu=105.65839;       // Mass of the muon in MeV
-  static const G4double mmu2=mmu*mmu;        // Squared Mass of muon in MeV^2
-  static const G4double lmmu=std::log(mmu);       // Log of the muon mass
-  // *** Begin of the Associative memory for acceleration of the cross section calculations
-  static std::vector <G4int> colF;     // Vector of LastStartPosition in Ji-function tables
-  static std::vector <G4double> colH;  // Vector of HighEnergyCoefficients (functional)
-  static std::vector <G4double*> J1;   // Vector of pointers to the J1 tabulated functions
-  static std::vector <G4double*> J2;   // Vector of pointers to the J2 tabulated functions
-  static std::vector <G4double*> J3;   // Vector of pointers to the J3 tabulated functions
-#ifdef pdebug
-  G4cout<<"G4QMuonNucCrossSection::CalculateCrossSection: ***Called*** "<<J3.size();
-  if(J3.size()) G4cout<<", p="<<J3[0];
-  G4cout<<G4endl;
-  //if(F==-27) return 0.;
-#endif
-  // *** End of Static Definitions (Associative Memory) ***
-  //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Muon
-  onlyCS=CS;                           // Flag to calculate only CS (not Si/Bi)
-  G4double TotEnergy2=Momentum*Momentum+mmu2;
-  G4double TotEnergy=std::sqrt(TotEnergy2); // Total energy of the muon
-  lastE=TotEnergy-mmu;               // Kinetic energy of the muon
-#ifdef pdebug
-  G4cout<<"G4QMuonNucCS::CalcCS: P="<<Momentum<<", F="<<F<<", I="<<I<<", Z="<<targZ
-        <<", N="<<targN<<", onlyCS="<<CS<<",E="<<lastE<<",th="<<EMi<<G4endl;
-#endif
-  G4double A=targN+targZ;            // New A (can be different from targetAtomicNumber)
-  if(F<=0)                           // >>>This isotope was not the last used isotop<<<
-  {
-    if(F<0)                          // This isotope was found in DAMDB =========> RETRIEVE
-    {                                // ...........................................========
-      if (lastE<=EMi)                // Energy is below the minimum energy in the table
-      {
-        lastE=0.;
-        lastG=0.;
-        lastSig=0.;
-#ifdef pdebug
-        G4cout<<"--> G4QMuonNucCS::CalcCS: Old CS=0  as lastE="<<lastE<<" < "<<EMi<<G4endl;
-#endif
-        return 0.;
-      }
-      lastJ1 =J1[I];                 // Pointer to the prepared J1 function
-      lastJ2 =J2[I];                 // Pointer to the prepared J2 function
-      lastJ3 =J3[I];                 // Pointer to the prepared J3 function
-      lastF  =colF[I];               // Last ZeroPosition in the J-functions
-      lastH  =colH[I];               // Last High Energy Coefficient (A-dependent)
-    }
-    else                             // This isotope wasn't calculated previously => CREATE
-    {                                // ............................................=======
-      lastJ1 = new G4double[nE];     // Allocate memory for the new J1 function
-      lastJ2 = new G4double[nE];     // Allocate memory for the new J2 function
-      lastJ3 = new G4double[nE];     // Allocate memory for the new J3 function
-      lastF   = GetFunctions(A,lastJ1,lastJ2,lastJ3);//newZeroPos and J-functions filling
-      lastH   = alop*A*(1.-.072*std::log(A)); // like lastSP of G4PhotonuclearCrossSection
-#ifdef pdebug
-      G4cout<<"==>G4QMuNCS::CalcCS:lJ1="<<lastJ1<<",lJ2="<<lastJ2<<",lJ3="<<lastJ3<<G4endl;
-#endif
-      // *** The synchronization check ***
-      G4int sync=J1.size();
-      if(sync!=I) G4cerr<<"***G4QMuonNuclearCS::CalcCrS: PDG=13, S="<<sync<<"#"<<I<<G4endl;
-      J1.push_back(lastJ1);
-      J2.push_back(lastJ2);
-      J3.push_back(lastJ3);
-      colF.push_back(lastF);
-      colH.push_back(lastH);
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW Calculate the Cross Section =====================
-  if (lastE<=lastTH || lastE<=EMi)   // Check that muKiE is higher than ThreshE
-  {
-    lastE=0.;
-    lastG=0.;
-    lastSig=0.;
-#ifdef pdebug
-    G4cout<<"--> G4QMuonNucCS::CalcCS:CS=0 as T="<<lastE<<"<"<<EMi<<" || "<<lastTH<<G4endl;
-#endif
-    return 0.;
-  }
-  G4double lE=std::log(lastE);       // log(muE) (it is necessary for the fit)
-  lastG=lE-lmmu;                     // Gamma of the muon (used to recover log(muE))
-  G4double dlg1=lastG+lastG-1.;
-  G4double lgoe=lastG/lastE;
-  if(lE<lEMa) // Log fit is made explicitly to fix the last bin for the randomization
-  {
-    G4double shift=(lE-lEMi)/dlnE;
-    G4int    blast=static_cast<int>(shift);
-#ifdef pdebug
-    G4cout<<"-->G4QMuonNuclearCS::CalcCrossSect:LOGfit b="<<blast<<",max="<<mL<<",lJ1="
-          <<lastJ1<<",lJ2="<<lastJ2<<",lJ3="<<lastJ3<<G4endl;
-#endif
-    if(blast<0)   blast=0;
-    if(blast>=mL) blast=mL-1;
-    shift-=blast;
-    lastL=blast+1;
-    G4double YNi=dlg1*lastJ1[blast]-lgoe*(lastJ2[blast]+lastJ2[blast]-lastJ3[blast]/lastE);
-    G4double YNj=dlg1*lastJ1[lastL]-lgoe*(lastJ2[lastL]+lastJ2[lastL]-lastJ3[lastL]/lastE);
-    lastSig = YNi+shift*(YNj-YNi);
-    if(lastSig>YNj)lastSig=YNj;
-#ifdef pdebug
-    G4cout<<"G4QMuNucCS::CalcCS:S="<<lastSig<<",E="<<lE<<",Yi="<<YNi<<",Yj="<<YNj<<",M="
-          <<lEMa<<G4endl;
-    G4cout<<"G4QMuNucCS::CalcCS:s="<<shift<<",Jb="<<lastJ1[blast]<<",J="<<lastJ1[lastL]
-          <<",b="<<blast<<G4endl;
-#endif
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"->G4QMuonNucCS::CCS:LOGex="<<lastJ1<<",lJ2="<<lastJ2<<",lJ3="<<lastJ3<<G4endl;
-#endif
-    lastL=mL;
-    G4double term1=lastJ1[mL]+lastH*HighEnergyJ1(lE);
-    G4double term2=lastJ2[mL]+lastH*HighEnergyJ2(lE);
-    G4double term3=lastJ3[mL]+lastH*HighEnergyJ3(lE);
-    lastSig=dlg1*term1-lgoe*(term2+term2-term3/lastE);
-#ifdef pdebug
-    G4cout<<"G4QMuNucCS::CalculateCrossSection:S="<<lastSig<<",lE="<<lE<<",J1="
-          <<lastH*HighEnergyJ1(lE)<<",Pm="<<lastJ1[mL]<<",Fm="<<lastJ2[mL]<<",Fh="
-          <<lastH*HighEnergyJ2(lE)<<",EM="<<lEMa<<G4endl;
-#endif
-  }
-  if(lastSig<0.) lastSig = 0.;
-  return lastSig;
-}
-
-// Calculate the functions for the log(A)
-// ****************************************************************************************
-// *** This tables are the same for all lepto-nuclear reactions, only mass is different ***
-// ***@@ IT'S REASONABLE TO MAKE ADDiTIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR WITH THIS@@ ***
-// ****************************************************************************************
-G4int G4QMuonNuclearCrossSection::GetFunctions(G4double a,G4double*x,G4double*y,G4double*z)
-{
-  static const G4int nN=14;
-  static const G4int nE=336; // !! If change this, change it in GetCrossSection() (*.cc) !!
-  static G4int L[nN]={138, 2, 32, 75, 26, 41, 0, 67, 58, 46, 41, 38, 39, 36};
-  // !! @@ Change it from ln(A) to A approximation !!
-  static G4double A[nN]={1.,2.,3.,4.,6.,7.,9.,12.,16.,27.,63.546,118.71,207.2,238.472};
-  static const G4double P00[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,9.508853e-10,
-5.658793e-09,1.254527e-08,2.393031e-08,4.505061e-08,8.774895e-08,1.786164e-07,3.761182e-07,
-8.030425e-07,1.694925e-06,3.434914e-06,6.495386e-06,1.124554e-05,1.778700e-05,2.601897e-05,
-3.581584e-05,4.713652e-05,6.004450e-05,7.469108e-05,9.129458e-05,1.101221e-04,1.314694e-04,
-1.556326e-04,1.828616e-04,2.132878e-04,2.468359e-04,2.831345e-04,3.214679e-04,3.608144e-04,
-3.999890e-04,4.378523e-04,4.735003e-04,5.063667e-04,5.362207e-04,5.630982e-04,5.872062e-04,
-6.088412e-04,6.283321e-04,6.460063e-04,6.621724e-04,6.771140e-04,6.910895e-04,7.043362e-04,
-7.170748e-04,7.295161e-04,7.418666e-04,7.543331e-04,7.671270e-04,7.804653e-04,7.945670e-04,
-8.096392e-04,8.258506e-04,8.432877e-04,8.619005e-04,8.814550e-04,9.015289e-04,9.215770e-04,
-9.410623e-04,9.595795e-04,9.769243e-04,9.930963e-04,1.008264e-03,1.022722e-03,1.036854e-03,
-1.051075e-03,1.065714e-03,1.080833e-03,1.096129e-03,1.111117e-03,1.125415e-03,1.138885e-03,
-1.151571e-03,1.163605e-03,1.175135e-03,1.186298e-03,1.197206e-03,1.207945e-03,1.218575e-03,
-1.229133e-03,1.239639e-03,1.250100e-03,1.260515e-03,1.270882e-03,1.281197e-03,1.291459e-03,
-1.301668e-03,1.311824e-03,1.321929e-03,1.331985e-03,1.341993e-03,1.351954e-03,1.361871e-03,
-1.371743e-03,1.381573e-03,1.391360e-03,1.401105e-03,1.410808e-03,1.420471e-03,1.430093e-03,
-1.439674e-03,1.449216e-03,1.458718e-03,1.468180e-03,1.477604e-03,1.486990e-03,1.496338e-03,
-1.505649e-03,1.514923e-03,1.524160e-03,1.533363e-03,1.542530e-03,1.551662e-03,1.560761e-03,
-1.569826e-03,1.578859e-03,1.587860e-03,1.596829e-03,1.605768e-03,1.614676e-03,1.623555e-03,
-1.632405e-03,1.641227e-03,1.650021e-03,1.658788e-03,1.667529e-03,1.676244e-03,1.684933e-03,
-1.693598e-03,1.702238e-03,1.710855e-03,1.719449e-03,1.728020e-03,1.736570e-03,1.745097e-03,
-1.753604e-03,1.762091e-03,1.770557e-03,1.779004e-03,1.787432e-03,1.795842e-03,1.804234e-03,
-1.812608e-03,1.820965e-03,1.829305e-03,1.837630e-03,1.845938e-03,1.854231e-03,1.862510e-03,
-1.870774e-03,1.879024e-03,1.887260e-03,1.895483e-03,1.903693e-03,1.911891e-03,1.920077e-03,
-1.928252e-03,1.936415e-03,1.944567e-03,1.952709e-03,1.960841e-03,1.968963e-03,1.977075e-03,
-1.985179e-03,1.993274e-03,2.001361e-03,2.009440e-03,2.017511e-03,2.025576e-03,2.033633e-03,
-2.041684e-03,2.049728e-03,2.057767e-03,2.065800e-03,2.073828e-03,2.081851e-03,2.089870e-03,
-2.097884e-03,2.105894e-03,2.113901e-03,2.121904e-03,2.129905e-03,2.137903e-03,2.145898e-03,
-2.153892e-03,2.161884e-03,2.169874e-03,2.177863e-03,2.185852e-03,2.193839e-03,2.201827e-03,
-2.209815e-03,2.217803e-03,2.225791e-03,2.233781e-03,2.241771e-03,2.249764e-03,2.257757e-03
-  };
-  static const G4double P10[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.283819e-07,
-7.765990e-07,1.754155e-06,3.420430e-06,6.607329e-06,1.324941e-05,2.782040e-05,6.046430e-05,
-1.331907e-04,2.897632e-04,6.045196e-04,1.174950e-03,2.087179e-03,3.381598e-03,5.060191e-03,
-7.118943e-03,9.570755e-03,1.245202e-02,1.582161e-02,1.975854e-02,2.435970e-02,2.973661e-02,
-3.600931e-02,4.329446e-02,5.168438e-02,6.121832e-02,7.184951e-02,8.342000e-02,9.565929e-02,
-1.082176e-01,1.207266e-01,1.328639e-01,1.443966e-01,1.551929e-01,1.652103e-01,1.744709e-01,
-1.830362e-01,1.909891e-01,1.984219e-01,2.054289e-01,2.121037e-01,2.185384e-01,2.248245e-01,
-2.310550e-01,2.373266e-01,2.437434e-01,2.504191e-01,2.574803e-01,2.650677e-01,2.733352e-01,
-2.824425e-01,2.925383e-01,3.037299e-01,3.160413e-01,3.293712e-01,3.434732e-01,3.579873e-01,
-3.725249e-01,3.867626e-01,4.005068e-01,4.137140e-01,4.264807e-01,4.390234e-01,4.516594e-01,
-4.647653e-01,4.786698e-01,4.934691e-01,5.089000e-01,5.244803e-01,5.397990e-01,5.546715e-01,
-5.691075e-01,5.832202e-01,5.971567e-01,6.110630e-01,6.250681e-01,6.392783e-01,6.537749e-01,
-6.686149e-01,6.838333e-01,6.994497e-01,7.154739e-01,7.319115e-01,7.487683e-01,7.660517e-01,
-7.837715e-01,8.019397e-01,8.205697e-01,8.396760e-01,8.592735e-01,8.793773e-01,9.000027e-01,
-9.211652e-01,9.428799e-01,9.651625e-01,9.880287e-01,1.011494e+00,1.035576e+00,1.060290e+00,
-1.085653e+00,1.111684e+00,1.138400e+00,1.165821e+00,1.193964e+00,1.222851e+00,1.252503e+00,
-1.282939e+00,1.314184e+00,1.346258e+00,1.379187e+00,1.412994e+00,1.447705e+00,1.483345e+00,
-1.519941e+00,1.557522e+00,1.596116e+00,1.635752e+00,1.676460e+00,1.718273e+00,1.761223e+00,
-1.805343e+00,1.850668e+00,1.897234e+00,1.945076e+00,1.994234e+00,2.044746e+00,2.096652e+00,
-2.149995e+00,2.204816e+00,2.261160e+00,2.319074e+00,2.378603e+00,2.439796e+00,2.502703e+00,
-2.567376e+00,2.633867e+00,2.702233e+00,2.772528e+00,2.844812e+00,2.919145e+00,2.995588e+00,
-3.074206e+00,3.155064e+00,3.238230e+00,3.323776e+00,3.411772e+00,3.502294e+00,3.595419e+00,
-3.691226e+00,3.789797e+00,3.891216e+00,3.995572e+00,4.102954e+00,4.213454e+00,4.327169e+00,
-4.444197e+00,4.564641e+00,4.688605e+00,4.816199e+00,4.947534e+00,5.082726e+00,5.221895e+00,
-5.365163e+00,5.512657e+00,5.664510e+00,5.820856e+00,5.981835e+00,6.147591e+00,6.318273e+00,
-6.494036e+00,6.675037e+00,6.861440e+00,7.053415e+00,7.251136e+00,7.454784e+00,7.664543e+00,
-7.880607e+00,8.103173e+00,8.332447e+00,8.568639e+00,8.811968e+00,9.062659e+00,9.320945e+00,
-9.587066e+00,9.861271e+00,1.014381e+01,1.043496e+01,1.073499e+01,1.104417e+01,1.136281e+01,
-1.169119e+01,1.202964e+01,1.237847e+01,1.273802e+01,1.310862e+01,1.349063e+01,1.388442e+01
-  };
-  static const G4double P20[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.733331e-05,
-1.065910e-04,2.453685e-04,4.892572e-04,9.701734e-04,2.003481e-03,4.340178e-03,9.736092e-03,
-2.212593e-02,4.961468e-02,1.065569e-01,2.128855e-01,3.880845e-01,6.442424e-01,9.865527e-01,
-1.419220e+00,1.950269e+00,2.593461e+00,3.368727e+00,4.302302e+00,5.426842e+00,6.781267e+00,
-8.409767e+00,1.035907e+01,1.267273e+01,1.538236e+01,1.849628e+01,2.198896e+01,2.579646e+01,
-2.982262e+01,3.395557e+01,3.808836e+01,4.213540e+01,4.604002e+01,4.977393e+01,5.333143e+01,
-5.672268e+01,5.996799e+01,6.309401e+01,6.613132e+01,6.911336e+01,7.207629e+01,7.505958e+01,
-7.810711e+01,8.126885e+01,8.460302e+01,8.817811e+01,9.207556e+01,9.639190e+01,1.012394e+02,
-1.067429e+02,1.130306e+02,1.202141e+02,1.283582e+02,1.374455e+02,1.473530e+02,1.578615e+02,
-1.687086e+02,1.796566e+02,1.905484e+02,2.013353e+02,2.120818e+02,2.229636e+02,2.342629e+02,
-2.463419e+02,2.595499e+02,2.740378e+02,2.896053e+02,3.058034e+02,3.222162e+02,3.386384e+02,
-3.550669e+02,3.716193e+02,3.884660e+02,4.057911e+02,4.237738e+02,4.425787e+02,4.623501e+02,
-4.832092e+02,5.052552e+02,5.285702e+02,5.532261e+02,5.792925e+02,6.068416e+02,6.359524e+02,
-6.667118e+02,6.992147e+02,7.335640e+02,7.698696e+02,8.082482e+02,8.488235e+02,8.917255e+02,
-9.370917e+02,9.850666e+02,1.035803e+03,1.089461e+03,1.146211e+03,1.206233e+03,1.269717e+03,
-1.336863e+03,1.407884e+03,1.483006e+03,1.562468e+03,1.646521e+03,1.735436e+03,1.829495e+03,
-1.929001e+03,2.034272e+03,2.145649e+03,2.263490e+03,2.388177e+03,2.520114e+03,2.659730e+03,
-2.807480e+03,2.963847e+03,3.129341e+03,3.304506e+03,3.489917e+03,3.686187e+03,3.893961e+03,
-4.113928e+03,4.346817e+03,4.593401e+03,4.854501e+03,5.130987e+03,5.423784e+03,5.733871e+03,
-6.062289e+03,6.410140e+03,6.778595e+03,7.168898e+03,7.582366e+03,8.020398e+03,8.484480e+03,
-8.976188e+03,9.497193e+03,1.004927e+04,1.063431e+04,1.125430e+04,1.191137e+04,1.260778e+04,
-1.334591e+04,1.412831e+04,1.495767e+04,1.583685e+04,1.676890e+04,1.775703e+04,1.880469e+04,
-1.991550e+04,2.109332e+04,2.234227e+04,2.366670e+04,2.507122e+04,2.656077e+04,2.814056e+04,
-2.981612e+04,3.159335e+04,3.347850e+04,3.547822e+04,3.759955e+04,3.985000e+04,4.223753e+04,
-4.477059e+04,4.745818e+04,5.030985e+04,5.333573e+04,5.654661e+04,5.995394e+04,6.356990e+04,
-6.740741e+04,7.148022e+04,7.580293e+04,8.039107e+04,8.526113e+04,9.043063e+04,9.591822e+04,
-1.017437e+05,1.079281e+05,1.144938e+05,1.214646e+05,1.288658e+05,1.367242e+05,1.450685e+05,
-1.539289e+05,1.633378e+05,1.733295e+05,1.839405e+05,1.952096e+05,2.071781e+05,2.198898e+05,
-2.333914e+05,2.477325e+05,2.629658e+05,2.791474e+05,2.963371e+05,3.145981e+05,3.339980e+05
-  };
-  static const G4double P01[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,2.954211e-05,9.596085e-05,1.664204e-04,2.410445e-04,
-3.199604e-04,4.032996e-04,4.911973e-04,5.837930e-04,6.812306e-04,7.836580e-04,8.913164e-04,
-1.004812e-03,1.124386e-03,1.250223e-03,1.382516e-03,1.521462e-03,1.667264e-03,1.820132e-03,
-1.980284e-03,2.147940e-03,2.320852e-03,2.496690e-03,2.675545e-03,2.857507e-03,3.042673e-03,
-3.231140e-03,3.423010e-03,3.617256e-03,3.809214e-03,3.998293e-03,4.184404e-03,4.367457e-03,
-4.547357e-03,4.723746e-03,4.895195e-03,5.061371e-03,5.222113e-03,5.377254e-03,5.526693e-03,
-5.670813e-03,5.809570e-03,5.942803e-03,6.070341e-03,6.192646e-03,6.310189e-03,6.422827e-03,
-6.530413e-03,6.633483e-03,6.732384e-03,6.826989e-03,6.917342e-03,7.004039e-03,7.087050e-03,
-7.166336e-03,7.242378e-03,7.315204e-03,7.384814e-03,7.451592e-03,7.515520e-03,7.576720e-03,
-7.635427e-03,7.691607e-03,7.745512e-03,7.797147e-03,7.846671e-03,7.894156e-03,7.939695e-03,
-7.983384e-03,8.025299e-03,8.065520e-03,8.104132e-03,8.141187e-03,8.176782e-03,8.210952e-03,
-8.243782e-03,8.275321e-03,8.305622e-03,8.334750e-03,8.362747e-03,8.389662e-03,8.415545e-03,
-8.440441e-03,8.464389e-03,8.487429e-03,8.509600e-03,8.530939e-03,8.551482e-03,8.571260e-03,
-8.590305e-03,8.608648e-03,8.626317e-03,8.643340e-03,8.659743e-03,8.675552e-03,8.690789e-03,
-8.705479e-03,8.719642e-03,8.733300e-03,8.746472e-03,8.759179e-03,8.771437e-03,8.783264e-03,
-8.794677e-03,8.805692e-03,8.816325e-03,8.826589e-03,8.836500e-03,8.846069e-03,8.855311e-03,
-8.864237e-03,8.872859e-03,8.881188e-03,8.889236e-03,8.897012e-03,8.904527e-03,8.911790e-03,
-8.918810e-03,8.925597e-03,8.932158e-03,8.938501e-03,8.944635e-03,8.950567e-03,8.956303e-03,
-8.961852e-03,8.967219e-03,8.972411e-03,8.977434e-03,8.982294e-03,8.986998e-03,8.991551e-03,
-8.995958e-03,9.000224e-03,9.004354e-03,9.008353e-03,9.012227e-03,9.015984e-03,9.019633e-03,
-9.023195e-03,9.026706e-03,9.030244e-03,9.033965e-03,9.038176e-03,9.043389e-03,9.050276e-03,
-9.059416e-03,9.071006e-03,9.084867e-03,9.100704e-03,9.118316e-03,9.137649e-03,9.158778e-03,
-9.181864e-03,9.207136e-03,9.234874e-03,9.265398e-03,9.299061e-03,9.336228e-03,9.377254e-03,
-9.422441e-03,9.471977e-03,9.525862e-03,9.583820e-03,9.645241e-03,9.709165e-03,9.774343e-03,
-9.839376e-03,9.902903e-03,9.963776e-03,1.002117e-02,1.007462e-02,1.012399e-02,1.016939e-02,
-1.021107e-02,1.024941e-02,1.028482e-02,1.031771e-02,1.034850e-02,1.037759e-02,1.040535e-02,
-1.043213e-02,1.045828e-02,1.048413e-02,1.051000e-02,1.053619e-02,1.056302e-02,1.059074e-02,
-1.061960e-02,1.064973e-02,1.068119e-02,1.071387e-02,1.074750e-02,1.078164e-02,1.081576e-02,
-1.084929e-02,1.088177e-02,1.091287e-02,1.094245e-02,1.097052e-02,1.099725e-02,1.102293e-02,
-1.104790e-02,1.107250e-02,1.109694e-02,1.112120e-02,1.114507e-02,1.116831e-02,1.119086e-02,
-1.121276e-02,1.123411e-02,1.125504e-02,1.127562e-02,1.129594e-02,1.131605e-02,1.133598e-02,
-1.135576e-02,1.137542e-02,1.139497e-02,1.141444e-02,1.143383e-02,1.145315e-02,1.147240e-02,
-1.149159e-02,1.151073e-02,1.152981e-02,1.154882e-02,1.156778e-02,1.158668e-02,1.160552e-02,
-1.162429e-02,1.164299e-02,1.166162e-02,1.168018e-02,1.169867e-02,1.171708e-02,1.173542e-02,
-1.175368e-02,1.177187e-02,1.178998e-02,1.180802e-02,1.182597e-02,1.184385e-02,1.186166e-02,
-1.187939e-02,1.189704e-02,1.191463e-02,1.193214e-02,1.194957e-02,1.196694e-02,1.198424e-02,
-1.200146e-02,1.201862e-02,1.203572e-02,1.205275e-02,1.206972e-02,1.208662e-02,1.210346e-02,
-1.212025e-02,1.213697e-02,1.215364e-02,1.217025e-02,1.218681e-02,1.220331e-02,1.221976e-02,
-1.223616e-02,1.225251e-02,1.226881e-02,1.228506e-02,1.230127e-02,1.231743e-02,1.233355e-02,
-1.234962e-02,1.236566e-02,1.238165e-02,1.239760e-02,1.241351e-02,1.242939e-02,1.244523e-02,
-1.246103e-02,1.247679e-02,1.249253e-02,1.250823e-02,1.252390e-02,1.253953e-02,1.255514e-02,
-1.257072e-02,1.258627e-02,1.260179e-02,1.261728e-02,1.263275e-02,1.264819e-02,1.266361e-02,
-1.267901e-02,1.269438e-02,1.270973e-02,1.272506e-02,1.274037e-02,1.275566e-02,1.277093e-02,
-1.278618e-02,1.280141e-02,1.281663e-02,1.283183e-02,1.284702e-02,1.286219e-02,1.287735e-02,
-1.289249e-02,1.290763e-02,1.292275e-02,1.293786e-02,1.295296e-02,1.296804e-02,1.298312e-02,
-1.299819e-02,1.301326e-02,1.302831e-02,1.304336e-02,1.305840e-02,1.307344e-02,1.308847e-02,
-1.310350e-02,1.311853e-02,1.313355e-02,1.314857e-02,1.316358e-02,1.317860e-02,1.319362e-02,
-1.320863e-02,1.322365e-02,1.323866e-02,1.325368e-02,1.326870e-02,1.328372e-02,1.329875e-02
-  };
-  static const G4double P11[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,5.142599e-05,1.703905e-04,3.015318e-04,4.458151e-04,
-6.042723e-04,7.780058e-04,9.681932e-04,1.176093e-03,1.403047e-03,1.650491e-03,1.920179e-03,
-2.214927e-03,2.536789e-03,2.887800e-03,3.270133e-03,3.686105e-03,4.138189e-03,4.629026e-03,
-5.161429e-03,5.738401e-03,6.354262e-03,7.002399e-03,7.684563e-03,8.402602e-03,9.158473e-03,
-9.954245e-03,1.079211e-02,1.166922e-02,1.256544e-02,1.347811e-02,1.440680e-02,1.535097e-02,
-1.631002e-02,1.728180e-02,1.825789e-02,1.923543e-02,2.021240e-02,2.118654e-02,2.215588e-02,
-2.312152e-02,2.408180e-02,2.503409e-02,2.597551e-02,2.690781e-02,2.783303e-02,2.874848e-02,
-2.965126e-02,3.054421e-02,3.142876e-02,3.230222e-02,3.316333e-02,3.401622e-02,3.485909e-02,
-3.568998e-02,3.651243e-02,3.732532e-02,3.812714e-02,3.892091e-02,3.970501e-02,4.047958e-02,
-4.124621e-02,4.200316e-02,4.275250e-02,4.349304e-02,4.422580e-02,4.495060e-02,4.566768e-02,
-4.637734e-02,4.707965e-02,4.777482e-02,4.846319e-02,4.914460e-02,4.981971e-02,5.048815e-02,
-5.115054e-02,5.180682e-02,5.245710e-02,5.310179e-02,5.374084e-02,5.437439e-02,5.500269e-02,
-5.562592e-02,5.624410e-02,5.685739e-02,5.746597e-02,5.806996e-02,5.866950e-02,5.926469e-02,
-5.985567e-02,6.044255e-02,6.102544e-02,6.160445e-02,6.217970e-02,6.275130e-02,6.331935e-02,
-6.388395e-02,6.444520e-02,6.500318e-02,6.555801e-02,6.610977e-02,6.665854e-02,6.720441e-02,
-6.774747e-02,6.828779e-02,6.882546e-02,6.936055e-02,6.989314e-02,7.042330e-02,7.095109e-02,
-7.147659e-02,7.199987e-02,7.252099e-02,7.304001e-02,7.355699e-02,7.407199e-02,7.458508e-02,
-7.509630e-02,7.560571e-02,7.611336e-02,7.661930e-02,7.712359e-02,7.762628e-02,7.812740e-02,
-7.862701e-02,7.912515e-02,7.962186e-02,8.011718e-02,8.061117e-02,8.110391e-02,8.159563e-02,
-8.208616e-02,8.257558e-02,8.306395e-02,8.355139e-02,8.403811e-02,8.452456e-02,8.501170e-02,
-8.550172e-02,8.599961e-02,8.651664e-02,8.707738e-02,8.773149e-02,8.856633e-02,8.970318e-02,
-9.125803e-02,9.328999e-02,9.579442e-02,9.874335e-02,1.021230e-01,1.059470e-01,1.102541e-01,
-1.151048e-01,1.205775e-01,1.267685e-01,1.337904e-01,1.417717e-01,1.508542e-01,1.611870e-01,
-1.729166e-01,1.861694e-01,2.010268e-01,2.174967e-01,2.354851e-01,2.547793e-01,2.750538e-01,
-2.959020e-01,3.168904e-01,3.376171e-01,3.577581e-01,3.770900e-01,3.954917e-01,4.129288e-01,
-4.294320e-01,4.450769e-01,4.599676e-01,4.742255e-01,4.879821e-01,5.013750e-01,5.145470e-01,
-5.276464e-01,5.408286e-01,5.542584e-01,5.681099e-01,5.825682e-01,5.978263e-01,6.140796e-01,
-6.315125e-01,6.502781e-01,6.704690e-01,6.920855e-01,7.150085e-01,7.389925e-01,7.636899e-01,
-7.887092e-01,8.136834e-01,8.383295e-01,8.624834e-01,8.861115e-01,9.093041e-01,9.322622e-01,
-9.552702e-01,9.786340e-01,1.002560e+00,1.027034e+00,1.051840e+00,1.076745e+00,1.101644e+00,
-1.126566e+00,1.151612e+00,1.176902e+00,1.202547e+00,1.228636e+00,1.255240e+00,1.282420e+00,
-1.310225e+00,1.338704e+00,1.367897e+00,1.397846e+00,1.428588e+00,1.460157e+00,1.492584e+00,
-1.525899e+00,1.560130e+00,1.595301e+00,1.631438e+00,1.668565e+00,1.706703e+00,1.745877e+00,
-1.786109e+00,1.827424e+00,1.869844e+00,1.913396e+00,1.958105e+00,2.003998e+00,2.051103e+00,
-2.099449e+00,2.149066e+00,2.199987e+00,2.252243e+00,2.305870e+00,2.360904e+00,2.417381e+00,
-2.475340e+00,2.534822e+00,2.595869e+00,2.658523e+00,2.722829e+00,2.788834e+00,2.856587e+00,
-2.926136e+00,2.997533e+00,3.070832e+00,3.146088e+00,3.223356e+00,3.302697e+00,3.384170e+00,
-3.467838e+00,3.553766e+00,3.642020e+00,3.732669e+00,3.825784e+00,3.921439e+00,4.019708e+00,
-4.120669e+00,4.224403e+00,4.330993e+00,4.440524e+00,4.553084e+00,4.668764e+00,4.787659e+00,
-4.909864e+00,5.035479e+00,5.164607e+00,5.297355e+00,5.433831e+00,5.574149e+00,5.718425e+00,
-5.866778e+00,6.019333e+00,6.176218e+00,6.337563e+00,6.503506e+00,6.674186e+00,6.849749e+00,
-7.030342e+00,7.216120e+00,7.407242e+00,7.603871e+00,7.806178e+00,8.014335e+00,8.228524e+00,
-8.448929e+00,8.675743e+00,8.909163e+00,9.149393e+00,9.396644e+00,9.651133e+00,9.913084e+00,
-1.018273e+01,1.046031e+01,1.074606e+01,1.104026e+01,1.134314e+01,1.165500e+01,1.197610e+01,
-1.230674e+01,1.264721e+01,1.299783e+01,1.335890e+01,1.373077e+01,1.411376e+01,1.450823e+01,
-1.491454e+01,1.533306e+01,1.576417e+01,1.620828e+01,1.666579e+01,1.713713e+01,1.762273e+01,
-1.812306e+01,1.863856e+01,1.916973e+01,1.971706e+01,2.028107e+01,2.086229e+01,2.146127e+01,
-2.207856e+01,2.271477e+01,2.337048e+01,2.404633e+01,2.474296e+01,2.546103e+01,2.620123e+01
-  };
-  static const G4double P21[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,8.952320e-05,3.026305e-04,5.467439e-04,8.257448e-04,
-1.143952e-03,1.506169e-03,1.917732e-03,2.384568e-03,2.913257e-03,3.511097e-03,4.186748e-03,
-4.952288e-03,5.818752e-03,6.797967e-03,7.903042e-03,9.148496e-03,1.055041e-02,1.212656e-02,
-1.389665e-02,1.588243e-02,1.807616e-02,2.046542e-02,2.306750e-02,2.590121e-02,2.898706e-02,
-3.234740e-02,3.600656e-02,3.996753e-02,4.415218e-02,4.855802e-02,5.319252e-02,5.806289e-02,
-6.317608e-02,6.853047e-02,7.408791e-02,7.983893e-02,8.577731e-02,9.189460e-02,9.818275e-02,
-1.046534e-01,1.112996e-01,1.181068e-01,1.250565e-01,1.321638e-01,1.394471e-01,1.468879e-01,
-1.544640e-01,1.622007e-01,1.701127e-01,1.781777e-01,1.863853e-01,1.947763e-01,2.033353e-01,
-2.120436e-01,2.209398e-01,2.300138e-01,2.392506e-01,2.486866e-01,2.583048e-01,2.681087e-01,
-2.781207e-01,2.883204e-01,2.987380e-01,3.093594e-01,3.202022e-01,3.312664e-01,3.425587e-01,
-3.540870e-01,3.658557e-01,3.778718e-01,3.901450e-01,4.026762e-01,4.154819e-01,4.285591e-01,
-4.419246e-01,4.555823e-01,4.695390e-01,4.838088e-01,4.983965e-01,5.133109e-01,5.285640e-01,
-5.441662e-01,5.601251e-01,5.764518e-01,5.931578e-01,6.102545e-01,6.277536e-01,6.456668e-01,
-6.640062e-01,6.827845e-01,7.020148e-01,7.217106e-01,7.418860e-01,7.625554e-01,7.837337e-01,
-8.054363e-01,8.276787e-01,8.504769e-01,8.738478e-01,8.978095e-01,9.223790e-01,9.475746e-01,
-9.734160e-01,9.999218e-01,1.027113e+00,1.055010e+00,1.083634e+00,1.113008e+00,1.143153e+00,
-1.174094e+00,1.205855e+00,1.238460e+00,1.271935e+00,1.306308e+00,1.341604e+00,1.377853e+00,
-1.415083e+00,1.453324e+00,1.492606e+00,1.532963e+00,1.574426e+00,1.617029e+00,1.660807e+00,
-1.705796e+00,1.752032e+00,1.799555e+00,1.848402e+00,1.898615e+00,1.950243e+00,2.003346e+00,
-2.057951e+00,2.114105e+00,2.171862e+00,2.231280e+00,2.292433e+00,2.355430e+00,2.420453e+00,
-2.487871e+00,2.558479e+00,2.634058e+00,2.718555e+00,2.820170e+00,2.953872e+00,3.141548e+00,
-3.406090e+00,3.762360e+00,4.214883e+00,4.764020e+00,5.412646e+00,6.169038e+00,7.047144e+00,
-8.066375e+00,9.251616e+00,1.063353e+01,1.224899e+01,1.414150e+01,1.636113e+01,1.896376e+01,
-2.200875e+01,2.555457e+01,2.965149e+01,3.433211e+01,3.960073e+01,4.542475e+01,5.173186e+01,
-5.841585e+01,6.535063e+01,7.240850e+01,7.947682e+01,8.646893e+01,9.332839e+01,1.000274e+02,
-1.065618e+02,1.129463e+02,1.192092e+02,1.253898e+02,1.315359e+02,1.377029e+02,1.439541e+02,
-1.503616e+02,1.570072e+02,1.639851e+02,1.714029e+02,1.793829e+02,1.880626e+02,1.975917e+02,
-2.081256e+02,2.198120e+02,2.327710e+02,2.470695e+02,2.626961e+02,2.795460e+02,2.974276e+02,
-3.160962e+02,3.353012e+02,3.548335e+02,3.745617e+02,3.944512e+02,4.145723e+02,4.351002e+02,
-4.563033e+02,4.784941e+02,5.019153e+02,5.266048e+02,5.523951e+02,5.790813e+02,6.065771e+02,
-6.349401e+02,6.643178e+02,6.948910e+02,7.268416e+02,7.603404e+02,7.955471e+02,8.326159e+02,
-8.716998e+02,9.129543e+02,9.565398e+02,1.002622e+03,1.051371e+03,1.102964e+03,1.157582e+03,
-1.215413e+03,1.276652e+03,1.341501e+03,1.410169e+03,1.482875e+03,1.559849e+03,1.641333e+03,
-1.727580e+03,1.818857e+03,1.915447e+03,2.017647e+03,2.125773e+03,2.240159e+03,2.361159e+03,
-2.489147e+03,2.624520e+03,2.767701e+03,2.919136e+03,3.079298e+03,3.248691e+03,3.427846e+03,
-3.617331e+03,3.817744e+03,4.029722e+03,4.253941e+03,4.491115e+03,4.742005e+03,5.007417e+03,
-5.288205e+03,5.585276e+03,5.899591e+03,6.232171e+03,6.584097e+03,6.956519e+03,7.350654e+03,
-7.767793e+03,8.209307e+03,8.676651e+03,9.171366e+03,9.695090e+03,1.024956e+04,1.083661e+04,
-1.145821e+04,1.211642e+04,1.281345e+04,1.355162e+04,1.433343e+04,1.516149e+04,1.603861e+04,
-1.696773e+04,1.795200e+04,1.899477e+04,2.009956e+04,2.127014e+04,2.251050e+04,2.382486e+04,
-2.521774e+04,2.669389e+04,2.825838e+04,2.991659e+04,3.167424e+04,3.353738e+04,3.551246e+04,
-3.760630e+04,3.982616e+04,4.217976e+04,4.467528e+04,4.732140e+04,5.012737e+04,5.310298e+04,
-5.625866e+04,5.960545e+04,6.315512e+04,6.692013e+04,7.091374e+04,7.515004e+04,7.964399e+04,
-8.441148e+04,8.946939e+04,9.483567e+04,1.005294e+05,1.065708e+05,1.129813e+05,1.197840e+05,
-1.270030e+05,1.346642e+05,1.427950e+05,1.514246e+05,1.605840e+05,1.703061e+05,1.806259e+05,
-1.915807e+05,2.032100e+05,2.155559e+05,2.286629e+05,2.425788e+05,2.573538e+05,2.730419e+05,
-2.896999e+05,3.073887e+05,3.261726e+05,3.461204e+05,3.673050e+05,3.898039e+05,4.136996e+05,
-4.390797e+05,4.660376e+05,4.946723e+05,5.250894e+05,5.574009e+05,5.917262e+05,6.281921e+05
-  };
-  static const G4double P02[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,4.420900e-05,1.361817e-04,
-2.266269e-04,3.153714e-04,4.017279e-04,4.855357e-04,5.667169e-04,6.451910e-04,7.209150e-04,
-7.941235e-04,8.648089e-04,9.328938e-04,9.982988e-04,1.061300e-03,1.122181e-03,1.180878e-03,
-1.237327e-03,1.291871e-03,1.344747e-03,1.395901e-03,1.445399e-03,1.493678e-03,1.540753e-03,
-1.586647e-03,1.631791e-03,1.676264e-03,1.720139e-03,1.763868e-03,1.807513e-03,1.851337e-03,
-1.895742e-03,1.940822e-03,1.987146e-03,2.034882e-03,2.084594e-03,2.136652e-03,2.191607e-03,
-2.250027e-03,2.312541e-03,2.379824e-03,2.452669e-03,2.531743e-03,2.617905e-03,2.711676e-03,
-2.813598e-03,2.923687e-03,3.041745e-03,3.166730e-03,3.297379e-03,3.432040e-03,3.568683e-03,
-3.705488e-03,3.840963e-03,3.973777e-03,4.102940e-03,4.227769e-03,4.347808e-03,4.462773e-03,
-4.572513e-03,4.676977e-03,4.776189e-03,4.870234e-03,4.959240e-03,5.043366e-03,5.122795e-03,
-5.197723e-03,5.268357e-03,5.334907e-03,5.397586e-03,5.456607e-03,5.512171e-03,5.564479e-03,
-5.613724e-03,5.660086e-03,5.703745e-03,5.744862e-03,5.783597e-03,5.820098e-03,5.854504e-03,
-5.886946e-03,5.917549e-03,5.946428e-03,5.973693e-03,5.999444e-03,6.023779e-03,6.046787e-03,
-6.068552e-03,6.089154e-03,6.108666e-03,6.127159e-03,6.144698e-03,6.161344e-03,6.177157e-03,
-6.192190e-03,6.206496e-03,6.220122e-03,6.233117e-03,6.245523e-03,6.257148e-03,6.267814e-03,
-6.278332e-03,6.288730e-03,6.299041e-03,6.309306e-03,6.319568e-03,6.329890e-03,6.340346e-03,
-6.351039e-03,6.362103e-03,6.373708e-03,6.386067e-03,6.399432e-03,6.414085e-03,6.430316e-03,
-6.448411e-03,6.468623e-03,6.491167e-03,6.516222e-03,6.543944e-03,6.574484e-03,6.608010e-03,
-6.644722e-03,6.684861e-03,6.728714e-03,6.776610e-03,6.828910e-03,6.885984e-03,6.948178e-03,
-7.015759e-03,7.088847e-03,7.167329e-03,7.250781e-03,7.338407e-03,7.429041e-03,7.521215e-03,
-7.613307e-03,7.703728e-03,7.791106e-03,7.874414e-03,7.953011e-03,8.026631e-03,8.095312e-03,
-8.159311e-03,8.219026e-03,8.274939e-03,8.327565e-03,8.377428e-03,8.425044e-03,8.470912e-03,
-8.515509e-03,8.559288e-03,8.602682e-03,8.646088e-03,8.689867e-03,8.734324e-03,8.779691e-03,
-8.826098e-03,8.873546e-03,8.921888e-03,8.970825e-03,9.019927e-03,9.068684e-03,9.116571e-03,
-9.163124e-03,9.207992e-03,9.250957e-03,9.291937e-03,9.330961e-03,9.368142e-03,9.403647e-03,
-9.437672e-03,9.470422e-03,9.502096e-03,9.532883e-03,9.562954e-03,9.592457e-03,9.621524e-03,
-9.650264e-03,9.678770e-03,9.707115e-03,9.735359e-03,9.763547e-03,9.791714e-03,9.819881e-03,
-9.848065e-03,9.876273e-03,9.904506e-03,9.932763e-03,9.961037e-03,9.989320e-03,1.001760e-02,
-1.004587e-02,1.007412e-02,1.010233e-02,1.013050e-02,1.015861e-02,1.018666e-02,1.021463e-02,
-1.024251e-02,1.027031e-02,1.029800e-02,1.032560e-02,1.035308e-02,1.038046e-02,1.040771e-02,
-1.043486e-02,1.046188e-02,1.048878e-02,1.051555e-02,1.054221e-02,1.056874e-02,1.059515e-02,
-1.062144e-02,1.064761e-02,1.067366e-02,1.069959e-02,1.072540e-02,1.075110e-02,1.077668e-02,
-1.080215e-02,1.082752e-02,1.085277e-02,1.087792e-02,1.090296e-02,1.092791e-02,1.095275e-02,
-1.097749e-02,1.100214e-02,1.102670e-02,1.105116e-02,1.107554e-02,1.109983e-02,1.112403e-02,
-1.114815e-02,1.117219e-02,1.119615e-02,1.122003e-02,1.124383e-02,1.126757e-02,1.129123e-02,
-1.131482e-02,1.133834e-02,1.136179e-02,1.138518e-02,1.140851e-02,1.143178e-02,1.145498e-02,
-1.147813e-02,1.150122e-02,1.152426e-02,1.154724e-02,1.157017e-02,1.159305e-02,1.161588e-02,
-1.163867e-02,1.166140e-02,1.168409e-02,1.170674e-02,1.172935e-02,1.175192e-02,1.177444e-02,
-1.179693e-02,1.181938e-02,1.184180e-02,1.186418e-02,1.188652e-02,1.190884e-02,1.193113e-02,
-1.195338e-02,1.197561e-02,1.199781e-02,1.201998e-02,1.204213e-02,1.206425e-02,1.208635e-02,
-1.210843e-02,1.213049e-02,1.215253e-02,1.217455e-02,1.219655e-02,1.221854e-02,1.224051e-02,
-1.226246e-02,1.228440e-02,1.230633e-02,1.232825e-02,1.235016e-02,1.237205e-02,1.239394e-02,
-1.241582e-02,1.243769e-02,1.245956e-02,1.248142e-02,1.250328e-02,1.252513e-02,1.254699e-02,
-1.256884e-02,1.259069e-02,1.261254e-02,1.263439e-02,1.265624e-02,1.267809e-02,1.269995e-02
-};
-  static const G4double P12[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,2.225283e-04,6.969163e-04,
-1.179082e-03,1.668007e-03,2.159647e-03,2.652656e-03,3.146065e-03,3.638813e-03,4.130000e-03,
-4.620522e-03,5.109707e-03,5.596353e-03,6.079144e-03,6.559396e-03,7.038618e-03,7.515675e-03,
-7.989358e-03,8.461919e-03,8.934839e-03,9.407147e-03,9.878911e-03,1.035387e-02,1.083189e-02,
-1.131287e-02,1.180118e-02,1.229762e-02,1.280305e-02,1.332290e-02,1.385829e-02,1.441300e-02,
-1.499297e-02,1.560045e-02,1.624454e-02,1.692928e-02,1.766499e-02,1.845978e-02,1.932536e-02,
-2.027454e-02,2.132233e-02,2.248557e-02,2.378467e-02,2.523919e-02,2.687393e-02,2.870892e-02,
-3.076594e-02,3.305745e-02,3.559175e-02,3.835869e-02,4.134135e-02,4.451165e-02,4.782902e-02,
-5.125391e-02,5.475126e-02,5.828676e-02,6.183222e-02,6.536541e-02,6.886876e-02,7.232843e-02,
-7.573356e-02,7.907571e-02,8.234849e-02,8.554717e-02,8.866842e-02,9.171009e-02,9.467100e-02,
-9.755076e-02,1.003496e-01,1.030683e-01,1.057082e-01,1.082710e-01,1.107584e-01,1.131724e-01,
-1.155154e-01,1.177894e-01,1.199970e-01,1.221403e-01,1.242219e-01,1.262440e-01,1.282088e-01,
-1.301187e-01,1.319759e-01,1.337825e-01,1.355408e-01,1.372527e-01,1.389203e-01,1.405455e-01,
-1.421304e-01,1.436768e-01,1.451865e-01,1.466613e-01,1.481032e-01,1.495139e-01,1.508951e-01,
-1.522486e-01,1.535763e-01,1.548799e-01,1.561612e-01,1.574222e-01,1.586397e-01,1.597917e-01,
-1.609624e-01,1.621554e-01,1.633749e-01,1.646261e-01,1.659155e-01,1.672522e-01,1.686479e-01,
-1.701192e-01,1.716882e-01,1.733847e-01,1.752469e-01,1.773226e-01,1.796681e-01,1.823462e-01,
-1.854234e-01,1.889661e-01,1.930388e-01,1.977039e-01,2.030239e-01,2.090644e-01,2.158990e-01,
-2.236126e-01,2.323048e-01,2.420924e-01,2.531103e-01,2.655101e-01,2.794568e-01,2.951204e-01,
-3.126625e-01,3.322153e-01,3.538544e-01,3.775683e-01,4.032308e-01,4.305865e-01,4.592584e-01,
-4.887811e-01,5.186554e-01,5.484082e-01,5.776430e-01,6.060694e-01,6.335111e-01,6.598960e-01,
-6.852353e-01,7.096034e-01,7.331188e-01,7.559302e-01,7.782067e-01,8.001315e-01,8.218986e-01,
-8.437111e-01,8.657805e-01,8.883258e-01,9.115688e-01,9.357297e-01,9.610168e-01,9.876119e-01,
-1.015650e+00,1.045194e+00,1.076217e+00,1.108583e+00,1.142051e+00,1.176301e+00,1.210968e+00,
-1.245702e+00,1.280202e+00,1.314250e+00,1.347718e+00,1.380565e+00,1.412820e+00,1.444563e+00,
-1.475916e+00,1.507016e+00,1.538017e+00,1.569073e+00,1.600334e+00,1.631945e+00,1.664042e+00,
-1.696751e+00,1.730185e+00,1.764449e+00,1.799637e+00,1.835830e+00,1.873102e+00,1.911516e+00,
-1.951130e+00,1.991990e+00,2.034139e+00,2.077614e+00,2.122447e+00,2.168668e+00,2.216301e+00,
-2.265373e+00,2.315904e+00,2.367919e+00,2.421439e+00,2.476486e+00,2.533084e+00,2.591258e+00,
-2.651032e+00,2.712435e+00,2.775494e+00,2.840241e+00,2.906709e+00,2.974931e+00,3.044946e+00,
-3.116791e+00,3.190508e+00,3.266141e+00,3.343734e+00,3.423336e+00,3.504997e+00,3.588769e+00,
-3.674707e+00,3.762868e+00,3.853312e+00,3.946099e+00,4.041295e+00,4.138965e+00,4.239180e+00,
-4.342009e+00,4.447529e+00,4.555814e+00,4.666945e+00,4.781004e+00,4.898075e+00,5.018245e+00,
-5.141606e+00,5.268252e+00,5.398277e+00,5.531782e+00,5.668870e+00,5.809647e+00,5.954223e+00,
-6.102709e+00,6.255223e+00,6.411885e+00,6.572819e+00,6.738153e+00,6.908018e+00,7.082551e+00,
-7.261893e+00,7.446187e+00,7.635583e+00,7.830235e+00,8.030303e+00,8.235949e+00,8.447343e+00,
-8.664658e+00,8.888076e+00,9.117781e+00,9.353964e+00,9.596824e+00,9.846563e+00,1.010339e+01,
-1.036753e+01,1.063919e+01,1.091862e+01,1.120604e+01,1.150170e+01,1.180587e+01,1.211879e+01,
-1.244074e+01,1.277199e+01,1.311284e+01,1.346358e+01,1.382452e+01,1.419596e+01,1.457824e+01,
-1.497170e+01,1.537667e+01,1.579352e+01,1.622262e+01,1.666435e+01,1.711910e+01,1.758728e+01,
-1.806931e+01,1.856562e+01,1.907666e+01,1.960289e+01,2.014478e+01,2.070283e+01,2.127756e+01,
-2.186947e+01,2.247911e+01,2.310704e+01,2.375385e+01,2.442012e+01,2.510646e+01,2.581353e+01,
-2.654196e+01,2.729244e+01,2.806568e+01,2.886238e+01,2.968330e+01,3.052921e+01,3.140091e+01,
-3.229921e+01,3.322497e+01,3.417906e+01,3.516238e+01,3.617589e+01,3.722053e+01,3.829731e+01
-  };
-  static const G4double P22[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.120131e-03,3.567208e-03,
-6.137882e-03,8.831785e-03,1.163101e-02,1.453145e-02,1.753060e-02,2.062489e-02,2.381127e-02,
-2.709822e-02,3.048398e-02,3.396264e-02,3.752670e-02,4.118793e-02,4.496040e-02,4.883801e-02,
-5.281322e-02,5.690771e-02,6.113789e-02,6.549907e-02,6.999581e-02,7.466886e-02,7.952312e-02,
-8.456445e-02,8.984669e-02,9.538880e-02,1.012118e-01,1.073922e-01,1.139603e-01,1.209824e-01,
-1.285578e-01,1.367447e-01,1.457007e-01,1.555238e-01,1.664127e-01,1.785480e-01,1.921825e-01,
-2.076059e-01,2.251690e-01,2.452818e-01,2.684512e-01,2.952087e-01,3.262268e-01,3.621378e-01,
-4.036571e-01,4.513583e-01,5.057654e-01,5.670252e-01,6.351235e-01,7.097670e-01,7.903118e-01,
-8.760602e-01,9.663525e-01,1.060475e+00,1.157804e+00,1.257815e+00,1.360070e+00,1.464190e+00,
-1.569856e+00,1.676792e+00,1.784762e+00,1.893564e+00,2.003028e+00,2.113012e+00,2.223396e+00,
-2.334084e+00,2.444997e+00,2.556071e+00,2.667265e+00,2.778554e+00,2.889911e+00,3.001327e+00,
-3.112811e+00,3.224358e+00,3.335994e+00,3.447730e+00,3.559596e+00,3.671622e+00,3.783838e+00,
-3.896283e+00,4.009001e+00,4.122034e+00,4.235431e+00,4.349243e+00,4.463526e+00,4.578342e+00,
-4.693754e+00,4.809831e+00,4.926647e+00,5.044285e+00,5.162832e+00,5.282382e+00,5.403039e+00,
-5.524919e+00,5.648145e+00,5.772858e+00,5.899215e+00,6.027391e+00,6.154925e+00,6.279335e+00,
-6.409661e+00,6.546552e+00,6.690783e+00,6.843308e+00,7.005336e+00,7.178452e+00,7.364781e+00,
-7.567228e+00,7.789765e+00,8.037769e+00,8.318377e+00,8.640763e+00,9.016247e+00,9.458163e+00,
-9.981511e+00,1.060252e+01,1.133833e+01,1.220702e+01,1.322802e+01,1.442289e+01,1.581627e+01,
-1.743708e+01,1.931953e+01,2.150424e+01,2.403895e+01,2.697907e+01,3.038737e+01,3.433257e+01,
-3.888631e+01,4.411756e+01,5.008434e+01,5.682345e+01,6.433960e+01,7.259691e+01,8.151634e+01,
-9.098150e+01,1.008525e+02,1.109841e+02,1.212442e+02,1.315260e+02,1.417556e+02,1.518925e+02,
-1.619260e+02,1.718706e+02,1.817614e+02,1.916501e+02,2.016029e+02,2.116989e+02,2.220295e+02,
-2.326990e+02,2.438250e+02,2.555393e+02,2.679864e+02,2.813215e+02,2.957058e+02,3.112976e+02,
-3.282386e+02,3.466366e+02,3.665465e+02,3.879537e+02,4.107678e+02,4.348286e+02,4.599280e+02,
-4.858444e+02,5.123742e+02,5.393579e+02,5.666943e+02,5.943443e+02,6.223268e+02,6.507098e+02,
-6.796009e+02,7.091381e+02,7.394822e+02,7.708109e+02,8.033129e+02,8.371852e+02,8.726312e+02,
-9.098582e+02,9.490768e+02,9.904994e+02,1.034340e+03,1.080815e+03,1.130139e+03,1.182532e+03,
-1.238214e+03,1.297406e+03,1.360335e+03,1.427230e+03,1.498326e+03,1.573865e+03,1.654097e+03,
-1.739279e+03,1.829682e+03,1.925585e+03,2.027284e+03,2.135086e+03,2.249318e+03,2.370323e+03,
-2.498462e+03,2.634120e+03,2.777703e+03,2.929640e+03,3.090388e+03,3.260429e+03,3.440278e+03,
-3.630477e+03,3.831604e+03,4.044271e+03,4.269129e+03,4.506868e+03,4.758219e+03,5.023960e+03,
-5.304913e+03,5.601955e+03,5.916011e+03,6.248067e+03,6.599167e+03,6.970418e+03,7.362995e+03,
-7.778144e+03,8.217189e+03,8.681530e+03,9.172656e+03,9.692145e+03,1.024167e+04,1.082301e+04,
-1.143804e+04,1.208877e+04,1.277731e+04,1.350591e+04,1.427696e+04,1.509299e+04,1.595667e+04,
-1.687087e+04,1.783860e+04,1.886306e+04,1.994767e+04,2.109602e+04,2.231195e+04,2.359952e+04,
-2.496305e+04,2.640711e+04,2.793656e+04,2.955655e+04,3.127256e+04,3.309039e+04,3.501622e+04,
-3.705657e+04,3.921839e+04,4.150907e+04,4.393642e+04,4.650876e+04,4.923490e+04,5.212422e+04,
-5.518666e+04,5.843278e+04,6.187379e+04,6.552160e+04,6.938886e+04,7.348899e+04,7.783625e+04,
-8.244579e+04,8.733369e+04,9.251705e+04,9.801401e+04,1.038438e+05,1.100270e+05,1.165853e+05,
-1.235418e+05,1.309211e+05,1.387492e+05,1.470539e+05,1.558646e+05,1.652126e+05,1.751311e+05,
-1.856555e+05,1.968232e+05,2.086742e+05,2.212509e+05,2.345983e+05,2.487643e+05,2.637997e+05,
-2.797587e+05,2.966988e+05,3.146809e+05,3.337702e+05,3.540357e+05,3.755506e+05,3.983931e+05,
-4.226461e+05,4.483978e+05,4.757419e+05,5.047781e+05,5.356124e+05,5.683574e+05,6.031331e+05,
-6.400668e+05,6.792939e+05,7.209586e+05,7.652140e+05,8.122231e+05,8.621592e+05,9.152064e+05
-  };
-  static const G4double P03[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.409974e-04,
-3.120096e-04,5.006502e-04,7.064650e-04,9.273072e-04,1.160607e-03,1.403015e-03,1.650417e-03,
-1.899130e-03,2.146133e-03,2.388721e-03,2.624876e-03,2.853195e-03,3.072731e-03,3.282883e-03,
-3.483317e-03,3.673901e-03,3.854657e-03,4.025724e-03,4.187333e-03,4.339776e-03,4.483396e-03,
-4.618564e-03,4.745669e-03,4.865110e-03,4.977295e-03,5.082631e-03,5.181502e-03,5.274289e-03,
-5.361367e-03,5.443076e-03,5.519761e-03,5.591731e-03,5.659291e-03,5.722723e-03,5.782293e-03,
-5.838252e-03,5.890835e-03,5.940264e-03,5.986745e-03,6.030472e-03,6.071627e-03,6.110379e-03,
-6.146889e-03,6.181306e-03,6.213770e-03,6.244412e-03,6.273357e-03,6.300718e-03,6.326607e-03,
-6.351124e-03,6.374368e-03,6.396429e-03,6.417395e-03,6.437348e-03,6.456265e-03,6.474073e-03,
-6.491149e-03,6.507570e-03,6.523412e-03,6.538764e-03,6.553724e-03,6.568408e-03,6.582959e-03,
-6.597557e-03,6.612423e-03,6.627837e-03,6.644132e-03,6.661699e-03,6.680967e-03,6.702376e-03,
-6.726353e-03,6.753276e-03,6.783463e-03,6.817177e-03,6.854643e-03,6.896074e-03,6.941701e-03,
-6.991787e-03,7.046648e-03,7.106649e-03,7.172202e-03,7.243749e-03,7.321731e-03,7.406542e-03,
-7.498466e-03,7.597591e-03,7.703710e-03,7.816238e-03,7.934150e-03,8.055987e-03,8.179938e-03,
-8.304010e-03,8.426239e-03,8.544896e-03,8.658642e-03,8.766594e-03,8.868315e-03,8.963752e-03,
-9.053136e-03,9.136896e-03,9.215579e-03,9.289794e-03,9.360172e-03,9.427339e-03,9.491904e-03,
-9.554447e-03,9.615520e-03,9.675636e-03,9.735266e-03,9.794830e-03,9.854684e-03,9.915103e-03,
-9.976259e-03,1.003820e-02,1.010084e-02,1.016395e-02,1.022716e-02,1.029004e-02,1.035209e-02,
-1.041285e-02,1.047195e-02,1.052910e-02,1.058414e-02,1.063704e-02,1.068785e-02,1.073670e-02,
-1.078376e-02,1.082922e-02,1.087331e-02,1.091623e-02,1.095817e-02,1.099930e-02,1.103978e-02,
-1.107975e-02,1.111933e-02,1.115860e-02,1.119765e-02,1.123654e-02,1.127531e-02,1.131400e-02,
-1.135262e-02,1.139120e-02,1.142974e-02,1.146824e-02,1.150669e-02,1.154509e-02,1.158343e-02,
-1.162169e-02,1.165987e-02,1.169795e-02,1.173592e-02,1.177377e-02,1.181149e-02,1.184906e-02,
-1.188649e-02,1.192375e-02,1.196086e-02,1.199779e-02,1.203454e-02,1.207112e-02,1.210751e-02,
-1.214372e-02,1.217975e-02,1.221559e-02,1.225124e-02,1.228671e-02,1.232200e-02,1.235710e-02,
-1.239202e-02,1.242676e-02,1.246133e-02,1.249572e-02,1.252994e-02,1.256399e-02,1.259787e-02,
-1.263159e-02,1.266515e-02,1.269855e-02,1.273181e-02,1.276490e-02,1.279786e-02,1.283067e-02,
-1.286333e-02,1.289586e-02,1.292826e-02,1.296053e-02,1.299266e-02,1.302467e-02,1.305656e-02,
-1.308833e-02,1.311999e-02,1.315153e-02,1.318296e-02,1.321428e-02,1.324550e-02,1.327661e-02,
-1.330763e-02,1.333855e-02,1.336937e-02,1.340010e-02,1.343074e-02,1.346130e-02,1.349177e-02,
-1.352215e-02,1.355246e-02,1.358269e-02,1.361284e-02,1.364292e-02,1.367293e-02,1.370287e-02,
-1.373274e-02,1.376254e-02,1.379228e-02,1.382196e-02,1.385158e-02,1.388114e-02,1.391065e-02,
-1.394010e-02,1.396950e-02,1.399885e-02,1.402815e-02,1.405740e-02,1.408661e-02,1.411577e-02,
-1.414489e-02,1.417397e-02,1.420301e-02,1.423201e-02,1.426098e-02,1.428992e-02,1.431882e-02,
-1.434768e-02,1.437652e-02,1.440533e-02,1.443412e-02,1.446287e-02,1.449161e-02,1.452032e-02,
-1.454901e-02,1.457768e-02,1.460633e-02,1.463496e-02,1.466358e-02,1.469218e-02,1.472077e-02,
-1.474934e-02,1.477791e-02,1.480646e-02,1.483501e-02,1.486355e-02,1.489208e-02,1.492061e-02,
-1.494914e-02,1.497766e-02,1.500618e-02,1.503470e-02,1.506322e-02,1.509175e-02,1.512027e-02
-  };
-  static const G4double P13[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,2.762798e-03,
-6.214464e-03,1.014119e-02,1.455950e-02,1.944870e-02,2.477496e-02,3.048202e-02,3.648846e-02,
-4.271502e-02,4.909153e-02,5.554923e-02,6.203158e-02,6.849397e-02,7.490114e-02,8.122529e-02,
-8.744455e-02,9.354199e-02,9.950466e-02,1.053230e-01,1.109903e-01,1.165020e-01,1.218558e-01,
-1.270507e-01,1.320872e-01,1.369666e-01,1.416915e-01,1.462653e-01,1.506913e-01,1.549735e-01,
-1.591164e-01,1.631241e-01,1.670017e-01,1.707532e-01,1.743837e-01,1.778977e-01,1.812996e-01,
-1.845939e-01,1.877850e-01,1.908772e-01,1.938747e-01,1.967815e-01,1.996017e-01,2.023391e-01,
-2.049976e-01,2.075809e-01,2.100927e-01,2.125365e-01,2.149160e-01,2.172346e-01,2.194959e-01,
-2.217034e-01,2.238606e-01,2.259710e-01,2.280383e-01,2.300664e-01,2.320480e-01,2.339710e-01,
-2.358717e-01,2.377555e-01,2.396290e-01,2.415002e-01,2.433797e-01,2.452813e-01,2.472236e-01,
-2.492319e-01,2.513402e-01,2.535933e-01,2.560486e-01,2.587768e-01,2.618611e-01,2.653936e-01,
-2.694712e-01,2.741902e-01,2.796437e-01,2.859211e-01,2.931111e-01,3.013060e-01,3.106073e-01,
-3.211310e-01,3.330113e-01,3.464030e-01,3.614827e-01,3.784459e-01,3.975016e-01,4.188614e-01,
-4.427220e-01,4.692400e-01,4.984989e-01,5.304750e-01,5.650069e-01,6.017804e-01,6.403371e-01,
-6.801126e-01,7.204962e-01,7.608999e-01,8.008170e-01,8.398607e-01,8.777776e-01,9.144416e-01,
-9.498326e-01,9.840127e-01,1.017105e+00,1.049275e+00,1.080716e+00,1.111643e+00,1.142283e+00,
-1.172873e+00,1.203659e+00,1.234892e+00,1.266822e+00,1.299693e+00,1.333737e+00,1.369155e+00,
-1.406103e+00,1.444672e+00,1.484870e+00,1.526605e+00,1.569693e+00,1.613861e+00,1.658784e+00,
-1.704122e+00,1.749563e+00,1.794852e+00,1.839808e+00,1.884335e+00,1.928413e+00,1.972085e+00,
-2.015447e+00,2.058627e+00,2.101780e+00,2.145070e+00,2.188667e+00,2.232736e+00,2.277440e+00,
-2.322931e+00,2.369348e+00,2.416823e+00,2.465473e+00,2.515403e+00,2.566707e+00,2.619468e+00,
-2.673759e+00,2.729644e+00,2.787177e+00,2.846409e+00,2.907381e+00,2.970134e+00,3.034703e+00,
-3.101119e+00,3.169415e+00,3.239621e+00,3.311767e+00,3.385883e+00,3.462001e+00,3.540153e+00,
-3.620375e+00,3.702702e+00,3.787172e+00,3.873828e+00,3.962711e+00,4.053869e+00,4.147350e+00,
-4.243205e+00,4.341489e+00,4.442258e+00,4.545574e+00,4.651497e+00,4.760095e+00,4.871437e+00,
-4.985593e+00,5.102639e+00,5.222653e+00,5.345715e+00,5.471910e+00,5.601324e+00,5.734049e+00,
-5.870177e+00,6.009805e+00,6.153034e+00,6.299967e+00,6.450712e+00,6.605379e+00,6.764082e+00,
-6.926941e+00,7.094076e+00,7.265614e+00,7.441685e+00,7.622423e+00,7.807966e+00,7.998458e+00,
-8.194045e+00,8.394879e+00,8.601118e+00,8.812923e+00,9.030461e+00,9.253904e+00,9.483429e+00,
-9.719220e+00,9.961464e+00,1.021036e+01,1.046610e+01,1.072890e+01,1.099897e+01,1.127653e+01,
-1.156181e+01,1.185504e+01,1.215646e+01,1.246633e+01,1.278490e+01,1.311243e+01,1.344920e+01,
-1.379550e+01,1.415161e+01,1.451783e+01,1.489447e+01,1.528186e+01,1.568033e+01,1.609020e+01,
-1.651185e+01,1.694562e+01,1.739189e+01,1.785105e+01,1.832350e+01,1.880965e+01,1.930992e+01,
-1.982475e+01,2.035460e+01,2.089992e+01,2.146121e+01,2.203895e+01,2.263366e+01,2.324587e+01,
-2.387613e+01,2.452501e+01,2.519307e+01,2.588093e+01,2.658921e+01,2.731854e+01,2.806960e+01,
-2.884305e+01,2.963961e+01,3.046001e+01,3.130500e+01,3.217535e+01,3.307186e+01,3.399537e+01,
-3.494673e+01,3.592682e+01,3.693656e+01,3.797687e+01,3.904875e+01,4.015319e+01,4.129122e+01,
-4.246392e+01,4.367240e+01,4.491780e+01,4.620129e+01,4.752410e+01,4.888749e+01,5.029275e+01
-  };
-  static const G4double P23[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,5.413975e-02,
-1.238128e-01,2.055575e-01,3.004149e-01,4.086648e-01,5.302738e-01,6.646463e-01,8.104828e-01,
-9.663775e-01,1.131003e+00,1.302922e+00,1.480873e+00,1.663800e+00,1.850809e+00,2.041137e+00,
-2.234130e+00,2.429223e+00,2.625932e+00,2.823840e+00,3.022593e+00,3.221891e+00,3.421481e+00,
-3.621155e+00,3.820738e+00,4.020088e+00,4.219105e+00,4.417721e+00,4.615865e+00,4.813503e+00,
-5.010628e+00,5.207217e+00,5.403298e+00,5.598873e+00,5.793981e+00,5.988660e+00,6.182946e+00,
-6.376896e+00,6.570570e+00,6.764031e+00,6.957349e+00,7.150601e+00,7.343872e+00,7.537254e+00,
-7.730848e+00,7.924762e+00,8.119112e+00,8.314031e+00,8.509661e+00,8.706158e+00,8.903694e+00,
-9.102464e+00,9.302681e+00,9.504585e+00,9.708450e+00,9.914589e+00,1.012220e+01,1.032986e+01,
-1.054144e+01,1.075759e+01,1.097915e+01,1.120725e+01,1.144340e+01,1.168966e+01,1.194894e+01,
-1.222528e+01,1.252429e+01,1.285366e+01,1.322363e+01,1.364736e+01,1.414112e+01,1.472402e+01,
-1.541751e+01,1.624472e+01,1.723002e+01,1.839895e+01,1.977888e+01,2.139989e+01,2.329619e+01,
-2.550749e+01,2.808038e+01,3.106957e+01,3.453874e+01,3.856086e+01,4.321766e+01,4.859753e+01,
-5.479148e+01,6.188616e+01,6.995395e+01,7.904100e+01,8.915485e+01,1.002549e+02,1.122494e+02,
-1.250017e+02,1.383453e+02,1.521040e+02,1.661133e+02,1.802356e+02,1.943703e+02,2.084566e+02,
-2.224704e+02,2.364195e+02,2.503384e+02,2.642840e+02,2.783315e+02,2.925726e+02,3.071140e+02,
-3.220770e+02,3.375972e+02,3.538252e+02,3.709238e+02,3.890662e+02,4.084313e+02,4.291951e+02,
-4.515193e+02,4.755366e+02,5.013340e+02,5.289387e+02,5.583096e+02,5.893384e+02,6.218631e+02,
-6.556933e+02,6.906377e+02,7.265303e+02,7.632504e+02,8.007334e+02,8.389740e+02,8.780231e+02,
-9.179815e+02,9.589917e+02,1.001230e+03,1.044901e+03,1.090228e+03,1.137450e+03,1.186818e+03,
-1.238592e+03,1.293040e+03,1.350433e+03,1.411047e+03,1.475160e+03,1.543054e+03,1.615014e+03,
-1.691327e+03,1.772284e+03,1.858181e+03,1.949319e+03,2.046009e+03,2.148567e+03,2.257322e+03,
-2.372614e+03,2.494796e+03,2.624240e+03,2.761331e+03,2.906477e+03,3.060105e+03,3.222666e+03,
-3.394638e+03,3.576525e+03,3.768859e+03,3.972206e+03,4.187166e+03,4.414372e+03,4.654499e+03,
-4.908260e+03,5.176412e+03,5.459761e+03,5.759158e+03,6.075508e+03,6.409771e+03,6.762966e+03,
-7.136172e+03,7.530536e+03,7.947272e+03,8.387671e+03,8.853101e+03,9.345011e+03,9.864941e+03,
-1.041452e+04,1.099549e+04,1.160967e+04,1.225902e+04,1.294560e+04,1.367160e+04,1.443934e+04,
-1.525129e+04,1.611006e+04,1.701843e+04,1.797933e+04,1.899589e+04,2.007140e+04,2.120939e+04,
-2.241358e+04,2.368790e+04,2.503657e+04,2.646401e+04,2.797495e+04,2.957440e+04,3.126766e+04,
-3.306037e+04,3.495851e+04,3.696842e+04,3.909684e+04,4.135092e+04,4.373823e+04,4.626684e+04,
-4.894528e+04,5.178262e+04,5.478849e+04,5.797312e+04,6.134735e+04,6.492269e+04,6.871139e+04,
-7.272641e+04,7.698154e+04,8.149143e+04,8.627160e+04,9.133857e+04,9.670985e+04,1.024041e+05,
-1.084410e+05,1.148416e+05,1.216281e+05,1.288244e+05,1.364554e+05,1.445480e+05,1.531304e+05,
-1.622330e+05,1.718876e+05,1.821283e+05,1.929912e+05,2.045148e+05,2.167399e+05,2.297098e+05,
-2.434706e+05,2.580712e+05,2.735637e+05,2.900034e+05,3.074489e+05,3.259628e+05,3.456113e+05,
-3.664650e+05,3.885990e+05,4.120927e+05,4.370310e+05,4.635039e+05,4.916070e+05,5.214420e+05,
-5.531172e+05,5.867475e+05,6.224550e+05,6.603699e+05,7.006301e+05,7.433826e+05,7.887837e+05,
-8.369994e+05,8.882063e+05,9.425923e+05,1.000357e+06,1.061713e+06,1.126885e+06,1.196115e+06
-  };
-  static const G4double P04[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,4.442863e-06,
-1.519363e-05,2.703219e-05,4.014211e-05,5.519168e-05,7.230975e-05,9.155962e-05,1.130065e-04,
-1.367177e-04,1.629335e-04,1.925910e-04,2.259139e-04,2.630146e-04,3.040085e-04,3.491052e-04,
-3.991538e-04,4.544632e-04,5.151945e-04,5.815134e-04,6.535550e-04,7.314583e-04,8.154027e-04,
-9.055657e-04,1.001169e-03,1.101697e-03,1.207300e-03,1.317649e-03,1.430881e-03,1.546863e-03,
-1.665438e-03,1.784771e-03,1.904473e-03,2.024325e-03,2.143171e-03,2.260820e-03,2.377119e-03,
-2.491853e-03,2.605055e-03,2.717349e-03,2.828874e-03,2.940853e-03,3.054038e-03,3.169999e-03,
-3.290343e-03,3.417114e-03,3.552511e-03,3.699143e-03,3.859120e-03,4.034680e-03,4.226785e-03,
-4.435314e-03,4.658182e-03,4.892305e-03,5.131845e-03,5.371783e-03,5.606701e-03,5.831779e-03,
-6.043927e-03,6.241290e-03,6.422941e-03,6.588882e-03,6.739685e-03,6.876237e-03,6.999584e-03,
-7.110833e-03,7.211089e-03,7.301407e-03,7.382776e-03,7.456105e-03,7.522221e-03,7.581872e-03,
-7.635730e-03,7.684395e-03,7.728406e-03,7.768250e-03,7.804367e-03,7.837137e-03,7.866907e-03,
-7.893992e-03,7.918663e-03,7.941175e-03,7.961745e-03,7.980577e-03,7.997848e-03,8.013718e-03,
-8.028333e-03,8.041823e-03,8.054305e-03,8.065884e-03,8.076657e-03,8.086709e-03,8.096119e-03,
-8.104959e-03,8.113293e-03,8.121181e-03,8.128676e-03,8.135829e-03,8.142686e-03,8.149290e-03,
-8.155681e-03,8.161895e-03,8.167971e-03,8.173941e-03,8.179842e-03,8.185532e-03,8.190791e-03,
-8.196173e-03,8.201721e-03,8.207490e-03,8.213549e-03,8.219997e-03,8.226961e-03,8.234619e-03,
-8.243208e-03,8.253043e-03,8.264530e-03,8.278167e-03,8.294543e-03,8.314306e-03,8.338122e-03,
-8.366621e-03,8.400357e-03,8.439779e-03,8.485245e-03,8.537046e-03,8.595453e-03,8.660753e-03,
-8.733284e-03,8.813450e-03,8.901722e-03,8.998630e-03,9.104733e-03,9.220575e-03,9.346623e-03,
-9.483175e-03,9.630255e-03,9.787493e-03,9.954018e-03,1.012840e-02,1.030865e-02,1.049233e-02,
-1.067675e-02,1.085922e-02,1.103733e-02,1.120911e-02,1.137317e-02,1.152871e-02,1.167547e-02,
-1.181358e-02,1.194350e-02,1.206587e-02,1.218146e-02,1.229109e-02,1.239560e-02,1.249580e-02,
-1.259247e-02,1.268636e-02,1.277816e-02,1.286849e-02,1.295790e-02,1.304686e-02,1.313576e-02,
-1.322486e-02,1.331430e-02,1.340408e-02,1.349406e-02,1.358398e-02,1.367348e-02,1.376212e-02,
-1.384946e-02,1.393508e-02,1.401867e-02,1.409996e-02,1.417885e-02,1.425528e-02,1.432934e-02,
-1.440114e-02,1.447087e-02,1.453873e-02,1.460494e-02,1.466972e-02,1.473329e-02,1.479584e-02,
-1.485754e-02,1.491855e-02,1.497899e-02,1.503897e-02,1.509858e-02,1.515789e-02,1.521695e-02,
-1.527579e-02,1.533444e-02,1.539291e-02,1.545122e-02,1.550935e-02,1.556730e-02,1.562507e-02,
-1.568263e-02,1.573999e-02,1.579713e-02,1.585402e-02,1.591067e-02,1.596706e-02,1.602317e-02,
-1.607900e-02,1.613455e-02,1.618979e-02,1.624474e-02,1.629938e-02,1.635372e-02,1.640774e-02,
-1.646145e-02,1.651485e-02,1.656795e-02,1.662073e-02,1.667321e-02,1.672539e-02,1.677727e-02,
-1.682885e-02,1.688015e-02,1.693115e-02,1.698188e-02,1.703233e-02,1.708251e-02,1.713242e-02,
-1.718208e-02,1.723147e-02,1.728062e-02,1.732953e-02,1.737819e-02,1.742662e-02,1.747483e-02,
-1.752281e-02,1.757058e-02,1.761813e-02,1.766548e-02,1.771262e-02,1.775957e-02,1.780632e-02,
-1.785289e-02,1.789928e-02,1.794549e-02,1.799152e-02,1.803739e-02,1.808309e-02,1.812863e-02,
-1.817402e-02,1.821925e-02,1.826434e-02,1.830928e-02,1.835409e-02,1.839875e-02,1.844329e-02,
-1.848769e-02,1.853197e-02,1.857613e-02,1.862017e-02,1.866409e-02,1.870791e-02,1.875161e-02,
-1.879521e-02,1.883871e-02,1.888210e-02,1.892541e-02,1.896862e-02,1.901173e-02,1.905476e-02,
-1.909771e-02,1.914058e-02,1.918336e-02,1.922607e-02,1.926871e-02,1.931127e-02,1.935377e-02,
-1.939619e-02,1.943856e-02,1.948086e-02,1.952311e-02,1.956530e-02,1.960743e-02,1.964952e-02,
-1.969155e-02,1.973354e-02,1.977548e-02,1.981737e-02,1.985923e-02,1.990105e-02,1.994283e-02,
-1.998458e-02,2.002629e-02,2.006798e-02,2.010963e-02,2.015126e-02,2.019287e-02,2.023445e-02,
-2.027601e-02,2.031756e-02,2.035908e-02,2.040059e-02,2.044209e-02,2.048358e-02,2.052506e-02,
-2.056653e-02,2.060799e-02,2.064945e-02,2.069091e-02,2.073236e-02,2.077382e-02,2.081528e-02
-  };
-  static const G4double P14[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.830684e-05,
-6.371064e-05,1.154186e-04,1.746380e-04,2.449308e-04,3.275905e-04,4.236803e-04,5.343383e-04,
-6.607827e-04,8.052700e-04,9.741837e-04,1.170286e-03,1.395863e-03,1.653360e-03,1.945987e-03,
-2.281454e-03,2.664366e-03,3.098601e-03,3.588306e-03,4.137638e-03,4.751029e-03,5.433489e-03,
-6.190306e-03,7.018768e-03,7.918090e-03,8.893328e-03,9.945232e-03,1.105935e-02,1.223722e-02,
-1.348004e-02,1.477087e-02,1.610715e-02,1.748784e-02,1.890063e-02,2.034378e-02,2.181580e-02,
-2.331419e-02,2.483956e-02,2.640072e-02,2.800033e-02,2.965740e-02,3.138528e-02,3.321162e-02,
-3.516681e-02,3.729155e-02,3.963237e-02,4.224740e-02,4.519013e-02,4.852109e-02,5.228032e-02,
-5.648894e-02,6.112768e-02,6.615316e-02,7.145565e-02,7.693264e-02,8.246248e-02,8.792602e-02,
-9.323627e-02,9.833048e-02,1.031653e-01,1.077195e-01,1.119872e-01,1.159719e-01,1.196832e-01,
-1.231347e-01,1.263418e-01,1.293208e-01,1.320879e-01,1.346591e-01,1.370493e-01,1.392727e-01,
-1.413425e-01,1.432706e-01,1.450684e-01,1.467463e-01,1.483144e-01,1.497813e-01,1.511550e-01,
-1.524436e-01,1.536536e-01,1.547918e-01,1.558640e-01,1.568759e-01,1.578326e-01,1.587389e-01,
-1.595992e-01,1.604178e-01,1.611987e-01,1.619454e-01,1.626615e-01,1.633503e-01,1.640150e-01,
-1.646587e-01,1.652843e-01,1.658945e-01,1.664923e-01,1.670804e-01,1.676615e-01,1.682383e-01,
-1.688138e-01,1.693906e-01,1.699718e-01,1.705606e-01,1.711603e-01,1.717563e-01,1.723243e-01,
-1.729235e-01,1.735601e-01,1.742424e-01,1.749812e-01,1.757914e-01,1.766935e-01,1.777159e-01,
-1.788979e-01,1.802932e-01,1.819727e-01,1.840281e-01,1.865720e-01,1.897363e-01,1.936664e-01,
-1.985139e-01,2.044278e-01,2.115504e-01,2.200166e-01,2.299583e-01,2.415112e-01,2.548236e-01,
-2.700636e-01,2.874240e-01,3.071261e-01,3.294187e-01,3.545749e-01,3.828823e-01,4.146274e-01,
-4.500720e-01,4.894190e-01,5.327720e-01,5.800920e-01,6.311614e-01,6.855655e-01,7.427020e-01,
-8.018245e-01,8.621139e-01,9.227611e-01,9.830442e-01,1.042383e+00,1.100363e+00,1.156744e+00,
-1.211429e+00,1.264444e+00,1.315911e+00,1.366015e+00,1.414994e+00,1.463113e+00,1.510663e+00,
-1.557947e+00,1.605276e+00,1.652968e+00,1.701334e+00,1.750675e+00,1.801276e+00,1.853388e+00,
-1.907216e+00,1.962904e+00,2.020515e+00,2.080026e+00,2.141319e+00,2.204187e+00,2.268359e+00,
-2.333525e+00,2.399370e+00,2.465608e+00,2.532008e+00,2.598408e+00,2.664720e+00,2.730931e+00,
-2.797093e+00,2.863310e+00,2.929727e+00,2.996517e+00,3.063869e+00,3.131981e+00,3.201051e+00,
-3.271270e+00,3.342824e+00,3.415884e+00,3.490610e+00,3.567148e+00,3.645628e+00,3.726167e+00,
-3.808870e+00,3.893828e+00,3.981122e+00,4.070824e+00,4.163000e+00,4.257706e+00,4.354996e+00,
-4.454920e+00,4.557525e+00,4.662858e+00,4.770965e+00,4.881891e+00,4.995685e+00,5.112397e+00,
-5.232077e+00,5.354782e+00,5.480568e+00,5.609497e+00,5.741634e+00,5.877047e+00,6.015807e+00,
-6.157992e+00,6.303681e+00,6.452959e+00,6.605913e+00,6.762637e+00,6.923226e+00,7.087782e+00,
-7.256411e+00,7.429221e+00,7.606326e+00,7.787844e+00,7.973899e+00,8.164617e+00,8.360131e+00,
-8.560577e+00,8.766096e+00,8.976834e+00,9.192943e+00,9.414578e+00,9.641901e+00,9.875078e+00,
-1.011428e+01,1.035969e+01,1.061148e+01,1.086986e+01,1.113500e+01,1.140711e+01,1.168641e+01,
-1.197310e+01,1.226741e+01,1.256956e+01,1.287978e+01,1.319833e+01,1.352545e+01,1.386140e+01,
-1.420644e+01,1.456086e+01,1.492492e+01,1.529892e+01,1.568317e+01,1.607798e+01,1.648366e+01,
-1.690054e+01,1.732896e+01,1.776928e+01,1.822186e+01,1.868707e+01,1.916530e+01,1.965693e+01,
-2.016239e+01,2.068210e+01,2.121649e+01,2.176601e+01,2.233113e+01,2.291232e+01,2.351008e+01,
-2.412492e+01,2.475737e+01,2.540797e+01,2.607728e+01,2.676588e+01,2.747436e+01,2.820334e+01,
-2.895345e+01,2.972536e+01,3.051974e+01,3.133728e+01,3.217872e+01,3.304478e+01,3.393625e+01,
-3.485392e+01,3.579859e+01,3.677113e+01,3.777240e+01,3.880330e+01,3.986476e+01,4.095774e+01,
-4.208324e+01,4.324227e+01,4.443590e+01,4.566522e+01,4.693134e+01,4.823544e+01,4.957871e+01,
-5.096240e+01,5.238778e+01,5.385619e+01,5.536898e+01,5.692756e+01,5.853340e+01,6.018799e+01,
-6.189289e+01,6.364971e+01,6.546010e+01,6.732578e+01,6.924851e+01,7.123011e+01,7.327248e+01
-  };
-  static const G4double P24[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,7.543486e-05,
-2.672072e-04,4.930762e-04,7.606037e-04,1.088954e-03,1.488138e-03,1.967834e-03,2.538841e-03,
-3.213192e-03,4.009598e-03,4.971730e-03,6.125875e-03,7.497533e-03,9.115105e-03,1.101410e-02,
-1.326287e-02,1.591403e-02,1.901913e-02,2.263546e-02,2.682459e-02,3.165470e-02,3.720349e-02,
-4.355667e-02,5.073638e-02,5.878240e-02,6.778949e-02,7.781758e-02,8.878053e-02,1.007435e-01,
-1.137711e-01,1.277352e-01,1.426538e-01,1.585606e-01,1.753566e-01,1.930607e-01,2.116938e-01,
-2.312639e-01,2.518194e-01,2.735251e-01,2.964705e-01,3.209937e-01,3.473739e-01,3.761401e-01,
-4.079082e-01,4.435227e-01,4.839951e-01,5.306350e-01,5.847703e-01,6.479743e-01,7.215434e-01,
-8.064902e-01,9.030479e-01,1.010929e+00,1.128315e+00,1.253346e+00,1.383526e+00,1.516159e+00,
-1.649089e+00,1.780588e+00,1.909280e+00,2.034281e+00,2.155065e+00,2.271349e+00,2.383027e+00,
-2.490116e+00,2.592716e+00,2.690981e+00,2.785094e+00,2.875255e+00,2.961673e+00,3.044553e+00,
-3.124097e+00,3.200497e+00,3.273938e+00,3.344609e+00,3.412697e+00,3.478359e+00,3.541758e+00,
-3.603063e+00,3.662412e+00,3.719967e+00,3.775859e+00,3.830236e+00,3.883236e+00,3.934991e+00,
-3.985641e+00,4.035323e+00,4.084172e+00,4.132329e+00,4.179936e+00,4.227142e+00,4.274100e+00,
-4.320973e+00,4.367929e+00,4.415151e+00,4.462832e+00,4.511183e+00,4.560430e+00,4.610824e+00,
-4.662638e+00,4.716179e+00,4.771788e+00,4.829854e+00,4.890825e+00,4.953249e+00,5.014598e+00,
-5.081309e+00,5.154369e+00,5.235071e+00,5.325147e+00,5.426966e+00,5.543825e+00,5.680343e+00,
-5.843034e+00,6.040974e+00,6.286575e+00,6.596368e+00,6.991576e+00,7.498259e+00,8.146893e+00,
-8.971439e+00,1.000824e+01,1.129521e+01,1.287183e+01,1.477996e+01,1.706532e+01,1.977947e+01,
-2.298186e+01,2.674168e+01,3.113945e+01,3.626805e+01,4.223285e+01,4.915057e+01,5.714619e+01,
-6.634717e+01,7.687414e+01,8.882816e+01,1.022756e+02,1.172331e+02,1.336549e+02,1.514294e+02,
-1.703848e+02,1.903058e+02,2.109585e+02,2.321157e+02,2.535790e+02,2.751935e+02,2.968551e+02,
-3.185090e+02,3.401451e+02,3.617925e+02,3.835128e+02,4.053955e+02,4.275534e+02,4.501201e+02,
-4.732483e+02,4.971083e+02,5.218876e+02,5.477871e+02,5.750188e+02,6.038010e+02,6.343508e+02,
-6.668734e+02,7.015497e+02,7.385227e+02,7.778839e+02,8.196641e+02,8.638306e+02,9.102926e+02,
-9.589179e+02,1.009554e+03,1.062052e+03,1.116289e+03,1.172185e+03,1.229716e+03,1.288919e+03,
-1.349889e+03,1.412779e+03,1.477789e+03,1.545167e+03,1.615193e+03,1.688177e+03,1.764452e+03,
-1.844372e+03,1.928304e+03,2.016627e+03,2.109729e+03,2.208008e+03,2.311865e+03,2.421710e+03,
-2.537958e+03,2.661032e+03,2.791360e+03,2.929384e+03,3.075553e+03,3.230332e+03,3.394201e+03,
-3.567658e+03,3.751220e+03,3.945429e+03,4.150853e+03,4.368085e+03,4.597754e+03,4.840519e+03,
-5.097080e+03,5.368173e+03,5.654580e+03,5.957127e+03,6.276691e+03,6.614199e+03,6.970636e+03,
-7.347046e+03,7.744537e+03,8.164282e+03,8.607528e+03,9.075596e+03,9.569887e+03,1.009189e+04,
-1.064318e+04,1.122542e+04,1.184040e+04,1.249000e+04,1.317620e+04,1.390113e+04,1.466703e+04,
-1.547628e+04,1.633140e+04,1.723507e+04,1.819012e+04,1.919958e+04,2.026662e+04,2.139464e+04,
-2.258721e+04,2.384817e+04,2.518152e+04,2.659158e+04,2.808286e+04,2.966020e+04,3.132870e+04,
-3.309379e+04,3.496121e+04,3.693706e+04,3.902782e+04,4.124035e+04,4.358193e+04,4.606030e+04,
-4.868365e+04,5.146069e+04,5.440064e+04,5.751330e+04,6.080907e+04,6.429899e+04,6.799476e+04,
-7.190880e+04,7.605431e+04,8.044530e+04,8.509662e+04,9.002404e+04,9.524433e+04,1.007752e+05,
-1.066357e+05,1.128456e+05,1.194264e+05,1.264006e+05,1.337923e+05,1.416267e+05,1.499311e+05,
-1.587342e+05,1.680664e+05,1.779602e+05,1.884499e+05,1.995721e+05,2.113657e+05,2.238718e+05,
-2.371343e+05,2.511997e+05,2.661175e+05,2.819400e+05,2.987232e+05,3.165263e+05,3.354123e+05,
-3.554481e+05,3.767048e+05,3.992580e+05,4.231879e+05,4.485800e+05,4.755247e+05,5.041186e+05,
-5.344641e+05,5.666699e+05,6.008519e+05,6.371329e+05,6.756438e+05,7.165233e+05,7.599193e+05,
-8.059888e+05,8.548986e+05,9.068263e+05,9.619605e+05,1.020502e+06,1.082664e+06,1.148672e+06,
-1.218769e+06,1.293211e+06,1.372270e+06,1.456236e+06,1.545418e+06,1.640143e+06,1.740759e+06
-  };
-  static const G4double P05[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-5.861537e-07,3.061765e-06,5.963955e-06,9.305785e-06,1.342109e-05,1.865336e-05,2.503676e-05,
-3.261650e-05,4.273714e-05,5.639991e-05,7.371320e-05,9.607336e-05,1.289866e-04,1.733628e-04,
-2.302289e-04,3.053102e-04,4.003118e-04,5.138222e-04,6.363068e-04,7.666567e-04,9.046405e-04,
-1.049782e-03,1.203029e-03,1.370490e-03,1.553883e-03,1.754746e-03,1.974232e-03,2.209369e-03,
-2.457122e-03,2.712762e-03,2.971183e-03,3.228184e-03,3.480597e-03,3.726495e-03,3.965194e-03,
-4.197027e-03,4.422883e-03,4.643939e-03,4.861858e-03,5.077910e-03,5.293416e-03,5.509553e-03,
-5.727123e-03,5.946622e-03,6.168285e-03,6.392006e-03,6.617371e-03,6.843719e-03,7.070191e-03,
-7.295793e-03,7.519457e-03,7.740099e-03,7.956683e-03,8.168260e-03,8.374004e-03,8.573230e-03,
-8.765403e-03,8.950129e-03,9.127152e-03,9.296334e-03,9.457647e-03,9.611145e-03,9.756957e-03,
-9.895275e-03,1.002632e-02,1.015036e-02,1.026766e-02,1.037853e-02,1.048327e-02,1.058218e-02,
-1.067556e-02,1.076370e-02,1.084690e-02,1.092544e-02,1.099957e-02,1.106956e-02,1.113566e-02,
-1.119809e-02,1.125710e-02,1.131288e-02,1.136563e-02,1.141557e-02,1.146285e-02,1.150766e-02,
-1.155017e-02,1.159052e-02,1.162888e-02,1.166537e-02,1.170014e-02,1.173328e-02,1.176483e-02,
-1.179510e-02,1.182421e-02,1.185232e-02,1.187957e-02,1.190617e-02,1.193232e-02,1.195832e-02,
-1.198450e-02,1.201129e-02,1.203924e-02,1.206900e-02,1.210130e-02,1.213697e-02,1.217683e-02,
-1.222166e-02,1.227215e-02,1.232884e-02,1.239218e-02,1.246252e-02,1.254018e-02,1.262551e-02,
-1.271890e-02,1.282083e-02,1.293183e-02,1.305251e-02,1.318351e-02,1.332543e-02,1.347880e-02,
-1.364395e-02,1.382089e-02,1.400920e-02,1.420789e-02,1.441539e-02,1.462947e-02,1.484742e-02,
-1.506624e-02,1.528290e-02,1.549464e-02,1.569920e-02,1.589495e-02,1.608089e-02,1.625664e-02,
-1.642228e-02,1.657827e-02,1.672530e-02,1.686422e-02,1.699595e-02,1.712141e-02,1.724154e-02,
-1.735724e-02,1.746933e-02,1.757862e-02,1.768580e-02,1.779151e-02,1.789629e-02,1.800058e-02,
-1.810471e-02,1.820886e-02,1.831308e-02,1.841729e-02,1.852126e-02,1.862466e-02,1.872709e-02,
-1.882813e-02,1.892735e-02,1.902442e-02,1.911908e-02,1.921116e-02,1.930062e-02,1.938748e-02,
-1.947187e-02,1.955394e-02,1.963391e-02,1.971200e-02,1.978844e-02,1.986346e-02,1.993725e-02,
-2.001002e-02,2.008193e-02,2.015313e-02,2.022374e-02,2.029385e-02,2.036355e-02,2.043289e-02,
-2.050193e-02,2.057069e-02,2.063918e-02,2.070743e-02,2.077542e-02,2.084316e-02,2.091063e-02,
-2.097784e-02,2.104476e-02,2.111138e-02,2.117769e-02,2.124368e-02,2.130933e-02,2.137464e-02,
-2.143959e-02,2.150419e-02,2.156841e-02,2.163227e-02,2.169575e-02,2.175885e-02,2.182157e-02,
-2.188391e-02,2.194588e-02,2.200747e-02,2.206869e-02,2.212954e-02,2.219003e-02,2.225016e-02,
-2.230994e-02,2.236936e-02,2.242845e-02,2.248720e-02,2.254562e-02,2.260371e-02,2.266149e-02,
-2.271896e-02,2.277613e-02,2.283300e-02,2.288957e-02,2.294587e-02,2.300189e-02,2.305764e-02,
-2.311312e-02,2.316835e-02,2.322333e-02,2.327806e-02,2.333255e-02,2.338681e-02,2.344084e-02,
-2.349466e-02,2.354825e-02,2.360164e-02,2.365482e-02,2.370780e-02,2.376059e-02,2.381319e-02,
-2.386561e-02,2.391784e-02,2.396991e-02,2.402180e-02,2.407353e-02,2.412509e-02,2.417651e-02,
-2.422776e-02,2.427888e-02,2.432984e-02,2.438067e-02,2.443137e-02,2.448193e-02,2.453236e-02,
-2.458267e-02,2.463286e-02,2.468294e-02,2.473290e-02,2.478275e-02,2.483249e-02,2.488213e-02,
-2.493168e-02,2.498112e-02,2.503047e-02,2.507974e-02,2.512891e-02,2.517800e-02,2.522701e-02,
-2.527595e-02,2.532480e-02,2.537359e-02,2.542230e-02,2.547095e-02,2.551954e-02,2.556806e-02,
-2.561653e-02,2.566494e-02,2.571329e-02,2.576160e-02,2.580985e-02,2.585807e-02,2.590623e-02,
-2.595436e-02,2.600245e-02,2.605050e-02,2.609852e-02,2.614650e-02,2.619446e-02,2.624239e-02,
-2.629030e-02,2.633818e-02,2.638604e-02,2.643389e-02,2.648172e-02,2.652953e-02,2.657733e-02,
-2.662513e-02,2.667291e-02,2.672069e-02,2.676847e-02,2.681624e-02,2.686402e-02,2.691179e-02
-  };
-  static const G4double P15[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-3.974782e-06,2.111703e-05,4.187126e-05,6.655079e-05,9.794658e-05,1.391596e-04,1.910712e-04,
-2.547110e-04,3.424807e-04,4.647771e-04,6.247355e-04,8.380779e-04,1.162192e-03,1.613141e-03,
-2.209563e-03,3.022272e-03,4.083389e-03,5.391437e-03,6.847763e-03,8.447014e-03,1.019379e-02,
-1.208961e-02,1.415500e-02,1.648372e-02,1.911481e-02,2.208779e-02,2.543914e-02,2.914260e-02,
-3.316793e-02,3.745194e-02,4.191903e-02,4.650110e-02,5.114289e-02,5.580689e-02,6.047654e-02,
-6.515418e-02,6.985421e-02,7.459850e-02,7.942200e-02,8.435394e-02,8.942726e-02,9.467447e-02,
-1.001215e-01,1.057883e-01,1.116895e-01,1.178312e-01,1.242106e-01,1.308174e-01,1.376334e-01,
-1.446344e-01,1.517909e-01,1.590700e-01,1.664371e-01,1.738573e-01,1.812967e-01,1.887238e-01,
-1.961101e-01,2.034302e-01,2.106622e-01,2.177880e-01,2.247927e-01,2.316643e-01,2.383937e-01,
-2.449747e-01,2.514023e-01,2.576744e-01,2.637892e-01,2.697473e-01,2.755497e-01,2.811981e-01,
-2.866954e-01,2.920447e-01,2.972497e-01,3.023141e-01,3.072423e-01,3.120386e-01,3.167076e-01,
-3.212540e-01,3.256827e-01,3.299983e-01,3.342061e-01,3.383109e-01,3.423179e-01,3.462322e-01,
-3.500593e-01,3.538045e-01,3.574734e-01,3.610719e-01,3.646061e-01,3.680773e-01,3.714851e-01,
-3.748540e-01,3.781939e-01,3.815172e-01,3.848393e-01,3.881806e-01,3.915678e-01,3.950376e-01,
-3.986393e-01,4.024394e-01,4.065252e-01,4.110083e-01,4.160253e-01,4.217350e-01,4.283120e-01,
-4.359366e-01,4.447861e-01,4.550284e-01,4.668217e-01,4.803198e-01,4.956807e-01,5.130757e-01,
-5.326983e-01,5.547703e-01,5.795448e-01,6.073059e-01,6.383637e-01,6.730439e-01,7.116699e-01,
-7.545360e-01,8.018700e-01,8.537886e-01,9.102508e-01,9.710179e-01,1.035633e+00,1.103430e+00,
-1.173580e+00,1.245163e+00,1.317264e+00,1.389054e+00,1.459853e+00,1.529164e+00,1.596682e+00,
-1.662267e+00,1.725924e+00,1.787763e+00,1.847980e+00,1.906827e+00,1.964596e+00,2.021606e+00,
-2.078191e+00,2.134696e+00,2.191472e+00,2.248861e+00,2.307198e+00,2.366794e+00,2.427929e+00,
-2.490835e+00,2.555683e+00,2.622564e+00,2.691483e+00,2.762350e+00,2.834987e+00,2.909144e+00,
-2.984527e+00,3.060829e+00,3.137758e+00,3.215070e+00,3.292583e+00,3.370189e+00,3.447853e+00,
-3.525611e+00,3.603556e+00,3.681827e+00,3.760598e+00,3.840066e+00,3.920438e+00,4.001928e+00,
-4.084743e+00,4.169087e+00,4.255151e+00,4.343112e+00,4.433133e+00,4.525363e+00,4.619934e+00,
-4.716965e+00,4.816561e+00,4.918816e+00,5.023813e+00,5.131626e+00,5.242324e+00,5.355968e+00,
-5.472618e+00,5.592327e+00,5.715152e+00,5.841146e+00,5.970363e+00,6.102860e+00,6.238695e+00,
-6.377929e+00,6.520625e+00,6.666852e+00,6.816680e+00,6.970186e+00,7.127448e+00,7.288551e+00,
-7.453583e+00,7.622638e+00,7.795812e+00,7.973209e+00,8.154935e+00,8.341103e+00,8.531830e+00,
-8.727236e+00,8.927450e+00,9.132601e+00,9.342828e+00,9.558272e+00,9.779080e+00,1.000540e+01,
-1.023740e+01,1.047524e+01,1.071908e+01,1.096910e+01,1.122548e+01,1.148841e+01,1.175808e+01,
-1.203469e+01,1.231843e+01,1.260954e+01,1.290821e+01,1.321468e+01,1.352918e+01,1.385194e+01,
-1.418323e+01,1.452328e+01,1.487236e+01,1.523075e+01,1.559872e+01,1.597656e+01,1.636457e+01,
-1.676306e+01,1.717234e+01,1.759273e+01,1.802457e+01,1.846822e+01,1.892402e+01,1.939234e+01,
-1.987358e+01,2.036810e+01,2.087633e+01,2.139868e+01,2.193558e+01,2.248747e+01,2.305481e+01,
-2.363808e+01,2.423775e+01,2.485434e+01,2.548836e+01,2.614035e+01,2.681085e+01,2.750044e+01,
-2.820970e+01,2.893925e+01,2.968970e+01,3.046170e+01,3.125593e+01,3.207305e+01,3.291380e+01,
-3.377889e+01,3.466908e+01,3.558515e+01,3.652791e+01,3.749819e+01,3.849684e+01,3.952475e+01,
-4.058284e+01,4.167204e+01,4.279334e+01,4.394772e+01,4.513625e+01,4.635997e+01,4.762000e+01,
-4.891749e+01,5.025360e+01,5.162956e+01,5.304662e+01,5.450609e+01,5.600929e+01,5.755762e+01,
-5.915250e+01,6.079540e+01,6.248786e+01,6.423144e+01,6.602777e+01,6.787852e+01,6.978543e+01,
-7.175028e+01,7.377494e+01,7.586129e+01,7.801133e+01,8.022707e+01,8.251063e+01,8.486417e+01
-  };
-  static const G4double P25[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-2.695366e-05,1.456646e-04,2.940957e-04,4.763706e-04,7.159105e-04,1.040560e-03,1.462756e-03,
-1.997124e-03,2.758357e-03,3.853132e-03,5.331120e-03,7.366831e-03,1.055881e-02,1.514171e-02,
-2.139761e-02,3.019542e-02,4.204851e-02,5.712316e-02,7.444010e-02,9.406277e-02,1.161775e-01,
-1.409425e-01,1.687811e-01,2.011671e-01,2.389176e-01,2.829245e-01,3.341005e-01,3.924354e-01,
-4.578416e-01,5.296390e-01,6.068635e-01,6.885638e-01,7.739318e-01,8.624020e-01,9.537611e-01,
-1.048148e+00,1.145963e+00,1.247793e+00,1.354566e+00,1.467159e+00,1.586602e+00,1.714000e+00,
-1.850381e+00,1.996693e+00,2.153810e+00,2.322424e+00,2.503024e+00,2.695880e+00,2.901036e+00,
-3.118309e+00,3.347312e+00,3.587475e+00,3.838086e+00,4.098335e+00,4.367355e+00,4.644260e+00,
-4.928176e+00,5.218268e+00,5.513750e+00,5.813904e+00,6.118091e+00,6.425733e+00,6.736332e+00,
-7.049470e+00,7.364768e+00,7.681941e+00,8.000723e+00,8.320924e+00,8.642387e+00,8.964984e+00,
-9.288638e+00,9.613299e+00,9.938942e+00,1.026557e+01,1.059321e+01,1.092191e+01,1.125175e+01,
-1.158282e+01,1.191526e+01,1.224919e+01,1.258480e+01,1.292228e+01,1.326186e+01,1.360381e+01,
-1.394841e+01,1.429602e+01,1.464702e+01,1.500188e+01,1.536112e+01,1.572479e+01,1.609281e+01,
-1.646782e+01,1.685103e+01,1.724405e+01,1.764902e+01,1.806883e+01,1.850751e+01,1.897069e+01,
-1.946627e+01,2.000522e+01,2.060253e+01,2.127807e+01,2.205730e+01,2.297138e+01,2.405664e+01,
-2.535341e+01,2.690469e+01,2.875518e+01,3.095123e+01,3.354183e+01,3.658031e+01,4.012667e+01,
-4.424985e+01,4.902993e+01,5.455981e+01,6.094631e+01,6.831029e+01,7.678525e+01,8.651380e+01,
-9.764114e+01,1.103048e+02,1.246205e+02,1.406659e+02,1.584635e+02,1.779675e+02,1.990585e+02,
-2.215491e+02,2.452021e+02,2.697554e+02,2.949511e+02,3.205598e+02,3.463985e+02,3.723392e+02,
-3.983095e+02,4.242881e+02,4.502985e+02,4.764027e+02,5.026947e+02,5.292959e+02,5.563519e+02,
-5.840293e+02,6.125149e+02,6.420137e+02,6.727452e+02,7.049409e+02,7.388395e+02,7.746786e+02,
-8.126858e+02,8.530658e+02,8.959874e+02,9.415706e+02,9.898771e+02,1.040906e+03,1.094598e+03,
-1.150848e+03,1.209525e+03,1.270497e+03,1.333646e+03,1.398899e+03,1.466229e+03,1.535674e+03,
-1.607330e+03,1.681358e+03,1.757972e+03,1.837437e+03,1.920058e+03,2.006179e+03,2.096171e+03,
-2.190427e+03,2.289361e+03,2.393404e+03,2.502995e+03,2.618587e+03,2.740640e+03,2.869622e+03,
-3.006011e+03,3.150290e+03,3.302954e+03,3.464511e+03,3.635478e+03,3.816392e+03,4.007807e+03,
-4.210296e+03,4.424458e+03,4.650917e+03,4.890329e+03,5.143382e+03,5.410798e+03,5.693341e+03,
-5.991817e+03,6.307078e+03,6.640026e+03,6.991616e+03,7.362858e+03,7.754825e+03,8.168654e+03,
-8.605548e+03,9.066788e+03,9.553727e+03,1.006780e+04,1.061054e+04,1.118357e+04,1.178858e+04,
-1.242741e+04,1.310199e+04,1.381436e+04,1.456669e+04,1.536129e+04,1.620059e+04,1.708718e+04,
-1.802382e+04,1.901340e+04,2.005902e+04,2.116395e+04,2.233167e+04,2.356584e+04,2.487038e+04,
-2.624943e+04,2.770738e+04,2.924888e+04,3.087888e+04,3.260261e+04,3.442562e+04,3.635382e+04,
-3.839344e+04,4.055112e+04,4.283390e+04,4.524923e+04,4.780502e+04,5.050969e+04,5.337213e+04,
-5.640180e+04,5.960874e+04,6.300357e+04,6.659759e+04,7.040280e+04,7.443190e+04,7.869840e+04,
-8.321661e+04,8.800174e+04,9.306993e+04,9.843832e+04,1.041251e+05,1.101495e+05,1.165321e+05,
-1.232946e+05,1.304601e+05,1.380532e+05,1.460998e+05,1.546276e+05,1.636660e+05,1.732461e+05,
-1.834010e+05,1.941660e+05,2.055782e+05,2.176775e+05,2.305058e+05,2.441079e+05,2.585314e+05,
-2.738267e+05,2.900474e+05,3.072504e+05,3.254964e+05,3.448495e+05,3.653781e+05,3.871546e+05,
-4.102564e+05,4.347651e+05,4.607680e+05,4.883575e+05,5.176318e+05,5.486956e+05,5.816597e+05,
-6.166422e+05,6.537685e+05,6.931719e+05,7.349941e+05,7.793856e+05,8.265066e+05,8.765271e+05,
-9.296281e+05,9.860018e+05,1.045853e+06,1.109398e+06,1.176869e+06,1.248512e+06,1.324586e+06,
-1.405371e+06,1.491162e+06,1.582272e+06,1.679036e+06,1.781809e+06,1.890967e+06,2.006914e+06
-  };
-  static const G4double P06[nE]={
-1.177941e-08,2.588247e-08,4.232501e-08,6.117863e-08,8.251710e-08,1.064164e-07,1.329550e-07,
-1.622136e-07,1.942754e-07,2.292262e-07,2.671543e-07,3.081509e-07,3.523099e-07,4.005143e-07,
-4.568609e-07,5.221504e-07,5.966563e-07,6.806607e-07,7.744541e-07,8.783361e-07,9.926154e-07,
-1.117610e-06,1.253648e-06,1.407254e-06,1.585177e-06,1.788160e-06,2.016972e-06,2.272402e-06,
-2.555265e-06,2.866400e-06,3.210941e-06,3.607791e-06,4.060525e-06,4.570854e-06,5.140538e-06,
-5.771395e-06,6.471521e-06,7.274318e-06,8.187243e-06,9.213663e-06,1.035705e-05,1.162722e-05,
-1.307801e-05,1.472581e-05,1.657663e-05,1.863670e-05,2.096335e-05,2.361557e-05,2.660333e-05,
-2.993756e-05,3.371561e-05,3.801233e-05,4.284356e-05,4.826338e-05,5.444679e-05,6.143438e-05,
-6.927898e-05,7.822982e-05,8.836866e-05,9.979567e-05,1.128693e-04,1.276837e-04,1.445433e-04,
-1.638882e-04,1.858924e-04,2.113879e-04,2.406623e-04,2.749277e-04,3.149839e-04,3.626925e-04,
-4.199591e-04,4.903319e-04,5.776505e-04,6.896213e-04,8.327844e-04,1.019672e-03,1.256072e-03,
-1.545358e-03,1.876495e-03,2.234266e-03,2.599517e-03,2.965057e-03,3.327538e-03,3.688496e-03,
-4.049256e-03,4.410120e-03,4.770247e-03,5.127797e-03,5.480662e-03,5.826902e-03,6.164910e-03,
-6.493445e-03,6.811580e-03,7.118638e-03,7.414125e-03,7.697697e-03,7.969130e-03,8.228314e-03,
-8.475244e-03,8.710011e-03,8.932790e-03,9.143846e-03,9.343514e-03,9.532163e-03,9.710217e-03,
-9.878136e-03,1.003638e-02,1.018543e-02,1.032577e-02,1.045788e-02,1.058222e-02,1.069925e-02,
-1.080940e-02,1.091309e-02,1.101074e-02,1.110271e-02,1.118937e-02,1.127107e-02,1.134814e-02,
-1.142087e-02,1.148956e-02,1.155449e-02,1.161591e-02,1.167407e-02,1.172919e-02,1.178149e-02,
-1.183119e-02,1.187846e-02,1.192350e-02,1.196648e-02,1.200757e-02,1.204672e-02,1.208376e-02,
-1.211950e-02,1.215412e-02,1.218777e-02,1.222066e-02,1.225302e-02,1.228514e-02,1.231736e-02,
-1.235014e-02,1.238405e-02,1.241978e-02,1.245819e-02,1.250024e-02,1.254701e-02,1.259955e-02,
-1.265887e-02,1.272581e-02,1.280106e-02,1.288513e-02,1.297844e-02,1.308135e-02,1.319425e-02,
-1.331759e-02,1.345191e-02,1.359785e-02,1.375610e-02,1.392741e-02,1.411249e-02,1.431192e-02,
-1.452607e-02,1.475493e-02,1.499797e-02,1.525402e-02,1.552116e-02,1.579678e-02,1.607760e-02,
-1.636002e-02,1.664033e-02,1.691510e-02,1.718143e-02,1.743714e-02,1.768081e-02,1.791177e-02,
-1.812995e-02,1.833578e-02,1.853000e-02,1.871357e-02,1.888757e-02,1.905313e-02,1.921139e-02,
-1.936343e-02,1.951030e-02,1.965297e-02,1.979231e-02,1.992912e-02,2.006408e-02,2.019774e-02,
-2.033054e-02,2.046278e-02,2.059460e-02,2.072598e-02,2.085680e-02,2.098677e-02,2.111556e-02,
-2.124276e-02,2.136797e-02,2.149083e-02,2.161106e-02,2.172847e-02,2.184294e-02,2.195448e-02,
-2.206318e-02,2.216917e-02,2.227266e-02,2.237386e-02,2.247304e-02,2.257041e-02,2.266623e-02,
-2.276069e-02,2.285400e-02,2.294633e-02,2.303782e-02,2.312859e-02,2.321873e-02,2.330833e-02,
-2.339744e-02,2.348610e-02,2.357434e-02,2.366216e-02,2.374958e-02,2.383660e-02,2.392321e-02,
-2.400939e-02,2.409515e-02,2.418046e-02,2.426532e-02,2.434971e-02,2.443362e-02,2.451703e-02,
-2.459996e-02,2.468237e-02,2.476428e-02,2.484568e-02,2.492656e-02,2.500692e-02,2.508678e-02,
-2.516612e-02,2.524495e-02,2.532328e-02,2.540111e-02,2.547844e-02,2.555530e-02,2.563167e-02,
-2.570757e-02,2.578302e-02,2.585800e-02,2.593255e-02,2.600666e-02,2.608034e-02,2.615360e-02,
-2.622645e-02,2.629891e-02,2.637098e-02,2.644266e-02,2.651397e-02,2.658492e-02,2.665552e-02,
-2.672577e-02,2.679569e-02,2.686527e-02,2.693454e-02,2.700349e-02,2.707214e-02,2.714049e-02,
-2.720856e-02,2.727634e-02,2.734385e-02,2.741110e-02,2.747808e-02,2.754481e-02,2.761130e-02,
-2.767754e-02,2.774355e-02,2.780934e-02,2.787490e-02,2.794025e-02,2.800540e-02,2.807034e-02,
-2.813508e-02,2.819963e-02,2.826399e-02,2.832817e-02,2.839218e-02,2.845601e-02,2.851968e-02,
-2.858319e-02,2.864654e-02,2.870974e-02,2.877279e-02,2.883570e-02,2.889848e-02,2.896112e-02,
-2.902362e-02,2.908601e-02,2.914827e-02,2.921042e-02,2.927245e-02,2.933437e-02,2.939619e-02,
-2.945791e-02,2.951952e-02,2.958105e-02,2.964248e-02,2.970383e-02,2.976509e-02,2.982628e-02,
-2.988738e-02,2.994842e-02,3.000938e-02,3.007028e-02,3.013111e-02,3.019189e-02,3.025260e-02,
-3.031327e-02,3.037388e-02,3.043444e-02,3.049496e-02,3.055544e-02,3.061588e-02,3.067628e-02,
-3.073665e-02,3.079699e-02,3.085730e-02,3.091759e-02,3.097785e-02,3.103809e-02,3.109832e-02,
-3.115854e-02,3.121874e-02,3.127894e-02,3.133912e-02,3.139931e-02,3.145949e-02,3.151968e-02
-  };
-  static const G4double P16[nE]={
-1.804258e-08,4.051712e-08,6.777154e-08,1.002656e-07,1.384927e-07,1.829820e-07,2.343007e-07,
-2.930569e-07,3.599020e-07,4.355335e-07,5.206986e-07,6.161967e-07,7.228834e-07,8.436657e-07,
-9.900430e-07,1.165832e-06,1.373705e-06,1.616528e-06,1.897372e-06,2.219523e-06,2.586504e-06,
-3.002083e-06,3.470293e-06,4.017609e-06,4.673657e-06,5.448091e-06,6.351250e-06,7.394207e-06,
-8.588820e-06,9.947777e-06,1.150413e-05,1.335773e-05,1.554391e-05,1.809134e-05,2.103071e-05,
-2.439490e-05,2.825371e-05,3.282620e-05,3.819883e-05,4.443975e-05,5.162192e-05,5.986434e-05,
-6.958951e-05,8.099809e-05,9.423242e-05,1.094449e-04,1.271888e-04,1.480744e-04,1.723673e-04,
-2.003571e-04,2.331035e-04,2.715493e-04,3.161734e-04,3.678507e-04,4.287074e-04,4.996878e-04,
-5.819333e-04,6.787875e-04,7.920050e-04,9.236902e-04,1.079162e-03,1.260946e-03,1.474428e-03,
-1.727161e-03,2.023776e-03,2.378366e-03,2.798406e-03,3.305670e-03,3.917386e-03,4.669086e-03,
-5.599801e-03,6.779798e-03,8.289933e-03,1.028773e-02,1.292223e-02,1.646960e-02,2.109720e-02,
-2.693730e-02,3.383013e-02,4.151002e-02,4.959508e-02,5.793931e-02,6.647249e-02,7.523542e-02,
-8.426714e-02,9.358336e-02,1.031704e-01,1.129855e-01,1.229736e-01,1.330792e-01,1.432514e-01,
-1.534460e-01,1.636247e-01,1.737542e-01,1.838047e-01,1.937493e-01,2.035636e-01,2.132257e-01,
-2.227163e-01,2.320190e-01,2.411202e-01,2.500095e-01,2.586795e-01,2.671245e-01,2.753418e-01,
-2.833311e-01,2.910927e-01,2.986297e-01,3.059453e-01,3.130445e-01,3.199327e-01,3.266157e-01,
-3.331003e-01,3.393933e-01,3.455017e-01,3.514328e-01,3.571940e-01,3.627927e-01,3.682364e-01,
-3.735326e-01,3.786887e-01,3.837123e-01,3.886108e-01,3.933918e-01,3.980628e-01,4.026315e-01,
-4.071056e-01,4.114928e-01,4.158014e-01,4.200395e-01,4.242160e-01,4.283169e-01,4.323171e-01,
-4.362959e-01,4.402669e-01,4.442464e-01,4.482555e-01,4.523215e-01,4.564807e-01,4.607821e-01,
-4.652924e-01,4.701007e-01,4.753240e-01,4.811110e-01,4.876429e-01,4.951294e-01,5.037993e-01,
-5.138871e-01,5.256210e-01,5.392151e-01,5.548691e-01,5.727754e-01,5.931301e-01,6.161452e-01,
-6.420599e-01,6.711473e-01,7.037187e-01,7.401224e-01,7.807376e-01,8.259614e-01,8.761869e-01,
-9.317722e-01,9.929958e-01,1.060005e+00,1.132763e+00,1.211000e+00,1.294186e+00,1.381542e+00,
-1.472082e+00,1.564697e+00,1.658261e+00,1.751727e+00,1.844213e+00,1.935045e+00,2.023775e+00,
-2.110166e+00,2.194160e+00,2.275844e+00,2.355414e+00,2.433149e+00,2.509381e+00,2.584481e+00,
-2.658844e+00,2.732878e+00,2.806997e+00,2.881608e+00,2.957106e+00,3.033862e+00,3.112213e+00,
-3.192444e+00,3.274781e+00,3.359367e+00,3.446260e+00,3.535423e+00,3.626726e+00,3.719962e+00,
-3.814868e+00,3.911152e+00,4.008524e+00,4.106726e+00,4.205551e+00,4.304862e+00,4.404592e+00,
-4.504750e+00,4.605408e+00,4.706697e+00,4.808789e+00,4.911889e+00,5.016222e+00,5.122024e+00,
-5.229531e+00,5.338975e+00,5.450581e+00,5.564558e+00,5.681101e+00,5.800388e+00,5.922581e+00,
-6.047825e+00,6.176250e+00,6.307973e+00,6.443097e+00,6.581718e+00,6.723919e+00,6.869782e+00,
-7.019380e+00,7.172786e+00,7.330069e+00,7.491299e+00,7.656547e+00,7.825885e+00,7.999388e+00,
-8.177134e+00,8.359207e+00,8.545692e+00,8.736681e+00,8.932270e+00,9.132563e+00,9.337664e+00,
-9.547688e+00,9.762753e+00,9.982984e+00,1.020851e+01,1.043947e+01,1.067600e+01,1.091825e+01,
-1.116638e+01,1.142055e+01,1.168091e+01,1.194766e+01,1.222096e+01,1.250100e+01,1.278798e+01,
-1.308209e+01,1.338354e+01,1.369254e+01,1.400932e+01,1.433410e+01,1.466711e+01,1.500860e+01,
-1.535881e+01,1.571802e+01,1.608647e+01,1.646446e+01,1.685226e+01,1.725016e+01,1.765847e+01,
-1.807750e+01,1.850756e+01,1.894900e+01,1.940215e+01,1.986736e+01,2.034499e+01,2.083543e+01,
-2.133906e+01,2.185627e+01,2.238747e+01,2.293309e+01,2.349357e+01,2.406936e+01,2.466091e+01,
-2.526871e+01,2.589326e+01,2.653505e+01,2.719463e+01,2.787252e+01,2.856929e+01,2.928551e+01,
-3.002178e+01,3.077871e+01,3.155693e+01,3.235711e+01,3.317990e+01,3.402601e+01,3.489614e+01,
-3.579106e+01,3.671150e+01,3.765827e+01,3.863217e+01,3.963405e+01,4.066476e+01,4.172521e+01,
-4.281631e+01,4.393901e+01,4.509429e+01,4.628318e+01,4.750671e+01,4.876596e+01,5.006205e+01,
-5.139612e+01,5.276937e+01,5.418302e+01,5.563833e+01,5.713661e+01,5.867921e+01,6.026751e+01,
-6.190297e+01,6.358705e+01,6.532129e+01,6.710728e+01,6.894664e+01,7.084106e+01,7.279228e+01,
-7.480211e+01,7.687239e+01,7.900504e+01,8.120204e+01,8.346544e+01,8.579735e+01,8.819995e+01,
-9.067549e+01,9.322629e+01,9.585477e+01,9.856339e+01,1.013547e+02,1.042314e+02,1.071962e+02
-};
-  static const G4double P26[nE]={
-2.763953e-08,6.345949e-08,1.086410e-07,1.646514e-07,2.331424e-07,3.159704e-07,4.152194e-07,
-5.332258e-07,6.726060e-07,8.362873e-07,1.027541e-06,1.250021e-06,1.507800e-06,1.810470e-06,
-2.190769e-06,2.664122e-06,3.244155e-06,3.946134e-06,4.787143e-06,5.786279e-06,6.964869e-06,
-8.346712e-06,9.958338e-06,1.190868e-05,1.432794e-05,1.728288e-05,2.084815e-05,2.510710e-05,
-3.015277e-05,3.608891e-05,4.311988e-05,5.177849e-05,6.233615e-05,7.505340e-05,9.022094e-05,
-1.081628e-04,1.294330e-04,1.554788e-04,1.870999e-04,2.250498e-04,2.701684e-04,3.236600e-04,
-3.888571e-04,4.678518e-04,5.624921e-04,6.748370e-04,8.101707e-04,9.746542e-04,1.172191e-03,
-1.407177e-03,1.691031e-03,2.035063e-03,2.447271e-03,2.940049e-03,3.539047e-03,4.260131e-03,
-5.122493e-03,6.170607e-03,7.434979e-03,8.952649e-03,1.080167e-02,1.303248e-02,1.573588e-02,
-1.903802e-02,2.303667e-02,2.796869e-02,3.399608e-02,4.150621e-02,5.084875e-02,6.269354e-02,
-7.782102e-02,9.760857e-02,1.237277e-01,1.593755e-01,2.078596e-01,2.751986e-01,3.657927e-01,
-4.837016e-01,6.271917e-01,7.920609e-01,9.710429e-01,1.161533e+00,1.362429e+00,1.575182e+00,
-1.801311e+00,2.041842e+00,2.297083e+00,2.566537e+00,2.849279e+00,3.144251e+00,3.450405e+00,
-3.766771e+00,4.092464e+00,4.426651e+00,4.768529e+00,5.117305e+00,5.472190e+00,5.832406e+00,
-6.197200e+00,6.565854e+00,6.937695e+00,7.312125e+00,7.688622e+00,8.066700e+00,8.445965e+00,
-8.826109e+00,9.206837e+00,9.587977e+00,9.969349e+00,1.035087e+01,1.073249e+01,1.111417e+01,
-1.149595e+01,1.187788e+01,1.226005e+01,1.264257e+01,1.302559e+01,1.340927e+01,1.379384e+01,
-1.417951e+01,1.456656e+01,1.495527e+01,1.534597e+01,1.573905e+01,1.613491e+01,1.653401e+01,
-1.693687e+01,1.734407e+01,1.775627e+01,1.817421e+01,1.859874e+01,1.902838e+01,1.946037e+01,
-1.990328e+01,2.035890e+01,2.082955e+01,2.131826e+01,2.182915e+01,2.236781e+01,2.294202e+01,
-2.356264e+01,2.424460e+01,2.500821e+01,2.588024e+01,2.689479e+01,2.809335e+01,2.952398e+01,
-3.123968e+01,3.329659e+01,3.575267e+01,3.866763e+01,4.210424e+01,4.613052e+01,5.082266e+01,
-5.626792e+01,6.256728e+01,6.983744e+01,7.821214e+01,8.784217e+01,9.889362e+01,1.115436e+02,
-1.259725e+02,1.423521e+02,1.608289e+02,1.815051e+02,2.044192e+02,2.295289e+02,2.567044e+02,
-2.857326e+02,3.163352e+02,3.481975e+02,3.810013e+02,4.144549e+02,4.483161e+02,4.824071e+02,
-5.166161e+02,5.508948e+02,5.852521e+02,6.197460e+02,6.544766e+02,6.895795e+02,7.252210e+02,
-7.615940e+02,7.989157e+02,8.374251e+02,8.773781e+02,9.190446e+02,9.627033e+02,1.008634e+03,
-1.057108e+03,1.108378e+03,1.162661e+03,1.220133e+03,1.280910e+03,1.345053e+03,1.412558e+03,
-1.483376e+03,1.557421e+03,1.634595e+03,1.714809e+03,1.798003e+03,1.884166e+03,1.973341e+03,
-2.065641e+03,2.161241e+03,2.260386e+03,2.363376e+03,2.470569e+03,2.582365e+03,2.699205e+03,
-2.821563e+03,2.949940e+03,3.084860e+03,3.226865e+03,3.376512e+03,3.534371e+03,3.701025e+03,
-3.877070e+03,4.063111e+03,4.259770e+03,4.467683e+03,4.687502e+03,4.919903e+03,5.165583e+03,
-5.425268e+03,5.699711e+03,5.989703e+03,6.296071e+03,6.619683e+03,6.961453e+03,7.322347e+03,
-7.703383e+03,8.105638e+03,8.530251e+03,8.978428e+03,9.451447e+03,9.950663e+03,1.047751e+04,
-1.103351e+04,1.162029e+04,1.223954e+04,1.289309e+04,1.358286e+04,1.431090e+04,1.507936e+04,
-1.589056e+04,1.674691e+04,1.765102e+04,1.860561e+04,1.961359e+04,2.067805e+04,2.180224e+04,
-2.298963e+04,2.424390e+04,2.556894e+04,2.696888e+04,2.844810e+04,3.001123e+04,3.166322e+04,
-3.340927e+04,3.525492e+04,3.720606e+04,3.926890e+04,4.145005e+04,4.375653e+04,4.619574e+04,
-4.877559e+04,5.150442e+04,5.439111e+04,5.744506e+04,6.067625e+04,6.409526e+04,6.771333e+04,
-7.154238e+04,7.559504e+04,7.988472e+04,8.442567e+04,8.923299e+04,9.432270e+04,9.971181e+04,
-1.054184e+05,1.114616e+05,1.178617e+05,1.246404e+05,1.318205e+05,1.394264e+05,1.474839e+05,
-1.560204e+05,1.650649e+05,1.746485e+05,1.848038e+05,1.955658e+05,2.069713e+05,2.190597e+05,
-2.318726e+05,2.454544e+05,2.598521e+05,2.751156e+05,2.912980e+05,3.084555e+05,3.266481e+05,
-3.459394e+05,3.663968e+05,3.880920e+05,4.111014e+05,4.355058e+05,4.613913e+05,4.888493e+05,
-5.179768e+05,5.488770e+05,5.816596e+05,6.164410e+05,6.533451e+05,6.925033e+05,7.340555e+05,
-7.781503e+05,8.249455e+05,8.746091e+05,9.273193e+05,9.832659e+05,1.042650e+06,1.105687e+06,
-1.172603e+06,1.243642e+06,1.319059e+06,1.399130e+06,1.484145e+06,1.574413e+06,1.670262e+06,
-1.772044e+06,1.880129e+06,1.994914e+06,2.116817e+06,2.246287e+06,2.383799e+06,2.529858e+06
-  };
-  static const G4double P07[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,5.615850e-06,7.317061e-05,
-1.569824e-04,2.639676e-04,4.016252e-04,5.863944e-04,8.328386e-04,1.177938e-03,1.649296e-03,
-2.302400e-03,3.161734e-03,4.237816e-03,5.456960e-03,6.730797e-03,7.960891e-03,9.085925e-03,
-1.009134e-02,1.098015e-02,1.176593e-02,1.246461e-02,1.309051e-02,1.365573e-02,1.417019e-02,
-1.464189e-02,1.507718e-02,1.548101e-02,1.585724e-02,1.620889e-02,1.653832e-02,1.684741e-02,
-1.713770e-02,1.741048e-02,1.766689e-02,1.790792e-02,1.813454e-02,1.834756e-02,1.854780e-02,
-1.873604e-02,1.891300e-02,1.907937e-02,1.923580e-02,1.938293e-02,1.952135e-02,1.965163e-02,
-1.977430e-02,1.988986e-02,1.999879e-02,2.010154e-02,2.019852e-02,2.029015e-02,2.037679e-02,
-2.045879e-02,2.053649e-02,2.061020e-02,2.068021e-02,2.074680e-02,2.081022e-02,2.087073e-02,
-2.092857e-02,2.098394e-02,2.103706e-02,2.108813e-02,2.113735e-02,2.118465e-02,2.122987e-02,
-2.127393e-02,2.131701e-02,2.135933e-02,2.140114e-02,2.144273e-02,2.148447e-02,2.152683e-02,
-2.157041e-02,2.161596e-02,2.166444e-02,2.171699e-02,2.177491e-02,2.183961e-02,2.191251e-02,
-2.199488e-02,2.208782e-02,2.219215e-02,2.230849e-02,2.243729e-02,2.257897e-02,2.273395e-02,
-2.290275e-02,2.308599e-02,2.328443e-02,2.349891e-02,2.373031e-02,2.397948e-02,2.424715e-02,
-2.453375e-02,2.483929e-02,2.516314e-02,2.550390e-02,2.585931e-02,2.622620e-02,2.660061e-02,
-2.697807e-02,2.735392e-02,2.772372e-02,2.808361e-02,2.843053e-02,2.876237e-02,2.907794e-02,
-2.937688e-02,2.965945e-02,2.992642e-02,3.017888e-02,3.041812e-02,3.064554e-02,3.086254e-02,
-3.107052e-02,3.127081e-02,3.146466e-02,3.165321e-02,3.183749e-02,3.201839e-02,3.219668e-02,
-3.237296e-02,3.254769e-02,3.272115e-02,3.289347e-02,3.306460e-02,3.323440e-02,3.340257e-02,
-3.356878e-02,3.373266e-02,3.389385e-02,3.405206e-02,3.420704e-02,3.435868e-02,3.450692e-02,
-3.465181e-02,3.479348e-02,3.493210e-02,3.506790e-02,3.520114e-02,3.533207e-02,3.546095e-02,
-3.558802e-02,3.571351e-02,3.583761e-02,3.596050e-02,3.608232e-02,3.620319e-02,3.632322e-02,
-3.644246e-02,3.656098e-02,3.667881e-02,3.679597e-02,3.691248e-02,3.702833e-02,3.714354e-02,
-3.725808e-02,3.737196e-02,3.748515e-02,3.759766e-02,3.770946e-02,3.782055e-02,3.793092e-02,
-3.804056e-02,3.814948e-02,3.825765e-02,3.836510e-02,3.847181e-02,3.857779e-02,3.868304e-02,
-3.878758e-02,3.889140e-02,3.899452e-02,3.909694e-02,3.919867e-02,3.929974e-02,3.940014e-02,
-3.949989e-02,3.959900e-02,3.969749e-02,3.979536e-02,3.989264e-02,3.998933e-02,4.008545e-02,
-4.018101e-02,4.027603e-02,4.037051e-02,4.046447e-02,4.055793e-02,4.065089e-02,4.074337e-02,
-4.083538e-02,4.092693e-02,4.101803e-02,4.110870e-02,4.119895e-02,4.128879e-02,4.137822e-02,
-4.146726e-02,4.155592e-02,4.164422e-02,4.173215e-02,4.181972e-02,4.190696e-02,4.199387e-02,
-4.208045e-02,4.216671e-02,4.225267e-02,4.233834e-02,4.242371e-02,4.250880e-02,4.259361e-02,
-4.267816e-02,4.276246e-02,4.284650e-02,4.293029e-02,4.301385e-02,4.309718e-02,4.318028e-02,
-4.326316e-02,4.334584e-02,4.342831e-02,4.351058e-02,4.359266e-02,4.367456e-02,4.375627e-02,
-4.383781e-02,4.391918e-02,4.400038e-02,4.408143e-02,4.416233e-02,4.424307e-02,4.432368e-02,
-4.440415e-02,4.448448e-02,4.456469e-02,4.464477e-02,4.472474e-02,4.480460e-02,4.488434e-02,
-4.496398e-02,4.504353e-02,4.512297e-02,4.520233e-02,4.528160e-02,4.536079e-02,4.543990e-02,
-4.551894e-02,4.559790e-02,4.567681e-02,4.575564e-02,4.583443e-02,4.591315e-02,4.599183e-02,
-4.607046e-02,4.614905e-02,4.622760e-02,4.630612e-02,4.638460e-02,4.646306e-02,4.654149e-02,
-4.661990e-02,4.669829e-02,4.677667e-02,4.685504e-02,4.693340e-02,4.701176e-02,4.709012e-02
-  };
-  static const G4double P17[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,8.694188e-05,1.151450e-03,
-2.513681e-03,4.307796e-03,6.688706e-03,9.985798e-03,1.452144e-02,2.107299e-02,3.030290e-02,
-4.349128e-02,6.138684e-02,8.449316e-02,1.114863e-01,1.405633e-01,1.695167e-01,1.968221e-01,
-2.219850e-01,2.449239e-01,2.658362e-01,2.850105e-01,3.027228e-01,3.192162e-01,3.346962e-01,
-3.493314e-01,3.632567e-01,3.765775e-01,3.893736e-01,4.017050e-01,4.136155e-01,4.251374e-01,
-4.362941e-01,4.471031e-01,4.575777e-01,4.677296e-01,4.775694e-01,4.871054e-01,4.963468e-01,
-5.053029e-01,5.139821e-01,5.223946e-01,5.305490e-01,5.384555e-01,5.461239e-01,5.535637e-01,
-5.607851e-01,5.677982e-01,5.746128e-01,5.812389e-01,5.876864e-01,5.939653e-01,6.000854e-01,
-6.060565e-01,6.118886e-01,6.175915e-01,6.231750e-01,6.286492e-01,6.340241e-01,6.393099e-01,
-6.445170e-01,6.496560e-01,6.547378e-01,6.597740e-01,6.647766e-01,6.697321e-01,6.746154e-01,
-6.795190e-01,6.844617e-01,6.894666e-01,6.945629e-01,6.997888e-01,7.051949e-01,7.108496e-01,
-7.168454e-01,7.233059e-01,7.303926e-01,7.383100e-01,7.473057e-01,7.576639e-01,7.696919e-01,
-7.837012e-01,7.999913e-01,8.188394e-01,8.405009e-01,8.652194e-01,8.932419e-01,9.248353e-01,
-9.603004e-01,9.999814e-01,1.044271e+00,1.093607e+00,1.148468e+00,1.209355e+00,1.276765e+00,
-1.351156e+00,1.432891e+00,1.522179e+00,1.619010e+00,1.723096e+00,1.833831e+00,1.950298e+00,
-2.071307e+00,2.195490e+00,2.321415e+00,2.447717e+00,2.573196e+00,2.696895e+00,2.818133e+00,
-2.936495e+00,3.051807e+00,3.164089e+00,3.273524e+00,3.380405e+00,3.485116e+00,3.588094e+00,
-3.689814e+00,3.790775e+00,3.891483e+00,3.992439e+00,4.094131e+00,4.197019e+00,4.301527e+00,
-4.408024e+00,4.516815e+00,4.628125e+00,4.742085e+00,4.858732e+00,4.978006e+00,5.099759e+00,
-5.223773e+00,5.349792e+00,5.477539e+00,5.606756e+00,5.737222e+00,5.868772e+00,6.001315e+00,
-6.134829e+00,6.269367e+00,6.405046e+00,6.542037e+00,6.680554e+00,6.820840e+00,6.963154e+00,
-7.107768e+00,7.254950e+00,7.404963e+00,7.558058e+00,7.714470e+00,7.874417e+00,8.038099e+00,
-8.205696e+00,8.377371e+00,8.553273e+00,8.733533e+00,8.918273e+00,9.107605e+00,9.301632e+00,
-9.500452e+00,9.704160e+00,9.912848e+00,1.012661e+01,1.034554e+01,1.056973e+01,1.079929e+01,
-1.103432e+01,1.127492e+01,1.152121e+01,1.177333e+01,1.203138e+01,1.229551e+01,1.256585e+01,
-1.284257e+01,1.312581e+01,1.341573e+01,1.371252e+01,1.401634e+01,1.432738e+01,1.464584e+01,
-1.497192e+01,1.530584e+01,1.564780e+01,1.599804e+01,1.635679e+01,1.672429e+01,1.710079e+01,
-1.748656e+01,1.788187e+01,1.828699e+01,1.870221e+01,1.912783e+01,1.956415e+01,2.001149e+01,
-2.047018e+01,2.094055e+01,2.142296e+01,2.191775e+01,2.242530e+01,2.294600e+01,2.348023e+01,
-2.402840e+01,2.459093e+01,2.516825e+01,2.576081e+01,2.636905e+01,2.699347e+01,2.763453e+01,
-2.829276e+01,2.896865e+01,2.966276e+01,3.037563e+01,3.110782e+01,3.185993e+01,3.263256e+01,
-3.342632e+01,3.424188e+01,3.507988e+01,3.594100e+01,3.682597e+01,3.773550e+01,3.867034e+01,
-3.963126e+01,4.061907e+01,4.163459e+01,4.267867e+01,4.375217e+01,4.485602e+01,4.599113e+01,
-4.715847e+01,4.835904e+01,4.959386e+01,5.086399e+01,5.217051e+01,5.351455e+01,5.489727e+01,
-5.631988e+01,5.778360e+01,5.928972e+01,6.083956e+01,6.243446e+01,6.407585e+01,6.576516e+01,
-6.750389e+01,6.929358e+01,7.113583e+01,7.303229e+01,7.498465e+01,7.699466e+01,7.906413e+01,
-8.119494e+01,8.338901e+01,8.564834e+01,8.797497e+01,9.037104e+01,9.283874e+01,9.538033e+01,
-9.799814e+01,1.006946e+02,1.034722e+02,1.063335e+02,1.092812e+02,1.123179e+02,1.154467e+02,
-1.186703e+02,1.219918e+02,1.254143e+02,1.289411e+02,1.325755e+02,1.363208e+02,1.401808e+02
-  };
-  static const G4double P27[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.345993e-03,1.812154e-02,
-4.026430e-02,7.035354e-02,1.115368e-01,1.703760e-01,2.538581e-01,3.782461e-01,5.589961e-01,
-8.253354e-01,1.198038e+00,1.694231e+00,2.291935e+00,2.955705e+00,3.637254e+00,4.300026e+00,
-4.929838e+00,5.521904e+00,6.078501e+00,6.604750e+00,7.106030e+00,7.587357e+00,8.053179e+00,
-8.507290e+00,8.952817e+00,9.392248e+00,9.827489e+00,1.025995e+01,1.069061e+01,1.112015e+01,
-1.154897e+01,1.197730e+01,1.240524e+01,1.283285e+01,1.326014e+01,1.368706e+01,1.411358e+01,
-1.453973e+01,1.496547e+01,1.539087e+01,1.581597e+01,1.624088e+01,1.666572e+01,1.709063e+01,
-1.751579e+01,1.794142e+01,1.836777e+01,1.879512e+01,1.922377e+01,1.965407e+01,2.008642e+01,
-2.052125e+01,2.095904e+01,2.140031e+01,2.184566e+01,2.229574e+01,2.275125e+01,2.321300e+01,
-2.368188e+01,2.415886e+01,2.464505e+01,2.514170e+01,2.565021e+01,2.616939e+01,2.669677e+01,
-2.724263e+01,2.780976e+01,2.840169e+01,2.902295e+01,2.967960e+01,3.037978e+01,3.113466e+01,
-3.195970e+01,3.287602e+01,3.391207e+01,3.510515e+01,3.650240e+01,3.816072e+01,4.014549e+01,
-4.252816e+01,4.538374e+01,4.878905e+01,5.282265e+01,5.756664e+01,6.310963e+01,6.955058e+01,
-7.700256e+01,8.559606e+01,9.548163e+01,1.068314e+02,1.198391e+02,1.347180e+02,1.516961e+02,
-1.710065e+02,1.928734e+02,2.174931e+02,2.450103e+02,2.754950e+02,3.089205e+02,3.451524e+02,
-3.839498e+02,4.249834e+02,4.678667e+02,5.121950e+02,5.575832e+02,6.036977e+02,6.502788e+02,
-6.971481e+02,7.442078e+02,7.914355e+02,8.388753e+02,8.866283e+02,9.348447e+02,9.837162e+02,
-1.033470e+03,1.084366e+03,1.136689e+03,1.190749e+03,1.246871e+03,1.305393e+03,1.366657e+03,
-1.430999e+03,1.498741e+03,1.570174e+03,1.645547e+03,1.725059e+03,1.808851e+03,1.897003e+03,
-1.989542e+03,2.086454e+03,2.187703e+03,2.293252e+03,2.403083e+03,2.517218e+03,2.635733e+03,
-2.758773e+03,2.886552e+03,3.019360e+03,3.157558e+03,3.301573e+03,3.451893e+03,3.609055e+03,
-3.773646e+03,3.946289e+03,4.127639e+03,4.318381e+03,4.519221e+03,4.730887e+03,4.954126e+03,
-5.189702e+03,5.438396e+03,5.701012e+03,5.978373e+03,6.271328e+03,6.580753e+03,6.907557e+03,
-7.252683e+03,7.617117e+03,8.001887e+03,8.408074e+03,8.836812e+03,9.289295e+03,9.766784e+03,
-1.027061e+04,1.080218e+04,1.136297e+04,1.195458e+04,1.257866e+04,1.323698e+04,1.393143e+04,
-1.466398e+04,1.543675e+04,1.625197e+04,1.711202e+04,1.801940e+04,1.897679e+04,1.998700e+04,
-2.105305e+04,2.217810e+04,2.336552e+04,2.461890e+04,2.594203e+04,2.733891e+04,2.881382e+04,
-3.037128e+04,3.201606e+04,3.375326e+04,3.558825e+04,3.752676e+04,3.957482e+04,4.173887e+04,
-4.402572e+04,4.644258e+04,4.899711e+04,5.169743e+04,5.455215e+04,5.757040e+04,6.076187e+04,
-6.413682e+04,6.770616e+04,7.148143e+04,7.547490e+04,7.969957e+04,8.416924e+04,8.889853e+04,
-9.390298e+04,9.919906e+04,1.048042e+05,1.107370e+05,1.170172e+05,1.236655e+05,1.307042e+05,
-1.381568e+05,1.460482e+05,1.544049e+05,1.632551e+05,1.726285e+05,1.825569e+05,1.930738e+05,
-2.042150e+05,2.160183e+05,2.285240e+05,2.417748e+05,2.558161e+05,2.706959e+05,2.864654e+05,
-3.031790e+05,3.208942e+05,3.396723e+05,3.595783e+05,3.806813e+05,4.030546e+05,4.267761e+05,
-4.519286e+05,4.786000e+05,5.068836e+05,5.368787e+05,5.686906e+05,6.024313e+05,6.382197e+05,
-6.761823e+05,7.164532e+05,7.591751e+05,8.044997e+05,8.525881e+05,9.036114e+05,9.577516e+05,
-1.015202e+06,1.076168e+06,1.140869e+06,1.209535e+06,1.282415e+06,1.359770e+06,1.441879e+06,
-1.529038e+06,1.621562e+06,1.719787e+06,1.824068e+06,1.934784e+06,2.052338e+06,2.177156e+06,
-2.309695e+06,2.450437e+06,2.599897e+06,2.758623e+06,2.927195e+06,3.106232e+06,3.296392e+06
-  };
-  static const G4double P08[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,5.850394e-06,3.813802e-05,7.678856e-05,1.235890e-04,
-1.811834e-04,2.505496e-04,3.370214e-04,4.423119e-04,5.737849e-04,7.362470e-04,9.394324e-04,
-1.193306e-03,1.512903e-03,1.914433e-03,2.424835e-03,3.067238e-03,3.887084e-03,4.914388e-03,
-6.198077e-03,7.742119e-03,9.530727e-03,1.145750e-02,1.342370e-02,1.532690e-02,1.710499e-02,
-1.873750e-02,2.022106e-02,2.156321e-02,2.277662e-02,2.387485e-02,2.487089e-02,2.577662e-02,
-2.660257e-02,2.735786e-02,2.805033e-02,2.868661e-02,2.927238e-02,2.981248e-02,3.031106e-02,
-3.077178e-02,3.119783e-02,3.159205e-02,3.195707e-02,3.229527e-02,3.260875e-02,3.289948e-02,
-3.316932e-02,3.341990e-02,3.365279e-02,3.386940e-02,3.407105e-02,3.425896e-02,3.443423e-02,
-3.459791e-02,3.475094e-02,3.489419e-02,3.502849e-02,3.515456e-02,3.527311e-02,3.538476e-02,
-3.549011e-02,3.558968e-02,3.568400e-02,3.577351e-02,3.585865e-02,3.593982e-02,3.601738e-02,
-3.609170e-02,3.616308e-02,3.623182e-02,3.629822e-02,3.636254e-02,3.642405e-02,3.648154e-02,
-3.653815e-02,3.659408e-02,3.664961e-02,3.670503e-02,3.676072e-02,3.681714e-02,3.687490e-02,
-3.693479e-02,3.699783e-02,3.706528e-02,3.713867e-02,3.721973e-02,3.731032e-02,3.741226e-02,
-3.752719e-02,3.765644e-02,3.780102e-02,3.796161e-02,3.813871e-02,3.833276e-02,3.854422e-02,
-3.877367e-02,3.902186e-02,3.928968e-02,3.957815e-02,3.988836e-02,4.022139e-02,4.057812e-02,
-4.095916e-02,4.136456e-02,4.179369e-02,4.224495e-02,4.271572e-02,4.320224e-02,4.369977e-02,
-4.420281e-02,4.470553e-02,4.520218e-02,4.568761e-02,4.615755e-02,4.660887e-02,4.703959e-02,
-4.744879e-02,4.783646e-02,4.820329e-02,4.855044e-02,4.887942e-02,4.919191e-02,4.948968e-02,
-4.977449e-02,5.004805e-02,5.031198e-02,5.056777e-02,5.081677e-02,5.106018e-02,5.129904e-02,
-5.153419e-02,5.176632e-02,5.199590e-02,5.222324e-02,5.244845e-02,5.267151e-02,5.289225e-02,
-5.311040e-02,5.332567e-02,5.353771e-02,5.374625e-02,5.395103e-02,5.415190e-02,5.434879e-02,
-5.454172e-02,5.473078e-02,5.491615e-02,5.509804e-02,5.527672e-02,5.545245e-02,5.562552e-02,
-5.579619e-02,5.596472e-02,5.613134e-02,5.629624e-02,5.645961e-02,5.662158e-02,5.678228e-02,
-5.694179e-02,5.710018e-02,5.725750e-02,5.741379e-02,5.756906e-02,5.772332e-02,5.787658e-02,
-5.802884e-02,5.818008e-02,5.833029e-02,5.847948e-02,5.862764e-02,5.877475e-02,5.892081e-02,
-5.906581e-02,5.920977e-02,5.935267e-02,5.949453e-02,5.963535e-02,5.977514e-02,5.991390e-02,
-6.005165e-02,6.018840e-02,6.032417e-02,6.045897e-02,6.059282e-02,6.072574e-02,6.085774e-02,
-6.098884e-02,6.111906e-02,6.124841e-02,6.137693e-02,6.150463e-02,6.163152e-02,6.175763e-02,
-6.188297e-02,6.200757e-02,6.213144e-02,6.225460e-02,6.237706e-02,6.249886e-02,6.261999e-02,
-6.274049e-02,6.286037e-02,6.297964e-02,6.309831e-02,6.321642e-02,6.333396e-02,6.345096e-02,
-6.356743e-02,6.368338e-02,6.379883e-02,6.391380e-02,6.402828e-02,6.414231e-02,6.425588e-02,
-6.436902e-02,6.448173e-02,6.459402e-02,6.470592e-02,6.481742e-02,6.492854e-02,6.503929e-02,
-6.514969e-02,6.525973e-02,6.536943e-02,6.547880e-02,6.558786e-02,6.569660e-02,6.580504e-02,
-6.591318e-02,6.602104e-02,6.612863e-02,6.623595e-02,6.634300e-02,6.644981e-02,6.655637e-02,
-6.666270e-02,6.676880e-02,6.687467e-02,6.698034e-02,6.708579e-02,6.719105e-02,6.729611e-02,
-6.740099e-02,6.750569e-02,6.761022e-02,6.771458e-02,6.781878e-02,6.792283e-02,6.802673e-02,
-6.813049e-02,6.823412e-02,6.833761e-02,6.844098e-02,6.854423e-02,6.864738e-02,6.875041e-02,
-6.885334e-02,6.895618e-02,6.905893e-02,6.916159e-02,6.926418e-02,6.936669e-02,6.946912e-02,
-6.957150e-02,6.967381e-02,6.977607e-02,6.987829e-02,6.998045e-02,7.008258e-02,7.018467e-02,
-7.028673e-02,7.038876e-02,7.049077e-02,7.059277e-02,7.069475e-02,7.079672e-02,7.089869e-02
-};
-  static const G4double P18[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,6.824362e-05,4.522706e-04,9.266015e-04,1.519331e-03,
-2.271897e-03,3.207104e-03,4.409961e-03,5.920914e-03,7.867568e-03,1.034890e-02,1.355071e-02,
-1.767709e-02,2.303624e-02,2.998068e-02,3.908692e-02,5.090796e-02,6.646885e-02,8.657934e-02,
-1.124957e-01,1.446424e-01,1.830426e-01,2.256984e-01,2.705794e-01,3.153773e-01,3.585357e-01,
-3.993962e-01,4.376870e-01,4.734083e-01,5.067098e-01,5.377891e-01,5.668544e-01,5.941073e-01,
-6.197329e-01,6.438952e-01,6.667360e-01,6.883758e-01,7.089162e-01,7.284426e-01,7.470277e-01,
-7.647338e-01,7.816149e-01,7.977194e-01,8.130925e-01,8.277769e-01,8.418093e-01,8.552264e-01,
-8.680643e-01,8.803545e-01,8.921305e-01,9.034214e-01,9.142574e-01,9.246668e-01,9.346759e-01,
-9.443113e-01,9.535980e-01,9.625599e-01,9.712203e-01,9.796014e-01,9.877249e-01,9.956119e-01,
-1.003283e+00,1.010757e+00,1.018054e+00,1.025193e+00,1.032192e+00,1.039071e+00,1.045846e+00,
-1.052537e+00,1.059162e+00,1.065739e+00,1.072287e+00,1.078824e+00,1.085267e+00,1.091476e+00,
-1.097776e+00,1.104194e+00,1.110761e+00,1.117517e+00,1.124514e+00,1.131820e+00,1.139531e+00,
-1.147772e+00,1.156712e+00,1.166573e+00,1.177631e+00,1.190221e+00,1.204723e+00,1.221543e+00,
-1.241088e+00,1.263744e+00,1.289862e+00,1.319764e+00,1.353751e+00,1.392131e+00,1.435238e+00,
-1.483446e+00,1.537190e+00,1.596963e+00,1.663320e+00,1.736867e+00,1.818241e+00,1.908081e+00,
-2.006982e+00,2.115434e+00,2.233748e+00,2.361978e+00,2.499847e+00,2.646693e+00,2.801459e+00,
-2.962731e+00,3.128831e+00,3.297953e+00,3.468314e+00,3.638292e+00,3.806530e+00,3.972005e+00,
-4.134030e+00,4.292233e+00,4.446513e+00,4.596991e+00,4.743962e+00,4.887846e+00,5.029151e+00,
-5.168447e+00,5.306340e+00,5.443454e+00,5.580411e+00,5.717819e+00,5.856258e+00,5.996267e+00,
-6.138329e+00,6.282856e+00,6.430177e+00,6.580525e+00,6.734031e+00,6.890722e+00,7.050529e+00,
-7.213302e+00,7.378833e+00,7.546883e+00,7.717208e+00,7.889591e+00,8.063859e+00,8.239901e+00,
-8.417680e+00,8.597232e+00,8.778664e+00,8.962146e+00,9.147902e+00,9.336191e+00,9.527301e+00,
-9.721535e+00,9.919203e+00,1.012061e+01,1.032605e+01,1.053580e+01,1.075013e+01,1.096928e+01,
-1.119347e+01,1.142290e+01,1.165776e+01,1.189822e+01,1.214442e+01,1.239652e+01,1.265463e+01,
-1.291891e+01,1.318945e+01,1.346640e+01,1.374986e+01,1.403997e+01,1.433686e+01,1.464064e+01,
-1.495148e+01,1.526949e+01,1.559485e+01,1.592771e+01,1.626825e+01,1.661662e+01,1.697304e+01,
-1.733768e+01,1.771076e+01,1.809249e+01,1.848310e+01,1.888282e+01,1.929190e+01,1.971059e+01,
-2.013915e+01,2.057787e+01,2.102702e+01,2.148690e+01,2.195783e+01,2.244012e+01,2.293409e+01,
-2.344009e+01,2.395847e+01,2.448959e+01,2.503383e+01,2.559158e+01,2.616323e+01,2.674919e+01,
-2.734990e+01,2.796580e+01,2.859733e+01,2.924496e+01,2.990918e+01,3.059048e+01,3.128937e+01,
-3.200638e+01,3.274207e+01,3.349698e+01,3.427170e+01,3.506682e+01,3.588297e+01,3.672077e+01,
-3.758087e+01,3.846397e+01,3.937074e+01,4.030190e+01,4.125820e+01,4.224040e+01,4.324928e+01,
-4.428566e+01,4.535037e+01,4.644426e+01,4.756824e+01,4.872322e+01,4.991015e+01,5.112999e+01,
-5.238376e+01,5.367249e+01,5.499726e+01,5.635916e+01,5.775935e+01,5.919898e+01,6.067929e+01,
-6.220151e+01,6.376694e+01,6.537690e+01,6.703278e+01,6.873600e+01,7.048801e+01,7.229032e+01,
-7.414450e+01,7.605215e+01,7.801493e+01,8.003455e+01,8.211279e+01,8.425146e+01,8.645245e+01,
-8.871771e+01,9.104924e+01,9.344911e+01,9.591946e+01,9.846249e+01,1.010805e+02,1.037758e+02,
-1.065509e+02,1.094082e+02,1.123504e+02,1.153801e+02,1.185000e+02,1.217131e+02,1.250223e+02,
-1.284306e+02,1.319411e+02,1.355571e+02,1.392819e+02,1.431190e+02,1.470720e+02,1.511445e+02,
-1.553403e+02,1.596635e+02,1.641179e+02,1.687079e+02,1.734378e+02,1.783119e+02,1.833351e+02
-  };
-  static const G4double P28[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,7.960502e-04,5.364017e-03,1.118562e-02,1.869316e-02,
-2.852749e-02,4.113714e-02,5.787072e-02,7.955515e-02,1.083806e-01,1.462818e-01,1.967401e-01,
-2.638146e-01,3.536865e-01,4.737998e-01,6.362798e-01,8.538194e-01,1.149192e+00,1.542907e+00,
-2.066174e+00,2.735516e+00,3.560003e+00,4.504415e+00,5.528958e+00,6.583511e+00,7.631145e+00,
-8.653933e+00,9.642298e+00,1.059309e+01,1.150711e+01,1.238671e+01,1.323493e+01,1.405501e+01,
-1.485012e+01,1.562315e+01,1.637661e+01,1.711263e+01,1.783294e+01,1.853896e+01,1.923178e+01,
-1.991230e+01,2.058123e+01,2.123916e+01,2.188666e+01,2.252430e+01,2.315250e+01,2.377173e+01,
-2.438256e+01,2.498540e+01,2.558088e+01,2.616948e+01,2.675181e+01,2.732849e+01,2.790012e+01,
-2.846739e+01,2.903101e+01,2.959170e+01,3.015023e+01,3.070742e+01,3.126414e+01,3.182130e+01,
-3.237989e+01,3.294094e+01,3.350557e+01,3.407498e+01,3.465046e+01,3.523340e+01,3.582530e+01,
-3.642781e+01,3.704271e+01,3.767193e+01,3.831763e+01,3.898218e+01,3.965715e+01,4.032768e+01,
-4.102906e+01,4.176548e+01,4.254216e+01,4.336573e+01,4.424489e+01,4.519125e+01,4.622060e+01,
-4.735458e+01,4.862267e+01,5.006425e+01,5.173064e+01,5.368618e+01,5.600789e+01,5.878339e+01,
-6.210756e+01,6.607900e+01,7.079781e+01,7.636571e+01,8.288853e+01,9.048030e+01,9.926829e+01,
-1.093979e+02,1.210367e+02,1.343782e+02,1.496435e+02,1.670814e+02,1.869668e+02,2.095939e+02,
-2.352665e+02,2.642811e+02,2.969039e+02,3.333440e+02,3.737232e+02,4.180489e+02,4.661957e+02,
-5.179023e+02,5.727873e+02,6.303818e+02,6.901743e+02,7.516590e+02,8.143781e+02,8.779563e+02,
-9.421156e+02,1.006680e+03,1.071573e+03,1.136805e+03,1.202469e+03,1.268723e+03,1.335784e+03,
-1.403917e+03,1.473430e+03,1.544668e+03,1.618005e+03,1.693837e+03,1.772579e+03,1.854654e+03,
-1.940482e+03,2.030475e+03,2.125017e+03,2.224456e+03,2.329092e+03,2.439170e+03,2.554874e+03,
-2.676334e+03,2.803633e+03,2.936826e+03,3.075954e+03,3.221074e+03,3.372272e+03,3.529685e+03,
-3.693517e+03,3.864050e+03,4.041643e+03,4.226743e+03,4.419872e+03,4.621628e+03,4.832678e+03,
-5.053744e+03,5.285606e+03,5.529085e+03,5.785043e+03,6.054376e+03,6.338009e+03,6.636897e+03,
-6.952019e+03,7.284382e+03,7.635021e+03,8.005001e+03,8.395420e+03,8.807417e+03,9.242171e+03,
-9.700911e+03,1.018492e+04,1.069554e+04,1.123417e+04,1.180231e+04,1.240150e+04,1.303339e+04,
-1.369971e+04,1.440231e+04,1.514313e+04,1.592423e+04,1.674777e+04,1.761608e+04,1.853161e+04,
-1.949694e+04,2.051483e+04,2.158819e+04,2.272013e+04,2.391392e+04,2.517305e+04,2.650119e+04,
-2.790227e+04,2.938043e+04,3.094006e+04,3.258584e+04,3.432269e+04,3.615588e+04,3.809095e+04,
-4.013379e+04,4.229066e+04,4.456817e+04,4.697334e+04,4.951363e+04,5.219692e+04,5.503158e+04,
-5.802649e+04,6.119106e+04,6.453527e+04,6.806970e+04,7.180556e+04,7.575476e+04,7.992991e+04,
-8.434440e+04,8.901242e+04,9.394902e+04,9.917018e+04,1.046928e+05,1.105349e+05,1.167156e+05,
-1.232549e+05,1.301745e+05,1.374970e+05,1.452466e+05,1.534490e+05,1.621312e+05,1.713222e+05,
-1.810526e+05,1.913548e+05,2.022635e+05,2.138150e+05,2.260484e+05,2.390048e+05,2.527280e+05,
-2.672645e+05,2.826635e+05,2.989775e+05,3.162621e+05,3.345761e+05,3.539825e+05,3.745475e+05,
-3.963420e+05,4.194409e+05,4.439240e+05,4.698758e+05,4.973862e+05,5.265506e+05,5.574705e+05,
-5.902534e+05,6.250137e+05,6.618730e+05,7.009603e+05,7.424127e+05,7.863758e+05,8.330043e+05,
-8.824628e+05,9.349258e+05,9.905789e+05,1.049619e+06,1.112257e+06,1.178714e+06,1.249227e+06,
-1.324048e+06,1.403444e+06,1.487699e+06,1.577115e+06,1.672012e+06,1.772733e+06,1.879639e+06,
-1.993117e+06,2.113574e+06,2.241448e+06,2.377201e+06,2.521325e+06,2.674344e+06,2.836814e+06,
-3.009326e+06,3.192510e+06,3.387034e+06,3.593610e+06,3.812994e+06,4.045989e+06,4.293452e+06
-  };
-  static const G4double P09[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,7.515803e-06,1.731827e-05,
-2.874685e-05,4.278170e-05,6.015953e-05,8.098262e-05,1.059240e-04,1.374744e-04,1.760954e-04,
-2.225746e-04,2.816669e-04,3.547278e-04,4.438203e-04,5.576081e-04,6.979665e-04,8.731555e-04,
-1.095439e-03,1.369207e-03,1.718647e-03,2.151439e-03,2.698367e-03,3.379582e-03,4.229614e-03,
-5.283815e-03,6.581892e-03,8.166275e-03,1.007243e-02,1.232577e-02,1.488678e-02,1.770487e-02,
-2.061095e-02,2.348657e-02,2.621326e-02,2.873192e-02,3.102728e-02,3.310043e-02,3.496870e-02,
-3.665237e-02,3.817043e-02,3.954315e-02,4.078897e-02,4.192379e-02,4.296125e-02,4.391292e-02,
-4.478859e-02,4.559645e-02,4.634342e-02,4.703529e-02,4.767699e-02,4.827277e-02,4.882633e-02,
-4.934096e-02,4.981961e-02,5.026497e-02,5.067957e-02,5.106575e-02,5.142564e-02,5.176126e-02,
-5.207454e-02,5.236721e-02,5.264095e-02,5.289729e-02,5.313769e-02,5.336347e-02,5.357588e-02,
-5.377608e-02,5.396514e-02,5.414407e-02,5.431378e-02,5.447513e-02,5.462891e-02,5.477585e-02,
-5.491664e-02,5.505189e-02,5.518220e-02,5.530808e-02,5.543004e-02,5.554853e-02,5.566397e-02,
-5.577674e-02,5.588719e-02,5.599565e-02,5.610241e-02,5.620776e-02,5.631089e-02,5.641045e-02,
-5.650990e-02,5.660948e-02,5.670951e-02,5.681040e-02,5.691268e-02,5.701709e-02,5.712461e-02,
-5.723655e-02,5.735463e-02,5.748102e-02,5.761830e-02,5.776937e-02,5.793723e-02,5.812477e-02,
-5.833443e-02,5.856813e-02,5.882715e-02,5.911232e-02,5.942417e-02,5.976317e-02,6.012990e-02,
-6.052514e-02,6.094997e-02,6.140573e-02,6.189398e-02,6.241639e-02,6.297464e-02,6.357021e-02,
-6.420419e-02,6.487694e-02,6.558787e-02,6.633509e-02,6.711523e-02,6.792326e-02,6.875260e-02,
-6.959533e-02,7.044270e-02,7.128573e-02,7.211586e-02,7.292555e-02,7.370873e-02,7.446102e-02,
-7.517973e-02,7.586367e-02,7.651297e-02,7.712872e-02,7.771273e-02,7.826729e-02,7.879494e-02,
-7.929835e-02,7.978018e-02,8.024301e-02,8.068929e-02,8.112124e-02,8.154090e-02,8.195006e-02,
-8.235029e-02,8.274289e-02,8.312891e-02,8.350916e-02,8.388422e-02,8.425443e-02,8.461996e-02,
-8.498082e-02,8.533691e-02,8.568805e-02,8.603405e-02,8.637472e-02,8.670993e-02,8.703958e-02,
-8.736369e-02,8.768234e-02,8.799567e-02,8.830390e-02,8.860731e-02,8.890618e-02,8.920084e-02,
-8.949159e-02,8.977874e-02,9.006257e-02,9.034333e-02,9.062125e-02,9.089651e-02,9.116928e-02,
-9.143968e-02,9.170781e-02,9.197375e-02,9.223754e-02,9.249923e-02,9.275884e-02,9.301639e-02,
-9.327188e-02,9.352532e-02,9.377671e-02,9.402605e-02,9.427335e-02,9.451861e-02,9.476185e-02,
-9.500306e-02,9.524227e-02,9.547949e-02,9.571474e-02,9.594804e-02,9.617943e-02,9.640892e-02,
-9.663655e-02,9.686235e-02,9.708636e-02,9.730860e-02,9.752912e-02,9.774795e-02,9.796512e-02,
-9.818069e-02,9.839467e-02,9.860712e-02,9.881806e-02,9.902755e-02,9.923560e-02,9.944226e-02,
-9.964757e-02,9.985156e-02,1.000543e-01,1.002557e-01,1.004560e-01,1.006550e-01,1.008529e-01,
-1.010497e-01,1.012454e-01,1.014400e-01,1.016336e-01,1.018262e-01,1.020178e-01,1.022085e-01,
-1.023982e-01,1.025870e-01,1.027750e-01,1.029621e-01,1.031484e-01,1.033339e-01,1.035186e-01,
-1.037025e-01,1.038858e-01,1.040682e-01,1.042500e-01,1.044311e-01,1.046116e-01,1.047914e-01,
-1.049706e-01,1.051492e-01,1.053272e-01,1.055046e-01,1.056815e-01,1.058578e-01,1.060337e-01,
-1.062090e-01,1.063838e-01,1.065581e-01,1.067320e-01,1.069054e-01,1.070784e-01,1.072510e-01,
-1.074231e-01,1.075949e-01,1.077663e-01,1.079373e-01,1.081079e-01,1.082783e-01,1.084482e-01,
-1.086179e-01,1.087872e-01,1.089563e-01,1.091250e-01,1.092935e-01,1.094617e-01,1.096296e-01,
-1.097973e-01,1.099648e-01,1.101320e-01,1.102990e-01,1.104659e-01,1.106325e-01,1.107989e-01,
-1.109651e-01,1.111312e-01,1.112971e-01,1.114629e-01,1.116285e-01,1.117940e-01,1.119593e-01,
-1.121246e-01,1.122897e-01,1.124547e-01,1.126197e-01,1.127845e-01,1.129493e-01,1.131140e-01,
-1.132786e-01,1.134432e-01,1.136078e-01,1.137723e-01,1.139367e-01,1.141012e-01,1.142656e-01
-  };
-  static const G4double P19[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,5.927935e-05,1.389914e-04,
-2.349414e-04,3.566209e-04,5.121431e-04,7.045053e-04,9.423805e-04,1.252973e-03,1.645359e-03,
-2.132778e-03,2.772367e-03,3.588379e-03,4.615362e-03,5.968874e-03,7.691507e-03,9.910494e-03,
-1.281519e-02,1.650640e-02,2.136751e-02,2.757845e-02,3.567673e-02,4.608131e-02,5.947584e-02,
-7.661025e-02,9.837506e-02,1.257751e-01,1.597774e-01,2.012338e-01,2.498273e-01,3.049689e-01,
-3.636123e-01,4.234494e-01,4.819630e-01,5.377010e-01,5.900857e-01,6.388778e-01,6.842212e-01,
-7.263609e-01,7.655421e-01,8.020772e-01,8.362684e-01,8.683839e-01,8.986585e-01,9.272944e-01,
-9.544631e-01,9.803078e-01,1.004947e+00,1.028478e+00,1.050980e+00,1.072520e+00,1.093154e+00,
-1.112933e+00,1.131898e+00,1.150092e+00,1.167553e+00,1.184321e+00,1.200431e+00,1.215920e+00,
-1.230825e+00,1.245180e+00,1.259022e+00,1.272384e+00,1.285302e+00,1.297810e+00,1.309940e+00,
-1.321726e+00,1.333200e+00,1.344393e+00,1.355338e+00,1.366064e+00,1.376603e+00,1.386983e+00,
-1.397235e+00,1.407387e+00,1.417470e+00,1.427510e+00,1.437537e+00,1.447579e+00,1.457663e+00,
-1.467817e+00,1.478068e+00,1.488444e+00,1.498973e+00,1.509682e+00,1.520485e+00,1.531238e+00,
-1.542307e+00,1.553733e+00,1.565564e+00,1.577862e+00,1.590714e+00,1.604236e+00,1.618589e+00,
-1.633991e+00,1.650739e+00,1.669215e+00,1.689901e+00,1.713363e+00,1.740235e+00,1.771177e+00,
-1.806833e+00,1.847794e+00,1.894587e+00,1.947683e+00,2.007527e+00,2.074576e+00,2.149333e+00,
-2.232374e+00,2.324368e+00,2.426086e+00,2.538395e+00,2.662248e+00,2.798655e+00,2.948644e+00,
-3.113195e+00,3.293165e+00,3.489174e+00,3.701503e+00,3.929974e+00,4.173863e+00,4.431848e+00,
-4.702026e+00,4.982009e+00,5.269084e+00,5.560423e+00,5.853292e+00,6.145244e+00,6.434268e+00,
-6.718845e+00,6.997954e+00,7.271040e+00,7.537949e+00,7.798855e+00,8.054192e+00,8.304585e+00,
-8.550792e+00,8.793666e+00,9.034113e+00,9.273058e+00,9.511420e+00,9.750093e+00,9.989927e+00,
-1.023171e+01,1.047615e+01,1.072385e+01,1.097533e+01,1.123096e+01,1.149102e+01,1.175565e+01,
-1.202490e+01,1.229872e+01,1.257701e+01,1.285961e+01,1.314639e+01,1.343720e+01,1.373195e+01,
-1.403061e+01,1.433323e+01,1.463991e+01,1.495084e+01,1.526627e+01,1.558650e+01,1.591187e+01,
-1.624276e+01,1.657956e+01,1.692265e+01,1.727242e+01,1.762926e+01,1.799350e+01,1.836549e+01,
-1.874553e+01,1.913392e+01,1.953093e+01,1.993678e+01,2.035173e+01,2.077597e+01,2.120973e+01,
-2.165319e+01,2.210656e+01,2.257002e+01,2.304378e+01,2.352804e+01,2.402301e+01,2.452891e+01,
-2.504595e+01,2.557440e+01,2.611448e+01,2.666648e+01,2.723067e+01,2.780733e+01,2.839679e+01,
-2.899935e+01,2.961537e+01,3.024518e+01,3.088917e+01,3.154771e+01,3.222121e+01,3.291007e+01,
-3.361474e+01,3.433567e+01,3.507331e+01,3.582815e+01,3.660069e+01,3.739145e+01,3.820096e+01,
-3.902978e+01,3.987847e+01,4.074762e+01,4.163784e+01,4.254976e+01,4.348402e+01,4.444130e+01,
-4.542228e+01,4.642768e+01,4.745822e+01,4.851467e+01,4.959779e+01,5.070840e+01,5.184732e+01,
-5.301540e+01,5.421353e+01,5.544261e+01,5.670357e+01,5.799738e+01,5.932503e+01,6.068754e+01,
-6.208597e+01,6.352141e+01,6.499498e+01,6.650784e+01,6.806117e+01,6.965620e+01,7.129421e+01,
-7.297649e+01,7.470440e+01,7.647932e+01,7.830269e+01,8.017598e+01,8.210072e+01,8.407848e+01,
-8.611087e+01,8.819958e+01,9.034631e+01,9.255287e+01,9.482106e+01,9.715280e+01,9.955002e+01,
-1.020148e+02,1.045491e+02,1.071551e+02,1.098351e+02,1.125913e+02,1.154261e+02,1.183418e+02,
-1.213411e+02,1.244265e+02,1.276007e+02,1.308664e+02,1.342265e+02,1.376838e+02,1.412415e+02,
-1.449027e+02,1.486706e+02,1.525485e+02,1.565399e+02,1.606483e+02,1.648774e+02,1.692309e+02,
-1.737129e+02,1.783272e+02,1.830781e+02,1.879699e+02,1.930070e+02,1.981940e+02,2.035356e+02,
-2.090368e+02,2.147025e+02,2.205380e+02,2.265486e+02,2.327400e+02,2.391178e+02,2.456880e+02,
-2.524567e+02,2.594302e+02,2.666150e+02,2.740179e+02,2.816459e+02,2.895062e+02,2.976061e+02
-  };
-  static const G4double P29[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,4.675863e-04,1.115848e-03,
-1.921474e-03,2.976502e-03,4.368459e-03,6.145635e-03,8.414529e-03,1.147236e-02,1.545930e-02,
-2.057119e-02,2.749440e-02,3.660912e-02,4.844832e-02,6.454972e-02,8.569351e-02,1.138020e-01,
-1.517623e-01,2.015348e-01,2.691639e-01,3.583034e-01,4.782232e-01,6.371509e-01,8.482346e-01,
-1.126750e+00,1.491709e+00,1.965598e+00,2.572184e+00,3.334953e+00,4.257053e+00,5.336097e+00,
-6.519588e+00,7.764801e+00,9.020575e+00,1.025416e+01,1.144977e+01,1.259820e+01,1.369879e+01,
-1.475356e+01,1.576491e+01,1.673737e+01,1.767581e+01,1.858475e+01,1.946828e+01,2.033001e+01,
-2.117302e+01,2.199989e+01,2.281269e+01,2.361303e+01,2.440215e+01,2.518099e+01,2.595023e+01,
-2.671041e+01,2.746196e+01,2.820524e+01,2.894070e+01,2.966884e+01,3.039005e+01,3.110491e+01,
-3.181409e+01,3.251822e+01,3.321818e+01,3.391476e+01,3.460900e+01,3.530194e+01,3.599472e+01,
-3.668862e+01,3.738499e+01,3.808532e+01,3.879119e+01,3.950432e+01,4.022655e+01,4.095989e+01,
-4.170647e+01,4.246862e+01,4.324879e+01,4.404966e+01,4.487409e+01,4.572515e+01,4.660610e+01,
-4.752048e+01,4.847204e+01,4.946482e+01,5.050316e+01,5.159177e+01,5.272361e+01,5.388496e+01,
-5.511729e+01,5.642837e+01,5.782761e+01,5.932695e+01,6.094192e+01,6.269331e+01,6.460937e+01,
-6.672884e+01,6.910427e+01,7.180553e+01,7.492262e+01,7.856680e+01,8.286884e+01,8.797459e+01,
-9.403866e+01,1.012187e+02,1.096725e+02,1.195593e+02,1.310443e+02,1.443066e+02,1.595468e+02,
-1.769950e+02,1.969173e+02,2.196207e+02,2.454567e+02,2.748218e+02,3.081551e+02,3.459309e+02,
-3.886448e+02,4.367924e+02,4.908381e+02,5.511773e+02,6.180927e+02,6.917113e+02,7.719694e+02,
-8.585945e+02,9.511118e+02,1.048877e+03,1.151132e+03,1.257071e+03,1.365912e+03,1.476962e+03,
-1.589651e+03,1.703560e+03,1.818425e+03,1.934131e+03,2.050699e+03,2.168274e+03,2.287105e+03,
-2.407530e+03,2.529963e+03,2.654887e+03,2.782834e+03,2.914378e+03,3.050129e+03,3.190720e+03,
-3.336794e+03,3.488995e+03,3.647955e+03,3.814276e+03,3.988525e+03,4.171219e+03,4.362818e+03,
-4.563730e+03,4.774309e+03,4.994874e+03,5.225720e+03,5.467141e+03,5.719453e+03,5.983016e+03,
-6.258253e+03,6.545669e+03,6.845863e+03,7.159534e+03,7.487485e+03,7.830622e+03,8.189944e+03,
-8.566547e+03,8.961603e+03,9.376365e+03,9.812149e+03,1.027033e+04,1.075235e+04,1.125969e+04,
-1.179388e+04,1.235652e+04,1.294923e+04,1.357370e+04,1.423170e+04,1.492505e+04,1.565562e+04,
-1.642541e+04,1.723648e+04,1.809099e+04,1.899122e+04,1.993956e+04,2.093854e+04,2.199082e+04,
-2.309921e+04,2.426670e+04,2.549643e+04,2.679175e+04,2.815618e+04,2.959348e+04,3.110761e+04,
-3.270279e+04,3.438349e+04,3.615442e+04,3.802062e+04,3.998739e+04,4.206039e+04,4.424559e+04,
-4.654932e+04,4.897832e+04,5.153970e+04,5.424101e+04,5.709028e+04,6.009598e+04,6.326712e+04,
-6.661323e+04,7.014443e+04,7.387144e+04,7.780561e+04,8.195901e+04,8.634439e+04,9.097530e+04,
-9.586609e+04,1.010320e+05,1.064891e+05,1.122546e+05,1.183466e+05,1.247843e+05,1.315882e+05,
-1.387798e+05,1.463820e+05,1.544194e+05,1.629175e+05,1.719038e+05,1.814074e+05,1.914589e+05,
-2.020912e+05,2.133387e+05,2.252383e+05,2.378290e+05,2.511522e+05,2.652516e+05,2.801740e+05,
-2.959687e+05,3.126882e+05,3.303881e+05,3.491275e+05,3.689692e+05,3.899795e+05,4.122292e+05,
-4.357933e+05,4.607512e+05,4.871874e+05,5.151917e+05,5.448592e+05,5.762909e+05,6.095943e+05,
-6.448833e+05,6.822787e+05,7.219092e+05,7.639111e+05,8.084294e+05,8.556178e+05,9.056399e+05,
-9.586691e+05,1.014890e+06,1.074498e+06,1.137701e+06,1.204721e+06,1.275792e+06,1.351163e+06,
-1.431099e+06,1.515882e+06,1.605811e+06,1.701204e+06,1.802397e+06,1.909751e+06,2.023645e+06,
-2.144486e+06,2.272704e+06,2.408756e+06,2.553128e+06,2.706338e+06,2.868935e+06,3.041503e+06,
-3.224662e+06,3.419071e+06,3.625434e+06,3.844494e+06,4.077045e+06,4.323928e+06,4.586041e+06,
-4.864335e+06,5.159824e+06,5.473583e+06,5.806757e+06,6.160565e+06,6.536300e+06,6.935340e+06
-  };
-  static const G4double P010[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-1.420000e-05,4.701887e-05,8.694089e-05,1.341836e-04,1.940077e-04,2.718261e-04,3.681895e-04,
-4.837658e-04,6.323004e-04,8.240919e-04,1.060464e-03,1.350967e-03,1.731360e-03,2.208133e-03,
-2.792245e-03,3.550245e-03,4.501045e-03,5.670796e-03,7.167402e-03,9.014729e-03,1.129037e-02,
-1.410796e-02,1.749772e-02,2.157807e-02,2.639241e-02,3.199085e-02,3.841369e-02,4.559250e-02,
-5.345748e-02,6.167108e-02,6.986856e-02,7.767193e-02,8.480019e-02,9.117305e-02,9.677277e-02,
-1.016834e-01,1.059752e-01,1.097284e-01,1.130297e-01,1.159373e-01,1.185096e-01,1.207998e-01,
-1.228498e-01,1.246924e-01,1.263587e-01,1.278743e-01,1.292600e-01,1.305329e-01,1.317074e-01,
-1.327952e-01,1.338059e-01,1.347478e-01,1.356275e-01,1.364508e-01,1.372227e-01,1.379475e-01,
-1.386291e-01,1.392709e-01,1.398763e-01,1.404481e-01,1.409894e-01,1.415026e-01,1.419903e-01,
-1.424548e-01,1.428983e-01,1.433229e-01,1.437305e-01,1.441228e-01,1.445015e-01,1.448681e-01,
-1.452240e-01,1.455704e-01,1.459086e-01,1.462395e-01,1.465641e-01,1.468832e-01,1.471976e-01,
-1.475078e-01,1.478144e-01,1.481178e-01,1.484184e-01,1.487165e-01,1.490123e-01,1.493060e-01,
-1.495976e-01,1.498872e-01,1.501749e-01,1.504606e-01,1.507445e-01,1.510251e-01,1.513010e-01,
-1.515759e-01,1.518503e-01,1.521247e-01,1.524003e-01,1.526783e-01,1.529609e-01,1.532511e-01,
-1.535529e-01,1.538711e-01,1.542117e-01,1.545816e-01,1.549877e-01,1.554367e-01,1.559341e-01,
-1.564842e-01,1.570896e-01,1.577520e-01,1.584720e-01,1.592503e-01,1.600875e-01,1.609849e-01,
-1.619445e-01,1.629686e-01,1.640604e-01,1.652234e-01,1.664613e-01,1.677779e-01,1.691764e-01,
-1.706592e-01,1.722273e-01,1.738801e-01,1.756140e-01,1.774230e-01,1.792977e-01,1.812255e-01,
-1.831911e-01,1.851767e-01,1.871639e-01,1.891341e-01,1.910700e-01,1.929567e-01,1.947824e-01,
-1.965384e-01,1.982195e-01,1.998234e-01,2.013502e-01,2.028018e-01,2.041820e-01,2.054950e-01,
-2.067461e-01,2.079405e-01,2.090837e-01,2.101810e-01,2.112372e-01,2.122572e-01,2.132451e-01,
-2.142048e-01,2.151398e-01,2.160530e-01,2.169469e-01,2.178237e-01,2.186851e-01,2.195325e-01,
-2.203669e-01,2.211890e-01,2.219995e-01,2.227987e-01,2.235869e-01,2.243642e-01,2.251309e-01,
-2.258871e-01,2.266330e-01,2.273689e-01,2.280950e-01,2.288117e-01,2.295194e-01,2.302182e-01,
-2.309088e-01,2.315914e-01,2.322663e-01,2.329339e-01,2.335944e-01,2.342481e-01,2.348952e-01,
-2.355358e-01,2.361701e-01,2.367983e-01,2.374202e-01,2.380361e-01,2.386460e-01,2.392499e-01,
-2.398478e-01,2.404398e-01,2.410260e-01,2.416063e-01,2.421808e-01,2.427496e-01,2.433128e-01,
-2.438703e-01,2.444223e-01,2.449688e-01,2.455100e-01,2.460459e-01,2.465767e-01,2.471023e-01,
-2.476231e-01,2.481389e-01,2.486500e-01,2.491565e-01,2.496584e-01,2.501560e-01,2.506492e-01,
-2.511383e-01,2.516232e-01,2.521042e-01,2.525813e-01,2.530547e-01,2.535244e-01,2.539906e-01,
-2.544533e-01,2.549127e-01,2.553688e-01,2.558217e-01,2.562715e-01,2.567184e-01,2.571623e-01,
-2.576034e-01,2.580418e-01,2.584775e-01,2.589107e-01,2.593413e-01,2.597694e-01,2.601952e-01,
-2.606187e-01,2.610399e-01,2.614590e-01,2.618760e-01,2.622909e-01,2.627038e-01,2.631147e-01,
-2.635238e-01,2.639311e-01,2.643365e-01,2.647403e-01,2.651423e-01,2.655427e-01,2.659416e-01,
-2.663389e-01,2.667347e-01,2.671291e-01,2.675220e-01,2.679136e-01,2.683038e-01,2.686928e-01,
-2.690805e-01,2.694670e-01,2.698523e-01,2.702364e-01,2.706195e-01,2.710015e-01,2.713824e-01,
-2.717623e-01,2.721413e-01,2.725193e-01,2.728963e-01,2.732725e-01,2.736479e-01,2.740223e-01,
-2.743960e-01,2.747690e-01,2.751411e-01,2.755126e-01,2.758833e-01,2.762534e-01,2.766228e-01,
-2.769916e-01,2.773598e-01,2.777275e-01,2.780946e-01,2.784611e-01,2.788272e-01,2.791927e-01,
-2.795578e-01,2.799225e-01,2.802868e-01,2.806506e-01,2.810141e-01,2.813772e-01,2.817400e-01,
-2.821025e-01,2.824646e-01,2.828265e-01,2.831881e-01,2.835495e-01,2.839107e-01,2.842716e-01,
-2.846324e-01,2.849930e-01,2.853535e-01,2.857138e-01,2.860740e-01,2.864341e-01,2.867942e-01
-  };
-  static const G4double P110[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-9.591763e-05,3.231969e-04,6.087125e-04,9.576234e-04,1.414059e-03,2.027041e-03,2.810721e-03,
-3.781121e-03,5.069066e-03,6.785649e-03,8.969373e-03,1.174027e-02,1.548527e-02,2.032949e-02,
-2.645527e-02,3.465992e-02,4.527966e-02,5.876373e-02,7.656597e-02,9.923844e-02,1.280600e-01,
-1.648770e-01,2.105763e-01,2.673302e-01,3.364120e-01,4.192864e-01,5.173684e-01,6.304481e-01,
-7.582455e-01,8.958848e-01,1.037582e+00,1.176684e+00,1.307744e+00,1.428590e+00,1.538109e+00,
-1.637162e+00,1.726448e+00,1.806975e+00,1.880027e+00,1.946380e+00,2.006917e+00,2.062500e+00,
-2.113806e+00,2.161365e+00,2.205714e+00,2.247309e+00,2.286523e+00,2.323671e+00,2.359012e+00,
-2.392761e+00,2.425097e+00,2.456165e+00,2.486085e+00,2.514957e+00,2.542866e+00,2.569884e+00,
-2.596079e+00,2.621512e+00,2.646242e+00,2.670327e+00,2.693830e+00,2.716805e+00,2.739313e+00,
-2.761415e+00,2.783170e+00,2.804641e+00,2.825886e+00,2.846969e+00,2.867949e+00,2.888885e+00,
-2.909838e+00,2.930865e+00,2.952023e+00,2.973366e+00,2.994948e+00,3.016818e+00,3.039026e+00,
-3.061616e+00,3.084631e+00,3.108110e+00,3.132088e+00,3.156597e+00,3.181666e+00,3.207319e+00,
-3.233578e+00,3.260461e+00,3.287985e+00,3.316164e+00,3.345014e+00,3.374420e+00,3.404208e+00,
-3.434812e+00,3.466295e+00,3.498755e+00,3.532340e+00,3.567273e+00,3.603879e+00,3.642620e+00,
-3.684134e+00,3.729263e+00,3.779065e+00,3.834802e+00,3.897876e+00,3.969744e+00,4.051813e+00,
-4.145355e+00,4.251473e+00,4.371124e+00,4.505184e+00,4.654526e+00,4.820112e+00,5.003050e+00,
-5.204640e+00,5.426399e+00,5.670065e+00,5.937583e+00,6.231072e+00,6.552772e+00,6.904959e+00,
-7.289825e+00,7.709327e+00,8.164993e+00,8.657708e+00,9.187498e+00,9.753341e+00,1.035304e+01,
-1.098318e+01,1.163929e+01,1.231599e+01,1.300745e+01,1.370769e+01,1.441103e+01,1.511244e+01,
-1.580777e+01,1.649383e+01,1.716840e+01,1.783020e+01,1.847874e+01,1.911420e+01,1.973730e+01,
-2.034918e+01,2.095125e+01,2.154514e+01,2.213262e+01,2.271548e+01,2.329555e+01,2.387461e+01,
-2.445438e+01,2.503650e+01,2.562246e+01,2.621364e+01,2.681125e+01,2.741634e+01,2.802980e+01,
-2.865235e+01,2.928457e+01,2.992690e+01,3.057966e+01,3.124314e+01,3.191753e+01,3.260304e+01,
-3.329988e+01,3.400829e+01,3.472857e+01,3.546106e+01,3.620616e+01,3.696434e+01,3.773610e+01,
-3.852199e+01,3.932257e+01,4.013841e+01,4.097009e+01,4.181816e+01,4.268318e+01,4.356564e+01,
-4.446606e+01,4.538488e+01,4.632254e+01,4.727946e+01,4.825604e+01,4.925267e+01,5.026972e+01,
-5.130758e+01,5.236662e+01,5.344725e+01,5.454987e+01,5.567490e+01,5.682280e+01,5.799403e+01,
-5.918909e+01,6.040851e+01,6.165285e+01,6.292269e+01,6.421865e+01,6.554139e+01,6.689158e+01,
-6.826996e+01,6.967727e+01,7.111431e+01,7.258189e+01,7.408087e+01,7.561215e+01,7.717665e+01,
-7.877533e+01,8.040918e+01,8.207925e+01,8.378660e+01,8.553234e+01,8.731762e+01,8.914361e+01,
-9.101153e+01,9.292265e+01,9.487827e+01,9.687973e+01,9.892841e+01,1.010257e+02,1.031732e+02,
-1.053723e+02,1.076245e+02,1.099316e+02,1.122952e+02,1.147170e+02,1.171987e+02,1.197421e+02,
-1.223492e+02,1.250219e+02,1.277621e+02,1.305719e+02,1.334534e+02,1.364088e+02,1.394403e+02,
-1.425502e+02,1.457410e+02,1.490151e+02,1.523749e+02,1.558232e+02,1.593625e+02,1.629957e+02,
-1.667257e+02,1.705553e+02,1.744876e+02,1.785257e+02,1.826729e+02,1.869325e+02,1.913079e+02,
-1.958027e+02,2.004204e+02,2.051650e+02,2.100402e+02,2.150500e+02,2.201987e+02,2.254904e+02,
-2.309295e+02,2.365206e+02,2.422684e+02,2.481777e+02,2.542534e+02,2.605007e+02,2.669250e+02,
-2.735316e+02,2.803262e+02,2.873146e+02,2.945029e+02,3.018973e+02,3.095041e+02,3.173299e+02,
-3.253817e+02,3.336664e+02,3.421912e+02,3.509637e+02,3.599917e+02,3.692831e+02,3.788461e+02,
-3.886893e+02,3.988214e+02,4.092516e+02,4.199893e+02,4.310440e+02,4.424257e+02,4.541449e+02,
-4.662121e+02,4.786383e+02,4.914349e+02,5.046135e+02,5.181864e+02,5.321660e+02,5.465652e+02,
-5.613974e+02,5.766763e+02,5.924161e+02,6.086315e+02,6.253377e+02,6.425504e+02,6.602857e+02
-  };
-  static const G4double P210[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-6.479160e-04,2.222020e-03,4.264157e-03,6.841262e-03,1.032399e-02,1.515291e-02,2.152677e-02,
-2.967511e-02,4.084384e-02,5.620899e-02,7.638501e-02,1.028167e-01,1.396897e-01,1.889132e-01,
-2.531616e-01,3.419767e-01,4.606012e-01,6.160489e-01,8.278253e-01,1.106110e+00,1.471173e+00,
-1.952294e+00,2.568440e+00,3.357900e+00,4.349247e+00,5.576148e+00,7.074057e+00,8.855419e+00,
-1.093215e+01,1.323883e+01,1.568832e+01,1.816813e+01,2.057800e+01,2.286974e+01,2.501187e+01,
-2.701003e+01,2.886770e+01,3.059561e+01,3.221218e+01,3.372653e+01,3.515134e+01,3.650043e+01,
-3.778462e+01,3.901221e+01,4.019267e+01,4.133432e+01,4.244420e+01,4.352833e+01,4.459184e+01,
-4.563906e+01,4.667362e+01,4.769852e+01,4.871621e+01,4.972874e+01,5.073786e+01,5.174512e+01,
-5.275195e+01,5.375980e+01,5.477015e+01,5.578467e+01,5.680527e+01,5.783387e+01,5.887274e+01,
-5.992444e+01,6.099162e+01,6.207742e+01,6.318504e+01,6.431812e+01,6.548052e+01,6.667634e+01,
-6.791004e+01,6.918632e+01,7.051016e+01,7.188680e+01,7.332174e+01,7.482073e+01,7.638975e+01,
-7.803498e+01,7.976279e+01,8.157970e+01,8.349240e+01,8.550769e+01,8.763244e+01,8.987365e+01,
-9.223838e+01,9.473382e+01,9.736730e+01,1.001464e+02,1.030792e+02,1.061603e+02,1.093776e+02,
-1.127846e+02,1.163971e+02,1.202362e+02,1.243305e+02,1.287201e+02,1.334613e+02,1.386334e+02,
-1.443459e+02,1.507468e+02,1.580279e+02,1.664268e+02,1.762236e+02,1.877291e+02,2.012708e+02,
-2.171791e+02,2.357799e+02,2.573961e+02,2.823579e+02,3.110181e+02,3.437701e+02,3.810638e+02,
-4.234203e+02,4.714435e+02,5.258289e+02,5.873688e+02,6.569534e+02,7.355652e+02,8.242650e+02,
-9.241665e+02,1.036396e+03,1.162036e+03,1.302054e+03,1.457221e+03,1.628023e+03,1.814588e+03,
-2.016629e+03,2.233434e+03,2.463894e+03,2.706587e+03,2.959889e+03,3.222102e+03,3.491605e+03,
-3.766953e+03,4.046947e+03,4.330688e+03,4.617582e+03,4.907339e+03,5.199952e+03,5.495663e+03,
-5.794940e+03,6.098442e+03,6.406997e+03,6.721566e+03,7.043226e+03,7.373149e+03,7.712587e+03,
-8.062854e+03,8.425307e+03,8.801331e+03,9.192321e+03,9.599669e+03,1.002475e+04,1.046890e+04,
-1.093345e+04,1.141964e+04,1.192874e+04,1.246195e+04,1.302049e+04,1.360562e+04,1.421860e+04,
-1.486078e+04,1.553362e+04,1.623867e+04,1.697762e+04,1.775231e+04,1.856473e+04,1.941702e+04,
-2.031147e+04,2.125054e+04,2.223681e+04,2.327300e+04,2.436195e+04,2.550666e+04,2.671021e+04,
-2.797583e+04,2.930685e+04,3.070674e+04,3.217911e+04,3.372772e+04,3.535650e+04,3.706952e+04,
-3.887109e+04,4.076570e+04,4.275810e+04,4.485325e+04,4.705643e+04,4.937318e+04,5.180937e+04,
-5.437120e+04,5.706526e+04,5.989850e+04,6.287829e+04,6.601245e+04,6.930926e+04,7.277750e+04,
-7.642649e+04,8.026610e+04,8.430679e+04,8.855965e+04,9.303645e+04,9.774966e+04,1.027125e+05,
-1.079389e+05,1.134438e+05,1.192429e+05,1.253529e+05,1.317915e+05,1.385774e+05,1.457304e+05,
-1.532716e+05,1.612234e+05,1.696092e+05,1.784543e+05,1.877851e+05,1.976298e+05,2.080182e+05,
-2.189820e+05,2.305546e+05,2.427716e+05,2.556706e+05,2.692916e+05,2.836769e+05,2.988713e+05,
-3.149225e+05,3.318808e+05,3.497998e+05,3.687362e+05,3.887501e+05,4.099053e+05,4.322695e+05,
-4.559143e+05,4.809159e+05,5.073551e+05,5.353173e+05,5.648935e+05,5.961799e+05,6.292788e+05,
-6.642985e+05,7.013543e+05,7.405681e+05,7.820695e+05,8.259959e+05,8.724933e+05,9.217165e+05,
-9.738297e+05,1.029007e+06,1.087434e+06,1.149308e+06,1.214835e+06,1.284239e+06,1.357754e+06,
-1.435629e+06,1.518129e+06,1.605537e+06,1.698150e+06,1.796285e+06,1.900280e+06,2.010491e+06,
-2.127300e+06,2.251108e+06,2.382345e+06,2.521465e+06,2.668952e+06,2.825320e+06,2.991112e+06,
-3.166910e+06,3.353328e+06,3.551019e+06,3.760679e+06,3.983046e+06,4.218903e+06,4.469084e+06,
-4.734475e+06,5.016015e+06,5.314705e+06,5.631606e+06,5.967849e+06,6.324634e+06,6.703234e+06,
-7.105007e+06,7.531392e+06,7.983922e+06,8.464224e+06,8.974029e+06,9.515176e+06,1.008962e+07,
-1.069945e+07,1.134686e+07,1.203421e+07,1.276399e+07,1.353888e+07,1.436168e+07,1.523540e+07
-  };
-  static const G4double P011[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,8.561707e-05,1.906331e-04,3.154098e-04,
-4.819877e-04,6.963055e-04,9.598242e-04,1.274050e-03,1.676401e-03,2.205375e-03,2.864847e-03,
-3.659508e-03,4.684845e-03,6.012414e-03,7.651465e-03,9.662871e-03,1.227193e-02,1.552037e-02,
-1.946512e-02,2.442244e-02,3.048669e-02,3.773801e-02,4.644389e-02,5.668052e-02,6.855143e-02,
-8.219187e-02,9.763501e-02,1.147626e-01,1.335674e-01,1.528473e-01,1.718772e-01,1.898295e-01,
-2.058575e-01,2.199478e-01,2.320907e-01,2.425378e-01,2.514765e-01,2.591877e-01,2.658072e-01,
-2.715525e-01,2.765412e-01,2.808940e-01,2.847237e-01,2.881029e-01,2.911027e-01,2.937862e-01,
-2.962019e-01,2.983884e-01,3.003811e-01,3.022094e-01,3.038971e-01,3.054638e-01,3.069258e-01,
-3.082963e-01,3.095866e-01,3.108058e-01,3.119616e-01,3.130607e-01,3.141086e-01,3.151103e-01,
-3.160703e-01,3.169924e-01,3.178803e-01,3.187374e-01,3.195668e-01,3.203714e-01,3.211538e-01,
-3.219164e-01,3.226615e-01,3.233911e-01,3.241070e-01,3.248106e-01,3.255035e-01,3.261867e-01,
-3.268613e-01,3.275281e-01,3.281876e-01,3.288405e-01,3.294869e-01,3.301272e-01,3.307613e-01,
-3.313894e-01,3.320112e-01,3.326266e-01,3.332354e-01,3.338373e-01,3.344320e-01,3.350193e-01,
-3.355989e-01,3.361705e-01,3.367340e-01,3.372893e-01,3.378364e-01,3.383744e-01,3.389023e-01,
-3.394248e-01,3.399435e-01,3.404607e-01,3.409797e-01,3.415051e-01,3.420432e-01,3.426019e-01,
-3.431912e-01,3.438227e-01,3.445089e-01,3.452623e-01,3.460940e-01,3.470130e-01,3.480253e-01,
-3.491345e-01,3.503420e-01,3.516483e-01,3.530539e-01,3.545595e-01,3.561672e-01,3.578801e-01,
-3.597024e-01,3.616397e-01,3.636979e-01,3.658841e-01,3.682050e-01,3.706672e-01,3.732763e-01,
-3.760363e-01,3.789488e-01,3.820118e-01,3.852192e-01,3.885601e-01,3.920181e-01,3.955715e-01,
-3.991939e-01,4.028554e-01,4.065239e-01,4.101673e-01,4.137552e-01,4.172611e-01,4.206628e-01,
-4.239442e-01,4.270940e-01,4.301065e-01,4.329801e-01,4.357169e-01,4.383219e-01,4.408018e-01,
-4.431646e-01,4.454194e-01,4.475751e-01,4.496409e-01,4.516255e-01,4.535373e-01,4.553840e-01,
-4.571727e-01,4.589098e-01,4.606012e-01,4.622520e-01,4.638665e-01,4.654485e-01,4.670014e-01,
-4.685277e-01,4.700296e-01,4.715090e-01,4.729673e-01,4.744057e-01,4.758250e-01,4.772260e-01,
-4.786094e-01,4.799758e-01,4.813257e-01,4.826595e-01,4.839778e-01,4.852810e-01,4.865695e-01,
-4.878438e-01,4.891042e-01,4.903511e-01,4.915848e-01,4.928055e-01,4.940135e-01,4.952088e-01,
-4.963917e-01,4.975623e-01,4.987206e-01,4.998667e-01,5.010006e-01,5.021224e-01,5.032320e-01,
-5.043297e-01,5.054154e-01,5.064892e-01,5.075511e-01,5.086014e-01,5.096401e-01,5.106674e-01,
-5.116834e-01,5.126883e-01,5.136823e-01,5.146656e-01,5.156384e-01,5.166009e-01,5.175533e-01,
-5.184958e-01,5.194287e-01,5.203523e-01,5.212667e-01,5.221722e-01,5.230690e-01,5.239574e-01,
-5.248375e-01,5.257097e-01,5.265740e-01,5.274309e-01,5.282804e-01,5.291227e-01,5.299582e-01,
-5.307869e-01,5.316092e-01,5.324250e-01,5.332348e-01,5.340385e-01,5.348365e-01,5.356289e-01,
-5.364158e-01,5.371974e-01,5.379738e-01,5.387453e-01,5.395119e-01,5.402738e-01,5.410311e-01,
-5.417840e-01,5.425326e-01,5.432770e-01,5.440173e-01,5.447537e-01,5.454863e-01,5.462151e-01,
-5.469403e-01,5.476620e-01,5.483803e-01,5.490953e-01,5.498071e-01,5.505157e-01,5.512213e-01,
-5.519240e-01,5.526238e-01,5.533208e-01,5.540151e-01,5.547068e-01,5.553960e-01,5.560827e-01,
-5.567669e-01,5.574489e-01,5.581286e-01,5.588061e-01,5.594815e-01,5.601548e-01,5.608261e-01,
-5.614955e-01,5.621630e-01,5.628287e-01,5.634926e-01,5.641548e-01,5.648154e-01,5.654744e-01,
-5.661318e-01,5.667877e-01,5.674422e-01,5.680953e-01,5.687470e-01,5.693975e-01,5.700467e-01,
-5.706946e-01,5.713415e-01,5.719872e-01,5.726318e-01,5.732754e-01,5.739180e-01,5.745597e-01,
-5.752004e-01,5.758403e-01,5.764794e-01,5.771176e-01,5.777552e-01,5.783920e-01,5.790281e-01,
-5.796636e-01,5.802985e-01,5.809328e-01,5.815666e-01,5.821998e-01,5.828326e-01,5.834650e-01,
-5.840970e-01,5.847286e-01,5.853599e-01,5.859909e-01,5.866216e-01,5.872521e-01,5.878823e-01
-  };
-  static const G4double P111[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,5.209548e-04,1.180711e-03,1.990663e-03,
-3.107743e-03,4.592002e-03,6.476688e-03,8.797445e-03,1.186734e-02,1.603420e-02,2.139747e-02,
-2.806967e-02,3.696045e-02,4.884261e-02,6.398504e-02,8.316995e-02,1.088558e-01,1.418609e-01,
-1.832285e-01,2.368826e-01,3.046122e-01,3.881885e-01,4.917300e-01,6.173520e-01,7.676664e-01,
-9.458741e-01,1.154034e+00,1.392213e+00,1.661998e+00,1.947285e+00,2.237778e+00,2.520414e+00,
-2.780710e+00,3.016745e+00,3.226555e+00,3.412755e+00,3.577076e+00,3.723291e+00,3.852749e+00,
-3.968634e+00,4.072420e+00,4.165812e+00,4.250554e+00,4.327670e+00,4.398270e+00,4.463397e+00,
-4.523860e+00,4.580294e+00,4.633332e+00,4.683510e+00,4.731274e+00,4.776995e+00,4.820987e+00,
-4.863513e+00,4.904792e+00,4.945010e+00,4.984323e+00,5.022866e+00,5.060755e+00,5.098099e+00,
-5.134994e+00,5.171534e+00,5.207809e+00,5.243910e+00,5.279928e+00,5.315948e+00,5.352059e+00,
-5.388348e+00,5.424899e+00,5.461794e+00,5.499112e+00,5.536929e+00,5.575317e+00,5.614339e+00,
-5.654057e+00,5.694526e+00,5.735793e+00,5.777899e+00,5.820879e+00,5.864759e+00,5.909560e+00,
-5.955296e+00,6.001974e+00,6.049594e+00,6.098153e+00,6.147641e+00,6.198045e+00,6.249350e+00,
-6.301538e+00,6.354593e+00,6.408503e+00,6.463261e+00,6.518875e+00,6.575240e+00,6.632248e+00,
-6.690414e+00,6.749930e+00,6.811096e+00,6.874363e+00,6.940381e+00,7.010064e+00,7.084648e+00,
-7.165738e+00,7.255305e+00,7.355625e+00,7.469147e+00,7.598323e+00,7.745430e+00,7.912453e+00,
-8.101065e+00,8.312698e+00,8.548675e+00,8.810356e+00,9.099276e+00,9.417241e+00,9.766397e+00,
-1.014926e+01,1.056874e+01,1.102811e+01,1.153097e+01,1.208119e+01,1.268281e+01,1.333988e+01,
-1.405626e+01,1.483537e+01,1.567986e+01,1.659126e+01,1.756967e+01,1.861338e+01,1.971876e+01,
-2.088013e+01,2.208995e+01,2.333920e+01,2.461789e+01,2.591570e+01,2.722262e+01,2.852960e+01,
-2.982889e+01,3.111433e+01,3.238135e+01,3.362699e+01,3.484969e+01,3.604911e+01,3.722590e+01,
-3.838153e+01,3.951805e+01,4.063795e+01,4.174401e+01,4.283916e+01,4.392643e+01,4.500884e+01,
-4.608939e+01,4.717095e+01,4.825627e+01,4.934793e+01,5.044832e+01,5.155962e+01,5.268381e+01,
-5.382263e+01,5.497760e+01,5.615006e+01,5.734118e+01,5.855195e+01,5.978329e+01,6.103600e+01,
-6.231082e+01,6.360849e+01,6.492971e+01,6.627522e+01,6.764576e+01,6.904207e+01,7.046495e+01,
-7.191516e+01,7.339351e+01,7.490076e+01,7.643768e+01,7.800500e+01,7.960342e+01,8.123360e+01,
-8.289618e+01,8.459176e+01,8.632091e+01,8.808419e+01,8.988213e+01,9.171528e+01,9.358418e+01,
-9.548939e+01,9.743150e+01,9.941112e+01,1.014289e+02,1.034855e+02,1.055817e+02,1.077184e+02,
-1.098962e+02,1.121162e+02,1.143792e+02,1.166864e+02,1.190388e+02,1.214375e+02,1.238837e+02,
-1.263787e+02,1.289239e+02,1.315205e+02,1.341702e+02,1.368742e+02,1.396344e+02,1.424522e+02,
-1.453293e+02,1.482676e+02,1.512688e+02,1.543349e+02,1.574678e+02,1.606694e+02,1.639419e+02,
-1.672875e+02,1.707082e+02,1.742066e+02,1.777848e+02,1.814453e+02,1.851906e+02,1.890234e+02,
-1.929462e+02,1.969619e+02,2.010732e+02,2.052830e+02,2.095944e+02,2.140105e+02,2.185344e+02,
-2.231694e+02,2.279189e+02,2.327864e+02,2.377754e+02,2.428897e+02,2.481330e+02,2.535094e+02,
-2.590228e+02,2.646774e+02,2.704774e+02,2.764274e+02,2.825319e+02,2.887956e+02,2.952232e+02,
-3.018199e+02,3.085907e+02,3.155410e+02,3.226763e+02,3.300021e+02,3.375242e+02,3.452488e+02,
-3.531820e+02,3.613300e+02,3.696996e+02,3.782975e+02,3.871306e+02,3.962063e+02,4.055319e+02,
-4.151151e+02,4.249638e+02,4.350862e+02,4.454907e+02,4.561860e+02,4.671811e+02,4.784852e+02,
-4.901079e+02,5.020589e+02,5.143485e+02,5.269872e+02,5.399857e+02,5.533553e+02,5.671075e+02,
-5.812541e+02,5.958075e+02,6.107802e+02,6.261855e+02,6.420367e+02,6.583478e+02,6.751333e+02,
-6.924079e+02,7.101869e+02,7.284863e+02,7.473223e+02,7.667118e+02,7.866722e+02,8.072215e+02,
-8.283782e+02,8.501616e+02,8.725913e+02,8.956879e+02,9.194725e+02,9.439667e+02,9.691932e+02,
-9.951752e+02,1.021937e+03,1.049502e+03,1.077898e+03,1.107150e+03,1.137285e+03,1.168332e+03
-  };
-  static const G4double P211[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,3.170118e-03,7.315363e-03,1.257339e-02,
-2.006524e-02,3.034536e-02,4.382582e-02,6.096755e-02,8.439254e-02,1.172188e-01,1.608402e-01,
-2.168665e-01,2.939658e-01,4.003237e-01,5.402293e-01,7.232315e-01,9.761260e-01,1.311496e+00,
-1.745343e+00,2.326101e+00,3.082613e+00,4.045963e+00,5.277513e+00,6.819248e+00,8.722748e+00,
-1.105116e+01,1.385719e+01,1.716964e+01,2.104044e+01,2.526219e+01,2.969696e+01,3.414706e+01,
-3.837462e+01,4.232892e+01,4.595438e+01,4.927332e+01,5.229426e+01,5.506693e+01,5.759896e+01,
-5.993661e+01,6.209595e+01,6.409989e+01,6.597519e+01,6.773518e+01,6.939684e+01,7.097759e+01,
-7.249103e+01,7.394773e+01,7.535948e+01,7.673677e+01,7.808864e+01,7.942302e+01,8.074691e+01,
-8.206649e+01,8.338723e+01,8.471403e+01,8.605126e+01,8.740299e+01,8.877308e+01,9.016530e+01,
-9.158348e+01,9.303155e+01,9.451368e+01,9.603439e+01,9.759857e+01,9.921130e+01,1.008781e+02,
-1.026050e+02,1.043980e+02,1.062640e+02,1.082097e+02,1.102423e+02,1.123692e+02,1.145981e+02,
-1.169368e+02,1.193933e+02,1.219754e+02,1.246913e+02,1.275491e+02,1.305566e+02,1.337220e+02,
-1.370529e+02,1.405572e+02,1.442423e+02,1.481158e+02,1.521850e+02,1.564570e+02,1.609392e+02,
-1.656389e+02,1.705636e+02,1.757217e+02,1.811220e+02,1.867754e+02,1.926811e+02,1.988382e+02,
-2.053134e+02,2.121426e+02,2.193769e+02,2.270897e+02,2.353854e+02,2.444109e+02,2.543683e+02,
-2.655272e+02,2.782318e+02,2.928987e+02,3.100059e+02,3.300699e+02,3.536201e+02,3.811791e+02,
-4.132549e+02,4.503497e+02,4.929799e+02,5.417037e+02,5.971489e+02,6.600395e+02,7.312176e+02,
-8.116615e+02,9.025013e+02,1.005029e+03,1.120706e+03,1.251160e+03,1.398173e+03,1.563658e+03,
-1.749612e+03,1.958046e+03,2.190894e+03,2.449893e+03,2.736450e+03,3.051500e+03,3.395381e+03,
-3.767744e+03,4.167523e+03,4.592970e+03,5.041778e+03,5.511247e+03,5.998488e+03,6.500670e+03,
-7.015188e+03,7.539806e+03,8.072749e+03,8.612744e+03,9.159028e+03,9.711325e+03,1.026981e+04,
-1.083504e+04,1.140796e+04,1.198979e+04,1.258204e+04,1.318641e+04,1.380480e+04,1.443930e+04,
-1.509210e+04,1.576553e+04,1.646199e+04,1.718399e+04,1.793404e+04,1.871473e+04,1.952866e+04,
-2.037842e+04,2.126663e+04,2.219590e+04,2.316886e+04,2.418816e+04,2.525650e+04,2.637667e+04,
-2.755151e+04,2.878401e+04,3.007731e+04,3.143470e+04,3.285966e+04,3.435587e+04,3.592721e+04,
-3.757777e+04,3.931185e+04,4.113396e+04,4.304881e+04,4.506131e+04,4.717656e+04,4.939988e+04,
-5.173679e+04,5.419304e+04,5.677458e+04,5.948765e+04,6.233872e+04,6.533460e+04,6.848239e+04,
-7.178955e+04,7.526394e+04,7.891383e+04,8.274793e+04,8.677546e+04,9.100617e+04,9.545036e+04,
-1.001189e+05,1.050235e+05,1.101763e+05,1.155902e+05,1.212792e+05,1.272577e+05,1.335413e+05,
-1.401464e+05,1.470904e+05,1.543917e+05,1.620700e+05,1.701459e+05,1.786414e+05,1.875799e+05,
-1.969859e+05,2.068858e+05,2.173072e+05,2.282796e+05,2.398340e+05,2.520035e+05,2.648230e+05,
-2.783297e+05,2.925628e+05,3.075639e+05,3.233770e+05,3.400491e+05,3.576294e+05,3.761706e+05,
-3.957283e+05,4.163613e+05,4.381322e+05,4.611072e+05,4.853564e+05,5.109543e+05,5.379797e+05,
-5.665162e+05,5.966524e+05,6.284822e+05,6.621053e+05,6.976273e+05,7.351601e+05,7.748225e+05,
-8.167405e+05,8.610475e+05,9.078852e+05,9.574039e+05,1.009763e+06,1.065131e+06,1.123687e+06,
-1.185622e+06,1.251138e+06,1.320447e+06,1.393779e+06,1.471372e+06,1.553484e+06,1.640385e+06,
-1.732364e+06,1.829725e+06,1.932793e+06,2.041912e+06,2.157447e+06,2.279787e+06,2.409342e+06,
-2.546550e+06,2.691874e+06,2.845807e+06,3.008872e+06,3.181623e+06,3.364649e+06,3.558578e+06,
-3.764073e+06,3.981840e+06,4.212628e+06,4.457233e+06,4.716501e+06,4.991329e+06,5.282672e+06,
-5.591541e+06,5.919014e+06,6.266233e+06,6.634412e+06,7.024842e+06,7.438893e+06,7.878021e+06,
-8.343775e+06,8.837797e+06,9.361836e+06,9.917747e+06,1.050750e+07,1.113320e+07,1.179707e+07,
-1.250148e+07,1.324894e+07,1.404213e+07,1.488389e+07,1.577725e+07,1.672542e+07,1.773181e+07,
-1.880006e+07,1.993402e+07,2.113780e+07,2.241576e+07,2.377254e+07,2.521307e+07,2.674259e+07
-  };
-  static const G4double P012[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,4.229739e-04,1.122568e-03,
-2.064930e-03,3.284750e-03,4.790517e-03,6.590986e-03,8.900132e-03,1.193812e-02,1.572724e-02,
-2.029405e-02,2.612967e-02,3.360287e-02,4.276376e-02,5.386159e-02,6.777878e-02,8.469189e-02,
-1.048143e-01,1.292053e-01,1.582020e-01,1.919795e-01,2.308545e-01,2.750062e-01,3.220332e-01,
-3.681689e-01,4.129651e-01,4.533231e-01,4.884559e-01,5.187789e-01,5.444843e-01,5.662268e-01,
-5.846749e-01,6.003010e-01,6.136180e-01,6.250143e-01,6.347777e-01,6.432341e-01,6.505388e-01,
-6.569272e-01,6.625246e-01,6.674590e-01,6.718492e-01,6.757719e-01,6.793023e-01,6.825069e-01,
-6.854375e-01,6.881350e-01,6.906373e-01,6.929758e-01,6.951759e-01,6.972587e-01,6.992414e-01,
-7.011385e-01,7.029615e-01,7.047201e-01,7.064225e-01,7.080751e-01,7.096835e-01,7.112527e-01,
-7.127865e-01,7.142885e-01,7.157619e-01,7.172092e-01,7.186329e-01,7.200349e-01,7.214168e-01,
-7.227802e-01,7.241260e-01,7.254552e-01,7.267683e-01,7.280657e-01,7.293477e-01,7.306141e-01,
-7.318649e-01,7.330998e-01,7.343184e-01,7.355204e-01,7.367051e-01,7.378722e-01,7.390210e-01,
-7.401512e-01,7.412621e-01,7.423534e-01,7.434246e-01,7.444755e-01,7.455059e-01,7.465157e-01,
-7.475050e-01,7.484740e-01,7.494234e-01,7.503538e-01,7.512667e-01,7.521635e-01,7.530473e-01,
-7.539251e-01,7.548030e-01,7.556892e-01,7.565948e-01,7.575336e-01,7.585223e-01,7.595799e-01,
-7.607266e-01,7.619819e-01,7.633625e-01,7.648809e-01,7.665452e-01,7.683588e-01,7.703228e-01,
-7.724363e-01,7.746990e-01,7.771113e-01,7.796756e-01,7.823961e-01,7.852792e-01,7.883330e-01,
-7.915675e-01,7.949937e-01,7.986237e-01,8.024699e-01,8.065444e-01,8.108585e-01,8.154213e-01,
-8.202389e-01,8.253131e-01,8.306399e-01,8.362083e-01,8.419994e-01,8.479855e-01,8.541308e-01,
-8.603917e-01,8.667190e-01,8.730602e-01,8.793625e-01,8.855761e-01,8.916562e-01,8.975657e-01,
-9.032762e-01,9.087677e-01,9.140286e-01,9.190547e-01,9.238476e-01,9.284140e-01,9.327639e-01,
-9.369096e-01,9.408651e-01,9.446450e-01,9.482641e-01,9.517370e-01,9.550773e-01,9.582984e-01,
-9.614123e-01,9.644302e-01,9.673624e-01,9.702179e-01,9.730048e-01,9.757305e-01,9.784010e-01,
-9.810219e-01,9.835976e-01,9.861323e-01,9.886290e-01,9.910907e-01,9.935195e-01,9.959175e-01,
-9.982862e-01,1.000627e+00,1.002941e+00,1.005229e+00,1.007492e+00,1.009731e+00,1.011947e+00,
-1.014139e+00,1.016308e+00,1.018455e+00,1.020580e+00,1.022683e+00,1.024763e+00,1.026822e+00,
-1.028859e+00,1.030874e+00,1.032867e+00,1.034838e+00,1.036787e+00,1.038714e+00,1.040619e+00,
-1.042502e+00,1.044363e+00,1.046202e+00,1.048019e+00,1.049815e+00,1.051590e+00,1.053344e+00,
-1.055077e+00,1.056790e+00,1.058483e+00,1.060156e+00,1.061810e+00,1.063446e+00,1.065062e+00,
-1.066661e+00,1.068243e+00,1.069807e+00,1.071355e+00,1.072886e+00,1.074402e+00,1.075902e+00,
-1.077388e+00,1.078859e+00,1.080316e+00,1.081759e+00,1.083190e+00,1.084607e+00,1.086012e+00,
-1.087404e+00,1.088785e+00,1.090155e+00,1.091513e+00,1.092861e+00,1.094198e+00,1.095525e+00,
-1.096843e+00,1.098150e+00,1.099449e+00,1.100739e+00,1.102020e+00,1.103292e+00,1.104557e+00,
-1.105813e+00,1.107062e+00,1.108303e+00,1.109537e+00,1.110764e+00,1.111984e+00,1.113197e+00,
-1.114404e+00,1.115605e+00,1.116799e+00,1.117988e+00,1.119171e+00,1.120348e+00,1.121520e+00,
-1.122687e+00,1.123848e+00,1.125005e+00,1.126156e+00,1.127304e+00,1.128446e+00,1.129584e+00,
-1.130718e+00,1.131848e+00,1.132973e+00,1.134095e+00,1.135213e+00,1.136328e+00,1.137438e+00,
-1.138545e+00,1.139649e+00,1.140750e+00,1.141847e+00,1.142942e+00,1.144033e+00,1.145122e+00,
-1.146208e+00,1.147291e+00,1.148371e+00,1.149450e+00,1.150525e+00,1.151598e+00,1.152669e+00,
-1.153738e+00,1.154805e+00,1.155870e+00,1.156933e+00,1.157993e+00,1.159053e+00,1.160110e+00,
-1.161166e+00,1.162220e+00,1.163272e+00,1.164324e+00,1.165373e+00,1.166422e+00,1.167469e+00,
-1.168515e+00,1.169560e+00,1.170604e+00,1.171647e+00,1.172688e+00,1.173729e+00,1.174769e+00,
-1.175809e+00,1.176847e+00,1.177885e+00,1.178923e+00,1.179959e+00,1.180996e+00,1.182031e+00
-  };
-  static const G4double P112[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,2.669456e-03,7.210759e-03,
-1.353042e-02,2.197839e-02,3.274774e-02,4.604543e-02,6.366403e-02,8.759503e-02,1.184107e-01,
-1.567549e-01,2.073542e-01,2.742402e-01,3.588721e-01,4.647151e-01,6.017175e-01,7.735506e-01,
-9.845531e-01,1.248518e+00,1.572353e+00,1.961623e+00,2.423926e+00,2.965705e+00,3.560928e+00,
-4.163437e+00,4.766978e+00,5.327878e+00,5.831605e+00,6.280136e+00,6.672360e+00,7.014629e+00,
-7.314181e+00,7.575938e+00,7.806026e+00,8.009145e+00,8.188626e+00,8.348974e+00,8.491835e+00,
-8.620696e+00,8.737148e+00,8.843020e+00,8.940169e+00,9.029691e+00,9.112779e+00,9.190558e+00,
-9.263911e+00,9.333538e+00,9.400141e+00,9.464325e+00,9.526593e+00,9.587378e+00,9.647045e+00,
-9.705909e+00,9.764235e+00,9.822253e+00,9.880155e+00,9.938113e+00,9.996274e+00,1.005477e+01,
-1.011373e+01,1.017325e+01,1.023345e+01,1.029441e+01,1.035624e+01,1.041901e+01,1.048279e+01,
-1.054767e+01,1.061369e+01,1.068090e+01,1.074936e+01,1.081909e+01,1.089011e+01,1.096245e+01,
-1.103609e+01,1.111104e+01,1.118729e+01,1.126481e+01,1.134358e+01,1.142356e+01,1.150472e+01,
-1.158702e+01,1.167041e+01,1.175485e+01,1.184030e+01,1.192670e+01,1.201403e+01,1.210224e+01,
-1.219132e+01,1.228126e+01,1.237208e+01,1.246383e+01,1.255663e+01,1.265058e+01,1.274603e+01,
-1.284374e+01,1.294447e+01,1.304928e+01,1.315968e+01,1.327765e+01,1.340570e+01,1.354690e+01,
-1.370470e+01,1.388274e+01,1.408458e+01,1.431338e+01,1.457185e+01,1.486217e+01,1.518618e+01,
-1.554557e+01,1.594212e+01,1.637787e+01,1.685527e+01,1.737730e+01,1.794750e+01,1.857000e+01,
-1.924953e+01,1.999143e+01,2.080156e+01,2.168625e+01,2.265222e+01,2.370633e+01,2.485539e+01,
-2.610582e+01,2.746321e+01,2.893183e+01,3.051411e+01,3.221007e+01,3.401687e+01,3.592851e+01,
-3.793576e+01,4.002641e+01,4.218581e+01,4.439773e+01,4.664525e+01,4.891184e+01,5.118231e+01,
-5.344347e+01,5.568452e+01,5.789724e+01,6.007592e+01,6.221721e+01,6.431975e+01,6.638393e+01,
-6.841150e+01,7.040530e+01,7.236897e+01,7.430671e+01,7.622307e+01,7.812281e+01,8.001079e+01,
-8.189187e+01,8.377082e+01,8.565227e+01,8.754065e+01,8.944017e+01,9.135476e+01,9.328811e+01,
-9.524359e+01,9.722429e+01,9.923302e+01,1.012723e+02,1.033445e+02,1.054517e+02,1.075958e+02,
-1.097786e+02,1.120016e+02,1.142666e+02,1.165748e+02,1.189278e+02,1.213268e+02,1.237731e+02,
-1.262679e+02,1.288124e+02,1.314077e+02,1.340547e+02,1.367544e+02,1.395077e+02,1.423154e+02,
-1.451783e+02,1.480970e+02,1.510722e+02,1.541047e+02,1.571950e+02,1.603439e+02,1.635520e+02,
-1.668202e+02,1.701491e+02,1.735398e+02,1.769930e+02,1.805099e+02,1.840917e+02,1.877394e+02,
-1.914545e+02,1.952384e+02,1.990926e+02,2.030187e+02,2.070186e+02,2.110939e+02,2.152468e+02,
-2.194793e+02,2.237936e+02,2.281918e+02,2.326765e+02,2.372501e+02,2.419151e+02,2.466743e+02,
-2.515305e+02,2.564865e+02,2.615454e+02,2.667102e+02,2.719843e+02,2.773708e+02,2.828733e+02,
-2.884953e+02,2.942405e+02,3.001125e+02,3.061153e+02,3.122530e+02,3.185296e+02,3.249493e+02,
-3.315166e+02,3.382361e+02,3.451123e+02,3.521500e+02,3.593542e+02,3.667299e+02,3.742825e+02,
-3.820173e+02,3.899398e+02,3.980558e+02,4.063711e+02,4.148920e+02,4.236245e+02,4.325751e+02,
-4.417506e+02,4.511576e+02,4.608034e+02,4.706951e+02,4.808402e+02,4.912465e+02,5.019218e+02,
-5.128744e+02,5.241128e+02,5.356456e+02,5.474817e+02,5.596305e+02,5.721016e+02,5.849046e+02,
-5.980497e+02,6.115475e+02,6.254086e+02,6.396443e+02,6.542659e+02,6.692852e+02,6.847145e+02,
-7.005664e+02,7.168537e+02,7.335900e+02,7.507889e+02,7.684647e+02,7.866322e+02,8.053064e+02,
-8.245030e+02,8.442381e+02,8.645283e+02,8.853909e+02,9.068435e+02,9.289045e+02,9.515927e+02,
-9.749276e+02,9.989293e+02,1.023618e+03,1.049017e+03,1.075146e+03,1.102029e+03,1.129689e+03,
-1.158151e+03,1.187440e+03,1.217582e+03,1.248602e+03,1.280530e+03,1.313394e+03,1.347222e+03,
-1.382046e+03,1.417896e+03,1.454806e+03,1.492808e+03,1.531936e+03,1.572228e+03,1.613719e+03,
-1.656447e+03,1.700453e+03,1.745775e+03,1.792457e+03,1.840541e+03,1.890072e+03,1.941097e+03
-  };
-  static const G4double P212[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.684810e-02,4.632984e-02,
-8.871441e-02,1.472267e-01,2.242564e-01,3.224773e-01,4.569173e-01,6.454442e-01,8.960796e-01,
-1.218055e+00,1.656827e+00,2.255513e+00,3.037441e+00,4.046981e+00,5.395760e+00,7.141687e+00,
-9.354437e+00,1.221137e+01,1.582824e+01,2.031476e+01,2.581295e+01,3.246157e+01,3.999597e+01,
-4.786507e+01,5.599726e+01,6.379332e+01,7.101625e+01,7.765137e+01,8.363657e+01,8.902498e+01,
-9.388937e+01,9.827447e+01,1.022502e+02,1.058707e+02,1.091704e+02,1.122111e+02,1.150053e+02,
-1.176048e+02,1.200277e+02,1.222995e+02,1.244494e+02,1.264926e+02,1.284483e+02,1.303362e+02,
-1.321723e+02,1.339697e+02,1.357426e+02,1.375044e+02,1.392669e+02,1.410410e+02,1.428367e+02,
-1.446633e+02,1.465296e+02,1.484437e+02,1.504133e+02,1.524461e+02,1.545493e+02,1.567303e+02,
-1.589966e+02,1.613556e+02,1.638152e+02,1.663834e+02,1.690685e+02,1.718788e+02,1.748232e+02,
-1.779103e+02,1.811492e+02,1.845488e+02,1.881180e+02,1.918658e+02,1.958012e+02,1.999327e+02,
-2.042690e+02,2.088184e+02,2.135892e+02,2.185894e+02,2.238267e+02,2.293087e+02,2.350430e+02,
-2.410367e+02,2.472972e+02,2.538316e+02,2.606472e+02,2.677517e+02,2.751528e+02,2.828593e+02,
-2.908809e+02,2.992293e+02,3.079187e+02,3.169676e+02,3.264006e+02,3.362449e+02,3.465537e+02,
-3.574312e+02,3.689892e+02,3.813869e+02,3.948465e+02,4.096708e+02,4.262580e+02,4.451096e+02,
-4.668260e+02,4.920818e+02,5.215910e+02,5.560706e+02,5.962149e+02,6.426899e+02,6.961495e+02,
-7.572662e+02,8.267702e+02,9.054874e+02,9.943751e+02,1.094553e+03,1.207331e+03,1.334230e+03,
-1.477006e+03,1.637665e+03,1.818480e+03,2.021994e+03,2.251016e+03,2.508599e+03,2.797992e+03,
-3.122568e+03,3.485707e+03,3.890646e+03,4.340289e+03,4.837003e+03,5.382390e+03,5.977096e+03,
-6.620672e+03,7.311514e+03,8.046928e+03,8.823291e+03,9.636310e+03,1.048133e+04,1.135372e+04,
-1.224914e+04,1.316377e+04,1.409450e+04,1.503898e+04,1.599568e+04,1.696385e+04,1.794346e+04,
-1.893518e+04,1.994025e+04,2.096045e+04,2.199802e+04,2.305557e+04,2.413607e+04,2.524277e+04,
-2.637920e+04,2.754912e+04,2.875647e+04,3.000538e+04,3.130013e+04,3.264512e+04,3.404488e+04,
-3.550403e+04,3.702724e+04,3.861931e+04,4.028511e+04,4.202960e+04,4.385786e+04,4.577509e+04,
-4.778667e+04,4.989812e+04,5.211519e+04,5.444383e+04,5.689024e+04,5.946088e+04,6.216245e+04,
-6.500194e+04,6.798661e+04,7.112399e+04,7.442190e+04,7.788844e+04,8.153200e+04,8.536127e+04,
-8.938526e+04,9.361335e+04,9.805527e+04,1.027212e+05,1.076216e+05,1.127678e+05,1.181712e+05,
-1.238442e+05,1.297996e+05,1.360510e+05,1.426127e+05,1.495000e+05,1.567288e+05,1.643162e+05,
-1.722801e+05,1.806398e+05,1.894154e+05,1.986284e+05,2.083016e+05,2.184591e+05,2.291266e+05,
-2.403312e+05,2.521018e+05,2.644689e+05,2.774648e+05,2.911240e+05,3.054827e+05,3.205795e+05,
-3.364554e+05,3.531535e+05,3.707199e+05,3.892030e+05,4.086544e+05,4.291288e+05,4.506839e+05,
-4.733811e+05,4.972852e+05,5.224649e+05,5.489933e+05,5.769474e+05,6.064091e+05,6.374651e+05,
-6.702071e+05,7.047325e+05,7.411446e+05,7.795524e+05,8.200720e+05,8.628259e+05,9.079443e+05,
-9.555652e+05,1.005835e+06,1.058907e+06,1.114948e+06,1.174130e+06,1.236639e+06,1.302669e+06,
-1.372430e+06,1.446140e+06,1.524033e+06,1.606356e+06,1.693372e+06,1.785359e+06,1.882612e+06,
-1.985444e+06,2.094187e+06,2.209195e+06,2.330839e+06,2.459517e+06,2.595650e+06,2.739683e+06,
-2.892091e+06,3.053375e+06,3.224069e+06,3.404739e+06,3.595986e+06,3.798446e+06,4.012797e+06,
-4.239756e+06,4.480087e+06,4.734597e+06,5.004147e+06,5.289647e+06,5.592067e+06,5.912434e+06,
-6.251840e+06,6.611444e+06,6.992476e+06,7.396245e+06,7.824137e+06,8.277627e+06,8.758281e+06,
-9.267762e+06,9.807836e+06,1.038038e+07,1.098738e+07,1.163097e+07,1.231338e+07,1.303701e+07,
-1.380440e+07,1.461824e+07,1.548140e+07,1.639693e+07,1.736806e+07,1.839823e+07,1.949109e+07,
-2.065053e+07,2.188068e+07,2.318592e+07,2.457091e+07,2.604061e+07,2.760029e+07,2.925554e+07,
-3.101232e+07,3.287695e+07,3.485616e+07,3.695711e+07,3.918738e+07,4.155507e+07,4.406876e+07
-  };
-  static const G4double P013[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,3.486588e-04,9.620452e-04,1.718673e-03,2.622926e-03,3.703060e-03,
-5.154692e-03,7.030543e-03,9.343593e-03,1.210723e-02,1.562440e-02,2.020681e-02,2.588705e-02,
-3.270264e-02,4.120096e-02,5.179545e-02,6.455027e-02,7.958144e-02,9.716667e-02,1.174069e-01,
-1.402537e-01,1.647614e-01,1.907608e-01,2.180777e-01,2.456543e-01,2.733481e-01,3.011684e-01,
-3.291280e-01,3.571385e-01,3.844637e-01,4.109055e-01,4.353907e-01,4.572419e-01,4.764803e-01,
-4.931270e-01,5.074779e-01,5.198558e-01,5.305684e-01,5.398436e-01,5.479555e-01,5.550351e-01,
-5.612855e-01,5.668161e-01,5.717392e-01,5.761608e-01,5.801498e-01,5.837742e-01,5.870950e-01,
-5.901599e-01,5.930068e-01,5.956710e-01,5.981820e-01,6.005639e-01,6.028363e-01,6.050157e-01,
-6.071155e-01,6.091467e-01,6.111183e-01,6.130377e-01,6.149109e-01,6.167431e-01,6.185383e-01,
-6.203001e-01,6.220315e-01,6.237350e-01,6.254128e-01,6.270666e-01,6.286979e-01,6.303078e-01,
-6.318973e-01,6.334668e-01,6.350169e-01,6.365477e-01,6.380590e-01,6.395509e-01,6.410229e-01,
-6.424746e-01,6.439056e-01,6.453153e-01,6.467032e-01,6.480686e-01,6.494110e-01,6.507298e-01,
-6.520247e-01,6.532950e-01,6.545406e-01,6.557611e-01,6.569564e-01,6.581265e-01,6.592715e-01,
-6.603918e-01,6.614881e-01,6.625614e-01,6.636131e-01,6.646453e-01,6.656609e-01,6.666658e-01,
-6.676680e-01,6.686761e-01,6.697018e-01,6.707597e-01,6.718679e-01,6.730471e-01,6.743195e-01,
-6.757071e-01,6.772293e-01,6.789009e-01,6.807315e-01,6.827259e-01,6.848850e-01,6.872080e-01,
-6.896938e-01,6.923421e-01,6.951548e-01,6.981356e-01,7.012908e-01,7.046287e-01,7.081597e-01,
-7.118958e-01,7.158503e-01,7.200374e-01,7.244715e-01,7.291667e-01,7.341357e-01,7.393889e-01,
-7.449331e-01,7.507700e-01,7.568949e-01,7.632950e-01,7.699485e-01,7.768239e-01,7.838803e-01,
-7.910682e-01,7.983318e-01,8.056115e-01,8.128477e-01,8.199835e-01,8.269680e-01,8.337591e-01,
-8.403238e-01,8.466393e-01,8.526920e-01,8.584765e-01,8.639943e-01,8.692526e-01,8.742622e-01,
-8.790371e-01,8.835929e-01,8.879462e-01,8.921136e-01,8.961116e-01,8.999559e-01,9.036615e-01,
-9.072423e-01,9.107112e-01,9.140799e-01,9.173590e-01,9.205578e-01,9.236848e-01,9.267473e-01,
-9.297517e-01,9.327034e-01,9.356072e-01,9.384670e-01,9.412861e-01,9.440675e-01,9.468134e-01,
-9.495258e-01,9.522065e-01,9.548567e-01,9.574777e-01,9.600704e-01,9.626357e-01,9.651742e-01,
-9.676864e-01,9.701728e-01,9.726336e-01,9.750691e-01,9.774794e-01,9.798646e-01,9.822246e-01,
-9.845594e-01,9.868688e-01,9.891530e-01,9.914116e-01,9.936448e-01,9.958524e-01,9.980344e-01,
-1.000191e+00,1.002322e+00,1.004428e+00,1.006508e+00,1.008564e+00,1.010594e+00,1.012601e+00,
-1.014583e+00,1.016542e+00,1.018478e+00,1.020391e+00,1.022281e+00,1.024150e+00,1.025997e+00,
-1.027824e+00,1.029630e+00,1.031416e+00,1.033183e+00,1.034931e+00,1.036661e+00,1.038373e+00,
-1.040068e+00,1.041746e+00,1.043408e+00,1.045054e+00,1.046684e+00,1.048300e+00,1.049901e+00,
-1.051488e+00,1.053062e+00,1.054622e+00,1.056169e+00,1.057704e+00,1.059227e+00,1.060738e+00,
-1.062238e+00,1.063727e+00,1.065205e+00,1.066673e+00,1.068130e+00,1.069578e+00,1.071017e+00,
-1.072446e+00,1.073866e+00,1.075278e+00,1.076681e+00,1.078076e+00,1.079463e+00,1.080843e+00,
-1.082215e+00,1.083579e+00,1.084937e+00,1.086288e+00,1.087632e+00,1.088970e+00,1.090301e+00,
-1.091626e+00,1.092946e+00,1.094259e+00,1.095567e+00,1.096870e+00,1.098168e+00,1.099460e+00,
-1.100747e+00,1.102030e+00,1.103308e+00,1.104581e+00,1.105850e+00,1.107115e+00,1.108376e+00,
-1.109632e+00,1.110885e+00,1.112134e+00,1.113379e+00,1.114621e+00,1.115859e+00,1.117094e+00,
-1.118326e+00,1.119555e+00,1.120780e+00,1.122003e+00,1.123223e+00,1.124440e+00,1.125655e+00,
-1.126867e+00,1.128077e+00,1.129284e+00,1.130489e+00,1.131692e+00,1.132893e+00,1.134092e+00,
-1.135289e+00,1.136484e+00,1.137677e+00,1.138868e+00,1.140058e+00,1.141247e+00,1.142434e+00,
-1.143619e+00,1.144803e+00,1.145986e+00,1.147168e+00,1.148349e+00,1.149528e+00,1.150707e+00,
-1.151884e+00,1.153061e+00,1.154237e+00,1.155413e+00,1.156587e+00,1.157761e+00,1.158935e+00
-  };
-  static const G4double P113[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,1.995454e-03,5.606334e-03,1.020784e-02,1.588884e-02,2.290033e-02,
-3.263520e-02,4.562653e-02,6.216957e-02,8.258086e-02,1.094157e-01,1.455118e-01,1.917068e-01,
-2.489316e-01,3.226120e-01,4.174284e-01,5.352577e-01,6.785911e-01,8.516731e-01,1.057284e+00,
-1.296801e+00,1.561942e+00,1.852224e+00,2.166939e+00,2.494770e+00,2.834492e+00,3.186635e+00,
-3.551797e+00,3.929232e+00,4.309095e+00,4.688324e+00,5.050545e+00,5.384012e+00,5.686875e+00,
-5.957193e+00,6.197595e+00,6.411465e+00,6.602403e+00,6.772914e+00,6.926734e+00,7.065197e+00,
-7.191277e+00,7.306340e+00,7.411974e+00,7.509819e+00,7.600857e+00,7.686161e+00,7.766762e+00,
-7.843477e+00,7.916960e+00,7.987876e+00,8.056797e+00,8.124211e+00,8.190532e+00,8.256119e+00,
-8.321275e+00,8.386263e+00,8.451305e+00,8.516592e+00,8.582289e+00,8.648537e+00,8.715465e+00,
-8.783185e+00,8.851798e+00,8.921398e+00,8.992070e+00,9.063890e+00,9.136925e+00,9.211233e+00,
-9.286866e+00,9.363861e+00,9.442250e+00,9.522053e+00,9.603281e+00,9.685935e+00,9.770007e+00,
-9.855482e+00,9.942335e+00,1.003054e+01,1.012005e+01,1.021082e+01,1.030282e+01,1.039600e+01,
-1.049029e+01,1.058565e+01,1.068203e+01,1.077938e+01,1.087765e+01,1.097681e+01,1.107684e+01,
-1.117772e+01,1.127947e+01,1.138215e+01,1.148585e+01,1.159077e+01,1.169718e+01,1.180571e+01,
-1.191727e+01,1.203294e+01,1.215425e+01,1.228322e+01,1.242248e+01,1.257521e+01,1.274509e+01,
-1.293604e+01,1.315194e+01,1.339632e+01,1.367216e+01,1.398189e+01,1.432750e+01,1.471074e+01,
-1.513342e+01,1.559757e+01,1.610563e+01,1.666058e+01,1.726601e+01,1.792615e+01,1.864590e+01,
-1.943082e+01,2.028712e+01,2.122158e+01,2.224152e+01,2.335462e+01,2.456876e+01,2.589168e+01,
-2.733069e+01,2.889211e+01,3.058077e+01,3.239937e+01,3.434789e+01,3.642310e+01,3.861815e+01,
-4.092260e+01,4.332263e+01,4.580166e+01,4.834130e+01,5.092240e+01,5.352617e+01,5.613531e+01,
-5.873476e+01,6.131210e+01,6.385783e+01,6.636527e+01,6.883039e+01,7.125148e+01,7.362876e+01,
-7.596408e+01,7.826048e+01,8.052200e+01,8.275327e+01,8.495940e+01,8.714572e+01,8.931771e+01,
-9.148086e+01,9.364060e+01,9.580217e+01,9.797066e+01,1.001509e+02,1.023474e+02,1.045645e+02,
-1.068062e+02,1.090760e+02,1.113772e+02,1.137131e+02,1.160862e+02,1.184992e+02,1.209544e+02,
-1.234539e+02,1.259998e+02,1.285938e+02,1.312377e+02,1.339332e+02,1.366818e+02,1.394850e+02,
-1.423440e+02,1.452603e+02,1.482350e+02,1.512691e+02,1.543638e+02,1.575200e+02,1.607384e+02,
-1.640199e+02,1.673652e+02,1.707750e+02,1.742501e+02,1.777910e+02,1.813985e+02,1.850734e+02,
-1.888164e+02,1.926284e+02,1.965104e+02,2.004634e+02,2.044885e+02,2.085870e+02,2.127603e+02,
-2.170098e+02,2.213372e+02,2.257441e+02,2.302324e+02,2.348040e+02,2.394612e+02,2.442060e+02,
-2.490408e+02,2.539681e+02,2.589904e+02,2.641105e+02,2.693311e+02,2.746552e+02,2.800858e+02,
-2.856261e+02,2.912794e+02,2.970490e+02,3.029386e+02,3.089517e+02,3.150921e+02,3.213638e+02,
-3.277707e+02,3.343169e+02,3.410068e+02,3.478447e+02,3.548352e+02,3.619830e+02,3.692928e+02,
-3.767697e+02,3.844189e+02,3.922454e+02,4.002549e+02,4.084528e+02,4.168450e+02,4.254374e+02,
-4.342361e+02,4.432473e+02,4.524776e+02,4.619337e+02,4.716224e+02,4.815508e+02,4.917263e+02,
-5.021563e+02,5.128485e+02,5.238111e+02,5.350521e+02,5.465802e+02,5.584039e+02,5.705323e+02,
-5.829747e+02,5.957407e+02,6.088401e+02,6.222830e+02,6.360800e+02,6.502418e+02,6.647796e+02,
-6.797048e+02,6.950292e+02,7.107652e+02,7.269252e+02,7.435222e+02,7.605696e+02,7.780812e+02,
-7.960713e+02,8.145545e+02,8.335460e+02,8.530613e+02,8.731166e+02,8.937286e+02,9.149143e+02,
-9.366915e+02,9.590784e+02,9.820938e+02,1.005757e+03,1.030089e+03,1.055109e+03,1.080839e+03,
-1.107302e+03,1.134519e+03,1.162515e+03,1.191313e+03,1.220939e+03,1.251419e+03,1.282778e+03,
-1.315045e+03,1.348248e+03,1.382416e+03,1.417580e+03,1.453770e+03,1.491019e+03,1.529361e+03,
-1.568829e+03,1.609460e+03,1.651289e+03,1.694355e+03,1.738697e+03,1.784354e+03,1.831369e+03,
-1.879785e+03,1.929646e+03,1.980999e+03,2.033889e+03,2.088367e+03,2.144482e+03,2.202288e+03
-  };
-  static const G4double P213[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,1.142094e-02,3.267935e-02,6.066632e-02,9.636049e-02,1.418783e-01,
-2.071675e-01,2.971476e-01,4.154746e-01,5.662385e-01,7.709965e-01,1.055354e+00,1.431069e+00,
-1.911579e+00,2.550442e+00,3.399081e+00,4.487682e+00,5.854588e+00,7.558283e+00,9.647155e+00,
-1.215838e+01,1.502709e+01,1.826833e+01,2.189443e+01,2.579202e+01,2.995976e+01,3.441746e+01,
-3.918699e+01,4.427325e+01,4.955437e+01,5.499373e+01,6.035267e+01,6.544206e+01,7.021030e+01,
-7.460021e+01,7.862768e+01,8.232331e+01,8.572679e+01,8.886164e+01,9.177863e+01,9.448690e+01,
-9.703032e+01,9.942442e+01,1.016911e+02,1.038565e+02,1.059344e+02,1.079422e+02,1.098987e+02,
-1.118190e+02,1.137160e+02,1.156037e+02,1.174956e+02,1.194037e+02,1.213395e+02,1.233134e+02,
-1.253353e+02,1.274148e+02,1.295607e+02,1.317816e+02,1.340858e+02,1.364815e+02,1.389768e+02,
-1.415800e+02,1.442993e+02,1.471432e+02,1.501202e+02,1.532394e+02,1.565095e+02,1.599395e+02,
-1.635387e+02,1.673159e+02,1.712805e+02,1.754412e+02,1.798071e+02,1.843868e+02,1.891890e+02,
-1.942219e+02,1.994937e+02,2.050125e+02,2.107860e+02,2.168218e+02,2.231274e+02,2.297101e+02,
-2.365773e+02,2.437362e+02,2.511944e+02,2.589596e+02,2.670399e+02,2.754442e+02,2.841827e+02,
-2.932671e+02,3.027119e+02,3.125358e+02,3.227634e+02,3.334288e+02,3.445781e+02,3.563001e+02,
-3.687193e+02,3.819927e+02,3.963408e+02,4.120653e+02,4.295658e+02,4.493503e+02,4.720319e+02,
-4.983109e+02,5.289362e+02,5.646649e+02,6.062317e+02,6.543377e+02,7.096627e+02,7.728953e+02,
-8.447731e+02,9.261237e+02,1.017903e+03,1.121228e+03,1.237410e+03,1.367978e+03,1.514703e+03,
-1.679620e+03,1.865051e+03,2.073617e+03,2.308241e+03,2.572149e+03,2.868835e+03,3.202016e+03,
-3.575541e+03,3.993264e+03,4.458871e+03,4.975670e+03,5.546355e+03,6.172760e+03,6.855637e+03,
-7.594502e+03,8.387576e+03,9.231842e+03,1.012323e+04,1.105692e+04,1.202765e+04,1.303017e+04,
-1.405955e+04,1.511144e+04,1.618224e+04,1.726924e+04,1.837063e+04,1.948547e+04,2.061368e+04,
-2.175592e+04,2.291353e+04,2.408848e+04,2.528322e+04,2.650068e+04,2.774417e+04,2.901736e+04,
-3.032420e+04,3.166894e+04,3.305604e+04,3.449021e+04,3.597630e+04,3.751935e+04,3.912456e+04,
-4.079722e+04,4.254275e+04,4.436670e+04,4.627470e+04,4.827254e+04,5.036614e+04,5.256157e+04,
-5.486506e+04,5.728307e+04,5.982226e+04,6.248955e+04,6.529208e+04,6.823731e+04,7.133295e+04,
-7.458700e+04,7.800776e+04,8.160383e+04,8.538411e+04,8.935781e+04,9.353444e+04,9.792387e+04,
-1.025363e+05,1.073824e+05,1.124731e+05,1.178200e+05,1.234350e+05,1.293307e+05,1.355202e+05,
-1.420175e+05,1.488372e+05,1.559945e+05,1.635058e+05,1.713882e+05,1.796600e+05,1.883405e+05,
-1.974500e+05,2.070104e+05,2.170444e+05,2.275766e+05,2.386327e+05,2.502401e+05,2.624280e+05,
-2.752272e+05,2.886704e+05,3.027922e+05,3.176294e+05,3.332210e+05,3.496083e+05,3.668349e+05,
-3.849474e+05,4.039947e+05,4.240291e+05,4.451057e+05,4.672829e+05,4.906228e+05,5.151909e+05,
-5.410568e+05,5.682940e+05,5.969807e+05,6.271995e+05,6.590381e+05,6.925891e+05,7.279509e+05,
-7.652278e+05,8.045300e+05,8.459747e+05,8.896858e+05,9.357945e+05,9.844402e+05,1.035770e+06,
-1.089941e+06,1.147119e+06,1.207478e+06,1.271207e+06,1.338501e+06,1.409570e+06,1.484636e+06,
-1.563934e+06,1.647715e+06,1.736241e+06,1.829794e+06,1.928671e+06,2.033188e+06,2.143679e+06,
-2.260499e+06,2.384024e+06,2.514653e+06,2.652811e+06,2.798946e+06,2.953535e+06,3.117084e+06,
-3.290130e+06,3.473241e+06,3.667023e+06,3.872116e+06,4.089200e+06,4.318999e+06,4.562278e+06,
-4.819852e+06,5.092583e+06,5.381389e+06,5.687242e+06,6.011176e+06,6.354288e+06,6.717741e+06,
-7.102774e+06,7.510697e+06,7.942907e+06,8.400882e+06,8.886195e+06,9.400517e+06,9.945620e+06,
-1.052339e+07,1.113582e+07,1.178504e+07,1.247331e+07,1.320302e+07,1.397672e+07,1.479713e+07,
-1.566710e+07,1.658970e+07,1.756817e+07,1.860597e+07,1.970674e+07,2.087440e+07,2.211307e+07,
-2.342715e+07,2.482132e+07,2.630054e+07,2.787009e+07,2.953558e+07,3.130298e+07,3.317862e+07,
-3.516924e+07,3.728200e+07,3.952452e+07,4.190489e+07,4.443171e+07,4.711414e+07,4.996191e+07
-};
-  static const G4double* P0[nN]=
-                           {P00,P01,P02,P03,P04,P05,P06,P07,P08,P09,P010,P011,P012,P013};
-  static const G4double* P1[nN]=
-                           {P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P110,P111,P112,P113};
-  static const G4double* P2[nN]=
-                           {P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,P210,P211,P212,P213};
-  // --------------------------------
-  G4int r=-1;                          // Low channel for J-functions
-  if(a<=.9999 || a>238.49)             // Plutonium 244 is forbidden
-  {
-    G4cout<<"***G4QMuonNuclearCrossSection::GetFunctions:A="<<a<<".No CS returned"<<G4endl;
-    return r;
-  }
-  G4int iA=static_cast<G4int>(a+.499); // Make the round integer of the atomic number
-  G4double ai=iA;
-  if(a!=ai) a=ai;
-  for(G4int i=0; i<nN; i++)
-  {
-    if(std::fabs(a-A[i])<.0005)        // A coincides with one of basic A's -> get from Tab
-    {
-      for(G4int k=0; k<nE; k++)
-      {
-        x[k]=P0[i][k];                 // J0
-        y[k]=P1[i][k];                 // J1
-        z[k]=P2[i][k];                 // J2
-      }
-      r=L[i];                          // Low channel for the J-functions
-    }
-    if(r<0)                            // Not the basic A-value -> must be calculated
-    {
-      G4int k=0;                       // !! To be good for different compilers !!
-      for(k=1; k<nN; k++)if(a<A[k]) break;// Find the top basic A-value
-      if(k<1) k=1;                     // Extrapolation from the first bin (D)
-      if(k>=nN) k=nN-1;                // Extrapolation from the last bin (U)
-      G4int     k1=k-1;
-      G4double  xi=A[k1];
-      G4double   b=(a-xi)/(A[k]-xi);
-      for(G4int m=0; m<nE; m++)
-      {
-        G4double xi=P0[k1][m];
-        x[m]=xi+(P0[k][m]-xi)*b;
-        G4double yi=P1[k1][m];
-        y[m]=yi+(P1[k][m]-yi)*b;
-        G4double zi=P2[k1][m];
-        z[m]=zi+(P2[k][m]-zi)*b;
-      }
-      r=L[k];
-      if(L[k1]<r) r=L[k1];
-    }
-  }
-  return r;
-}
-
-G4double G4QMuonNuclearCrossSection::GetExchangeEnergy()
-{
-  // @@ All constants are copy of that from GetCrossSection funct. => Make them general.
-  static const G4int nE=336; // !!  If change this, change it in GetFunctions() (*.hh) !!
-  static const G4int mL=nE-1;
-  static const G4double EMi=2.0612;          // Minimum Energy
-  static const G4double EMa=50000.;          // Maximum Energy
-  static const G4double lEMi=std::log(EMi);       // Minimum logarithmic Energy
-  static const G4double lEMa=std::log(EMa);       // Maximum logarithmic Energy
-  static const G4double dlnE=(lEMa-lEMi)/mL; // Logarithmic step in Energy
-  static const G4double mmu=105.65839;       // Mass of muon in MeV
-  static const G4double lmmu=std::log(mmu);       // Log of muon mass
-  G4double phLE=0.;                     // Prototype of the log(nu=E_gamma)
-  G4double Y[nE];                       // Prepare the array for randomization
-#ifdef debug
-  G4cout<<"G4QMuonNuclCrossSect::GetExchanEn:B="<<lastF<<",l="<<lastL<<",1="<<lastJ1[lastL]
-        <<",2="<<lastJ2[lastL]<<",3="<<lastJ3[lastL]<<",S="<<lastSig<<",E="<<lastE<<G4endl;
-#endif
-  G4double lastLE=lastG+lmmu;           // recover log(eE) from the gamma (lastG)
-  G4double dlg1=lastG+lastG-1.;
-  G4double lgoe=lastG/lastE;
-  for(G4int i=lastF;i<=lastL;i++)
-    Y[i]=dlg1*lastJ1[i]-lgoe*(lastJ2[i]+lastJ2[i]-lastJ3[i]/lastE);
-  G4double ris=lastSig*G4UniformRand(); // Sig can be > Y[lastL=mL], then it is funct. reg.
-#ifdef debug
-  G4cout<<"G4QMuonNuclearCrossSection::GetExchangeEnergy: "<<ris<<",Y="<<Y[lastL]<<G4endl;
-#endif
-  if(ris<Y[lastL])                      // Search in the table
-  {
-    G4int j=lastF;
-    G4double Yj=Y[j];                   // It mast be 0 (some times just very small)
-    while (ris>Yj && j<lastL)           // Associative search
-    {
-      j++;
-      Yj=Y[j];                          // High value
-    }
-    G4int j1=j-1;
-    G4double Yi=Y[j1];                  // Low value
-    phLE=lEMi+(j1+(ris-Yi)/(Yj-Yi))*dlnE;
-#ifdef debug
-    G4cout<<"G4QMuNuclearCS::E="<<phLE<<",l="<<lEMi<<",j="<<j<<",ris="<<ris<<",Yi="<<Yi
-          <<",Y="<<Yj<<G4endl;
-#endif
-  }
-  else                                  // Search with the function
-  {
-    if(lastL<mL)
-      G4cerr<<"**G4QMuonNucCS::GetExEn:L="<<lastL<<",S="<<lastSig<<",Y="<<Y[lastL]<<G4endl;
-    G4double f=(ris-Y[lastL])/lastH;    // ScaledResidualValue of the cross-sec. integral
-#ifdef pdebug
-    G4cout<<"G4QMuNucCS::GetExEn:HighEnergy f="<<f<<",ris="<<ris<<",lastH="<<lastH<<G4endl;
-#endif
-    phLE=SolveTheEquation(f);           // Solve equation to find theLog(phE) (comp lastLE)
-#ifdef pdebug
-    G4cout<<"G4QMuonNuclearCrossSection::GetExchangeEnergy:HighEnergy lphE="<<phLE<<G4endl;
-#endif
-  }
-  if(phLE>lastLE)
-  {
-    G4cerr<<"***G4QMuNuclearCS::GetExEnergy: N="<<lastN<<",Z="<<lastZ<<",lpE"<<phLE<<">leE"
-          <<lastLE<<",Sig="<<lastSig<<",rndSig="<<ris<<",Beg="<<lastF<<",End="<<lastL
-          <<",Y="<<Y[lastL]<<G4endl;
-    if(lastLE<7.2) phLE=std::log(std::exp(lastLE)-mmu);
-    else phLE=7.;
-  }
-  return std::exp(phLE);
-}
-
-G4double G4QMuonNuclearCrossSection::SolveTheEquation(G4double f)
-{
-  // This parameters must correspond to the G4PhotonuclearCrossSec::GetCrossSec parameters
-  static const G4double shd=1.0734;                    // HE PomShadowing(D)
-  static const G4double poc=0.0375;                    // HE Pomeron coefficient
-  static const G4double pos=16.5;                      // HE Pomeron shift
-  static const G4double reg=.11;                       // HE Reggeon slope
-  static const G4double EMa=50000.;                    // Maximum Energy
-  static const G4double mmu=105.65839;                 // Mass of muon in MeV
-  static const G4double lmmu=std::log(mmu);                 // Log of muon mass
-  static const G4double z=std::log(EMa);                    // Initial argument
-  static const G4double p=poc*(z-pos)+shd*std::exp(-reg*z); // CrossX on theHighTabEdge
-  static const G4int    imax=27;   // Not more than "imax" steps to find the solution
-  static const G4double eps=0.001; // Accuracy which satisfies the search
-  G4double lastLE=lastG+lmmu;                 // recover log(eE) from the gamma (lastG)
-  G4double topLim=lastLE-.001;                // maximum log(phE) for equivalent photons
-  G4double rE=EMa/std::exp(lastLE);                // r=EMa/Eel to make the firs guess
-  G4double x=z+f/p/(lastG*(2.-rE*(2.-rE))-1.);// First guess (the first step from the edge)
-#ifdef pdebug
-  G4cout<<"G4QMuNucCS::SolveTheEq: e="<<eps<<",f="<<f<<",z="<<z<<",p="<<p<<",lastG="<<lastG
-        <<",x="<<x<<G4endl;
-#endif
-  if(x>topLim) x=topLim;
-  for(G4int i=0; i<imax; i++)
-  {
-    G4double fx=Fun(x);
-    G4double df=DFun(x);
-    G4double d=(f-fx)/df;
-    x=x+d;
-#ifdef pdebug
-    G4cout<<"G4QMuNCS::SolveEq:i="<<i<<",d="<<d<<",x="<<x<<",fx="<<fx<<",df="<<df<<G4endl;
-#endif
-    if(x>=lastLE)
-    {
-      G4cerr<<"*G4QMuNCS::SolveTheEq:*Correction*"<<i<<",d="<<d<<",x="<<x<<">lE="<<lastLE
-            <<",f="<<f<<",fx="<<fx<<",df="<<df<<",A(Z="<<lastZ<<",N="<<lastN<<")"<<G4endl;
-      x=topLim;
-      if(i)G4Exception("G4QMuonNuclearCrossSec::SolveTheEq()","009",FatalException,"E>eE");
-    }
-    if(std::fabs(d)<eps) break;
-    if(i+1>=imax) G4cerr<<"*G4QMuNucCS::SolveTheE:"<<i+2<<">"<<imax<<"->Use bigMax ln(eE)="
-                        <<lastLE<<",Z="<<lastZ<<", N="<<lastN<<G4endl;
-  }
-  return x;
-}
-
-// Randomize Q2 for the scattered muon when nu is already known
-G4double G4QMuonNuclearCrossSection::GetExchangeQ2(G4double nu)
-{
-  static const G4double mmu=105.65839;  // Mass of muon in MeV
-  static const G4double mmu2=mmu*mmu;   // Squared Mass of muon in MeV
-  G4double y=nu/lastE;                  // Part of energy carried by the equivalent pfoton
-  if(y>=1.-1./(lastG+lastG)) return 0.; // The region where the method does not work
-  G4double y2=y*y;                      // Squared photonic part of energy
-  G4double ye=1.-y;                     // Part of energy carried by the secondary muon
-  G4double Qi2=mmu2*y2/ye;              // Minimum Q2
-  G4double Qa2=4*lastE*lastE*ye;        // Maximum Q2
-  G4double iar=Qi2/Qa2;                 // Q2min/Q2max ratio
-  G4double Dy=ye+.5*y2;                 // D(y) function
-  G4double Py=ye/Dy;                    // P(y) function
-  G4double ePy=1.-std::exp(Py);              // 1-exp(P(y)) part
-  G4double Uy=Py*(1.-iar);              // U(y) function
-  G4double Fy=(ye+ye)*(1.+ye)*iar/y2;   // F(y) function
-  G4double fr=iar/(1.-ePy*iar);         // Q-fraction
-  if(Fy<=-fr)
-  {
-#ifdef edebug
-    G4cerr<<"***G4QMuonNucCS::GetExchQ2: Fy="<<Fy<<"+fr="<<fr<<" <0"<<",iar="<<iar<<G4endl;
-#endif
-    return 0.;
-  }    
-  G4double LyQa2=std::log(Fy+fr);            // L(y,Q2max) function
-  G4bool cond=true;
-  G4int maxTry=3;
-  G4int cntTry=0;
-  G4double Q2=Qi2;
-  while(cond&&cntTry<maxTry)            // The loop to avoid x>1.
-  {
-    G4double R=G4UniformRand();         // Random number (0,1)
-    Q2=Qi2*(ePy+1./(std::exp(R*LyQa2-(1.-R)*Uy)-Fy));
-    cntTry++;
-    cond = Q2>1878.*nu;
-  }
-  if(Q2<Qi2)
-  {
-#ifdef edebug
-    G4cerr<<"***G4QMuonNuclearCrossSect::GetExchangeQ2: Q2="<<Q2<<" < Q2min="<<Qi2<<G4endl;
-#endif
-    return Qi2;
-  }  
-  if(Q2>Qa2)
-  {
-#ifdef edebug
-    G4cerr<<"***G4QMuonNuclearCrossSect::GetExchangeQ2: Q2="<<Q2<<" > Q2max="<<Qi2<<G4endl;
-#endif
-    return Qa2;
-  }  
-  return Q2;
-}
-
-// This class can provide only virtual exchange photons for all nu's and Q2's
-G4int G4QMuonNuclearCrossSection::GetExchangePDGCode() {return 22;}
-
-G4double G4QMuonNuclearCrossSection::GetVirtualFactor(G4double nu, G4double Q2)
-{
-  static const G4double dM=938.27+939.57;// Mean double nucleon mass = m_n+m_p (no binding)
-  static const G4double Q0=843.;         // Coefficient of the dipole nucleonic form-factor
-  static const G4double Q02=Q0*Q0;       // Squared coefficient of theDipoleNuclFormFactor
-  static const G4double blK0=std::log(185.);  // Coefficient of the b-function
-  static const G4double bp=0.85;          // Power of the b-function
-  static const G4double clK0=std::log(1390.);  // Coefficient of the c-function
-  static const G4double cp=3.;            // Power of the c-function
-  //G4double x=Q2/dM/nu;                  // Direct x definition
-  G4double K=nu-Q2/dM;                    // K=nu*(1-x)
-  if(K<0.)
-  {
-#ifdef edebug
-    G4cerr<<"**G4QMuonNucCS::GetVirtFact:K="<<K<<",nu="<<nu<<",Q2="<<Q2<<",d="<<dM<<G4endl;
-#endif
-    return 0.;
-  }
-  G4double lK=std::log(K);                // ln(K)
-  G4double x=1.-K/nu;                     // This definitin saves one div.
-  G4double GD=1.+Q2/Q02;                  // Reversed nucleonic form-factor
-  G4double b=std::exp(bp*(lK-blK0));      // b-factor
-  G4double c=std::exp(cp*(lK-clK0));      // c-factor
-  G4double r=.5*std::log(Q2+nu*nu)-lK;    // r=.5*log((Q^2+nu^2)/K^2)
-  G4double ef=std::exp(r*(b-c*r*r));      // exponential factor
-  return (1.-x)*ef/GD/GD;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QNeutronNuclearCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QNeutronNuclearCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,436 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// The lust update: M.V. Kossov, CERN/ITEP(Moscow) 17-June-02
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QNeutronNuclearCrossSection for gamma+A cross sections
-// @@ A preliminary temporary class identical to G4QProtonNuclearCS. Must be improved. @@
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-03
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 15-Feb-04
-// --------------------------------------------------------------------------------
-// Short description: neutron-nuclear cross-section for hadronic CHIPS
-// -------------------------------------------------------------------
-//
-//#define debug
-//#define pdebug
-//#define debug3
-//#define debugn
-//#define debugs
-
-#include "G4QNeutronNuclearCrossSection.hh"
-
-// Initialization of the
-G4double* G4QNeutronNuclearCrossSection::lastLEN=0; // Pointer to the lastArray of LowEn CS
-G4double* G4QNeutronNuclearCrossSection::lastHEN=0; // Pointer to the lastArray of HighE CS
-G4int     G4QNeutronNuclearCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QNeutronNuclearCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QNeutronNuclearCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QNeutronNuclearCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QNeutronNuclearCrossSection::lastCS=0.; // Last value of the Cross Section
-G4int     G4QNeutronNuclearCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QNeutronNuclearCrossSection::GetPointer()
-{
-  static G4QNeutronNuclearCrossSection theCrossSection; //**Static body of Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QNeutronNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom,
-                                                       G4int tgZ, G4int tgN, G4int)
-{
-  static G4int j;                      // A#0f records found in DB for this projectile
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-  G4double pEn=pMom;
-#ifdef pdebug
-  G4cout<<"G4QNtCS::GetCS:>>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG=2212, P="<<pEn<<"("<<lastTH<<")"<<",Sz="<<colN.size()<<G4endl;
-#endif
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tgN!=lastN || tgZ!=lastZ)         // The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-    if(lastI) for(G4int i=0; i<lastI; i++) // The partType is found
-    {                                  // The nucleus with is found in AMDB
-      if(colN[i]==tgN && colZ[i]==tgZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QNtCS::GetCS:*Found* P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-#endif
-        if(pEn<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QNtCS::GetCS:Found T="<<pEn<<" < Threshold="<<lastTH<<",CS=0"<<G4endl;
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastCS =colCS[i];                // Last CrossSect (A-dependent)
- //        if(std::fabs(lastP/pMom-1.)<tolerance)
-        if(lastP==pMom)                 // VI do not use tolerance
-        {
-#ifdef pdebug
-          G4cout<<"G4QNeutronNuclCS::GetCS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-#endif
-          CalculateCrossSection(fCS,-1,j,2212,lastZ,lastN,pMom); // Update param's only
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QNtCS::G:UpdatDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,j,2212,lastZ,lastN,pMom); // read & update
-#ifdef pdebug
-        G4cout<<"G4QNeutronCS::GetCrosSec:*****>New (inDB) Calculated CS="<<lastCS<<G4endl;
-#endif
-        if(lastCS<=0. && pEn>lastTH)    // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QNtCS::GetCS: New T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-        break;                           // Go out of the LOOP
-      }
-#ifdef pdebug
-      G4cout<<"-->G4QNeutronNuclearCrossSec::GetCrosSec: pPDG=2212, j="<<j<<", N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<G4endl;
-#endif
-      j++;                             // Increment a#0f records found in DB
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QNtCS::GetCrosSec:CalcNew P="<<pMom<<",f="<<fCS<<",lastI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,j,2212,lastZ,lastN,pMom); //calculate & create
-      if(lastCS<=0.)
-      {
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QNeutronNuclCSec::GetCrossSect: NewThresh="<<lastTH<<",T="<<pEn<<G4endl;
-#endif
-        if(pEn>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QNeutCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QNtCS::GetCrosSec: New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-#endif
-      colN.push_back(tgN);
-      colZ.push_back(tgZ);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colCS.push_back(lastCS);
-#ifdef pdebug
-      G4cout<<"G4QNtCS::GetCS:1st,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QNeutronNuclearCrossSect::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-  else if(pEn<=lastTH)
-  {
-#ifdef pdebug
-    G4cout<<"G4QNeutCS::GetCS: Current T="<<pEn<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  //  else if(std::fabs(lastP/pMom-1.)<tolerance)
-  else if(lastP==pMom)                 // do not use tolerance
-  {
-#ifdef pdebug
-    G4cout<<"G4QNtCS::GetCS:OldCur P="<<pMom<<"="<<pMom<<", CS="<<lastCS*millibarn<<G4endl;
-#endif
-    return lastCS*millibarn;     // Use theLastCS
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"G4QNtCS::GetCS:UpdatCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastCS=CalculateCrossSection(fCS,1,j,2212,lastZ,lastN,pMom); // Only UpdateDB
-    lastP=pMom;
-  }
-#ifdef pdebug
-  G4cout<<"G4QNtCS::GetCroSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-#endif
-  return lastCS*millibarn;
-}
-
-// The main member function giving the gamma-A cross section (E in GeV, CS in mb)
-G4double G4QNeutronNuclearCrossSection::CalculateCrossSection(G4bool, G4int F, G4int I,
-                                        G4int, G4int targZ, G4int targN, G4double Momentum)
-{
-  static const G4double THmin=27.;     // minimum Momentum (MeV/c) Threshold
-  static const G4double THmiG=THmin*.001; // minimum Momentum (GeV/c) Threshold
-  static const G4double dP=10.;        // step for the LEN (Low ENergy) table MeV/c
-  static const G4double dPG=dP*.001;   // step for the LEN (Low ENergy) table GeV/c
-  static const G4int    nL=105;        // A#of LEN points in E (step 10 MeV/c)
-  static const G4double Pmin=THmin+(nL-1)*dP; // minP for the HighE part with safety
-  static const G4double Pmax=227000.;  // maxP for the HEN (High ENergy) part 227 GeV
-  static const G4int    nH=224;        // A#of HEN points in lnE
-  static const G4double milP=std::log(Pmin);// Low logarithm energy for the HEN part
-  static const G4double malP=std::log(Pmax);// High logarithm energy (each 2.75 percent)
-  static const G4double dlP=(malP-milP)/(nH-1); // Step in log energy in the HEN part
-  static const G4double milPG=std::log(.001*Pmin);// Low logEnergy for the HEN part GeV/c
-  //
-  // Associative memory for acceleration
-  //static std::vector <G4double>  spA;  // shadowing coefficients (A-dependent)
-  static std::vector <G4double*> LEN;  // Vector of pointers to LowEnProtonCrossSection
-  static std::vector <G4double*> HEN;  // Vector of pointers to HighEnProtonCrossSection
-#ifdef debug
-  G4cout<<"G4QNeutronNuclearCS::CalcCS: N="<<targN<<",Z="<<targZ<<",P="<<Momentum<<G4endl;
-#endif
-  if (Momentum<THmin) return 0.;       // @@ This can be dangerouse for the heaviest nuc.!
-  G4double sigma=0.;
-  if(F&&I) sigma=0.;                   // @@ *!* Fake line *!* to use F & I !!!Temporary!!!
-  G4double A=targN+targZ;              // A of the target
-  if(F<=0)                           // This isotope was not the last used isotop
-  {
-    if(F<0)                          // This isotope was found in DAMDB =========> RETRIEVE
-    {
-      lastLEN=LEN[I];                // Pointer to prepared LowEnergy cross sections
-      lastHEN=HEN[I];                // Pointer to prepared High Energy cross sections
-    }
-    else                             // This isotope wasn't calculated previously => CREATE
-    {
-      lastLEN = new G4double[nL];    // Allocate memory for the new LEN cross sections
-      lastHEN = new G4double[nH];    // Allocate memory for the new HEN cross sections
-      // --- Instead of making a separate function ---
-      G4double P=THmiG;              // Table threshold in GeV/c
-      for(G4int m=0; m<nL; m++)
-      {
-        lastLEN[m] = CrossSectionLin(targZ, targN, P);
-        P+=dPG;
-      }
-      G4double lP=milPG;
-      for(G4int n=0; n<nH; n++)
-      {
-        lastHEN[n] = CrossSectionLog(targZ, targN, lP);
-        lP+=dlP;
-      }
-      // --- End of possible separate function
-      // *** The synchronization check ***
-      G4int sync=LEN.size();
-      if(sync!=I) G4cerr<<"***G4QNeutronNuclCS::CalcCrossSect:Sync="<<sync<<"#"<<I<<G4endl;
-      LEN.push_back(lastLEN);          // added LEN, found by AH 10/7/02
-      HEN.push_back(lastHEN);          // added HEN, found by AH 10/7/02
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW the Magic Formula =================================
-  if (Momentum<lastTH) return 0.;      // It must be already checked in the interface class
-  else if (Momentum<Pmin)                     // High Energy region
-  {
-#ifdef debug
-    G4cout<<"G4QNeutCS::CalcCS:bLEN A="<<A<<", nL="<<nL<<",TH="<<THmin<<",dP="<<dP<<G4endl;
-#endif
-    if(A<=1.) sigma=0.;
-    else      sigma=EquLinearFit(Momentum,nL,THmin,dP,lastLEN);
-#ifdef debugn
-    if(sigma<0.)
-      G4cout<<"G4QNeutCS::CalcCS:A="<<A<<",E="<<Momentum<<",T="<<THmin<<",dP="<<dP<<G4endl;
-#endif
-  }
-  else if (Momentum<Pmax)                     // High Energy region
-  {
-    G4double lP=std::log(Momentum);
-#ifdef debug
-    G4cout<<"G4QNeutNucCS::CalcCS: before HEN nH="<<nH<<",iE="<<milP<<",dlP="<<dlP<<G4endl;
-#endif
-    sigma=EquLinearFit(lP,nH,milP,dlP,lastHEN);
-  }
-  else                                      // UHE region (calculation, not frequent)
-  {
-    G4double P=0.001*Momentum;              // Approximation formula is for P in GeV/c
-    sigma=CrossSectionFormula(targZ, targN, P, std::log(P));
-  }
-#ifdef debug
-  G4cout<<"G4QNeutronNuclearCrossSection::CalcCS: sigma="<<sigma<<G4endl;
-#endif
-  if(sigma<0.) return 0.;
-  return sigma;
-}
-
-// Electromagnetic momentum-threshold (in MeV/c) 
-G4double G4QNeutronNuclearCrossSection::ThresholdMomentum(G4int tZ, G4int tN)
-{
-  static const G4double third=1./3.;
-  static const G4double pM = G4QPDGCode(2212).GetMass(); // Proton mass in MeV
-  static const G4double tpM= pM+pM;       // Doubled proton mass (MeV)
-  G4double tA=tZ+tN;
-  if(tZ<.99 || tN<0.) return 0.;
-  //G4double dE=1.263*tZ/(1.+std::pow(tA,third));
-  G4double dE=tZ/(1.+std::pow(tA,third)); // Safety for diffused edge of the nucleus (QE)
-  return std::sqrt(dE*(tpM+dE));
-}
-
-// Calculation formula for proton-nuclear inelastic cross-section (mb) (P in GeV/c)
-G4double G4QNeutronNuclearCrossSection::CrossSectionLin(G4int tZ, G4int tN, G4double P)
-{
-  G4double sigma=0.;
-  if(P<ThresholdMomentum(tZ,tN)*.001) return sigma;
-  G4double lP=std::log(P);
-  if(tZ==1&&!tN){if(P>.35) sigma=CrossSectionFormula(tZ,tN,P,lP);}// s(pp)=0 below 350Mev/c
-  else if(tZ<93 && tN<239)                // General solution
-  {
-    G4double pex=0.;
-    G4double pos=0.;
-    G4double wid=1.;
-    if(tZ==13 && tN==14)                  // Excited metastable states
-    {
-      pex=230.;
-      pos=.13;
-      wid=8.e-5;
-    }
-    else if(tZ<7)
-    {
-      if(tZ==6 && tN==6)
-      {
-        pex=320.;
-        pos=.14;
-        wid=7.e-6;
-      }
-      else if(tZ==4 && tN==5)
-      {
-        pex=600.;
-        pos=.132;
-        wid=.005;
-      }
-      else if(tZ==3 && tN==4)
-      {
-        pex=280.;
-        pos=.19;
-        wid=.0025;
-      }
-      else if(tZ==3 && tN==3)
-      {
-        pex=370.;
-        pos=.171;
-        wid=.006;
-      }
-      else if(tZ==2 && tN==1)
-      {
-        pex=30.;
-        pos=.22;
-        wid=.0005;
-      }
-    }
-    sigma=CrossSectionFormula(tZ,tN,P,lP);
-    if(pex>0.)
-    {
-      G4double dp=P-pos;
-      sigma+=pex*std::exp(dp*dp/wid);
-    }
-  }
-  else
-  {
-    G4cerr<<"-Warning-G4QNeutronNuclearCrosSect::CSLin:*Bad A* Z="<<tZ<<", N="<<tN<<G4endl;
-    sigma=0.;
-  }
-  if(sigma<0.) return 0.;
-  return sigma;  
-}
-
-// Calculation formula for proton-nuclear inelastic cross-section (mb) log(P in GeV/c)
-G4double G4QNeutronNuclearCrossSection::CrossSectionLog(G4int tZ, G4int tN, G4double lP)
-{
-  G4double P=std::exp(lP);
-  return CrossSectionFormula(tZ, tN, P, lP);
-}
-// Calculation formula for proton-nuclear inelastic cross-section (mb) log(P in GeV/c)
-G4double G4QNeutronNuclearCrossSection::CrossSectionFormula(G4int tZ, G4int tN,
-                                                           G4double P, G4double lP)
-{
-  G4double sigma=0.;
-  if(tZ==1 && !tN)                        // np=pp interaction
-  {
-    G4double sp=std::sqrt(P);
-    G4double ds=lP-4.2;
-    G4double dp=P-.35;
-    G4double d3=dp*dp*dp;
-    sigma=(33.+.2*ds*ds)/(1.+.4/sp)/(1.+.5/d3/d3);
-  }
-  else if(tZ<93 && tN<146)                // General solution
-  {
-    G4double lP=std::log(P);
-    G4double d=lP-4.2;
-    G4double p2=P*P;
-    G4double p4=p2*p2;
-    G4double a=tN+tZ;                       // A of the target
-    G4double al=std::log(a);
-    G4double a2=a*a;
-    G4double a4=a2*a2;
-    G4double a8=a4*a4;
-    G4double a12=a8*a4;
-    G4double a16=a8*a8;
-    G4double c=170./(1.+5./std::exp(al*1.6));
-    G4double dl=al-2.8;
-    G4double r=.3+.2*dl*dl;
-    G4double g=40.*std::exp(al*0.712)/(1.+12.2/a)/(1.+34./a2);
-    G4double e=318.+a4/(1.+.0015*a4/std::exp(al*0.09))/(1.+4.e-28*a12)+
-               8.e-18/(1./a16+1.3e-20)/(1.+1.e-21*a12);
-    G4double s=3.57+.009*a2/(1.+.0001*a2*a);
-    G4double h=(.01/a4+2.5e-6/a)*(1.+7.e-8*a4)/(1.+6.e7/a12/a2);
-    sigma=(c+d*d)/(1.+r/p4)+(g+e*std::exp(-s*P))/(1.+h/p4/p4);
-  }
-  else
-  {
-    G4cerr<<"-Warning-G4QNeutronNuclearCroSect::CSForm:*Bad A* Z="<<tZ<<", N="<<tN<<G4endl;
-    sigma=0.;
-  }
-  if(sigma<0.) return 0.;
-  return sigma;  
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QNuENuclearCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QNuENuclearCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,772 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QNuENuclearCrossSection.cc,v 1.4 2009/05/08 15:16:26 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QNuENuclearCrossSection for A(nu_e,e-) cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 24-SEP-2007
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 24-SEP-2007
-// 
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-//=========================================================================================
-
-//#define debug
-//#define edebug
-//#define pdebug
-//#define ppdebug
-//#define tdebug
-//#define sdebug
-
-#include "G4QNuENuclearCrossSection.hh"
-
-// Initialization of the
-G4bool    G4QNuENuclearCrossSection::onlyCS=true;// Flag to calculate only CS (not QE)
-G4double  G4QNuENuclearCrossSection::lastSig=0.;// Last calculated total cross section
-G4double  G4QNuENuclearCrossSection::lastQEL=0.;// Last calculated quasi-el. cross section
-G4int     G4QNuENuclearCrossSection::lastL=0;   // Last used in cross section TheLastBin
-G4double  G4QNuENuclearCrossSection::lastE=0.;  // Last used in cross section TheEnergy
-G4double* G4QNuENuclearCrossSection::lastEN=0;  // Pointer to the Energy Scale of TX & QE
-G4double* G4QNuENuclearCrossSection::lastTX=0;  // Pointer to the LastArray of TX function
-G4double* G4QNuENuclearCrossSection::lastQE=0;  // Pointer to the LastArray of QE function
-G4int     G4QNuENuclearCrossSection::lastPDG=0; // The last PDG code of the projectile
-G4int     G4QNuENuclearCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QNuENuclearCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QNuENuclearCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QNuENuclearCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QNuENuclearCrossSection::lastCS=0.; // Last value of the Cross Section
-G4int     G4QNuENuclearCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QNuENuclearCrossSection::GetPointer()
-{
-  static G4QNuENuclearCrossSection theCrossSection; //**Static body of the Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QNuENuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom,
-                                                     G4int tgZ, G4int tgN, G4int pPDG)
-{
-  static G4int j;                      // A#0f records found in DB for this projectile
-  static std::vector <G4int>    colPDG;// Vector of the projectile PDG code
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-  G4double pEn=pMom;
-#ifdef debug
-  G4cout<<"G4QNENCS::GetCS:>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG="<<pPDG<<"("<<lastPDG<<"), T="<<pEn<<"("<<lastTH<<")"<<",Sz="
-        <<colN.size()<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  if(pPDG!=12)
-  {
-#ifdef debug
-    G4cout<<"G4QNENCS::GetCS: *** Found pPDG="<<pPDG<<" ====> CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // projectile PDG=0 is a mistake (?!) @@
-  }
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tgN!=lastN || tgZ!=lastZ || pPDG!=lastPDG)// The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastPDG = pPDG;                    // The last PDG of the projectile
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-    if(lastI) for(G4int i=0; i<lastI; i++) if(colPDG[i]==pPDG) // The partType is found
-    {                                  // The nucleus with projPDG is found in AMDB
-      if(colN[i]==tgN && colZ[i]==tgZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QNENCS::GetCS:*Found*P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(pEn<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QNENCS::GetCS:Found T="<<pEn<<" < Threshold="<<lastTH<<",X=0"<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastCS =colCS[i];                // Last CrossSect (A-dependent)
-        if(std::fabs(lastP/pMom-1.)<tolerance)
-        {
-#ifdef pdebug
-          G4cout<<"G4QNENCS::GetCS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QNENCS::G:UpdaDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // read & update
-#ifdef pdebug
-        G4cout<<"G4QNENCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(lastCS<=0. && pEn>lastTH)    // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QNENCS::GetCS: New T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-        break;                           // Go out of the LOOP
-      }
-#ifdef pdebug
-      G4cout<<"---G4QNENCrossSec::GetCrosSec:pPDG="<<pPDG<<",j="<<j<<",N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<",cPDG="<<colPDG[i]<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      j++;                             // Increment a#0f records found in DB for this pPDG
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QNENCS::GetCrSec: CalcNew P="<<pMom<<",f="<<fCS<<",lastI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,j,lastPDG,lastZ,lastN,pMom); //calculate & create
-      if(lastCS<=0.)
-      {
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QNENCrossSection::GetCrossSect:NewThresh="<<lastTH<<",T="<<pEn<<G4endl;
-#endif
-        if(pEn>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QNENCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QNENCS::GetCrosSec:New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      colN.push_back(tgN);
-      colZ.push_back(tgZ);
-      colPDG.push_back(pPDG);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colCS.push_back(lastCS);
-#ifdef pdebug
-      G4cout<<"G4QNENCS::GetCS:1st,P="<<pMom<<"(MeV),X="<<lastCS*millibarn<<"(mb)"<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QNENCS::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colPDG[lastI]=pPDG;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-  else if(pEn<=lastTH)
-  {
-#ifdef pdebug
-    G4cout<<"G4QNENCS::GetCS: Current T="<<pEn<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  else if(std::fabs(lastP/pMom-1.)<tolerance)
-  {
-#ifdef pdebug
-    G4cout<<"G4QNENCS::GetCS:OldCur P="<<pMom<<"="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return lastCS*millibarn;     // Use theLastCS
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"G4QNENCS::GetCS:UpdaCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastCS=CalculateCrossSection(fCS,1,j,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-    lastP=pMom;
-  }
-#ifdef pdebug
-  G4cout<<"G4QNENCS::GetCrSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  return lastCS*millibarn;
-}
-
-// Gives the threshold energy = the same for all nuclei (@@ can be reduced for hevy nuclei)
-G4double G4QNuENuclearCrossSection::ThresholdEnergy(G4int Z, G4int N, G4int)
-{
-  //static const G4double mNeut = G4NucleiProperties::GetNuclearMass(1,0)/GeV;
-  //static const G4double mProt = G4NucleiProperties::GetNuclearMass(1,1)/GeV;
-  //static const G4double mDeut = G4NucleiProperties::GetNuclearMass(2,1)/GeV/2.;
-  static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV)
-  static const G4double dmN=mN+mN;    // Doubled nucleon mass (2*AtomicMassUnit, GeV)
-  static const G4double me=.00051099892; // electron mass in GeV
-  static const G4double me2=me*me;    // Squared mass of an electron in GeV^2
-  static const G4double thresh=me+me2/dmN; // Universal threshold in GeV
-  // ---------
-  //static const G4double infEn = 9.e27;
-  G4double dN=0.;
-  if(Z>0||N>0) dN=thresh*GeV; // @@ if upgraded, change it in a total cross section
-  //@@ "dN=me+me2/G4NucleiProperties::GetNuclearMass(<G4double>(Z+N),<G4double>(Z)/GeV"
-  return dN;
-}
-
-// The main member function giving the gamma-A cross section (E_kin in MeV, CS in mb)
-G4double G4QNuENuclearCrossSection::CalculateCrossSection(G4bool CS, G4int F, G4int I,
-                                        G4int, G4int targZ, G4int targN, G4double Momentum)
-{
-  static const G4double mb38=1.E-11;// Conversion 10^-38 cm^2 to mb=10^-27 cm^2
-  static const G4int nE=65;        // !! If change this, change it in GetFunctions()33/65!!
-  static const G4int mL=nE-1;
-  static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV)
-  static const G4double dmN=mN+mN;      // Doubled nucleon mass (2*AtomicMassUnit, GeV)
-  static const G4double me=.00051099892;// electron mass in GeV
-  static const G4double me2=me*me;      // Squared mass of an electron in GeV^2
-  static const G4double EMi=me+me2/dmN; // Universal threshold of the reaction in GeV
-  static const G4double EMa=300.;       // Maximum tabulated Energy of nu_e in GeV 
-  // *** Begin of the Associative memory for acceleration of the cross section calculations
-  static std::vector <G4double> colH;   //?? Vector of HighEnergyCoefficients (functional)
-  static std::vector <G4double*> TX;    // Vector of pointers to the TX tabulated functions
-  static std::vector <G4double*> QE;    // Vector of pointers to the QE tabulated functions
-  static G4bool first=true;             // Flag of initialization of the energy axis
-  // *** End of Static Definitions (Associative Memory) ***
-  //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Electron
-  //G4double TotEnergy2=Momentum;
-  onlyCS=CS;                            // Flag to calculate only CS (not TX & QE)
-  lastE=Momentum/GeV;                   // Kinetic energy of the electron neutrino (in GeV)
-  if (lastE<=EMi)                       // Energy is below the minimum energy in the table
-  {
-    lastE=0.;
-    lastSig=0.;
-    return 0.;
-  }
-  G4int Z=targZ;                        // New Z, which can change the sign
-  if(F<=0)                              // This isotope was not the last used isotop
-  {
-    if(F<0)                          // This isotope was found in DAMDB =========> RETRIEVE
-    {
-      lastTX =TX[I];                 // Pointer to the prepared TX function (same isotope)
-      lastQE =QE[I];                 // Pointer to the prepared QE function (same isotope)
-   }
-   else                              // This isotope wasn't calculated previously => CREATE
-   {
-      if(first)
-      {
-        lastEN = new G4double[nE];   // This must be done only once!
-        Z=-Z;                        // To explain GetFunctions that E-axis must be filled
-        first=false;                 // To make it only once
-      }
-      lastTX = new G4double[nE];     // Allocate memory for the new TX function
-      lastQE = new G4double[nE];     // Allocate memory for the new QE function
-      G4int res=GetFunctions(Z,targN,lastTX,lastQE,lastEN);//@@analize(0=first,-1=bad,1=OK)
-      if(res<0) G4cerr<<"*W*G4NuENuclearCS::CalcCrossSect:Bad Function Retrieve"<<G4endl;
-      // *** The synchronization check ***
-      G4int sync=TX.size();
-      if(sync!=I) G4cerr<<"***G4NuENuclearCS::CalcCrossSect:Sync.="<<sync<<"#"<<I<<G4endl;
-      TX.push_back(lastTX);
-      QE.push_back(lastQE);
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW Calculate the Cross Section =====================
-  if (lastE<=EMi)                   // Check that the neutrinoEnergy is higher than ThreshE
-  {
-    lastE=0.;
-    lastSig=0.;
-    return 0.;
-  }
-  if(lastE<EMa) // Linear fit is made explicitly to fix the last bin for the randomization
-  {
-    G4int chk=1;
-    G4int ran=mL/2;
-    G4int sep=ran;  // as a result = an index of the left edge of the interval
-    while(ran>=2)
-    {
-      G4int newran=ran/2;
-      if(lastE<=lastEN[sep]) sep-=newran;
-      else                   sep+=newran;
-      ran=newran;
-      chk=chk+chk; 
-    }
-    if(chk+chk!=mL) G4cerr<<"*Warn*G4NuENuclearCS::CalcCS:Table! mL="<<mL<<G4endl;
-    G4double lowE=lastEN[sep];
-    G4double highE=lastEN[sep+1];
-    G4double lowTX=lastTX[sep];
-    if(lastE<lowE||sep>=mL||lastE>highE)
-      G4cerr<<"*Warn*G4NuENuclearCS::CalcCS:Bin! "<<lowE<<" < "<<lastE<<" < "<<highE
-            <<", sep="<<sep<<", mL="<<mL<<G4endl;
-    lastSig=lastE*(lastE-lowE)*(lastTX[sep+1]-lowTX)/(highE-lowE)+lowTX; // Recover *E
-    if(!onlyCS)                       // Skip the differential cross-section parameters
-    {
-      G4double lowQE=lastQE[sep];
-      lastQEL=(lastE-lowE)*(lastQE[sep+1]-lowQE)/(highE-lowE)+lowQE;
-#ifdef pdebug
-      G4cout<<"G4NuENuclearCS::CalcCS: T="<<lastSig<<",Q="<<lastQEL<<",E="<<lastE<<G4endl;
-#endif
-    }
-  }
-  else
-  {
-    lastSig=lastTX[mL]; // @@ No extrapolation, just a const, while it looks shrinking...
-    lastQEL=lastQE[mL];
-  }
-  if(lastQEL<0.) lastQEL = 0.;
-  if(lastSig<0.) lastSig = 0.;
-  // The cross-sections are expected to be in mb
-  lastSig*=mb38;
-  if(!onlyCS) lastQEL*=mb38;
-  return lastSig;
-}
-
-// Calculate the cros-section functions
-// ****************************************************************************************
-// *** This tables are the same for all lepto-nuclear reactions, only mass is different ***
-// ***@@ IT'S REASONABLE TO MAKE ADDiTIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR WITH THIS@@ ***
-// ****************************************************************************************
-G4int G4QNuENuclearCrossSection::GetFunctions(G4int z, G4int n,
-                                                     G4double* t, G4double* q, G4double* e)
-{
-  static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV)
-  static const G4double dmN=mN+mN;    // Doubled nucleon mass (2*AtomicMassUnit, GeV)
-  static const G4double me=.00051099892; // electron mass in GeV
-  static const G4double me2=me*me;    // Squared mass of an electron in GeV^2
-  static const G4double thresh=me+me2/dmN; // Universal threshold in GeV
-  static const G4int nE=65; // !! If change this, change it in CalculateCrossSection() !!
-  static const G4double nuEn[nE]={thresh,
-    .00051331,.00053602,.00056078,.00058783,.00061743,.00064990,.00068559,.00072492,
-    .00076834,.00081641,.00086975,.00092912,.00099536,.00106950,.00115273,.00124646,
-    .00135235,.00147241,.00160901,.00176503,.00194392,.00214986,.00238797,.00266448,
-    .00298709,.00336531,.00381094,.00433879,.00496745,.00572047,.00662785,.00772806,
-    .00907075,.01072050,.01276190,.01530660,.01850330,.02255110,.02771990,.03437780,
-    .04303240,.05438970,.06944210,.08959920,.11688400,.15423600,.20597200,.27851200,
-    .38153100,.52979600,.74616300,1.0665200,1.5480900,2.2834800,3.4251100,5.2281000,
-    8.1270200,12.875900,20.808500,34.331200,57.877800,99.796200,176.16300,318.68200};
-  static const G4double TOTX[nE]={0.,
-    .00047551,.00162896,.00232785,.00292938,.00349456,.00404939,.00460908,.00518455,
-    .00578488,.00641848,.00709376,.00781964,.00860585,.00946334,.01040460,.01144420,
-    .01259910,.01388920,.01533830,.01697480,.01883260,.02095280,.02338500,.02618960,
-    .02944060,.03322870,.03766580,.04289050,.04907540,.06123530,.07521120,.09034730,
-    .10803800,.12856800,.15277600,.18174900,.21764300,.26083100,.31424900,.37935600,
-    .45871900,.55375100,.66506600,.79039400,.92276600,1.0489000,1.1500300,1.2071700,
-    1.2096800,1.1612200,1.0782900,.98251100,.89137400,.81472700,.75500100,.71061200,
-    .67873900,.65619000,.64098400,.63085100,.62389900,.61664900,.61261000,.60635700};
-  static const G4double QELX[nE]={0.,
-  2.44084e-7,8.73147e-7,1.30540e-6,1.72196e-6,2.15765e-6,2.63171e-6,3.15996e-6,3.75836e-6,
-  4.44474e-6,5.24008e-6,6.16982e-6,7.26537e-6,8.56595e-6,1.01211e-5,1.19937e-5,1.42647e-5,
-  1.70384e-5,2.04506e-5,2.46796e-5,2.99611e-5,3.66090e-5,4.50456e-5,5.58425e-5,6.97817e-5,
-  8.79417e-5,.000111825,.000143542,.000186093,.000243780,.000350295,.000498489,.000698209,
-  .000979989,.001378320,.001949710,.002781960,.004027110,.005882030,.008710940,.013041400,
-  .019739800,.030118300,.046183600,.070818700,.107857000,.161778000,.236873000,.336212000,
-  .455841000,.565128000,.647837000,.701208000,.729735000,.742062000,.746495000,.748182000,
-  .749481000,.750637000,.751471000,.752237000,.752763000,.753103000,.753159000,.753315000};
-
-  // --------------------------------
-  G4int first=0;
-  if(z<0.)
-  {
-    first=1;
-    z=-z;
-  }
-  if(z<1 || z>92)             // neutron and plutonium are forbidden
-  {
-    G4cout<<"***G4QNuENuclearCrossSection::GetFunctions:Z="<<z<<".No CS returned"<<G4endl;
-    return -1;
-  }
-  for(G4int k=0; k<nE; k++)
-  {
-    G4double a=n+z;
-    G4double na=n+a;
-    G4double dn=n+n;
-    G4double da=a+a;
-    G4double ta=da+a;
-    if(first) e[k]=nuEn[k];       // Energy of neutrino E (first bin k=0 can be modified)
-    t[k]=TOTX[k]*nuEn[k]*(na+na)/ta+QELX[k]*(dn+dn-da)/ta; // TotalCrossSection
-    q[k]=QELX[k]*dn/a;                                     // QuasiElasticCrossSection
-  }
-  return first;
-}
-
-// Randomize Q2 from neutrino to the scattered electron when scattering is quasi-elastic
-G4double G4QNuENuclearCrossSection::GetQEL_ExchangeQ2()
-{
-  static const G4double me=.00051099892; // electron mass in GeV
-  static const G4double me2=me*me;     // Squared mass of an electron in GeV^2
-  static const G4double hme2=me2/2;    // .5*m_e^2 in GeV^2
-  static const G4double MN=.931494043; // Nucleon mass (inside nucleus, atomicMassUnit,GeV)
-  static const double MN2=MN*MN;       // M_N^2 in GeV^2
-  static const G4double power=-3.5;    // direct power for the magic variable
-  static const G4double pconv=1./power;// conversion power for the magic variable
-  static const G4int nQ2=101;          // #Of point in the Q2l table (in GeV^2)
-  static const G4int lQ2=nQ2-1;        // index of the last in the Q2l table
-  static const G4int bQ2=lQ2-1;        // index of the before last in the Q2 ltable
-  // Reversed table
-  static const G4double Xl[nQ2]={1.87905e-10,
- .005231, .010602, .016192, .022038, .028146, .034513, .041130, .047986, .055071, .062374,
- .069883, .077587, .085475, .093539, .101766, .110150, .118680, .127348, .136147, .145069,
- .154107, .163255, .172506, .181855, .191296, .200825, .210435, .220124, .229886, .239718,
- .249617, .259578, .269598, .279675, .289805, .299986, .310215, .320490, .330808, .341169,
- .351568, .362006, .372479, .382987, .393527, .404099, .414700, .425330, .435987, .446670,
- .457379, .468111, .478866, .489643, .500441, .511260, .522097, .532954, .543828, .554720,
- .565628, .576553, .587492, .598447, .609416, .620398, .631394, .642403, .653424, .664457,
- .675502, .686557, .697624, .708701, .719788, .730886, .741992, .753108, .764233, .775366,
- .786508, .797658, .808816, .819982, .831155, .842336, .853524, .864718, .875920, .887128,
- .898342, .909563, .920790, .932023, .943261, .954506, .965755, .977011, .988271, .999539};
-  // Direct table
-  static const G4double Xmax=Xl[lQ2];
-  static const G4double Xmin=Xl[0];
-  static const G4double dX=(Xmax-Xmin)/lQ2;  // step in X(Q2, GeV^2)
-  static const G4double inl[nQ2]={0,
- 1.88843, 3.65455, 5.29282, 6.82878, 8.28390, 9.67403, 11.0109, 12.3034, 13.5583, 14.7811,
- 15.9760, 17.1466, 18.2958, 19.4260, 20.5392, 21.6372, 22.7215, 23.7933, 24.8538, 25.9039,
- 26.9446, 27.9766, 29.0006, 30.0171, 31.0268, 32.0301, 33.0274, 34.0192, 35.0058, 35.9876,
- 36.9649, 37.9379, 38.9069, 39.8721, 40.8337, 41.7920, 42.7471, 43.6992, 44.6484, 45.5950,
- 46.5390, 47.4805, 48.4197, 49.3567, 50.2916, 51.2245, 52.1554, 53.0846, 54.0120, 54.9377,
- 55.8617, 56.7843, 57.7054, 58.6250, 59.5433, 60.4603, 61.3761, 62.2906, 63.2040, 64.1162,
- 65.0274, 65.9375, 66.8467, 67.7548, 68.6621, 69.5684, 70.4738, 71.3784, 72.2822, 73.1852,
- 74.0875, 74.9889, 75.8897, 76.7898, 77.6892, 78.5879, 79.4860, 80.3835, 81.2804, 82.1767,
- 83.0724, 83.9676, 84.8622, 85.7563, 86.6499, 87.5430, 88.4356, 89.3277, 90.2194, 91.1106,
- 92.0013, 92.8917, 93.7816, 94.6711, 95.5602, 96.4489, 97.3372, 98.2252, 99.1128, 100.000};
-  G4double Enu=lastE;                 // Get energy of the last calculated cross-section
-  G4double dEnu=Enu+Enu;              // doubled energy of nu/anu
-  G4double Enu2=Enu*Enu;              // squared energy of nu/anu
-  G4double ME=Enu*MN;                 // M*E
-  G4double dME=ME+ME;                 // 2*M*E
-  G4double dEMN=(dEnu+MN)*ME;
-  G4double MEm=ME-hme2;
-  G4double sqE=Enu*std::sqrt(MEm*MEm-me2*MN2);
-  G4double E2M=MN*Enu2-(Enu+MN)*hme2;
-  G4double ymax=(E2M+sqE)/dEMN;
-  G4double ymin=(E2M-sqE)/dEMN;
-  G4double rmin=1.-ymin;
-  G4double rhm2E=hme2/Enu2;
-  G4double Q2mi=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E)); // Q2_min(E_nu)
-  G4double Q2ma=dME*ymax;                                                  // Q2_max(E_nu)
-  G4double Xma=std::pow((1.+Q2mi),power);  // X_max(E_nu)
-  G4double Xmi=std::pow((1.+Q2ma),power);  // X_min(E_nu)
-  // Find the integral values integ(Xmi) & integ(Xma) using the direct table
-  G4double rXi=(Xmi-Xmin)/dX;
-  G4int    iXi=static_cast<int>(rXi);
-  if(iXi<0) iXi=0;
-  if(iXi>bQ2) iXi=bQ2;
-  G4double dXi=rXi-iXi;
-  G4double bnti=inl[iXi];
-  G4double inti=bnti+dXi*(inl[iXi+1]-bnti);
-  //
-  G4double rXa=(Xma-Xmin)/dX;
-  G4int    iXa=static_cast<int>(rXa);
-  if(iXa<0) iXa=0;
-  if(iXa>bQ2) iXa=bQ2;
-  G4double dXa=rXa-iXa;
-  G4double bnta=inl[iXa];
-  G4double inta=bnta+dXa*(inl[iXa+1]-bnta);
-  // *** Find X using the reversed table ***
-  G4double intx=inti+(inta-inti)*G4UniformRand();
-  G4int    intc=static_cast<int>(intx);
-  if(intc<0) intc=0;
-  if(intc>bQ2) intc=bQ2;         // If it is more than max, then the BAD extrapolation
-  G4double dint=intx-intc;
-  G4double mX=Xl[intc];
-  G4double X=mX+dint*(Xl[intc+1]-mX);
-  G4double Q2=std::pow(X,pconv)-1.;
-  return Q2*GeV*GeV;
-}
-
-// Randomize Q2 from neutrino to the scattered electron when scattering is not quasiElastic
-G4double G4QNuENuclearCrossSection::GetNQE_ExchangeQ2()
-{
-  static const double mpi=.13957018;    // charged pi meson mass in GeV
-  static const G4double me=.00051099892;// electron mass in GeV
-  static const G4double me2=me*me;      // Squared mass of an electron in GeV^2
-  static const G4double hme2=me2/2;     // .5*m_e^2 in GeV^2
-  static const double MN=.931494043;    // Nucleon mass (inside nucleus,atomicMassUnit,GeV)
-  static const double MN2=MN*MN;        // M_N^2 in GeV^2
-  static const double dMN=MN+MN;        // 2*M_N in GeV
-  static const double mcV=(dMN+mpi)*mpi;// constant of W>M+mc cut for Quasi-Elastic
-  static const G4int power=7;           // direct power for the magic variable
-  static const G4double pconv=1./power; // conversion power for the magic variable
-  static const G4int nX=21;             // #Of point in the Xl table (in GeV^2)
-  static const G4int lX=nX-1;           // index of the last in the Xl table
-  static const G4int bX=lX-1;           // @@ index of the before last in the Xl table
-  static const G4int nE=20;             // #Of point in the El table (in GeV^2)
-  static const G4int bE=nE-1;           // index of the last in the El table
-  static const G4int pE=bE-1;           // index of the before last in the El table
-  // Reversed table
-  static const G4double X0[nX]={6.14081e-05,
- .413394, .644455, .843199, 1.02623, 1.20032, 1.36916, 1.53516, 1.70008, 1.86539, 2.03244,
- 2.20256, 2.37723, 2.55818, 2.74762, 2.94857, 3.16550, 3.40582, 3.68379, 4.03589, 4.77419};
-  static const G4double X1[nX]={.00125268,
- .861178, 1.34230, 1.75605, 2.13704, 2.49936, 2.85072, 3.19611, 3.53921, 3.88308, 4.23049,
- 4.58423, 4.94735, 5.32342, 5.71700, 6.13428, 6.58447, 7.08267, 7.65782, 8.38299, 9.77330};
-  static const G4double X2[nX]={.015694,
- 1.97690, 3.07976, 4.02770, 4.90021, 5.72963, 6.53363, 7.32363, 8.10805, 8.89384, 9.68728,
- 10.4947, 11.3228, 12.1797, 13.0753, 14.0234, 15.0439, 16.1692, 17.4599, 19.0626, 21.7276};
-  static const G4double X3[nX]={.0866877,
- 4.03498, 6.27651, 8.20056, 9.96931, 11.6487, 13.2747, 14.8704, 16.4526, 18.0351, 19.6302,
- 21.2501, 22.9075, 24.6174, 26.3979, 28.2730, 30.2770, 32.4631, 34.9243, 37.8590, 41.9115};
-  static const G4double X4[nX]={.160483,
- 5.73111, 8.88884, 11.5893, 14.0636, 16.4054, 18.6651, 20.8749, 23.0578, 25.2318, 27.4127,
- 29.6152, 31.8540, 34.1452, 36.5074, 38.9635, 41.5435, 44.2892, 47.2638, 50.5732, 54.4265};
-  static const G4double X5[nX]={.0999307,
- 5.25720, 8.11389, 10.5375, 12.7425, 14.8152, 16.8015, 18.7296, 20.6194, 22.4855, 24.3398,
- 26.1924, 28.0527, 29.9295, 31.8320, 33.7699, 35.7541, 37.7975, 39.9158, 42.1290, 44.4649};
-  static const G4double X6[nX]={.0276367,
- 3.53378, 5.41553, 6.99413, 8.41629, 9.74057, 10.9978, 12.2066, 13.3796, 14.5257, 15.6519,
- 16.7636, 17.8651, 18.9603, 20.0527, 21.1453, 22.2411, 23.3430, 24.4538, 25.5765, 26.7148};
-  static const G4double X7[nX]={.00472383,
- 2.08253, 3.16946, 4.07178, 4.87742, 5.62140, 6.32202, 6.99034, 7.63368, 8.25720, 8.86473,
- 9.45921, 10.0430, 10.6179, 11.1856, 11.7475, 12.3046, 12.8581, 13.4089, 13.9577, 14.5057};
-  static const G4double X8[nX]={.000630783,
- 1.22723, 1.85845, 2.37862, 2.84022, 3.26412, 3.66122, 4.03811, 4.39910, 4.74725, 5.08480,
- 5.41346, 5.73457, 6.04921, 6.35828, 6.66250, 6.96250, 7.25884, 7.55197, 7.84232, 8.13037};
-  static const G4double X9[nX]={7.49179e-05,
- .772574, 1.16623, 1.48914, 1.77460, 2.03586, 2.27983, 2.51069, 2.73118, 2.94322, 3.14823,
- 3.34728, 3.54123, 3.73075, 3.91638, 4.09860, 4.27779, 4.45428, 4.62835, 4.80025, 4.97028};
-  static const G4double XA[nX]={8.43437e-06,
- .530035, .798454, 1.01797, 1.21156, 1.38836, 1.55313, 1.70876, 1.85712, 1.99956, 2.13704,
- 2.27031, 2.39994, 2.52640, 2.65007, 2.77127, 2.89026, 3.00726, 3.12248, 3.23607, 3.34823};
-  static const G4double XB[nX]={9.27028e-07,
- .395058, .594211, .756726, .899794, 1.03025, 1.15167, 1.26619, 1.37523, 1.47979, 1.58059,
- 1.67819, 1.77302, 1.86543, 1.95571, 2.04408, 2.13074, 2.21587, 2.29960, 2.38206, 2.46341};
-  static const G4double XC[nX]={1.00807e-07,
- .316195, .474948, .604251, .717911, .821417, .917635, 1.00829, 1.09452, 1.17712, 1.25668,
- 1.33364, 1.40835, 1.48108, 1.55207, 1.62150, 1.68954, 1.75631, 1.82193, 1.88650, 1.95014};
-  static const G4double XD[nX]={1.09102e-08,
- .268227, .402318, .511324, .606997, .694011, .774803, .850843, .923097, .992243, 1.05878,
- 1.12309, 1.18546, 1.24613, 1.30530, 1.36313, 1.41974, 1.47526, 1.52978, 1.58338, 1.63617};
-  static const G4double XE[nX]={1.17831e-09,
- .238351, .356890, .453036, .537277, .613780, .684719, .751405, .814699, .875208, .933374,
- .989535, 1.04396, 1.09685, 1.14838, 1.19870, 1.24792, 1.29615, 1.34347, 1.38996, 1.43571};
-  static const G4double XF[nX]={1.27141e-10,
- .219778, .328346, .416158, .492931, .562525, .626955, .687434, .744761, .799494, .852046,
- .902729, .951786, .999414, 1.04577, 1.09099, 1.13518, 1.17844, 1.22084, 1.26246, 1.30338};
-  static const G4double XG[nX]={1.3713e-11,
- .208748, .310948, .393310, .465121, .530069, .590078, .646306, .699515, .750239, .798870,
- .845707, .890982, .934882, .977559, 1.01914, 1.05973, 1.09941, 1.13827, 1.17637, 1.21379};
-  static const G4double XH[nX]={1.47877e-12,
- .203089, .301345, .380162, .448646, .510409, .567335, .620557, .670820, .718647, .764421,
- .808434, .850914, .892042, .931967, .970812, 1.00868, 1.04566, 1.08182, 1.11724, 1.15197};
-  static const G4double XI[nX]={1.59454e-13,
- .201466, .297453, .374007, .440245, .499779, .554489, .605506, .653573, .699213, .742806,
- .784643, .824952, .863912, .901672, .938353, .974060, 1.00888, 1.04288, 1.07614, 1.10872};
-  static const G4double XJ[nX]={1.71931e-14,
- .202988, .297870, .373025, .437731, .495658, .548713, .598041, .644395, .688302, .730147,
- .770224, .808762, .845943, .881916, .916805, .950713, .983728, 1.01592, 1.04737, 1.07813};
-  // Direct table
-  static const G4double Xmin[nE]={X0[0],X1[0],X2[0],X3[0],X4[0],X5[0],X6[0],X7[0],X8[0],
-                        X9[0],XA[0],XB[0],XC[0],XD[0],XE[0],XF[0],XG[0],XH[0],XI[0],XJ[0]};
-  static const G4double dX[nE]={
-    (X0[lX]-X0[0])/lX, (X1[lX]-X1[0])/lX, (X2[lX]-X2[0])/lX, (X3[lX]-X3[0])/lX,
-    (X4[lX]-X4[0])/lX, (X5[lX]-X5[0])/lX, (X6[lX]-X6[0])/lX, (X7[lX]-X7[0])/lX,
-    (X8[lX]-X8[0])/lX, (X9[lX]-X9[0])/lX, (XA[lX]-XA[0])/lX, (XB[lX]-XB[0])/lX,
-    (XC[lX]-XC[0])/lX, (XD[lX]-XD[0])/lX, (XE[lX]-XE[0])/lX, (XF[lX]-XF[0])/lX,
-    (XG[lX]-XG[0])/lX, (XH[lX]-XH[0])/lX, (XI[lX]-XI[0])/lX, (XJ[lX]-XJ[0])/lX};
-  static const G4double* Xl[nE]=
-                             {X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,XA,XB,XC,XD,XE,XF,XG,XH,XI,XJ};
-  static const G4double I0[nX]={0,
- .411893, 1.25559, 2.34836, 3.60264, 4.96046, 6.37874, 7.82342, 9.26643, 10.6840, 12.0555,
- 13.3628, 14.5898, 15.7219, 16.7458, 17.6495, 18.4217, 19.0523, 19.5314, 19.8501, 20.0000};
-  static const G4double I1[nX]={0,
- .401573, 1.22364, 2.28998, 3.51592, 4.84533, 6.23651, 7.65645, 9.07796, 10.4780, 11.8365,
- 13.1360, 14.3608, 15.4967, 16.5309, 17.4516, 18.2481, 18.9102, 19.4286, 19.7946, 20.0000};
-  static const G4double I2[nX]={0,
- .387599, 1.17339, 2.19424, 3.37090, 4.65066, 5.99429, 7.37071, 8.75427, 10.1232, 11.4586,
- 12.7440, 13.9644, 15.1065, 16.1582, 17.1083, 17.9465, 18.6634, 19.2501, 19.6982, 20.0000};
-  static const G4double I3[nX]={0,
- .366444, 1.09391, 2.04109, 3.13769, 4.33668, 5.60291, 6.90843, 8.23014, 9.54840, 10.8461,
- 12.1083, 13.3216, 14.4737, 15.5536, 16.5512, 17.4573, 18.2630, 18.9603, 19.5417, 20.0000};
-  static const G4double I4[nX]={0,
- .321962, .959681, 1.79769, 2.77753, 3.85979, 5.01487, 6.21916, 7.45307, 8.69991, 9.94515,
- 11.1759, 12.3808, 13.5493, 14.6720, 15.7402, 16.7458, 17.6813, 18.5398, 19.3148, 20.0000};
-  static const G4double I5[nX]={0,
- .257215, .786302, 1.49611, 2.34049, 3.28823, 4.31581, 5.40439, 6.53832, 7.70422, 8.89040,
- 10.0865, 11.2833, 12.4723, 13.6459, 14.7969, 15.9189, 17.0058, 18.0517, 19.0515, 20.0000};
-  static const G4double I6[nX]={0,
- .201608, .638914, 1.24035, 1.97000, 2.80354, 3.72260, 4.71247, 5.76086, 6.85724, 7.99243,
- 9.15826, 10.3474, 11.5532, 12.7695, 13.9907, 15.2117, 16.4275, 17.6337, 18.8258, 20.0000};
-  static const G4double I7[nX]={0,
- .168110, .547208, 1.07889, 1.73403, 2.49292, 3.34065, 4.26525, 5.25674, 6.30654, 7.40717,
- 8.55196, 9.73492, 10.9506, 12.1940, 13.4606, 14.7460, 16.0462, 17.3576, 18.6767, 20.0000};
-  static const G4double I8[nX]={0,
- .150652, .497557, .990048, 1.60296, 2.31924, 3.12602, 4.01295, 4.97139, 5.99395, 7.07415,
- 8.20621, 9.38495, 10.6057, 11.8641, 13.1561, 14.4781, 15.8267, 17.1985, 18.5906, 20.0000};
-  static const G4double I9[nX]={0,
- .141449, .470633, .941304, 1.53053, 2.22280, 3.00639, 3.87189, 4.81146, 5.81837, 6.88672,
- 8.01128, 9.18734, 10.4106, 11.6772, 12.9835, 14.3261, 15.7019, 17.1080, 18.5415, 20.0000};
-  static const G4double IA[nX]={0,
- .136048, .454593, .912075, 1.48693, 2.16457, 2.93400, 3.78639, 4.71437, 5.71163, 6.77265,
- 7.89252, 9.06683, 10.2916, 11.5631, 12.8780, 14.2331, .625500, 17.0525, 18.5115, 20.0000};
-  static const G4double IB[nX]={0,
- .132316, .443455, .891741, 1.45656, 2.12399, 2.88352, 3.72674, 4.64660, 5.63711, 6.69298,
- 7.80955, 8.98262, 10.2084, 11.4833, 12.8042, 14.1681, 15.5721, 17.0137, 18.4905, 20.0000};
-  static const G4double IC[nX]={0,
- .129197, .434161, .874795, 1.43128, 2.09024, 2.84158, 3.67721, 4.59038, 5.57531, 6.62696,
- 7.74084, 8.91291, 10.1395, 11.4173, 12.7432, 14.1143, 15.5280, 16.9817, 18.4731, 20.0000};
-  static const G4double ID[nX]={0,
- .126079, .424911, .857980, 1.40626, 2.05689, 2.80020, 3.62840, 4.53504, 5.51456, 6.56212,
- 7.67342, 8.84458, 10.0721, 11.3527, 12.6836, 14.0618, 15.4849, 16.9504, 18.4562, 20.0000};
-  static const G4double IE[nX]={0,
- .122530, .414424, .838964, 1.37801, 2.01931, 2.75363, 3.57356, 4.47293, 5.44644, 6.48949,
- 7.59795, 8.76815, 9.99673, 11.2806, 12.6170, 14.0032, 15.4369, 16.9156, 18.4374, 20.0000};
-  static const G4double IF[nX]={0,
- .118199, .401651, .815838, 1.34370, 1.97370, 2.69716, 3.50710, 4.39771, 5.36401, 6.40164,
- 7.50673, 8.67581, 9.90572, 11.1936, 12.5367, 13.9326, 15.3790, 16.8737, 18.4146, 20.0000};
-  static const G4double IG[nX]={0,
- .112809, .385761, .787075, 1.30103, 1.91700, 2.62697, 3.42451, 4.30424, 5.26158, 6.29249,
- 7.39341, 8.56112, 9.79269, 11.0855, 12.4369, 13.8449, 15.3071, 16.8216, 18.3865, 20.0000};
-  static const G4double IH[nX]={0,
- .106206, .366267, .751753, 1.24859, 1.84728, 2.54062, 3.32285, .189160, 5.13543, 6.15804,
- 7.25377, 8.41975, 9.65334, 10.9521, 12.3139, 13.7367, 15.2184, 16.7573, 18.3517, 20.0000};
-  static const G4double II[nX]={0,
- .098419, .343194, .709850, 1.18628, 1.76430, 2.43772, 3.20159, 4.05176, 4.98467, 5.99722,
- 7.08663, 8.25043, 9.48633, 10.7923, 12.1663, 13.6067, 15.1118, 16.6800, 18.3099, 20.0000};
-  static const G4double IJ[nX]={0,
- .089681, .317135, .662319, 1.11536, 1.66960, 2.32002, 3.06260, 3.89397, 4.81126, 5.81196,
- 6.89382, 8.05483, 9.29317, 10.6072, 11.9952, 13.4560, 14.9881, 16.5902, 18.2612, 20.0000};
-  static const G4double* Il[nE]=
-                             {I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ};
-  static const G4double lE[nE]={
--1.98842,-1.58049,-1.17256,-.764638,-.356711, .051215, .459141, .867068, 1.27499, 1.68292,
- 2.09085, 2.49877, 2.90670, 3.31463, 3.72255, 4.13048, 4.53840, 4.94633, 5.35426, 5.76218};
-  static const G4double lEmi=lE[0];
-  static const G4double lEma=lE[nE-1];
-  static const G4double dlE=(lEma-lEmi)/bE;
-  //***************************************************************************************
-  G4double Enu=lastE;                 // Get energy of the last calculated cross-section
-  G4double lEn=std::log(Enu);         // log(E) for interpolation
-  G4double rE=(lEn-lEmi)/dlE;         // Position of the energy
-  G4int fE=static_cast<int>(rE);      // Left bin for interpolation
-  if(fE<0) fE=0;
-  if(fE>pE)fE=pE;
-  G4int    sE=fE+1;                   // Right bin for interpolation
-  G4double dE=rE-fE;                  // relative log shift from the left bin
-  G4double dEnu=Enu+Enu;              // doubled energy of nu/anu
-  G4double Enu2=Enu*Enu;              // squared energy of nu/anu
-  G4double Ee=Enu-me;               // Free Energy of neutrino/anti-neutrino
-  G4double ME=Enu*MN;                 // M*E
-  G4double dME=ME+ME;                 // 2*M*E
-  G4double dEMN=(dEnu+MN)*ME;
-  G4double MEm=ME-hme2;
-  G4double sqE=Enu*std::sqrt(MEm*MEm-me2*MN2);
-  G4double E2M=MN*Enu2-(Enu+MN)*hme2;
-  G4double ymax=(E2M+sqE)/dEMN;
-  G4double ymin=(E2M-sqE)/dEMN;
-  G4double rmin=1.-ymin;
-  G4double rhm2E=hme2/Enu2;
-  G4double Q2mi=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E)); // Q2_min(E_nu)
-  G4double Q2ma=dME*ymax;                                                  // Q2_max(E_nu)
-  G4double Q2nq=Ee*dMN-mcV;
-  if(Q2ma>Q2nq) Q2ma=Q2nq;            // Correction for Non Quasi Elastic
-  // --- now r_min=Q2mi/Q2ma and r_max=1.; when r is randomized -> Q2=r*Q2ma ---
-  G4double Rmi=Q2mi/Q2ma;
-  G4double shift=1.+.9673/(1.+.323/Enu/Enu)/std::pow(Enu,.78); //@@ different for anti-nu
-  // --- E-interpolation must be done in a log scale ---
-  G4double Xmi=std::pow((shift-Rmi),power);// X_min(E_nu)
-  G4double Xma=std::pow((shift-1.),power); // X_max(E_nu)
-  // Find the integral values integ(Xmi) & integ(Xma) using the direct table
-  G4double idX=dX[fE]+dE*(dX[sE]-dX[fE]); // interpolated X step
-  G4double iXmi=Xmin[fE]+dE*(Xmin[sE]-Xmin[fE]); // interpolated X minimum
-  G4double rXi=(Xmi-iXmi)/idX;
-  G4int    iXi=static_cast<int>(rXi);
-  if(iXi<0) iXi=0;
-  if(iXi>bX) iXi=bX;
-  G4double dXi=rXi-iXi;
-  G4double bntil=Il[fE][iXi];
-  G4double intil=bntil+dXi*(Il[fE][iXi+1]-bntil);
-  G4double bntir=Il[sE][iXi];
-  G4double intir=bntir+dXi*(Il[sE][iXi+1]-bntir);
-  G4double inti=intil+dE*(intir-intil);// interpolated begin of the integral
-  //
-  G4double rXa=(Xma-iXmi)/idX;
-  G4int    iXa=static_cast<int>(rXa);
-  if(iXa<0) iXa=0;
-  if(iXa>bX) iXa=bX;
-  G4double dXa=rXa-iXa;
-  G4double bntal=Il[fE][iXa];
-  G4double intal=bntal+dXa*(Il[fE][iXa+1]-bntal);
-  G4double bntar=Il[sE][iXa];
-  G4double intar=bntar+dXa*(Il[sE][iXa+1]-bntar);
-  G4double inta=intal+dE*(intar-intal);// interpolated end of the integral
-  //
-  // *** Find X using the reversed table ***
-  G4double intx=inti+(inta-inti)*G4UniformRand(); 
-  G4int    intc=static_cast<int>(intx);
-  if(intc<0) intc=0;
-  if(intc>bX) intc=bX;
-  G4double dint=intx-intc;
-  G4double mXl=Xl[fE][intc];
-  G4double Xlb=mXl+dint*(Xl[fE][intc+1]-mXl);
-  G4double mXr=Xl[sE][intc];
-  G4double Xrb=mXr+dint*(Xl[sE][intc+1]-mXr);
-  G4double X=Xlb+dE*(Xrb-Xlb);        // interpolated X value
-  G4double R=shift-std::pow(X,pconv);
-  G4double Q2=R*Q2ma;
-  return Q2*GeV*GeV;
-}
-
-// It returns a fraction of the direct interaction of the neutrino with quark-partons
-G4double G4QNuENuclearCrossSection::GetDirectPart(G4double Q2)
-{
-  G4double f=Q2/4.62;
-  G4double ff=f*f;
-  G4double r=ff*ff;
-  G4double s=std::pow((1.+.6/Q2),(-1.-(1.+r)/(12.5+r/.3)));
-  //@@ It is the same for nu/anu, but for nu it is a bit less, and for anu a bit more (par)
-  return 1.-s*(1.-s/2);
-}
-
-// #of quark-partons in the nonperturbative phase space is the same for neut and anti-neut
-G4double G4QNuENuclearCrossSection::GetNPartons(G4double Q2)
-{
-  return 3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space
-}
-
-// This class can provide only virtual exchange pi+ (a substitute for W+ boson)
-G4int G4QNuENuclearCrossSection::GetExchangePDGCode() {return 211;}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QNuMuNuclearCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QNuMuNuclearCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,768 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QNuMuNuclearCrossSection.cc,v 1.14 2009/05/08 15:16:26 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QNuMuNuclearCrossSection for (nu,mu-)A cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 17-Oct-03
-// 
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-//=========================================================================================
-
-//#define debug
-//#define edebug
-//#define pdebug
-//#define ppdebug
-//#define tdebug
-//#define sdebug
-
-#include "G4QNuMuNuclearCrossSection.hh"
-
-// Initialization of the
-G4bool    G4QNuMuNuclearCrossSection::onlyCS=true;// Flag to calculate only CS (not QE)
-G4double  G4QNuMuNuclearCrossSection::lastSig=0.;// Last calculated total cross section
-G4double  G4QNuMuNuclearCrossSection::lastQEL=0.;// Last calculated quasi-el. cross section
-G4int     G4QNuMuNuclearCrossSection::lastL=0;   // Last used in cross section TheLastBin
-G4double  G4QNuMuNuclearCrossSection::lastE=0.;  // Last used in cross section TheEnergy
-G4double* G4QNuMuNuclearCrossSection::lastEN=0;  // Pointer to the Energy Scale of TX & QE
-G4double* G4QNuMuNuclearCrossSection::lastTX=0;  // Pointer to the LastArray of TX function
-G4double* G4QNuMuNuclearCrossSection::lastQE=0;  // Pointer to the LastArray of QE function
-G4int     G4QNuMuNuclearCrossSection::lastPDG=0; // The last PDG code of the projectile
-G4int     G4QNuMuNuclearCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QNuMuNuclearCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QNuMuNuclearCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QNuMuNuclearCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QNuMuNuclearCrossSection::lastCS=0.; // Last value of the Cross Section
-G4int     G4QNuMuNuclearCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QNuMuNuclearCrossSection::GetPointer()
-{
-  static G4QNuMuNuclearCrossSection theCrossSection; //**Static body of the Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QNuMuNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom,
-                                                     G4int tgZ, G4int tgN, G4int pPDG)
-{
-  static G4int j;                      // A#0f records found in DB for this projectile
-  static std::vector <G4int>    colPDG;// Vector of the projectile PDG code
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-  G4double pEn=pMom;
-#ifdef debug
-  G4cout<<"G4QNMNCS::GetCS:>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG="<<pPDG<<"("<<lastPDG<<"), T="<<pEn<<"("<<lastTH<<")"<<",Sz="
-        <<colN.size()<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  if(pPDG!=14)
-  {
-#ifdef pdebug
-    G4cout<<"G4QNMNCS::GetCS: *** Found pPDG="<<pPDG<<" ====> CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // projectile PDG=0 is a mistake (?!) @@
-  }
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tgN!=lastN || tgZ!=lastZ || pPDG!=lastPDG)// The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastPDG = pPDG;                    // The last PDG of the projectile
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-    if(lastI) for(G4int i=0; i<lastI; i++) if(colPDG[i]==pPDG) // The partType is found
-    {                                  // The nucleus with projPDG is found in AMDB
-      if(colN[i]==tgN && colZ[i]==tgZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QNMNCS::GetCS:*Found*P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(pEn<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QNMNCS::GetCS:Found T="<<pEn<<" < Threshold="<<lastTH<<",X=0"<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastCS =colCS[i];                // Last CrossSect (A-dependent)
-        if(std::fabs(lastP/pMom-1.)<tolerance)
-        {
-#ifdef pdebug
-          G4cout<<"G4QNMNCS::GetCS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QNMNCS::G:UpdaDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // read & update
-#ifdef pdebug
-        G4cout<<"G4QNMNCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(lastCS<=0. && pEn>lastTH)    // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QNMNCS::GetCS: New T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-        break;                           // Go out of the LOOP
-      }
-#ifdef pdebug
-      G4cout<<"---G4QNMNCrossSec::GetCrosSec:pPDG="<<pPDG<<",j="<<j<<",N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<",cPDG="<<colPDG[i]<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      j++;                             // Increment a#0f records found in DB for this pPDG
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QNMNCS::GetCrSec: CalcNew P="<<pMom<<",f="<<fCS<<",lastI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,j,lastPDG,lastZ,lastN,pMom); //calculate & create
-      if(lastCS<=0.)
-      {
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QNMNCrossSection::GetCrossSect:NewThresh="<<lastTH<<",T="<<pEn<<G4endl;
-#endif
-        if(pEn>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QNMNCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QNMNCS::GetCrosSec:New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      colN.push_back(tgN);
-      colZ.push_back(tgZ);
-      colPDG.push_back(pPDG);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colCS.push_back(lastCS);
-#ifdef pdebug
-      G4cout<<"G4QNMNCS::GetCS:1st,P="<<pMom<<"(MeV),X="<<lastCS*millibarn<<"(mb)"<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QNMNCS::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colPDG[lastI]=pPDG;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-  else if(pEn<=lastTH)
-  {
-#ifdef pdebug
-    G4cout<<"G4QNMNCS::GetCS: Current T="<<pEn<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  else if(std::fabs(lastP/pMom-1.)<tolerance)
-  {
-#ifdef pdebug
-    G4cout<<"G4QNMNCS::GetCS:OldCur P="<<pMom<<"="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return lastCS*millibarn;     // Use theLastCS
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"G4QNMNCS::GetCS:UpdaCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastCS=CalculateCrossSection(fCS,1,j,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-    lastP=pMom;
-  }
-#ifdef pdebug
-  G4cout<<"G4QNMNCS::GetCrSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  return lastCS*millibarn;
-}
-
-// Gives the threshold energy = the same for all nuclei (@@ can be reduced for hevy nuclei)
-G4double G4QNuMuNuclearCrossSection::ThresholdEnergy(G4int Z, G4int N, G4int)
-{
-  //static const G4double mNeut = G4NucleiProperties::GetNuclearMass(1,0)/GeV;
-  //static const G4double mProt = G4NucleiProperties::GetNuclearMass(1,1)/GeV;
-  //static const G4double mDeut = G4NucleiProperties::GetNuclearMass(2,1)/GeV/2.;
-  static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV)
-  static const G4double dmN=mN+mN;    // Doubled nucleon mass (2*AtomicMassUnit, GeV)
-  static const G4double mmu=.105658369; // Mass of a muon in GeV
-  static const G4double mmu2=mmu*mmu;   // Squared mass of a muon in GeV^2
-  static const G4double thresh=mmu+mmu2/dmN; // Universal threshold in GeV
-  // ---------
-  //static const G4double infEn = 9.e27;
-  G4double dN=0.;
-  if(Z>0||N>0) dN=thresh*GeV; // @@ if upgraded, change it in a total cross section
-  //@@ "dN=mmu+mmu2/G4NucleiProperties::GetNuclearMass(<G4double>(Z+N),<G4double>(Z)/GeV"
-  return dN;
-}
-
-// The main member function giving the gamma-A cross section (E_kin in MeV, CS in mb)
-G4double G4QNuMuNuclearCrossSection::CalculateCrossSection(G4bool CS, G4int F, G4int I,
-                                        G4int, G4int targZ, G4int targN, G4double Momentum)
-{
-  static const G4double mb38=1.E-11;// Conversion 10^-38 cm^2 to mb=10^-27 cm^2
-  static const G4int nE=65;   // !! If change this, change it in GetFunctions() (*.hh) !!
-  static const G4int mL=nE-1;
-  static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV)
-  static const G4double dmN=mN+mN;      // Doubled nucleon mass (2*AtomicMassUnit, GeV)
-  static const G4double mmu=.105658369; // Mass of a muon in GeV
-  static const G4double mmu2=mmu*mmu;   // Squared mass of a muon in GeV^2
-  static const G4double EMi=mmu+mmu2/dmN; // Universal threshold of the reaction in GeV
-  static const G4double EMa=300.;       // Maximum tabulated Energy of nu_mu in GeV 
-  // *** Begin of the Associative memory for acceleration of the cross section calculations
-  static std::vector <G4double> colH;   //?? Vector of HighEnergyCoefficients (functional)
-  static std::vector <G4double*> TX;    // Vector of pointers to the TX tabulated functions
-  static std::vector <G4double*> QE;    // Vector of pointers to the QE tabulated functions
-  static G4bool first=true;             // Flag of initialization of the energy axis
-  // *** End of Static Definitions (Associative Memory) ***
-  //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Muon
-  //G4double TotEnergy2=Momentum;
-  onlyCS=CS;                            // Flag to calculate only CS (not TX & QE)
-  lastE=Momentum/GeV;                   // Kinetic energy of the muon neutrino (in GeV!)
-  if (lastE<=EMi)                       // Energy is below the minimum energy in the table
-  {
-    lastE=0.;
-    lastSig=0.;
-    return 0.;
-  }
-  G4int Z=targZ;                        // New Z, which can change the sign
-  if(F<=0)                              // This isotope was not the last used isotop
-  {
-    if(F<0)                          // This isotope was found in DAMDB =========> RETRIEVE
-    {
-      lastTX =TX[I];                 // Pointer to the prepared TX function (same isotope)
-      lastQE =QE[I];                 // Pointer to the prepared QE function (same isotope)
-   }
-   else                              // This isotope wasn't calculated previously => CREATE
-   {
-      if(first)
-      {
-        lastEN = new G4double[nE];   // This must be done only once!
-        Z=-Z;                        // To explain GetFunctions that E-axis must be filled
-        first=false;                 // To make it only once
-      }
-      lastTX = new G4double[nE];     // Allocate memory for the new TX function
-      lastQE = new G4double[nE];     // Allocate memory for the new QE function
-      G4int res=GetFunctions(Z,targN,lastTX,lastQE,lastEN);//@@analize(0=first,-1=bad,1=OK)
-      if(res<0) G4cerr<<"*W*G4NuMuNuclearCS::CalcCrossSect:Bad Function Retrieve"<<G4endl;
-      // *** The synchronization check ***
-      G4int sync=TX.size();
-      if(sync!=I) G4cerr<<"***G4NuMuNuclearCS::CalcCrossSect:Sync.="<<sync<<"#"<<I<<G4endl;
-      TX.push_back(lastTX);
-      QE.push_back(lastQE);
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW Calculate the Cross Section =====================
-  if (lastE<=EMi)                   // Check that the neutrinoEnergy is higher than ThreshE
-  {
-    lastE=0.;
-    lastSig=0.;
-    return 0.;
-  }
-  if(lastE<EMa) // Linear fit is made explicitly to fix the last bin for the randomization
-  {
-    G4int chk=1;
-    G4int ran=mL/2;
-    G4int sep=ran;  // as a result = an index of the left edge of the interval
-    while(ran>=2)
-    {
-      G4int newran=ran/2;
-      if(lastE<=lastEN[sep]) sep-=newran;
-      else                   sep+=newran;
-      ran=newran;
-      chk=chk+chk; 
-    }
-    if(chk+chk!=mL) G4cerr<<"*Warn*G4NuMuNuclearCS::CalcCS:Table! mL="<<mL<<G4endl;
-    G4double lowE=lastEN[sep];
-    G4double highE=lastEN[sep+1];
-    G4double lowTX=lastTX[sep];
-    if(lastE<lowE||sep>=mL||lastE>highE)
-      G4cerr<<"*Warn*G4NuMuNuclearCS::CalcCS:Bin! "<<lowE<<" < "<<lastE<<" < "<<highE
-            <<", sep="<<sep<<", mL="<<mL<<G4endl;
-    lastSig=lastE*(lastE-lowE)*(lastTX[sep+1]-lowTX)/(highE-lowE)+lowTX; // Recover *E
-    if(!onlyCS)                       // Skip the differential cross-section parameters
-    {
-      G4double lowQE=lastQE[sep];
-      lastQEL=(lastE-lowE)*(lastQE[sep+1]-lowQE)/(highE-lowE)+lowQE;
-#ifdef pdebug
-      G4cout<<"G4NuMuNuclearCS::CalcCS: T="<<lastSig<<",Q="<<lastQEL<<",E="<<lastE<<G4endl;
-#endif
-    }
-  }
-  else
-  {
-    lastSig=lastTX[mL]; // @@ No extrapolation, just a const, while it looks shrinking...
-    lastQEL=lastQE[mL];
-  }
-  if(lastQEL<0.) lastQEL = 0.;
-  if(lastSig<0.) lastSig = 0.;
-  // The cross-sections are expected to be in mb
-  lastSig*=mb38;
-  if(!onlyCS) lastQEL*=mb38;
-  return lastSig;
-}
-
-// Calculate the cros-section functions
-// ****************************************************************************************
-// *** This tables are the same for all lepto-nuclear reactions, only mass is different ***
-// ***@@ IT'S REASONABLE TO MAKE ADDiTIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR WITH THIS@@ ***
-// ****************************************************************************************
-G4int G4QNuMuNuclearCrossSection::GetFunctions(G4int z, G4int n,
-                                                     G4double* t, G4double* q, G4double* e)
-{
-  static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV)
-  static const G4double dmN=mN+mN;    // Doubled nucleon mass (2*AtomicMassUnit, GeV)
-  static const G4double mmu=.105658369; // Mass of a muon in GeV
-  static const G4double mmu2=mmu*mmu;   // Squared mass of a muon in GeV^2
-  static const G4double thresh=mmu+mmu2/dmN; // Universal threshold in GeV
-  static const G4int nE=65; // !! If change this, change it in GetCrossSection() (*.cc) !!
-  static const G4double nuEn[nE]={thresh,
-    .112039,.116079,.120416,.125076,.130090,.135494,.141324,.147626,.154445,.161838,
-    .169864,.178594,.188105,.198485,.209836,.222272,.235923,.250941,.267497,.285789,
-    .306045,.328530,.353552,.381466,.412689,.447710,.487101,.531538,.581820,.638893,
-    .703886,.778147,.863293,.961275,1.07445,1.20567,1.35843,1.53701,1.74667,1.99390,
-    2.28679,2.63542,3.05245,3.55386,4.15990,4.89644,5.79665,6.90336,8.27224,9.97606,
-    12.1106,14.8029,18.2223,22.5968,28.2351,35.5587,45.1481,57.8086,74.6682,97.3201,
-    128.036,170.085,228.220,309.420};
-  static const G4double TOTX[nE]={0.,
-    .108618,.352160,.476083,.566575,.639014,.699871,.752634,.799407,.841524,.879844,
-    .914908,.947050,.976456,1.00321,1.02734,1.04881,1.06755,1.08349,1.09653,1.10657,
-    1.11355,1.11739,1.11806,1.11556,1.10992,1.10124,1.08964,1.07532,1.05851,1.03950,
-    1.01859,.996169,.972593,.948454,.923773,.899081,.874713,.850965,.828082,.806265,
-    .785659,.766367,.748450,.731936,.716824,.703098,.690723,.679652,.669829,.661187,
-    .653306,.646682,.640986,.636125,.631993,.628479,.625458,.622800,.620364,.616231,
-    .614986,.612563,.609807,.606511};
-  static const G4double QELX[nE]={0.,
-    .012170,.040879,.057328,.070865,.083129,.094828,.106366,.118013,.129970,.142392,
-    .155410,.169138,.183676,.199123,.215573,.233120,.251860,.271891,.293317,.316246,
-    .340796,.367096,.395292,.425547,.458036,.491832,.524989,.556457,.585692,.612377,
-    .636544,.657790,.676260,.692007,.705323,.716105,.724694,.731347,.736340,.740172,
-    .742783,.744584,.745804,.746829,.747479,.747995,.748436,.749047,.749497,.749925,
-    .750486,.750902,.751268,.751566,.752026,.752266,.752428,.752761,.752873,.753094,
-    .753161,.753164,.753340,.753321};
-  // --------------------------------
-  G4int first=0;
-  if(z<0.)
-  {
-    first=1;
-    z=-z;
-  }
-  if(z<1 || z>92)             // neutron and plutonium are forbidden
-  {
-    G4cout<<"***G4QNuMuNuclearCrossSection::GetFunctions:Z="<<z<<".No CS returned"<<G4endl;
-    return -1;
-  }
-  for(G4int k=0; k<nE; k++)
-  {
-    G4double a=n+z;
-    G4double na=n+a;
-    G4double dn=n+n;
-    G4double da=a+a;
-    G4double ta=da+a;
-    if(first) e[k]=nuEn[k];       // Energy of neutrino E (first bin k=0 can be modified)
-    t[k]=TOTX[k]*nuEn[k]*(na+na)/ta+QELX[k]*(dn+dn-da)/ta; // TotalCrossSection
-    q[k]=QELX[k]*dn/a;                                     // QuasiElasticCrossSection
-  }
-  return first;
-}
-
-// Randomize Q2 from neutrino to the scattered muon when the scattering is quasi-elastic
-G4double G4QNuMuNuclearCrossSection::GetQEL_ExchangeQ2()
-{
-  static const G4double mmu=.105658369;// Mass of muon in GeV
-  static const G4double mmu2=mmu*mmu;  // Squared Mass of muon in GeV^2
-  static const double hmmu2=mmu2/2;    // .5*m_mu^2 in GeV^2
-  static const double MN=.931494043;   // Nucleon mass (inside nucleus, atomicMassUnit,GeV)
-  static const double MN2=MN*MN;       // M_N^2 in GeV^2
-  static const G4double power=-3.5;    // direct power for the magic variable
-  static const G4double pconv=1./power;// conversion power for the magic variable
-  static const G4int nQ2=101;          // #Of point in the Q2l table (in GeV^2)
-  static const G4int lQ2=nQ2-1;        // index of the last in the Q2l table
-  static const G4int bQ2=lQ2-1;        // index of the before last in the Q2 ltable
-  // Reversed table
-  static const G4double Xl[nQ2]={1.87905e-10,
- .005231, .010602, .016192, .022038, .028146, .034513, .041130, .047986, .055071, .062374,
- .069883, .077587, .085475, .093539, .101766, .110150, .118680, .127348, .136147, .145069,
- .154107, .163255, .172506, .181855, .191296, .200825, .210435, .220124, .229886, .239718,
- .249617, .259578, .269598, .279675, .289805, .299986, .310215, .320490, .330808, .341169,
- .351568, .362006, .372479, .382987, .393527, .404099, .414700, .425330, .435987, .446670,
- .457379, .468111, .478866, .489643, .500441, .511260, .522097, .532954, .543828, .554720,
- .565628, .576553, .587492, .598447, .609416, .620398, .631394, .642403, .653424, .664457,
- .675502, .686557, .697624, .708701, .719788, .730886, .741992, .753108, .764233, .775366,
- .786508, .797658, .808816, .819982, .831155, .842336, .853524, .864718, .875920, .887128,
- .898342, .909563, .920790, .932023, .943261, .954506, .965755, .977011, .988271, .999539};
-  // Direct table
-  static const G4double Xmax=Xl[lQ2];
-  static const G4double Xmin=Xl[0];
-  static const G4double dX=(Xmax-Xmin)/lQ2;  // step in X(Q2, GeV^2)
-  static const G4double inl[nQ2]={0,
- 1.88843, 3.65455, 5.29282, 6.82878, 8.28390, 9.67403, 11.0109, 12.3034, 13.5583, 14.7811,
- 15.9760, 17.1466, 18.2958, 19.4260, 20.5392, 21.6372, 22.7215, 23.7933, 24.8538, 25.9039,
- 26.9446, 27.9766, 29.0006, 30.0171, 31.0268, 32.0301, 33.0274, 34.0192, 35.0058, 35.9876,
- 36.9649, 37.9379, 38.9069, 39.8721, 40.8337, 41.7920, 42.7471, 43.6992, 44.6484, 45.5950,
- 46.5390, 47.4805, 48.4197, 49.3567, 50.2916, 51.2245, 52.1554, 53.0846, 54.0120, 54.9377,
- 55.8617, 56.7843, 57.7054, 58.6250, 59.5433, 60.4603, 61.3761, 62.2906, 63.2040, 64.1162,
- 65.0274, 65.9375, 66.8467, 67.7548, 68.6621, 69.5684, 70.4738, 71.3784, 72.2822, 73.1852,
- 74.0875, 74.9889, 75.8897, 76.7898, 77.6892, 78.5879, 79.4860, 80.3835, 81.2804, 82.1767,
- 83.0724, 83.9676, 84.8622, 85.7563, 86.6499, 87.5430, 88.4356, 89.3277, 90.2194, 91.1106,
- 92.0013, 92.8917, 93.7816, 94.6711, 95.5602, 96.4489, 97.3372, 98.2252, 99.1128, 100.000};
-  G4double Enu=lastE;                 // Get energy of the last calculated cross-section
-  G4double dEnu=Enu+Enu;              // doubled energy of nu/anu
-  G4double Enu2=Enu*Enu;              // squared energy of nu/anu
-  G4double ME=Enu*MN;                 // M*E
-  G4double dME=ME+ME;                 // 2*M*E
-  G4double dEMN=(dEnu+MN)*ME;
-  G4double MEm=ME-hmmu2;
-  G4double sqE=Enu*std::sqrt(MEm*MEm-mmu2*MN2);
-  G4double E2M=MN*Enu2-(Enu+MN)*hmmu2;
-  G4double ymax=(E2M+sqE)/dEMN;
-  G4double ymin=(E2M-sqE)/dEMN;
-  G4double rmin=1.-ymin;
-  G4double rhm2E=hmmu2/Enu2;
-  G4double Q2mi=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E)); // Q2_min(E_nu)
-  G4double Q2ma=dME*ymax;                                                  // Q2_max(E_nu)
-  G4double Xma=std::pow((1.+Q2mi),power);  // X_max(E_nu)
-  G4double Xmi=std::pow((1.+Q2ma),power);  // X_min(E_nu)
-  // Find the integral values integ(Xmi) & integ(Xma) using the direct table
-  G4double rXi=(Xmi-Xmin)/dX;
-  G4int    iXi=static_cast<int>(rXi);
-  if(iXi<0) iXi=0;
-  if(iXi>bQ2) iXi=bQ2;
-  G4double dXi=rXi-iXi;
-  G4double bnti=inl[iXi];
-  G4double inti=bnti+dXi*(inl[iXi+1]-bnti);
-  //
-  G4double rXa=(Xma-Xmin)/dX;
-  G4int    iXa=static_cast<int>(rXa);
-  if(iXa<0) iXa=0;
-  if(iXa>bQ2) iXa=bQ2;
-  G4double dXa=rXa-iXa;
-  G4double bnta=inl[iXa];
-  G4double inta=bnta+dXa*(inl[iXa+1]-bnta);
-  // *** Find X using the reversed table ***
-  G4double intx=inti+(inta-inti)*G4UniformRand();
-  G4int    intc=static_cast<int>(intx);
-  if(intc<0) intc=0;
-  if(intc>bQ2) intc=bQ2;         // If it is more than max, then the BAD extrapolation
-  G4double dint=intx-intc;
-  G4double mX=Xl[intc];
-  G4double X=mX+dint*(Xl[intc+1]-mX);
-  G4double Q2=std::pow(X,pconv)-1.;
-  return Q2*GeV*GeV;
-}
-
-// Randomize Q2 from neutrino to the scattered muon when the scattering is not quasiElastic
-G4double G4QNuMuNuclearCrossSection::GetNQE_ExchangeQ2()
-{
-  static const double mpi=.13957018;    // charged pi meson mass in GeV
-  static const G4double mmu=.105658369; // Mass of muon in GeV
-  static const G4double mmu2=mmu*mmu;   // Squared Mass of muon in GeV^2
-  static const double hmmu2=mmu2/2;     // .5*m_mu^2 in GeV^2
-  static const double MN=.931494043;    // Nucleon mass (inside nucleus,atomicMassUnit,GeV)
-  static const double MN2=MN*MN;        // M_N^2 in GeV^2
-  static const double dMN=MN+MN;        // 2*M_N in GeV
-  static const double mcV=(dMN+mpi)*mpi;// constant of W>M+mc cut for Quasi-Elastic
-  static const G4int power=7;           // direct power for the magic variable
-  static const G4double pconv=1./power; // conversion power for the magic variable
-  static const G4int nX=21;             // #Of point in the Xl table (in GeV^2)
-  static const G4int lX=nX-1;           // index of the last in the Xl table
-  static const G4int bX=lX-1;           // @@ index of the before last in the Xl table
-  static const G4int nE=20;             // #Of point in the El table (in GeV^2)
-  static const G4int bE=nE-1;           // index of the last in the El table
-  static const G4int pE=bE-1;           // index of the before last in the El table
-  // Reversed table
-  static const G4double X0[nX]={6.14081e-05,
- .413394, .644455, .843199, 1.02623, 1.20032, 1.36916, 1.53516, 1.70008, 1.86539, 2.03244,
- 2.20256, 2.37723, 2.55818, 2.74762, 2.94857, 3.16550, 3.40582, 3.68379, 4.03589, 4.77419};
-  static const G4double X1[nX]={.00125268,
- .861178, 1.34230, 1.75605, 2.13704, 2.49936, 2.85072, 3.19611, 3.53921, 3.88308, 4.23049,
- 4.58423, 4.94735, 5.32342, 5.71700, 6.13428, 6.58447, 7.08267, 7.65782, 8.38299, 9.77330};
-  static const G4double X2[nX]={.015694,
- 1.97690, 3.07976, 4.02770, 4.90021, 5.72963, 6.53363, 7.32363, 8.10805, 8.89384, 9.68728,
- 10.4947, 11.3228, 12.1797, 13.0753, 14.0234, 15.0439, 16.1692, 17.4599, 19.0626, 21.7276};
-  static const G4double X3[nX]={.0866877,
- 4.03498, 6.27651, 8.20056, 9.96931, 11.6487, 13.2747, 14.8704, 16.4526, 18.0351, 19.6302,
- 21.2501, 22.9075, 24.6174, 26.3979, 28.2730, 30.2770, 32.4631, 34.9243, 37.8590, 41.9115};
-  static const G4double X4[nX]={.160483,
- 5.73111, 8.88884, 11.5893, 14.0636, 16.4054, 18.6651, 20.8749, 23.0578, 25.2318, 27.4127,
- 29.6152, 31.8540, 34.1452, 36.5074, 38.9635, 41.5435, 44.2892, 47.2638, 50.5732, 54.4265};
-  static const G4double X5[nX]={.0999307,
- 5.25720, 8.11389, 10.5375, 12.7425, 14.8152, 16.8015, 18.7296, 20.6194, 22.4855, 24.3398,
- 26.1924, 28.0527, 29.9295, 31.8320, 33.7699, 35.7541, 37.7975, 39.9158, 42.1290, 44.4649};
-  static const G4double X6[nX]={.0276367,
- 3.53378, 5.41553, 6.99413, 8.41629, 9.74057, 10.9978, 12.2066, 13.3796, 14.5257, 15.6519,
- 16.7636, 17.8651, 18.9603, 20.0527, 21.1453, 22.2411, 23.3430, 24.4538, 25.5765, 26.7148};
-  static const G4double X7[nX]={.00472383,
- 2.08253, 3.16946, 4.07178, 4.87742, 5.62140, 6.32202, 6.99034, 7.63368, 8.25720, 8.86473,
- 9.45921, 10.0430, 10.6179, 11.1856, 11.7475, 12.3046, 12.8581, 13.4089, 13.9577, 14.5057};
-  static const G4double X8[nX]={.000630783,
- 1.22723, 1.85845, 2.37862, 2.84022, 3.26412, 3.66122, 4.03811, 4.39910, 4.74725, 5.08480,
- 5.41346, 5.73457, 6.04921, 6.35828, 6.66250, 6.96250, 7.25884, 7.55197, 7.84232, 8.13037};
-  static const G4double X9[nX]={7.49179e-05,
- .772574, 1.16623, 1.48914, 1.77460, 2.03586, 2.27983, 2.51069, 2.73118, 2.94322, 3.14823,
- 3.34728, 3.54123, 3.73075, 3.91638, 4.09860, 4.27779, 4.45428, 4.62835, 4.80025, 4.97028};
-  static const G4double XA[nX]={8.43437e-06,
- .530035, .798454, 1.01797, 1.21156, 1.38836, 1.55313, 1.70876, 1.85712, 1.99956, 2.13704,
- 2.27031, 2.39994, 2.52640, 2.65007, 2.77127, 2.89026, 3.00726, 3.12248, 3.23607, 3.34823};
-  static const G4double XB[nX]={9.27028e-07,
- .395058, .594211, .756726, .899794, 1.03025, 1.15167, 1.26619, 1.37523, 1.47979, 1.58059,
- 1.67819, 1.77302, 1.86543, 1.95571, 2.04408, 2.13074, 2.21587, 2.29960, 2.38206, 2.46341};
-  static const G4double XC[nX]={1.00807e-07,
- .316195, .474948, .604251, .717911, .821417, .917635, 1.00829, 1.09452, 1.17712, 1.25668,
- 1.33364, 1.40835, 1.48108, 1.55207, 1.62150, 1.68954, 1.75631, 1.82193, 1.88650, 1.95014};
-  static const G4double XD[nX]={1.09102e-08,
- .268227, .402318, .511324, .606997, .694011, .774803, .850843, .923097, .992243, 1.05878,
- 1.12309, 1.18546, 1.24613, 1.30530, 1.36313, 1.41974, 1.47526, 1.52978, 1.58338, 1.63617};
-  static const G4double XE[nX]={1.17831e-09,
- .238351, .356890, .453036, .537277, .613780, .684719, .751405, .814699, .875208, .933374,
- .989535, 1.04396, 1.09685, 1.14838, 1.19870, 1.24792, 1.29615, 1.34347, 1.38996, 1.43571};
-  static const G4double XF[nX]={1.27141e-10,
- .219778, .328346, .416158, .492931, .562525, .626955, .687434, .744761, .799494, .852046,
- .902729, .951786, .999414, 1.04577, 1.09099, 1.13518, 1.17844, 1.22084, 1.26246, 1.30338};
-  static const G4double XG[nX]={1.3713e-11,
- .208748, .310948, .393310, .465121, .530069, .590078, .646306, .699515, .750239, .798870,
- .845707, .890982, .934882, .977559, 1.01914, 1.05973, 1.09941, 1.13827, 1.17637, 1.21379};
-  static const G4double XH[nX]={1.47877e-12,
- .203089, .301345, .380162, .448646, .510409, .567335, .620557, .670820, .718647, .764421,
- .808434, .850914, .892042, .931967, .970812, 1.00868, 1.04566, 1.08182, 1.11724, 1.15197};
-  static const G4double XI[nX]={1.59454e-13,
- .201466, .297453, .374007, .440245, .499779, .554489, .605506, .653573, .699213, .742806,
- .784643, .824952, .863912, .901672, .938353, .974060, 1.00888, 1.04288, 1.07614, 1.10872};
-  static const G4double XJ[nX]={1.71931e-14,
- .202988, .297870, .373025, .437731, .495658, .548713, .598041, .644395, .688302, .730147,
- .770224, .808762, .845943, .881916, .916805, .950713, .983728, 1.01592, 1.04737, 1.07813};
-  // Direct table
-  static const G4double Xmin[nE]={X0[0],X1[0],X2[0],X3[0],X4[0],X5[0],X6[0],X7[0],X8[0],
-                        X9[0],XA[0],XB[0],XC[0],XD[0],XE[0],XF[0],XG[0],XH[0],XI[0],XJ[0]};
-  static const G4double dX[nE]={
-    (X0[lX]-X0[0])/lX, (X1[lX]-X1[0])/lX, (X2[lX]-X2[0])/lX, (X3[lX]-X3[0])/lX,
-    (X4[lX]-X4[0])/lX, (X5[lX]-X5[0])/lX, (X6[lX]-X6[0])/lX, (X7[lX]-X7[0])/lX,
-    (X8[lX]-X8[0])/lX, (X9[lX]-X9[0])/lX, (XA[lX]-XA[0])/lX, (XB[lX]-XB[0])/lX,
-    (XC[lX]-XC[0])/lX, (XD[lX]-XD[0])/lX, (XE[lX]-XE[0])/lX, (XF[lX]-XF[0])/lX,
-    (XG[lX]-XG[0])/lX, (XH[lX]-XH[0])/lX, (XI[lX]-XI[0])/lX, (XJ[lX]-XJ[0])/lX};
-  static const G4double* Xl[nE]=
-                             {X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,XA,XB,XC,XD,XE,XF,XG,XH,XI,XJ};
-  static const G4double I0[nX]={0,
- .411893, 1.25559, 2.34836, 3.60264, 4.96046, 6.37874, 7.82342, 9.26643, 10.6840, 12.0555,
- 13.3628, 14.5898, 15.7219, 16.7458, 17.6495, 18.4217, 19.0523, 19.5314, 19.8501, 20.0000};
-  static const G4double I1[nX]={0,
- .401573, 1.22364, 2.28998, 3.51592, 4.84533, 6.23651, 7.65645, 9.07796, 10.4780, 11.8365,
- 13.1360, 14.3608, 15.4967, 16.5309, 17.4516, 18.2481, 18.9102, 19.4286, 19.7946, 20.0000};
-  static const G4double I2[nX]={0,
- .387599, 1.17339, 2.19424, 3.37090, 4.65066, 5.99429, 7.37071, 8.75427, 10.1232, 11.4586,
- 12.7440, 13.9644, 15.1065, 16.1582, 17.1083, 17.9465, 18.6634, 19.2501, 19.6982, 20.0000};
-  static const G4double I3[nX]={0,
- .366444, 1.09391, 2.04109, 3.13769, 4.33668, 5.60291, 6.90843, 8.23014, 9.54840, 10.8461,
- 12.1083, 13.3216, 14.4737, 15.5536, 16.5512, 17.4573, 18.2630, 18.9603, 19.5417, 20.0000};
-  static const G4double I4[nX]={0,
- .321962, .959681, 1.79769, 2.77753, 3.85979, 5.01487, 6.21916, 7.45307, 8.69991, 9.94515,
- 11.1759, 12.3808, 13.5493, 14.6720, 15.7402, 16.7458, 17.6813, 18.5398, 19.3148, 20.0000};
-  static const G4double I5[nX]={0,
- .257215, .786302, 1.49611, 2.34049, 3.28823, 4.31581, 5.40439, 6.53832, 7.70422, 8.89040,
- 10.0865, 11.2833, 12.4723, 13.6459, 14.7969, 15.9189, 17.0058, 18.0517, 19.0515, 20.0000};
-  static const G4double I6[nX]={0,
- .201608, .638914, 1.24035, 1.97000, 2.80354, 3.72260, 4.71247, 5.76086, 6.85724, 7.99243,
- 9.15826, 10.3474, 11.5532, 12.7695, 13.9907, 15.2117, 16.4275, 17.6337, 18.8258, 20.0000};
-  static const G4double I7[nX]={0,
- .168110, .547208, 1.07889, 1.73403, 2.49292, 3.34065, 4.26525, 5.25674, 6.30654, 7.40717,
- 8.55196, 9.73492, 10.9506, 12.1940, 13.4606, 14.7460, 16.0462, 17.3576, 18.6767, 20.0000};
-  static const G4double I8[nX]={0,
- .150652, .497557, .990048, 1.60296, 2.31924, 3.12602, 4.01295, 4.97139, 5.99395, 7.07415,
- 8.20621, 9.38495, 10.6057, 11.8641, 13.1561, 14.4781, 15.8267, 17.1985, 18.5906, 20.0000};
-  static const G4double I9[nX]={0,
- .141449, .470633, .941304, 1.53053, 2.22280, 3.00639, 3.87189, 4.81146, 5.81837, 6.88672,
- 8.01128, 9.18734, 10.4106, 11.6772, 12.9835, 14.3261, 15.7019, 17.1080, 18.5415, 20.0000};
-  static const G4double IA[nX]={0,
- .136048, .454593, .912075, 1.48693, 2.16457, 2.93400, 3.78639, 4.71437, 5.71163, 6.77265,
- 7.89252, 9.06683, 10.2916, 11.5631, 12.8780, 14.2331, .625500, 17.0525, 18.5115, 20.0000};
-  static const G4double IB[nX]={0,
- .132316, .443455, .891741, 1.45656, 2.12399, 2.88352, 3.72674, 4.64660, 5.63711, 6.69298,
- 7.80955, 8.98262, 10.2084, 11.4833, 12.8042, 14.1681, 15.5721, 17.0137, 18.4905, 20.0000};
-  static const G4double IC[nX]={0,
- .129197, .434161, .874795, 1.43128, 2.09024, 2.84158, 3.67721, 4.59038, 5.57531, 6.62696,
- 7.74084, 8.91291, 10.1395, 11.4173, 12.7432, 14.1143, 15.5280, 16.9817, 18.4731, 20.0000};
-  static const G4double ID[nX]={0,
- .126079, .424911, .857980, 1.40626, 2.05689, 2.80020, 3.62840, 4.53504, 5.51456, 6.56212,
- 7.67342, 8.84458, 10.0721, 11.3527, 12.6836, 14.0618, 15.4849, 16.9504, 18.4562, 20.0000};
-  static const G4double IE[nX]={0,
- .122530, .414424, .838964, 1.37801, 2.01931, 2.75363, 3.57356, 4.47293, 5.44644, 6.48949,
- 7.59795, 8.76815, 9.99673, 11.2806, 12.6170, 14.0032, 15.4369, 16.9156, 18.4374, 20.0000};
-  static const G4double IF[nX]={0,
- .118199, .401651, .815838, 1.34370, 1.97370, 2.69716, 3.50710, 4.39771, 5.36401, 6.40164,
- 7.50673, 8.67581, 9.90572, 11.1936, 12.5367, 13.9326, 15.3790, 16.8737, 18.4146, 20.0000};
-  static const G4double IG[nX]={0,
- .112809, .385761, .787075, 1.30103, 1.91700, 2.62697, 3.42451, 4.30424, 5.26158, 6.29249,
- 7.39341, 8.56112, 9.79269, 11.0855, 12.4369, 13.8449, 15.3071, 16.8216, 18.3865, 20.0000};
-  static const G4double IH[nX]={0,
- .106206, .366267, .751753, 1.24859, 1.84728, 2.54062, 3.32285, .189160, 5.13543, 6.15804,
- 7.25377, 8.41975, 9.65334, 10.9521, 12.3139, 13.7367, 15.2184, 16.7573, 18.3517, 20.0000};
-  static const G4double II[nX]={0,
- .098419, .343194, .709850, 1.18628, 1.76430, 2.43772, 3.20159, 4.05176, 4.98467, 5.99722,
- 7.08663, 8.25043, 9.48633, 10.7923, 12.1663, 13.6067, 15.1118, 16.6800, 18.3099, 20.0000};
-  static const G4double IJ[nX]={0,
- .089681, .317135, .662319, 1.11536, 1.66960, 2.32002, 3.06260, 3.89397, 4.81126, 5.81196,
- 6.89382, 8.05483, 9.29317, 10.6072, 11.9952, 13.4560, 14.9881, 16.5902, 18.2612, 20.0000};
-  static const G4double* Il[nE]=
-                             {I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ};
-  static const G4double lE[nE]={
--1.98842,-1.58049,-1.17256,-.764638,-.356711, .051215, .459141, .867068, 1.27499, 1.68292,
- 2.09085, 2.49877, 2.90670, 3.31463, 3.72255, 4.13048, 4.53840, 4.94633, 5.35426, 5.76218};
-  static const G4double lEmi=lE[0];
-  static const G4double lEma=lE[nE-1];
-  static const G4double dlE=(lEma-lEmi)/bE;
-  //***************************************************************************************
-  G4double Enu=lastE;                 // Get energy of the last calculated cross-section
-  G4double lEn=std::log(Enu);         // log(E) for interpolation
-  G4double rE=(lEn-lEmi)/dlE;         // Position of the energy
-  G4int fE=static_cast<int>(rE);      // Left bin for interpolation
-  if(fE<0) fE=0;
-  if(fE>pE)fE=pE;
-  G4int    sE=fE+1;                   // Right bin for interpolation
-  G4double dE=rE-fE;                  // relative log shift from the left bin
-  G4double dEnu=Enu+Enu;              // doubled energy of nu/anu
-  G4double Enu2=Enu*Enu;              // squared energy of nu/anu
-  G4double Emu=Enu-mmu;               // Free Energy of neutrino/anti-neutrino
-  G4double ME=Enu*MN;                 // M*E
-  G4double dME=ME+ME;                 // 2*M*E
-  G4double dEMN=(dEnu+MN)*ME;
-  G4double MEm=ME-hmmu2;
-  G4double sqE=Enu*std::sqrt(MEm*MEm-mmu2*MN2);
-  G4double E2M=MN*Enu2-(Enu+MN)*hmmu2;
-  G4double ymax=(E2M+sqE)/dEMN;
-  G4double ymin=(E2M-sqE)/dEMN;
-  G4double rmin=1.-ymin;
-  G4double rhm2E=hmmu2/Enu2;
-  G4double Q2mi=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E)); // Q2_min(E_nu)
-  G4double Q2ma=dME*ymax;                                                  // Q2_max(E_nu)
-  G4double Q2nq=Emu*dMN-mcV;
-  if(Q2ma>Q2nq) Q2ma=Q2nq;            // Correction for Non Quasi Elastic
-  // --- now r_min=Q2mi/Q2ma and r_max=1.; when r is randomized -> Q2=r*Q2ma ---
-  G4double Rmi=Q2mi/Q2ma;
-  G4double shift=1.+.9673/(1.+.323/Enu/Enu)/std::pow(Enu,.78); //@@ different for anti-nu
-  // --- E-interpolation must be done in a log scale ---
-  G4double Xmi=std::pow((shift-Rmi),power);// X_min(E_nu)
-  G4double Xma=std::pow((shift-1.),power); // X_max(E_nu)
-  // Find the integral values integ(Xmi) & integ(Xma) using the direct table
-  G4double idX=dX[fE]+dE*(dX[sE]-dX[fE]); // interpolated X step
-  G4double iXmi=Xmin[fE]+dE*(Xmin[sE]-Xmin[fE]); // interpolated X minimum
-  G4double rXi=(Xmi-iXmi)/idX;
-  G4int    iXi=static_cast<int>(rXi);
-  if(iXi<0) iXi=0;
-  if(iXi>bX) iXi=bX;
-  G4double dXi=rXi-iXi;
-  G4double bntil=Il[fE][iXi];
-  G4double intil=bntil+dXi*(Il[fE][iXi+1]-bntil);
-  G4double bntir=Il[sE][iXi];
-  G4double intir=bntir+dXi*(Il[sE][iXi+1]-bntir);
-  G4double inti=intil+dE*(intir-intil);// interpolated begin of the integral
-  //
-  G4double rXa=(Xma-iXmi)/idX;
-  G4int    iXa=static_cast<int>(rXa);
-  if(iXa<0) iXa=0;
-  if(iXa>bX) iXa=bX;
-  G4double dXa=rXa-iXa;
-  G4double bntal=Il[fE][iXa];
-  G4double intal=bntal+dXa*(Il[fE][iXa+1]-bntal);
-  G4double bntar=Il[sE][iXa];
-  G4double intar=bntar+dXa*(Il[sE][iXa+1]-bntar);
-  G4double inta=intal+dE*(intar-intal);// interpolated end of the integral
-  //
-  // *** Find X using the reversed table ***
-  G4double intx=inti+(inta-inti)*G4UniformRand(); 
-  G4int    intc=static_cast<int>(intx);
-  if(intc<0) intc=0;
-  if(intc>bX) intc=bX;
-  G4double dint=intx-intc;
-  G4double mXl=Xl[fE][intc];
-  G4double Xlb=mXl+dint*(Xl[fE][intc+1]-mXl);
-  G4double mXr=Xl[sE][intc];
-  G4double Xrb=mXr+dint*(Xl[sE][intc+1]-mXr);
-  G4double X=Xlb+dE*(Xrb-Xlb);        // interpolated X value
-  G4double R=shift-std::pow(X,pconv);
-  G4double Q2=R*Q2ma;
-  return Q2*GeV*GeV;
-}
-
-// It returns a fraction of the direct interaction of the neutrino with quark-partons
-G4double G4QNuMuNuclearCrossSection::GetDirectPart(G4double Q2)
-{
-  G4double f=Q2/4.62;
-  G4double ff=f*f;
-  G4double r=ff*ff;
-  G4double s=std::pow((1.+.6/Q2),(-1.-(1.+r)/(12.5+r/.3)));
-  //@@ It is the same for nu/anu, but for nu it is a bit less, and for anu a bit more (par)
-  return 1.-s*(1.-s/2);
-}
-
-// #of quark-partons in the nonperturbative phase space is the same for neut and anti-neut
-G4double G4QNuMuNuclearCrossSection::GetNPartons(G4double Q2)
-{
-  return 3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space
-}
-
-// This class can provide only virtual exchange pi+ (a substitute for W+ boson)
-G4int G4QNuMuNuclearCrossSection::GetExchangePDGCode() {return 211;}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QNuNuNuclearCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QNuNuNuclearCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,730 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QNuNuNuclearCrossSection.cc,v 1.3 2009/02/23 09:49:24 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QNuNuNuclearCrossSection for (nu,nu)A cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 17-Oct-03
-// 
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-//=========================================================================================
-
-//#define debug
-//#define edebug
-//#define pdebug
-//#define ppdebug
-//#define tdebug
-//#define sdebug
-
-#include "G4QNuNuNuclearCrossSection.hh"
-
-// Initialization of the
-G4bool    G4QNuNuNuclearCrossSection::onlyCS=true;// Flag to calculate only CS (not QE)
-G4double  G4QNuNuNuclearCrossSection::lastSig=0.;// Last calculated total cross section
-G4double  G4QNuNuNuclearCrossSection::lastQEL=0.;// Last calculated quasi-el. cross section
-G4int     G4QNuNuNuclearCrossSection::lastL=0;   // Last used in cross section TheLastBin
-G4double  G4QNuNuNuclearCrossSection::lastE=0.;  // Last used in cross section TheEnergy
-G4double* G4QNuNuNuclearCrossSection::lastEN=0;  // Pointer to the Energy Scale of TX & QE
-G4double* G4QNuNuNuclearCrossSection::lastTX=0;  // Pointer to the LastArray of TX function
-G4double* G4QNuNuNuclearCrossSection::lastQE=0;  // Pointer to the LastArray of QE function
-G4int     G4QNuNuNuclearCrossSection::lastPDG=0; // The last PDG code of the projectile
-G4int     G4QNuNuNuclearCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QNuNuNuclearCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QNuNuNuclearCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QNuNuNuclearCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QNuNuNuclearCrossSection::lastCS=0.; // Last value of the Cross Section
-G4int     G4QNuNuNuclearCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QNuNuNuclearCrossSection::GetPointer()
-{
-  static G4QNuNuNuclearCrossSection theCrossSection; //**Static body of the Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QNuNuNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom,
-                                                     G4int tgZ, G4int tgN, G4int pPDG)
-{
-  static G4int j;                      // A#0f records found in DB for this projectile
-  static std::vector <G4int>    colPDG;// Vector of the projectile PDG code
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-  G4double pEn=pMom;
-#ifdef debug
-  G4cout<<"G4QNMNCS::GetCS:>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG="<<pPDG<<"("<<lastPDG<<"), T="<<pEn<<"("<<lastTH<<")"<<",Sz="
-        <<colN.size()<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  if(pPDG!=14)
-  {
-#ifdef pdebug
-    G4cout<<"G4QNMNCS::GetCS: *** Found pPDG="<<pPDG<<" ====> CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // projectile PDG=0 is a mistake (?!) @@
-  }
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tgN!=lastN || tgZ!=lastZ || pPDG!=lastPDG)// The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastPDG = pPDG;                    // The last PDG of the projectile
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-    if(lastI) for(G4int i=0; i<lastI; i++) if(colPDG[i]==pPDG) // The partType is found
-    {                                  // The nucleus with projPDG is found in AMDB
-      if(colN[i]==tgN && colZ[i]==tgZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QNMNCS::GetCS:*Found*P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(pEn<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QNMNCS::GetCS:Found T="<<pEn<<" < Threshold="<<lastTH<<",X=0"<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastCS =colCS[i];                // Last CrossSect (A-dependent)
-        if(std::fabs(lastP/pMom-1.)<tolerance)
-        {
-#ifdef pdebug
-          G4cout<<"G4QNMNCS::GetCS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QNMNCS::G:UpdaDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // read & update
-#ifdef pdebug
-        G4cout<<"G4QNMNCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(lastCS<=0. && pEn>lastTH)    // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QNMNCS::GetCS: New T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-        break;                           // Go out of the LOOP
-      }
-#ifdef pdebug
-      G4cout<<"---G4QNMNCrossSec::GetCrosSec:pPDG="<<pPDG<<",j="<<j<<",N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<",cPDG="<<colPDG[i]<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      j++;                             // Increment a#0f records found in DB for this pPDG
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QNMNCS::GetCrSec: CalcNew P="<<pMom<<",f="<<fCS<<",lastI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,j,lastPDG,lastZ,lastN,pMom); //calculate & create
-      if(lastCS<=0.)
-      {
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QNMNCrossSection::GetCrossSect:NewThresh="<<lastTH<<",T="<<pEn<<G4endl;
-#endif
-        if(pEn>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QNMNCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QNMNCS::GetCrosSec:New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      colN.push_back(tgN);
-      colZ.push_back(tgZ);
-      colPDG.push_back(pPDG);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colCS.push_back(lastCS);
-#ifdef pdebug
-      G4cout<<"G4QNMNCS::GetCS:1st,P="<<pMom<<"(MeV),X="<<lastCS*millibarn<<"(mb)"<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QNMNCS::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colPDG[lastI]=pPDG;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-  else if(pEn<=lastTH)
-  {
-#ifdef pdebug
-    G4cout<<"G4QNMNCS::GetCS: Current T="<<pEn<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  else if(std::fabs(lastP/pMom-1.)<tolerance)
-  {
-#ifdef pdebug
-    G4cout<<"G4QNMNCS::GetCS:OldCur P="<<pMom<<"="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return lastCS*millibarn;     // Use theLastCS
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"G4QNMNCS::GetCS:UpdaCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastCS=CalculateCrossSection(fCS,1,j,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-    lastP=pMom;
-  }
-#ifdef pdebug
-  G4cout<<"G4QNMNCS::GetCrSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  return lastCS*millibarn;
-}
-
-// Gives the threshold energy = the same for all nuclei (@@ can be reduced for hevy nuclei)
-G4double G4QNuNuNuclearCrossSection::ThresholdEnergy(G4int, G4int, G4int) {return 0.;}
-
-// The main member function giving the gamma-A cross section (E_kin in MeV, CS in mb)
-G4double G4QNuNuNuclearCrossSection::CalculateCrossSection(G4bool CS, G4int F, G4int I,
-                                        G4int, G4int targZ, G4int targN, G4double Momentum)
-{
-  static const G4double mb38=1.E-11;// Conversion 10^-38 cm^2 to mb=10^-27 cm^2
-  static const G4int nE=65;   // !! If change this, change it in GetFunctions() (*.hh) !!
-  static const G4int mL=nE-1;
-  static const G4double EMi=0.; // Universal threshold of the reaction in GeV
-  static const G4double EMa=300.;       // Maximum tabulated Energy of nu_mu in GeV 
-  // *** Begin of the Associative memory for acceleration of the cross section calculations
-  static std::vector <G4double> colH;   //?? Vector of HighEnergyCoefficients (functional)
-  static std::vector <G4double*> TX;    // Vector of pointers to the TX tabulated functions
-  static std::vector <G4double*> QE;    // Vector of pointers to the QE tabulated functions
-  static G4bool first=true;             // Flag of initialization of the energy axis
-  // *** End of Static Definitions (Associative Memory) ***
-  //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Muon
-  //G4double TotEnergy2=Momentum;
-  onlyCS=CS;                            // Flag to calculate only CS (not TX & QE)
-  lastE=Momentum/GeV;                   // Kinetic energy of the muon neutrino (in GeV!)
-  if (lastE<=EMi)                       // Energy is below the minimum energy in the table
-  {
-    lastE=0.;
-    lastSig=0.;
-    return 0.;
-  }
-  G4int Z=targZ;                        // New Z, which can change the sign
-  if(F<=0)                              // This isotope was not the last used isotop
-  {
-    if(F<0)                          // This isotope was found in DAMDB =========> RETRIEVE
-    {
-      lastTX =TX[I];                 // Pointer to the prepared TX function (same isotope)
-      lastQE =QE[I];                 // Pointer to the prepared QE function (same isotope)
-   }
-   else                              // This isotope wasn't calculated previously => CREATE
-   {
-      if(first)
-      {
-        lastEN = new G4double[nE];   // This must be done only once!
-        Z=-Z;                        // To explain GetFunctions that E-axis must be filled
-        first=false;                 // To make it only once
-      }
-      lastTX = new G4double[nE];     // Allocate memory for the new TX function
-      lastQE = new G4double[nE];     // Allocate memory for the new QE function
-      G4int res=GetFunctions(Z,targN,lastTX,lastQE,lastEN);//@@analize(0=first,-1=bad,1=OK)
-      if(res<0) G4cerr<<"*W*G4NuMuNuclearCS::CalcCrossSect:Bad Function Retrieve"<<G4endl;
-      // *** The synchronization check ***
-      G4int sync=TX.size();
-      if(sync!=I) G4cerr<<"***G4NuMuNuclearCS::CalcCrossSect:Sync.="<<sync<<"#"<<I<<G4endl;
-      TX.push_back(lastTX);
-      QE.push_back(lastQE);
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW Calculate the Cross Section =====================
-  if (lastE<=EMi)                   // Check that the neutrinoEnergy is higher than ThreshE
-  {
-    lastE=0.;
-    lastSig=0.;
-    return 0.;
-  }
-  if(lastE<EMa) // Linear fit is made explicitly to fix the last bin for the randomization
-  {
-    G4int chk=1;
-    G4int ran=mL/2;
-    G4int sep=ran;  // as a result = an index of the left edge of the interval
-    while(ran>=2)
-    {
-      G4int newran=ran/2;
-      if(lastE<=lastEN[sep]) sep-=newran;
-      else                   sep+=newran;
-      ran=newran;
-      chk=chk+chk; 
-    }
-    if(chk+chk!=mL) G4cerr<<"*Warn*G4NuMuNuclearCS::CalcCS:Table! mL="<<mL<<G4endl;
-    G4double lowE=lastEN[sep];
-    G4double highE=lastEN[sep+1];
-    G4double lowTX=lastTX[sep];
-    if(lastE<lowE||sep>=mL||lastE>highE)
-      G4cerr<<"*Warn*G4NuMuNuclearCS::CalcCS:Bin! "<<lowE<<" < "<<lastE<<" < "<<highE
-            <<", sep="<<sep<<", mL="<<mL<<G4endl;
-    lastSig=lastE*(lastE-lowE)*(lastTX[sep+1]-lowTX)/(highE-lowE)+lowTX; // Recover *E
-    if(!onlyCS)                       // Skip the differential cross-section parameters
-    {
-      G4double lowQE=lastQE[sep];
-      lastQEL=(lastE-lowE)*(lastQE[sep+1]-lowQE)/(highE-lowE)+lowQE;
-#ifdef pdebug
-      G4cout<<"G4NuMuNuclearCS::CalcCS: T="<<lastSig<<",Q="<<lastQEL<<",E="<<lastE<<G4endl;
-#endif
-    }
-  }
-  else
-  {
-    lastSig=lastTX[mL]; // @@ No extrapolation, just a const, while it looks shrinking...
-    lastQEL=lastQE[mL];
-  }
-  if(lastQEL<0.) lastQEL = 0.;
-  if(lastSig<0.) lastSig = 0.;
-  // The cross-sections are expected to be in mb
-  lastSig*=mb38;
-  if(!onlyCS) lastQEL*=mb38;
-  return lastSig;
-}
-
-// Calculate the cros-section functions
-// ****************************************************************************************
-// *** This tables are the same for all lepto-nuclear reactions, only mass is different ***
-// ***@@ IT'S REASONABLE TO MAKE ADDiTIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR WITH THIS@@ ***
-// ****************************************************************************************
-G4int G4QNuNuNuclearCrossSection::GetFunctions(G4int z, G4int n,
-                                                     G4double* t, G4double* q, G4double* e)
-{
-  static const G4int nE=65; // !! If change this, change it in GetCrossSection() (*.cc) !!
-  static const G4double nuEn[nE]={0.,
-  1.00463e-5,1.05336e-5,1.10692e-5,1.16592e-5,1.23109e-5,1.30323e-5,1.38331e-5,1.47245e-5,
-  1.57194e-5,1.68335e-5,1.80848e-5,1.94948e-5,2.10894e-5,2.28991e-5,2.49608e-5,2.73189e-5,
-  3.00273e-5,3.31516e-5,3.67722e-5,4.09881e-5,4.59217e-5,5.17255e-5,5.85908e-5,6.67583e-5,
-  7.65338e-5,8.83078e-5,.000102583,.000120011,.000141441,.000167995,.000201160,.000242926,
-  .000295985,.000364008,.000452051,.000567152,.000719210,.000922307,.001196710,.001571930,
-  .002091530,.002820590,.003857810,.005354930,.007548840,.010815300,.015760100,.023376900,
-  .035325600,.054430800,.085595700,.137508000,.225898000,.379892000,.654712000,1.15767000,
-  2.10277000,3.92843000,7.55861000,14.9991000,30.7412000,65.1734000,143.155000,326.326000};
-  static const G4double TOTX[nE]={0.,
-  3.18319e-5,3.33759e-5,3.50729e-5,3.69425e-5,3.90071e-5,4.12928e-5,4.38300e-5,4.66541e-5,
-  4.98065e-5,5.33360e-5,5.73004e-5,6.17678e-5,6.68196e-5,7.25529e-5,7.90845e-5,8.65551e-5,
-  9.51355e-5,.000105033,.000116503,.000129858,.000145486,.000163871,.000185616,.000211484,
-  .000242444,.000279730,.000324932,.000380110,.000447953,.000531999,.000636946,.000769076,
-  .000936873,.001151900,.001430050,.001793410,.002272980,.002912690,.003775490,.004952530,
-  .006577150,.008846400,.012054100,.017404800,.027443300,.040285600,.058251500,.084054600,
-  .121309000,.173273000,.240200000,.312865000,.367478000,.379071000,.348461000,.301143000,
-  .259802000,.231449000,.214007000,.203827000,.198265000,.195186000,.192821000,.190555000};
-  static const G4double QELX[nE]={0.,
-  .319793e-9,.351567e-9,.388228e-9,.430721e-9,.480212e-9,.538141e-9,.606306e-9,.686956e-9,
-  .782930e-9,.897832e-9,1.03626e-9,1.20415e-9,1.40918e-9,1.66139e-9,1.97401e-9,2.36458e-9,
-  2.85666e-9,3.48202e-9,4.28408e-9,5.32264e-9,6.68098e-9,8.47630e-9,1.08754e-8,1.41183e-8,
-  1.85552e-8,2.47023e-8,3.33325e-8,4.56172e-8,6.33590e-8,8.93735e-8,1.28128e-7,1.86829e-7,
-  2.77301e-7,4.19300e-7,6.46455e-7,1.01714e-6,1.63475e-6,2.68640e-6,4.51816e-6,7.78503e-6,
-  1.37563e-5,2.49521e-5,4.65025e-5,9.32015e-5,.000207165,.000435700,.000918046,.001964940,
-  .004285300,.009431390,.020560100,.043021600,.083012600,.142280000,.194239000,.222213000,
-  .231903000,.234030000,.234691000,.235204000,.235575000,.235793000,.235902000,.235946000};
-  // --------------------------------
-  G4int first=0;
-  if(z<0.)
-  {
-    first=1;
-    z=-z;
-  }
-  if(z<1 || z>92)             // neutron and plutonium are forbidden
-  {
-    G4cout<<"***G4QNuNuNuclearCrossSection::GetFunctions:Z="<<z<<".No CS returned"<<G4endl;
-    return -1;
-  }
-  for(G4int k=0; k<nE; k++)
-  {
-    G4double a=n+z;
-    G4double na=n+a;
-    G4double dn=n+n;
-    G4double da=a+a;
-    G4double ta=da+a;
-    if(first) e[k]=nuEn[k];       // Energy of neutrino E (first bin k=0 can be modified)
-    t[k]=TOTX[k]*nuEn[k]*(na+na)/ta+QELX[k]*(dn+dn-da)/ta; // TotalCrossSection
-    q[k]=QELX[k]*dn/a;                                     // QuasiElasticCrossSection
-  }
-  return first;
-}
-
-// Randomize Q2 from neutrino to the scattered muon when the scattering is quasi-elastic
-G4double G4QNuNuNuclearCrossSection::GetQEL_ExchangeQ2()
-{
-  static const double MN=.931494043;   // Nucleon mass (inside nucleus, atomicMassUnit,GeV)
-  static const G4double power=-3.5;    // direct power for the magic variable
-  static const G4double pconv=1./power;// conversion power for the magic variable
-  static const G4int nQ2=101;          // #Of point in the Q2l table (in GeV^2)
-  static const G4int lQ2=nQ2-1;        // index of the last in the Q2l table
-  static const G4int bQ2=lQ2-1;        // index of the before last in the Q2 ltable
-  // Reversed table
-  static const G4double Xl[nQ2]={1.87905e-10,
- .005231, .010602, .016192, .022038, .028146, .034513, .041130, .047986, .055071, .062374,
- .069883, .077587, .085475, .093539, .101766, .110150, .118680, .127348, .136147, .145069,
- .154107, .163255, .172506, .181855, .191296, .200825, .210435, .220124, .229886, .239718,
- .249617, .259578, .269598, .279675, .289805, .299986, .310215, .320490, .330808, .341169,
- .351568, .362006, .372479, .382987, .393527, .404099, .414700, .425330, .435987, .446670,
- .457379, .468111, .478866, .489643, .500441, .511260, .522097, .532954, .543828, .554720,
- .565628, .576553, .587492, .598447, .609416, .620398, .631394, .642403, .653424, .664457,
- .675502, .686557, .697624, .708701, .719788, .730886, .741992, .753108, .764233, .775366,
- .786508, .797658, .808816, .819982, .831155, .842336, .853524, .864718, .875920, .887128,
- .898342, .909563, .920790, .932023, .943261, .954506, .965755, .977011, .988271, .999539};
-  // Direct table
-  static const G4double Xmax=Xl[lQ2];
-  static const G4double Xmin=Xl[0];
-  static const G4double dX=(Xmax-Xmin)/lQ2;  // step in X(Q2, GeV^2)
-  static const G4double inl[nQ2]={0,
- 1.88843, 3.65455, 5.29282, 6.82878, 8.28390, 9.67403, 11.0109, 12.3034, 13.5583, 14.7811,
- 15.9760, 17.1466, 18.2958, 19.4260, 20.5392, 21.6372, 22.7215, 23.7933, 24.8538, 25.9039,
- 26.9446, 27.9766, 29.0006, 30.0171, 31.0268, 32.0301, 33.0274, 34.0192, 35.0058, 35.9876,
- 36.9649, 37.9379, 38.9069, 39.8721, 40.8337, 41.7920, 42.7471, 43.6992, 44.6484, 45.5950,
- 46.5390, 47.4805, 48.4197, 49.3567, 50.2916, 51.2245, 52.1554, 53.0846, 54.0120, 54.9377,
- 55.8617, 56.7843, 57.7054, 58.6250, 59.5433, 60.4603, 61.3761, 62.2906, 63.2040, 64.1162,
- 65.0274, 65.9375, 66.8467, 67.7548, 68.6621, 69.5684, 70.4738, 71.3784, 72.2822, 73.1852,
- 74.0875, 74.9889, 75.8897, 76.7898, 77.6892, 78.5879, 79.4860, 80.3835, 81.2804, 82.1767,
- 83.0724, 83.9676, 84.8622, 85.7563, 86.6499, 87.5430, 88.4356, 89.3277, 90.2194, 91.1106,
- 92.0013, 92.8917, 93.7816, 94.6711, 95.5602, 96.4489, 97.3372, 98.2252, 99.1128, 100.000};
-  G4double Enu=lastE;                 // Get energy of the last calculated cross-section
-  G4double dEnu=Enu+Enu;              // doubled energy of nu/anu
-  G4double Enu2=Enu*Enu;              // squared energy of nu/anu
-  G4double ME=Enu*MN;                 // M*E
-  G4double dME=ME+ME;                 // 2*M*E
-  G4double dEMN=(dEnu+MN)*ME;
-  G4double sqE=Enu*ME;
-  G4double E2M=MN*Enu2;
-  G4double ymax=(E2M+sqE)/dEMN;
-  G4double Q2mi=0; // Q2_min(E_nu)
-  G4double Q2ma=dME*ymax;                                                  // Q2_max(E_nu)
-  G4double Xma=std::pow((1.+Q2mi),power);  // X_max(E_nu)
-  G4double Xmi=std::pow((1.+Q2ma),power);  // X_min(E_nu)
-  // Find the integral values integ(Xmi) & integ(Xma) using the direct table
-  G4double rXi=(Xmi-Xmin)/dX;
-  G4int    iXi=static_cast<int>(rXi);
-  if(iXi<0) iXi=0;
-  if(iXi>bQ2) iXi=bQ2;
-  G4double dXi=rXi-iXi;
-  G4double bnti=inl[iXi];
-  G4double inti=bnti+dXi*(inl[iXi+1]-bnti);
-  //
-  G4double rXa=(Xma-Xmin)/dX;
-  G4int    iXa=static_cast<int>(rXa);
-  if(iXa<0) iXa=0;
-  if(iXa>bQ2) iXa=bQ2;
-  G4double dXa=rXa-iXa;
-  G4double bnta=inl[iXa];
-  G4double inta=bnta+dXa*(inl[iXa+1]-bnta);
-  // *** Find X using the reversed table ***
-  G4double intx=inti+(inta-inti)*G4UniformRand();
-  G4int    intc=static_cast<int>(intx);
-  if(intc<0) intc=0;
-  if(intc>bQ2) intc=bQ2;         // If it is more than max, then the BAD extrapolation
-  G4double dint=intx-intc;
-  G4double mX=Xl[intc];
-  G4double X=mX+dint*(Xl[intc+1]-mX);
-  G4double Q2=std::pow(X,pconv)-1.;
-  return Q2*GeV*GeV;
-}
-
-// Randomize Q2 from neutrino to the scattered muon when the scattering is not quasiElastic
-G4double G4QNuNuNuclearCrossSection::GetNQE_ExchangeQ2()
-{
-  static const double mpi=.13957018;    // charged pi meson mass in GeV
-  static const double MN=.931494043;    // Nucleon mass (inside nucleus,atomicMassUnit,GeV)
-  static const double dMN=MN+MN;        // 2*M_N in GeV
-  static const double mcV=(dMN+mpi)*mpi;// constant of W>M+mc cut for Quasi-Elastic
-  static const G4int power=7;           // direct power for the magic variable
-  static const G4double pconv=1./power; // conversion power for the magic variable
-  static const G4int nX=21;             // #Of point in the Xl table (in GeV^2)
-  static const G4int lX=nX-1;           // index of the last in the Xl table
-  static const G4int bX=lX-1;           // @@ index of the before last in the Xl table
-  static const G4int nE=20;             // #Of point in the El table (in GeV^2)
-  static const G4int bE=nE-1;           // index of the last in the El table
-  static const G4int pE=bE-1;           // index of the before last in the El table
-  // Reversed table
-  static const G4double X0[nX]={6.14081e-05,
- .413394, .644455, .843199, 1.02623, 1.20032, 1.36916, 1.53516, 1.70008, 1.86539, 2.03244,
- 2.20256, 2.37723, 2.55818, 2.74762, 2.94857, 3.16550, 3.40582, 3.68379, 4.03589, 4.77419};
-  static const G4double X1[nX]={.00125268,
- .861178, 1.34230, 1.75605, 2.13704, 2.49936, 2.85072, 3.19611, 3.53921, 3.88308, 4.23049,
- 4.58423, 4.94735, 5.32342, 5.71700, 6.13428, 6.58447, 7.08267, 7.65782, 8.38299, 9.77330};
-  static const G4double X2[nX]={.015694,
- 1.97690, 3.07976, 4.02770, 4.90021, 5.72963, 6.53363, 7.32363, 8.10805, 8.89384, 9.68728,
- 10.4947, 11.3228, 12.1797, 13.0753, 14.0234, 15.0439, 16.1692, 17.4599, 19.0626, 21.7276};
-  static const G4double X3[nX]={.0866877,
- 4.03498, 6.27651, 8.20056, 9.96931, 11.6487, 13.2747, 14.8704, 16.4526, 18.0351, 19.6302,
- 21.2501, 22.9075, 24.6174, 26.3979, 28.2730, 30.2770, 32.4631, 34.9243, 37.8590, 41.9115};
-  static const G4double X4[nX]={.160483,
- 5.73111, 8.88884, 11.5893, 14.0636, 16.4054, 18.6651, 20.8749, 23.0578, 25.2318, 27.4127,
- 29.6152, 31.8540, 34.1452, 36.5074, 38.9635, 41.5435, 44.2892, 47.2638, 50.5732, 54.4265};
-  static const G4double X5[nX]={.0999307,
- 5.25720, 8.11389, 10.5375, 12.7425, 14.8152, 16.8015, 18.7296, 20.6194, 22.4855, 24.3398,
- 26.1924, 28.0527, 29.9295, 31.8320, 33.7699, 35.7541, 37.7975, 39.9158, 42.1290, 44.4649};
-  static const G4double X6[nX]={.0276367,
- 3.53378, 5.41553, 6.99413, 8.41629, 9.74057, 10.9978, 12.2066, 13.3796, 14.5257, 15.6519,
- 16.7636, 17.8651, 18.9603, 20.0527, 21.1453, 22.2411, 23.3430, 24.4538, 25.5765, 26.7148};
-  static const G4double X7[nX]={.00472383,
- 2.08253, 3.16946, 4.07178, 4.87742, 5.62140, 6.32202, 6.99034, 7.63368, 8.25720, 8.86473,
- 9.45921, 10.0430, 10.6179, 11.1856, 11.7475, 12.3046, 12.8581, 13.4089, 13.9577, 14.5057};
-  static const G4double X8[nX]={.000630783,
- 1.22723, 1.85845, 2.37862, 2.84022, 3.26412, 3.66122, 4.03811, 4.39910, 4.74725, 5.08480,
- 5.41346, 5.73457, 6.04921, 6.35828, 6.66250, 6.96250, 7.25884, 7.55197, 7.84232, 8.13037};
-  static const G4double X9[nX]={7.49179e-05,
- .772574, 1.16623, 1.48914, 1.77460, 2.03586, 2.27983, 2.51069, 2.73118, 2.94322, 3.14823,
- 3.34728, 3.54123, 3.73075, 3.91638, 4.09860, 4.27779, 4.45428, 4.62835, 4.80025, 4.97028};
-  static const G4double XA[nX]={8.43437e-06,
- .530035, .798454, 1.01797, 1.21156, 1.38836, 1.55313, 1.70876, 1.85712, 1.99956, 2.13704,
- 2.27031, 2.39994, 2.52640, 2.65007, 2.77127, 2.89026, 3.00726, 3.12248, 3.23607, 3.34823};
-  static const G4double XB[nX]={9.27028e-07,
- .395058, .594211, .756726, .899794, 1.03025, 1.15167, 1.26619, 1.37523, 1.47979, 1.58059,
- 1.67819, 1.77302, 1.86543, 1.95571, 2.04408, 2.13074, 2.21587, 2.29960, 2.38206, 2.46341};
-  static const G4double XC[nX]={1.00807e-07,
- .316195, .474948, .604251, .717911, .821417, .917635, 1.00829, 1.09452, 1.17712, 1.25668,
- 1.33364, 1.40835, 1.48108, 1.55207, 1.62150, 1.68954, 1.75631, 1.82193, 1.88650, 1.95014};
-  static const G4double XD[nX]={1.09102e-08,
- .268227, .402318, .511324, .606997, .694011, .774803, .850843, .923097, .992243, 1.05878,
- 1.12309, 1.18546, 1.24613, 1.30530, 1.36313, 1.41974, 1.47526, 1.52978, 1.58338, 1.63617};
-  static const G4double XE[nX]={1.17831e-09,
- .238351, .356890, .453036, .537277, .613780, .684719, .751405, .814699, .875208, .933374,
- .989535, 1.04396, 1.09685, 1.14838, 1.19870, 1.24792, 1.29615, 1.34347, 1.38996, 1.43571};
-  static const G4double XF[nX]={1.27141e-10,
- .219778, .328346, .416158, .492931, .562525, .626955, .687434, .744761, .799494, .852046,
- .902729, .951786, .999414, 1.04577, 1.09099, 1.13518, 1.17844, 1.22084, 1.26246, 1.30338};
-  static const G4double XG[nX]={1.3713e-11,
- .208748, .310948, .393310, .465121, .530069, .590078, .646306, .699515, .750239, .798870,
- .845707, .890982, .934882, .977559, 1.01914, 1.05973, 1.09941, 1.13827, 1.17637, 1.21379};
-  static const G4double XH[nX]={1.47877e-12,
- .203089, .301345, .380162, .448646, .510409, .567335, .620557, .670820, .718647, .764421,
- .808434, .850914, .892042, .931967, .970812, 1.00868, 1.04566, 1.08182, 1.11724, 1.15197};
-  static const G4double XI[nX]={1.59454e-13,
- .201466, .297453, .374007, .440245, .499779, .554489, .605506, .653573, .699213, .742806,
- .784643, .824952, .863912, .901672, .938353, .974060, 1.00888, 1.04288, 1.07614, 1.10872};
-  static const G4double XJ[nX]={1.71931e-14,
- .202988, .297870, .373025, .437731, .495658, .548713, .598041, .644395, .688302, .730147,
- .770224, .808762, .845943, .881916, .916805, .950713, .983728, 1.01592, 1.04737, 1.07813};
-  // Direct table
-  static const G4double Xmin[nE]={X0[0],X1[0],X2[0],X3[0],X4[0],X5[0],X6[0],X7[0],X8[0],
-                        X9[0],XA[0],XB[0],XC[0],XD[0],XE[0],XF[0],XG[0],XH[0],XI[0],XJ[0]};
-  static const G4double dX[nE]={
-    (X0[lX]-X0[0])/lX, (X1[lX]-X1[0])/lX, (X2[lX]-X2[0])/lX, (X3[lX]-X3[0])/lX,
-    (X4[lX]-X4[0])/lX, (X5[lX]-X5[0])/lX, (X6[lX]-X6[0])/lX, (X7[lX]-X7[0])/lX,
-    (X8[lX]-X8[0])/lX, (X9[lX]-X9[0])/lX, (XA[lX]-XA[0])/lX, (XB[lX]-XB[0])/lX,
-    (XC[lX]-XC[0])/lX, (XD[lX]-XD[0])/lX, (XE[lX]-XE[0])/lX, (XF[lX]-XF[0])/lX,
-    (XG[lX]-XG[0])/lX, (XH[lX]-XH[0])/lX, (XI[lX]-XI[0])/lX, (XJ[lX]-XJ[0])/lX};
-  static const G4double* Xl[nE]=
-                             {X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,XA,XB,XC,XD,XE,XF,XG,XH,XI,XJ};
-  static const G4double I0[nX]={0,
- .411893, 1.25559, 2.34836, 3.60264, 4.96046, 6.37874, 7.82342, 9.26643, 10.6840, 12.0555,
- 13.3628, 14.5898, 15.7219, 16.7458, 17.6495, 18.4217, 19.0523, 19.5314, 19.8501, 20.0000};
-  static const G4double I1[nX]={0,
- .401573, 1.22364, 2.28998, 3.51592, 4.84533, 6.23651, 7.65645, 9.07796, 10.4780, 11.8365,
- 13.1360, 14.3608, 15.4967, 16.5309, 17.4516, 18.2481, 18.9102, 19.4286, 19.7946, 20.0000};
-  static const G4double I2[nX]={0,
- .387599, 1.17339, 2.19424, 3.37090, 4.65066, 5.99429, 7.37071, 8.75427, 10.1232, 11.4586,
- 12.7440, 13.9644, 15.1065, 16.1582, 17.1083, 17.9465, 18.6634, 19.2501, 19.6982, 20.0000};
-  static const G4double I3[nX]={0,
- .366444, 1.09391, 2.04109, 3.13769, 4.33668, 5.60291, 6.90843, 8.23014, 9.54840, 10.8461,
- 12.1083, 13.3216, 14.4737, 15.5536, 16.5512, 17.4573, 18.2630, 18.9603, 19.5417, 20.0000};
-  static const G4double I4[nX]={0,
- .321962, .959681, 1.79769, 2.77753, 3.85979, 5.01487, 6.21916, 7.45307, 8.69991, 9.94515,
- 11.1759, 12.3808, 13.5493, 14.6720, 15.7402, 16.7458, 17.6813, 18.5398, 19.3148, 20.0000};
-  static const G4double I5[nX]={0,
- .257215, .786302, 1.49611, 2.34049, 3.28823, 4.31581, 5.40439, 6.53832, 7.70422, 8.89040,
- 10.0865, 11.2833, 12.4723, 13.6459, 14.7969, 15.9189, 17.0058, 18.0517, 19.0515, 20.0000};
-  static const G4double I6[nX]={0,
- .201608, .638914, 1.24035, 1.97000, 2.80354, 3.72260, 4.71247, 5.76086, 6.85724, 7.99243,
- 9.15826, 10.3474, 11.5532, 12.7695, 13.9907, 15.2117, 16.4275, 17.6337, 18.8258, 20.0000};
-  static const G4double I7[nX]={0,
- .168110, .547208, 1.07889, 1.73403, 2.49292, 3.34065, 4.26525, 5.25674, 6.30654, 7.40717,
- 8.55196, 9.73492, 10.9506, 12.1940, 13.4606, 14.7460, 16.0462, 17.3576, 18.6767, 20.0000};
-  static const G4double I8[nX]={0,
- .150652, .497557, .990048, 1.60296, 2.31924, 3.12602, 4.01295, 4.97139, 5.99395, 7.07415,
- 8.20621, 9.38495, 10.6057, 11.8641, 13.1561, 14.4781, 15.8267, 17.1985, 18.5906, 20.0000};
-  static const G4double I9[nX]={0,
- .141449, .470633, .941304, 1.53053, 2.22280, 3.00639, 3.87189, 4.81146, 5.81837, 6.88672,
- 8.01128, 9.18734, 10.4106, 11.6772, 12.9835, 14.3261, 15.7019, 17.1080, 18.5415, 20.0000};
-  static const G4double IA[nX]={0,
- .136048, .454593, .912075, 1.48693, 2.16457, 2.93400, 3.78639, 4.71437, 5.71163, 6.77265,
- 7.89252, 9.06683, 10.2916, 11.5631, 12.8780, 14.2331, .625500, 17.0525, 18.5115, 20.0000};
-  static const G4double IB[nX]={0,
- .132316, .443455, .891741, 1.45656, 2.12399, 2.88352, 3.72674, 4.64660, 5.63711, 6.69298,
- 7.80955, 8.98262, 10.2084, 11.4833, 12.8042, 14.1681, 15.5721, 17.0137, 18.4905, 20.0000};
-  static const G4double IC[nX]={0,
- .129197, .434161, .874795, 1.43128, 2.09024, 2.84158, 3.67721, 4.59038, 5.57531, 6.62696,
- 7.74084, 8.91291, 10.1395, 11.4173, 12.7432, 14.1143, 15.5280, 16.9817, 18.4731, 20.0000};
-  static const G4double ID[nX]={0,
- .126079, .424911, .857980, 1.40626, 2.05689, 2.80020, 3.62840, 4.53504, 5.51456, 6.56212,
- 7.67342, 8.84458, 10.0721, 11.3527, 12.6836, 14.0618, 15.4849, 16.9504, 18.4562, 20.0000};
-  static const G4double IE[nX]={0,
- .122530, .414424, .838964, 1.37801, 2.01931, 2.75363, 3.57356, 4.47293, 5.44644, 6.48949,
- 7.59795, 8.76815, 9.99673, 11.2806, 12.6170, 14.0032, 15.4369, 16.9156, 18.4374, 20.0000};
-  static const G4double IF[nX]={0,
- .118199, .401651, .815838, 1.34370, 1.97370, 2.69716, 3.50710, 4.39771, 5.36401, 6.40164,
- 7.50673, 8.67581, 9.90572, 11.1936, 12.5367, 13.9326, 15.3790, 16.8737, 18.4146, 20.0000};
-  static const G4double IG[nX]={0,
- .112809, .385761, .787075, 1.30103, 1.91700, 2.62697, 3.42451, 4.30424, 5.26158, 6.29249,
- 7.39341, 8.56112, 9.79269, 11.0855, 12.4369, 13.8449, 15.3071, 16.8216, 18.3865, 20.0000};
-  static const G4double IH[nX]={0,
- .106206, .366267, .751753, 1.24859, 1.84728, 2.54062, 3.32285, .189160, 5.13543, 6.15804,
- 7.25377, 8.41975, 9.65334, 10.9521, 12.3139, 13.7367, 15.2184, 16.7573, 18.3517, 20.0000};
-  static const G4double II[nX]={0,
- .098419, .343194, .709850, 1.18628, 1.76430, 2.43772, 3.20159, 4.05176, 4.98467, 5.99722,
- 7.08663, 8.25043, 9.48633, 10.7923, 12.1663, 13.6067, 15.1118, 16.6800, 18.3099, 20.0000};
-  static const G4double IJ[nX]={0,
- .089681, .317135, .662319, 1.11536, 1.66960, 2.32002, 3.06260, 3.89397, 4.81126, 5.81196,
- 6.89382, 8.05483, 9.29317, 10.6072, 11.9952, 13.4560, 14.9881, 16.5902, 18.2612, 20.0000};
-  static const G4double* Il[nE]=
-                             {I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ};
-  static const G4double lE[nE]={
--1.98842,-1.58049,-1.17256,-.764638,-.356711, .051215, .459141, .867068, 1.27499, 1.68292,
- 2.09085, 2.49877, 2.90670, 3.31463, 3.72255, 4.13048, 4.53840, 4.94633, 5.35426, 5.76218};
-  static const G4double lEmi=lE[0];
-  static const G4double lEma=lE[nE-1];
-  static const G4double dlE=(lEma-lEmi)/bE;
-  //***************************************************************************************
-  G4double Enu=lastE;                 // Get energy of the last calculated cross-section
-  G4double lEn=std::log(Enu);         // log(E) for interpolation
-  G4double rE=(lEn-lEmi)/dlE;         // Position of the energy
-  G4int fE=static_cast<int>(rE);      // Left bin for interpolation
-  if(fE<0) fE=0;
-  if(fE>pE)fE=pE;
-  G4int    sE=fE+1;                   // Right bin for interpolation
-  G4double dE=rE-fE;                  // relative log shift from the left bin
-  G4double dEnu=Enu+Enu;              // doubled energy of nu/anu
-  G4double Enu2=Enu*Enu;              // squared energy of nu/anu
-  G4double Emu=Enu;                   // Free Energy of neutrino/anti-neutrino
-  G4double ME=Enu*MN;                 // M*E
-  G4double dME=ME+ME;                 // 2*M*E
-  G4double dEMN=(dEnu+MN)*ME;
-  G4double sqE=Enu*ME;
-  G4double E2M=MN*Enu2;
-  G4double ymax=(E2M+sqE)/dEMN;
-  G4double Q2mi=0.;                   // Q2_min(E_nu)
-  G4double Q2ma=dME*ymax;             // Q2_max(E_nu)
-  G4double Q2nq=Emu*dMN-mcV;
-  if(Q2ma>Q2nq) Q2ma=Q2nq;            // Correction for Non Quasi Elastic
-  // --- now r_min=Q2mi/Q2ma and r_max=1.; when r is randomized -> Q2=r*Q2ma ---
-  G4double Rmi=Q2mi/Q2ma;
-  G4double shift=1.+.9673/(1.+.323/Enu/Enu)/std::pow(Enu,.78); //@@ different for anti-nu
-  // --- E-interpolation must be done in a log scale ---
-  G4double Xmi=std::pow((shift-Rmi),power);// X_min(E_nu)
-  G4double Xma=std::pow((shift-1.),power); // X_max(E_nu)
-  // Find the integral values integ(Xmi) & integ(Xma) using the direct table
-  G4double idX=dX[fE]+dE*(dX[sE]-dX[fE]); // interpolated X step
-  G4double iXmi=Xmin[fE]+dE*(Xmin[sE]-Xmin[fE]); // interpolated X minimum
-  G4double rXi=(Xmi-iXmi)/idX;
-  G4int    iXi=static_cast<int>(rXi);
-  if(iXi<0) iXi=0;
-  if(iXi>bX) iXi=bX;
-  G4double dXi=rXi-iXi;
-  G4double bntil=Il[fE][iXi];
-  G4double intil=bntil+dXi*(Il[fE][iXi+1]-bntil);
-  G4double bntir=Il[sE][iXi];
-  G4double intir=bntir+dXi*(Il[sE][iXi+1]-bntir);
-  G4double inti=intil+dE*(intir-intil);// interpolated begin of the integral
-  //
-  G4double rXa=(Xma-iXmi)/idX;
-  G4int    iXa=static_cast<int>(rXa);
-  if(iXa<0) iXa=0;
-  if(iXa>bX) iXa=bX;
-  G4double dXa=rXa-iXa;
-  G4double bntal=Il[fE][iXa];
-  G4double intal=bntal+dXa*(Il[fE][iXa+1]-bntal);
-  G4double bntar=Il[sE][iXa];
-  G4double intar=bntar+dXa*(Il[sE][iXa+1]-bntar);
-  G4double inta=intal+dE*(intar-intal);// interpolated end of the integral
-  //
-  // *** Find X using the reversed table ***
-  G4double intx=inti+(inta-inti)*G4UniformRand(); 
-  G4int    intc=static_cast<int>(intx);
-  if(intc<0) intc=0;
-  if(intc>bX) intc=bX;
-  G4double dint=intx-intc;
-  G4double mXl=Xl[fE][intc];
-  G4double Xlb=mXl+dint*(Xl[fE][intc+1]-mXl);
-  G4double mXr=Xl[sE][intc];
-  G4double Xrb=mXr+dint*(Xl[sE][intc+1]-mXr);
-  G4double X=Xlb+dE*(Xrb-Xlb);        // interpolated X value
-  G4double R=shift-std::pow(X,pconv);
-  G4double Q2=R*Q2ma;
-  return Q2*GeV*GeV;
-}
-
-// It returns a fraction of the direct interaction of the neutrino with quark-partons
-G4double G4QNuNuNuclearCrossSection::GetDirectPart(G4double Q2)
-{
-  G4double f=Q2/4.62;
-  G4double ff=f*f;
-  G4double r=ff*ff;
-  G4double s=std::pow((1.+.6/Q2),(-1.-(1.+r)/(12.5+r/.3)));
-  //@@ It is the same for nu/anu, but for nu it is a bit less, and for anu a bit more (par)
-  return 1.-s*(1.-s/2);
-}
-
-// #of quark-partons in the nonperturbative phase space is the same for neut and anti-neut
-G4double G4QNuNuNuclearCrossSection::GetNPartons(G4double Q2)
-{
-  return 3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space
-}
-
-// This class can provide only virtual exchange gamma (a substitute for Z0 boson)
-G4int G4QNuNuNuclearCrossSection::GetExchangePDGCode() {return 22;}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QPhotonNuclearCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QPhotonNuclearCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,1739 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// The lust update: M.V. Kossov, CERN/ITEP(Moscow) 17-June-02
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QPhotonNuclearCrossSection for gamma+A cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-03
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 15-Feb-04
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short description: This is an original CHIPS process for photo-nuclear
-// interactions, which does not include "fast and dirty" corrections for
-// reactions near threshold, with respect to the GHAD application of CHIPS.
-// ------------------------------------------------------------------------
-
-//#define debug
-//#define pdebug
-//#define debug3
-//#define debugn
-//#define debugs
-
-#include "G4QPhotonNuclearCrossSection.hh"
-
-// Initialization of the static variables
-G4bool    G4QPhotonNuclearCrossSection::onlyCS=true;// Flag to calculate only CS
-G4double  G4QPhotonNuclearCrossSection::lastSig=0.;// Last value of the Cross Section
-G4double* G4QPhotonNuclearCrossSection::lastGDR=0; // Pointer to the lastArray of GDR CS
-G4double* G4QPhotonNuclearCrossSection::lastHEN=0; // Pointer to the last array of HEn CS
-G4double  G4QPhotonNuclearCrossSection::lastE=0.;  // LastUsed in CrossSections TheEnergy
-G4double  G4QPhotonNuclearCrossSection::lastSP=0.; // Last value of ShadowingPomeron(A-dep)
-G4int     G4QPhotonNuclearCrossSection::lastPDG=0; // The last PDG code of the projectile
-G4int     G4QPhotonNuclearCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QPhotonNuclearCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QPhotonNuclearCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QPhotonNuclearCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QPhotonNuclearCrossSection::lastCS=0.; // Last value of the Cross Section
-G4int     G4QPhotonNuclearCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QPhotonNuclearCrossSection::GetPointer()
-{
-  static G4QPhotonNuclearCrossSection theCrossSection; //**Static body of Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QPhotonNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom,
-                                                       G4int tgZ, G4int tgN, G4int pPDG)
-{
-  static G4int j;                      // A#0f records found in DB for this projectile
-  static std::vector <G4int>    colPDG;// Vector of the projectile PDG code
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-  G4double pEn=pMom;
-#ifdef pdebug
-  G4cout<<"G4QPhCS::GetCS:>>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG="<<pPDG<<"("<<lastPDG<<"), T="<<pEn<<"("<<lastTH<<")"<<",Sz="
-        <<colN.size()<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  if(!pPDG)
-  {
-#ifdef pdebug
-    G4cout<<"G4QPhCS::GetCS: *** Found pPDG="<<pPDG<<" ====> CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // projectile PDG=0 is a mistake (?!) @@
-  }
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tgN!=lastN || tgZ!=lastZ || pPDG!=lastPDG)// The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastPDG = pPDG;                    // The last PDG of the projectile
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-    if(lastI) for(G4int i=0; i<lastI; i++) if(colPDG[i]==pPDG) // The partType is found
-    {                                  // The nucleus with projPDG is found in AMDB
-      if(colN[i]==tgN && colZ[i]==tgZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QPhCS::GetCS:*Found* P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(pEn<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QPhCS::GetCS:Found T="<<pEn<<" < Threshold="<<lastTH<<",CS=0"<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastCS =colCS[i];                // Last CrossSect (A-dependent)
- //        if(std::fabs(lastP/pMom-1.)<tolerance) // VI do not use tolerance
-        if(lastP == pMom)
-        {
-#ifdef pdebug
-          G4cout<<"G4QPhCS::GetCS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-#endif
-          CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // Update param's only
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QPhCS::G:UpdatDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // read & update
-#ifdef pdebug
-        G4cout<<"G4QPhCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(lastCS<=0. && pEn>lastTH)    // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QPhCS::GetCS: New T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-        break;                           // Go out of the LOOP
-      }
-#ifdef pdebug
-      G4cout<<"---G4QPhCrossSec::GetCrosSec:pPDG="<<pPDG<<",j="<<j<<",N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<",cPDG="<<colPDG[i]<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      j++;                             // Increment a#0f records found in DB for this pPDG
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QPhCS::GetCrosSec:CalcNew P="<<pMom<<",f="<<fCS<<",lastI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,j,lastPDG,lastZ,lastN,pMom); //calculate & create
-      if(lastCS<=0.)
-      {
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QPhCrossSection::GetCrossSect: NewThresh="<<lastTH<<",T="<<pEn<<G4endl;
-#endif
-        if(pEn>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QPhCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QPhCS::GetCrosSec: New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      colN.push_back(tgN);
-      colZ.push_back(tgZ);
-      colPDG.push_back(pPDG);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colCS.push_back(lastCS);
-#ifdef pdebug
-      G4cout<<"G4QPhCS::GetCS:1st,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QPrCS::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colPDG[lastI]=pPDG;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-  else if(pEn<=lastTH)
-  {
-#ifdef pdebug
-    G4cout<<"G4QPhCS::GetCS: Current T="<<pEn<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  //  else if(std::fabs(lastP/pMom-1.)<tolerance) // VI (do not use tolerance)
-  else if(lastP == pMom)
-  {
-#ifdef pdebug
-    G4cout<<"G4QPhCS::GetCS:OldCur P="<<pMom<<"="<<pMom<<", CS="<<lastCS*millibarn<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return lastCS*millibarn;     // Use theLastCS
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"G4QPhCS::GetCS:UpdatCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastCS=CalculateCrossSection(fCS,1,j,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-    lastP=pMom;
-  }
-#ifdef pdebug
-  G4cout<<"G4QPhCS::GetCroSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  return lastCS*millibarn;
-}
-
-// Gives the threshold energy for different nuclei (min of p- and n-threshold)
-// *******************************************************************************
-// *** This function is the same for all lepto- & photo-nuclear reactions, for ***
-// *** (nu,l) reactions the mass value of the final state lepton must be added ***
-// ***@@ IT IS REASONABLE TO MAKE ADDITIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR @@***
-// *******************************************************************************
-G4double G4QPhotonNuclearCrossSection::ThresholdEnergy(G4int Z, G4int N, G4int)
-{
-  // CHIPS - Direct GEANT
-  //static const G4double mNeut = G4QPDGCode(2112).GetMass();
-  //static const G4double mProt = G4QPDGCode(2212).GetMass();
-  static const G4double mNeut = G4NucleiProperties::GetNuclearMass(1,0)/MeV;
-  static const G4double mProt = G4NucleiProperties::GetNuclearMass(1,1)/MeV;
-  static const G4double mAlph = G4NucleiProperties::GetNuclearMass(4,2)/MeV;
-  // ---------
-  static const G4double infEn = 9.e27;
-
-  G4int A=Z+N;
-  if(A<1) return infEn;
-  else if(A==1) return 134.9766; // Pi0 threshold for the nucleon
-  // CHIPS - Direct GEANT
-  //G4double mT= G4QPDGCode(111).GetNuclMass(Z,N,0);
-  G4double mT= 0.;
-  if(G4NucleiProperties::IsInStableTable(A,Z))
-                           mT = G4NucleiProperties::GetNuclearMass(A,Z)/MeV;
-  G4double mP= infEn;
-  if(Z&&G4NucleiProperties::IsInStableTable(A-1,Z-1))
-          mP = G4NucleiProperties::GetNuclearMass(A-1,Z-1)/MeV;// ResNucMass for a proton
-
-  G4double mN= infEn;
-  if(N&&G4NucleiProperties::IsInStableTable(A-1,Z))
-          mN = G4NucleiProperties::GetNuclearMass(A-1,Z)/MeV;  // ResNucMass for a neutron
-
-  G4double mA= infEn;
-  if(N>1&&Z>1&&G4NucleiProperties::IsInStableTable(A-4,Z-2))
-          mA=G4NucleiProperties::GetNuclearMass(A-4,Z-2)/MeV;  // ResNucMass for an alpha
-
-  G4double dP= mP +mProt - mT;
-  G4double dN= mN +mNeut - mT;
-  G4double dA= mA +mAlph - mT;
-#ifdef pdebug
-  G4cout<<"G4QPhotoNucCS::ThreshEn: mP="<<mP<<",dP="<<dP<<",mN="<<mN<<",dN="<<dN<<",mA="
-        <<mA<<",dA="<<dA<<",mT="<<mT<<",A="<<A<<",Z="<<Z<<G4endl;
-#endif
-  if(dP<dN)dN=dP;
-  if(dA<dN)dN=dA;
-  return dN;
-}
-
-// The main member function giving the gamma-A cross section (E in GeV, CS in mb)
-G4double G4QPhotonNuclearCrossSection::CalculateCrossSection(G4bool CS, G4int F, G4int I,
-                                          G4int, G4int targZ, G4int targN, G4double Energy)
-{
-#ifdef pdebug
-  G4cout<<"G4QPhotonNucCrossSection::CalculateCrossSection: ***Called***"<<G4endl;
-#endif
-  static const G4double THmin=2.;  // minimum Energy Threshold
-  static const G4double dE=1.;     // step for the GDR table
-  static const G4int    nL=105;    // A#of GDResonance points in E (each MeV from 2 to 106)
-  static const G4double Emin=THmin+(nL-1)*dE; // minE for the HighE part
-  static const G4double Emax=50000.;       // maxE for the HighE part
-  static const G4int    nH=224;            // A#of HResonance points in lnE
-  static const G4double milE=std::log(Emin);    // Low logarithm energy for the HighE part
-  static const G4double malE=std::log(Emax);    // High logarithm energy (each 2.75 %)
-  static const G4double dlE=(malE-milE)/(nH-1); // Step in log energy in the HighE part
-  //
-  //static const G4double shd=1.075-.0023*log(2.);  // HE PomShadowing(D)
-  static const G4double shd=1.0734;                 // HE PomShadowing(D)
-  static const G4double shc=0.072;                  // HE Shadowing constant
-  static const G4double poc=0.0375;                 // HE Pomeron coefficient
-  static const G4double pos=16.5;                   // HE Pomeron shift
-  static const G4double reg=.11;                    // HE Reggeon slope
-  static const G4double shp=1.075;                  // HE PomShadowing(P)
-  //
-  // Associative memory for acceleration
-  static std::vector <G4double> spA; // shadowing coefficients (A-dependent)
-  static std::vector <G4double*> GDR;// Vector of pointers to GDRPhotonuclearCrossSection
-  static std::vector <G4double*> HEN;// Vector of pointers to HighEnPhotonuclearCrossSect
-  //
-  onlyCS=CS;                         // Flag to calculate only CS (not Si/Bi)
-#ifdef pdebug
-  G4cout<<"G4QPhotonNucCS::CalcCS: P="<<Energy<<", F="<<F<<", I="<<I<<", Z="<<targZ
-        <<", N="<<targN<<", onlyCS="<<CS<<",E="<<Energy<<",th="<<THmin<<G4endl;
-  if(F==-27) return 0.;
-#endif
-  if (Energy<THmin)
-  {
-    lastE=0.;
-    lastSig=0.;
-#ifdef pdebug
-    G4cout<<"---> G4QMuonNucCS::CalcCS: CS=0  as E="<<Energy<<" < "<<THmin<<G4endl;
-#endif
-    return 0.;                      // @@ This can be dangerouse for the heaviest nuc.!
-  }
-  G4double sigma=0.;
-  G4double A=targN+targZ;
-  if(F<=0)                           // This isotope was not the last used isotop
-  {
-    if(F<0)                          // This isotope was found in DAMDB =========> RETRIEVE
-    {
-      lastGDR=GDR[I];                // Pointer to prepared GDR cross sections
-      lastHEN=HEN[I];                // Pointer to prepared High Energy cross sections
-      lastSP =spA[I];                // Shadowing coefficient for UHE
-    }
-    else                             // This isotope wasn't calculated previously => CREATE
-    {
-      G4double lnA=std::log(A);          // The nucleus is not found in DB. It is new.
-      if(A==1.) lastSP=1.;               // The Reggeon shadowing (A=1)
-      else      lastSP=A*(1.-shc*lnA);   // The Reggeon shadowing
-#ifdef debug
-      G4cout<<">>>G4QPhotonNuclearCrossSect::CalcCS:lnA="<<lnA<<",lastSP="<<lastSP<<G4endl;
-#endif
-#ifdef debug3
-      if(A==3) G4cout<<"G4QPhotonNuclearCrossSection::CalcCS: lastSP="<<lastSP<<G4endl;
-#endif
-      lastGDR = new G4double[nL];        // Allocate memory for the new GDR cross sections
-      lastHEN = new G4double[nH];        // Allocate memory for the new HEN cross sections
-      G4int er=GetFunctions(A,lastGDR,lastHEN);// set newZeroPosition and fill theFunctions
-      if(er<1) G4cerr<<"***G4QPhotNucCrosSec::CalcCrossSection: A="<<A<<" failed"<<G4endl;
-#ifdef debug
-      G4cout<<"G4QPhotonNuclearCrossSec::CalcCS:**GDR/HEN're made** GetFunEr="<<er<<G4endl;
-#endif
-      // *** The synchronization check ***
-      G4int sync=GDR.size();
-      if(sync!=I) G4cerr<<"***G4QPhotoNuclearCS::CalcCS: PDG=22, S="<<sync<<"#"<<I<<G4endl;
-      GDR.push_back(lastGDR);            // added GDR, found by AH 10/7/02
-      HEN.push_back(lastHEN);            // added HEN, found by AH 10/7/02
-      spA.push_back(lastSP);             // Pomeron Shadowing
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW the Magic Formula =================================
-  if (Energy<lastTH) return 0.;             // It must be already checked in the interface
-  else if (Energy<Emin)                     // GDR region (approximated in E, not in lnE)
-  {
-#ifdef debug
-    G4cout<<"G4QPhNCS::CalcCS:bGDR A="<<A<<", nL="<<nL<<",TH="<<THmin<<",dE="<<dE<<G4endl;
-#endif
-    if(A<=1.) sigma=0.;
-    else      sigma=EquLinearFit(Energy,nL,THmin,dE,lastGDR);
-#ifdef debugn
-    if(sigma<0.)
-      G4cout<<"G4QPhoNucCS::CalcCS:A="<<A<<",E="<<Energy<<",T="<<THmin<<",dE="<<dE<<G4endl;
-#endif
-  }
-  else if (Energy<Emax)                     // High Energy region
-  {
-    G4double lE=std::log(Energy);
-#ifdef debug
-    G4cout<<"G4QPhotNucCS::CalcCS: before HEN nH="<<nH<<",iE="<<milE<<",dlE="<<dlE<<G4endl;
-#endif
-    sigma=EquLinearFit(lE,nH,milE,dlE,lastHEN);
-  }
-  else                                      // UHE region (calculation, not frequent)
-  {
-    G4double lE=std::log(Energy);
-    G4double sh=shd;
-    if(A==1.)sh=shp;
-    sigma=lastSP*(poc*(lE-pos)+sh*std::exp(-reg*lE));
-  }
-#ifdef debug
-  G4cout<<"G4QPhotonNuclearCrossSection::CalcCS: sigma="<<sigma<<G4endl;
-#endif
-#ifdef pdebug
-  if(Energy>45000.&&Energy<60000.)
-    G4cout<<"G4QPhotoNucCS::GetCS: A="<<A<<", E="<<Energy<<",CS="<<sigma<<G4endl;
-#endif
-  if(sigma<0.) return 0.;
-  return sigma;
-}
-
-// Linear fit for YN[N] tabulated (from X0 with fixed step DX) function to X point
-
-// Calculate the functions for the log(A)
-G4int G4QPhotonNuclearCrossSection::GetFunctions(G4double a, G4double* y, G4double* z)
-{
-  static const G4int nLA=49;       // A#of GDResonance basic nuclei
-  static const G4double LA[nLA]={ 2.,4.,6.,7.,9.,12.,14.,15.,16.,19.,23.,24.,27.,28.,32.,
-   34.,40.,54., 55.,56.,58.7,58.9,63.5,65.4,76.,82.,107.9,112.4,118.7,126.9,154.,156.,159.,
-   165.,168.,174.,178.,180.,181.,184.,186.,197.,204.4,207.2,209.,232.,235.,238.,239.};
-  static const G4int nL=105;       // A#of GDResonance points in E (each MeV from 2 to 106)
-  static const G4int nHA=14;       // A#of HResonance basic nuclei
-  static const G4double HA[nHA]={1.,2.,3.,4.,6.,7.,9.,12.,16.,27.,63.5,118.7,207.2,238.};
-  static const G4int nH=224;       // A#of HResonance points in lnE (each 2.75 percents)
-  // If the cross section approximation formula is changed - replace from file.
-  static const G4double SL0[nL]={
-    7.094260e-1,1.532987e+0,2.449381e+0,2.785790e+0,2.525673e+0,2.128172e+0,1.780549e+0,
-    1.506934e+0,1.294560e+0,1.128048e+0,9.953850e-1,8.879274e-1,7.995356e-1,7.258111e-1,
-    6.635555e-1,6.104038e-1,5.645786e-1,5.247229e-1,4.897864e-1,4.589445e-1,4.315429e-1,
-    4.070560e-1,3.850576e-1,3.651990e-1,3.471920e-1,3.307971e-1,3.158133e-1,3.020711e-1,
-    2.894266e-1,2.777569e-1,2.669563e-1,2.569336e-1,2.476099e-1,2.389161e-1,2.307920e-1,
-    2.231848e-1,2.160475e-1,2.093390e-1,2.030225e-1,1.970653e-1,1.914383e-1,1.861152e-1,
-    1.810725e-1,1.762891e-1,1.717459e-1,1.674254e-1,1.633120e-1,1.593914e-1,1.556505e-1,
-    1.520775e-1,1.486616e-1,1.453926e-1,1.422615e-1,1.392599e-1,1.363800e-1,1.336147e-1,
-    1.309573e-1,1.284017e-1,1.259423e-1,1.235738e-1,1.212914e-1,1.190904e-1,1.169666e-1,
-    1.149161e-1,1.129353e-1,1.110206e-1,1.091688e-1,1.073770e-1,1.056423e-1,1.039619e-1,
-    1.023336e-1,1.007548e-1,9.922335e-2,9.773724e-2,9.629446e-2,9.489316e-2,9.353161e-2,
-    9.220814e-2,9.092120e-2,8.966931e-2,8.845106e-2,8.726514e-2,8.611027e-2,8.498527e-2,
-    8.388900e-2,8.282039e-2,8.177841e-2,8.076208e-2,7.977047e-2,7.880271e-2,7.785794e-2,
-    7.693536e-2,7.603421e-2,7.515376e-2,7.429330e-2,7.345216e-2,7.262971e-2,7.182534e-2,
-    7.103847e-2,7.026852e-2,6.951498e-2,6.877732e-2,6.805505e-2,6.734772e-2,6.665486e-2};
-  static const G4double SL1[nL]={
-    2.017310e-4,9.866847e-4,3.081371e-3,7.486476e-3,1.550083e-2,2.873865e-2,4.915763e-2,
-    7.909925e-2,1.213409e-1,1.791563e-1,2.563778e-1,3.574504e-1,4.874600e-1,6.521048e-1,
-    8.575237e-1,1.109763e+0,1.413389e+0,1.768398e+0,2.164804e+0,2.576439e+0,2.960166e+0,
-    3.267863e+0,3.467401e+0,3.555207e+0,3.550465e+0,3.480379e+0,3.369351e+0,3.235278e+0,
-    3.090040e+0,2.941162e+0,2.793315e+0,2.649362e+0,2.511013e+0,2.379237e+0,2.254508e+0,
-    2.136980e+0,2.026587e+0,1.923127e+0,1.826306e+0,1.735781e+0,1.651181e+0,1.572129e+0,
-    1.498250e+0,1.429182e+0,1.364578e+0,1.304111e+0,1.247474e+0,1.194383e+0,1.144574e+0,
-    1.097802e+0,1.053842e+0,1.012488e+0,9.735481e-1,9.368486e-1,9.022288e-1,8.695413e-1,
-    8.386509e-1,8.094332e-1,7.817741e-1,7.555686e-1,7.307199e-1,7.071392e-1,6.847445e-1,
-    6.634600e-1,6.432161e-1,6.239481e-1,6.055964e-1,5.881058e-1,5.714251e-1,5.555068e-1,
-    5.403069e-1,5.257844e-1,5.119013e-1,4.986222e-1,4.859140e-1,4.737459e-1,4.620893e-1,
-    4.509173e-1,4.402048e-1,4.299283e-1,4.200659e-1,4.105971e-1,4.015025e-1,3.927640e-1,
-    3.843647e-1,3.762885e-1,3.685206e-1,3.610467e-1,3.538537e-1,3.469290e-1,3.402609e-1,
-    3.338384e-1,3.276510e-1,3.216889e-1,3.159429e-1,3.104042e-1,3.050648e-1,2.999168e-1,
-    2.949531e-1,2.901668e-1,2.855516e-1,2.811014e-1,2.768107e-1,2.726743e-1,2.686872e-1};
-  static const G4double SL2[nL]={
-    4.776434e-3,2.412116e-2,7.595870e-2,1.835144e-1,3.703569e-1,6.466818e-1,9.877908e-1,
-    1.324697e+0,1.575559e+0,1.699764e+0,1.715038e+0,1.669943e+0,1.614318e+0,1.588675e+0,
-    1.625472e+0,1.751419e+0,1.984310e+0,2.321229e+0,2.721619e+0,3.102285e+0,3.366107e+0,
-    3.454042e+0,3.371971e+0,3.170282e+0,2.907055e+0,2.626333e+0,2.354348e+0,2.103834e+0,
-    1.879323e+0,1.681008e+0,1.507070e+0,1.354935e+0,1.221899e+0,1.105415e+0,1.003205e+0,
-    9.132844e-1,8.339468e-1,7.637380e-1,7.014215e-1,6.459465e-1,5.964196e-1,5.520797e-1,
-    5.122769e-1,4.764549e-1,4.441358e-1,4.149083e-1,3.884171e-1,3.643543e-1,3.424525e-1,
-    3.224787e-1,3.042291e-1,2.875255e-1,2.722111e-1,2.581479e-1,2.452141e-1,2.333017e-1,
-    2.223151e-1,2.121693e-1,2.027886e-1,1.941052e-1,1.860586e-1,1.785946e-1,1.716644e-1,
-    1.652242e-1,1.592345e-1,1.536595e-1,1.484670e-1,1.436278e-1,1.391153e-1,1.349053e-1,
-    1.309760e-1,1.273073e-1,1.238809e-1,1.206803e-1,1.176900e-1,1.148962e-1,1.122861e-1,
-    1.098477e-1,1.075703e-1,1.054441e-1,1.034596e-1,1.016087e-1,9.988340e-2,9.827659e-2,
-    9.678165e-2,9.539245e-2,9.410337e-2,9.290919e-2,9.180512e-2,9.078673e-2,8.984997e-2,
-    8.899108e-2,8.820664e-2,8.749353e-2,8.684888e-2,8.627010e-2,8.575488e-2,8.530112e-2,
-    8.490697e-2,8.457084e-2,8.429132e-2,8.406729e-2,8.389779e-2,8.378214e-2,8.371985e-2};
-  static const G4double SL3[nL]={
-    1.375991e-4,6.420490e-4,2.009594e-3,5.073626e-3,1.137383e-2,2.408187e-2,5.091978e-2,
-    1.151175e-1,2.955817e-1,8.132651e-1,1.635125e+0,1.931572e+0,2.185333e+0,2.701264e+0,
-    3.269689e+0,3.632210e+0,3.708366e+0,3.594398e+0,3.418556e+0,3.260141e+0,3.149899e+0,
-    3.091216e+0,3.075568e+0,3.090472e+0,3.123146e+0,3.162196e+0,3.198373e+0,3.224873e+0,
-    3.237305e+0,3.233448e+0,3.212852e+0,3.176382e+0,3.125768e+0,3.063213e+0,2.991084e+0,
-    2.911700e+0,2.827186e+0,2.739409e+0,2.649943e+0,2.560078e+0,2.470840e+0,2.383021e+0,
-    2.297216e+0,2.213858e+0,2.133241e+0,2.055557e+0,1.980911e+0,1.909346e+0,1.840852e+0,
-    1.775386e+0,1.712877e+0,1.653235e+0,1.596357e+0,1.542133e+0,1.490448e+0,1.441186e+0,
-    1.394230e+0,1.349469e+0,1.306789e+0,1.266085e+0,1.227254e+0,1.190196e+0,1.154820e+0,
-    1.121035e+0,1.088758e+0,1.057908e+0,1.028411e+0,1.000196e+0,9.731948e-1,9.473457e-1,
-    9.225887e-1,8.988681e-1,8.761312e-1,8.543286e-1,8.334136e-1,8.133424e-1,7.940736e-1,
-    7.755685e-1,7.577903e-1,7.407046e-1,7.242788e-1,7.084823e-1,6.932862e-1,6.786633e-1,
-    6.645878e-1,6.510355e-1,6.379834e-1,6.254100e-1,6.132949e-1,6.016187e-1,5.903633e-1,
-    5.795116e-1,5.690472e-1,5.589548e-1,5.492201e-1,5.398295e-1,5.307700e-1,5.220296e-1,
-    5.135969e-1,5.054613e-1,4.976128e-1,4.900419e-1,4.827400e-1,4.756989e-1,4.689110e-1};
-  static const G4double SL4[nL]={
-    1.531367e-4,6.750684e-4,2.023434e-3,4.818832e-3,9.866691e-3,1.816857e-2,3.094217e-2,
-    4.965477e-2,7.607934e-2,1.123974e-1,1.614108e-1,2.270208e-1,3.153403e-1,4.372460e-1,
-    6.139880e-1,8.886525e-1,1.345605e+0,2.121366e+0,3.298049e+0,4.533310e+0,5.172459e+0,
-    5.243522e+0,5.175754e+0,5.149633e+0,5.156364e+0,5.151144e+0,5.108382e+0,5.025027e+0,
-    4.909480e+0,4.772279e+0,4.621981e+0,4.464473e+0,4.303590e+0,4.141874e+0,3.981115e+0,
-    3.822656e+0,3.667551e+0,3.516631e+0,3.370536e+0,3.229738e+0,3.094556e+0,2.965180e+0,
-    2.841688e+0,2.724066e+0,2.612228e+0,2.506035e+0,2.405305e+0,2.309830e+0,2.219381e+0,
-    2.133721e+0,2.052608e+0,1.975802e+0,1.903066e+0,1.834170e+0,1.768894e+0,1.707024e+0,
-    1.648361e+0,1.592714e+0,1.539903e+0,1.489759e+0,1.442123e+0,1.396846e+0,1.353788e+0,
-    1.312819e+0,1.273817e+0,1.236668e+0,1.201266e+0,1.167510e+0,1.135308e+0,1.104573e+0,
-    1.075223e+0,1.047183e+0,1.020382e+0,9.947538e-1,9.702356e-1,9.467696e-1,9.243013e-1,
-    9.027797e-1,8.821569e-1,8.623879e-1,8.434307e-1,8.252457e-1,8.077958e-1,7.910459e-1,
-    7.749634e-1,7.595173e-1,7.446784e-1,7.304196e-1,7.167151e-1,7.035406e-1,6.908733e-1,
-    6.786917e-1,6.669756e-1,6.557060e-1,6.448649e-1,6.344356e-1,6.244022e-1,6.147497e-1,
-    6.054644e-1,5.965332e-1,5.879438e-1,5.796850e-1,5.717461e-1,5.641173e-1,5.567897e-1};
-  static const G4double SL5[nL]={
-    1.905569e-4,7.771730e-4,2.250919e-3,5.273053e-3,1.071640e-2,1.969996e-2,3.365091e-2,
-    5.440813e-2,8.439169e-2,1.268914e-1,1.866020e-1,2.707115e-1,3.912405e-1,5.701376e-1,
-    8.501724e-1,1.317340e+0,2.143911e+0,3.657987e+0,6.387255e+0,1.074352e+1,1.571664e+1,
-    1.840405e+1,1.776700e+1,1.557514e+1,1.329204e+1,1.138076e+1,9.874227e+0,8.700723e+0,
-    7.781216e+0,7.050490e+0,6.458855e+0,5.969695e+0,5.556515e+0,5.200371e+0,4.887807e+0,
-    4.609287e+0,4.358030e+0,4.129172e+0,3.919172e+0,3.725403e+0,3.545861e+0,3.378977e+0,
-    3.223486e+0,3.078336e+0,2.942636e+0,2.815610e+0,2.696573e+0,2.584914e+0,2.480080e+0,
-    2.381572e+0,2.288930e+0,2.201736e+0,2.119606e+0,2.042187e+0,1.969152e+0,1.900204e+0,
-    1.835064e+0,1.773480e+0,1.715215e+0,1.660054e+0,1.607794e+0,1.558252e+0,1.511256e+0,
-    1.466647e+0,1.424278e+0,1.384013e+0,1.345726e+0,1.309299e+0,1.274624e+0,1.241600e+0,
-    1.210133e+0,1.180134e+0,1.151523e+0,1.124223e+0,1.098163e+0,1.073277e+0,1.049504e+0,
-    1.026785e+0,1.005065e+0,9.842955e-1,9.644275e-1,9.454166e-1,9.272213e-1,9.098022e-1,
-    8.931224e-1,8.771474e-1,8.618447e-1,8.471837e-1,8.331356e-1,8.196734e-1,8.067717e-1,
-    7.944065e-1,7.825554e-1,7.711972e-1,7.603122e-1,7.498817e-1,7.398883e-1,7.303156e-1,
-    7.211483e-1,7.123722e-1,7.039741e-1,6.959417e-1,6.882635e-1,6.809293e-1,6.739294e-1};
-  static const G4double SL6[nL]={
-    2.222448e-4,8.620556e-4,2.444896e-3,5.705453e-3,1.171159e-2,2.205349e-2,3.918281e-2,
-    6.696997e-2,1.115720e-1,1.827533e-1,2.959155e-1,4.753435e-1,7.596938e-1,1.211738e+0,
-    1.936099e+0,3.111254e+0,5.043478e+0,8.232698e+0,1.330416e+1,2.019140e+1,2.638709e+1,
-    2.859878e+1,2.728600e+1,2.464338e+1,2.186072e+1,1.931943e+1,1.710886e+1,1.522482e+1,
-    1.363142e+1,1.228407e+1,1.113950e+1,1.015995e+1,9.314220e+0,8.577403e+0,7.929898e+0,
-    7.356396e+0,6.844921e+0,6.386042e+0,5.972257e+0,5.597518e+0,5.256885e+0,4.946267e+0,
-    4.662228e+0,4.401855e+0,4.162646e+0,3.942438e+0,3.739345e+0,3.551711e+0,3.378077e+0,
-    3.217151e+0,3.067782e+0,2.928947e+0,2.799729e+0,2.679306e+0,2.566940e+0,2.461965e+0,
-    2.363783e+0,2.271852e+0,2.185682e+0,2.104827e+0,2.028885e+0,1.957488e+0,1.890304e+0,
-    1.827026e+0,1.767378e+0,1.711104e+0,1.657972e+0,1.607769e+0,1.560299e+0,1.515382e+0,
-    1.472853e+0,1.432558e+0,1.394357e+0,1.358121e+0,1.323729e+0,1.291070e+0,1.260042e+0,
-    1.230549e+0,1.202502e+0,1.175819e+0,1.150425e+0,1.126246e+0,1.103218e+0,1.081279e+0,
-    1.060370e+0,1.040438e+0,1.021433e+0,1.003308e+0,9.860183e-1,9.695234e-1,9.537847e-1,
-    9.387662e-1,9.244342e-1,9.107573e-1,8.977058e-1,8.852523e-1,8.733710e-1,8.620378e-1,
-    8.512302e-1,8.409275e-1,8.311102e-1,8.217603e-1,8.128613e-1,8.043977e-1,7.963557e-1};
-  static const G4double SL7[nL]={
-    2.400132e-4,9.082999e-4,2.545511e-3,5.912609e-3,1.214175e-2,2.297237e-2,4.117454e-2,
-    7.124517e-2,1.204927e-1,2.006898e-1,3.306145e-1,5.401144e-1,8.769596e-1,1.418938e+0,
-    2.295653e+0,3.727247e+0,6.087430e+0,9.967584e+0,1.601149e+1,2.371712e+1,2.968929e+1,
-    3.091057e+1,2.878613e+1,2.564897e+1,2.255784e+1,1.981778e+1,1.747914e+1,1.551277e+1,
-    1.386591e+1,1.248298e+1,1.131384e+1,1.031654e+1,9.457362e+0,8.709876e+0,8.053561e+0,
-    7.472543e+0,6.954497e+0,6.489768e+0,6.070707e+0,5.691171e+0,5.346149e+0,5.031499e+0,
-    4.743750e+0,4.479955e+0,4.237588e+0,4.014464e+0,3.808676e+0,3.618553e+0,3.442619e+0,
-    3.279569e+0,3.128239e+0,2.987593e+0,2.856703e+0,2.734737e+0,2.620949e+0,2.514665e+0,
-    2.415276e+0,2.322236e+0,2.235046e+0,2.153255e+0,2.076456e+0,2.004275e+0,1.936374e+0,
-    1.872444e+0,1.812202e+0,1.755391e+0,1.701773e+0,1.651134e+0,1.603273e+0,1.558007e+0,
-    1.515169e+0,1.474604e+0,1.436168e+0,1.399730e+0,1.365168e+0,1.332368e+0,1.301226e+0,
-    1.271645e+0,1.243535e+0,1.216812e+0,1.191399e+0,1.167222e+0,1.144214e+0,1.122313e+0,
-    1.101460e+0,1.081599e+0,1.062680e+0,1.044655e+0,1.027479e+0,1.011109e+0,9.955079e-1,
-    9.806377e-1,9.664643e-1,9.529557e-1,9.400818e-1,9.278146e-1,9.161277e-1,9.049967e-1,
-    8.943989e-1,8.843129e-1,8.747192e-1,8.655994e-1,8.569368e-1,8.487159e-1,8.409226e-1};
-  static const G4double SL8[nL]={
-    2.590923e-4,9.573672e-4,2.651275e-3,6.130118e-3,1.259782e-2,2.396311e-2,4.335926e-2,
-    7.599430e-2,1.304582e-1,2.206539e-1,3.685911e-1,6.084138e-1,9.922345e-1,1.598590e+0,
-    2.544422e+0,4.001018e+0,6.212589e+0,9.507804e+0,1.423676e+1,2.030771e+1,2.598385e+1,
-    2.841920e+1,2.739643e+1,2.481830e+1,2.199791e+1,1.941582e+1,1.718791e+1,1.530626e+1,
-    1.372572e+1,1.239454e+1,1.126539e+1,1.029864e+1,9.462554e+0,8.732318e+0,8.088729e+0,
-    7.516956e+0,7.005488e+0,6.545306e+0,6.129254e+0,5.751565e+0,5.407521e+0,5.093205e+0,
-    4.805315e+0,4.541037e+0,4.297946e+0,4.073932e+0,3.867148e+0,3.675966e+0,3.498945e+0,
-    3.334802e+0,3.182394e+0,3.040697e+0,2.908794e+0,2.785859e+0,2.671150e+0,2.563996e+0,
-    2.463791e+0,2.369986e+0,2.282085e+0,2.199636e+0,2.122228e+0,2.049489e+0,1.981076e+0,
-    1.916681e+0,1.856017e+0,1.798827e+0,1.744870e+0,1.693929e+0,1.645803e+0,1.600307e+0,
-    1.557271e+0,1.516539e+0,1.477966e+0,1.441418e+0,1.406772e+0,1.373914e+0,1.342737e+0,
-    1.313142e+0,1.285040e+0,1.258344e+0,1.232976e+0,1.208862e+0,1.185934e+0,1.164128e+0,
-    1.143384e+0,1.123646e+0,1.104863e+0,1.086985e+0,1.069967e+0,1.053766e+0,1.038344e+0,
-    1.023662e+0,1.009685e+0,9.963805e-1,9.837187e-1,9.716705e-1,9.602093e-1,9.493103e-1,
-    9.389503e-1,9.291078e-1,9.197629e-1,9.108970e-1,9.024933e-1,8.945360e-1,8.870112e-1};
-  static const G4double SL9[nL]={
-    3.243985e-4,1.122034e-3,3.000932e-3,6.850212e-3,1.414720e-2,2.751937e-2,5.204925e-2,
-    9.887958e-2,1.966468e-1,4.282973e-1,1.041076e+0,2.706630e+0,6.509565e+0,1.085114e+1,
-    1.162472e+1,1.124054e+1,1.202416e+1,1.402207e+1,1.659634e+1,1.891975e+1,2.032292e+1,
-    2.059083e+1,1.993672e+1,1.873926e+1,1.732572e+1,1.590211e+1,1.457097e+1,1.336993e+1,
-    1.230272e+1,1.135820e+1,1.052046e+1,9.773672e+0,9.103884e+0,8.499562e+0,7.951408e+0,
-    7.451996e+0,6.995366e+0,6.576679e+0,6.191930e+0,5.837748e+0,5.511235e+0,5.209864e+0,
-    4.931401e+0,4.673850e+0,4.435420e+0,4.214488e+0,4.009588e+0,3.819384e+0,3.642664e+0,
-    3.478323e+0,3.325356e+0,3.182848e+0,3.049964e+0,2.925943e+0,2.810093e+0,2.701782e+0,
-    2.600432e+0,2.505518e+0,2.416558e+0,2.333114e+0,2.254783e+0,2.181197e+0,2.112021e+0,
-    2.046943e+0,1.985682e+0,1.927976e+0,1.873586e+0,1.822292e+0,1.773891e+0,1.728195e+0,
-    1.685032e+0,1.644242e+0,1.605677e+0,1.569201e+0,1.534686e+0,1.502017e+0,1.471082e+0,
-    1.441781e+0,1.414020e+0,1.387711e+0,1.362772e+0,1.339127e+0,1.316705e+0,1.295438e+0,
-    1.275266e+0,1.256130e+0,1.237976e+0,1.220753e+0,1.204413e+0,1.188912e+0,1.174209e+0,
-    1.160265e+0,1.147042e+0,1.134507e+0,1.122628e+0,1.111376e+0,1.100721e+0,1.090639e+0,
-    1.081106e+0,1.072098e+0,1.063597e+0,1.055582e+0,1.048036e+0,1.040943e+0,1.034290e+0};
-  static const G4double SL10[nL]={
-    4.311217e-4,1.384716e-3,3.549518e-3,7.988549e-3,1.667330e-2,3.341344e-2,6.552895e-2,
-    1.266167e-1,2.409191e-1,4.501490e-1,8.243911e-1,1.480280e+0,2.612343e+0,4.545249e+0,
-    7.790746e+0,1.287033e+1,1.909053e+1,2.392952e+1,2.652790e+1,2.742592e+1,2.690891e+1,
-    2.536786e+1,2.330746e+1,2.113183e+1,1.907371e+1,1.723144e+1,1.562538e+1,1.423904e+1,
-    1.304262e+1,1.200459e+1,1.109667e+1,1.029534e+1,9.581841e+0,8.941546e+0,8.363124e+0,
-    7.837784e+0,7.358628e+0,6.920153e+0,6.517878e+0,6.148072e+0,5.807568e+0,5.493625e+0,
-    5.203837e+0,4.936070e+0,4.688412e+0,4.459144e+0,4.246710e+0,4.049702e+0,3.866841e+0,
-    3.696964e+0,3.539013e+0,3.392026e+0,3.255128e+0,3.127519e+0,3.008473e+0,2.897326e+0,
-    2.793474e+0,2.696364e+0,2.605493e+0,2.520398e+0,2.440659e+0,2.365890e+0,2.295737e+0,
-    2.229875e+0,2.168007e+0,2.109859e+0,2.055179e+0,2.003736e+0,1.955316e+0,1.909723e+0,
-    1.866773e+0,1.826299e+0,1.788145e+0,1.752167e+0,1.718232e+0,1.686214e+0,1.655999e+0,
-    1.627479e+0,1.600555e+0,1.575133e+0,1.551128e+0,1.528457e+0,1.507047e+0,1.486825e+0,
-    1.467726e+0,1.449689e+0,1.432656e+0,1.416572e+0,1.401389e+0,1.387057e+0,1.373533e+0,
-    1.360776e+0,1.348747e+0,1.337409e+0,1.326730e+0,1.316677e+0,1.307222e+0,1.298337e+0,
-    1.289997e+0,1.282179e+0,1.274863e+0,1.268027e+0,1.261656e+0,1.255732e+0,1.250242e+0};
-  static const G4double SL11[nL]={
-    4.614524e-4,1.458509e-3,3.702639e-3,8.309380e-3,1.740590e-2,3.519535e-2,6.986551e-2,
-    1.367187e-1,2.630019e-1,4.950763e-1,9.087988e-1,1.624204e+0,2.825210e+0,4.782440e+0,
-    7.867272e+0,1.250247e+1,1.878669e+1,2.530271e+1,2.928727e+1,3.015114e+1,2.903038e+1,
-    2.689359e+1,2.438858e+1,2.190927e+1,1.964845e+1,1.767000e+1,1.597064e+1,1.451878e+1,
-    1.327514e+1,1.220222e+1,1.126790e+1,1.044614e+1,9.716524e+0,9.063269e+0,8.474255e+0,
-    7.940129e+0,7.453592e+0,7.008848e+0,6.601198e+0,6.226749e+0,5.882205e+0,5.564731e+0,
-    5.271842e+0,5.001344e+0,4.751274e+0,4.519872e+0,4.305549e+0,4.106867e+0,3.922524e+0,
-    3.751336e+0,3.592227e+0,3.444221e+0,3.306426e+0,3.178034e+0,3.058307e+0,2.946572e+0,
-    2.842215e+0,2.744679e+0,2.653450e+0,2.568064e+0,2.488092e+0,2.413143e+0,2.342861e+0,
-    2.276915e+0,2.215004e+0,2.156852e+0,2.102204e+0,2.050824e+0,2.002497e+0,1.957023e+0,
-    1.914217e+0,1.873910e+0,1.835942e+0,1.800170e+0,1.766455e+0,1.734674e+0,1.704709e+0,
-    1.676451e+0,1.649799e+0,1.624659e+0,1.600943e+0,1.578569e+0,1.557460e+0,1.537545e+0,
-    1.518758e+0,1.501034e+0,1.484317e+0,1.468550e+0,1.453684e+0,1.439670e+0,1.426463e+0,
-    1.414022e+0,1.402307e+0,1.391282e+0,1.380912e+0,1.371166e+0,1.362014e+0,1.353430e+0,
-    1.345386e+0,1.337862e+0,1.330834e+0,1.324283e+0,1.318193e+0,1.312546e+0,1.307330e+0};
-  static const G4double SL12[nL]={
-    5.615148e-4,1.700309e-3,4.203181e-3,9.368359e-3,1.987519e-2,4.133574e-2,8.507565e-2,
-    1.726852e-1,3.430025e-1,6.623201e-1,1.238631e+0,2.240098e+0,3.915001e+0,6.601693e+0,
-    1.070034e+1,1.656745e+1,2.430795e+1,3.323297e+1,4.042222e+1,4.203499e+1,3.892326e+1,
-    3.426056e+1,2.971854e+1,2.578645e+1,2.251925e+1,1.984150e+1,1.764928e+1,1.584399e+1,
-    1.434242e+1,1.307807e+1,1.199938e+1,1.106710e+1,1.025167e+1,9.530877e+0,8.888043e+0,
-    8.310522e+0,7.788614e+0,7.314751e+0,6.882912e+0,6.488204e+0,6.126573e+0,5.794594e+0,
-    5.489325e+0,5.208212e+0,4.949006e+0,4.709718e+0,4.488572e+0,4.283980e+0,4.094514e+0,
-    3.918886e+0,3.755935e+0,3.604610e+0,3.463959e+0,3.333120e+0,3.211310e+0,3.097817e+0,
-    2.991993e+0,2.893250e+0,2.801049e+0,2.714902e+0,2.634361e+0,2.559016e+0,2.488493e+0,
-    2.422448e+0,2.360566e+0,2.302559e+0,2.248160e+0,2.197125e+0,2.149229e+0,2.104262e+0,
-    2.062033e+0,2.022365e+0,1.985093e+0,1.950064e+0,1.917138e+0,1.886183e+0,1.857078e+0,
-    1.829709e+0,1.803970e+0,1.779763e+0,1.756997e+0,1.735586e+0,1.715451e+0,1.696516e+0,
-    1.678712e+0,1.661974e+0,1.646241e+0,1.631456e+0,1.617565e+0,1.604520e+0,1.592272e+0,
-    1.580780e+0,1.570002e+0,1.559901e+0,1.550441e+0,1.541590e+0,1.533317e+0,1.525595e+0,
-    1.518397e+0,1.511701e+0,1.505485e+0,1.499729e+0,1.494416e+0,1.489531e+0,1.485061e+0};
-  static const G4double SL13[nL]={
-    5.979521e-4,1.787895e-3,4.384312e-3,9.755476e-3,2.079561e-2,4.366898e-2,9.094059e-2,
-    1.867226e-1,3.746609e-1,7.299098e-1,1.376720e+0,2.513601e+0,4.446871e+0,7.627694e+0,
-    1.267423e+1,2.032656e+1,3.102537e+1,4.279863e+1,4.924268e+1,4.764583e+1,4.223031e+1,
-    3.635559e+1,3.114336e+1,2.680306e+1,2.327037e+1,2.041256e+1,1.809450e+1,1.619914e+1,
-    1.463175e+1,1.331842e+1,1.220266e+1,1.124188e+1,1.040420e+1,9.665816e+0,9.008883e+0,
-    8.419927e+0,7.888645e+0,7.407021e+0,6.968700e+0,6.568538e+0,6.202287e+0,5.866370e+0,
-    5.557733e+0,5.273725e+0,5.012027e+0,4.770588e+0,4.547585e+0,4.341389e+0,4.150539e+0,
-    3.973720e+0,3.809747e+0,3.657550e+0,3.516159e+0,3.384698e+0,3.262371e+0,3.148455e+0,
-    3.042294e+0,2.943289e+0,2.850895e+0,2.764617e+0,2.683999e+0,2.608629e+0,2.538126e+0,
-    2.472142e+0,2.410358e+0,2.352483e+0,2.298245e+0,2.247399e+0,2.199714e+0,2.154982e+0,
-    2.113006e+0,2.073607e+0,2.036619e+0,2.001888e+0,1.969270e+0,1.938632e+0,1.909852e+0,
-    1.882814e+0,1.857411e+0,1.833544e+0,1.811120e+0,1.790052e+0,1.770261e+0,1.751669e+0,
-    1.734206e+0,1.717807e+0,1.702410e+0,1.687957e+0,1.674395e+0,1.661672e+0,1.649742e+0,
-    1.638561e+0,1.628089e+0,1.618286e+0,1.609117e+0,1.600551e+0,1.592555e+0,1.585102e+0,
-    1.578167e+0,1.571726e+0,1.565757e+0,1.560241e+0,1.555161e+0,1.550502e+0,1.546251e+0};
-  static const G4double SL14[nL]={
-    7.595609e-4,2.174487e-3,5.184472e-3,1.148979e-2,2.501660e-2,5.458957e-2,1.187206e-1,
-    2.534357e-1,5.242273e-1,1.043266e+0,1.992371e+0,3.648981e+0,6.401444e+0,1.071384e+1,
-    1.696937e+1,2.517085e+1,3.466133e+1,4.362657e+1,4.818786e+1,4.632665e+1,4.110517e+1,
-    3.547368e+1,3.049881e+1,2.637019e+1,2.301312e+1,2.029373e+1,1.808104e+1,1.626396e+1,
-    1.475365e+1,1.348118e+1,1.239409e+1,1.145289e+1,1.062807e+1,9.897589e+0,9.244965e+0,
-    8.657732e+0,8.126345e+0,7.643355e+0,7.202834e+0,6.799954e+0,6.430699e+0,6.091668e+0,
-    5.779927e+0,5.492917e+0,5.228379e+0,4.984303e+0,4.758895e+0,4.550538e+0,4.357779e+0,
-    4.179304e+0,4.013924e+0,3.860561e+0,3.718237e+0,3.586064e+0,3.463234e+0,3.349014e+0,
-    3.242733e+0,3.143782e+0,3.051603e+0,2.965688e+0,2.885571e+0,2.810827e+0,2.741066e+0,
-    2.675929e+0,2.615087e+0,2.558239e+0,2.505107e+0,2.455433e+0,2.408981e+0,2.365534e+0,
-    2.324889e+0,2.286859e+0,2.251272e+0,2.217967e+0,2.186795e+0,2.157618e+0,2.130308e+0,
-    2.104744e+0,2.080815e+0,2.058418e+0,2.037456e+0,2.017838e+0,1.999480e+0,1.982303e+0,
-    1.966234e+0,1.951205e+0,1.937150e+0,1.924011e+0,1.911731e+0,1.900259e+0,1.889545e+0,
-    1.879545e+0,1.870216e+0,1.861520e+0,1.853420e+0,1.845884e+0,1.838880e+0,1.832382e+0,
-    1.826362e+0,1.820798e+0,1.815670e+0,1.810960e+0,1.806650e+0,1.802729e+0,1.799183e+0};
-  static const G4double SL15[nL]={
-    8.500963e-4,2.390172e-3,5.632030e-3,1.247632e-2,2.747950e-2,6.109914e-2,1.355108e-1,
-    2.941224e-1,6.161245e-1,1.237476e+0,2.378852e+0,4.376594e+0,7.697785e+0,1.288755e+1,
-    2.037233e+1,3.017649e+1,4.195065e+1,5.485775e+1,6.453653e+1,6.432845e+1,5.643212e+1,
-    4.707792e+1,3.899572e+1,3.258608e+1,2.760535e+1,2.373102e+1,2.068965e+1,1.827124e+1,
-    1.631941e+1,1.471906e+1,1.338580e+1,1.225785e+1,1.128994e+1,1.044881e+1,9.709837e+0,
-    9.054659e+0,8.469380e+0,7.943327e+0,7.468155e+0,7.037214e+0,6.645102e+0,6.287353e+0,
-    5.960212e+0,5.660481e+0,5.385398e+0,5.132559e+0,4.899852e+0,4.685413e+0,4.487583e+0,
-    4.304884e+0,4.135994e+0,3.979725e+0,3.835009e+0,3.700883e+0,3.576477e+0,3.461003e+0,
-    3.353748e+0,3.254064e+0,3.161362e+0,3.075105e+0,2.994806e+0,2.920017e+0,2.850330e+0,
-    2.785372e+0,2.724800e+0,2.668301e+0,2.615584e+0,2.566383e+0,2.520455e+0,2.477573e+0,
-    2.437529e+0,2.400129e+0,2.365194e+0,2.332560e+0,2.302073e+0,2.273590e+0,2.246978e+0,
-    2.222116e+0,2.198888e+0,2.177188e+0,2.156916e+0,2.137979e+0,2.120292e+0,2.103773e+0,
-    2.088348e+0,2.073945e+0,2.060501e+0,2.047953e+0,2.036245e+0,2.025323e+0,2.015140e+0,
-    2.005648e+0,1.996806e+0,1.988574e+0,1.980915e+0,1.973798e+0,1.967190e+0,1.961065e+0,
-    1.955397e+0,1.950164e+0,1.945345e+0,1.940923e+0,1.936883e+0,1.933213e+0,1.929901e+0};
-  static const G4double SL16[nL]={
-    1.161977e-3,3.130797e-3,7.178175e-3,1.596595e-2,3.647036e-2,8.543942e-2,1.991615e-1,
-    4.493705e-1,9.672255e-1,1.976461e+0,3.832134e+0,7.044334e+0,1.221939e+1,1.977226e+1,
-    2.929890e+1,3.906811e+1,4.690664e+1,5.234861e+1,5.669474e+1,5.908286e+1,5.608983e+1,
-    4.880825e+1,4.096475e+1,3.429691e+1,2.901943e+1,2.490513e+1,2.168321e+1,1.913006e+1,
-    1.707654e+1,1.539807e+1,1.400363e+1,1.282689e+1,1.181939e+1,1.094565e+1,1.017948e+1,
-    9.501359e+0,8.896578e+0,8.353847e+0,7.864355e+0,7.421093e+0,7.018379e+0,6.651519e+0,
-    6.316575e+0,6.010193e+0,5.729483e+0,5.471930e+0,5.235327e+0,5.017723e+0,4.817386e+0,
-    4.632774e+0,4.462505e+0,4.305337e+0,4.160155e+0,4.025952e+0,3.901818e+0,3.786931e+0,
-    3.680544e+0,3.581977e+0,3.490615e+0,3.405895e+0,3.327304e+0,3.254375e+0,3.186678e+0,
-    3.123820e+0,3.065443e+0,3.011214e+0,2.960830e+0,2.914011e+0,2.870498e+0,2.830053e+0,
-    2.792457e+0,2.757506e+0,2.725010e+0,2.694797e+0,2.666703e+0,2.640580e+0,2.616286e+0,
-    2.593694e+0,2.572682e+0,2.553138e+0,2.534958e+0,2.518045e+0,2.502310e+0,2.487667e+0,
-    2.474040e+0,2.461354e+0,2.449544e+0,2.438546e+0,2.428302e+0,2.418759e+0,2.409866e+0,
-    2.401579e+0,2.393854e+0,2.386654e+0,2.379943e+0,2.373689e+0,2.367864e+0,2.362442e+0,
-    2.357400e+0,2.352718e+0,2.348380e+0,2.344371e+0,2.340680e+0,2.337299e+0,2.334221e+0};
-  static const G4double SL17[nL]={
-    2.137065e-3,5.442007e-3,1.210645e-2,2.774945e-2,6.888202e-2,1.771769e-1,4.450546e-1,
-    1.057471e+0,2.354951e+0,4.918482e+0,9.652965e+0,1.776486e+1,3.037627e+1,4.763569e+1,
-    6.860085e+1,9.419933e+1,1.267075e+2,1.511993e+2,1.442063e+2,1.180149e+2,9.193020e+1,
-    7.155618e+1,5.654375e+1,4.555533e+1,3.744235e+1,3.137117e+1,2.675825e+1,2.319641e+1,
-    2.039992e+1,1.816677e+1,1.635312e+1,1.485589e+1,1.360078e+1,1.253381e+1,1.161550e+1,
-    1.081664e+1,1.011536e+1,9.495083e+0,8.943002e+0,8.449085e+0,8.005329e+0,7.605245e+0,
-    7.243487e+0,6.915590e+0,6.617778e+0,6.346818e+0,6.099922e+0,5.874662e+0,5.668909e+0,
-    5.480788e+0,5.308639e+0,5.150985e+0,5.006505e+0,4.874020e+0,4.752467e+0,4.640891e+0,
-    4.538429e+0,4.444301e+0,4.357799e+0,4.278281e+0,4.205160e+0,4.137906e+0,4.076030e+0,
-    4.019090e+0,3.966677e+0,3.918419e+0,3.873973e+0,3.833027e+0,3.795290e+0,3.760498e+0,
-    3.728406e+0,3.698788e+0,3.671436e+0,3.646160e+0,3.622782e+0,3.601139e+0,3.581082e+0,
-    3.562470e+0,3.545177e+0,3.529084e+0,3.514082e+0,3.500071e+0,3.486960e+0,3.474663e+0,
-    3.463103e+0,3.452209e+0,3.441916e+0,3.432164e+0,3.422901e+0,3.414078e+0,3.405652e+0,
-    3.397582e+0,3.389836e+0,3.382382e+0,3.375196e+0,3.368254e+0,3.361538e+0,3.355034e+0,
-    3.348730e+0,3.342620e+0,3.336699e+0,3.330967e+0,3.325427e+0,3.320085e+0,3.314951e+0};
-  static const G4double SL18[nL]={
-    2.220534e-3,5.640053e-3,1.253572e-2,2.881392e-2,7.191580e-2,1.859408e-1,4.687157e-1,
-    1.115760e+0,2.485562e+0,5.183559e+0,1.013008e+1,1.847496e+1,3.103145e+1,4.701870e+1,
-    6.345164e+1,7.777111e+1,8.950804e+1,9.321427e+1,8.410731e+1,6.975786e+1,5.670984e+1,
-    4.641759e+1,3.856198e+1,3.257293e+1,2.796698e+1,2.438084e+1,2.154901e+1,1.927832e+1,
-    1.742802e+1,1.589540e+1,1.460538e+1,1.350313e+1,1.254846e+1,1.171188e+1,1.097157e+1,
-    1.031123e+1,9.718498e+0,9.183826e+0,8.699693e+0,8.260038e+0,7.859873e+0,7.495011e+0,
-    7.161876e+0,6.857372e+0,6.578785e+0,6.323715e+0,6.090025e+0,5.875801e+0,5.679326e+0,
-    5.499048e+0,5.333567e+0,5.181614e+0,5.042039e+0,4.913795e+0,4.795932e+0,4.687583e+0,
-    4.587960e+0,4.496341e+0,4.412068e+0,4.334539e+0,4.263201e+0,4.197551e+0,4.137125e+0,
-    4.081496e+0,4.030275e+0,3.983101e+0,3.939643e+0,3.899598e+0,3.862684e+0,3.828641e+0,
-    3.797233e+0,3.768237e+0,3.741451e+0,3.716686e+0,3.693770e+0,3.672542e+0,3.652854e+0,
-    3.634571e+0,3.617565e+0,3.601721e+0,3.586931e+0,3.573099e+0,3.560132e+0,3.547947e+0,
-    3.536470e+0,3.525629e+0,3.515361e+0,3.505610e+0,3.496321e+0,3.487449e+0,3.478950e+0,
-    3.470787e+0,3.462928e+0,3.455342e+0,3.448006e+0,3.440898e+0,3.434002e+0,3.427303e+0,
-    3.420792e+0,3.414463e+0,3.408314e+0,3.402345e+0,3.396560e+0,3.390968e+0,3.385579e+0};
-  static const G4double SL19[nL]={
-    2.305897e-3,5.842654e-3,1.297593e-2,2.991119e-2,7.506153e-2,1.950960e-1,4.938019e-1,
-    1.179632e+0,2.638978e+0,5.539887e+0,1.095013e+1,2.037657e+1,3.550284e+1,5.759776e+1,
-    8.715375e+1,1.188643e+2,1.303680e+2,1.150932e+2,9.265204e+1,7.339629e+1,5.867930e+1,
-    4.768315e+1,3.944920e+1,3.322398e+1,2.845918e+1,2.476205e+1,2.185087e+1,1.952250e+1,
-    1.762968e+1,1.606532e+1,1.475137e+1,1.363085e+1,1.266212e+1,1.181463e+1,1.106578e+1,
-    1.039872e+1,9.800670e+0,9.261781e+0,8.774299e+0,8.331989e+0,7.929726e+0,7.563221e+0,
-    7.228815e+0,6.923346e+0,6.644047e+0,6.388477e+0,6.154464e+0,5.940066e+0,5.743540e+0,
-    5.563316e+0,5.397976e+0,5.246237e+0,5.106936e+0,4.979015e+0,4.861515e+0,4.753562e+0,
-    4.654358e+0,4.563177e+0,4.479354e+0,4.402282e+0,4.331405e+0,4.266213e+0,4.206241e+0,
-    4.151059e+0,4.100274e+0,4.053523e+0,4.010474e+0,3.970819e+0,3.934277e+0,3.900587e+0,
-    3.869510e+0,3.840823e+0,3.814323e+0,3.789821e+0,3.767142e+0,3.746128e+0,3.726629e+0,
-    3.708509e+0,3.691642e+0,3.675912e+0,3.661213e+0,3.647445e+0,3.634520e+0,3.622354e+0,
-    3.610872e+0,3.600004e+0,3.589688e+0,3.579867e+0,3.570489e+0,3.561507e+0,3.552881e+0,
-    3.544574e+0,3.536552e+0,3.528789e+0,3.521261e+0,3.513947e+0,3.506832e+0,3.499903e+0,
-    3.493151e+0,3.486572e+0,3.480165e+0,3.473930e+0,3.467875e+0,3.462007e+0,3.456340e+0};
-  static const G4double SL20[nL]={
-    2.545914e-3,6.412659e-3,1.422001e-2,3.303967e-2,8.409149e-2,2.213646e-1,5.649122e-1,
-    1.354715e+0,3.029540e+0,6.323258e+0,1.232016e+1,2.225805e+1,3.662567e+1,5.344971e+1,
-    6.796031e+1,7.669870e+1,8.176394e+1,8.725461e+1,8.966246e+1,8.202204e+1,6.857177e+1,
-    5.574957e+1,4.551980e+1,3.772808e+1,3.182031e+1,2.730095e+1,2.379636e+1,2.103601e+1,
-    1.882555e+1,1.702523e+1,1.553424e+1,1.427965e+1,1.320850e+1,1.228212e+1,1.147206e+1,
-    1.075719e+1,1.012157e+1,9.553019e+0,9.042024e+0,8.581021e+0,8.163877e+0,7.785521e+0,
-    7.441691e+0,7.128756e+0,6.843578e+0,6.583419e+0,6.345874e+0,6.128812e+0,5.930337e+0,
-    5.748752e+0,5.582537e+0,5.430325e+0,5.290879e+0,5.163086e+0,5.045934e+0,4.938508e+0,
-    4.839973e+0,4.749573e+0,4.666616e+0,4.590473e+0,4.520568e+0,4.456376e+0,4.397414e+0,
-    4.343241e+0,4.293452e+0,4.247676e+0,4.205572e+0,4.166825e+0,4.131148e+0,4.098275e+0,
-    4.067961e+0,4.039982e+0,4.014130e+0,3.990215e+0,3.968060e+0,3.947505e+0,3.928399e+0,
-    3.910607e+0,3.894002e+0,3.878468e+0,3.863899e+0,3.850198e+0,3.837275e+0,3.825050e+0,
-    3.813448e+0,3.802402e+0,3.791850e+0,3.781739e+0,3.772017e+0,3.762641e+0,3.753573e+0,
-    3.744778e+0,3.736225e+0,3.727891e+0,3.719753e+0,3.711795e+0,3.704003e+0,3.696369e+0,
-    3.688887e+0,3.681555e+0,3.674374e+0,3.667351e+0,3.660494e+0,3.653816e+0,3.647333e+0};
-  static const G4double SL21[nL]={
-    2.564250e-3,6.456227e-3,1.431544e-2,3.328130e-2,8.479343e-2,2.234161e-1,5.704940e-1,
-    1.368585e+0,3.061075e+0,6.389076e+0,1.244551e+1,2.247024e+1,3.692501e+1,5.375094e+1,
-    6.804530e+1,7.622389e+1,8.041323e+1,8.592812e+1,9.222352e+1,8.976000e+1,7.746020e+1,
-    6.319441e+1,5.115788e+1,4.188960e+1,3.488950e+1,2.958086e+1,2.550619e+1,2.233120e+1,
-    1.981637e+1,1.779045e+1,1.613068e+1,1.474867e+1,1.358052e+1,1.257968e+1,1.171205e+1,
-    1.095233e+1,1.028156e+1,9.685270e+0,9.152260e+0,8.673689e+0,8.242451e+0,7.852734e+0,
-    7.499706e+0,7.179292e+0,6.888008e+0,6.622849e+0,6.381195e+0,6.160747e+0,5.959474e+0,
-    5.775573e+0,5.607438e+0,5.453629e+0,5.312856e+0,5.183957e+0,5.065885e+0,4.957691e+0,
-    4.858517e+0,4.767585e+0,4.684186e+0,4.607676e+0,4.537466e+0,4.473021e+0,4.413851e+0,
-    4.359506e+0,4.309575e+0,4.263683e+0,4.221483e+0,4.182658e+0,4.146917e+0,4.113990e+0,
-    4.083632e+0,4.055616e+0,4.029732e+0,4.005789e+0,3.983609e+0,3.963030e+0,3.943902e+0,
-    3.926087e+0,3.909459e+0,3.893901e+0,3.879307e+0,3.865579e+0,3.852627e+0,3.840370e+0,
-    3.828735e+0,3.817652e+0,3.807062e+0,3.796909e+0,3.787144e+0,3.777723e+0,3.768606e+0,
-    3.759759e+0,3.751154e+0,3.742764e+0,3.734569e+0,3.726552e+0,3.718700e+0,3.711004e+0,
-    3.703458e+0,3.696062e+0,3.688816e+0,3.681726e+0,3.674803e+0,3.668058e+0,3.661508e+0};
-  static const G4double SL22[nL]={
-    3.007427e-3,7.510236e-3,1.663782e-2,3.922952e-2,1.022486e-1,2.747505e-1,7.108351e-1,
-    1.719543e+0,3.868385e+0,8.112125e+0,1.586986e+1,2.877567e+1,4.762099e+1,7.091149e+1,
-    9.555037e+1,1.153230e+2,1.159518e+2,9.952423e+1,8.059227e+1,6.490265e+1,5.285116e+1,
-    4.371769e+1,3.676918e+1,3.143378e+1,2.728996e+1,2.403042e+1,2.143067e+1,1.932609e+1,
-    1.759555e+1,1.614984e+1,1.492332e+1,1.386771e+1,1.294753e+1,1.213663e+1,1.141562e+1,
-    1.076997e+1,1.018862e+1,9.662970e+0,9.186212e+0,8.752798e+0,8.358120e+0,7.998266e+0,
-    7.669857e+0,7.369937e+0,7.095886e+0,6.845367e+0,6.616282e+0,6.406739e+0,6.215024e+0,
-    6.039585e+0,5.879011e+0,5.732019e+0,5.597439e+0,5.474206e+0,5.361347e+0,5.257976e+0,
-    5.163281e+0,5.076520e+0,4.997014e+0,4.924143e+0,4.857338e+0,4.796075e+0,4.739877e+0,
-    4.688303e+0,4.640952e+0,4.597451e+0,4.557461e+0,4.520669e+0,4.486786e+0,4.455548e+0,
-    4.426712e+0,4.400054e+0,4.375369e+0,4.352466e+0,4.331174e+0,4.311331e+0,4.292793e+0,
-    4.275425e+0,4.259104e+0,4.243719e+0,4.229166e+0,4.215352e+0,4.202192e+0,4.189610e+0,
-    4.177536e+0,4.165907e+0,4.154667e+0,4.143766e+0,4.133160e+0,4.122809e+0,4.112681e+0,
-    4.102746e+0,4.092980e+0,4.083363e+0,4.073880e+0,4.064520e+0,4.055276e+0,4.046143e+0,
-    4.037123e+0,4.028220e+0,4.019441e+0,4.010799e+0,4.002309e+0,3.993991e+0,3.985867e+0};
-  static const G4double SL23[nL]={
-    3.202591e-3,7.975022e-3,1.767003e-2,4.191214e-2,1.102179e-1,2.983388e-1,7.754839e-1,
-    1.881188e+0,4.239060e+0,8.896849e+0,1.740204e+1,3.149771e+1,5.193761e+1,7.708634e+1,
-    1.037149e+2,1.232794e+2,1.201643e+2,1.011825e+2,8.136267e+1,6.536884e+1,5.318799e+1,
-    4.398670e+1,3.699713e+1,3.163451e+1,2.747158e+1,2.419807e+1,2.158786e+1,1.947527e+1,
-    1.773851e+1,1.628791e+1,1.505750e+1,1.399877e+1,1.307609e+1,1.226319e+1,1.154059e+1,
-    1.089372e+1,1.031145e+1,9.785155e+0,9.307994e+0,8.874394e+0,8.479723e+0,8.120049e+0,
-    7.791975e+0,7.492525e+0,7.219066e+0,6.969243e+0,6.740944e+0,6.532261e+0,6.341471e+0,
-    6.167007e+0,6.007447e+0,5.861497e+0,5.727978e+0,5.605816e+0,5.494030e+0,5.391724e+0,
-    5.298080e+0,5.212351e+0,5.133851e+0,5.061955e+0,4.996087e+0,4.935723e+0,4.880379e+0,
-    4.829614e+0,4.783020e+0,4.740226e+0,4.700887e+0,4.664691e+0,4.631348e+0,4.600593e+0,
-    4.572181e+0,4.545889e+0,4.521511e+0,4.498859e+0,4.477759e+0,4.458053e+0,4.439594e+0,
-    4.422252e+0,4.405903e+0,4.390437e+0,4.375754e+0,4.361761e+0,4.348375e+0,4.335521e+0,
-    4.323132e+0,4.311147e+0,4.299511e+0,4.288177e+0,4.277103e+0,4.266251e+0,4.255591e+0,
-    4.245096e+0,4.234743e+0,4.224516e+0,4.214402e+0,4.204390e+0,4.194477e+0,4.184662e+0,
-    4.174947e+0,4.165339e+0,4.155849e+0,4.146491e+0,4.137283e+0,4.128247e+0,4.119408e+0};
-  static const G4double SL24[nL]={
-    4.424391e-3,1.089365e-2,2.425454e-2,5.950323e-2,1.636625e-1,4.585667e-1,1.218434e+0,
-    3.000059e+0,6.849073e+0,1.459387e+1,2.913751e+1,5.434530e+1,9.302757e+1,1.344961e+2,
-    1.455690e+2,1.285470e+2,1.059779e+2,8.603243e+1,7.002571e+1,5.756765e+1,4.795028e+1,
-    4.051569e+1,3.473537e+1,3.020519e+1,2.662094e+1,2.375420e+1,2.143316e+1,1.952845e+1,
-    1.794276e+1,1.660309e+1,1.545498e+1,1.445799e+1,1.358216e+1,1.280530e+1,1.211087e+1,
-    1.148642e+1,1.092239e+1,1.041132e+1,9.947182e+0,9.525039e+0,9.140708e+0,8.790584e+0,
-    8.471504e+0,8.180659e+0,7.915525e+0,7.673825e+0,7.453491e+0,7.252639e+0,7.069553e+0,
-    6.902666e+0,6.750545e+0,6.611879e+0,6.485472e+0,6.370227e+0,6.265143e+0,6.169303e+0,
-    6.081868e+0,6.002071e+0,5.929208e+0,5.862637e+0,5.801770e+0,5.746067e+0,5.695037e+0,
-    5.648227e+0,5.605225e+0,5.565653e+0,5.529167e+0,5.495449e+0,5.464212e+0,5.435193e+0,
-    5.408150e+0,5.382864e+0,5.359136e+0,5.336785e+0,5.315644e+0,5.295565e+0,5.276412e+0,
-    5.258062e+0,5.240405e+0,5.223341e+0,5.206783e+0,5.190650e+0,5.174872e+0,5.159387e+0,
-    5.144141e+0,5.129087e+0,5.114183e+0,5.099396e+0,5.084697e+0,5.070063e+0,5.055476e+0,
-    5.040923e+0,5.026397e+0,5.011893e+0,4.997412e+0,4.982959e+0,4.968544e+0,4.954178e+0,
-    4.939879e+0,4.925668e+0,4.911569e+0,4.897612e+0,4.883829e+0,4.870257e+0,4.856937e+0};
-  static const G4double SL25[nL]={
-    5.218262e-3,1.279812e-2,2.863691e-2,7.159626e-2,2.012920e-1,5.725263e-1,1.533263e+0,
-    3.785207e+0,8.620686e+0,1.819011e+1,3.550779e+1,6.346712e+1,1.028732e+2,1.498888e+2,
-    1.795448e+2,1.653851e+2,1.332773e+2,1.044804e+2,8.246369e+1,6.611941e+1,5.397243e+1,
-    4.486079e+1,3.794689e+1,3.263665e+1,2.850697e+1,2.525335e+1,2.265438e+1,2.054771e+1,
-    1.881372e+1,1.736415e+1,1.613394e+1,1.507520e+1,1.415268e+1,1.334041e+1,1.261911e+1,
-    1.197431e+1,1.139498e+1,1.087253e+1,1.040012e+1,9.972149e+0,9.583943e+0,9.231507e+0,
-    8.911366e+0,8.620462e+0,8.356070e+0,8.115746e+0,7.897283e+0,7.698685e+0,7.518138e+0,
-    7.353992e+0,7.204745e+0,7.069027e+0,6.945589e+0,6.833293e+0,6.731099e+0,6.638057e+0,
-    6.553303e+0,6.476044e+0,6.405559e+0,6.341189e+0,6.282333e+0,6.228441e+0,6.179012e+0,
-    6.133589e+0,6.091756e+0,6.053132e+0,6.017372e+0,5.984159e+0,5.953209e+0,5.924259e+0,
-    5.897073e+0,5.871438e+0,5.847158e+0,5.824059e+0,5.801982e+0,5.780784e+0,5.760337e+0,
-    5.740528e+0,5.721253e+0,5.702421e+0,5.683953e+0,5.665777e+0,5.647831e+0,5.630063e+0,
-    5.612426e+0,5.594882e+0,5.577398e+0,5.559949e+0,5.542515e+0,5.525080e+0,5.507636e+0,
-    5.490177e+0,5.472703e+0,5.455220e+0,5.437735e+0,5.420261e+0,5.402815e+0,5.385418e+0,
-    5.368096e+0,5.350876e+0,5.333791e+0,5.316880e+0,5.300182e+0,5.283744e+0,5.267615e+0};
-  static const G4double SL26[nL]={
-    9.533418e-3,2.324917e-2,5.364098e-2,1.447139e-1,4.381268e-1,1.303754e+0,3.571583e+0,
-    8.890991e+0,2.014541e+1,4.138069e+1,7.546159e+1,1.179996e+2,1.568622e+2,1.907924e+2,
-    2.305942e+2,2.457159e+2,2.095925e+2,1.607399e+2,1.215717e+2,9.340695e+1,7.340074e+1,
-    5.903474e+1,4.855591e+1,4.078885e+1,3.494131e+1,3.047098e+1,2.700048e+1,2.426339e+1,
-    2.206960e+1,2.028240e+1,1.880303e+1,1.755986e+1,1.650082e+1,1.558780e+1,1.479275e+1,
-    1.409475e+1,1.347801e+1,1.293034e+1,1.244217e+1,1.200582e+1,1.161497e+1,1.126435e+1,
-    1.094945e+1,1.066638e+1,1.041174e+1,1.018252e+1,9.976076e+0,9.790007e+0,9.622186e+0,
-    9.470694e+0,9.333803e+0,9.209956e+0,9.097750e+0,8.995915e+0,8.903308e+0,8.818895e+0,
-    8.741745e+0,8.671018e+0,8.605956e+0,8.545878e+0,8.490170e+0,8.438281e+0,8.389716e+0,
-    8.344033e+0,8.300834e+0,8.259766e+0,8.220512e+0,8.182794e+0,8.146361e+0,8.110993e+0,
-    8.076498e+0,8.042705e+0,8.009465e+0,7.976650e+0,7.944147e+0,7.911862e+0,7.879713e+0,
-    7.847632e+0,7.815563e+0,7.783460e+0,7.751287e+0,7.719017e+0,7.686631e+0,7.654117e+0,
-    7.621469e+0,7.588688e+0,7.555781e+0,7.522758e+0,7.489637e+0,7.456437e+0,7.423184e+0,
-    7.389908e+0,7.356640e+0,7.323419e+0,7.290286e+0,7.257286e+0,7.224468e+0,7.191884e+0,
-    7.159594e+0,7.127657e+0,7.096141e+0,7.065118e+0,7.034663e+0,7.004858e+0,6.975791e+0};
-  static const G4double SL27[nL]={
-    1.043535e-2,2.545247e-2,5.908485e-2,1.613411e-1,4.935021e-1,1.477078e+0,4.058976e+0,
-    1.012392e+1,2.297013e+1,4.720890e+1,8.609450e+1,1.355874e+2,1.876865e+2,2.480184e+2,
-    2.968858e+2,2.729073e+2,2.110699e+2,1.571879e+2,1.183563e+2,9.114148e+1,7.189981e+1,
-    5.807038e+1,4.795957e+1,4.044610e+1,3.477555e+1,3.043070e+1,2.705064e+1,2.437987e+1,
-    2.223556e+1,2.048595e+1,1.903566e+1,1.781544e+1,1.677484e+1,1.587694e+1,1.509453e+1,
-    1.440731e+1,1.379991e+1,1.326049e+1,1.277969e+1,1.235001e+1,1.196525e+1,1.162022e+1,
-    1.131048e+1,1.103217e+1,1.078194e+1,1.055679e+1,1.035408e+1,1.017143e+1,1.000671e+1,
-    9.858006e+0,9.723600e+0,9.601935e+0,9.491608e+0,9.391355e+0,9.300037e+0,9.216625e+0,
-    9.140195e+0,9.069912e+0,9.005027e+0,8.944866e+0,8.888826e+0,8.836365e+0,8.786998e+0,
-    8.740293e+0,8.695865e+0,8.653370e+0,8.612505e+0,8.573001e+0,8.534620e+0,8.497153e+0,
-    8.460418e+0,8.424256e+0,8.388530e+0,8.353120e+0,8.317926e+0,8.282862e+0,8.247857e+0,
-    8.212851e+0,8.177798e+0,8.142660e+0,8.107410e+0,8.072027e+0,8.036502e+0,8.000828e+0,
-    7.965007e+0,7.929047e+0,7.892960e+0,7.856763e+0,7.820479e+0,7.784135e+0,7.747759e+0,
-    7.711389e+0,7.675061e+0,7.638818e+0,7.602707e+0,7.566777e+0,7.531083e+0,7.495683e+0,
-    7.460641e+0,7.426023e+0,7.391901e+0,7.358353e+0,7.325461e+0,7.293313e+0,7.262004e+0};
-  static const G4double SL28[nL]={
-    1.177612e-2,2.873855e-2,6.729897e-2,1.868027e-1,5.790453e-1,1.745770e+0,4.814971e+0,
-    1.203191e+1,2.730811e+1,5.598968e+1,1.014774e+2,1.592489e+2,2.225285e+2,2.776163e+2,
-    2.688536e+2,2.132293e+2,1.608280e+2,1.222362e+2,9.485335e+1,7.529219e+1,6.110006e+1,
-    5.063436e+1,4.279795e+1,3.684661e+1,3.226548e+1,2.869156e+1,2.586467e+1,2.359614e+1,
-    2.174808e+1,2.021937e+1,1.893580e+1,1.784291e+1,1.690071e+1,1.607977e+1,1.535827e+1,
-    1.471984e+1,1.415200e+1,1.364501e+1,1.319113e+1,1.278403e+1,1.241840e+1,1.208972e+1,
-    1.179407e+1,1.152799e+1,1.128840e+1,1.107255e+1,1.087797e+1,1.070243e+1,1.054390e+1,
-    1.040057e+1,1.027077e+1,1.015302e+1,1.004596e+1,9.948371e+0,9.859147e+0,9.777296e+0,
-    9.701922e+0,9.632220e+0,9.567466e+0,9.507013e+0,9.450281e+0,9.396751e+0,9.345963e+0,
-    9.297506e+0,9.251017e+0,9.206173e+0,9.162691e+0,9.120322e+0,9.078848e+0,9.038079e+0,
-    8.997851e+0,8.958023e+0,8.918474e+0,8.879101e+0,8.839819e+0,8.800557e+0,8.761258e+0,
-    8.721877e+0,8.682378e+0,8.642738e+0,8.602939e+0,8.562975e+0,8.522843e+0,8.482548e+0,
-    8.442103e+0,8.401522e+0,8.360828e+0,8.320046e+0,8.279205e+0,8.238341e+0,8.197491e+0,
-    8.156696e+0,8.116003e+0,8.075461e+0,8.035123e+0,7.995046e+0,7.955292e+0,7.915926e+0,
-    7.877018e+0,7.838644e+0,7.800883e+0,7.763820e+0,7.727547e+0,7.692162e+0,7.657767e+0};
-  static const G4double SL29[nL]={
-    1.365967e-2,3.337537e-2,7.906748e-2,2.239693e-1,7.052155e-1,2.143189e+0,5.929377e+0,
-    1.480860e+1,3.341772e+1,6.741315e+1,1.178596e+2,1.735378e+2,2.243020e+2,2.786430e+2,
-    3.008511e+2,2.541744e+2,1.921484e+2,1.437224e+2,1.094876e+2,8.542953e+1,6.828273e+1,
-    5.584793e+1,4.667796e+1,3.980970e+1,3.458954e+1,3.056493e+1,2.741696e+1,2.491771e+1,
-    2.290273e+1,2.125263e+1,1.988051e+1,1.872296e+1,1.773367e+1,1.687863e+1,1.613270e+1,
-    1.547709e+1,1.489750e+1,1.438287e+1,1.392442e+1,1.351505e+1,1.314884e+1,1.282080e+1,
-    1.252665e+1,1.226263e+1,1.202543e+1,1.181213e+1,1.162010e+1,1.144700e+1,1.129071e+1,
-    1.114933e+1,1.102117e+1,1.090467e+1,1.079846e+1,1.070131e+1,1.061208e+1,1.052979e+1,
-    1.045353e+1,1.038251e+1,1.031602e+1,1.025342e+1,1.019413e+1,1.013767e+1,1.008359e+1,
-    1.003150e+1,9.981059e+0,9.931961e+0,9.883946e+0,9.836788e+0,9.790289e+0,9.744282e+0,
-    9.698622e+0,9.653189e+0,9.607882e+0,9.562616e+0,9.517324e+0,9.471954e+0,9.426464e+0,
-    9.380825e+0,9.335018e+0,9.289031e+0,9.242863e+0,9.196518e+0,9.150008e+0,9.103348e+0,
-    9.056561e+0,9.009673e+0,8.962717e+0,8.915727e+0,8.868742e+0,8.821806e+0,8.774965e+0,
-    8.728269e+0,8.681773e+0,8.635535e+0,8.589616e+0,8.544082e+0,8.499003e+0,8.454454e+0,
-    8.410514e+0,8.367269e+0,8.324807e+0,8.283225e+0,8.242627e+0,8.203121e+0,8.164824e+0};
-  static const G4double SL30[nL]={
-    2.103117e-2,5.172350e-2,1.273601e-1,3.830439e-1,1.257967e+0,3.901184e+0,1.087470e+1,
-    2.709930e+1,6.005843e+1,1.151063e+2,1.807622e+2,2.248182e+2,2.337093e+2,2.305565e+2,
-    2.282780e+2,2.025860e+2,1.607669e+2,1.243617e+2,9.741054e+1,7.794111e+1,6.376177e+1,
-    5.328718e+1,4.543843e+1,3.947900e+1,3.489731e+1,3.133117e+1,2.851997e+1,2.627388e+1,
-    2.445368e+1,2.295694e+1,2.170826e+1,2.065218e+1,1.974793e+1,1.896539e+1,1.828223e+1,
-    1.768163e+1,1.715075e+1,1.667954e+1,1.625998e+1,1.588548e+1,1.555055e+1,1.525048e+1,
-    1.498116e+1,1.473901e+1,1.452086e+1,1.432386e+1,1.414548e+1,1.398346e+1,1.383576e+1,
-    1.370056e+1,1.357624e+1,1.346135e+1,1.335459e+1,1.325483e+1,1.316103e+1,1.307231e+1,
-    1.298788e+1,1.290703e+1,1.282916e+1,1.275374e+1,1.268031e+1,1.260848e+1,1.253790e+1,
-    1.246828e+1,1.239939e+1,1.233100e+1,1.226295e+1,1.219511e+1,1.212735e+1,1.205959e+1,
-    1.199175e+1,1.192379e+1,1.185567e+1,1.178738e+1,1.171889e+1,1.165022e+1,1.158138e+1,
-    1.151237e+1,1.144324e+1,1.137400e+1,1.130470e+1,1.123538e+1,1.116608e+1,1.109684e+1,
-    1.102773e+1,1.095880e+1,1.089011e+1,1.082171e+1,1.075367e+1,1.068607e+1,1.061897e+1,
-    1.055244e+1,1.048657e+1,1.042144e+1,1.035714e+1,1.029376e+1,1.023139e+1,1.017015e+1,
-    1.011014e+1,1.005149e+1,9.994313e+0,9.938752e+0,9.884949e+0,9.833059e+0,9.783245e+0};
-  static const G4double SL31[nL]={
-    2.164664e-2,5.326850e-2,1.315360e-1,3.972007e-1,1.307919e+0,4.061184e+0,1.132688e+1,
-    2.822812e+1,6.251535e+1,1.195506e+2,1.871899e+2,2.337421e+2,2.500245e+2,2.569217e+2,
-    2.417968e+2,1.964670e+2,1.512314e+2,1.169992e+2,9.234431e+1,7.451650e+1,6.143973e+1,
-    5.170376e+1,4.435567e+1,3.874082e+1,3.440004e+1,3.100496e+1,2.831703e+1,2.616109e+1,
-    2.440774e+1,2.296126e+1,2.175087e+1,2.072434e+1,1.984318e+1,1.907891e+1,1.841036e+1,
-    1.782157e+1,1.730033e+1,1.683705e+1,1.642406e+1,1.605504e+1,1.572468e+1,1.542842e+1,
-    1.516228e+1,1.492277e+1,1.470678e+1,1.451152e+1,1.433452e+1,1.417353e+1,1.402657e+1,
-    1.389184e+1,1.376774e+1,1.365284e+1,1.354587e+1,1.344569e+1,1.335132e+1,1.326186e+1,
-    1.317653e+1,1.309467e+1,1.301566e+1,1.293899e+1,1.286422e+1,1.279096e+1,1.271887e+1,
-    1.264768e+1,1.257715e+1,1.250708e+1,1.243731e+1,1.236770e+1,1.229815e+1,1.222857e+1,
-    1.215890e+1,1.208909e+1,1.201911e+1,1.194895e+1,1.187861e+1,1.180808e+1,1.173739e+1,
-    1.166655e+1,1.159559e+1,1.152454e+1,1.145345e+1,1.138236e+1,1.131131e+1,1.124036e+1,
-    1.116955e+1,1.109896e+1,1.102863e+1,1.095863e+1,1.088903e+1,1.081989e+1,1.075129e+1,
-    1.068331e+1,1.061602e+1,1.054952e+1,1.048389e+1,1.041922e+1,1.035562e+1,1.029319e+1,
-    1.023205e+1,1.017232e+1,1.011413e+1,1.005761e+1,1.000292e+1,9.950209e+0,9.899647e+0};
-  static const G4double SL32[nL]={
-    2.258863e-2,5.563670e-2,1.379665e-1,4.191065e-1,1.385411e+0,4.309706e+0,1.202998e+1,
-    2.998579e+1,6.634936e+1,1.265293e+2,1.975930e+2,2.495457e+2,2.807339e+2,3.044005e+2,
-    2.792187e+2,2.183968e+2,1.646189e+2,1.256518e+2,9.814320e+1,7.851348e+1,6.426612e+1,
-    5.375330e+1,4.588048e+1,3.990576e+1,3.531490e+1,3.174407e+1,2.893143e+1,2.668630e+1,
-    2.486877e+1,2.337590e+1,2.213188e+1,2.108096e+1,2.018214e+1,1.940513e+1,1.872746e+1,
-    1.813222e+1,1.760647e+1,1.714012e+1,1.672508e+1,1.635475e+1,1.602359e+1,1.572684e+1,
-    1.546043e+1,1.522073e+1,1.500457e+1,1.480910e+1,1.463180e+1,1.447040e+1,1.432289e+1,
-    1.418745e+1,1.406248e+1,1.394655e+1,1.383837e+1,1.373683e+1,1.364092e+1,1.354977e+1,
-    1.346262e+1,1.337878e+1,1.329768e+1,1.321880e+1,1.314171e+1,1.306603e+1,1.299144e+1,
-    1.291767e+1,1.284450e+1,1.277173e+1,1.269921e+1,1.262681e+1,1.255444e+1,1.248202e+1,
-    1.240949e+1,1.233681e+1,1.226397e+1,1.219095e+1,1.211774e+1,1.204437e+1,1.197085e+1,
-    1.189720e+1,1.182346e+1,1.174967e+1,1.167586e+1,1.160209e+1,1.152840e+1,1.145484e+1,
-    1.138148e+1,1.130838e+1,1.123558e+1,1.116317e+1,1.109121e+1,1.101977e+1,1.094893e+1,
-    1.087876e+1,1.080935e+1,1.074079e+1,1.067317e+1,1.060658e+1,1.054114e+1,1.047695e+1,
-    1.041413e+1,1.035280e+1,1.029310e+1,1.023517e+1,1.017916e+1,1.012525e+1,1.007359e+1};
-  static const G4double SL33[nL]={
-    2.454062e-2,6.055745e-2,1.514382e-1,4.653812e-1,1.549692e+0,4.836226e+0,1.351062e+1,
-    3.362441e+1,7.394409e+1,1.387856e+2,2.098544e+2,2.505891e+2,2.554933e+2,2.445847e+2,
-    2.124190e+2,1.687167e+2,1.317569e+2,1.042289e+2,8.404509e+1,6.911577e+1,5.793269e+1,
-    4.945432e+1,4.295680e+1,3.792803e+1,3.399868e+1,3.089784e+1,2.842428e+1,2.642742e+1,
-    2.479430e+1,2.344031e+1,2.230232e+1,2.133341e+1,2.049880e+1,1.977269e+1,1.913579e+1,
-    1.857355e+1,1.807474e+1,1.763054e+1,1.723383e+1,1.687870e+1,1.656015e+1,1.627387e+1,
-    1.601607e+1,1.578341e+1,1.557289e+1,1.538185e+1,1.520789e+1,1.504885e+1,1.490281e+1,
-    1.476805e+1,1.464303e+1,1.452637e+1,1.441687e+1,1.431346e+1,1.421517e+1,1.412119e+1,
-    1.403079e+1,1.394334e+1,1.385828e+1,1.377515e+1,1.369354e+1,1.361311e+1,1.353357e+1,
-    1.345466e+1,1.337620e+1,1.329802e+1,1.321997e+1,1.314197e+1,1.306393e+1,1.298578e+1,
-    1.290750e+1,1.282905e+1,1.275042e+1,1.267163e+1,1.259268e+1,1.251358e+1,1.243438e+1,
-    1.235509e+1,1.227578e+1,1.219646e+1,1.211721e+1,1.203806e+1,1.195908e+1,1.188033e+1,
-    1.180186e+1,1.172374e+1,1.164603e+1,1.156881e+1,1.149216e+1,1.141614e+1,1.134083e+1,
-    1.126633e+1,1.119272e+1,1.112009e+1,1.104854e+1,1.097817e+1,1.090910e+1,1.084144e+1,
-    1.077532e+1,1.071087e+1,1.064824e+1,1.058758e+1,1.052905e+1,1.047282e+1,1.041909e+1};
-  static const G4double SL34[nL]={
-    2.555084e-2,6.311099e-2,1.584856e-1,4.897911e-1,1.636776e+0,5.116560e+0,1.430535e+1,
-    3.561279e+1,7.827264e+1,1.466546e+2,2.221104e+2,2.722029e+2,3.010875e+2,3.106231e+2,
-    2.658424e+2,2.035783e+2,1.541383e+2,1.188706e+2,9.384637e+1,7.582817e+1,6.263287e+1,
-    5.281838e+1,4.541822e+1,3.977013e+1,3.540993e+1,3.200563e+1,2.931600e+1,2.716381e+1,
-    2.541809e+1,2.398190e+1,2.278352e+1,2.177003e+1,2.090240e+1,2.015174e+1,1.949657e+1,
-    1.892070e+1,1.841172e+1,1.795992e+1,1.755750e+1,1.719807e+1,1.687624e+1,1.658741e+1,
-    1.632757e+1,1.609322e+1,1.588122e+1,1.568882e+1,1.551353e+1,1.535316e+1,1.520573e+1,
-    1.506950e+1,1.494290e+1,1.482456e+1,1.471325e+1,1.460789e+1,1.450755e+1,1.441139e+1,
-    1.431870e+1,1.422884e+1,1.414128e+1,1.405556e+1,1.397128e+1,1.388810e+1,1.380574e+1,
-    1.372397e+1,1.364260e+1,1.356147e+1,1.348045e+1,1.339945e+1,1.331839e+1,1.323723e+1,
-    1.315592e+1,1.307446e+1,1.299284e+1,1.291106e+1,1.282914e+1,1.274710e+1,1.266499e+1,
-    1.258282e+1,1.250066e+1,1.241854e+1,1.233652e+1,1.225466e+1,1.217300e+1,1.209162e+1,
-    1.201058e+1,1.192993e+1,1.184976e+1,1.177014e+1,1.169113e+1,1.161282e+1,1.153529e+1,
-    1.145863e+1,1.138292e+1,1.130827e+1,1.123477e+1,1.116254e+1,1.109168e+1,1.102231e+1,
-    1.095457e+1,1.088860e+1,1.082454e+1,1.076255e+1,1.070280e+1,1.064547e+1,1.059075e+1};
-  static const G4double SL35[nL]={
-    2.764032e-2,6.840683e-2,1.732180e-1,5.412140e-1,1.820749e+0,5.707551e+0,1.596471e+1,
-    3.965730e+1,8.650314e+1,1.589997e+2,2.314210e+2,2.624498e+2,2.501423e+2,2.222984e+2,
-    1.892896e+2,1.529510e+2,1.218148e+2,9.800381e+1,8.015642e+1,6.671593e+1,5.649992e+1,
-    4.866270e+1,4.259935e+1,3.787106e+1,3.415439e+1,3.120761e+1,2.884831e+1,2.693819e+1,
-    2.537244e+1,2.407192e+1,2.297720e+1,2.204394e+1,2.123915e+1,2.053827e+1,1.992295e+1,
-    1.937927e+1,1.889649e+1,1.846614e+1,1.808135e+1,1.773642e+1,1.742651e+1,1.714742e+1,
-    1.689546e+1,1.666738e+1,1.646026e+1,1.627150e+1,1.609875e+1,1.593994e+1,1.579319e+1,
-    1.565683e+1,1.552939e+1,1.540955e+1,1.529615e+1,1.518817e+1,1.508473e+1,1.498504e+1,
-    1.488843e+1,1.479431e+1,1.470218e+1,1.461162e+1,1.452226e+1,1.443381e+1,1.434600e+1,
-    1.425863e+1,1.417154e+1,1.408459e+1,1.399767e+1,1.391072e+1,1.382367e+1,1.373650e+1,
-    1.364917e+1,1.356169e+1,1.347407e+1,1.338633e+1,1.329848e+1,1.321057e+1,1.312263e+1,
-    1.303472e+1,1.294688e+1,1.285916e+1,1.277162e+1,1.268433e+1,1.259735e+1,1.251074e+1,
-    1.242457e+1,1.233891e+1,1.225383e+1,1.216942e+1,1.208575e+1,1.200290e+1,1.192096e+1,
-    1.184003e+1,1.176019e+1,1.168155e+1,1.160422e+1,1.152831e+1,1.145394e+1,1.138123e+1,
-    1.131034e+1,1.124140e+1,1.117458e+1,1.111003e+1,1.104795e+1,1.098853e+1,1.093197e+1};
-  static const G4double SL36[nL]={
-    2.908478e-2,7.207879e-2,1.835222e-1,5.774992e-1,1.951299e+0,6.129692e+0,1.716666e+1,
-    4.268370e+1,9.316524e+1,1.715413e+2,2.537232e+2,3.118305e+2,3.698348e+2,4.142092e+2,
-    3.599490e+2,2.689394e+2,1.969985e+2,1.471686e+2,1.129308e+2,8.901259e+1,7.196919e+1,
-    5.959877e+1,5.047252e+1,4.364148e+1,3.846005e+1,3.447932e+1,3.138128e+1,2.893751e+1,
-    2.698235e+1,2.539504e+1,2.408733e+1,2.299466e+1,2.206971e+1,2.127766e+1,2.059274e+1,
-    1.999559e+1,1.947149e+1,1.900901e+1,1.859907e+1,1.823428e+1,1.790856e+1,1.761673e+1,
-    1.735437e+1,1.711766e+1,1.690324e+1,1.670817e+1,1.652986e+1,1.636602e+1,1.621462e+1,
-    1.607388e+1,1.594222e+1,1.581828e+1,1.570083e+1,1.558882e+1,1.548134e+1,1.537759e+1,
-    1.527688e+1,1.517863e+1,1.508233e+1,1.498755e+1,1.489394e+1,1.480120e+1,1.470908e+1,
-    1.461738e+1,1.452595e+1,1.443465e+1,1.434339e+1,1.425209e+1,1.416072e+1,1.406924e+1,
-    1.397765e+1,1.388593e+1,1.379410e+1,1.370220e+1,1.361024e+1,1.351827e+1,1.342633e+1,
-    1.333447e+1,1.324275e+1,1.315122e+1,1.305994e+1,1.296897e+1,1.287838e+1,1.278824e+1,
-    1.269862e+1,1.260959e+1,1.252123e+1,1.243361e+1,1.234682e+1,1.226095e+1,1.217608e+1,
-    1.209230e+1,1.200973e+1,1.192845e+1,1.184859e+1,1.177025e+1,1.169358e+1,1.161869e+1,
-    1.154574e+1,1.147488e+1,1.140627e+1,1.134009e+1,1.127653e+1,1.121578e+1,1.115808e+1};
-  static const G4double SL37[nL]={
-    2.982256e-2,7.395762e-2,1.888215e-1,5.962481e-1,2.018837e+0,6.347438e+0,1.778020e+1,
-    4.418698e+1,9.625560e+1,1.763759e+2,2.587902e+2,3.153492e+2,3.717654e+2,4.152507e+2,
-    3.605764e+2,2.693717e+2,1.973299e+2,1.474418e+2,1.131676e+2,8.922544e+1,7.216593e+1,
-    5.978476e+1,5.065157e+1,4.381637e+1,3.863284e+1,3.465151e+1,3.155398e+1,2.911148e+1,
-    2.715812e+1,2.557296e+1,2.426760e+1,2.317735e+1,2.225483e+1,2.146515e+1,2.078248e+1,
-    2.018745e+1,1.966529e+1,1.920456e+1,1.879617e+1,1.843272e+1,1.810811e+1,1.781717e+1,
-    1.755549e+1,1.731924e+1,1.710506e+1,1.691002e+1,1.673154e+1,1.656733e+1,1.641538e+1,
-    1.627392e+1,1.614137e+1,1.601639e+1,1.589776e+1,1.578445e+1,1.567554e+1,1.557025e+1,
-    1.546791e+1,1.536794e+1,1.526984e+1,1.517321e+1,1.507768e+1,1.498297e+1,1.488885e+1,
-    1.479512e+1,1.470162e+1,1.460824e+1,1.451488e+1,1.442149e+1,1.432802e+1,1.423444e+1,
-    1.414075e+1,1.404695e+1,1.395306e+1,1.385910e+1,1.376512e+1,1.367114e+1,1.357723e+1,
-    1.348342e+1,1.338977e+1,1.329635e+1,1.320321e+1,1.311042e+1,1.301805e+1,1.292616e+1,
-    1.283483e+1,1.274413e+1,1.265413e+1,1.256493e+1,1.247660e+1,1.238923e+1,1.230290e+1,
-    1.221773e+1,1.213380e+1,1.205122e+1,1.197011e+1,1.189058e+1,1.181277e+1,1.173682e+1,
-    1.166286e+1,1.159105e+1,1.152158e+1,1.145460e+1,1.139033e+1,1.132895e+1,1.127071e+1};
-  static const G4double SL38[nL]={
-    3.019534e-2,7.490782e-2,1.915089e-1,6.057947e-1,2.053522e+0,6.462026e+0,1.812420e+1,
-    4.516020e+1,9.894848e+1,1.839628e+2,2.814112e+2,3.765563e+2,4.501148e+2,4.042364e+2,
-    3.029151e+2,2.212396e+2,1.647273e+2,1.259548e+2,9.887598e+1,7.956617e+1,6.553083e+1,
-    5.515881e+1,4.738384e+1,4.148198e+1,3.694970e+1,3.342931e+1,3.066239e+1,2.845999e+1,
-    2.668305e+1,2.522895e+1,2.402196e+1,2.300629e+1,2.214081e+1,2.139515e+1,2.074672e+1,
-    2.017852e+1,1.967755e+1,1.923363e+1,1.883866e+1,1.848598e+1,1.817002e+1,1.788607e+1,
-    1.763002e+1,1.739830e+1,1.718776e+1,1.699564e+1,1.681946e+1,1.665704e+1,1.650645e+1,
-    1.636599e+1,1.623415e+1,1.610960e+1,1.599119e+1,1.587790e+1,1.576885e+1,1.566328e+1,
-    1.556054e+1,1.546006e+1,1.536137e+1,1.526406e+1,1.516780e+1,1.507230e+1,1.497734e+1,
-    1.488273e+1,1.478833e+1,1.469401e+1,1.459971e+1,1.450534e+1,1.441089e+1,1.431633e+1,
-    1.422164e+1,1.412685e+1,1.403197e+1,1.393703e+1,1.384207e+1,1.374712e+1,1.365224e+1,
-    1.355748e+1,1.346290e+1,1.336855e+1,1.327450e+1,1.318081e+1,1.308756e+1,1.299481e+1,
-    1.290264e+1,1.281111e+1,1.272032e+1,1.263033e+1,1.254124e+1,1.245313e+1,1.236609e+1,
-    1.228022e+1,1.219562e+1,1.211239e+1,1.203067e+1,1.195055e+1,1.187219e+1,1.179570e+1,
-    1.172125e+1,1.164898e+1,1.157908e+1,1.151171e+1,1.144709e+1,1.138541e+1,1.132690e+1};
-  static const G4double SL39[nL]={
-    3.132934e-2,7.780169e-2,1.997199e-1,6.350103e-1,2.159047e+0,6.802554e+0,1.908355e+1,
-    4.750616e+1,1.037394e+2,1.913355e+2,2.887491e+2,3.778240e+2,4.291402e+2,3.695233e+2,
-    2.761193e+2,2.038392e+2,1.536530e+2,1.188331e+2,9.423086e+1,7.650062e+1,6.349328e+1,
-    5.380369e+1,4.649042e+1,4.090667e+1,3.659746e+1,3.323617e+1,3.058461e+1,2.846722e+1,
-    2.675392e+1,2.534816e+1,2.417843e+1,2.319185e+1,2.234937e+1,2.162211e+1,2.098852e+1,
-    2.043239e+1,1.994127e+1,1.950544e+1,1.911710e+1,1.876982e+1,1.845825e+1,1.817778e+1,
-    1.792446e+1,1.769479e+1,1.748570e+1,1.729449e+1,1.711874e+1,1.695632e+1,1.680535e+1,
-    1.666414e+1,1.653123e+1,1.640532e+1,1.628529e+1,1.617015e+1,1.605904e+1,1.595123e+1,
-    1.584607e+1,1.574304e+1,1.564166e+1,1.554157e+1,1.544242e+1,1.534396e+1,1.524598e+1,
-    1.514829e+1,1.505077e+1,1.495332e+1,1.485585e+1,1.475831e+1,1.466069e+1,1.456296e+1,
-    1.446512e+1,1.436719e+1,1.426920e+1,1.417118e+1,1.407316e+1,1.397520e+1,1.387735e+1,
-    1.377966e+1,1.368219e+1,1.358501e+1,1.348818e+1,1.339176e+1,1.329584e+1,1.320047e+1,
-    1.310574e+1,1.301172e+1,1.291849e+1,1.282613e+1,1.273474e+1,1.264439e+1,1.255519e+1,
-    1.246724e+1,1.238063e+1,1.229548e+1,1.221190e+1,1.213003e+1,1.204999e+1,1.197192e+1,
-    1.189599e+1,1.182235e+1,1.175118e+1,1.168267e+1,1.161701e+1,1.155444e+1,1.149517e+1};
-  static const G4double SL40[nL]={
-    3.209841e-2,7.976722e-2,2.053207e-1,6.550332e-1,2.231758e+0,7.040054e+0,1.977368e+1,
-    4.932232e+1,1.081304e+2,2.014268e+2,3.129604e+2,4.273335e+2,4.672288e+2,3.790370e+2,
-    2.780145e+2,2.044508e+2,1.540079e+2,1.191075e+2,9.446637e+1,7.671257e+1,6.368984e+1,
-    5.399013e+1,4.667044e+1,4.108296e+1,3.677199e+1,3.341039e+1,3.075957e+1,2.864366e+1,
-    2.693231e+1,2.552882e+1,2.436152e+1,2.337743e+1,2.253741e+1,2.181251e+1,2.118116e+1,
-    2.062710e+1,2.013787e+1,1.970371e+1,1.931682e+1,1.897076e+1,1.866018e+1,1.838048e+1,
-    1.812768e+1,1.789832e+1,1.768932e+1,1.749797e+1,1.732189e+1,1.715894e+1,1.700725e+1,
-    1.686515e+1,1.673120e+1,1.660410e+1,1.648274e+1,1.636614e+1,1.625346e+1,1.614398e+1,
-    1.603707e+1,1.593219e+1,1.582891e+1,1.572684e+1,1.562568e+1,1.552516e+1,1.542508e+1,
-    1.532528e+1,1.522563e+1,1.512602e+1,1.502639e+1,1.492671e+1,1.482693e+1,1.472705e+1,
-    1.462708e+1,1.452704e+1,1.442695e+1,1.432685e+1,1.422678e+1,1.412679e+1,1.402694e+1,
-    1.392729e+1,1.382789e+1,1.372881e+1,1.363012e+1,1.353188e+1,1.343417e+1,1.333705e+1,
-    1.324062e+1,1.314493e+1,1.305008e+1,1.295615e+1,1.286323e+1,1.277140e+1,1.268077e+1,
-    1.259142e+1,1.250348e+1,1.241705e+1,1.233226e+1,1.224922e+1,1.216807e+1,1.208897e+1,
-    1.201207e+1,1.193753e+1,1.186553e+1,1.179627e+1,1.172995e+1,1.166680e+1,1.160705e+1};
-  static const G4double SL41[nL]={
-    3.651675e-2,9.110302e-2,2.379739e-1,7.729064e-1,2.661008e+0,8.435802e+0,2.376201e+1,
-    5.938433e+1,1.302605e+2,2.436285e+2,3.917132e+2,5.585883e+2,5.737641e+2,4.370072e+2,
-    3.113977e+2,2.250866e+2,1.673725e+2,1.281023e+2,1.007441e+2,8.125622e+1,6.710300e+1,
-    5.665354e+1,4.882987e+1,4.290028e+1,3.835570e+1,3.483427e+1,3.207439e+1,2.988467e+1,
-    2.812414e+1,2.668871e+1,2.550153e+1,2.450594e+1,2.366020e+1,2.293344e+1,2.230273e+1,
-    2.175080e+1,2.126446e+1,2.083343e+1,2.044949e+1,2.010594e+1,1.979722e+1,1.951859e+1,
-    1.926597e+1,1.903585e+1,1.882512e+1,1.863109e+1,1.845136e+1,1.828384e+1,1.812670e+1,
-    1.797832e+1,1.783729e+1,1.770239e+1,1.757256e+1,1.744688e+1,1.732458e+1,1.720499e+1,
-    1.708753e+1,1.697174e+1,1.685722e+1,1.674365e+1,1.663076e+1,1.651834e+1,1.640623e+1,
-    1.629429e+1,1.618244e+1,1.607062e+1,1.595877e+1,1.584690e+1,1.573499e+1,1.562305e+1,
-    1.551112e+1,1.539924e+1,1.528743e+1,1.517577e+1,1.506429e+1,1.495307e+1,1.484216e+1,
-    1.473164e+1,1.462157e+1,1.451203e+1,1.440308e+1,1.429481e+1,1.418729e+1,1.408060e+1,
-    1.397483e+1,1.387005e+1,1.376636e+1,1.366384e+1,1.356258e+1,1.346270e+1,1.336429e+1,
-    1.326746e+1,1.317233e+1,1.307902e+1,1.298767e+1,1.289841e+1,1.281140e+1,1.272680e+1,
-    1.264478e+1,1.256554e+1,1.248927e+1,1.241619e+1,1.234653e+1,1.228054e+1,1.221850e+1};
-  static const G4double SL42[nL]={
-    3.967023e-2,9.923729e-2,2.617528e-1,8.598507e-1,2.978671e+0,9.461208e+0,2.661567e+1,
-    6.608688e+1,1.423929e+2,2.556972e+2,3.845421e+2,5.509335e+2,6.958427e+2,6.038492e+2,
-    4.319374e+2,3.026257e+2,2.171501e+2,1.607002e+2,1.225958e+2,9.625007e+1,7.763059e+1,
-    6.421712e+1,5.439270e+1,4.709187e+1,4.159468e+1,3.740346e+1,3.416762e+1,3.163650e+1,
-    2.962908e+1,2.801379e+1,2.669475e+1,2.560194e+1,2.468411e+1,2.390360e+1,2.323257e+1,
-    2.265018e+1,2.214060e+1,2.169159e+1,2.129351e+1,2.093858e+1,2.062040e+1,2.033365e+1,
-    2.007380e+1,1.983699e+1,1.961986e+1,1.941954e+1,1.923351e+1,1.905958e+1,1.889585e+1,
-    1.874067e+1,1.859262e+1,1.845046e+1,1.831315e+1,1.817977e+1,1.804956e+1,1.792188e+1,
-    1.779617e+1,1.767200e+1,1.754898e+1,1.742682e+1,1.730528e+1,1.718417e+1,1.706334e+1,
-    1.694269e+1,1.682214e+1,1.670165e+1,1.658119e+1,1.646076e+1,1.634038e+1,1.622006e+1,
-    1.609985e+1,1.597979e+1,1.585993e+1,1.574033e+1,1.562106e+1,1.550217e+1,1.538375e+1,
-    1.526585e+1,1.514856e+1,1.503195e+1,1.491609e+1,1.480108e+1,1.468698e+1,1.457387e+1,
-    1.446186e+1,1.435101e+1,1.424143e+1,1.413321e+1,1.402645e+1,1.392125e+1,1.381771e+1,
-    1.371597e+1,1.361614e+1,1.351835e+1,1.342275e+1,1.332949e+1,1.323872e+1,1.315063e+1,
-    1.306540e+1,1.298324e+1,1.290436e+1,1.282900e+1,1.275740e+1,1.268985e+1,1.262663e+1};
-  static const G4double SL43[nL]={
-    4.090181e-2,1.024236e-1,2.711450e-1,8.945313e-1,3.107339e+0,9.893526e+0,2.794798e+1,
-    7.002434e+1,1.540039e+2,2.909962e+2,4.857228e+2,6.871085e+2,6.405347e+2,4.648476e+2,
-    3.262939e+2,2.342891e+2,1.734786e+2,1.323680e+2,1.038662e+2,8.364716e+1,6.901712e+1,
-    5.825243e+1,5.021882e+1,4.414930e+1,3.951210e+1,3.593043e+1,3.313262e+1,3.092037e+1,
-    2.914791e+1,2.770777e+1,2.652069e+1,2.552830e+1,2.468759e+1,2.396683e+1,2.334242e+1,
-    2.279664e+1,2.231596e+1,2.188986e+1,2.150996e+1,2.116947e+1,2.086272e+1,2.058497e+1,
-    2.033214e+1,2.010070e+1,1.988760e+1,1.969016e+1,1.950605e+1,1.933324e+1,1.916994e+1,
-    1.901461e+1,1.886590e+1,1.872267e+1,1.858390e+1,1.844877e+1,1.831654e+1,1.818660e+1,
-    1.805846e+1,1.793169e+1,1.780594e+1,1.768095e+1,1.755648e+1,1.743238e+1,1.730850e+1,
-    1.718477e+1,1.706112e+1,1.693751e+1,1.681394e+1,1.669040e+1,1.656692e+1,1.644353e+1,
-    1.632027e+1,1.619719e+1,1.607435e+1,1.595181e+1,1.582965e+1,1.570791e+1,1.558669e+1,
-    1.546605e+1,1.534607e+1,1.522683e+1,1.510840e+1,1.499087e+1,1.487432e+1,1.475882e+1,
-    1.464448e+1,1.453138e+1,1.441961e+1,1.430927e+1,1.420046e+1,1.409328e+1,1.398785e+1,
-    1.388429e+1,1.378272e+1,1.368328e+1,1.358612e+1,1.349139e+1,1.339925e+1,1.330989e+1,
-    1.322351e+1,1.314030e+1,1.306050e+1,1.298434e+1,1.291209e+1,1.284402e+1,1.278043e+1};
-  static const G4double SL44[nL]={
-    4.170472e-2,1.045035e-1,2.772928e-1,9.171279e-1,3.188391e+0,1.013541e+1,2.846282e+1,
-    7.022927e+1,1.487823e+2,2.562178e+2,3.490445e+2,4.157065e+2,4.491619e+2,3.805077e+2,
-    2.830064e+2,2.087710e+2,1.575446e+2,1.221104e+2,9.711794e+1,7.913014e+1,6.595149e+1,
-    5.615029e+1,4.876829e+1,4.314714e+1,3.882350e+1,3.546449e+1,3.282708e+1,3.073199e+1,
-    2.904621e+1,2.767098e+1,2.653307e+1,2.557832e+1,2.476670e+1,2.406860e+1,2.346198e+1,
-    2.293024e+1,2.246069e+1,2.204342e+1,2.167052e+1,2.133555e+1,2.103313e+1,2.075871e+1,
-    2.050838e+1,2.027875e+1,2.006688e+1,1.987017e+1,1.968637e+1,1.951349e+1,1.934981e+1,
-    1.919382e+1,1.904422e+1,1.889988e+1,1.875984e+1,1.862328e+1,1.848949e+1,1.835789e+1,
-    1.822798e+1,1.809938e+1,1.797173e+1,1.784478e+1,1.771833e+1,1.759220e+1,1.746629e+1,
-    1.734050e+1,1.721479e+1,1.708912e+1,1.696349e+1,1.683791e+1,1.671240e+1,1.658700e+1,
-    1.646175e+1,1.633671e+1,1.621193e+1,1.608749e+1,1.596344e+1,1.583986e+1,1.571683e+1,
-    1.559442e+1,1.547270e+1,1.535176e+1,1.523167e+1,1.511252e+1,1.499439e+1,1.487736e+1,
-    1.476153e+1,1.464698e+1,1.453380e+1,1.442210e+1,1.431197e+1,1.420353e+1,1.409689e+1,
-    1.399216e+1,1.388949e+1,1.378900e+1,1.369084e+1,1.359517e+1,1.350217e+1,1.341201e+1,
-    1.332489e+1,1.324103e+1,1.316065e+1,1.308400e+1,1.301134e+1,1.294296e+1,1.287917e+1};
-  static const G4double SL45[nL]={
-    5.274378e-2,1.333110e-1,3.641511e-1,1.243435e+0,4.396136e+0,1.406245e+1,3.947630e+1,
-    9.639532e+1,1.976332e+2,3.177821e+2,3.939795e+2,4.252091e+2,4.177958e+2,3.393139e+2,
-    2.539062e+2,1.908284e+2,1.468253e+2,1.158554e+2,9.364418e+1,7.742461e+1,6.539740e+1,
-    5.636581e+1,4.951281e+1,4.426627e+1,4.021621e+1,3.706322e+1,3.458554e+1,3.261752e+1,
-    3.103504e+1,2.974522e+1,2.867873e+1,2.778411e+1,2.702322e+1,2.636780e+1,2.579681e+1,
-    2.529440e+1,2.484848e+1,2.444965e+1,2.409041e+1,2.376468e+1,2.346741e+1,2.319435e+1,
-    2.294188e+1,2.270688e+1,2.248667e+1,2.227890e+1,2.208156e+1,2.189291e+1,2.171143e+1,
-    2.153584e+1,2.136504e+1,2.119811e+1,2.103426e+1,2.087283e+1,2.071330e+1,2.055522e+1,
-    2.039825e+1,2.024210e+1,2.008657e+1,1.993150e+1,1.977677e+1,1.962233e+1,1.946811e+1,
-    1.931412e+1,1.916036e+1,1.900686e+1,1.885366e+1,1.870082e+1,1.854839e+1,1.839645e+1,
-    1.824507e+1,1.809433e+1,1.794431e+1,1.779509e+1,1.764676e+1,1.749940e+1,1.735310e+1,
-    1.720795e+1,1.706403e+1,1.692142e+1,1.678022e+1,1.664052e+1,1.650241e+1,1.636599e+1,
-    1.623135e+1,1.609859e+1,1.596783e+1,1.583917e+1,1.571273e+1,1.558865e+1,1.546706e+1,
-    1.534810e+1,1.523193e+1,1.511872e+1,1.500865e+1,1.490192e+1,1.479874e+1,1.469935e+1,
-    1.460399e+1,1.451294e+1,1.442648e+1,1.434493e+1,1.426862e+1,1.419792e+1,1.413321e+1};
-  static const G4double SL46[nL]={
-    5.429151e-2,1.373796e-1,3.766506e-1,1.291127e+0,4.573808e+0,1.464102e+1,4.109390e+1,
-    1.001858e+2,2.044221e+2,3.254972e+2,3.979352e+2,4.222069e+2,4.093963e+2,3.318361e+2,
-    2.490584e+2,1.878782e+2,1.450486e+2,1.147964e+2,9.303167e+1,7.709613e+1,6.525408e+1,
-    5.634628e+1,4.957827e+1,4.439170e+1,4.038515e+1,3.726461e+1,3.481177e+1,3.286321e+1,
-    3.129630e+1,3.001910e+1,2.896297e+1,2.807689e+1,2.732305e+1,2.667342e+1,2.610713e+1,
-    2.560848e+1,2.516547e+1,2.476879e+1,2.441101e+1,2.408612e+1,2.378911e+1,2.351580e+1,
-    2.326261e+1,2.302646e+1,2.280470e+1,2.259503e+1,2.239548e+1,2.220433e+1,2.202011e+1,
-    2.184156e+1,2.166762e+1,2.149737e+1,2.133007e+1,2.116508e+1,2.100189e+1,2.084008e+1,
-    2.067932e+1,2.051935e+1,2.035997e+1,2.020104e+1,2.004246e+1,1.988416e+1,1.972612e+1,
-    1.956833e+1,1.941080e+1,1.925358e+1,1.909671e+1,1.894024e+1,1.878425e+1,1.862880e+1,
-    1.847398e+1,1.831986e+1,1.816653e+1,1.801408e+1,1.786258e+1,1.771212e+1,1.756280e+1,
-    1.741470e+1,1.726790e+1,1.712250e+1,1.697859e+1,1.683625e+1,1.669557e+1,1.655667e+1,
-    1.641963e+1,1.628456e+1,1.615157e+1,1.602077e+1,1.589228e+1,1.576624e+1,1.564279e+1,
-    1.552206e+1,1.540424e+1,1.528948e+1,1.517797e+1,1.506993e+1,1.496557e+1,1.486512e+1,
-    1.476885e+1,1.467703e+1,1.458997e+1,1.450798e+1,1.443142e+1,1.436066e+1,1.429608e+1};
-  static const G4double SL47[nL]={
-    5.586443e-2,1.415214e-1,3.894297e-1,1.340049e+0,4.756205e+0,1.523387e+1,4.273995e+1,
-    1.039652e+2,2.107611e+2,3.306660e+2,3.922061e+2,3.966237e+2,4.015659e+2,3.735019e+2,
-    2.931095e+2,2.186308e+2,1.651709e+2,1.280396e+2,1.019243e+2,8.320469e+1,6.954857e+1,
-    5.943717e+1,5.185713e+1,4.611438e+1,4.172171e+1,3.832984e+1,3.568426e+1,3.359747e+1,
-    3.193051e+1,3.058030e+1,2.947046e+1,2.854456e+1,2.776093e+1,2.708881e+1,2.650532e+1,
-    2.599335e+1,2.553984e+1,2.513469e+1,2.476993e+1,2.443910e+1,2.413690e+1,2.385890e+1,
-    2.360137e+1,2.336109e+1,2.313534e+1,2.292175e+1,2.271830e+1,2.252324e+1,2.233509e+1,
-    2.215258e+1,2.197463e+1,2.180035e+1,2.162898e+1,2.145990e+1,2.129261e+1,2.112668e+1,
-    2.096180e+1,2.079771e+1,2.063423e+1,2.047122e+1,2.030859e+1,2.014627e+1,1.998426e+1,
-    1.982254e+1,1.966115e+1,1.950011e+1,1.933948e+1,1.917932e+1,1.901970e+1,1.886070e+1,
-    1.870239e+1,1.854486e+1,1.838819e+1,1.823247e+1,1.807778e+1,1.792421e+1,1.777185e+1,
-    1.762079e+1,1.747111e+1,1.732291e+1,1.717627e+1,1.703129e+1,1.688806e+1,1.674668e+1,
-    1.660725e+1,1.646987e+1,1.633466e+1,1.620173e+1,1.607120e+1,1.594322e+1,1.581792e+1,
-    1.569546e+1,1.557599e+1,1.545971e+1,1.534680e+1,1.523747e+1,1.513195e+1,1.503048e+1,
-    1.493334e+1,1.484080e+1,1.475318e+1,1.467081e+1,1.459405e+1,1.452327e+1,1.445890e+1};
-  static const G4double SL48[nL]={
-    5.639434e-2,1.429184e-1,3.937524e-1,1.356644e+0,4.818271e+0,1.543710e+1,4.331539e+1,
-    1.053565e+2,2.134958e+2,3.351211e+2,4.008312e+2,4.175491e+2,4.294249e+2,3.789784e+2,
-    2.880226e+2,2.137731e+2,1.618452e+2,1.258669e+2,1.005048e+2,8.227129e+1,6.893285e+1,
-    5.903288e+1,5.159623e+1,4.595252e+1,4.162949e+1,3.828743e+1,3.567806e+1,3.361799e+1,
-    3.197104e+1,3.063601e+1,2.953782e+1,2.862094e+1,2.784434e+1,2.717773e+1,2.659856e+1,
-    2.608997e+1,2.563908e+1,2.523594e+1,2.487267e+1,2.454291e+1,2.424142e+1,2.396383e+1,
-    2.370644e+1,2.346608e+1,2.324005e+1,2.302601e+1,2.282197e+1,2.262619e+1,2.243721e+1,
-    2.225378e+1,2.207484e+1,2.189950e+1,2.172701e+1,2.155676e+1,2.138826e+1,2.122110e+1,
-    2.105496e+1,2.088961e+1,2.072484e+1,2.056055e+1,2.039663e+1,2.023303e+1,2.006974e+1,
-    1.990676e+1,1.974411e+1,1.958183e+1,1.941998e+1,1.925861e+1,1.909781e+1,1.893764e+1,
-    1.877819e+1,1.861953e+1,1.846176e+1,1.830496e+1,1.814922e+1,1.799463e+1,1.784127e+1,
-    1.768923e+1,1.753860e+1,1.738947e+1,1.724194e+1,1.709608e+1,1.695201e+1,1.680981e+1,
-    1.666958e+1,1.653144e+1,1.639550e+1,1.626187e+1,1.613067e+1,1.600205e+1,1.587614e+1,
-    1.575310e+1,1.563310e+1,1.551631e+1,1.540294e+1,1.529319e+1,1.518730e+1,1.508550e+1,
-    1.498808e+1,1.489531e+1,1.480751e+1,1.472502e+1,1.464821e+1,1.457745e+1,1.451316e+1};
-  static const G4double SH0[nH]={
-    1.718841e-5,1.912141e-5,2.128656e-5,2.372770e-5,2.651339e-5,2.976162e-5,3.369201e-5,
-    3.873597e-5,4.577051e-5,5.661516e-5,7.508997e-5,1.092699e-4,1.762839e-4,3.124886e-4,
-    5.948094e-4,1.184449e-3,2.411855e-3,4.923726e-3,9.871386e-3,1.894320e-2,3.373152e-2,
-    5.419455e-2,7.777948e-2,1.011811e-1,1.227807e-1,1.428966e-1,1.626818e-1,1.833195e-1,
-    2.057743e-1,2.307930e-1,2.589428e-1,2.906090e-1,3.259289e-1,3.646554e-1,4.059556e-1,
-    4.481828e-1,4.887166e-1,5.240358e-1,5.501959e-1,5.637401e-1,5.627614e-1,5.475832e-1,
-    5.206446e-1,4.856647e-1,4.465759e-1,4.067172e-1,3.684796e-1,3.333189e-1,3.019524e-1,
-    2.745971e-1,2.511726e-1,2.314485e-1,2.151395e-1,2.019637e-1,1.916740e-1,1.840748e-1,
-    1.790291e-1,1.764601e-1,1.763488e-1,1.787259e-1,1.836564e-1,1.912090e-1,2.014025e-1,
-    2.141163e-1,2.289594e-1,2.451064e-1,2.611598e-1,2.751583e-1,2.848795e-1,2.884723e-1,
-    2.851743e-1,2.756664e-1,2.618121e-1,2.459864e-1,2.304469e-1,2.170242e-1,2.071089e-1,
-    2.017331e-1,2.014838e-1,2.059886e-1,2.130499e-1,2.185478e-1,2.186039e-1,2.124513e-1,
-    2.023557e-1,1.911989e-1,1.808918e-1,1.722630e-1,1.654744e-1,1.603770e-1,1.567046e-1,
-    1.541608e-1,1.524546e-1,1.513189e-1,1.505256e-1,1.498980e-1,1.493175e-1,1.487199e-1,
-    1.480828e-1,1.474096e-1,1.467148e-1,1.460147e-1,1.453221e-1,1.446452e-1,1.439881e-1,
-    1.433514e-1,1.427339e-1,1.421336e-1,1.415477e-1,1.409739e-1,1.404099e-1,1.398539e-1,
-    1.393046e-1,1.387609e-1,1.382221e-1,1.376879e-1,1.371581e-1,1.366326e-1,1.361116e-1,
-    1.355952e-1,1.350837e-1,1.345775e-1,1.340767e-1,1.335816e-1,1.330926e-1,1.326099e-1,
-    1.321338e-1,1.316644e-1,1.312019e-1,1.307465e-1,1.302983e-1,1.298574e-1,1.294239e-1,
-    1.289978e-1,1.285792e-1,1.281681e-1,1.277645e-1,1.273684e-1,1.269797e-1,1.265984e-1,
-    1.262246e-1,1.258580e-1,1.254987e-1,1.251465e-1,1.248015e-1,1.244635e-1,1.241324e-1,
-    1.238082e-1,1.234908e-1,1.231801e-1,1.228760e-1,1.225784e-1,1.222872e-1,1.220024e-1,
-    1.217239e-1,1.214515e-1,1.211852e-1,1.209249e-1,1.206706e-1,1.204221e-1,1.201793e-1,
-    1.199423e-1,1.197109e-1,1.194850e-1,1.192646e-1,1.190497e-1,1.188400e-1,1.186357e-1,
-    1.184365e-1,1.182425e-1,1.180536e-1,1.178697e-1,1.176908e-1,1.175169e-1,1.173477e-1,
-    1.171834e-1,1.170239e-1,1.168690e-1,1.167189e-1,1.165733e-1,1.164323e-1,1.162959e-1,
-    1.161639e-1,1.160364e-1,1.159132e-1,1.157944e-1,1.156800e-1,1.155698e-1,1.154639e-1,
-    1.153622e-1,1.152646e-1,1.151712e-1,1.150819e-1,1.149967e-1,1.149155e-1,1.148384e-1,
-    1.147652e-1,1.146960e-1,1.146307e-1,1.145693e-1,1.145118e-1,1.144581e-1,1.144082e-1,
-    1.143621e-1,1.143198e-1,1.142812e-1,1.142464e-1,1.142152e-1,1.141877e-1,1.141639e-1,
-    1.141437e-1,1.141271e-1,1.141140e-1,1.141046e-1,1.140986e-1,1.140962e-1,1.140973e-1,
-    1.141019e-1,1.141099e-1,1.141214e-1,1.141363e-1,1.141546e-1,1.141763e-1,1.142013e-1};
-  static const G4double SH1[nH]={
-    6.668702e-2,6.471599e-2,6.280838e-2,6.096276e-2,5.917858e-2,5.745696e-2,5.580253e-2,
-    5.422715e-2,5.275790e-2,5.145368e-2,5.043968e-2,4.997674e-2,5.059345e-2,5.330701e-2,
-    5.988460e-2,7.281273e-2,9.420106e-2,1.234283e-1,1.561378e-1,1.872520e-1,2.145181e-1,
-    2.385444e-1,2.610207e-1,2.835546e-1,3.073666e-1,3.333473e-1,3.621748e-1,3.943976e-1,
-    4.304707e-1,4.707493e-1,5.154414e-1,5.645200e-1,6.175936e-1,6.737415e-1,7.313391e-1,
-    7.879273e-1,8.402160e-1,8.843244e-1,9.163187e-1,9.329844e-1,9.326046e-1,9.154272e-1,
-    8.836029e-1,8.406235e-1,7.905189e-1,7.371246e-1,6.836113e-1,6.323070e-1,5.847347e-1,
-    5.417618e-1,5.037798e-1,4.708677e-1,4.429213e-1,4.197458e-1,4.011180e-1,3.868245e-1,
-    3.766827e-1,3.705478e-1,3.683091e-1,3.698743e-1,3.751405e-1,3.839482e-1,3.960151e-1,
-    4.108509e-1,4.276609e-1,4.452665e-1,4.620878e-1,4.762505e-1,4.858563e-1,4.893850e-1,
-    4.860977e-1,4.762589e-1,4.610644e-1,4.423195e-1,4.220327e-1,4.020934e-1,3.841080e-1,
-    3.693549e-1,3.587356e-1,3.525376e-1,3.499160e-1,3.485284e-1,3.454232e-1,3.391105e-1,
-    3.303977e-1,3.210857e-1,3.125479e-1,3.053688e-1,2.995858e-1,2.949875e-1,2.913061e-1,
-    2.883070e-1,2.858170e-1,2.837185e-1,2.819325e-1,2.804025e-1,2.790830e-1,2.779344e-1,
-    2.769203e-1,2.760078e-1,2.751677e-1,2.743752e-1,2.736094e-1,2.728539e-1,2.720958e-1,
-    2.713259e-1,2.705376e-1,2.697270e-1,2.688919e-1,2.680317e-1,2.671470e-1,2.662393e-1,
-    2.653104e-1,2.643629e-1,2.633994e-1,2.624226e-1,2.614353e-1,2.604402e-1,2.594400e-1,
-    2.584370e-1,2.574337e-1,2.564319e-1,2.554338e-1,2.544410e-1,2.534551e-1,2.524775e-1,
-    2.515094e-1,2.505518e-1,2.496056e-1,2.486718e-1,2.477508e-1,2.468434e-1,2.459499e-1,
-    2.450708e-1,2.442063e-1,2.433567e-1,2.425221e-1,2.417026e-1,2.408984e-1,2.401094e-1,
-    2.393357e-1,2.385771e-1,2.378336e-1,2.371052e-1,2.363916e-1,2.356928e-1,2.350087e-1,
-    2.343390e-1,2.336837e-1,2.330425e-1,2.324153e-1,2.318018e-1,2.312020e-1,2.306156e-1,
-    2.300425e-1,2.294824e-1,2.289352e-1,2.284007e-1,2.278786e-1,2.273690e-1,2.268715e-1,
-    2.263859e-1,2.259122e-1,2.254502e-1,2.249996e-1,2.245604e-1,2.241323e-1,2.237153e-1,
-    2.233091e-1,2.229137e-1,2.225289e-1,2.221545e-1,2.217905e-1,2.214366e-1,2.210928e-1,
-    2.207590e-1,2.204350e-1,2.201206e-1,2.198159e-1,2.195207e-1,2.192348e-1,2.189582e-1,
-    2.186908e-1,2.184324e-1,2.181831e-1,2.179426e-1,2.177109e-1,2.174878e-1,2.172735e-1,
-    2.170676e-1,2.168702e-1,2.166812e-1,2.165004e-1,2.163279e-1,2.161635e-1,2.160072e-1,
-    2.158589e-1,2.157185e-1,2.155860e-1,2.154613e-1,2.153443e-1,2.152351e-1,2.151334e-1,
-    2.150393e-1,2.149526e-1,2.148734e-1,2.148017e-1,2.147372e-1,2.146800e-1,2.146301e-1,
-    2.145873e-1,2.145516e-1,2.145230e-1,2.145015e-1,2.144869e-1,2.144793e-1,2.144786e-1,
-    2.144847e-1,2.144976e-1,2.145173e-1,2.145437e-1,2.145768e-1,2.146166e-1,2.146629e-1};
-  static const G4double SH2[nH]={
-    1.542383e-1,1.519749e-1,1.500571e-1,1.485008e-1,1.473380e-1,1.466231e-1,1.464406e-1,
-    1.469146e-1,1.482202e-1,1.505946e-1,1.543461e-1,1.598551e-1,1.675614e-1,1.779302e-1,
-    1.913930e-1,2.082703e-1,2.286959e-1,2.525746e-1,2.795999e-1,3.093368e-1,3.413423e-1,
-    3.752810e-1,4.110019e-1,4.485617e-1,4.882066e-1,5.303277e-1,5.754066e-1,6.239567e-1,
-    6.764587e-1,7.332866e-1,7.946123e-1,8.602851e-1,9.296820e-1,1.001541e+0,1.073807e+0,
-    1.143552e+0,1.207044e+0,1.260057e+0,1.298438e+0,1.318861e+0,1.319550e+0,1.300718e+0,
-    1.264525e+0,1.214592e+0,1.155254e+0,1.090830e+0,1.025091e+0,9.610003e-1,9.006681e-1,
-    8.454562e-1,7.961371e-1,7.530613e-1,7.163006e-1,6.857589e-1,6.612494e-1,6.425427e-1,
-    6.293909e-1,6.215310e-1,6.186705e-1,6.204555e-1,6.264246e-1,6.359503e-1,6.481772e-1,
-    6.619737e-1,6.759222e-1,6.883771e-1,6.976142e-1,7.020655e-1,7.005923e-1,6.927105e-1,
-    6.786831e-1,6.594410e-1,6.363628e-1,6.109982e-1,5.848221e-1,5.590708e-1,5.346711e-1,
-    5.122400e-1,4.921277e-1,4.744756e-1,4.592744e-1,4.464140e-1,4.357218e-1,4.269910e-1,
-    4.199996e-1,4.145245e-1,4.103489e-1,4.072685e-1,4.050942e-1,4.036540e-1,4.027937e-1,
-    4.023771e-1,4.022854e-1,4.024166e-1,4.026846e-1,4.030181e-1,4.033588e-1,4.036607e-1,
-    4.038884e-1,4.040156e-1,4.040242e-1,4.039024e-1,4.036443e-1,4.032483e-1,4.027164e-1,
-    4.020532e-1,4.012654e-1,4.003614e-1,3.993501e-1,3.982412e-1,3.970447e-1,3.957703e-1,
-    3.944278e-1,3.930263e-1,3.915747e-1,3.900812e-1,3.885536e-1,3.869989e-1,3.854235e-1,
-    3.838335e-1,3.822342e-1,3.806303e-1,3.790262e-1,3.774257e-1,3.758321e-1,3.742484e-1,
-    3.726773e-1,3.711210e-1,3.695814e-1,3.680602e-1,3.665588e-1,3.650785e-1,3.636202e-1,
-    3.621847e-1,3.607727e-1,3.593848e-1,3.580212e-1,3.566824e-1,3.553685e-1,3.540796e-1,
-    3.528157e-1,3.515768e-1,3.503629e-1,3.491738e-1,3.480093e-1,3.468693e-1,3.457535e-1,
-    3.446616e-1,3.435935e-1,3.425488e-1,3.415272e-1,3.405285e-1,3.395522e-1,3.385982e-1,
-    3.376660e-1,3.367553e-1,3.358660e-1,3.349975e-1,3.341496e-1,3.333220e-1,3.325144e-1,
-    3.317265e-1,3.309579e-1,3.302084e-1,3.294778e-1,3.287656e-1,3.280716e-1,3.273956e-1,
-    3.267373e-1,3.260964e-1,3.254728e-1,3.248660e-1,3.242759e-1,3.237024e-1,3.231450e-1,
-    3.226036e-1,3.220781e-1,3.215681e-1,3.210735e-1,3.205941e-1,3.201297e-1,3.196801e-1,
-    3.192451e-1,3.188245e-1,3.184182e-1,3.180260e-1,3.176477e-1,3.172832e-1,3.169323e-1,
-    3.165949e-1,3.162708e-1,3.159598e-1,3.156619e-1,3.153769e-1,3.151046e-1,3.148449e-1,
-    3.145978e-1,3.143631e-1,3.141406e-1,3.139302e-1,3.137319e-1,3.135455e-1,3.133709e-1,
-    3.132080e-1,3.130567e-1,3.129170e-1,3.127886e-1,3.126715e-1,3.125656e-1,3.124708e-1,
-    3.123871e-1,3.123143e-1,3.122524e-1,3.122012e-1,3.121607e-1,3.121308e-1,3.121115e-1,
-    3.121025e-1,3.121040e-1,3.121157e-1,3.121377e-1,3.121699e-1,3.122121e-1,3.122643e-1};
-  static const G4double SH3[nH]={
-    2.629521e-1,2.526203e-1,2.431577e-1,2.345868e-1,2.269548e-1,2.203418e-1,2.148720e-1,
-    2.107267e-1,2.081600e-1,2.075143e-1,2.092319e-1,2.138553e-1,2.220073e-1,2.343402e-1,
-    2.514498e-1,2.737640e-1,3.014354e-1,3.342839e-1,3.718253e-1,4.133919e-1,4.583047e-1,
-    5.060360e-1,5.563139e-1,6.091512e-1,6.648144e-1,7.237579e-1,7.865441e-1,8.537601e-1,
-    9.259290e-1,1.003412e+0,1.086287e+0,1.174207e+0,1.266226e+0,1.360618e+0,1.454730e+0,
-    1.544923e+0,1.626692e+0,1.695047e+0,1.745152e+0,1.773146e+0,1.776925e+0,1.756615e+0,
-    1.714557e+0,1.654820e+0,1.582408e+0,1.502458e+0,1.419603e+0,1.337617e+0,1.259313e+0,
-    1.186603e+0,1.120659e+0,1.062094e+0,1.011127e+0,9.677216e-1,9.316827e-1,9.027247e-1,
-    8.805089e-1,8.646577e-1,8.547494e-1,8.502958e-1,8.507072e-1,8.552495e-1,8.630006e-1,
-    8.728198e-1,8.833474e-1,8.930526e-1,9.003428e-1,9.037330e-1,9.020462e-1,8.945963e-1,
-    8.812964e-1,8.626545e-1,8.396586e-1,8.135868e-1,7.858018e-1,7.575779e-1,7.299877e-1,
-    7.038504e-1,6.797291e-1,6.579596e-1,6.386918e-1,6.219342e-1,6.075947e-1,5.955137e-1,
-    5.854904e-1,5.773026e-1,5.707205e-1,5.655170e-1,5.614749e-1,5.583909e-1,5.560792e-1,
-    5.543723e-1,5.531226e-1,5.522016e-1,5.514995e-1,5.509243e-1,5.504007e-1,5.498680e-1,
-    5.492791e-1,5.485986e-1,5.478012e-1,5.468703e-1,5.457963e-1,5.445754e-1,5.432087e-1,
-    5.417006e-1,5.400585e-1,5.382913e-1,5.364098e-1,5.344250e-1,5.323486e-1,5.301922e-1,
-    5.279674e-1,5.256850e-1,5.233556e-1,5.209890e-1,5.185943e-1,5.161800e-1,5.137537e-1,
-    5.113224e-1,5.088925e-1,5.064694e-1,5.040582e-1,5.016634e-1,4.992887e-1,4.969376e-1,
-    4.946129e-1,4.923172e-1,4.900525e-1,4.878208e-1,4.856233e-1,4.834613e-1,4.813359e-1,
-    4.792477e-1,4.771973e-1,4.751850e-1,4.732112e-1,4.712759e-1,4.693792e-1,4.675209e-1,
-    4.657009e-1,4.639189e-1,4.621746e-1,4.604677e-1,4.587977e-1,4.571643e-1,4.555669e-1,
-    4.540052e-1,4.524784e-1,4.509863e-1,4.495282e-1,4.481036e-1,4.467119e-1,4.453527e-1,
-    4.440254e-1,4.427295e-1,4.414644e-1,4.402296e-1,4.390246e-1,4.378489e-1,4.367021e-1,
-    4.355835e-1,4.344928e-1,4.334295e-1,4.323931e-1,4.313831e-1,4.303992e-1,4.294410e-1,
-    4.285079e-1,4.275996e-1,4.267157e-1,4.258558e-1,4.250196e-1,4.242067e-1,4.234167e-1,
-    4.226493e-1,4.219041e-1,4.211809e-1,4.204793e-1,4.197990e-1,4.191397e-1,4.185012e-1,
-    4.178831e-1,4.172851e-1,4.167071e-1,4.161487e-1,4.156098e-1,4.150899e-1,4.145890e-1,
-    4.141068e-1,4.136430e-1,4.131974e-1,4.127699e-1,4.123602e-1,4.119681e-1,4.115935e-1,
-    4.112360e-1,4.108956e-1,4.105721e-1,4.102652e-1,4.099749e-1,4.097009e-1,4.094431e-1,
-    4.092013e-1,4.089753e-1,4.087651e-1,4.085704e-1,4.083912e-1,4.082272e-1,4.080784e-1,
-    4.079445e-1,4.078256e-1,4.077213e-1,4.076317e-1,4.075566e-1,4.074959e-1,4.074494e-1,
-    4.074170e-1,4.073987e-1,4.073943e-1,4.074037e-1,4.074268e-1,4.074635e-1,4.075137e-1};
-  static const G4double SH4[nH]={
-    7.405778e-2,7.529642e-2,7.695159e-2,7.911585e-2,8.191973e-2,8.554566e-2,9.024590e-2,
-    9.636447e-2,1.043620e-1,1.148402e-1,1.285589e-1,1.464340e-1,1.695011e-1,1.988282e-1,
-    2.353712e-1,2.797917e-1,3.322864e-1,3.925018e-1,4.595934e-1,5.324297e-1,6.098729e-1,
-    6.910366e-1,7.754430e-1,8.630582e-1,9.542326e-1,1.049589e+0,1.149890e+0,1.255911e+0,
-    1.368302e+0,1.487447e+0,1.613306e+0,1.745230e+0,1.881750e+0,2.020382e+0,2.157473e+0,
-    2.288176e+0,2.406638e+0,2.506475e+0,2.581539e+0,2.626868e+0,2.639586e+0,2.619491e+0,
-    2.569112e+0,2.493232e+0,2.398030e+0,2.290122e+0,2.175753e+0,2.060259e+0,1.947831e+0,
-    1.841504e+0,1.743297e+0,1.654408e+0,1.575420e+0,1.506477e+0,1.447431e+0,1.397940e+0,
-    1.357542e+0,1.325684e+0,1.301743e+0,1.285014e+0,1.274698e+0,1.269869e+0,1.269456e+0,
-    1.272221e+0,1.276770e+0,1.281590e+0,1.285130e+0,1.285911e+0,1.282675e+0,1.274519e+0,
-    1.260999e+0,1.242178e+0,1.218585e+0,1.191121e+0,1.160911e+0,1.129160e+0,1.097017e+0,
-    1.065486e+0,1.035376e+0,1.007278e+0,9.815797e-1,9.584915e-1,9.380753e-1,9.202798e-1,
-    9.049702e-1,8.919552e-1,8.810082e-1,8.718847e-1,8.643355e-1,8.581166e-1,8.529964e-1,
-    8.487605e-1,8.452151e-1,8.421882e-1,8.395306e-1,8.371154e-1,8.348367e-1,8.326085e-1,
-    8.303629e-1,8.280477e-1,8.256249e-1,8.230684e-1,8.203621e-1,8.174981e-1,8.144752e-1,
-    8.112975e-1,8.079728e-1,8.045118e-1,8.009274e-1,7.972336e-1,7.934448e-1,7.895759e-1,
-    7.856415e-1,7.816556e-1,7.776315e-1,7.735820e-1,7.695185e-1,7.654519e-1,7.613920e-1,
-    7.573474e-1,7.533262e-1,7.493353e-1,7.453809e-1,7.414684e-1,7.376024e-1,7.337870e-1,
-    7.300255e-1,7.263208e-1,7.226752e-1,7.190907e-1,7.155687e-1,7.121104e-1,7.087166e-1,
-    7.053878e-1,7.021244e-1,6.989265e-1,6.957938e-1,6.927263e-1,6.897235e-1,6.867848e-1,
-    6.839097e-1,6.810975e-1,6.783474e-1,6.756586e-1,6.730302e-1,6.704613e-1,6.679511e-1,
-    6.654984e-1,6.631024e-1,6.607622e-1,6.584766e-1,6.562449e-1,6.540659e-1,6.519387e-1,
-    6.498624e-1,6.478361e-1,6.458588e-1,6.439296e-1,6.420476e-1,6.402120e-1,6.384218e-1,
-    6.366764e-1,6.349747e-1,6.333162e-1,6.316999e-1,6.301252e-1,6.285912e-1,6.270973e-1,
-    6.256428e-1,6.242270e-1,6.228493e-1,6.215089e-1,6.202054e-1,6.189380e-1,6.177062e-1,
-    6.165095e-1,6.153472e-1,6.142189e-1,6.131240e-1,6.120620e-1,6.110324e-1,6.100348e-1,
-    6.090686e-1,6.081335e-1,6.072289e-1,6.063545e-1,6.055099e-1,6.046946e-1,6.039083e-1,
-    6.031506e-1,6.024211e-1,6.017194e-1,6.010453e-1,6.003983e-1,5.997781e-1,5.991845e-1,
-    5.986171e-1,5.980756e-1,5.975596e-1,5.970690e-1,5.966035e-1,5.961627e-1,5.957464e-1,
-    5.953544e-1,5.949863e-1,5.946420e-1,5.943211e-1,5.940236e-1,5.937490e-1,5.934973e-1,
-    5.932682e-1,5.930615e-1,5.928769e-1,5.927143e-1,5.925735e-1,5.924543e-1,5.923565e-1,
-    5.922798e-1,5.922242e-1,5.921894e-1,5.921754e-1,5.921818e-1,5.922085e-1,5.922555e-1};
-  static const G4double SH5[nH]={
-    4.659776e-1,4.476902e-1,4.309775e-1,4.158946e-1,4.025449e-1,3.910970e-1,3.818062e-1,
-    3.750402e-1,3.713091e-1,3.712933e-1,3.758637e-1,3.860770e-1,4.031303e-1,4.282529e-1,
-    4.625322e-1,5.066943e-1,5.609019e-1,6.246586e-1,6.968852e-1,7.761692e-1,8.611016e-1,
-    9.505815e-1,1.043997e+0,1.141265e+0,1.242749e+0,1.349132e+0,1.461255e+0,1.579962e+0,
-    1.705950e+0,1.839605e+0,1.980828e+0,2.128829e+0,2.281907e+0,2.437240e+0,2.590731e+0,
-    2.736990e+0,2.869544e+0,2.981348e+0,3.065603e+0,3.116761e+0,3.131496e+0,3.109354e+0,
-    3.052863e+0,2.967066e+0,2.858644e+0,2.734889e+0,2.602808e+0,2.468500e+0,2.336846e+0,
-    2.211463e+0,2.094818e+0,1.988432e+0,1.893096e+0,1.809073e+0,1.736261e+0,1.674311e+0,
-    1.622712e+0,1.580840e+0,1.547984e+0,1.523343e+0,1.506019e+0,1.494995e+0,1.489116e+0,
-    1.487081e+0,1.487447e+0,1.488669e+0,1.489169e+0,1.487439e+0,1.482168e+0,1.472372e+0,
-    1.457487e+0,1.437429e+0,1.412571e+0,1.383670e+0,1.351749e+0,1.317954e+0,1.283431e+0,
-    1.249221e+0,1.216200e+0,1.185043e+0,1.156226e+0,1.130034e+0,1.106598e+0,1.085916e+0,
-    1.067888e+0,1.052343e+0,1.039061e+0,1.027798e+0,1.018293e+0,1.010290e+0,1.003540e+0,
-    9.978077e-1,9.928816e-1,9.885710e-1,9.847092e-1,9.811537e-1,9.777849e-1,9.745051e-1,
-    9.712366e-1,9.679192e-1,9.645088e-1,9.609745e-1,9.572969e-1,9.534658e-1,9.494785e-1,
-    9.453386e-1,9.410538e-1,9.366353e-1,9.320965e-1,9.274525e-1,9.227188e-1,9.179114e-1,
-    9.130459e-1,9.081377e-1,9.032012e-1,8.982499e-1,8.932966e-1,8.883526e-1,8.834286e-1,
-    8.785340e-1,8.736773e-1,8.688658e-1,8.641061e-1,8.594039e-1,8.547640e-1,8.501906e-1,
-    8.456872e-1,8.412565e-1,8.369010e-1,8.326224e-1,8.284221e-1,8.243011e-1,8.202600e-1,
-    8.162992e-1,8.124188e-1,8.086186e-1,8.048983e-1,8.012573e-1,7.976949e-1,7.942105e-1,
-    7.908030e-1,7.874715e-1,7.842150e-1,7.810324e-1,7.779224e-1,7.748840e-1,7.719159e-1,
-    7.690169e-1,7.661858e-1,7.634213e-1,7.607221e-1,7.580872e-1,7.555153e-1,7.530051e-1,
-    7.505555e-1,7.481653e-1,7.458334e-1,7.435587e-1,7.413400e-1,7.391763e-1,7.370666e-1,
-    7.350099e-1,7.330050e-1,7.310511e-1,7.291473e-1,7.272925e-1,7.254859e-1,7.237267e-1,
-    7.220140e-1,7.203469e-1,7.187247e-1,7.171466e-1,7.156118e-1,7.141196e-1,7.126694e-1,
-    7.112604e-1,7.098919e-1,7.085633e-1,7.072740e-1,7.060234e-1,7.048108e-1,7.036357e-1,
-    7.024976e-1,7.013959e-1,7.003300e-1,6.992995e-1,6.983039e-1,6.973426e-1,6.964153e-1,
-    6.955214e-1,6.946606e-1,6.938324e-1,6.930363e-1,6.922720e-1,6.915391e-1,6.908371e-1,
-    6.901658e-1,6.895248e-1,6.889136e-1,6.883320e-1,6.877797e-1,6.872562e-1,6.867613e-1,
-    6.862947e-1,6.858561e-1,6.854452e-1,6.850616e-1,6.847052e-1,6.843755e-1,6.840725e-1,
-    6.837958e-1,6.835452e-1,6.833203e-1,6.831211e-1,6.829472e-1,6.827983e-1,6.826744e-1,
-    6.825752e-1,6.825004e-1,6.824498e-1,6.824233e-1,6.824206e-1,6.824416e-1,6.824860e-1};
-  static const G4double SH6[nH]={
-    5.445765e-1,5.259720e-1,5.092147e-1,4.943922e-1,4.816568e-1,4.712475e-1,4.635187e-1,
-    4.589754e-1,4.583113e-1,4.624465e-1,4.725502e-1,4.900327e-1,5.164768e-1,5.534896e-1,
-    6.024632e-1,6.642824e-1,7.390624e-1,8.260352e-1,9.236699e-1,1.030017e+0,1.143159e+0,
-    1.261606e+0,1.384524e+0,1.511770e+0,1.643781e+0,1.781393e+0,1.925637e+0,2.077538e+0,
-    2.237925e+0,2.407239e+0,2.585320e+0,2.771179e+0,2.962748e+0,3.156646e+0,3.348019e+0,
-    3.530524e+0,3.696566e+0,3.837865e+0,3.946347e+0,4.015266e+0,4.040307e+0,4.020377e+0,
-    3.957835e+0,3.858084e+0,3.728662e+0,3.578110e+0,3.414904e+0,3.246656e+0,3.079662e+0,
-    2.918748e+0,2.767352e+0,2.627710e+0,2.501104e+0,2.388097e+0,2.288730e+0,2.202685e+0,
-    2.129397e+0,2.068133e+0,2.018030e+0,1.978119e+0,1.947324e+0,1.924455e+0,1.908200e+0,
-    1.897116e+0,1.889649e+0,1.884158e+0,1.878985e+0,1.872537e+0,1.863397e+0,1.850433e+0,
-    1.832895e+0,1.810468e+0,1.783286e+0,1.751879e+0,1.717086e+0,1.679941e+0,1.641548e+0,
-    1.602978e+0,1.565190e+0,1.528974e+0,1.494936e+0,1.463490e+0,1.434878e+0,1.409189e+0,
-    1.386391e+0,1.366358e+0,1.348893e+0,1.333755e+0,1.320678e+0,1.309384e+0,1.299598e+0,
-    1.291059e+0,1.283522e+0,1.276765e+0,1.270593e+0,1.264837e+0,1.259353e+0,1.254023e+0,
-    1.248754e+0,1.243470e+0,1.238117e+0,1.232657e+0,1.227063e+0,1.221321e+0,1.215428e+0,
-    1.209386e+0,1.203202e+0,1.196890e+0,1.190463e+0,1.183940e+0,1.177337e+0,1.170673e+0,
-    1.163967e+0,1.157235e+0,1.150494e+0,1.143761e+0,1.137048e+0,1.130370e+0,1.123738e+0,
-    1.117164e+0,1.110656e+0,1.104223e+0,1.097872e+0,1.091609e+0,1.085440e+0,1.079369e+0,
-    1.073400e+0,1.067535e+0,1.061776e+0,1.056126e+0,1.050585e+0,1.045154e+0,1.039834e+0,
-    1.034624e+0,1.029523e+0,1.024532e+0,1.019650e+0,1.014875e+0,1.010206e+0,1.005642e+0,
-    1.001182e+0,9.968228e-1,9.925643e-1,9.884044e-1,9.843414e-1,9.803736e-1,9.764992e-1,
-    9.727164e-1,9.690235e-1,9.654188e-1,9.619005e-1,9.584670e-1,9.551164e-1,9.518472e-1,
-    9.486577e-1,9.455463e-1,9.425115e-1,9.395517e-1,9.366654e-1,9.338511e-1,9.311074e-1,
-    9.284330e-1,9.258264e-1,9.232864e-1,9.208117e-1,9.184010e-1,9.160531e-1,9.137668e-1,
-    9.115411e-1,9.093748e-1,9.072668e-1,9.052161e-1,9.032217e-1,9.012826e-1,8.993979e-1,
-    8.975665e-1,8.957878e-1,8.940607e-1,8.923845e-1,8.907582e-1,8.891813e-1,8.876527e-1,
-    8.861720e-1,8.847382e-1,8.833507e-1,8.820089e-1,8.807120e-1,8.794595e-1,8.782507e-1,
-    8.770849e-1,8.759618e-1,8.748805e-1,8.738407e-1,8.728417e-1,8.718831e-1,8.709643e-1,
-    8.700849e-1,8.692443e-1,8.684421e-1,8.676779e-1,8.669512e-1,8.662615e-1,8.656085e-1,
-    8.649917e-1,8.644108e-1,8.638654e-1,8.633550e-1,8.628794e-1,8.624381e-1,8.620308e-1,
-    8.616572e-1,8.613169e-1,8.610097e-1,8.607351e-1,8.604929e-1,8.602828e-1,8.601045e-1,
-    8.599577e-1,8.598422e-1,8.597575e-1,8.597036e-1,8.596801e-1,8.596867e-1,8.597232e-1};
-  static const G4double SH7[nH]={
-    6.601789e-1,6.429790e-1,6.279582e-1,6.152537e-1,6.050918e-1,5.978188e-1,5.939410e-1,
-    5.941728e-1,5.994893e-1,6.111752e-1,6.308524e-1,6.604603e-1,7.021523e-1,7.580774e-1,
-    8.300428e-1,9.191103e-1,1.025252e+0,1.147222e+0,1.282761e+0,1.429089e+0,1.583531e+0,
-    1.744040e+0,1.909484e+0,2.079667e+0,2.255167e+0,2.437080e+0,2.626743e+0,2.825481e+0,
-    3.034365e+0,3.253973e+0,3.484139e+0,3.723691e+0,3.970159e+0,4.219512e+0,4.465971e+0,
-    4.701980e+0,4.918458e+0,5.105403e+0,5.252875e+0,5.352255e+0,5.397546e+0,5.386392e+0,
-    5.320522e+0,5.205479e+0,5.049727e+0,4.863392e+0,4.656975e+0,4.440289e+0,4.221774e+0,
-    4.008169e+0,3.804492e+0,3.614203e+0,3.439460e+0,3.281400e+0,3.140395e+0,3.016263e+0,
-    2.908433e+0,2.816062e+0,2.738112e+0,2.673395e+0,2.620597e+0,2.578285e+0,2.544911e+0,
-    2.518816e+0,2.498248e+0,2.481393e+0,2.466431e+0,2.451611e+0,2.435343e+0,2.416298e+0,
-    2.393491e+0,2.366348e+0,2.334725e+0,2.298889e+0,2.259451e+0,2.217280e+0,2.173389e+0,
-    2.128833e+0,2.084617e+0,2.041630e+0,2.000598e+0,1.962072e+0,1.926419e+0,1.893839e+0,
-    1.864390e+0,1.838007e+0,1.814532e+0,1.793744e+0,1.775373e+0,1.759127e+0,1.744707e+0,
-    1.731819e+0,1.720184e+0,1.709544e+0,1.699669e+0,1.690356e+0,1.681435e+0,1.672762e+0,
-    1.664220e+0,1.655719e+0,1.647190e+0,1.638584e+0,1.629868e+0,1.621024e+0,1.612045e+0,
-    1.602933e+0,1.593696e+0,1.584347e+0,1.574905e+0,1.565388e+0,1.555818e+0,1.546216e+0,
-    1.536603e+0,1.526999e+0,1.517424e+0,1.507896e+0,1.498432e+0,1.489047e+0,1.479755e+0,
-    1.470568e+0,1.461496e+0,1.452549e+0,1.443734e+0,1.435059e+0,1.426529e+0,1.418148e+0,
-    1.409919e+0,1.401847e+0,1.393931e+0,1.386174e+0,1.378576e+0,1.371137e+0,1.363856e+0,
-    1.356733e+0,1.349767e+0,1.342956e+0,1.336298e+0,1.329791e+0,1.323434e+0,1.317223e+0,
-    1.311158e+0,1.305234e+0,1.299449e+0,1.293802e+0,1.288289e+0,1.282908e+0,1.277655e+0,
-    1.272529e+0,1.267527e+0,1.262647e+0,1.257885e+0,1.253239e+0,1.248707e+0,1.244286e+0,
-    1.239975e+0,1.235770e+0,1.231670e+0,1.227671e+0,1.223773e+0,1.219973e+0,1.216269e+0,
-    1.212660e+0,1.209142e+0,1.205714e+0,1.202375e+0,1.199123e+0,1.195955e+0,1.192871e+0,
-    1.189869e+0,1.186947e+0,1.184104e+0,1.181338e+0,1.178648e+0,1.176032e+0,1.173489e+0,
-    1.171019e+0,1.168619e+0,1.166288e+0,1.164026e+0,1.161831e+0,1.159702e+0,1.157638e+0,
-    1.155638e+0,1.153701e+0,1.151825e+0,1.150011e+0,1.148257e+0,1.146563e+0,1.144926e+0,
-    1.143348e+0,1.141826e+0,1.140360e+0,1.138949e+0,1.137593e+0,1.136290e+0,1.135041e+0,
-    1.133844e+0,1.132699e+0,1.131605e+0,1.130561e+0,1.129567e+0,1.128623e+0,1.127727e+0,
-    1.126879e+0,1.126079e+0,1.125326e+0,1.124620e+0,1.123959e+0,1.123344e+0,1.122775e+0,
-    1.122249e+0,1.121768e+0,1.121331e+0,1.120937e+0,1.120586e+0,1.120278e+0,1.120011e+0,
-    1.119786e+0,1.119603e+0,1.119460e+0,1.119358e+0,1.119296e+0,1.119274e+0,1.119291e+0};
-  static const G4double SH8[nH]={
-    8.326620e-1,8.187860e-1,8.074156e-1,7.987501e-1,7.931123e-1,7.909917e-1,7.931005e-1,
-    8.004391e-1,8.143676e-1,8.366683e-1,8.695766e-1,9.157404e-1,9.780603e-1,1.059371e+0,
-    1.161963e+0,1.287041e+0,1.434275e+0,1.601688e+0,1.785989e+0,1.983289e+0,2.189948e+0,
-    2.403252e+0,2.621760e+0,2.845287e+0,3.074662e+0,3.311376e+0,3.557223e+0,3.813967e+0,
-    4.083048e+0,4.365291e+0,4.660621e+0,4.967743e+0,5.283822e+0,5.604165e+0,5.921995e+0,
-    6.228396e+0,6.512543e+0,6.762334e+0,6.965444e+0,7.110740e+0,7.189809e+0,7.198283e+0,
-    7.136586e+0,7.009905e+0,6.827389e+0,6.600804e+0,6.343002e+0,6.066546e+0,5.782692e+0,
-    5.500809e+0,5.228183e+0,4.970100e+0,4.730096e+0,4.510269e+0,4.311603e+0,4.134245e+0,
-    3.977736e+0,3.841183e+0,3.723389e+0,3.622934e+0,3.538226e+0,3.467539e+0,3.409022e+0,
-    3.360729e+0,3.320633e+0,3.286663e+0,3.256758e+0,3.228933e+0,3.201359e+0,3.172457e+0,
-    3.140973e+0,3.106044e+0,3.067232e+0,3.024518e+0,2.978262e+0,2.929127e+0,2.877988e+0,
-    2.825830e+0,2.773655e+0,2.722401e+0,2.672884e+0,2.625763e+0,2.581520e+0,2.540465e+0,
-    2.502745e+0,2.468369e+0,2.437227e+0,2.409125e+0,2.383802e+0,2.360958e+0,2.340275e+0,
-    2.321429e+0,2.304110e+0,2.288023e+0,2.272905e+0,2.258519e+0,2.244664e+0,2.231170e+0,
-    2.217898e+0,2.204739e+0,2.191611e+0,2.178454e+0,2.165229e+0,2.151912e+0,2.138493e+0,
-    2.124976e+0,2.111368e+0,2.097687e+0,2.083952e+0,2.070187e+0,2.056416e+0,2.042664e+0,
-    2.028956e+0,2.015316e+0,2.001766e+0,1.988328e+0,1.975021e+0,1.961862e+0,1.948866e+0,
-    1.936048e+0,1.923419e+0,1.910988e+0,1.898765e+0,1.886757e+0,1.874968e+0,1.863402e+0,
-    1.852064e+0,1.840954e+0,1.830074e+0,1.819424e+0,1.809004e+0,1.798812e+0,1.788847e+0,
-    1.779107e+0,1.769589e+0,1.760290e+0,1.751207e+0,1.742337e+0,1.733676e+0,1.725221e+0,
-    1.716968e+0,1.708913e+0,1.701051e+0,1.693380e+0,1.685895e+0,1.678592e+0,1.671467e+0,
-    1.664517e+0,1.657738e+0,1.651125e+0,1.644675e+0,1.638385e+0,1.632251e+0,1.626270e+0,
-    1.620437e+0,1.614751e+0,1.609207e+0,1.603802e+0,1.598534e+0,1.593400e+0,1.588396e+0,
-    1.583519e+0,1.578768e+0,1.574140e+0,1.569631e+0,1.565240e+0,1.560964e+0,1.556801e+0,
-    1.552749e+0,1.548805e+0,1.544967e+0,1.541233e+0,1.537602e+0,1.534071e+0,1.530639e+0,
-    1.527303e+0,1.524063e+0,1.520915e+0,1.517860e+0,1.514895e+0,1.512018e+0,1.509229e+0,
-    1.506525e+0,1.503906e+0,1.501370e+0,1.498916e+0,1.496542e+0,1.494247e+0,1.492031e+0,
-    1.489891e+0,1.487827e+0,1.485838e+0,1.483923e+0,1.482080e+0,1.480310e+0,1.478609e+0,
-    1.476979e+0,1.475418e+0,1.473924e+0,1.472498e+0,1.471138e+0,1.469844e+0,1.468614e+0,
-    1.467449e+0,1.466346e+0,1.465306e+0,1.464328e+0,1.463411e+0,1.462555e+0,1.461758e+0,
-    1.461021e+0,1.460342e+0,1.459721e+0,1.459157e+0,1.458650e+0,1.458199e+0,1.457804e+0,
-    1.457464e+0,1.457179e+0,1.456948e+0,1.456770e+0,1.456645e+0,1.456574e+0,1.456554e+0};
-  static const G4double SH9[nH]={
-    1.425410e+0,1.421381e+0,1.420064e+0,1.421846e+0,1.427350e+0,1.437522e+0,1.453729e+0,
-    1.477877e+0,1.512528e+0,1.560992e+0,1.627344e+0,1.716285e+0,1.832783e+0,1.981419e+0,
-    2.165508e+0,2.386174e+0,2.641752e+0,2.927832e+0,3.238097e+0,3.565696e+0,3.904657e+0,
-    4.250887e+0,4.602541e+0,4.959837e+0,5.324557e+0,5.699439e+0,6.087597e+0,6.492035e+0,
-    6.915215e+0,7.358674e+0,7.822640e+0,8.305618e+0,8.803962e+0,9.311461e+0,9.819000e+0,
-    1.031441e+1,1.078267e+1,1.120652e+1,1.156771e+1,1.184869e+1,1.203464e+1,1.211552e+1,
-    1.208752e+1,1.195370e+1,1.172359e+1,1.141180e+1,1.103616e+1,1.061560e+1,1.016840e+1,
-    9.710864e+0,9.256615e+0,8.816313e+0,8.397788e+0,8.006357e+0,7.645246e+0,7.316023e+0,
-    7.018988e+0,6.753498e+0,6.518232e+0,6.311380e+0,6.130788e+0,5.974058e+0,5.838619e+0,
-    5.721783e+0,5.620790e+0,5.532858e+0,5.455242e+0,5.385289e+0,5.320521e+0,5.258707e+0,
-    5.197938e+0,5.136693e+0,5.073880e+0,5.008852e+0,4.941393e+0,4.871670e+0,4.800166e+0,
-    4.727591e+0,4.654788e+0,4.582647e+0,4.512022e+0,4.443675e+0,4.378228e+0,4.316142e+0,
-    4.257712e+0,4.203068e+0,4.152199e+0,4.104970e+0,4.061152e+0,4.020445e+0,3.982508e+0,
-    3.946978e+0,3.913492e+0,3.881699e+0,3.851274e+0,3.821926e+0,3.793398e+0,3.765476e+0,
-    3.737984e+0,3.710781e+0,3.683763e+0,3.656854e+0,3.630006e+0,3.603191e+0,3.576400e+0,
-    3.549640e+0,3.522927e+0,3.496284e+0,3.469742e+0,3.443334e+0,3.417094e+0,3.391057e+0,
-    3.365257e+0,3.339727e+0,3.314496e+0,3.289591e+0,3.265039e+0,3.240859e+0,3.217072e+0,
-    3.193692e+0,3.170733e+0,3.148206e+0,3.126119e+0,3.104477e+0,3.083284e+0,3.062543e+0,
-    3.042254e+0,3.022416e+0,3.003026e+0,2.984082e+0,2.965578e+0,2.947509e+0,2.929870e+0,
-    2.912654e+0,2.895854e+0,2.879463e+0,2.863473e+0,2.847876e+0,2.832664e+0,2.817830e+0,
-    2.803363e+0,2.789258e+0,2.775505e+0,2.762096e+0,2.749024e+0,2.736279e+0,2.723855e+0,
-    2.711744e+0,2.699939e+0,2.688431e+0,2.677214e+0,2.666280e+0,2.655624e+0,2.645238e+0,
-    2.635115e+0,2.625250e+0,2.615637e+0,2.606269e+0,2.597141e+0,2.588247e+0,2.579582e+0,
-    2.571141e+0,2.562918e+0,2.554909e+0,2.547110e+0,2.539514e+0,2.532119e+0,2.524920e+0,
-    2.517912e+0,2.511092e+0,2.504456e+0,2.498001e+0,2.491721e+0,2.485615e+0,2.479679e+0,
-    2.473909e+0,2.468302e+0,2.462856e+0,2.457567e+0,2.452433e+0,2.447450e+0,2.442617e+0,
-    2.437930e+0,2.433387e+0,2.428985e+0,2.424723e+0,2.420598e+0,2.416608e+0,2.412750e+0,
-    2.409023e+0,2.405425e+0,2.401953e+0,2.398607e+0,2.395383e+0,2.392280e+0,2.389297e+0,
-    2.386432e+0,2.383683e+0,2.381049e+0,2.378528e+0,2.376118e+0,2.373819e+0,2.371629e+0,
-    2.369546e+0,2.367569e+0,2.365697e+0,2.363929e+0,2.362263e+0,2.360698e+0,2.359233e+0,
-    2.357868e+0,2.356600e+0,2.355429e+0,2.354353e+0,2.353373e+0,2.352486e+0,2.351691e+0,
-    2.350989e+0,2.350378e+0,2.349856e+0,2.349424e+0,2.349080e+0,2.348823e+0,2.348653e+0};
-  static const G4double SH10[nH]={
-    3.918292e+0,3.904931e+0,3.893792e+0,3.886847e+0,3.886858e+0,3.897612e+0,3.924175e+0,
-    3.973155e+0,4.052892e+0,4.173448e+0,4.346251e+0,4.583168e+0,4.894929e+0,5.289011e+0,
-    5.767472e+0,6.325587e+0,6.952077e+0,7.631192e+0,8.346046e+0,9.081993e+0,9.828955e+0,
-    1.058224e+1,1.134205e+1,1.211228e+1,1.289914e+1,1.370979e+1,1.455140e+1,1.543028e+1,
-    1.635126e+1,1.731704e+1,1.832759e+1,1.937949e+1,2.046524e+1,2.157253e+1,2.268371e+1,
-    2.377554e+1,2.481942e+1,2.578236e+1,2.662884e+1,2.732355e+1,2.783477e+1,2.813791e+1,
-    2.821866e+1,2.807489e+1,2.771701e+1,2.716665e+1,2.645395e+1,2.561414e+1,2.468397e+1,
-    2.369877e+1,2.269021e+1,2.168502e+1,2.070456e+1,1.976487e+1,1.887726e+1,1.804896e+1,
-    1.728387e+1,1.658334e+1,1.594670e+1,1.537185e+1,1.485564e+1,1.439420e+1,1.398317e+1,
-    1.361791e+1,1.329360e+1,1.300539e+1,1.274849e+1,1.251824e+1,1.231020e+1,1.212025e+1,
-    1.194464e+1,1.178007e+1,1.162372e+1,1.147334e+1,1.132717e+1,1.118402e+1,1.104314e+1,
-    1.090421e+1,1.076726e+1,1.063254e+1,1.050046e+1,1.037150e+1,1.024612e+1,1.012471e+1,
-    1.000757e+1,9.894853e+0,9.786587e+0,9.682662e+0,9.582857e+0,9.486860e+0,9.394299e+0,
-    9.304761e+0,9.217824e+0,9.133076e+0,9.050131e+0,8.968642e+0,8.888313e+0,8.808898e+0,
-    8.730205e+0,8.652092e+0,8.574465e+0,8.497273e+0,8.420498e+0,8.344153e+0,8.268275e+0,
-    8.192917e+0,8.118146e+0,8.044035e+0,7.970660e+0,7.898102e+0,7.826434e+0,7.755730e+0,
-    7.686057e+0,7.617475e+0,7.550037e+0,7.483791e+0,7.418775e+0,7.355021e+0,7.292555e+0,
-    7.231395e+0,7.171554e+0,7.113040e+0,7.055853e+0,6.999992e+0,6.945450e+0,6.892218e+0,
-    6.840281e+0,6.789624e+0,6.740229e+0,6.692076e+0,6.645144e+0,6.599408e+0,6.554846e+0,
-    6.511433e+0,6.469143e+0,6.427951e+0,6.387831e+0,6.348757e+0,6.310703e+0,6.273644e+0,
-    6.237554e+0,6.202409e+0,6.168183e+0,6.134852e+0,6.102393e+0,6.070783e+0,6.039998e+0,
-    6.010017e+0,5.980819e+0,5.952382e+0,5.924686e+0,5.897711e+0,5.871440e+0,5.845852e+0,
-    5.820930e+0,5.796658e+0,5.773017e+0,5.749993e+0,5.727569e+0,5.705730e+0,5.684462e+0,
-    5.663751e+0,5.643583e+0,5.623944e+0,5.604824e+0,5.586208e+0,5.568086e+0,5.550445e+0,
-    5.533276e+0,5.516567e+0,5.500309e+0,5.484490e+0,5.469103e+0,5.454137e+0,5.439585e+0,
-    5.425436e+0,5.411684e+0,5.398319e+0,5.385335e+0,5.372724e+0,5.360478e+0,5.348591e+0,
-    5.337056e+0,5.325867e+0,5.315016e+0,5.304499e+0,5.294309e+0,5.284441e+0,5.274889e+0,
-    5.265647e+0,5.256711e+0,5.248076e+0,5.239736e+0,5.231688e+0,5.223926e+0,5.216445e+0,
-    5.209243e+0,5.202315e+0,5.195656e+0,5.189262e+0,5.183131e+0,5.177258e+0,5.171640e+0,
-    5.166273e+0,5.161154e+0,5.156279e+0,5.151646e+0,5.147251e+0,5.143092e+0,5.139165e+0,
-    5.135467e+0,5.131996e+0,5.128750e+0,5.125724e+0,5.122918e+0,5.120328e+0,5.117952e+0,
-    5.115788e+0,5.113833e+0,5.112084e+0,5.110541e+0,5.109201e+0,5.108061e+0,5.107120e+0};
-  static const G4double SH11[nH]={
-    7.590321e+0,7.509120e+0,7.439927e+0,7.389122e+0,7.365094e+0,7.378718e+0,7.443759e+0,
-    7.577042e+0,7.798111e+0,8.128047e+0,8.587142e+0,9.191438e+0,9.948696e+0,1.085507e+1,
-    1.189410e+1,1.303902e+1,1.425810e+1,1.552108e+1,1.680454e+1,1.809464e+1,1.938727e+1,
-    2.068629e+1,2.200102e+1,2.334386e+1,2.472823e+1,2.616717e+1,2.767219e+1,2.925247e+1,
-    3.091405e+1,3.265909e+1,3.448491e+1,3.638304e+1,3.833817e+1,4.032706e+1,4.231784e+1,
-    4.426974e+1,4.613359e+1,4.785354e+1,4.937004e+1,5.062412e+1,5.156263e+1,5.214377e+1,
-    5.234188e+1,5.215066e+1,5.158403e+1,5.067443e+1,4.946906e+1,4.802467e+1,4.640214e+1,
-    4.466144e+1,4.285783e+1,4.103934e+1,3.924553e+1,3.750731e+1,3.584751e+1,3.428176e+1,
-    3.281973e+1,3.146624e+1,3.022230e+1,2.908612e+1,2.805376e+1,2.711986e+1,2.627800e+1,
-    2.552116e+1,2.484197e+1,2.423289e+1,2.368645e+1,2.319532e+1,2.275246e+1,2.235122e+1,
-    2.198543e+1,2.164944e+1,2.133824e+1,2.104744e+1,2.077331e+1,2.051280e+1,2.026347e+1,
-    2.002347e+1,1.979144e+1,1.956643e+1,1.934784e+1,1.913527e+1,1.892847e+1,1.872725e+1,
-    1.853145e+1,1.834084e+1,1.815514e+1,1.797402e+1,1.779705e+1,1.762379e+1,1.745373e+1,
-    1.728639e+1,1.712128e+1,1.695797e+1,1.679605e+1,1.663522e+1,1.647522e+1,1.631586e+1,
-    1.615706e+1,1.599876e+1,1.584098e+1,1.568380e+1,1.552732e+1,1.537170e+1,1.521709e+1,
-    1.506367e+1,1.491163e+1,1.476115e+1,1.461241e+1,1.446558e+1,1.432082e+1,1.417827e+1,
-    1.403806e+1,1.390031e+1,1.376511e+1,1.363253e+1,1.350265e+1,1.337550e+1,1.325113e+1,
-    1.312955e+1,1.301078e+1,1.289481e+1,1.278164e+1,1.267124e+1,1.256360e+1,1.245866e+1,
-    1.235641e+1,1.225680e+1,1.215977e+1,1.206529e+1,1.197330e+1,1.188374e+1,1.179657e+1,
-    1.171172e+1,1.162914e+1,1.154878e+1,1.147057e+1,1.139446e+1,1.132039e+1,1.124831e+1,
-    1.117817e+1,1.110991e+1,1.104348e+1,1.097882e+1,1.091590e+1,1.085465e+1,1.079504e+1,
-    1.073701e+1,1.068053e+1,1.062555e+1,1.057202e+1,1.051991e+1,1.046918e+1,1.041979e+1,
-    1.037170e+1,1.032488e+1,1.027930e+1,1.023491e+1,1.019170e+1,1.014962e+1,1.010865e+1,
-    1.006876e+1,1.002992e+1,9.992112e+0,9.955302e+0,9.919468e+0,9.884586e+0,9.850632e+0,
-    9.817586e+0,9.785425e+0,9.754129e+0,9.723679e+0,9.694054e+0,9.665237e+0,9.637210e+0,
-    9.609955e+0,9.583456e+0,9.557697e+0,9.532663e+0,9.508339e+0,9.484709e+0,9.461761e+0,
-    9.439481e+0,9.417856e+0,9.396874e+0,9.376521e+0,9.356788e+0,9.337661e+0,9.319131e+0,
-    9.301186e+0,9.283817e+0,9.267013e+0,9.250765e+0,9.235064e+0,9.219900e+0,9.205264e+0,
-    9.191149e+0,9.177546e+0,9.164447e+0,9.151845e+0,9.139731e+0,9.128099e+0,9.116942e+0,
-    9.106252e+0,9.096024e+0,9.086249e+0,9.076924e+0,9.068040e+0,9.059593e+0,9.051576e+0,
-    9.043985e+0,9.036813e+0,9.030055e+0,9.023706e+0,9.017761e+0,9.012215e+0,9.007064e+0,
-    9.002302e+0,8.997926e+0,8.993930e+0,8.990311e+0,8.987065e+0,8.984186e+0,8.981672e+0};
-  static const G4double SH12[nH]={
-    1.274173e+1,1.261154e+1,1.253680e+1,1.253678e+1,1.263549e+1,1.286155e+1,1.324712e+1,
-    1.382513e+1,1.462465e+1,1.566474e+1,1.694815e+1,1.845745e+1,2.015574e+1,2.199299e+1,
-    2.391598e+1,2.587848e+1,2.784823e+1,2.980938e+1,3.176107e+1,3.371382e+1,3.568546e+1,
-    3.769757e+1,3.977278e+1,4.193303e+1,4.419831e+1,4.658588e+1,4.910951e+1,5.177874e+1,
-    5.459799e+1,5.756537e+1,6.067137e+1,6.389725e+1,6.721344e+1,7.057806e+1,7.393584e+1,
-    7.721799e+1,8.034325e+1,8.322076e+1,8.575479e+1,8.785141e+1,8.942639e+1,9.041346e+1,
-    9.077151e+1,9.048934e+1,8.958707e+1,8.811385e+1,8.614235e+1,8.376122e+1,8.106674e+1,
-    7.815525e+1,7.511689e+1,7.203142e+1,6.896584e+1,6.597376e+1,6.309588e+1,6.036126e+1,
-    5.778900e+1,5.538996e+1,5.316850e+1,5.112392e+1,4.925181e+1,4.754501e+1,4.599451e+1,
-    4.459006e+1,4.332071e+1,4.217515e+1,4.114200e+1,4.021009e+1,3.936858e+1,3.860711e+1,
-    3.791594e+1,3.728600e+1,3.670900e+1,3.617743e+1,3.568464e+1,3.522478e+1,3.479282e+1,
-    3.438448e+1,3.399619e+1,3.362496e+1,3.326834e+1,3.292429e+1,3.259109e+1,3.226728e+1,
-    3.195155e+1,3.164275e+1,3.133978e+1,3.104162e+1,3.074731e+1,3.045594e+1,3.016670e+1,
-    2.987885e+1,2.959177e+1,2.930495e+1,2.901801e+1,2.873069e+1,2.844289e+1,2.815459e+1,
-    2.786589e+1,2.757701e+1,2.728821e+1,2.699984e+1,2.671229e+1,2.642597e+1,2.614131e+1,
-    2.585875e+1,2.557869e+1,2.530156e+1,2.502772e+1,2.475752e+1,2.449130e+1,2.422931e+1,
-    2.397182e+1,2.371903e+1,2.347111e+1,2.322821e+1,2.299044e+1,2.275787e+1,2.253056e+1,
-    2.230854e+1,2.209182e+1,2.188038e+1,2.167419e+1,2.147321e+1,2.127737e+1,2.108662e+1,
-    2.090087e+1,2.072003e+1,2.054401e+1,2.037271e+1,2.020604e+1,2.004387e+1,1.988611e+1,
-    1.973265e+1,1.958337e+1,1.943817e+1,1.929694e+1,1.915958e+1,1.902597e+1,1.889600e+1,
-    1.876959e+1,1.864662e+1,1.852699e+1,1.841062e+1,1.829740e+1,1.818725e+1,1.808008e+1,
-    1.797579e+1,1.787432e+1,1.777556e+1,1.767946e+1,1.758593e+1,1.749489e+1,1.740629e+1,
-    1.732004e+1,1.723608e+1,1.715436e+1,1.707480e+1,1.699735e+1,1.692196e+1,1.684856e+1,
-    1.677711e+1,1.670754e+1,1.663983e+1,1.657390e+1,1.650973e+1,1.644726e+1,1.638646e+1,
-    1.632728e+1,1.626968e+1,1.621363e+1,1.615908e+1,1.610601e+1,1.605438e+1,1.600415e+1,
-    1.595530e+1,1.590779e+1,1.586160e+1,1.581669e+1,1.577303e+1,1.573061e+1,1.568940e+1,
-    1.564937e+1,1.561049e+1,1.557275e+1,1.553612e+1,1.550058e+1,1.546611e+1,1.543269e+1,
-    1.540030e+1,1.536892e+1,1.533854e+1,1.530912e+1,1.528067e+1,1.525316e+1,1.522657e+1,
-    1.520089e+1,1.517611e+1,1.515221e+1,1.512917e+1,1.510699e+1,1.508564e+1,1.506512e+1,
-    1.504542e+1,1.502651e+1,1.500840e+1,1.499106e+1,1.497449e+1,1.495868e+1,1.494362e+1,
-    1.492928e+1,1.491568e+1,1.490279e+1,1.489061e+1,1.487912e+1,1.486832e+1,1.485821e+1,
-    1.484876e+1,1.483998e+1,1.483185e+1,1.482437e+1,1.481753e+1,1.481133e+1,1.480575e+1};
-  static const G4double SH13[nH]={
-    1.444282e+1,1.433200e+1,1.430197e+1,1.437852e+1,1.459264e+1,1.497946e+1,1.557548e+1,
-    1.641373e+1,1.751708e+1,1.889114e+1,2.051932e+1,2.236282e+1,2.436683e+1,2.647125e+1,
-    2.862233e+1,3.078116e+1,3.292713e+1,3.505686e+1,3.718040e+1,3.931668e+1,4.148940e+1,
-    4.372398e+1,4.604543e+1,4.847705e+1,5.103960e+1,5.375059e+1,5.662368e+1,5.966783e+1,
-    6.288632e+1,6.627543e+1,6.982292e+1,7.350621e+1,7.729059e+1,8.112759e+1,8.495381e+1,
-    8.869083e+1,9.224647e+1,9.551803e+1,9.839764e+1,1.007797e+2,1.025696e+2,1.036932e+2,
-    1.041041e+2,1.037897e+2,1.027723e+2,1.011066e+2,9.887372e+1,9.617299e+1,9.311251e+1,
-    8.980074e+1,8.633954e+1,8.281934e+1,7.931645e+1,7.589222e+1,7.259351e+1,6.945404e+1,
-    6.649625e+1,6.373321e+1,6.117052e+1,5.880801e+1,5.664119e+1,5.466241e+1,5.286187e+1,
-    5.122830e+1,4.974958e+1,4.841316e+1,4.720643e+1,4.611690e+1,4.513247e+1,4.424158e+1,
-    4.343327e+1,4.269734e+1,4.202440e+1,4.140591e+1,4.083420e+1,4.030251e+1,3.980491e+1,
-    3.933629e+1,3.889231e+1,3.846927e+1,3.806404e+1,3.767398e+1,3.729683e+1,3.693063e+1,
-    3.657365e+1,3.622434e+1,3.588127e+1,3.554314e+1,3.520875e+1,3.487703e+1,3.454699e+1,
-    3.421782e+1,3.388880e+1,3.355941e+1,3.322925e+1,3.289811e+1,3.256591e+1,3.223270e+1,
-    3.189868e+1,3.156414e+1,3.122945e+1,3.089506e+1,3.056146e+1,3.022918e+1,2.989873e+1,
-    2.957065e+1,2.924544e+1,2.892361e+1,2.860559e+1,2.829182e+1,2.798266e+1,2.767845e+1,
-    2.737947e+1,2.708598e+1,2.679819e+1,2.651624e+1,2.624029e+1,2.597040e+1,2.570666e+1,
-    2.544908e+1,2.519768e+1,2.495244e+1,2.471333e+1,2.448028e+1,2.425323e+1,2.403210e+1,
-    2.381680e+1,2.360721e+1,2.340323e+1,2.320475e+1,2.301165e+1,2.282379e+1,2.264106e+1,
-    2.246332e+1,2.229045e+1,2.212233e+1,2.195881e+1,2.179978e+1,2.164512e+1,2.149469e+1,
-    2.134838e+1,2.120607e+1,2.106765e+1,2.093300e+1,2.080201e+1,2.067458e+1,2.055060e+1,
-    2.042998e+1,2.031261e+1,2.019839e+1,2.008725e+1,1.997909e+1,1.987382e+1,1.977137e+1,
-    1.967165e+1,1.957458e+1,1.948010e+1,1.938812e+1,1.929859e+1,1.921144e+1,1.912659e+1,
-    1.904399e+1,1.896358e+1,1.888531e+1,1.880911e+1,1.873493e+1,1.866273e+1,1.859245e+1,
-    1.852404e+1,1.845746e+1,1.839266e+1,1.832961e+1,1.826826e+1,1.820857e+1,1.815050e+1,
-    1.809402e+1,1.803908e+1,1.798567e+1,1.793373e+1,1.788325e+1,1.783418e+1,1.778651e+1,
-    1.774019e+1,1.769521e+1,1.765154e+1,1.760914e+1,1.756801e+1,1.752810e+1,1.748940e+1,
-    1.745188e+1,1.741553e+1,1.738032e+1,1.734624e+1,1.731325e+1,1.728134e+1,1.725050e+1,
-    1.722071e+1,1.719194e+1,1.716418e+1,1.713742e+1,1.711164e+1,1.708682e+1,1.706295e+1,
-    1.704001e+1,1.701800e+1,1.699688e+1,1.697667e+1,1.695733e+1,1.693885e+1,1.692124e+1,
-    1.690446e+1,1.688852e+1,1.687340e+1,1.685909e+1,1.684558e+1,1.683285e+1,1.682090e+1,
-    1.680973e+1,1.679931e+1,1.678964e+1,1.678072e+1,1.677252e+1,1.676505e+1,1.675830e+1};
-  static const G4double* SL[nLA]={
-    SL0,SL1,SL2,SL3,SL4,SL5,SL6,SL7,SL8,SL9,SL10,SL11,SL12,SL13,SL14,SL15,SL16,SL17,SL18,
-    SL19,SL20,SL21,SL22,SL23,SL24,SL25,SL26,SL27,SL28,SL29,SL30,SL31,SL32,SL33,SL34,SL35,
-    SL36,SL37,SL38,SL39,SL40,SL41,SL42,SL43,SL44,SL45,SL46,SL47,SL48};
-  static const G4double* SH[nHA]={SH0,SH1,SH2,SH3,SH4,SH5,SH6,SH7,SH8,SH9,SH10,
-                                  SH11,SH12,SH13};
-  if(a<=.9)
-  {
-    G4cout<<"***G4QPhotonNuclearCS::GetFunctions: A="<<a<<"(?). No CS returned!"<<G4endl;
-    return -1;
-  }
-  G4int r=0;                            // Low channel for GDR (filling-flag for GDR)
-  for(G4int i=0; i<nLA; i++) if(std::fabs(a-LA[i])<.0005)
-  {
-    for(G4int k=0; k<nL; k++) y[k]=SL[i][k];
-    r=1;                                // Flag of filled GDR part 
-  }
-  G4int h=0;
-  for(G4int j=0; j<nHA; j++) if(std::fabs(a-HA[j])<.0005)
-  {
-    for(G4int k=0; k<nH; k++) z[k]=SH[j][k];
-    h=1;                                // Flag of filled GDR part 
-  }
-  if(!r)                                // GDR part is not filled
-  {
-    G4int k=0;                          // !! To be good for different compilers !!
-    for(k=1; k<nLA; k++) if(a<LA[k]) break;
-    if(k<1) k=1;                        // Extrapolation from the first bin (D/He)
-    if(k>=nLA) k=nLA-1;                 // Extrapolation from the last bin (U)
-    G4int     k1=k-1;
-    G4double  xi=LA[k1];
-    G4double   b=(a-xi)/(LA[k]-xi);
-    for(G4int m=0; m<nL; m++)
-    {
-      if(a>1.5)
-      {
-        G4double yi=SL[k1][m];
-        y[m]=yi+(SL[k][m]-yi)*b;
-#ifdef debugs
-        if(y[m]<0.)G4cout<<"G4QPhotNucCS::GetF:y="<<y[m]<<",k="<<k<<",yi="<<yi<<",ya="
-                         <<SL[k][m]<<",b="<<b<<",xi="<<xi<<",xa="<<LA[k]<<",a="<<a<<G4endl;
-#endif
-      }
-      else y[m]=0.;
-    }
-    r=1;
-  }
-  if(!h)                                // High Energy part is not filled
-  {
-    G4int k=0;
-    for(k=1; k<nHA; k++) if(a<HA[k]) break;
-    if(k<1) k=1;                        // Extrapolation from the first bin (D/He)
-    if(k>=nHA) k=nHA-1;                 // Extrapolation from the last bin (Pu)
-    G4int     k1=k-1;
-    G4double  xi=HA[k1];
-    G4double   b=(a-xi)/(HA[k]-xi);
-    for(G4int m=0; m<nH; m++)
-    {
-      G4double zi=SH[k1][m];
-      z[m]=zi+(SH[k][m]-zi)*b;
-    }
-    h=1;
-  }
-  return r*h;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QProtonNuclearCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QProtonNuclearCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,462 +1,0 @@
-//
-// ********************************************************************
-// * 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.          *
-// ********************************************************************
-//
-//
-// The lust update: M.V. Kossov, CERN/ITEP(Moscow) 17-June-02
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QProtonNuclearCrossSection for gamma+A cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-03
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 15-Feb-04
-// --------------------------------------------------------------------------------
-// ****************************************************************************************
-// ***** This HEADER is a property of the CHIPS hadronic package in Geant4 (M. Kosov) *****
-// *********** DO NOT MAKE ANY CHANGE without approval of Mikhail.Kossov@cern.ch **********
-// ****************************************************************************************
-// Short description: CHIPS cross-sections for proton-nuclear interactions
-// -----------------------------------------------------------------------
-//
-//#define debug
-//#define pdebug
-//#define debug3
-//#define debugn
-//#define debugs
-
-#include "G4QProtonNuclearCrossSection.hh"
-
-// Initialization of the
-G4double* G4QProtonNuclearCrossSection::lastLEN=0; // Pointer to the lastArray of LowEn CS
-G4double* G4QProtonNuclearCrossSection::lastHEN=0; // Pointer to the lastArray of HighEn CS
-G4int     G4QProtonNuclearCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QProtonNuclearCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QProtonNuclearCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QProtonNuclearCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QProtonNuclearCrossSection::lastCS=0.; // Last value of the Cross Section
-G4int     G4QProtonNuclearCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QProtonNuclearCrossSection::GetPointer()
-{
-  static G4QProtonNuclearCrossSection theCrossSection; //**Static body of Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QProtonNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom,
-                                                       G4int tgZ, G4int tgN, G4int)
-{
-  static G4double tolerance=0.001;     // Tolerance (0.1%) to consider as "the same mom"
-  static G4int j;                      // A#0f Z/N-records already tested in AMDB
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-#ifdef debug
-  G4cout<<"G4QPrCS::GetCS:>>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG=2212, thresh="<<lastTH<<",Sz="<<colN.size()<<G4endl;
-#endif
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tgN!=lastN || tgZ!=lastZ)         // The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-#ifdef debug
-    G4cout<<"G4QPrCS::GetCS: the amount of records in the AMDB lastI="<<lastI<<G4endl;
-#endif
-    if(lastI) for(G4int i=0; i<lastI; i++) // AMDB exists, try to find the (Z,N) isotope
-    {
-      if(colN[i]==tgN && colZ[i]==tgZ) // Try the record "i" in the AMDB
-      {
-        lastI=i;                       // Remember the index for future fast/last use
-        lastTH =colTH[i];              // The last THreshold (A-dependent)
-#ifdef debug
-        G4cout<<"G4QPrCS::GetCS:*Found* P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-#endif
-        if(pMom<=lastTH)
-        {
-#ifdef debug
-          G4cout<<"G4QPCS::GetCS:Found,P="<<pMom<<" < Threshold="<<lastTH<<",CS=0"<<G4endl;
-#endif
-          return 0.;                   // Energy is below the Threshold value
-        }
-        lastP  =colP [i];              // Last Momentum  (A-dependent)
-        lastCS =colCS[i];              // Last CrossSect (A-dependent)
-        if(std::fabs(lastP-pMom)<tolerance*pMom)
-        //if(lastP==pMom)              // VI do not use tolerance
-        {
-#ifdef debug
-          G4cout<<"..G4QPrCS::GetCS:.DoNothing.P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-#endif
-          //CalculateCrossSection(fCS,-1,j,2212,lastZ,lastN,pMom); // Update param's only
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                     // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef debug
-        G4cout<<"G4QPrCS::G:UpdatDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,j,2212,lastZ,lastN,pMom); // read & update
-#ifdef debug
-        G4cout<<"G4QPrCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<G4endl;
-#endif
-        if(lastCS<=0. && pMom>lastTH)  // Correct the threshold (@@ No intermediate Zeros)
-        {
-#ifdef debug
-          G4cout<<"G4QPrCS::GetCS: New P="<<pMom<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastCS=0.;
-          lastTH=pMom;
-        }
-        break;                         // Go out of the LOOP
-      }
-#ifdef debug
-      G4cout<<"-->G4QPrCrossSec::GetCrosSec: pPDG=2212, j="<<j<<", N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<G4endl;
-#endif
-      j++;                             // Increment a#0f records found in DB
-    }
-#ifdef debug
-    G4cout<<"-?-G4QPrCS::GetCS:RC Z="<<tgZ<<",N="<<tgN<<",in="<<in<<",j="<<j<<" ?"<<G4endl;
-#endif
-    if(!in)                            // This isotope has not been calculated previously
-    {
-#ifdef debug
-      G4cout<<"^^^G4QPrCS::GetCS:CalcNew P="<<pMom<<", f="<<fCS<<", lastI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,j,2212,lastZ,lastN,pMom); //calculate & create
-      if(lastCS>0.)                   // It means that the AMBD was initialized
-      {
-
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef debug
-        G4cout<<"G4QPrCrossSection::GetCrossSect: NewThresh="<<lastTH<<",P="<<pMom<<G4endl;
-#endif
-        colN.push_back(tgN);
-        colZ.push_back(tgZ);
-        colP.push_back(pMom);
-        colTH.push_back(lastTH);
-        colCS.push_back(lastCS);
-#ifdef debug
-        G4cout<<"G4QPrCS::GetCrosSec:recCS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-#endif
-      }
-#ifdef pdebug
-      G4cout<<"G4QPrCS::GetCS:1st,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef debug
-      G4cout<<"G4QPrCS::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-  else if(pMom<=lastTH)
-  {
-#ifdef debug
-    G4cout<<"G4QPrCS::GetCS: Current P="<<pMom<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  else if(std::fabs(lastP-pMom)<tolerance*pMom)
-  //else if(lastP==pMom)               // VI do not use tolerance
-  {
-#ifdef debug
-    G4cout<<"..G4QPCS::GetCS:OldNZ&P="<<lastP<<"="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-#endif
-    return lastCS*millibarn;           // Use theLastCS
-  }
-  else                                 // It is the last used -> use the current tables
-  {
-#ifdef debug
-    G4cout<<"-!-G4QPCS::GetCS:UseCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastCS=CalculateCrossSection(fCS,1,j,2212,lastZ,lastN,pMom); // Only read and UpdateDB
-    lastP=pMom;
-  }
-#ifdef debug
-  G4cout<<"==>G4QPrCS::GetCroSec: P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-#endif
-  return lastCS*millibarn;
-}
-
-// The main member function giving the gamma-A cross section (E in GeV, CS in mb)
-G4double G4QProtonNuclearCrossSection::CalculateCrossSection(G4bool, G4int F, G4int I,
-                                        G4int, G4int targZ, G4int targN, G4double Momentum)
-{
-  static const G4double THmin=27.;     // default minimum Momentum (MeV/c) Threshold
-  static const G4double THmiG=THmin*.001; // minimum Momentum (GeV/c) Threshold
-  static const G4double dP=10.;        // step for the LEN (Low ENergy) table MeV/c
-  static const G4double dPG=dP*.001;   // step for the LEN (Low ENergy) table GeV/c
-  static const G4int    nL=105;        // A#of LEN points in E (step 10 MeV/c)
-  static const G4double Pmin=THmin+(nL-1)*dP; // minP for the HighE part with safety
-  static const G4double Pmax=227000.;  // maxP for the HEN (High ENergy) part 227 GeV
-  static const G4int    nH=224;        // A#of HEN points in lnE
-  static const G4double milP=std::log(Pmin);// Low logarithm energy for the HEN part
-  static const G4double malP=std::log(Pmax);// High logarithm energy (each 2.75 percent)
-  static const G4double dlP=(malP-milP)/(nH-1); // Step in log energy in the HEN part
-  static const G4double milPG=std::log(.001*Pmin);// Low logarithmEnergy for HEN part GeV/c
-  //
-  // Associative memory for acceleration
-  //static std::vector <G4double>  spA;  // shadowing coefficients (A-dependent)
-  static std::vector <G4double*> LEN;  // Vector of pointers to LowEnProtonCrossSection
-  static std::vector <G4double*> HEN;  // Vector of pointers to HighEnProtonCrossSection
-#ifdef debug
-  G4cout<<"G4QProtNCS::CalCS:N="<<targN<<",Z="<<targZ<<",P="<<Momentum<<">"<<THmin<<G4endl;
-#endif
-  if (Momentum<THmin) return 0.;       // @@ This can be dangerouse for the heaviest nuc.?!
-  G4double sigma=0.;
-  if(F&&I) sigma=0.;                   // @@ *!* Fake line *!* to use F & I !!!Temporary!!!
-  G4double A=targN+targZ;              // A of the target
-#ifdef debug
-  G4cout<<"G4QProtNucCS::CalCS: A="<<A<<",F="<<F<<",I="<<I<<",nL="<<nL<<",nH="<<nH<<G4endl;
-#endif
-  if(F<=0)                             // This isotope was not the last used isotop
-  {
-    if(F<0)                            // This isotope was found in DAMDB =======> RETRIEVE
-    {
-      G4int sync=LEN.size();
-      if(sync<=I) G4cerr<<"*!*G4QProtonNuclCS::CalcCrossSect:Sync="<<sync<<"<="<<I<<G4endl;
-      lastLEN=LEN[I];                  // Pointer to prepared LowEnergy cross sections
-      lastHEN=HEN[I];                  // Pointer to prepared High Energy cross sections
-    }
-    else if(Momentum<ThresholdMomentum(targZ,targN)) return 0.; // BelowThreshold -> NotIni
-    else                               // This isotope wasn't calculated before => CREATE
-    {
-      lastLEN = new G4double[nL];      // Allocate memory for the new LEN cross sections
-      lastHEN = new G4double[nH];      // Allocate memory for the new HEN cross sections
-      // --- Instead of making a separate function ---
-      G4double P=THmiG;                // Table threshold in GeV/c
-      for(G4int m=0; m<nL; m++)
-      {
-        lastLEN[m] = CrossSectionLin(targZ, targN, P);
-        P+=dPG;
-      }
-      G4double lP=milPG;
-      for(G4int n=0; n<nH; n++)
-      {
-        lastHEN[n] = CrossSectionLog(targZ, targN, lP);
-        lP+=dlP;
-      }
-#ifdef debug
-      G4cout<<"-*->G4QPr0tNucCS::CalcCS:Tab for Z="<<targZ<<",N="<<targN<<",I="<<I<<G4endl;
-#endif
-      // --- End of possible separate function
-      // *** The synchronization check ***
-      G4int sync=LEN.size();
-      if(sync!=I)
-      {
-        G4cerr<<"***G4QProtonNuclCS::CalcCrossSect: Sinc="<<sync<<"#"<<I<<", Z=" <<targZ
-              <<", N="<<targN<<", F="<<F<<G4endl;
-        //G4Exception("G4ProtonNuclearCS::CalculateCS:","39",FatalException,"overflow DB");
-      }
-      LEN.push_back(lastLEN);          // remember the Low Energy Table
-      HEN.push_back(lastHEN);          // remember the High Energy Table
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW the Magic Formula =================================
-#ifdef debug
-  G4cout<<"G4QPrNCS::CalcCS:lTH="<<lastTH<<",Pmi="<<Pmin<<",dP="<<dP<<",dlP="<<dlP<<G4endl;
-#endif
-  if (Momentum<lastTH) return 0.;      // It must be already checked in the interface class
-  else if (Momentum<Pmin)              // High Energy region
-  {
-#ifdef debug
-    G4cout<<"G4QPrNCS::CalcCS:bLEN A="<<A<<", nL="<<nL<<",TH="<<THmin<<",dP="<<dP<<G4endl;
-#endif
-    if(A<=1.) sigma=0.;
-    else      sigma=EquLinearFit(Momentum,nL,THmin,dP,lastLEN);
-#ifdef debugn
-    if(sigma<0.)
-      G4cout<<"G4QPrNuCS::CalcCS:A="<<A<<",E="<<Momentum<<",T="<<THmin<<",dP="<<dP<<G4endl;
-#endif
-  }
-  else if (Momentum<Pmax)              // High Energy region
-  {
-    G4double lP=std::log(Momentum);
-#ifdef debug
-    G4cout<<"G4QProtNucCS::CalcCS: before HEN nH="<<nH<<",iE="<<milP<<",dlP="<<dlP<<G4endl;
-#endif
-    sigma=EquLinearFit(lP,nH,milP,dlP,lastHEN);
-  }
-  else                                 // UHE region (calculation, not frequent)
-  {
-    G4double P=0.001*Momentum;         // Approximation formula is for P in GeV/c
-    sigma=CrossSectionFormula(targZ, targN, P, std::log(P));
-  }
-#ifdef debug
-  G4cout<<"G4QProtonNuclearCrossSection::CalcCS: CS="<<sigma<<G4endl;
-#endif
-  if(sigma<0.) return 0.;
-  return sigma;
-}
-
-// Electromagnetic momentum-threshold (in MeV/c) 
-G4double G4QProtonNuclearCrossSection::ThresholdMomentum(G4int tZ, G4int tN)
-{
-  static const G4double third=1./3.;
-  static const G4double pM = G4QPDGCode(2212).GetMass(); // Proton mass in MeV
-  static const G4double tpM= pM+pM;       // Doubled proton mass (MeV)
-  G4double tA=tZ+tN;
-  if(tZ<.99 || tN<0.) return 0.;
-  else if(tZ==1 && tN==0) return 800.;    // A threshold on the free proton
-  //G4double dE=1.263*tZ/(1.+std::pow(tA,third));
-  G4double dE=tZ/(1.+std::pow(tA,third)); // Safety for diffused edge of the nucleus (QE)
-  return std::sqrt(dE*(tpM+dE));
-}
-
-// Calculation formula for proton-nuclear inelastic cross-section (mb) (P in GeV/c)
-G4double G4QProtonNuclearCrossSection::CrossSectionLin(G4int tZ, G4int tN, G4double P)
-{
-  G4double sigma=0.;
-  if(P<ThresholdMomentum(tZ,tN)*.001) return sigma;
-  G4double lP=std::log(P);
-  if(tZ==1&&!tN){if(P>.35) sigma=CrossSectionFormula(tZ,tN,P,lP);}// s(pp)=0 below 350Mev/c
-  else if(tZ<93 && tN<239)                // General solution
-  {
-    G4double pex=0.;
-    G4double pos=0.;
-    G4double wid=1.;
-    if(tZ==13 && tN==14)                  // Excited metastable states
-    {
-      pex=230.;
-      pos=.13;
-      wid=8.e-5;
-    }
-    else if(tZ<7)
-    {
-      if(tZ==6 && tN==6)
-      {
-        pex=320.;
-        pos=.14;
-        wid=7.e-6;
-      }
-      else if(tZ==4 && tN==5)
-      {
-        pex=600.;
-        pos=.132;
-        wid=.005;
-      }
-      else if(tZ==3 && tN==4)
-      {
-        pex=280.;
-        pos=.19;
-        wid=.0025;
-      }
-      else if(tZ==3 && tN==3)
-      {
-        pex=370.;
-        pos=.171;
-        wid=.006;
-      }
-      else if(tZ==2 && tN==1)
-      {
-        pex=30.;
-        pos=.22;
-        wid=.0005;
-      }
-    }
-    sigma=CrossSectionFormula(tZ,tN,P,lP);
-    if(pex>0.)
-    {
-      G4double dp=P-pos;
-      sigma+=pex*std::exp(-dp*dp/wid);
-    }
-  }
-  else
-  {
-    G4cerr<<"-Warning-G4QProtonNuclearCroSect::CSLin:*Bad A* Z="<<tZ<<", N="<<tN<<G4endl;
-    sigma=0.;
-  }
-  if(sigma<0.) return 0.;
-  return sigma;  
-}
-
-// Calculation formula for proton-nuclear inelastic cross-section (mb) log(P in GeV/c)
-G4double G4QProtonNuclearCrossSection::CrossSectionLog(G4int tZ, G4int tN, G4double lP)
-{
-  G4double P=std::exp(lP);
-  return CrossSectionFormula(tZ, tN, P, lP);
-}
-// Calculation formula for proton-nuclear inelastic cross-section (mb) log(P in GeV/c)
-G4double G4QProtonNuclearCrossSection::CrossSectionFormula(G4int tZ, G4int tN,
-                                                           G4double P, G4double lP)
-{
-  G4double sigma=0.;
-  if(tZ==1 && !tN)                        // pp interaction
-  {
-    G4double sp=std::sqrt(P);
-    G4double ds=lP-4.2;
-    G4double dp=P-.35;
-    G4double d3=dp*dp*dp;
-    sigma=(33.+.2*ds*ds)/(1.+.4/sp)/(1.+.5/d3/d3);
-  }
-  else if(tZ<93 && tN<146)                // General solution
-  {
-    //G4double lP=std::log(P);            // Already calculated
-    G4double d=lP-4.2;
-    G4double p2=P*P;
-    G4double p4=p2*p2;
-    G4double a=tN+tZ;                       // A of the target
-    G4double al=std::log(a);
-    G4double a2=a*a;
-    G4double a4=a2*a2;
-    G4double a8=a4*a4;
-    G4double a12=a8*a4;
-    G4double a16=a8*a8;
-    G4double c=170./(1.+5./std::exp(al*1.6));
-    G4double dl=al-2.8;
-    G4double r=.3+.2*dl*dl;
-    G4double g=40.*std::exp(al*0.712)/(1.+12.2/a)/(1.+34./a2);
-    G4double e=318.+a4/(1.+.0015*a4/std::exp(al*0.09))/(1.+4.e-28*a12)+
-               8.e-18/(1./a16+1.3e-20)/(1.+1.e-21*a12);
-    G4double s=3.57+.009*a2/(1.+.0001*a2*a);
-    G4double h=(.01/a4+2.5e-6/a)*(1.+7.e-8*a4)/(1.+6.e7/a12/a2);
-    sigma=(c+d*d)/(1.+r/p4)+(g+e*std::exp(-s*P))/(1.+h/p4/p4);
-#ifdef pdebug
-  G4cout<<"G4QProtNucCS::CSForm: A="<<a<<",P="<<P<<",CS="<<sigma<<",c="<<c<<",g="<<g<<",d="
-        <<d<<",r="<<r<<",e="<<e<<",h="<<h<<G4endl;
-#endif
-  }
-  else
-  {
-    G4cerr<<"-Warning-G4QProtonNuclearCroSect::CSForm:*Bad A* Z="<<tZ<<", N="<<tN<<G4endl;
-    sigma=0.;
-  }
-  if(sigma<0.) return 0.;
-  return sigma;  
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QTauNuclearCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QTauNuclearCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,2807 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QTauNuclearCrossSection.cc,v 1.13 2009/05/08 15:16:26 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QTauNuclearCrossSection for gamma+A cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 17-Oct-03
-// 
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-//=========================================================================================
-// Short description: reaction cross-sections for tau-nuclear reactions, which
-// are integrals over virtual equivalent photons photons. The tau-nuclear
-// reactions do not exist in GHAD, so by the present physics lists it is not
-// simulated at all.
-// --------------------------------------------------------------------------------
-
-///#define debug
-#define edebug
-//#define pdebug
-//#define ppdebug
-//#define tdebug
-//#define sdebug
-
-#include "G4QTauNuclearCrossSection.hh"
-
-// Initialization of the
-G4bool    G4QTauNuclearCrossSection::onlyCS=true;// Flag to calculate only CS
-G4double  G4QTauNuclearCrossSection::lastSig=0.;// Last calculated cross section
-G4int     G4QTauNuclearCrossSection::lastL=0;   // Last used in cross section TheLastBin
-G4double  G4QTauNuclearCrossSection::lastE=0.;  // Last used in cross section TheEnergy
-G4int     G4QTauNuclearCrossSection::lastF=0;   // Last used in cross section TheFirstBin
-G4double  G4QTauNuclearCrossSection::lastG=0.;  // Last used in cross section TheGamma
-G4double  G4QTauNuclearCrossSection::lastH=0.;  // LastValue of theHighEnergy A-dependence
-G4double* G4QTauNuclearCrossSection::lastJ1=0;  // Pointer to the LastArray of J1 function
-G4double* G4QTauNuclearCrossSection::lastJ2=0;  // Pointer to the LastArray of J2 function
-G4double* G4QTauNuclearCrossSection::lastJ3=0;  // Pointer to the LastArray of J3 function
-G4int     G4QTauNuclearCrossSection::lastPDG=0; // The last PDG code of the projectile
-G4int     G4QTauNuclearCrossSection::lastN=0;   // The last N of calculated nucleus
-G4int     G4QTauNuclearCrossSection::lastZ=0;   // The last Z of calculated nucleus
-G4double  G4QTauNuclearCrossSection::lastP=0.;  // Last used in cross section Momentum
-G4double  G4QTauNuclearCrossSection::lastTH=0.; // Last threshold momentum
-G4double  G4QTauNuclearCrossSection::lastCS=0.; // Last value of the Cross Section
-G4int     G4QTauNuclearCrossSection::lastI=0;   // The last position in the DAMDB
-
-// Returns Pointer to the G4VQCrossSection class
-G4VQCrossSection* G4QTauNuclearCrossSection::GetPointer()
-{
-  static G4QTauNuclearCrossSection theCrossSection; //**Static body of the Cross Section**
-  return &theCrossSection;
-}
-
-// The main member function giving the collision cross section (P is in IU, CS is in mb)
-// Make pMom in independent units ! (Now it is MeV)
-G4double G4QTauNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom,
-                                                    G4int tgZ, G4int tgN, G4int pPDG)
-{
-  static const G4double mtu=1777.;     // Mass of a tau lepton in MeV
-  static const G4double mtu2=mtu*mtu;  // Squared Mass of a tau-lepton in MeV^2
-  static G4int j;                      // A#0f records found in DB for this projectile
-  static std::vector <G4int>    colPDG;// Vector of the projectile PDG code
-  static std::vector <G4int>    colN;  // Vector of N for calculated nuclei (isotops)
-  static std::vector <G4int>    colZ;  // Vector of Z for calculated nuclei (isotops)
-  static std::vector <G4double> colP;  // Vector of last momenta for the reaction
-  static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
-  static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
-  // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
-  G4double pEn=std::sqrt(pMom*pMom+mtu2)-mtu; // ==> tau-/tau+ kinEnergy
-#ifdef pdebug
-  G4cout<<"G4QTNCS::GetCS:>>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="<<tgN
-        <<"("<<lastN<<"),PDG="<<pPDG<<"("<<lastPDG<<"), T="<<pEn<<"("<<lastTH<<")"<<",Sz="
-        <<colN.size()<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  if(std::abs(pPDG)!=15)
-  {
-#ifdef pdebug
-    G4cout<<"G4QTNCS::GetCS: *** Found pPDG="<<pPDG<<" ====> CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // projectile PDG=0 is a mistake (?!) @@
-  }
-  G4bool in=false;                     // By default the isotope must be found in the AMDB
-  if(tgN!=lastN || tgZ!=lastZ || pPDG!=lastPDG)// The nucleus was not the last used isotope
-  {
-    in = false;                        // By default the isotope haven't be found in AMDB  
-    lastP   = 0.;                      // New momentum history (nothing to compare with)
-    lastPDG = pPDG;                    // The last PDG of the projectile
-    lastN   = tgN;                     // The last N of the calculated nucleus
-    lastZ   = tgZ;                     // The last Z of the calculated nucleus
-    lastI   = colN.size();             // Size of the Associative Memory DB in the heap
-    j  = 0;                            // A#0f records found in DB for this projectile
-    if(lastI) for(G4int i=0; i<lastI; i++) if(colPDG[i]==pPDG) // The partType is found
-    {                                  // The nucleus with projPDG is found in AMDB
-      if(colN[i]==tgN && colZ[i]==tgZ)
-      {
-        lastI=i;
-        lastTH =colTH[i];                // Last THreshold (A-dependent)
-#ifdef pdebug
-        G4cout<<"G4QTNCS::GetCS:*Found* P="<<pMom<<",Threshold="<<lastTH<<",j="<<j<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(pEn<=lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QTNCS::GetCS:Found T="<<pEn<<" < Threshold="<<lastTH<<",CS=0"<<G4endl;
-          //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-          return 0.;                     // Energy is below the Threshold value
-        }
-        lastP  =colP [i];                // Last Momentum  (A-dependent)
-        lastCS =colCS[i];                // Last CrossSect (A-dependent)
-        if(std::fabs(lastP/pMom-1.)<tolerance)
-        {
-#ifdef pdebug
-          G4cout<<"G4QTNCS::GetCS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
-#endif
-          CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // Update param's only
-          return lastCS*millibarn;     // Use theLastCS
-        }
-        in = true;                       // This is the case when the isotop is found in DB
-        // Momentum pMom is in IU ! @@ Units
-#ifdef pdebug
-        G4cout<<"G4QTNCS::G:UpdatDB P="<<pMom<<",f="<<fCS<<",lI="<<lastI<<",j="<<j<<G4endl;
-#endif
-        lastCS=CalculateCrossSection(fCS,-1,j,lastPDG,lastZ,lastN,pMom); // read & update
-#ifdef pdebug
-        G4cout<<"G4QTNCS::GetCrosSec: *****> New (inDB) Calculated CS="<<lastCS<<G4endl;
-        //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-        if(lastCS<=0. && pEn>lastTH)    // Correct the threshold
-        {
-#ifdef pdebug
-          G4cout<<"G4QTNCS::GetCS: New T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-        break;                           // Go out of the LOOP
-      }
-#ifdef pdebug
-      G4cout<<"---G4QTNCrossSec::GetCrosSec:pPDG="<<pPDG<<",j="<<j<<",N="<<colN[i]
-            <<",Z["<<i<<"]="<<colZ[i]<<",cPDG="<<colPDG[i]<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      j++;                             // Increment a#0f records found in DB for this pPDG
-    }
-    if(!in)                            // This nucleus has not been calculated previously
-    {
-#ifdef pdebug
-      G4cout<<"G4QTNCS::GetCrosSec:CalcNew P="<<pMom<<",f="<<fCS<<",lastI="<<lastI<<G4endl;
-#endif
-      //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
-      lastCS=CalculateCrossSection(fCS,0,j,lastPDG,lastZ,lastN,pMom); //calculate & create
-      if(lastCS<=0.)
-      {
-        lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
-#ifdef pdebug
-        G4cout<<"G4QTNCrossSection::GetCrossSect: NewThresh="<<lastTH<<", T="<<pEn<<G4endl;
-#endif
-        if(pEn>lastTH)
-        {
-#ifdef pdebug
-          G4cout<<"G4QTNCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
-#endif
-          lastTH=pEn;
-        }
-      }
-#ifdef pdebug
-      G4cout<<"G4QTNCS::GetCrosSec: New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      colN.push_back(tgN);
-      colZ.push_back(tgZ);
-      colPDG.push_back(pPDG);
-      colP.push_back(pMom);
-      colTH.push_back(lastTH);
-      colCS.push_back(lastCS);
-#ifdef pdebug
-      G4cout<<"G4QTNCS::GetCS:1st,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-      //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-      return lastCS*millibarn;
-    } // End of creation of the new set of parameters
-    else
-    {
-#ifdef pdebug
-      G4cout<<"G4QTNCS::GetCS: Update lastI="<<lastI<<",j="<<j<<G4endl;
-#endif
-      colP[lastI]=pMom;
-      colPDG[lastI]=pPDG;
-      colCS[lastI]=lastCS;
-    }
-  } // End of parameters udate
-  else if(pEn<=lastTH)
-  {
-#ifdef pdebug
-    G4cout<<"G4QTNCS::GetCS: Current T="<<pEn<<" < Threshold="<<lastTH<<", CS=0"<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return 0.;                         // Momentum is below the Threshold Value -> CS=0
-  }
-  else if(std::fabs(lastP/pMom-1.)<tolerance)
-  {
-#ifdef pdebug
-    G4cout<<"G4QTNCS::GetCS:OldCur P="<<pMom<<"="<<pMom<<", CS="<<lastCS*millibarn<<G4endl;
-    //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-    return lastCS*millibarn;     // Use theLastCS
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"G4QTNCS::GetCS:UpdatCur P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",j="<<j<<G4endl;
-#endif
-    lastCS=CalculateCrossSection(fCS,1,j,lastPDG,lastZ,lastN,pMom); // Only UpdateDB
-    lastP=pMom;
-  }
-#ifdef pdebug
-  G4cout<<"G4QTNCS::GetCroSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
-  //CalculateCrossSection(fCS,-27,j,lastPDG,lastZ,lastN,pMom); // DUMMY TEST
-#endif
-  return lastCS*millibarn;
-}
-
-// Gives the threshold energy for different nuclei (min of p- and n-threshold)
-// *******************************************************************************
-// *** This function is the same for all lepto- & photo-nuclear reactions, for ***
-// *** (nu,l) reactions the mass value of the final state lepton must be added ***
-// ***@@ IT IS REASONABLE TO MAKE ADDITIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR @@***
-// *******************************************************************************
-G4double G4QTauNuclearCrossSection::ThresholdEnergy(G4int Z, G4int N, G4int)
-{
-  // CHIPS - Direct GEANT
-  //static const G4double mNeut = G4QPDGCode(2112).GetMass();
-  //static const G4double mProt = G4QPDGCode(2212).GetMass();
-  static const G4double mNeut = G4NucleiProperties::GetNuclearMass(1,0)/MeV;
-  static const G4double mProt = G4NucleiProperties::GetNuclearMass(1,1)/MeV;
-  static const G4double mAlph = G4NucleiProperties::GetNuclearMass(4,2)/MeV;
-  // ---------
-  static const G4double infEn = 9.e27;
-
-  G4int A=Z+N;
-  if(A<1) return infEn;
-  else if(A==1) return 1894114.; // Pi0 threshold in MeV for the proton: T>m+(m^2+2lm)/2M
-  // CHIPS - Direct GEANT
-  //G4double mT= G4QPDGCode(111).GetNuclMass(Z,N,0);
-  G4double mT= 0.;
-  if(G4NucleiProperties::IsInStableTable(A,Z))
-                             mT = G4NucleiProperties::GetNuclearMass(A,Z)/MeV;
-  else return 0.;       // If it is not in the Table of Stable Nuclei, then the Threshold=0
-  // --------- Splitting thresholds
-  G4double mP= infEn;
-  if(Z&&G4NucleiProperties::IsInStableTable(A-1,Z-1))
-          mP = G4NucleiProperties::GetNuclearMass(A-1,Z-1)/MeV; // ResNucMass for a proton
-
-  G4double mN= infEn;
-  if(N&&G4NucleiProperties::IsInStableTable(A-1,Z))
-          mN = G4NucleiProperties::GetNuclearMass(A-1,Z)/MeV;  // ResNucMass for a neutron
-
-  G4double mA= infEn;
-  if(N>1&&Z>1&&G4NucleiProperties::IsInStableTable(A-4,Z-2))
-          mA = G4NucleiProperties::GetNuclearMass(A-4,Z-2)/MeV; // ResNucMass for an alpha
-
-  G4double dP= mP +mProt - mT;
-  G4double dN= mN +mNeut - mT;
-  G4double dA= mA +mAlph - mT;
-#ifdef pdebug
-  G4cout<<"G4TauNucCS::ThreshEn: mP="<<mP<<",dP="<<dP<<",mN="<<mN<<",dN="<<dN<<",mA="
-        <<mA<<",dA="<<dA<<",mT="<<mT<<",A="<<A<<",Z="<<Z<<G4endl;
-#endif
-  if(dP<dN)dN=dP;
-  if(dA<dN)dN=dA;
-  return dN;
-}
-
-// The main member function giving the gamma-A cross section (E_kin in MeV, CS in mb)
-G4double G4QTauNuclearCrossSection::CalculateCrossSection(G4bool CS, G4int F, G4int I,
-                                        G4int, G4int targZ, G4int targN, G4double Momentum)
-{
-  static const G4int nE=336;    // !! If change this, change it in GetFunctions() (*.hh) !!
-  static const G4int mL=nE-1;
-  static const G4double EMi=2.0612;          // Minimum tabulated KineticEnergy of Tau
-  static const G4double EMa=50000.;          // Maximum tabulated Energy of the Tau 
-  static const G4double lEMi=std::log(EMi);  // Minimum tabulatedLogarithmKinEnergy of Tau
-  static const G4double lEMa=std::log(EMa);  // Maximum tabulatedLogarithmKinEnergy of Tau
-  static const G4double dlnE=(lEMa-lEMi)/mL; // Logarithmic table step for TauKinEnergy
-  static const G4double alop=1./137.036/3.14159265; //coeffitient for  E>50000 calculations
-  static const G4double mtu=1777.;           // Mass of a tau lepton in MeV
-  static const G4double mtu2=mtu*mtu;        // Squared Mass of a tau-lepton in MeV^2
-  static const G4double lmtu=std::log(mtu);  // Log of the tau-lepton mass
-  // *** Begin of the Associative memory for acceleration of the cross section calculations
-  static std::vector <G4int> colF;     // Vector of LastStartPosition in Ji-function tables
-  static std::vector <G4double> colH;  // Vector of HighEnergyCoefficients (functional)
-  static std::vector <G4double*> J1;   // Vector of pointers to the J1 tabulated functions
-  static std::vector <G4double*> J2;   // Vector of pointers to the J2 tabulated functions
-  static std::vector <G4double*> J3;   // Vector of pointers to the J3 tabulated functions
-#ifdef pdebug
-  G4cout<<"G4QTauNucCrossSection::CalculateCrossSection: ***Called*** "<<J3.size();
-  if(J3.size()) G4cout<<", p="<<J3[0];
-  G4cout<<G4endl;
-  //if(F==-27) return 0.;
-#endif
-  // *** End of Static Definitions (Associative Memory) ***
-  //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Tau-lepton
-  onlyCS=CS;                           // Flag to calculate only CS (not Si/Bi)
-  G4double TotEnergy2=Momentum*Momentum+mtu2;
-  G4double TotEnergy=std::sqrt(TotEnergy2); // Total energy of the muon
-  lastE=TotEnergy-mtu;               // Kinetic energy of the muon
-#ifdef pdebug
-  G4cout<<"G4QElectronNucCS::CalcCS: P="<<Momentum<<", F="<<F<<", I="<<I<<", Z="<<targZ
-        <<", N="<<targN<<", onlyCS="<<CS<<",E="<<lastE<<",th="<<EMi<<G4endl;
-#endif
-  G4double A=targN+targZ;            // New A (can be different from targetAtomicNumber)
-  if(F<=0)                           // This isotope was not the last used isotop
-  {
-    if(F<0)                          // This isotope was found in DAMDB =========> RETRIEVE
-    {                                // ...........................................========
-      if (lastE<=EMi)                // Energy is below the minimum energy in the table
-      {
-        lastE=0.;
-        lastG=0.;
-        lastSig=0.;
-#ifdef pdebug
-        G4cout<<"---> G4QTauNucCS::CalcCS: Old CS=0  as lastE="<<lastE<<" < "<<EMi<<G4endl;
-#endif
-        return 0.;
-      }
-      lastJ1 =J1[I];                 // Pointer to the prepared J1 function
-      lastJ2 =J2[I];                 // Pointer to the prepared J2 function
-      lastJ3 =J3[I];                 // Pointer to the prepared J3 function
-      lastF  =colF[I];               // Last ZeroPosition in the J-functions
-      lastH  =colH[I];               // Last High Energy Coefficient (A-dependent)
-#ifdef pdebug
-    G4cout<<"---> G4QTauNucCS::CalcCS: CS=0  as lastE="<<lastE<<" < "<<EMi<<G4endl;
-#endif
-   }
-   else                              // This isotope wasn't calculated previously => CREATE
-   {
-      lastJ1 = new G4double[nE];     // Allocate memory for the new J1 function
-      lastJ2 = new G4double[nE];     // Allocate memory for the new J2 function
-      lastJ3 = new G4double[nE];     // Allocate memory for the new J3 function
-      lastF   = GetFunctions(A,lastJ1,lastJ2,lastJ3);//newZeroPos and J-functions filling
-      lastH   = alop*A*(1.-.072*std::log(A)); // like lastSP of G4PhotonuclearCrossSection
-#ifdef pdebug
-      G4cout<<"==>G4QTaNCS::CalcCS:lJ1="<<lastJ1<<",lJ2="<<lastJ2<<",lJ3="<<lastJ3<<G4endl;
-#endif
-      // *** The synchronization check ***
-      G4int sync=J1.size();
-      if(sync!=I) G4cerr<<"***G4QTauNuclearCS::CalcCS: PDG=15, S="<<sync<<" # "<<I<<G4endl;
-      J1.push_back(lastJ1);
-      J2.push_back(lastJ2);
-      J3.push_back(lastJ3);
-      colF.push_back(lastF);
-      colH.push_back(lastH);
-    } // End of creation of the new set of parameters
-  } // End of parameters udate
-  // ============================== NOW Calculate the Cross Section =====================
-  if (lastE<=lastTH || lastE<=EMi)   // Check that muKiE is higher than ThreshE
-  {
-    lastE=0.;
-    lastG=0.;
-    lastSig=0.;
-#ifdef pdebug
-    G4cout<<"---> G4QTauNucCS::CalcCS:CS=0 as T="<<lastE<<"<"<<EMi<<" || "<<lastTH<<G4endl;
-#endif
-    return 0.;
-  }
-  G4double lE=std::log(lastE);            // log(muE) (it is necessary for the fit)
-  lastG=lE-lmtu;                     // Gamma of the muon (used to recover log(muE))
-  G4double dlg1=lastG+lastG-1.;
-  G4double lgoe=lastG/lastE;
-  if(lE<lEMa) // Log fit is made explicitly to fix the last bin for the randomization
-  {
-    G4double shift=(lE-lEMi)/dlnE;
-    G4int    blast=static_cast<int>(shift);
-#ifdef pdebug
-    G4cout<<"-->G4QTauNuclearCS::CalcCrossSect:LOGfit b="<<blast<<",max="<<mL<<",lJ1="
-          <<lastJ1<<",lJ2="<<lastJ2<<",lJ3="<<lastJ3<<G4endl;
-#endif
-    if(blast<0)   blast=0;
-    if(blast>=mL) blast=mL-1;
-    shift-=blast;
-    lastL=blast+1;
-    G4double YNi=dlg1*lastJ1[blast]
-                -lgoe*(lastJ2[blast]+lastJ2[blast]-lastJ3[blast]/lastE);
-    G4double YNj=dlg1*lastJ1[lastL]
-                -lgoe*(lastJ2[lastL]+lastJ2[lastL]-lastJ3[lastL]/lastE);
-    lastSig= YNi+shift*(YNj-YNi);
-    if(lastSig>YNj)lastSig=YNj;
-#ifdef pdebug
-    G4cout<<"G4QTauNCS::CalcCS:S="<<lastSig<<",E="<<lE<<",Yi="<<YNi<<",Yj="<<YNj<<",M="
-          <<lEMa<<G4endl;
-    G4cout<<"G4QTauNCS::CalcCS:s="<<shift<<",Jb="<<lastJ1[blast]<<",J="<<lastJ1[lastL]
-          <<",b="<<blast<<G4endl;
-#endif
-  }
-  else
-  {
-#ifdef pdebug
-    G4cout<<"->G4QTauNucCS::CCS:LOGex="<<lastJ1<<",lJ2="<<lastJ2<<",lJ3="<<lastJ3<<G4endl;
-#endif
-    lastL=mL;
-    G4double term1=lastJ1[mL]+lastH*HighEnergyJ1(lE);
-    G4double term2=lastJ2[mL]+lastH*HighEnergyJ2(lE);
-    G4double term3=lastJ3[mL]+lastH*HighEnergyJ3(lE);
-    lastSig=dlg1*term1-lgoe*(term2+term2-term3/lastE);
-#ifdef pdebug
-    G4cout<<"G4QTauNucCS::CalculateCrossSection:S="<<lastSig<<",lE="<<lE<<",J1="
-          <<lastH*HighEnergyJ1(lE)<<",Pm="<<lastJ1[mL]<<",Fm="<<lastJ2[mL]<<",Fh="
-          <<lastH*HighEnergyJ2(lE)<<",EM="<<lEMa<<G4endl;
-#endif
-  }
-  if(lastSig<0.) lastSig = 0.;
-  return lastSig;
-}
-
-// Calculate the functions for the log(A)
-// ****************************************************************************************
-// *** This tables are the same for all lepto-nuclear reactions, only mass is different ***
-// ***@@ IT'S REASONABLE TO MAKE ADDiTIONAL VIRTUAL CLASS FOR LEPTO-NUCLEAR WITH THIS@@ ***
-// ****************************************************************************************
-G4int G4QTauNuclearCrossSection::GetFunctions(G4double a,G4double*x,G4double*y,G4double*z)
-{
-  static const G4int nN=14;
-  static const G4int nE=336; // !! If change this, change it in GetCrossSection() (*.cc) !!
-  static G4int L[nN]={138, 2, 32, 75, 26, 41, 0, 67, 58, 46, 41, 38, 39, 36};
-  // !! @@ Change it from ln(A) to A approximation !!
-  static G4double A[nN]={1.,2.,3.,4.,6.,7.,9.,12.,16.,27.,63.546,118.71,207.2,238.472};
-  static const G4double P00[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,9.508853e-10,
-5.658793e-09,1.254527e-08,2.393031e-08,4.505061e-08,8.774895e-08,1.786164e-07,3.761182e-07,
-8.030425e-07,1.694925e-06,3.434914e-06,6.495386e-06,1.124554e-05,1.778700e-05,2.601897e-05,
-3.581584e-05,4.713652e-05,6.004450e-05,7.469108e-05,9.129458e-05,1.101221e-04,1.314694e-04,
-1.556326e-04,1.828616e-04,2.132878e-04,2.468359e-04,2.831345e-04,3.214679e-04,3.608144e-04,
-3.999890e-04,4.378523e-04,4.735003e-04,5.063667e-04,5.362207e-04,5.630982e-04,5.872062e-04,
-6.088412e-04,6.283321e-04,6.460063e-04,6.621724e-04,6.771140e-04,6.910895e-04,7.043362e-04,
-7.170748e-04,7.295161e-04,7.418666e-04,7.543331e-04,7.671270e-04,7.804653e-04,7.945670e-04,
-8.096392e-04,8.258506e-04,8.432877e-04,8.619005e-04,8.814550e-04,9.015289e-04,9.215770e-04,
-9.410623e-04,9.595795e-04,9.769243e-04,9.930963e-04,1.008264e-03,1.022722e-03,1.036854e-03,
-1.051075e-03,1.065714e-03,1.080833e-03,1.096129e-03,1.111117e-03,1.125415e-03,1.138885e-03,
-1.151571e-03,1.163605e-03,1.175135e-03,1.186298e-03,1.197206e-03,1.207945e-03,1.218575e-03,
-1.229133e-03,1.239639e-03,1.250100e-03,1.260515e-03,1.270882e-03,1.281197e-03,1.291459e-03,
-1.301668e-03,1.311824e-03,1.321929e-03,1.331985e-03,1.341993e-03,1.351954e-03,1.361871e-03,
-1.371743e-03,1.381573e-03,1.391360e-03,1.401105e-03,1.410808e-03,1.420471e-03,1.430093e-03,
-1.439674e-03,1.449216e-03,1.458718e-03,1.468180e-03,1.477604e-03,1.486990e-03,1.496338e-03,
-1.505649e-03,1.514923e-03,1.524160e-03,1.533363e-03,1.542530e-03,1.551662e-03,1.560761e-03,
-1.569826e-03,1.578859e-03,1.587860e-03,1.596829e-03,1.605768e-03,1.614676e-03,1.623555e-03,
-1.632405e-03,1.641227e-03,1.650021e-03,1.658788e-03,1.667529e-03,1.676244e-03,1.684933e-03,
-1.693598e-03,1.702238e-03,1.710855e-03,1.719449e-03,1.728020e-03,1.736570e-03,1.745097e-03,
-1.753604e-03,1.762091e-03,1.770557e-03,1.779004e-03,1.787432e-03,1.795842e-03,1.804234e-03,
-1.812608e-03,1.820965e-03,1.829305e-03,1.837630e-03,1.845938e-03,1.854231e-03,1.862510e-03,
-1.870774e-03,1.879024e-03,1.887260e-03,1.895483e-03,1.903693e-03,1.911891e-03,1.920077e-03,
-1.928252e-03,1.936415e-03,1.944567e-03,1.952709e-03,1.960841e-03,1.968963e-03,1.977075e-03,
-1.985179e-03,1.993274e-03,2.001361e-03,2.009440e-03,2.017511e-03,2.025576e-03,2.033633e-03,
-2.041684e-03,2.049728e-03,2.057767e-03,2.065800e-03,2.073828e-03,2.081851e-03,2.089870e-03,
-2.097884e-03,2.105894e-03,2.113901e-03,2.121904e-03,2.129905e-03,2.137903e-03,2.145898e-03,
-2.153892e-03,2.161884e-03,2.169874e-03,2.177863e-03,2.185852e-03,2.193839e-03,2.201827e-03,
-2.209815e-03,2.217803e-03,2.225791e-03,2.233781e-03,2.241771e-03,2.249764e-03,2.257757e-03
-  };
-  static const G4double P10[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.283819e-07,
-7.765990e-07,1.754155e-06,3.420430e-06,6.607329e-06,1.324941e-05,2.782040e-05,6.046430e-05,
-1.331907e-04,2.897632e-04,6.045196e-04,1.174950e-03,2.087179e-03,3.381598e-03,5.060191e-03,
-7.118943e-03,9.570755e-03,1.245202e-02,1.582161e-02,1.975854e-02,2.435970e-02,2.973661e-02,
-3.600931e-02,4.329446e-02,5.168438e-02,6.121832e-02,7.184951e-02,8.342000e-02,9.565929e-02,
-1.082176e-01,1.207266e-01,1.328639e-01,1.443966e-01,1.551929e-01,1.652103e-01,1.744709e-01,
-1.830362e-01,1.909891e-01,1.984219e-01,2.054289e-01,2.121037e-01,2.185384e-01,2.248245e-01,
-2.310550e-01,2.373266e-01,2.437434e-01,2.504191e-01,2.574803e-01,2.650677e-01,2.733352e-01,
-2.824425e-01,2.925383e-01,3.037299e-01,3.160413e-01,3.293712e-01,3.434732e-01,3.579873e-01,
-3.725249e-01,3.867626e-01,4.005068e-01,4.137140e-01,4.264807e-01,4.390234e-01,4.516594e-01,
-4.647653e-01,4.786698e-01,4.934691e-01,5.089000e-01,5.244803e-01,5.397990e-01,5.546715e-01,
-5.691075e-01,5.832202e-01,5.971567e-01,6.110630e-01,6.250681e-01,6.392783e-01,6.537749e-01,
-6.686149e-01,6.838333e-01,6.994497e-01,7.154739e-01,7.319115e-01,7.487683e-01,7.660517e-01,
-7.837715e-01,8.019397e-01,8.205697e-01,8.396760e-01,8.592735e-01,8.793773e-01,9.000027e-01,
-9.211652e-01,9.428799e-01,9.651625e-01,9.880287e-01,1.011494e+00,1.035576e+00,1.060290e+00,
-1.085653e+00,1.111684e+00,1.138400e+00,1.165821e+00,1.193964e+00,1.222851e+00,1.252503e+00,
-1.282939e+00,1.314184e+00,1.346258e+00,1.379187e+00,1.412994e+00,1.447705e+00,1.483345e+00,
-1.519941e+00,1.557522e+00,1.596116e+00,1.635752e+00,1.676460e+00,1.718273e+00,1.761223e+00,
-1.805343e+00,1.850668e+00,1.897234e+00,1.945076e+00,1.994234e+00,2.044746e+00,2.096652e+00,
-2.149995e+00,2.204816e+00,2.261160e+00,2.319074e+00,2.378603e+00,2.439796e+00,2.502703e+00,
-2.567376e+00,2.633867e+00,2.702233e+00,2.772528e+00,2.844812e+00,2.919145e+00,2.995588e+00,
-3.074206e+00,3.155064e+00,3.238230e+00,3.323776e+00,3.411772e+00,3.502294e+00,3.595419e+00,
-3.691226e+00,3.789797e+00,3.891216e+00,3.995572e+00,4.102954e+00,4.213454e+00,4.327169e+00,
-4.444197e+00,4.564641e+00,4.688605e+00,4.816199e+00,4.947534e+00,5.082726e+00,5.221895e+00,
-5.365163e+00,5.512657e+00,5.664510e+00,5.820856e+00,5.981835e+00,6.147591e+00,6.318273e+00,
-6.494036e+00,6.675037e+00,6.861440e+00,7.053415e+00,7.251136e+00,7.454784e+00,7.664543e+00,
-7.880607e+00,8.103173e+00,8.332447e+00,8.568639e+00,8.811968e+00,9.062659e+00,9.320945e+00,
-9.587066e+00,9.861271e+00,1.014381e+01,1.043496e+01,1.073499e+01,1.104417e+01,1.136281e+01,
-1.169119e+01,1.202964e+01,1.237847e+01,1.273802e+01,1.310862e+01,1.349063e+01,1.388442e+01
-  };
-  static const G4double P20[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.733331e-05,
-1.065910e-04,2.453685e-04,4.892572e-04,9.701734e-04,2.003481e-03,4.340178e-03,9.736092e-03,
-2.212593e-02,4.961468e-02,1.065569e-01,2.128855e-01,3.880845e-01,6.442424e-01,9.865527e-01,
-1.419220e+00,1.950269e+00,2.593461e+00,3.368727e+00,4.302302e+00,5.426842e+00,6.781267e+00,
-8.409767e+00,1.035907e+01,1.267273e+01,1.538236e+01,1.849628e+01,2.198896e+01,2.579646e+01,
-2.982262e+01,3.395557e+01,3.808836e+01,4.213540e+01,4.604002e+01,4.977393e+01,5.333143e+01,
-5.672268e+01,5.996799e+01,6.309401e+01,6.613132e+01,6.911336e+01,7.207629e+01,7.505958e+01,
-7.810711e+01,8.126885e+01,8.460302e+01,8.817811e+01,9.207556e+01,9.639190e+01,1.012394e+02,
-1.067429e+02,1.130306e+02,1.202141e+02,1.283582e+02,1.374455e+02,1.473530e+02,1.578615e+02,
-1.687086e+02,1.796566e+02,1.905484e+02,2.013353e+02,2.120818e+02,2.229636e+02,2.342629e+02,
-2.463419e+02,2.595499e+02,2.740378e+02,2.896053e+02,3.058034e+02,3.222162e+02,3.386384e+02,
-3.550669e+02,3.716193e+02,3.884660e+02,4.057911e+02,4.237738e+02,4.425787e+02,4.623501e+02,
-4.832092e+02,5.052552e+02,5.285702e+02,5.532261e+02,5.792925e+02,6.068416e+02,6.359524e+02,
-6.667118e+02,6.992147e+02,7.335640e+02,7.698696e+02,8.082482e+02,8.488235e+02,8.917255e+02,
-9.370917e+02,9.850666e+02,1.035803e+03,1.089461e+03,1.146211e+03,1.206233e+03,1.269717e+03,
-1.336863e+03,1.407884e+03,1.483006e+03,1.562468e+03,1.646521e+03,1.735436e+03,1.829495e+03,
-1.929001e+03,2.034272e+03,2.145649e+03,2.263490e+03,2.388177e+03,2.520114e+03,2.659730e+03,
-2.807480e+03,2.963847e+03,3.129341e+03,3.304506e+03,3.489917e+03,3.686187e+03,3.893961e+03,
-4.113928e+03,4.346817e+03,4.593401e+03,4.854501e+03,5.130987e+03,5.423784e+03,5.733871e+03,
-6.062289e+03,6.410140e+03,6.778595e+03,7.168898e+03,7.582366e+03,8.020398e+03,8.484480e+03,
-8.976188e+03,9.497193e+03,1.004927e+04,1.063431e+04,1.125430e+04,1.191137e+04,1.260778e+04,
-1.334591e+04,1.412831e+04,1.495767e+04,1.583685e+04,1.676890e+04,1.775703e+04,1.880469e+04,
-1.991550e+04,2.109332e+04,2.234227e+04,2.366670e+04,2.507122e+04,2.656077e+04,2.814056e+04,
-2.981612e+04,3.159335e+04,3.347850e+04,3.547822e+04,3.759955e+04,3.985000e+04,4.223753e+04,
-4.477059e+04,4.745818e+04,5.030985e+04,5.333573e+04,5.654661e+04,5.995394e+04,6.356990e+04,
-6.740741e+04,7.148022e+04,7.580293e+04,8.039107e+04,8.526113e+04,9.043063e+04,9.591822e+04,
-1.017437e+05,1.079281e+05,1.144938e+05,1.214646e+05,1.288658e+05,1.367242e+05,1.450685e+05,
-1.539289e+05,1.633378e+05,1.733295e+05,1.839405e+05,1.952096e+05,2.071781e+05,2.198898e+05,
-2.333914e+05,2.477325e+05,2.629658e+05,2.791474e+05,2.963371e+05,3.145981e+05,3.339980e+05
-  };
-  static const G4double P01[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,2.954211e-05,9.596085e-05,1.664204e-04,2.410445e-04,
-3.199604e-04,4.032996e-04,4.911973e-04,5.837930e-04,6.812306e-04,7.836580e-04,8.913164e-04,
-1.004812e-03,1.124386e-03,1.250223e-03,1.382516e-03,1.521462e-03,1.667264e-03,1.820132e-03,
-1.980284e-03,2.147940e-03,2.320852e-03,2.496690e-03,2.675545e-03,2.857507e-03,3.042673e-03,
-3.231140e-03,3.423010e-03,3.617256e-03,3.809214e-03,3.998293e-03,4.184404e-03,4.367457e-03,
-4.547357e-03,4.723746e-03,4.895195e-03,5.061371e-03,5.222113e-03,5.377254e-03,5.526693e-03,
-5.670813e-03,5.809570e-03,5.942803e-03,6.070341e-03,6.192646e-03,6.310189e-03,6.422827e-03,
-6.530413e-03,6.633483e-03,6.732384e-03,6.826989e-03,6.917342e-03,7.004039e-03,7.087050e-03,
-7.166336e-03,7.242378e-03,7.315204e-03,7.384814e-03,7.451592e-03,7.515520e-03,7.576720e-03,
-7.635427e-03,7.691607e-03,7.745512e-03,7.797147e-03,7.846671e-03,7.894156e-03,7.939695e-03,
-7.983384e-03,8.025299e-03,8.065520e-03,8.104132e-03,8.141187e-03,8.176782e-03,8.210952e-03,
-8.243782e-03,8.275321e-03,8.305622e-03,8.334750e-03,8.362747e-03,8.389662e-03,8.415545e-03,
-8.440441e-03,8.464389e-03,8.487429e-03,8.509600e-03,8.530939e-03,8.551482e-03,8.571260e-03,
-8.590305e-03,8.608648e-03,8.626317e-03,8.643340e-03,8.659743e-03,8.675552e-03,8.690789e-03,
-8.705479e-03,8.719642e-03,8.733300e-03,8.746472e-03,8.759179e-03,8.771437e-03,8.783264e-03,
-8.794677e-03,8.805692e-03,8.816325e-03,8.826589e-03,8.836500e-03,8.846069e-03,8.855311e-03,
-8.864237e-03,8.872859e-03,8.881188e-03,8.889236e-03,8.897012e-03,8.904527e-03,8.911790e-03,
-8.918810e-03,8.925597e-03,8.932158e-03,8.938501e-03,8.944635e-03,8.950567e-03,8.956303e-03,
-8.961852e-03,8.967219e-03,8.972411e-03,8.977434e-03,8.982294e-03,8.986998e-03,8.991551e-03,
-8.995958e-03,9.000224e-03,9.004354e-03,9.008353e-03,9.012227e-03,9.015984e-03,9.019633e-03,
-9.023195e-03,9.026706e-03,9.030244e-03,9.033965e-03,9.038176e-03,9.043389e-03,9.050276e-03,
-9.059416e-03,9.071006e-03,9.084867e-03,9.100704e-03,9.118316e-03,9.137649e-03,9.158778e-03,
-9.181864e-03,9.207136e-03,9.234874e-03,9.265398e-03,9.299061e-03,9.336228e-03,9.377254e-03,
-9.422441e-03,9.471977e-03,9.525862e-03,9.583820e-03,9.645241e-03,9.709165e-03,9.774343e-03,
-9.839376e-03,9.902903e-03,9.963776e-03,1.002117e-02,1.007462e-02,1.012399e-02,1.016939e-02,
-1.021107e-02,1.024941e-02,1.028482e-02,1.031771e-02,1.034850e-02,1.037759e-02,1.040535e-02,
-1.043213e-02,1.045828e-02,1.048413e-02,1.051000e-02,1.053619e-02,1.056302e-02,1.059074e-02,
-1.061960e-02,1.064973e-02,1.068119e-02,1.071387e-02,1.074750e-02,1.078164e-02,1.081576e-02,
-1.084929e-02,1.088177e-02,1.091287e-02,1.094245e-02,1.097052e-02,1.099725e-02,1.102293e-02,
-1.104790e-02,1.107250e-02,1.109694e-02,1.112120e-02,1.114507e-02,1.116831e-02,1.119086e-02,
-1.121276e-02,1.123411e-02,1.125504e-02,1.127562e-02,1.129594e-02,1.131605e-02,1.133598e-02,
-1.135576e-02,1.137542e-02,1.139497e-02,1.141444e-02,1.143383e-02,1.145315e-02,1.147240e-02,
-1.149159e-02,1.151073e-02,1.152981e-02,1.154882e-02,1.156778e-02,1.158668e-02,1.160552e-02,
-1.162429e-02,1.164299e-02,1.166162e-02,1.168018e-02,1.169867e-02,1.171708e-02,1.173542e-02,
-1.175368e-02,1.177187e-02,1.178998e-02,1.180802e-02,1.182597e-02,1.184385e-02,1.186166e-02,
-1.187939e-02,1.189704e-02,1.191463e-02,1.193214e-02,1.194957e-02,1.196694e-02,1.198424e-02,
-1.200146e-02,1.201862e-02,1.203572e-02,1.205275e-02,1.206972e-02,1.208662e-02,1.210346e-02,
-1.212025e-02,1.213697e-02,1.215364e-02,1.217025e-02,1.218681e-02,1.220331e-02,1.221976e-02,
-1.223616e-02,1.225251e-02,1.226881e-02,1.228506e-02,1.230127e-02,1.231743e-02,1.233355e-02,
-1.234962e-02,1.236566e-02,1.238165e-02,1.239760e-02,1.241351e-02,1.242939e-02,1.244523e-02,
-1.246103e-02,1.247679e-02,1.249253e-02,1.250823e-02,1.252390e-02,1.253953e-02,1.255514e-02,
-1.257072e-02,1.258627e-02,1.260179e-02,1.261728e-02,1.263275e-02,1.264819e-02,1.266361e-02,
-1.267901e-02,1.269438e-02,1.270973e-02,1.272506e-02,1.274037e-02,1.275566e-02,1.277093e-02,
-1.278618e-02,1.280141e-02,1.281663e-02,1.283183e-02,1.284702e-02,1.286219e-02,1.287735e-02,
-1.289249e-02,1.290763e-02,1.292275e-02,1.293786e-02,1.295296e-02,1.296804e-02,1.298312e-02,
-1.299819e-02,1.301326e-02,1.302831e-02,1.304336e-02,1.305840e-02,1.307344e-02,1.308847e-02,
-1.310350e-02,1.311853e-02,1.313355e-02,1.314857e-02,1.316358e-02,1.317860e-02,1.319362e-02,
-1.320863e-02,1.322365e-02,1.323866e-02,1.325368e-02,1.326870e-02,1.328372e-02,1.329875e-02
-  };
-  static const G4double P11[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,5.142599e-05,1.703905e-04,3.015318e-04,4.458151e-04,
-6.042723e-04,7.780058e-04,9.681932e-04,1.176093e-03,1.403047e-03,1.650491e-03,1.920179e-03,
-2.214927e-03,2.536789e-03,2.887800e-03,3.270133e-03,3.686105e-03,4.138189e-03,4.629026e-03,
-5.161429e-03,5.738401e-03,6.354262e-03,7.002399e-03,7.684563e-03,8.402602e-03,9.158473e-03,
-9.954245e-03,1.079211e-02,1.166922e-02,1.256544e-02,1.347811e-02,1.440680e-02,1.535097e-02,
-1.631002e-02,1.728180e-02,1.825789e-02,1.923543e-02,2.021240e-02,2.118654e-02,2.215588e-02,
-2.312152e-02,2.408180e-02,2.503409e-02,2.597551e-02,2.690781e-02,2.783303e-02,2.874848e-02,
-2.965126e-02,3.054421e-02,3.142876e-02,3.230222e-02,3.316333e-02,3.401622e-02,3.485909e-02,
-3.568998e-02,3.651243e-02,3.732532e-02,3.812714e-02,3.892091e-02,3.970501e-02,4.047958e-02,
-4.124621e-02,4.200316e-02,4.275250e-02,4.349304e-02,4.422580e-02,4.495060e-02,4.566768e-02,
-4.637734e-02,4.707965e-02,4.777482e-02,4.846319e-02,4.914460e-02,4.981971e-02,5.048815e-02,
-5.115054e-02,5.180682e-02,5.245710e-02,5.310179e-02,5.374084e-02,5.437439e-02,5.500269e-02,
-5.562592e-02,5.624410e-02,5.685739e-02,5.746597e-02,5.806996e-02,5.866950e-02,5.926469e-02,
-5.985567e-02,6.044255e-02,6.102544e-02,6.160445e-02,6.217970e-02,6.275130e-02,6.331935e-02,
-6.388395e-02,6.444520e-02,6.500318e-02,6.555801e-02,6.610977e-02,6.665854e-02,6.720441e-02,
-6.774747e-02,6.828779e-02,6.882546e-02,6.936055e-02,6.989314e-02,7.042330e-02,7.095109e-02,
-7.147659e-02,7.199987e-02,7.252099e-02,7.304001e-02,7.355699e-02,7.407199e-02,7.458508e-02,
-7.509630e-02,7.560571e-02,7.611336e-02,7.661930e-02,7.712359e-02,7.762628e-02,7.812740e-02,
-7.862701e-02,7.912515e-02,7.962186e-02,8.011718e-02,8.061117e-02,8.110391e-02,8.159563e-02,
-8.208616e-02,8.257558e-02,8.306395e-02,8.355139e-02,8.403811e-02,8.452456e-02,8.501170e-02,
-8.550172e-02,8.599961e-02,8.651664e-02,8.707738e-02,8.773149e-02,8.856633e-02,8.970318e-02,
-9.125803e-02,9.328999e-02,9.579442e-02,9.874335e-02,1.021230e-01,1.059470e-01,1.102541e-01,
-1.151048e-01,1.205775e-01,1.267685e-01,1.337904e-01,1.417717e-01,1.508542e-01,1.611870e-01,
-1.729166e-01,1.861694e-01,2.010268e-01,2.174967e-01,2.354851e-01,2.547793e-01,2.750538e-01,
-2.959020e-01,3.168904e-01,3.376171e-01,3.577581e-01,3.770900e-01,3.954917e-01,4.129288e-01,
-4.294320e-01,4.450769e-01,4.599676e-01,4.742255e-01,4.879821e-01,5.013750e-01,5.145470e-01,
-5.276464e-01,5.408286e-01,5.542584e-01,5.681099e-01,5.825682e-01,5.978263e-01,6.140796e-01,
-6.315125e-01,6.502781e-01,6.704690e-01,6.920855e-01,7.150085e-01,7.389925e-01,7.636899e-01,
-7.887092e-01,8.136834e-01,8.383295e-01,8.624834e-01,8.861115e-01,9.093041e-01,9.322622e-01,
-9.552702e-01,9.786340e-01,1.002560e+00,1.027034e+00,1.051840e+00,1.076745e+00,1.101644e+00,
-1.126566e+00,1.151612e+00,1.176902e+00,1.202547e+00,1.228636e+00,1.255240e+00,1.282420e+00,
-1.310225e+00,1.338704e+00,1.367897e+00,1.397846e+00,1.428588e+00,1.460157e+00,1.492584e+00,
-1.525899e+00,1.560130e+00,1.595301e+00,1.631438e+00,1.668565e+00,1.706703e+00,1.745877e+00,
-1.786109e+00,1.827424e+00,1.869844e+00,1.913396e+00,1.958105e+00,2.003998e+00,2.051103e+00,
-2.099449e+00,2.149066e+00,2.199987e+00,2.252243e+00,2.305870e+00,2.360904e+00,2.417381e+00,
-2.475340e+00,2.534822e+00,2.595869e+00,2.658523e+00,2.722829e+00,2.788834e+00,2.856587e+00,
-2.926136e+00,2.997533e+00,3.070832e+00,3.146088e+00,3.223356e+00,3.302697e+00,3.384170e+00,
-3.467838e+00,3.553766e+00,3.642020e+00,3.732669e+00,3.825784e+00,3.921439e+00,4.019708e+00,
-4.120669e+00,4.224403e+00,4.330993e+00,4.440524e+00,4.553084e+00,4.668764e+00,4.787659e+00,
-4.909864e+00,5.035479e+00,5.164607e+00,5.297355e+00,5.433831e+00,5.574149e+00,5.718425e+00,
-5.866778e+00,6.019333e+00,6.176218e+00,6.337563e+00,6.503506e+00,6.674186e+00,6.849749e+00,
-7.030342e+00,7.216120e+00,7.407242e+00,7.603871e+00,7.806178e+00,8.014335e+00,8.228524e+00,
-8.448929e+00,8.675743e+00,8.909163e+00,9.149393e+00,9.396644e+00,9.651133e+00,9.913084e+00,
-1.018273e+01,1.046031e+01,1.074606e+01,1.104026e+01,1.134314e+01,1.165500e+01,1.197610e+01,
-1.230674e+01,1.264721e+01,1.299783e+01,1.335890e+01,1.373077e+01,1.411376e+01,1.450823e+01,
-1.491454e+01,1.533306e+01,1.576417e+01,1.620828e+01,1.666579e+01,1.713713e+01,1.762273e+01,
-1.812306e+01,1.863856e+01,1.916973e+01,1.971706e+01,2.028107e+01,2.086229e+01,2.146127e+01,
-2.207856e+01,2.271477e+01,2.337048e+01,2.404633e+01,2.474296e+01,2.546103e+01,2.620123e+01
-  };
-  static const G4double P21[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,8.952320e-05,3.026305e-04,5.467439e-04,8.257448e-04,
-1.143952e-03,1.506169e-03,1.917732e-03,2.384568e-03,2.913257e-03,3.511097e-03,4.186748e-03,
-4.952288e-03,5.818752e-03,6.797967e-03,7.903042e-03,9.148496e-03,1.055041e-02,1.212656e-02,
-1.389665e-02,1.588243e-02,1.807616e-02,2.046542e-02,2.306750e-02,2.590121e-02,2.898706e-02,
-3.234740e-02,3.600656e-02,3.996753e-02,4.415218e-02,4.855802e-02,5.319252e-02,5.806289e-02,
-6.317608e-02,6.853047e-02,7.408791e-02,7.983893e-02,8.577731e-02,9.189460e-02,9.818275e-02,
-1.046534e-01,1.112996e-01,1.181068e-01,1.250565e-01,1.321638e-01,1.394471e-01,1.468879e-01,
-1.544640e-01,1.622007e-01,1.701127e-01,1.781777e-01,1.863853e-01,1.947763e-01,2.033353e-01,
-2.120436e-01,2.209398e-01,2.300138e-01,2.392506e-01,2.486866e-01,2.583048e-01,2.681087e-01,
-2.781207e-01,2.883204e-01,2.987380e-01,3.093594e-01,3.202022e-01,3.312664e-01,3.425587e-01,
-3.540870e-01,3.658557e-01,3.778718e-01,3.901450e-01,4.026762e-01,4.154819e-01,4.285591e-01,
-4.419246e-01,4.555823e-01,4.695390e-01,4.838088e-01,4.983965e-01,5.133109e-01,5.285640e-01,
-5.441662e-01,5.601251e-01,5.764518e-01,5.931578e-01,6.102545e-01,6.277536e-01,6.456668e-01,
-6.640062e-01,6.827845e-01,7.020148e-01,7.217106e-01,7.418860e-01,7.625554e-01,7.837337e-01,
-8.054363e-01,8.276787e-01,8.504769e-01,8.738478e-01,8.978095e-01,9.223790e-01,9.475746e-01,
-9.734160e-01,9.999218e-01,1.027113e+00,1.055010e+00,1.083634e+00,1.113008e+00,1.143153e+00,
-1.174094e+00,1.205855e+00,1.238460e+00,1.271935e+00,1.306308e+00,1.341604e+00,1.377853e+00,
-1.415083e+00,1.453324e+00,1.492606e+00,1.532963e+00,1.574426e+00,1.617029e+00,1.660807e+00,
-1.705796e+00,1.752032e+00,1.799555e+00,1.848402e+00,1.898615e+00,1.950243e+00,2.003346e+00,
-2.057951e+00,2.114105e+00,2.171862e+00,2.231280e+00,2.292433e+00,2.355430e+00,2.420453e+00,
-2.487871e+00,2.558479e+00,2.634058e+00,2.718555e+00,2.820170e+00,2.953872e+00,3.141548e+00,
-3.406090e+00,3.762360e+00,4.214883e+00,4.764020e+00,5.412646e+00,6.169038e+00,7.047144e+00,
-8.066375e+00,9.251616e+00,1.063353e+01,1.224899e+01,1.414150e+01,1.636113e+01,1.896376e+01,
-2.200875e+01,2.555457e+01,2.965149e+01,3.433211e+01,3.960073e+01,4.542475e+01,5.173186e+01,
-5.841585e+01,6.535063e+01,7.240850e+01,7.947682e+01,8.646893e+01,9.332839e+01,1.000274e+02,
-1.065618e+02,1.129463e+02,1.192092e+02,1.253898e+02,1.315359e+02,1.377029e+02,1.439541e+02,
-1.503616e+02,1.570072e+02,1.639851e+02,1.714029e+02,1.793829e+02,1.880626e+02,1.975917e+02,
-2.081256e+02,2.198120e+02,2.327710e+02,2.470695e+02,2.626961e+02,2.795460e+02,2.974276e+02,
-3.160962e+02,3.353012e+02,3.548335e+02,3.745617e+02,3.944512e+02,4.145723e+02,4.351002e+02,
-4.563033e+02,4.784941e+02,5.019153e+02,5.266048e+02,5.523951e+02,5.790813e+02,6.065771e+02,
-6.349401e+02,6.643178e+02,6.948910e+02,7.268416e+02,7.603404e+02,7.955471e+02,8.326159e+02,
-8.716998e+02,9.129543e+02,9.565398e+02,1.002622e+03,1.051371e+03,1.102964e+03,1.157582e+03,
-1.215413e+03,1.276652e+03,1.341501e+03,1.410169e+03,1.482875e+03,1.559849e+03,1.641333e+03,
-1.727580e+03,1.818857e+03,1.915447e+03,2.017647e+03,2.125773e+03,2.240159e+03,2.361159e+03,
-2.489147e+03,2.624520e+03,2.767701e+03,2.919136e+03,3.079298e+03,3.248691e+03,3.427846e+03,
-3.617331e+03,3.817744e+03,4.029722e+03,4.253941e+03,4.491115e+03,4.742005e+03,5.007417e+03,
-5.288205e+03,5.585276e+03,5.899591e+03,6.232171e+03,6.584097e+03,6.956519e+03,7.350654e+03,
-7.767793e+03,8.209307e+03,8.676651e+03,9.171366e+03,9.695090e+03,1.024956e+04,1.083661e+04,
-1.145821e+04,1.211642e+04,1.281345e+04,1.355162e+04,1.433343e+04,1.516149e+04,1.603861e+04,
-1.696773e+04,1.795200e+04,1.899477e+04,2.009956e+04,2.127014e+04,2.251050e+04,2.382486e+04,
-2.521774e+04,2.669389e+04,2.825838e+04,2.991659e+04,3.167424e+04,3.353738e+04,3.551246e+04,
-3.760630e+04,3.982616e+04,4.217976e+04,4.467528e+04,4.732140e+04,5.012737e+04,5.310298e+04,
-5.625866e+04,5.960545e+04,6.315512e+04,6.692013e+04,7.091374e+04,7.515004e+04,7.964399e+04,
-8.441148e+04,8.946939e+04,9.483567e+04,1.005294e+05,1.065708e+05,1.129813e+05,1.197840e+05,
-1.270030e+05,1.346642e+05,1.427950e+05,1.514246e+05,1.605840e+05,1.703061e+05,1.806259e+05,
-1.915807e+05,2.032100e+05,2.155559e+05,2.286629e+05,2.425788e+05,2.573538e+05,2.730419e+05,
-2.896999e+05,3.073887e+05,3.261726e+05,3.461204e+05,3.673050e+05,3.898039e+05,4.136996e+05,
-4.390797e+05,4.660376e+05,4.946723e+05,5.250894e+05,5.574009e+05,5.917262e+05,6.281921e+05
-  };
-  static const G4double P02[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,4.420900e-05,1.361817e-04,
-2.266269e-04,3.153714e-04,4.017279e-04,4.855357e-04,5.667169e-04,6.451910e-04,7.209150e-04,
-7.941235e-04,8.648089e-04,9.328938e-04,9.982988e-04,1.061300e-03,1.122181e-03,1.180878e-03,
-1.237327e-03,1.291871e-03,1.344747e-03,1.395901e-03,1.445399e-03,1.493678e-03,1.540753e-03,
-1.586647e-03,1.631791e-03,1.676264e-03,1.720139e-03,1.763868e-03,1.807513e-03,1.851337e-03,
-1.895742e-03,1.940822e-03,1.987146e-03,2.034882e-03,2.084594e-03,2.136652e-03,2.191607e-03,
-2.250027e-03,2.312541e-03,2.379824e-03,2.452669e-03,2.531743e-03,2.617905e-03,2.711676e-03,
-2.813598e-03,2.923687e-03,3.041745e-03,3.166730e-03,3.297379e-03,3.432040e-03,3.568683e-03,
-3.705488e-03,3.840963e-03,3.973777e-03,4.102940e-03,4.227769e-03,4.347808e-03,4.462773e-03,
-4.572513e-03,4.676977e-03,4.776189e-03,4.870234e-03,4.959240e-03,5.043366e-03,5.122795e-03,
-5.197723e-03,5.268357e-03,5.334907e-03,5.397586e-03,5.456607e-03,5.512171e-03,5.564479e-03,
-5.613724e-03,5.660086e-03,5.703745e-03,5.744862e-03,5.783597e-03,5.820098e-03,5.854504e-03,
-5.886946e-03,5.917549e-03,5.946428e-03,5.973693e-03,5.999444e-03,6.023779e-03,6.046787e-03,
-6.068552e-03,6.089154e-03,6.108666e-03,6.127159e-03,6.144698e-03,6.161344e-03,6.177157e-03,
-6.192190e-03,6.206496e-03,6.220122e-03,6.233117e-03,6.245523e-03,6.257148e-03,6.267814e-03,
-6.278332e-03,6.288730e-03,6.299041e-03,6.309306e-03,6.319568e-03,6.329890e-03,6.340346e-03,
-6.351039e-03,6.362103e-03,6.373708e-03,6.386067e-03,6.399432e-03,6.414085e-03,6.430316e-03,
-6.448411e-03,6.468623e-03,6.491167e-03,6.516222e-03,6.543944e-03,6.574484e-03,6.608010e-03,
-6.644722e-03,6.684861e-03,6.728714e-03,6.776610e-03,6.828910e-03,6.885984e-03,6.948178e-03,
-7.015759e-03,7.088847e-03,7.167329e-03,7.250781e-03,7.338407e-03,7.429041e-03,7.521215e-03,
-7.613307e-03,7.703728e-03,7.791106e-03,7.874414e-03,7.953011e-03,8.026631e-03,8.095312e-03,
-8.159311e-03,8.219026e-03,8.274939e-03,8.327565e-03,8.377428e-03,8.425044e-03,8.470912e-03,
-8.515509e-03,8.559288e-03,8.602682e-03,8.646088e-03,8.689867e-03,8.734324e-03,8.779691e-03,
-8.826098e-03,8.873546e-03,8.921888e-03,8.970825e-03,9.019927e-03,9.068684e-03,9.116571e-03,
-9.163124e-03,9.207992e-03,9.250957e-03,9.291937e-03,9.330961e-03,9.368142e-03,9.403647e-03,
-9.437672e-03,9.470422e-03,9.502096e-03,9.532883e-03,9.562954e-03,9.592457e-03,9.621524e-03,
-9.650264e-03,9.678770e-03,9.707115e-03,9.735359e-03,9.763547e-03,9.791714e-03,9.819881e-03,
-9.848065e-03,9.876273e-03,9.904506e-03,9.932763e-03,9.961037e-03,9.989320e-03,1.001760e-02,
-1.004587e-02,1.007412e-02,1.010233e-02,1.013050e-02,1.015861e-02,1.018666e-02,1.021463e-02,
-1.024251e-02,1.027031e-02,1.029800e-02,1.032560e-02,1.035308e-02,1.038046e-02,1.040771e-02,
-1.043486e-02,1.046188e-02,1.048878e-02,1.051555e-02,1.054221e-02,1.056874e-02,1.059515e-02,
-1.062144e-02,1.064761e-02,1.067366e-02,1.069959e-02,1.072540e-02,1.075110e-02,1.077668e-02,
-1.080215e-02,1.082752e-02,1.085277e-02,1.087792e-02,1.090296e-02,1.092791e-02,1.095275e-02,
-1.097749e-02,1.100214e-02,1.102670e-02,1.105116e-02,1.107554e-02,1.109983e-02,1.112403e-02,
-1.114815e-02,1.117219e-02,1.119615e-02,1.122003e-02,1.124383e-02,1.126757e-02,1.129123e-02,
-1.131482e-02,1.133834e-02,1.136179e-02,1.138518e-02,1.140851e-02,1.143178e-02,1.145498e-02,
-1.147813e-02,1.150122e-02,1.152426e-02,1.154724e-02,1.157017e-02,1.159305e-02,1.161588e-02,
-1.163867e-02,1.166140e-02,1.168409e-02,1.170674e-02,1.172935e-02,1.175192e-02,1.177444e-02,
-1.179693e-02,1.181938e-02,1.184180e-02,1.186418e-02,1.188652e-02,1.190884e-02,1.193113e-02,
-1.195338e-02,1.197561e-02,1.199781e-02,1.201998e-02,1.204213e-02,1.206425e-02,1.208635e-02,
-1.210843e-02,1.213049e-02,1.215253e-02,1.217455e-02,1.219655e-02,1.221854e-02,1.224051e-02,
-1.226246e-02,1.228440e-02,1.230633e-02,1.232825e-02,1.235016e-02,1.237205e-02,1.239394e-02,
-1.241582e-02,1.243769e-02,1.245956e-02,1.248142e-02,1.250328e-02,1.252513e-02,1.254699e-02,
-1.256884e-02,1.259069e-02,1.261254e-02,1.263439e-02,1.265624e-02,1.267809e-02,1.269995e-02
-};
-  static const G4double P12[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,2.225283e-04,6.969163e-04,
-1.179082e-03,1.668007e-03,2.159647e-03,2.652656e-03,3.146065e-03,3.638813e-03,4.130000e-03,
-4.620522e-03,5.109707e-03,5.596353e-03,6.079144e-03,6.559396e-03,7.038618e-03,7.515675e-03,
-7.989358e-03,8.461919e-03,8.934839e-03,9.407147e-03,9.878911e-03,1.035387e-02,1.083189e-02,
-1.131287e-02,1.180118e-02,1.229762e-02,1.280305e-02,1.332290e-02,1.385829e-02,1.441300e-02,
-1.499297e-02,1.560045e-02,1.624454e-02,1.692928e-02,1.766499e-02,1.845978e-02,1.932536e-02,
-2.027454e-02,2.132233e-02,2.248557e-02,2.378467e-02,2.523919e-02,2.687393e-02,2.870892e-02,
-3.076594e-02,3.305745e-02,3.559175e-02,3.835869e-02,4.134135e-02,4.451165e-02,4.782902e-02,
-5.125391e-02,5.475126e-02,5.828676e-02,6.183222e-02,6.536541e-02,6.886876e-02,7.232843e-02,
-7.573356e-02,7.907571e-02,8.234849e-02,8.554717e-02,8.866842e-02,9.171009e-02,9.467100e-02,
-9.755076e-02,1.003496e-01,1.030683e-01,1.057082e-01,1.082710e-01,1.107584e-01,1.131724e-01,
-1.155154e-01,1.177894e-01,1.199970e-01,1.221403e-01,1.242219e-01,1.262440e-01,1.282088e-01,
-1.301187e-01,1.319759e-01,1.337825e-01,1.355408e-01,1.372527e-01,1.389203e-01,1.405455e-01,
-1.421304e-01,1.436768e-01,1.451865e-01,1.466613e-01,1.481032e-01,1.495139e-01,1.508951e-01,
-1.522486e-01,1.535763e-01,1.548799e-01,1.561612e-01,1.574222e-01,1.586397e-01,1.597917e-01,
-1.609624e-01,1.621554e-01,1.633749e-01,1.646261e-01,1.659155e-01,1.672522e-01,1.686479e-01,
-1.701192e-01,1.716882e-01,1.733847e-01,1.752469e-01,1.773226e-01,1.796681e-01,1.823462e-01,
-1.854234e-01,1.889661e-01,1.930388e-01,1.977039e-01,2.030239e-01,2.090644e-01,2.158990e-01,
-2.236126e-01,2.323048e-01,2.420924e-01,2.531103e-01,2.655101e-01,2.794568e-01,2.951204e-01,
-3.126625e-01,3.322153e-01,3.538544e-01,3.775683e-01,4.032308e-01,4.305865e-01,4.592584e-01,
-4.887811e-01,5.186554e-01,5.484082e-01,5.776430e-01,6.060694e-01,6.335111e-01,6.598960e-01,
-6.852353e-01,7.096034e-01,7.331188e-01,7.559302e-01,7.782067e-01,8.001315e-01,8.218986e-01,
-8.437111e-01,8.657805e-01,8.883258e-01,9.115688e-01,9.357297e-01,9.610168e-01,9.876119e-01,
-1.015650e+00,1.045194e+00,1.076217e+00,1.108583e+00,1.142051e+00,1.176301e+00,1.210968e+00,
-1.245702e+00,1.280202e+00,1.314250e+00,1.347718e+00,1.380565e+00,1.412820e+00,1.444563e+00,
-1.475916e+00,1.507016e+00,1.538017e+00,1.569073e+00,1.600334e+00,1.631945e+00,1.664042e+00,
-1.696751e+00,1.730185e+00,1.764449e+00,1.799637e+00,1.835830e+00,1.873102e+00,1.911516e+00,
-1.951130e+00,1.991990e+00,2.034139e+00,2.077614e+00,2.122447e+00,2.168668e+00,2.216301e+00,
-2.265373e+00,2.315904e+00,2.367919e+00,2.421439e+00,2.476486e+00,2.533084e+00,2.591258e+00,
-2.651032e+00,2.712435e+00,2.775494e+00,2.840241e+00,2.906709e+00,2.974931e+00,3.044946e+00,
-3.116791e+00,3.190508e+00,3.266141e+00,3.343734e+00,3.423336e+00,3.504997e+00,3.588769e+00,
-3.674707e+00,3.762868e+00,3.853312e+00,3.946099e+00,4.041295e+00,4.138965e+00,4.239180e+00,
-4.342009e+00,4.447529e+00,4.555814e+00,4.666945e+00,4.781004e+00,4.898075e+00,5.018245e+00,
-5.141606e+00,5.268252e+00,5.398277e+00,5.531782e+00,5.668870e+00,5.809647e+00,5.954223e+00,
-6.102709e+00,6.255223e+00,6.411885e+00,6.572819e+00,6.738153e+00,6.908018e+00,7.082551e+00,
-7.261893e+00,7.446187e+00,7.635583e+00,7.830235e+00,8.030303e+00,8.235949e+00,8.447343e+00,
-8.664658e+00,8.888076e+00,9.117781e+00,9.353964e+00,9.596824e+00,9.846563e+00,1.010339e+01,
-1.036753e+01,1.063919e+01,1.091862e+01,1.120604e+01,1.150170e+01,1.180587e+01,1.211879e+01,
-1.244074e+01,1.277199e+01,1.311284e+01,1.346358e+01,1.382452e+01,1.419596e+01,1.457824e+01,
-1.497170e+01,1.537667e+01,1.579352e+01,1.622262e+01,1.666435e+01,1.711910e+01,1.758728e+01,
-1.806931e+01,1.856562e+01,1.907666e+01,1.960289e+01,2.014478e+01,2.070283e+01,2.127756e+01,
-2.186947e+01,2.247911e+01,2.310704e+01,2.375385e+01,2.442012e+01,2.510646e+01,2.581353e+01,
-2.654196e+01,2.729244e+01,2.806568e+01,2.886238e+01,2.968330e+01,3.052921e+01,3.140091e+01,
-3.229921e+01,3.322497e+01,3.417906e+01,3.516238e+01,3.617589e+01,3.722053e+01,3.829731e+01
-  };
-  static const G4double P22[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.120131e-03,3.567208e-03,
-6.137882e-03,8.831785e-03,1.163101e-02,1.453145e-02,1.753060e-02,2.062489e-02,2.381127e-02,
-2.709822e-02,3.048398e-02,3.396264e-02,3.752670e-02,4.118793e-02,4.496040e-02,4.883801e-02,
-5.281322e-02,5.690771e-02,6.113789e-02,6.549907e-02,6.999581e-02,7.466886e-02,7.952312e-02,
-8.456445e-02,8.984669e-02,9.538880e-02,1.012118e-01,1.073922e-01,1.139603e-01,1.209824e-01,
-1.285578e-01,1.367447e-01,1.457007e-01,1.555238e-01,1.664127e-01,1.785480e-01,1.921825e-01,
-2.076059e-01,2.251690e-01,2.452818e-01,2.684512e-01,2.952087e-01,3.262268e-01,3.621378e-01,
-4.036571e-01,4.513583e-01,5.057654e-01,5.670252e-01,6.351235e-01,7.097670e-01,7.903118e-01,
-8.760602e-01,9.663525e-01,1.060475e+00,1.157804e+00,1.257815e+00,1.360070e+00,1.464190e+00,
-1.569856e+00,1.676792e+00,1.784762e+00,1.893564e+00,2.003028e+00,2.113012e+00,2.223396e+00,
-2.334084e+00,2.444997e+00,2.556071e+00,2.667265e+00,2.778554e+00,2.889911e+00,3.001327e+00,
-3.112811e+00,3.224358e+00,3.335994e+00,3.447730e+00,3.559596e+00,3.671622e+00,3.783838e+00,
-3.896283e+00,4.009001e+00,4.122034e+00,4.235431e+00,4.349243e+00,4.463526e+00,4.578342e+00,
-4.693754e+00,4.809831e+00,4.926647e+00,5.044285e+00,5.162832e+00,5.282382e+00,5.403039e+00,
-5.524919e+00,5.648145e+00,5.772858e+00,5.899215e+00,6.027391e+00,6.154925e+00,6.279335e+00,
-6.409661e+00,6.546552e+00,6.690783e+00,6.843308e+00,7.005336e+00,7.178452e+00,7.364781e+00,
-7.567228e+00,7.789765e+00,8.037769e+00,8.318377e+00,8.640763e+00,9.016247e+00,9.458163e+00,
-9.981511e+00,1.060252e+01,1.133833e+01,1.220702e+01,1.322802e+01,1.442289e+01,1.581627e+01,
-1.743708e+01,1.931953e+01,2.150424e+01,2.403895e+01,2.697907e+01,3.038737e+01,3.433257e+01,
-3.888631e+01,4.411756e+01,5.008434e+01,5.682345e+01,6.433960e+01,7.259691e+01,8.151634e+01,
-9.098150e+01,1.008525e+02,1.109841e+02,1.212442e+02,1.315260e+02,1.417556e+02,1.518925e+02,
-1.619260e+02,1.718706e+02,1.817614e+02,1.916501e+02,2.016029e+02,2.116989e+02,2.220295e+02,
-2.326990e+02,2.438250e+02,2.555393e+02,2.679864e+02,2.813215e+02,2.957058e+02,3.112976e+02,
-3.282386e+02,3.466366e+02,3.665465e+02,3.879537e+02,4.107678e+02,4.348286e+02,4.599280e+02,
-4.858444e+02,5.123742e+02,5.393579e+02,5.666943e+02,5.943443e+02,6.223268e+02,6.507098e+02,
-6.796009e+02,7.091381e+02,7.394822e+02,7.708109e+02,8.033129e+02,8.371852e+02,8.726312e+02,
-9.098582e+02,9.490768e+02,9.904994e+02,1.034340e+03,1.080815e+03,1.130139e+03,1.182532e+03,
-1.238214e+03,1.297406e+03,1.360335e+03,1.427230e+03,1.498326e+03,1.573865e+03,1.654097e+03,
-1.739279e+03,1.829682e+03,1.925585e+03,2.027284e+03,2.135086e+03,2.249318e+03,2.370323e+03,
-2.498462e+03,2.634120e+03,2.777703e+03,2.929640e+03,3.090388e+03,3.260429e+03,3.440278e+03,
-3.630477e+03,3.831604e+03,4.044271e+03,4.269129e+03,4.506868e+03,4.758219e+03,5.023960e+03,
-5.304913e+03,5.601955e+03,5.916011e+03,6.248067e+03,6.599167e+03,6.970418e+03,7.362995e+03,
-7.778144e+03,8.217189e+03,8.681530e+03,9.172656e+03,9.692145e+03,1.024167e+04,1.082301e+04,
-1.143804e+04,1.208877e+04,1.277731e+04,1.350591e+04,1.427696e+04,1.509299e+04,1.595667e+04,
-1.687087e+04,1.783860e+04,1.886306e+04,1.994767e+04,2.109602e+04,2.231195e+04,2.359952e+04,
-2.496305e+04,2.640711e+04,2.793656e+04,2.955655e+04,3.127256e+04,3.309039e+04,3.501622e+04,
-3.705657e+04,3.921839e+04,4.150907e+04,4.393642e+04,4.650876e+04,4.923490e+04,5.212422e+04,
-5.518666e+04,5.843278e+04,6.187379e+04,6.552160e+04,6.938886e+04,7.348899e+04,7.783625e+04,
-8.244579e+04,8.733369e+04,9.251705e+04,9.801401e+04,1.038438e+05,1.100270e+05,1.165853e+05,
-1.235418e+05,1.309211e+05,1.387492e+05,1.470539e+05,1.558646e+05,1.652126e+05,1.751311e+05,
-1.856555e+05,1.968232e+05,2.086742e+05,2.212509e+05,2.345983e+05,2.487643e+05,2.637997e+05,
-2.797587e+05,2.966988e+05,3.146809e+05,3.337702e+05,3.540357e+05,3.755506e+05,3.983931e+05,
-4.226461e+05,4.483978e+05,4.757419e+05,5.047781e+05,5.356124e+05,5.683574e+05,6.031331e+05,
-6.400668e+05,6.792939e+05,7.209586e+05,7.652140e+05,8.122231e+05,8.621592e+05,9.152064e+05
-  };
-  static const G4double P03[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.409974e-04,
-3.120096e-04,5.006502e-04,7.064650e-04,9.273072e-04,1.160607e-03,1.403015e-03,1.650417e-03,
-1.899130e-03,2.146133e-03,2.388721e-03,2.624876e-03,2.853195e-03,3.072731e-03,3.282883e-03,
-3.483317e-03,3.673901e-03,3.854657e-03,4.025724e-03,4.187333e-03,4.339776e-03,4.483396e-03,
-4.618564e-03,4.745669e-03,4.865110e-03,4.977295e-03,5.082631e-03,5.181502e-03,5.274289e-03,
-5.361367e-03,5.443076e-03,5.519761e-03,5.591731e-03,5.659291e-03,5.722723e-03,5.782293e-03,
-5.838252e-03,5.890835e-03,5.940264e-03,5.986745e-03,6.030472e-03,6.071627e-03,6.110379e-03,
-6.146889e-03,6.181306e-03,6.213770e-03,6.244412e-03,6.273357e-03,6.300718e-03,6.326607e-03,
-6.351124e-03,6.374368e-03,6.396429e-03,6.417395e-03,6.437348e-03,6.456265e-03,6.474073e-03,
-6.491149e-03,6.507570e-03,6.523412e-03,6.538764e-03,6.553724e-03,6.568408e-03,6.582959e-03,
-6.597557e-03,6.612423e-03,6.627837e-03,6.644132e-03,6.661699e-03,6.680967e-03,6.702376e-03,
-6.726353e-03,6.753276e-03,6.783463e-03,6.817177e-03,6.854643e-03,6.896074e-03,6.941701e-03,
-6.991787e-03,7.046648e-03,7.106649e-03,7.172202e-03,7.243749e-03,7.321731e-03,7.406542e-03,
-7.498466e-03,7.597591e-03,7.703710e-03,7.816238e-03,7.934150e-03,8.055987e-03,8.179938e-03,
-8.304010e-03,8.426239e-03,8.544896e-03,8.658642e-03,8.766594e-03,8.868315e-03,8.963752e-03,
-9.053136e-03,9.136896e-03,9.215579e-03,9.289794e-03,9.360172e-03,9.427339e-03,9.491904e-03,
-9.554447e-03,9.615520e-03,9.675636e-03,9.735266e-03,9.794830e-03,9.854684e-03,9.915103e-03,
-9.976259e-03,1.003820e-02,1.010084e-02,1.016395e-02,1.022716e-02,1.029004e-02,1.035209e-02,
-1.041285e-02,1.047195e-02,1.052910e-02,1.058414e-02,1.063704e-02,1.068785e-02,1.073670e-02,
-1.078376e-02,1.082922e-02,1.087331e-02,1.091623e-02,1.095817e-02,1.099930e-02,1.103978e-02,
-1.107975e-02,1.111933e-02,1.115860e-02,1.119765e-02,1.123654e-02,1.127531e-02,1.131400e-02,
-1.135262e-02,1.139120e-02,1.142974e-02,1.146824e-02,1.150669e-02,1.154509e-02,1.158343e-02,
-1.162169e-02,1.165987e-02,1.169795e-02,1.173592e-02,1.177377e-02,1.181149e-02,1.184906e-02,
-1.188649e-02,1.192375e-02,1.196086e-02,1.199779e-02,1.203454e-02,1.207112e-02,1.210751e-02,
-1.214372e-02,1.217975e-02,1.221559e-02,1.225124e-02,1.228671e-02,1.232200e-02,1.235710e-02,
-1.239202e-02,1.242676e-02,1.246133e-02,1.249572e-02,1.252994e-02,1.256399e-02,1.259787e-02,
-1.263159e-02,1.266515e-02,1.269855e-02,1.273181e-02,1.276490e-02,1.279786e-02,1.283067e-02,
-1.286333e-02,1.289586e-02,1.292826e-02,1.296053e-02,1.299266e-02,1.302467e-02,1.305656e-02,
-1.308833e-02,1.311999e-02,1.315153e-02,1.318296e-02,1.321428e-02,1.324550e-02,1.327661e-02,
-1.330763e-02,1.333855e-02,1.336937e-02,1.340010e-02,1.343074e-02,1.346130e-02,1.349177e-02,
-1.352215e-02,1.355246e-02,1.358269e-02,1.361284e-02,1.364292e-02,1.367293e-02,1.370287e-02,
-1.373274e-02,1.376254e-02,1.379228e-02,1.382196e-02,1.385158e-02,1.388114e-02,1.391065e-02,
-1.394010e-02,1.396950e-02,1.399885e-02,1.402815e-02,1.405740e-02,1.408661e-02,1.411577e-02,
-1.414489e-02,1.417397e-02,1.420301e-02,1.423201e-02,1.426098e-02,1.428992e-02,1.431882e-02,
-1.434768e-02,1.437652e-02,1.440533e-02,1.443412e-02,1.446287e-02,1.449161e-02,1.452032e-02,
-1.454901e-02,1.457768e-02,1.460633e-02,1.463496e-02,1.466358e-02,1.469218e-02,1.472077e-02,
-1.474934e-02,1.477791e-02,1.480646e-02,1.483501e-02,1.486355e-02,1.489208e-02,1.492061e-02,
-1.494914e-02,1.497766e-02,1.500618e-02,1.503470e-02,1.506322e-02,1.509175e-02,1.512027e-02
-  };
-  static const G4double P13[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,2.762798e-03,
-6.214464e-03,1.014119e-02,1.455950e-02,1.944870e-02,2.477496e-02,3.048202e-02,3.648846e-02,
-4.271502e-02,4.909153e-02,5.554923e-02,6.203158e-02,6.849397e-02,7.490114e-02,8.122529e-02,
-8.744455e-02,9.354199e-02,9.950466e-02,1.053230e-01,1.109903e-01,1.165020e-01,1.218558e-01,
-1.270507e-01,1.320872e-01,1.369666e-01,1.416915e-01,1.462653e-01,1.506913e-01,1.549735e-01,
-1.591164e-01,1.631241e-01,1.670017e-01,1.707532e-01,1.743837e-01,1.778977e-01,1.812996e-01,
-1.845939e-01,1.877850e-01,1.908772e-01,1.938747e-01,1.967815e-01,1.996017e-01,2.023391e-01,
-2.049976e-01,2.075809e-01,2.100927e-01,2.125365e-01,2.149160e-01,2.172346e-01,2.194959e-01,
-2.217034e-01,2.238606e-01,2.259710e-01,2.280383e-01,2.300664e-01,2.320480e-01,2.339710e-01,
-2.358717e-01,2.377555e-01,2.396290e-01,2.415002e-01,2.433797e-01,2.452813e-01,2.472236e-01,
-2.492319e-01,2.513402e-01,2.535933e-01,2.560486e-01,2.587768e-01,2.618611e-01,2.653936e-01,
-2.694712e-01,2.741902e-01,2.796437e-01,2.859211e-01,2.931111e-01,3.013060e-01,3.106073e-01,
-3.211310e-01,3.330113e-01,3.464030e-01,3.614827e-01,3.784459e-01,3.975016e-01,4.188614e-01,
-4.427220e-01,4.692400e-01,4.984989e-01,5.304750e-01,5.650069e-01,6.017804e-01,6.403371e-01,
-6.801126e-01,7.204962e-01,7.608999e-01,8.008170e-01,8.398607e-01,8.777776e-01,9.144416e-01,
-9.498326e-01,9.840127e-01,1.017105e+00,1.049275e+00,1.080716e+00,1.111643e+00,1.142283e+00,
-1.172873e+00,1.203659e+00,1.234892e+00,1.266822e+00,1.299693e+00,1.333737e+00,1.369155e+00,
-1.406103e+00,1.444672e+00,1.484870e+00,1.526605e+00,1.569693e+00,1.613861e+00,1.658784e+00,
-1.704122e+00,1.749563e+00,1.794852e+00,1.839808e+00,1.884335e+00,1.928413e+00,1.972085e+00,
-2.015447e+00,2.058627e+00,2.101780e+00,2.145070e+00,2.188667e+00,2.232736e+00,2.277440e+00,
-2.322931e+00,2.369348e+00,2.416823e+00,2.465473e+00,2.515403e+00,2.566707e+00,2.619468e+00,
-2.673759e+00,2.729644e+00,2.787177e+00,2.846409e+00,2.907381e+00,2.970134e+00,3.034703e+00,
-3.101119e+00,3.169415e+00,3.239621e+00,3.311767e+00,3.385883e+00,3.462001e+00,3.540153e+00,
-3.620375e+00,3.702702e+00,3.787172e+00,3.873828e+00,3.962711e+00,4.053869e+00,4.147350e+00,
-4.243205e+00,4.341489e+00,4.442258e+00,4.545574e+00,4.651497e+00,4.760095e+00,4.871437e+00,
-4.985593e+00,5.102639e+00,5.222653e+00,5.345715e+00,5.471910e+00,5.601324e+00,5.734049e+00,
-5.870177e+00,6.009805e+00,6.153034e+00,6.299967e+00,6.450712e+00,6.605379e+00,6.764082e+00,
-6.926941e+00,7.094076e+00,7.265614e+00,7.441685e+00,7.622423e+00,7.807966e+00,7.998458e+00,
-8.194045e+00,8.394879e+00,8.601118e+00,8.812923e+00,9.030461e+00,9.253904e+00,9.483429e+00,
-9.719220e+00,9.961464e+00,1.021036e+01,1.046610e+01,1.072890e+01,1.099897e+01,1.127653e+01,
-1.156181e+01,1.185504e+01,1.215646e+01,1.246633e+01,1.278490e+01,1.311243e+01,1.344920e+01,
-1.379550e+01,1.415161e+01,1.451783e+01,1.489447e+01,1.528186e+01,1.568033e+01,1.609020e+01,
-1.651185e+01,1.694562e+01,1.739189e+01,1.785105e+01,1.832350e+01,1.880965e+01,1.930992e+01,
-1.982475e+01,2.035460e+01,2.089992e+01,2.146121e+01,2.203895e+01,2.263366e+01,2.324587e+01,
-2.387613e+01,2.452501e+01,2.519307e+01,2.588093e+01,2.658921e+01,2.731854e+01,2.806960e+01,
-2.884305e+01,2.963961e+01,3.046001e+01,3.130500e+01,3.217535e+01,3.307186e+01,3.399537e+01,
-3.494673e+01,3.592682e+01,3.693656e+01,3.797687e+01,3.904875e+01,4.015319e+01,4.129122e+01,
-4.246392e+01,4.367240e+01,4.491780e+01,4.620129e+01,4.752410e+01,4.888749e+01,5.029275e+01
-  };
-  static const G4double P23[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,5.413975e-02,
-1.238128e-01,2.055575e-01,3.004149e-01,4.086648e-01,5.302738e-01,6.646463e-01,8.104828e-01,
-9.663775e-01,1.131003e+00,1.302922e+00,1.480873e+00,1.663800e+00,1.850809e+00,2.041137e+00,
-2.234130e+00,2.429223e+00,2.625932e+00,2.823840e+00,3.022593e+00,3.221891e+00,3.421481e+00,
-3.621155e+00,3.820738e+00,4.020088e+00,4.219105e+00,4.417721e+00,4.615865e+00,4.813503e+00,
-5.010628e+00,5.207217e+00,5.403298e+00,5.598873e+00,5.793981e+00,5.988660e+00,6.182946e+00,
-6.376896e+00,6.570570e+00,6.764031e+00,6.957349e+00,7.150601e+00,7.343872e+00,7.537254e+00,
-7.730848e+00,7.924762e+00,8.119112e+00,8.314031e+00,8.509661e+00,8.706158e+00,8.903694e+00,
-9.102464e+00,9.302681e+00,9.504585e+00,9.708450e+00,9.914589e+00,1.012220e+01,1.032986e+01,
-1.054144e+01,1.075759e+01,1.097915e+01,1.120725e+01,1.144340e+01,1.168966e+01,1.194894e+01,
-1.222528e+01,1.252429e+01,1.285366e+01,1.322363e+01,1.364736e+01,1.414112e+01,1.472402e+01,
-1.541751e+01,1.624472e+01,1.723002e+01,1.839895e+01,1.977888e+01,2.139989e+01,2.329619e+01,
-2.550749e+01,2.808038e+01,3.106957e+01,3.453874e+01,3.856086e+01,4.321766e+01,4.859753e+01,
-5.479148e+01,6.188616e+01,6.995395e+01,7.904100e+01,8.915485e+01,1.002549e+02,1.122494e+02,
-1.250017e+02,1.383453e+02,1.521040e+02,1.661133e+02,1.802356e+02,1.943703e+02,2.084566e+02,
-2.224704e+02,2.364195e+02,2.503384e+02,2.642840e+02,2.783315e+02,2.925726e+02,3.071140e+02,
-3.220770e+02,3.375972e+02,3.538252e+02,3.709238e+02,3.890662e+02,4.084313e+02,4.291951e+02,
-4.515193e+02,4.755366e+02,5.013340e+02,5.289387e+02,5.583096e+02,5.893384e+02,6.218631e+02,
-6.556933e+02,6.906377e+02,7.265303e+02,7.632504e+02,8.007334e+02,8.389740e+02,8.780231e+02,
-9.179815e+02,9.589917e+02,1.001230e+03,1.044901e+03,1.090228e+03,1.137450e+03,1.186818e+03,
-1.238592e+03,1.293040e+03,1.350433e+03,1.411047e+03,1.475160e+03,1.543054e+03,1.615014e+03,
-1.691327e+03,1.772284e+03,1.858181e+03,1.949319e+03,2.046009e+03,2.148567e+03,2.257322e+03,
-2.372614e+03,2.494796e+03,2.624240e+03,2.761331e+03,2.906477e+03,3.060105e+03,3.222666e+03,
-3.394638e+03,3.576525e+03,3.768859e+03,3.972206e+03,4.187166e+03,4.414372e+03,4.654499e+03,
-4.908260e+03,5.176412e+03,5.459761e+03,5.759158e+03,6.075508e+03,6.409771e+03,6.762966e+03,
-7.136172e+03,7.530536e+03,7.947272e+03,8.387671e+03,8.853101e+03,9.345011e+03,9.864941e+03,
-1.041452e+04,1.099549e+04,1.160967e+04,1.225902e+04,1.294560e+04,1.367160e+04,1.443934e+04,
-1.525129e+04,1.611006e+04,1.701843e+04,1.797933e+04,1.899589e+04,2.007140e+04,2.120939e+04,
-2.241358e+04,2.368790e+04,2.503657e+04,2.646401e+04,2.797495e+04,2.957440e+04,3.126766e+04,
-3.306037e+04,3.495851e+04,3.696842e+04,3.909684e+04,4.135092e+04,4.373823e+04,4.626684e+04,
-4.894528e+04,5.178262e+04,5.478849e+04,5.797312e+04,6.134735e+04,6.492269e+04,6.871139e+04,
-7.272641e+04,7.698154e+04,8.149143e+04,8.627160e+04,9.133857e+04,9.670985e+04,1.024041e+05,
-1.084410e+05,1.148416e+05,1.216281e+05,1.288244e+05,1.364554e+05,1.445480e+05,1.531304e+05,
-1.622330e+05,1.718876e+05,1.821283e+05,1.929912e+05,2.045148e+05,2.167399e+05,2.297098e+05,
-2.434706e+05,2.580712e+05,2.735637e+05,2.900034e+05,3.074489e+05,3.259628e+05,3.456113e+05,
-3.664650e+05,3.885990e+05,4.120927e+05,4.370310e+05,4.635039e+05,4.916070e+05,5.214420e+05,
-5.531172e+05,5.867475e+05,6.224550e+05,6.603699e+05,7.006301e+05,7.433826e+05,7.887837e+05,
-8.369994e+05,8.882063e+05,9.425923e+05,1.000357e+06,1.061713e+06,1.126885e+06,1.196115e+06
-  };
-  static const G4double P04[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,4.442863e-06,
-1.519363e-05,2.703219e-05,4.014211e-05,5.519168e-05,7.230975e-05,9.155962e-05,1.130065e-04,
-1.367177e-04,1.629335e-04,1.925910e-04,2.259139e-04,2.630146e-04,3.040085e-04,3.491052e-04,
-3.991538e-04,4.544632e-04,5.151945e-04,5.815134e-04,6.535550e-04,7.314583e-04,8.154027e-04,
-9.055657e-04,1.001169e-03,1.101697e-03,1.207300e-03,1.317649e-03,1.430881e-03,1.546863e-03,
-1.665438e-03,1.784771e-03,1.904473e-03,2.024325e-03,2.143171e-03,2.260820e-03,2.377119e-03,
-2.491853e-03,2.605055e-03,2.717349e-03,2.828874e-03,2.940853e-03,3.054038e-03,3.169999e-03,
-3.290343e-03,3.417114e-03,3.552511e-03,3.699143e-03,3.859120e-03,4.034680e-03,4.226785e-03,
-4.435314e-03,4.658182e-03,4.892305e-03,5.131845e-03,5.371783e-03,5.606701e-03,5.831779e-03,
-6.043927e-03,6.241290e-03,6.422941e-03,6.588882e-03,6.739685e-03,6.876237e-03,6.999584e-03,
-7.110833e-03,7.211089e-03,7.301407e-03,7.382776e-03,7.456105e-03,7.522221e-03,7.581872e-03,
-7.635730e-03,7.684395e-03,7.728406e-03,7.768250e-03,7.804367e-03,7.837137e-03,7.866907e-03,
-7.893992e-03,7.918663e-03,7.941175e-03,7.961745e-03,7.980577e-03,7.997848e-03,8.013718e-03,
-8.028333e-03,8.041823e-03,8.054305e-03,8.065884e-03,8.076657e-03,8.086709e-03,8.096119e-03,
-8.104959e-03,8.113293e-03,8.121181e-03,8.128676e-03,8.135829e-03,8.142686e-03,8.149290e-03,
-8.155681e-03,8.161895e-03,8.167971e-03,8.173941e-03,8.179842e-03,8.185532e-03,8.190791e-03,
-8.196173e-03,8.201721e-03,8.207490e-03,8.213549e-03,8.219997e-03,8.226961e-03,8.234619e-03,
-8.243208e-03,8.253043e-03,8.264530e-03,8.278167e-03,8.294543e-03,8.314306e-03,8.338122e-03,
-8.366621e-03,8.400357e-03,8.439779e-03,8.485245e-03,8.537046e-03,8.595453e-03,8.660753e-03,
-8.733284e-03,8.813450e-03,8.901722e-03,8.998630e-03,9.104733e-03,9.220575e-03,9.346623e-03,
-9.483175e-03,9.630255e-03,9.787493e-03,9.954018e-03,1.012840e-02,1.030865e-02,1.049233e-02,
-1.067675e-02,1.085922e-02,1.103733e-02,1.120911e-02,1.137317e-02,1.152871e-02,1.167547e-02,
-1.181358e-02,1.194350e-02,1.206587e-02,1.218146e-02,1.229109e-02,1.239560e-02,1.249580e-02,
-1.259247e-02,1.268636e-02,1.277816e-02,1.286849e-02,1.295790e-02,1.304686e-02,1.313576e-02,
-1.322486e-02,1.331430e-02,1.340408e-02,1.349406e-02,1.358398e-02,1.367348e-02,1.376212e-02,
-1.384946e-02,1.393508e-02,1.401867e-02,1.409996e-02,1.417885e-02,1.425528e-02,1.432934e-02,
-1.440114e-02,1.447087e-02,1.453873e-02,1.460494e-02,1.466972e-02,1.473329e-02,1.479584e-02,
-1.485754e-02,1.491855e-02,1.497899e-02,1.503897e-02,1.509858e-02,1.515789e-02,1.521695e-02,
-1.527579e-02,1.533444e-02,1.539291e-02,1.545122e-02,1.550935e-02,1.556730e-02,1.562507e-02,
-1.568263e-02,1.573999e-02,1.579713e-02,1.585402e-02,1.591067e-02,1.596706e-02,1.602317e-02,
-1.607900e-02,1.613455e-02,1.618979e-02,1.624474e-02,1.629938e-02,1.635372e-02,1.640774e-02,
-1.646145e-02,1.651485e-02,1.656795e-02,1.662073e-02,1.667321e-02,1.672539e-02,1.677727e-02,
-1.682885e-02,1.688015e-02,1.693115e-02,1.698188e-02,1.703233e-02,1.708251e-02,1.713242e-02,
-1.718208e-02,1.723147e-02,1.728062e-02,1.732953e-02,1.737819e-02,1.742662e-02,1.747483e-02,
-1.752281e-02,1.757058e-02,1.761813e-02,1.766548e-02,1.771262e-02,1.775957e-02,1.780632e-02,
-1.785289e-02,1.789928e-02,1.794549e-02,1.799152e-02,1.803739e-02,1.808309e-02,1.812863e-02,
-1.817402e-02,1.821925e-02,1.826434e-02,1.830928e-02,1.835409e-02,1.839875e-02,1.844329e-02,
-1.848769e-02,1.853197e-02,1.857613e-02,1.862017e-02,1.866409e-02,1.870791e-02,1.875161e-02,
-1.879521e-02,1.883871e-02,1.888210e-02,1.892541e-02,1.896862e-02,1.901173e-02,1.905476e-02,
-1.909771e-02,1.914058e-02,1.918336e-02,1.922607e-02,1.926871e-02,1.931127e-02,1.935377e-02,
-1.939619e-02,1.943856e-02,1.948086e-02,1.952311e-02,1.956530e-02,1.960743e-02,1.964952e-02,
-1.969155e-02,1.973354e-02,1.977548e-02,1.981737e-02,1.985923e-02,1.990105e-02,1.994283e-02,
-1.998458e-02,2.002629e-02,2.006798e-02,2.010963e-02,2.015126e-02,2.019287e-02,2.023445e-02,
-2.027601e-02,2.031756e-02,2.035908e-02,2.040059e-02,2.044209e-02,2.048358e-02,2.052506e-02,
-2.056653e-02,2.060799e-02,2.064945e-02,2.069091e-02,2.073236e-02,2.077382e-02,2.081528e-02
-  };
-  static const G4double P14[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.830684e-05,
-6.371064e-05,1.154186e-04,1.746380e-04,2.449308e-04,3.275905e-04,4.236803e-04,5.343383e-04,
-6.607827e-04,8.052700e-04,9.741837e-04,1.170286e-03,1.395863e-03,1.653360e-03,1.945987e-03,
-2.281454e-03,2.664366e-03,3.098601e-03,3.588306e-03,4.137638e-03,4.751029e-03,5.433489e-03,
-6.190306e-03,7.018768e-03,7.918090e-03,8.893328e-03,9.945232e-03,1.105935e-02,1.223722e-02,
-1.348004e-02,1.477087e-02,1.610715e-02,1.748784e-02,1.890063e-02,2.034378e-02,2.181580e-02,
-2.331419e-02,2.483956e-02,2.640072e-02,2.800033e-02,2.965740e-02,3.138528e-02,3.321162e-02,
-3.516681e-02,3.729155e-02,3.963237e-02,4.224740e-02,4.519013e-02,4.852109e-02,5.228032e-02,
-5.648894e-02,6.112768e-02,6.615316e-02,7.145565e-02,7.693264e-02,8.246248e-02,8.792602e-02,
-9.323627e-02,9.833048e-02,1.031653e-01,1.077195e-01,1.119872e-01,1.159719e-01,1.196832e-01,
-1.231347e-01,1.263418e-01,1.293208e-01,1.320879e-01,1.346591e-01,1.370493e-01,1.392727e-01,
-1.413425e-01,1.432706e-01,1.450684e-01,1.467463e-01,1.483144e-01,1.497813e-01,1.511550e-01,
-1.524436e-01,1.536536e-01,1.547918e-01,1.558640e-01,1.568759e-01,1.578326e-01,1.587389e-01,
-1.595992e-01,1.604178e-01,1.611987e-01,1.619454e-01,1.626615e-01,1.633503e-01,1.640150e-01,
-1.646587e-01,1.652843e-01,1.658945e-01,1.664923e-01,1.670804e-01,1.676615e-01,1.682383e-01,
-1.688138e-01,1.693906e-01,1.699718e-01,1.705606e-01,1.711603e-01,1.717563e-01,1.723243e-01,
-1.729235e-01,1.735601e-01,1.742424e-01,1.749812e-01,1.757914e-01,1.766935e-01,1.777159e-01,
-1.788979e-01,1.802932e-01,1.819727e-01,1.840281e-01,1.865720e-01,1.897363e-01,1.936664e-01,
-1.985139e-01,2.044278e-01,2.115504e-01,2.200166e-01,2.299583e-01,2.415112e-01,2.548236e-01,
-2.700636e-01,2.874240e-01,3.071261e-01,3.294187e-01,3.545749e-01,3.828823e-01,4.146274e-01,
-4.500720e-01,4.894190e-01,5.327720e-01,5.800920e-01,6.311614e-01,6.855655e-01,7.427020e-01,
-8.018245e-01,8.621139e-01,9.227611e-01,9.830442e-01,1.042383e+00,1.100363e+00,1.156744e+00,
-1.211429e+00,1.264444e+00,1.315911e+00,1.366015e+00,1.414994e+00,1.463113e+00,1.510663e+00,
-1.557947e+00,1.605276e+00,1.652968e+00,1.701334e+00,1.750675e+00,1.801276e+00,1.853388e+00,
-1.907216e+00,1.962904e+00,2.020515e+00,2.080026e+00,2.141319e+00,2.204187e+00,2.268359e+00,
-2.333525e+00,2.399370e+00,2.465608e+00,2.532008e+00,2.598408e+00,2.664720e+00,2.730931e+00,
-2.797093e+00,2.863310e+00,2.929727e+00,2.996517e+00,3.063869e+00,3.131981e+00,3.201051e+00,
-3.271270e+00,3.342824e+00,3.415884e+00,3.490610e+00,3.567148e+00,3.645628e+00,3.726167e+00,
-3.808870e+00,3.893828e+00,3.981122e+00,4.070824e+00,4.163000e+00,4.257706e+00,4.354996e+00,
-4.454920e+00,4.557525e+00,4.662858e+00,4.770965e+00,4.881891e+00,4.995685e+00,5.112397e+00,
-5.232077e+00,5.354782e+00,5.480568e+00,5.609497e+00,5.741634e+00,5.877047e+00,6.015807e+00,
-6.157992e+00,6.303681e+00,6.452959e+00,6.605913e+00,6.762637e+00,6.923226e+00,7.087782e+00,
-7.256411e+00,7.429221e+00,7.606326e+00,7.787844e+00,7.973899e+00,8.164617e+00,8.360131e+00,
-8.560577e+00,8.766096e+00,8.976834e+00,9.192943e+00,9.414578e+00,9.641901e+00,9.875078e+00,
-1.011428e+01,1.035969e+01,1.061148e+01,1.086986e+01,1.113500e+01,1.140711e+01,1.168641e+01,
-1.197310e+01,1.226741e+01,1.256956e+01,1.287978e+01,1.319833e+01,1.352545e+01,1.386140e+01,
-1.420644e+01,1.456086e+01,1.492492e+01,1.529892e+01,1.568317e+01,1.607798e+01,1.648366e+01,
-1.690054e+01,1.732896e+01,1.776928e+01,1.822186e+01,1.868707e+01,1.916530e+01,1.965693e+01,
-2.016239e+01,2.068210e+01,2.121649e+01,2.176601e+01,2.233113e+01,2.291232e+01,2.351008e+01,
-2.412492e+01,2.475737e+01,2.540797e+01,2.607728e+01,2.676588e+01,2.747436e+01,2.820334e+01,
-2.895345e+01,2.972536e+01,3.051974e+01,3.133728e+01,3.217872e+01,3.304478e+01,3.393625e+01,
-3.485392e+01,3.579859e+01,3.677113e+01,3.777240e+01,3.880330e+01,3.986476e+01,4.095774e+01,
-4.208324e+01,4.324227e+01,4.443590e+01,4.566522e+01,4.693134e+01,4.823544e+01,4.957871e+01,
-5.096240e+01,5.238778e+01,5.385619e+01,5.536898e+01,5.692756e+01,5.853340e+01,6.018799e+01,
-6.189289e+01,6.364971e+01,6.546010e+01,6.732578e+01,6.924851e+01,7.123011e+01,7.327248e+01
-  };
-  static const G4double P24[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,7.543486e-05,
-2.672072e-04,4.930762e-04,7.606037e-04,1.088954e-03,1.488138e-03,1.967834e-03,2.538841e-03,
-3.213192e-03,4.009598e-03,4.971730e-03,6.125875e-03,7.497533e-03,9.115105e-03,1.101410e-02,
-1.326287e-02,1.591403e-02,1.901913e-02,2.263546e-02,2.682459e-02,3.165470e-02,3.720349e-02,
-4.355667e-02,5.073638e-02,5.878240e-02,6.778949e-02,7.781758e-02,8.878053e-02,1.007435e-01,
-1.137711e-01,1.277352e-01,1.426538e-01,1.585606e-01,1.753566e-01,1.930607e-01,2.116938e-01,
-2.312639e-01,2.518194e-01,2.735251e-01,2.964705e-01,3.209937e-01,3.473739e-01,3.761401e-01,
-4.079082e-01,4.435227e-01,4.839951e-01,5.306350e-01,5.847703e-01,6.479743e-01,7.215434e-01,
-8.064902e-01,9.030479e-01,1.010929e+00,1.128315e+00,1.253346e+00,1.383526e+00,1.516159e+00,
-1.649089e+00,1.780588e+00,1.909280e+00,2.034281e+00,2.155065e+00,2.271349e+00,2.383027e+00,
-2.490116e+00,2.592716e+00,2.690981e+00,2.785094e+00,2.875255e+00,2.961673e+00,3.044553e+00,
-3.124097e+00,3.200497e+00,3.273938e+00,3.344609e+00,3.412697e+00,3.478359e+00,3.541758e+00,
-3.603063e+00,3.662412e+00,3.719967e+00,3.775859e+00,3.830236e+00,3.883236e+00,3.934991e+00,
-3.985641e+00,4.035323e+00,4.084172e+00,4.132329e+00,4.179936e+00,4.227142e+00,4.274100e+00,
-4.320973e+00,4.367929e+00,4.415151e+00,4.462832e+00,4.511183e+00,4.560430e+00,4.610824e+00,
-4.662638e+00,4.716179e+00,4.771788e+00,4.829854e+00,4.890825e+00,4.953249e+00,5.014598e+00,
-5.081309e+00,5.154369e+00,5.235071e+00,5.325147e+00,5.426966e+00,5.543825e+00,5.680343e+00,
-5.843034e+00,6.040974e+00,6.286575e+00,6.596368e+00,6.991576e+00,7.498259e+00,8.146893e+00,
-8.971439e+00,1.000824e+01,1.129521e+01,1.287183e+01,1.477996e+01,1.706532e+01,1.977947e+01,
-2.298186e+01,2.674168e+01,3.113945e+01,3.626805e+01,4.223285e+01,4.915057e+01,5.714619e+01,
-6.634717e+01,7.687414e+01,8.882816e+01,1.022756e+02,1.172331e+02,1.336549e+02,1.514294e+02,
-1.703848e+02,1.903058e+02,2.109585e+02,2.321157e+02,2.535790e+02,2.751935e+02,2.968551e+02,
-3.185090e+02,3.401451e+02,3.617925e+02,3.835128e+02,4.053955e+02,4.275534e+02,4.501201e+02,
-4.732483e+02,4.971083e+02,5.218876e+02,5.477871e+02,5.750188e+02,6.038010e+02,6.343508e+02,
-6.668734e+02,7.015497e+02,7.385227e+02,7.778839e+02,8.196641e+02,8.638306e+02,9.102926e+02,
-9.589179e+02,1.009554e+03,1.062052e+03,1.116289e+03,1.172185e+03,1.229716e+03,1.288919e+03,
-1.349889e+03,1.412779e+03,1.477789e+03,1.545167e+03,1.615193e+03,1.688177e+03,1.764452e+03,
-1.844372e+03,1.928304e+03,2.016627e+03,2.109729e+03,2.208008e+03,2.311865e+03,2.421710e+03,
-2.537958e+03,2.661032e+03,2.791360e+03,2.929384e+03,3.075553e+03,3.230332e+03,3.394201e+03,
-3.567658e+03,3.751220e+03,3.945429e+03,4.150853e+03,4.368085e+03,4.597754e+03,4.840519e+03,
-5.097080e+03,5.368173e+03,5.654580e+03,5.957127e+03,6.276691e+03,6.614199e+03,6.970636e+03,
-7.347046e+03,7.744537e+03,8.164282e+03,8.607528e+03,9.075596e+03,9.569887e+03,1.009189e+04,
-1.064318e+04,1.122542e+04,1.184040e+04,1.249000e+04,1.317620e+04,1.390113e+04,1.466703e+04,
-1.547628e+04,1.633140e+04,1.723507e+04,1.819012e+04,1.919958e+04,2.026662e+04,2.139464e+04,
-2.258721e+04,2.384817e+04,2.518152e+04,2.659158e+04,2.808286e+04,2.966020e+04,3.132870e+04,
-3.309379e+04,3.496121e+04,3.693706e+04,3.902782e+04,4.124035e+04,4.358193e+04,4.606030e+04,
-4.868365e+04,5.146069e+04,5.440064e+04,5.751330e+04,6.080907e+04,6.429899e+04,6.799476e+04,
-7.190880e+04,7.605431e+04,8.044530e+04,8.509662e+04,9.002404e+04,9.524433e+04,1.007752e+05,
-1.066357e+05,1.128456e+05,1.194264e+05,1.264006e+05,1.337923e+05,1.416267e+05,1.499311e+05,
-1.587342e+05,1.680664e+05,1.779602e+05,1.884499e+05,1.995721e+05,2.113657e+05,2.238718e+05,
-2.371343e+05,2.511997e+05,2.661175e+05,2.819400e+05,2.987232e+05,3.165263e+05,3.354123e+05,
-3.554481e+05,3.767048e+05,3.992580e+05,4.231879e+05,4.485800e+05,4.755247e+05,5.041186e+05,
-5.344641e+05,5.666699e+05,6.008519e+05,6.371329e+05,6.756438e+05,7.165233e+05,7.599193e+05,
-8.059888e+05,8.548986e+05,9.068263e+05,9.619605e+05,1.020502e+06,1.082664e+06,1.148672e+06,
-1.218769e+06,1.293211e+06,1.372270e+06,1.456236e+06,1.545418e+06,1.640143e+06,1.740759e+06
-  };
-  static const G4double P05[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-5.861537e-07,3.061765e-06,5.963955e-06,9.305785e-06,1.342109e-05,1.865336e-05,2.503676e-05,
-3.261650e-05,4.273714e-05,5.639991e-05,7.371320e-05,9.607336e-05,1.289866e-04,1.733628e-04,
-2.302289e-04,3.053102e-04,4.003118e-04,5.138222e-04,6.363068e-04,7.666567e-04,9.046405e-04,
-1.049782e-03,1.203029e-03,1.370490e-03,1.553883e-03,1.754746e-03,1.974232e-03,2.209369e-03,
-2.457122e-03,2.712762e-03,2.971183e-03,3.228184e-03,3.480597e-03,3.726495e-03,3.965194e-03,
-4.197027e-03,4.422883e-03,4.643939e-03,4.861858e-03,5.077910e-03,5.293416e-03,5.509553e-03,
-5.727123e-03,5.946622e-03,6.168285e-03,6.392006e-03,6.617371e-03,6.843719e-03,7.070191e-03,
-7.295793e-03,7.519457e-03,7.740099e-03,7.956683e-03,8.168260e-03,8.374004e-03,8.573230e-03,
-8.765403e-03,8.950129e-03,9.127152e-03,9.296334e-03,9.457647e-03,9.611145e-03,9.756957e-03,
-9.895275e-03,1.002632e-02,1.015036e-02,1.026766e-02,1.037853e-02,1.048327e-02,1.058218e-02,
-1.067556e-02,1.076370e-02,1.084690e-02,1.092544e-02,1.099957e-02,1.106956e-02,1.113566e-02,
-1.119809e-02,1.125710e-02,1.131288e-02,1.136563e-02,1.141557e-02,1.146285e-02,1.150766e-02,
-1.155017e-02,1.159052e-02,1.162888e-02,1.166537e-02,1.170014e-02,1.173328e-02,1.176483e-02,
-1.179510e-02,1.182421e-02,1.185232e-02,1.187957e-02,1.190617e-02,1.193232e-02,1.195832e-02,
-1.198450e-02,1.201129e-02,1.203924e-02,1.206900e-02,1.210130e-02,1.213697e-02,1.217683e-02,
-1.222166e-02,1.227215e-02,1.232884e-02,1.239218e-02,1.246252e-02,1.254018e-02,1.262551e-02,
-1.271890e-02,1.282083e-02,1.293183e-02,1.305251e-02,1.318351e-02,1.332543e-02,1.347880e-02,
-1.364395e-02,1.382089e-02,1.400920e-02,1.420789e-02,1.441539e-02,1.462947e-02,1.484742e-02,
-1.506624e-02,1.528290e-02,1.549464e-02,1.569920e-02,1.589495e-02,1.608089e-02,1.625664e-02,
-1.642228e-02,1.657827e-02,1.672530e-02,1.686422e-02,1.699595e-02,1.712141e-02,1.724154e-02,
-1.735724e-02,1.746933e-02,1.757862e-02,1.768580e-02,1.779151e-02,1.789629e-02,1.800058e-02,
-1.810471e-02,1.820886e-02,1.831308e-02,1.841729e-02,1.852126e-02,1.862466e-02,1.872709e-02,
-1.882813e-02,1.892735e-02,1.902442e-02,1.911908e-02,1.921116e-02,1.930062e-02,1.938748e-02,
-1.947187e-02,1.955394e-02,1.963391e-02,1.971200e-02,1.978844e-02,1.986346e-02,1.993725e-02,
-2.001002e-02,2.008193e-02,2.015313e-02,2.022374e-02,2.029385e-02,2.036355e-02,2.043289e-02,
-2.050193e-02,2.057069e-02,2.063918e-02,2.070743e-02,2.077542e-02,2.084316e-02,2.091063e-02,
-2.097784e-02,2.104476e-02,2.111138e-02,2.117769e-02,2.124368e-02,2.130933e-02,2.137464e-02,
-2.143959e-02,2.150419e-02,2.156841e-02,2.163227e-02,2.169575e-02,2.175885e-02,2.182157e-02,
-2.188391e-02,2.194588e-02,2.200747e-02,2.206869e-02,2.212954e-02,2.219003e-02,2.225016e-02,
-2.230994e-02,2.236936e-02,2.242845e-02,2.248720e-02,2.254562e-02,2.260371e-02,2.266149e-02,
-2.271896e-02,2.277613e-02,2.283300e-02,2.288957e-02,2.294587e-02,2.300189e-02,2.305764e-02,
-2.311312e-02,2.316835e-02,2.322333e-02,2.327806e-02,2.333255e-02,2.338681e-02,2.344084e-02,
-2.349466e-02,2.354825e-02,2.360164e-02,2.365482e-02,2.370780e-02,2.376059e-02,2.381319e-02,
-2.386561e-02,2.391784e-02,2.396991e-02,2.402180e-02,2.407353e-02,2.412509e-02,2.417651e-02,
-2.422776e-02,2.427888e-02,2.432984e-02,2.438067e-02,2.443137e-02,2.448193e-02,2.453236e-02,
-2.458267e-02,2.463286e-02,2.468294e-02,2.473290e-02,2.478275e-02,2.483249e-02,2.488213e-02,
-2.493168e-02,2.498112e-02,2.503047e-02,2.507974e-02,2.512891e-02,2.517800e-02,2.522701e-02,
-2.527595e-02,2.532480e-02,2.537359e-02,2.542230e-02,2.547095e-02,2.551954e-02,2.556806e-02,
-2.561653e-02,2.566494e-02,2.571329e-02,2.576160e-02,2.580985e-02,2.585807e-02,2.590623e-02,
-2.595436e-02,2.600245e-02,2.605050e-02,2.609852e-02,2.614650e-02,2.619446e-02,2.624239e-02,
-2.629030e-02,2.633818e-02,2.638604e-02,2.643389e-02,2.648172e-02,2.652953e-02,2.657733e-02,
-2.662513e-02,2.667291e-02,2.672069e-02,2.676847e-02,2.681624e-02,2.686402e-02,2.691179e-02
-  };
-  static const G4double P15[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-3.974782e-06,2.111703e-05,4.187126e-05,6.655079e-05,9.794658e-05,1.391596e-04,1.910712e-04,
-2.547110e-04,3.424807e-04,4.647771e-04,6.247355e-04,8.380779e-04,1.162192e-03,1.613141e-03,
-2.209563e-03,3.022272e-03,4.083389e-03,5.391437e-03,6.847763e-03,8.447014e-03,1.019379e-02,
-1.208961e-02,1.415500e-02,1.648372e-02,1.911481e-02,2.208779e-02,2.543914e-02,2.914260e-02,
-3.316793e-02,3.745194e-02,4.191903e-02,4.650110e-02,5.114289e-02,5.580689e-02,6.047654e-02,
-6.515418e-02,6.985421e-02,7.459850e-02,7.942200e-02,8.435394e-02,8.942726e-02,9.467447e-02,
-1.001215e-01,1.057883e-01,1.116895e-01,1.178312e-01,1.242106e-01,1.308174e-01,1.376334e-01,
-1.446344e-01,1.517909e-01,1.590700e-01,1.664371e-01,1.738573e-01,1.812967e-01,1.887238e-01,
-1.961101e-01,2.034302e-01,2.106622e-01,2.177880e-01,2.247927e-01,2.316643e-01,2.383937e-01,
-2.449747e-01,2.514023e-01,2.576744e-01,2.637892e-01,2.697473e-01,2.755497e-01,2.811981e-01,
-2.866954e-01,2.920447e-01,2.972497e-01,3.023141e-01,3.072423e-01,3.120386e-01,3.167076e-01,
-3.212540e-01,3.256827e-01,3.299983e-01,3.342061e-01,3.383109e-01,3.423179e-01,3.462322e-01,
-3.500593e-01,3.538045e-01,3.574734e-01,3.610719e-01,3.646061e-01,3.680773e-01,3.714851e-01,
-3.748540e-01,3.781939e-01,3.815172e-01,3.848393e-01,3.881806e-01,3.915678e-01,3.950376e-01,
-3.986393e-01,4.024394e-01,4.065252e-01,4.110083e-01,4.160253e-01,4.217350e-01,4.283120e-01,
-4.359366e-01,4.447861e-01,4.550284e-01,4.668217e-01,4.803198e-01,4.956807e-01,5.130757e-01,
-5.326983e-01,5.547703e-01,5.795448e-01,6.073059e-01,6.383637e-01,6.730439e-01,7.116699e-01,
-7.545360e-01,8.018700e-01,8.537886e-01,9.102508e-01,9.710179e-01,1.035633e+00,1.103430e+00,
-1.173580e+00,1.245163e+00,1.317264e+00,1.389054e+00,1.459853e+00,1.529164e+00,1.596682e+00,
-1.662267e+00,1.725924e+00,1.787763e+00,1.847980e+00,1.906827e+00,1.964596e+00,2.021606e+00,
-2.078191e+00,2.134696e+00,2.191472e+00,2.248861e+00,2.307198e+00,2.366794e+00,2.427929e+00,
-2.490835e+00,2.555683e+00,2.622564e+00,2.691483e+00,2.762350e+00,2.834987e+00,2.909144e+00,
-2.984527e+00,3.060829e+00,3.137758e+00,3.215070e+00,3.292583e+00,3.370189e+00,3.447853e+00,
-3.525611e+00,3.603556e+00,3.681827e+00,3.760598e+00,3.840066e+00,3.920438e+00,4.001928e+00,
-4.084743e+00,4.169087e+00,4.255151e+00,4.343112e+00,4.433133e+00,4.525363e+00,4.619934e+00,
-4.716965e+00,4.816561e+00,4.918816e+00,5.023813e+00,5.131626e+00,5.242324e+00,5.355968e+00,
-5.472618e+00,5.592327e+00,5.715152e+00,5.841146e+00,5.970363e+00,6.102860e+00,6.238695e+00,
-6.377929e+00,6.520625e+00,6.666852e+00,6.816680e+00,6.970186e+00,7.127448e+00,7.288551e+00,
-7.453583e+00,7.622638e+00,7.795812e+00,7.973209e+00,8.154935e+00,8.341103e+00,8.531830e+00,
-8.727236e+00,8.927450e+00,9.132601e+00,9.342828e+00,9.558272e+00,9.779080e+00,1.000540e+01,
-1.023740e+01,1.047524e+01,1.071908e+01,1.096910e+01,1.122548e+01,1.148841e+01,1.175808e+01,
-1.203469e+01,1.231843e+01,1.260954e+01,1.290821e+01,1.321468e+01,1.352918e+01,1.385194e+01,
-1.418323e+01,1.452328e+01,1.487236e+01,1.523075e+01,1.559872e+01,1.597656e+01,1.636457e+01,
-1.676306e+01,1.717234e+01,1.759273e+01,1.802457e+01,1.846822e+01,1.892402e+01,1.939234e+01,
-1.987358e+01,2.036810e+01,2.087633e+01,2.139868e+01,2.193558e+01,2.248747e+01,2.305481e+01,
-2.363808e+01,2.423775e+01,2.485434e+01,2.548836e+01,2.614035e+01,2.681085e+01,2.750044e+01,
-2.820970e+01,2.893925e+01,2.968970e+01,3.046170e+01,3.125593e+01,3.207305e+01,3.291380e+01,
-3.377889e+01,3.466908e+01,3.558515e+01,3.652791e+01,3.749819e+01,3.849684e+01,3.952475e+01,
-4.058284e+01,4.167204e+01,4.279334e+01,4.394772e+01,4.513625e+01,4.635997e+01,4.762000e+01,
-4.891749e+01,5.025360e+01,5.162956e+01,5.304662e+01,5.450609e+01,5.600929e+01,5.755762e+01,
-5.915250e+01,6.079540e+01,6.248786e+01,6.423144e+01,6.602777e+01,6.787852e+01,6.978543e+01,
-7.175028e+01,7.377494e+01,7.586129e+01,7.801133e+01,8.022707e+01,8.251063e+01,8.486417e+01
-  };
-  static const G4double P25[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-2.695366e-05,1.456646e-04,2.940957e-04,4.763706e-04,7.159105e-04,1.040560e-03,1.462756e-03,
-1.997124e-03,2.758357e-03,3.853132e-03,5.331120e-03,7.366831e-03,1.055881e-02,1.514171e-02,
-2.139761e-02,3.019542e-02,4.204851e-02,5.712316e-02,7.444010e-02,9.406277e-02,1.161775e-01,
-1.409425e-01,1.687811e-01,2.011671e-01,2.389176e-01,2.829245e-01,3.341005e-01,3.924354e-01,
-4.578416e-01,5.296390e-01,6.068635e-01,6.885638e-01,7.739318e-01,8.624020e-01,9.537611e-01,
-1.048148e+00,1.145963e+00,1.247793e+00,1.354566e+00,1.467159e+00,1.586602e+00,1.714000e+00,
-1.850381e+00,1.996693e+00,2.153810e+00,2.322424e+00,2.503024e+00,2.695880e+00,2.901036e+00,
-3.118309e+00,3.347312e+00,3.587475e+00,3.838086e+00,4.098335e+00,4.367355e+00,4.644260e+00,
-4.928176e+00,5.218268e+00,5.513750e+00,5.813904e+00,6.118091e+00,6.425733e+00,6.736332e+00,
-7.049470e+00,7.364768e+00,7.681941e+00,8.000723e+00,8.320924e+00,8.642387e+00,8.964984e+00,
-9.288638e+00,9.613299e+00,9.938942e+00,1.026557e+01,1.059321e+01,1.092191e+01,1.125175e+01,
-1.158282e+01,1.191526e+01,1.224919e+01,1.258480e+01,1.292228e+01,1.326186e+01,1.360381e+01,
-1.394841e+01,1.429602e+01,1.464702e+01,1.500188e+01,1.536112e+01,1.572479e+01,1.609281e+01,
-1.646782e+01,1.685103e+01,1.724405e+01,1.764902e+01,1.806883e+01,1.850751e+01,1.897069e+01,
-1.946627e+01,2.000522e+01,2.060253e+01,2.127807e+01,2.205730e+01,2.297138e+01,2.405664e+01,
-2.535341e+01,2.690469e+01,2.875518e+01,3.095123e+01,3.354183e+01,3.658031e+01,4.012667e+01,
-4.424985e+01,4.902993e+01,5.455981e+01,6.094631e+01,6.831029e+01,7.678525e+01,8.651380e+01,
-9.764114e+01,1.103048e+02,1.246205e+02,1.406659e+02,1.584635e+02,1.779675e+02,1.990585e+02,
-2.215491e+02,2.452021e+02,2.697554e+02,2.949511e+02,3.205598e+02,3.463985e+02,3.723392e+02,
-3.983095e+02,4.242881e+02,4.502985e+02,4.764027e+02,5.026947e+02,5.292959e+02,5.563519e+02,
-5.840293e+02,6.125149e+02,6.420137e+02,6.727452e+02,7.049409e+02,7.388395e+02,7.746786e+02,
-8.126858e+02,8.530658e+02,8.959874e+02,9.415706e+02,9.898771e+02,1.040906e+03,1.094598e+03,
-1.150848e+03,1.209525e+03,1.270497e+03,1.333646e+03,1.398899e+03,1.466229e+03,1.535674e+03,
-1.607330e+03,1.681358e+03,1.757972e+03,1.837437e+03,1.920058e+03,2.006179e+03,2.096171e+03,
-2.190427e+03,2.289361e+03,2.393404e+03,2.502995e+03,2.618587e+03,2.740640e+03,2.869622e+03,
-3.006011e+03,3.150290e+03,3.302954e+03,3.464511e+03,3.635478e+03,3.816392e+03,4.007807e+03,
-4.210296e+03,4.424458e+03,4.650917e+03,4.890329e+03,5.143382e+03,5.410798e+03,5.693341e+03,
-5.991817e+03,6.307078e+03,6.640026e+03,6.991616e+03,7.362858e+03,7.754825e+03,8.168654e+03,
-8.605548e+03,9.066788e+03,9.553727e+03,1.006780e+04,1.061054e+04,1.118357e+04,1.178858e+04,
-1.242741e+04,1.310199e+04,1.381436e+04,1.456669e+04,1.536129e+04,1.620059e+04,1.708718e+04,
-1.802382e+04,1.901340e+04,2.005902e+04,2.116395e+04,2.233167e+04,2.356584e+04,2.487038e+04,
-2.624943e+04,2.770738e+04,2.924888e+04,3.087888e+04,3.260261e+04,3.442562e+04,3.635382e+04,
-3.839344e+04,4.055112e+04,4.283390e+04,4.524923e+04,4.780502e+04,5.050969e+04,5.337213e+04,
-5.640180e+04,5.960874e+04,6.300357e+04,6.659759e+04,7.040280e+04,7.443190e+04,7.869840e+04,
-8.321661e+04,8.800174e+04,9.306993e+04,9.843832e+04,1.041251e+05,1.101495e+05,1.165321e+05,
-1.232946e+05,1.304601e+05,1.380532e+05,1.460998e+05,1.546276e+05,1.636660e+05,1.732461e+05,
-1.834010e+05,1.941660e+05,2.055782e+05,2.176775e+05,2.305058e+05,2.441079e+05,2.585314e+05,
-2.738267e+05,2.900474e+05,3.072504e+05,3.254964e+05,3.448495e+05,3.653781e+05,3.871546e+05,
-4.102564e+05,4.347651e+05,4.607680e+05,4.883575e+05,5.176318e+05,5.486956e+05,5.816597e+05,
-6.166422e+05,6.537685e+05,6.931719e+05,7.349941e+05,7.793856e+05,8.265066e+05,8.765271e+05,
-9.296281e+05,9.860018e+05,1.045853e+06,1.109398e+06,1.176869e+06,1.248512e+06,1.324586e+06,
-1.405371e+06,1.491162e+06,1.582272e+06,1.679036e+06,1.781809e+06,1.890967e+06,2.006914e+06
-  };
-  static const G4double P06[nE]={
-1.177941e-08,2.588247e-08,4.232501e-08,6.117863e-08,8.251710e-08,1.064164e-07,1.329550e-07,
-1.622136e-07,1.942754e-07,2.292262e-07,2.671543e-07,3.081509e-07,3.523099e-07,4.005143e-07,
-4.568609e-07,5.221504e-07,5.966563e-07,6.806607e-07,7.744541e-07,8.783361e-07,9.926154e-07,
-1.117610e-06,1.253648e-06,1.407254e-06,1.585177e-06,1.788160e-06,2.016972e-06,2.272402e-06,
-2.555265e-06,2.866400e-06,3.210941e-06,3.607791e-06,4.060525e-06,4.570854e-06,5.140538e-06,
-5.771395e-06,6.471521e-06,7.274318e-06,8.187243e-06,9.213663e-06,1.035705e-05,1.162722e-05,
-1.307801e-05,1.472581e-05,1.657663e-05,1.863670e-05,2.096335e-05,2.361557e-05,2.660333e-05,
-2.993756e-05,3.371561e-05,3.801233e-05,4.284356e-05,4.826338e-05,5.444679e-05,6.143438e-05,
-6.927898e-05,7.822982e-05,8.836866e-05,9.979567e-05,1.128693e-04,1.276837e-04,1.445433e-04,
-1.638882e-04,1.858924e-04,2.113879e-04,2.406623e-04,2.749277e-04,3.149839e-04,3.626925e-04,
-4.199591e-04,4.903319e-04,5.776505e-04,6.896213e-04,8.327844e-04,1.019672e-03,1.256072e-03,
-1.545358e-03,1.876495e-03,2.234266e-03,2.599517e-03,2.965057e-03,3.327538e-03,3.688496e-03,
-4.049256e-03,4.410120e-03,4.770247e-03,5.127797e-03,5.480662e-03,5.826902e-03,6.164910e-03,
-6.493445e-03,6.811580e-03,7.118638e-03,7.414125e-03,7.697697e-03,7.969130e-03,8.228314e-03,
-8.475244e-03,8.710011e-03,8.932790e-03,9.143846e-03,9.343514e-03,9.532163e-03,9.710217e-03,
-9.878136e-03,1.003638e-02,1.018543e-02,1.032577e-02,1.045788e-02,1.058222e-02,1.069925e-02,
-1.080940e-02,1.091309e-02,1.101074e-02,1.110271e-02,1.118937e-02,1.127107e-02,1.134814e-02,
-1.142087e-02,1.148956e-02,1.155449e-02,1.161591e-02,1.167407e-02,1.172919e-02,1.178149e-02,
-1.183119e-02,1.187846e-02,1.192350e-02,1.196648e-02,1.200757e-02,1.204672e-02,1.208376e-02,
-1.211950e-02,1.215412e-02,1.218777e-02,1.222066e-02,1.225302e-02,1.228514e-02,1.231736e-02,
-1.235014e-02,1.238405e-02,1.241978e-02,1.245819e-02,1.250024e-02,1.254701e-02,1.259955e-02,
-1.265887e-02,1.272581e-02,1.280106e-02,1.288513e-02,1.297844e-02,1.308135e-02,1.319425e-02,
-1.331759e-02,1.345191e-02,1.359785e-02,1.375610e-02,1.392741e-02,1.411249e-02,1.431192e-02,
-1.452607e-02,1.475493e-02,1.499797e-02,1.525402e-02,1.552116e-02,1.579678e-02,1.607760e-02,
-1.636002e-02,1.664033e-02,1.691510e-02,1.718143e-02,1.743714e-02,1.768081e-02,1.791177e-02,
-1.812995e-02,1.833578e-02,1.853000e-02,1.871357e-02,1.888757e-02,1.905313e-02,1.921139e-02,
-1.936343e-02,1.951030e-02,1.965297e-02,1.979231e-02,1.992912e-02,2.006408e-02,2.019774e-02,
-2.033054e-02,2.046278e-02,2.059460e-02,2.072598e-02,2.085680e-02,2.098677e-02,2.111556e-02,
-2.124276e-02,2.136797e-02,2.149083e-02,2.161106e-02,2.172847e-02,2.184294e-02,2.195448e-02,
-2.206318e-02,2.216917e-02,2.227266e-02,2.237386e-02,2.247304e-02,2.257041e-02,2.266623e-02,
-2.276069e-02,2.285400e-02,2.294633e-02,2.303782e-02,2.312859e-02,2.321873e-02,2.330833e-02,
-2.339744e-02,2.348610e-02,2.357434e-02,2.366216e-02,2.374958e-02,2.383660e-02,2.392321e-02,
-2.400939e-02,2.409515e-02,2.418046e-02,2.426532e-02,2.434971e-02,2.443362e-02,2.451703e-02,
-2.459996e-02,2.468237e-02,2.476428e-02,2.484568e-02,2.492656e-02,2.500692e-02,2.508678e-02,
-2.516612e-02,2.524495e-02,2.532328e-02,2.540111e-02,2.547844e-02,2.555530e-02,2.563167e-02,
-2.570757e-02,2.578302e-02,2.585800e-02,2.593255e-02,2.600666e-02,2.608034e-02,2.615360e-02,
-2.622645e-02,2.629891e-02,2.637098e-02,2.644266e-02,2.651397e-02,2.658492e-02,2.665552e-02,
-2.672577e-02,2.679569e-02,2.686527e-02,2.693454e-02,2.700349e-02,2.707214e-02,2.714049e-02,
-2.720856e-02,2.727634e-02,2.734385e-02,2.741110e-02,2.747808e-02,2.754481e-02,2.761130e-02,
-2.767754e-02,2.774355e-02,2.780934e-02,2.787490e-02,2.794025e-02,2.800540e-02,2.807034e-02,
-2.813508e-02,2.819963e-02,2.826399e-02,2.832817e-02,2.839218e-02,2.845601e-02,2.851968e-02,
-2.858319e-02,2.864654e-02,2.870974e-02,2.877279e-02,2.883570e-02,2.889848e-02,2.896112e-02,
-2.902362e-02,2.908601e-02,2.914827e-02,2.921042e-02,2.927245e-02,2.933437e-02,2.939619e-02,
-2.945791e-02,2.951952e-02,2.958105e-02,2.964248e-02,2.970383e-02,2.976509e-02,2.982628e-02,
-2.988738e-02,2.994842e-02,3.000938e-02,3.007028e-02,3.013111e-02,3.019189e-02,3.025260e-02,
-3.031327e-02,3.037388e-02,3.043444e-02,3.049496e-02,3.055544e-02,3.061588e-02,3.067628e-02,
-3.073665e-02,3.079699e-02,3.085730e-02,3.091759e-02,3.097785e-02,3.103809e-02,3.109832e-02,
-3.115854e-02,3.121874e-02,3.127894e-02,3.133912e-02,3.139931e-02,3.145949e-02,3.151968e-02
-  };
-  static const G4double P16[nE]={
-1.804258e-08,4.051712e-08,6.777154e-08,1.002656e-07,1.384927e-07,1.829820e-07,2.343007e-07,
-2.930569e-07,3.599020e-07,4.355335e-07,5.206986e-07,6.161967e-07,7.228834e-07,8.436657e-07,
-9.900430e-07,1.165832e-06,1.373705e-06,1.616528e-06,1.897372e-06,2.219523e-06,2.586504e-06,
-3.002083e-06,3.470293e-06,4.017609e-06,4.673657e-06,5.448091e-06,6.351250e-06,7.394207e-06,
-8.588820e-06,9.947777e-06,1.150413e-05,1.335773e-05,1.554391e-05,1.809134e-05,2.103071e-05,
-2.439490e-05,2.825371e-05,3.282620e-05,3.819883e-05,4.443975e-05,5.162192e-05,5.986434e-05,
-6.958951e-05,8.099809e-05,9.423242e-05,1.094449e-04,1.271888e-04,1.480744e-04,1.723673e-04,
-2.003571e-04,2.331035e-04,2.715493e-04,3.161734e-04,3.678507e-04,4.287074e-04,4.996878e-04,
-5.819333e-04,6.787875e-04,7.920050e-04,9.236902e-04,1.079162e-03,1.260946e-03,1.474428e-03,
-1.727161e-03,2.023776e-03,2.378366e-03,2.798406e-03,3.305670e-03,3.917386e-03,4.669086e-03,
-5.599801e-03,6.779798e-03,8.289933e-03,1.028773e-02,1.292223e-02,1.646960e-02,2.109720e-02,
-2.693730e-02,3.383013e-02,4.151002e-02,4.959508e-02,5.793931e-02,6.647249e-02,7.523542e-02,
-8.426714e-02,9.358336e-02,1.031704e-01,1.129855e-01,1.229736e-01,1.330792e-01,1.432514e-01,
-1.534460e-01,1.636247e-01,1.737542e-01,1.838047e-01,1.937493e-01,2.035636e-01,2.132257e-01,
-2.227163e-01,2.320190e-01,2.411202e-01,2.500095e-01,2.586795e-01,2.671245e-01,2.753418e-01,
-2.833311e-01,2.910927e-01,2.986297e-01,3.059453e-01,3.130445e-01,3.199327e-01,3.266157e-01,
-3.331003e-01,3.393933e-01,3.455017e-01,3.514328e-01,3.571940e-01,3.627927e-01,3.682364e-01,
-3.735326e-01,3.786887e-01,3.837123e-01,3.886108e-01,3.933918e-01,3.980628e-01,4.026315e-01,
-4.071056e-01,4.114928e-01,4.158014e-01,4.200395e-01,4.242160e-01,4.283169e-01,4.323171e-01,
-4.362959e-01,4.402669e-01,4.442464e-01,4.482555e-01,4.523215e-01,4.564807e-01,4.607821e-01,
-4.652924e-01,4.701007e-01,4.753240e-01,4.811110e-01,4.876429e-01,4.951294e-01,5.037993e-01,
-5.138871e-01,5.256210e-01,5.392151e-01,5.548691e-01,5.727754e-01,5.931301e-01,6.161452e-01,
-6.420599e-01,6.711473e-01,7.037187e-01,7.401224e-01,7.807376e-01,8.259614e-01,8.761869e-01,
-9.317722e-01,9.929958e-01,1.060005e+00,1.132763e+00,1.211000e+00,1.294186e+00,1.381542e+00,
-1.472082e+00,1.564697e+00,1.658261e+00,1.751727e+00,1.844213e+00,1.935045e+00,2.023775e+00,
-2.110166e+00,2.194160e+00,2.275844e+00,2.355414e+00,2.433149e+00,2.509381e+00,2.584481e+00,
-2.658844e+00,2.732878e+00,2.806997e+00,2.881608e+00,2.957106e+00,3.033862e+00,3.112213e+00,
-3.192444e+00,3.274781e+00,3.359367e+00,3.446260e+00,3.535423e+00,3.626726e+00,3.719962e+00,
-3.814868e+00,3.911152e+00,4.008524e+00,4.106726e+00,4.205551e+00,4.304862e+00,4.404592e+00,
-4.504750e+00,4.605408e+00,4.706697e+00,4.808789e+00,4.911889e+00,5.016222e+00,5.122024e+00,
-5.229531e+00,5.338975e+00,5.450581e+00,5.564558e+00,5.681101e+00,5.800388e+00,5.922581e+00,
-6.047825e+00,6.176250e+00,6.307973e+00,6.443097e+00,6.581718e+00,6.723919e+00,6.869782e+00,
-7.019380e+00,7.172786e+00,7.330069e+00,7.491299e+00,7.656547e+00,7.825885e+00,7.999388e+00,
-8.177134e+00,8.359207e+00,8.545692e+00,8.736681e+00,8.932270e+00,9.132563e+00,9.337664e+00,
-9.547688e+00,9.762753e+00,9.982984e+00,1.020851e+01,1.043947e+01,1.067600e+01,1.091825e+01,
-1.116638e+01,1.142055e+01,1.168091e+01,1.194766e+01,1.222096e+01,1.250100e+01,1.278798e+01,
-1.308209e+01,1.338354e+01,1.369254e+01,1.400932e+01,1.433410e+01,1.466711e+01,1.500860e+01,
-1.535881e+01,1.571802e+01,1.608647e+01,1.646446e+01,1.685226e+01,1.725016e+01,1.765847e+01,
-1.807750e+01,1.850756e+01,1.894900e+01,1.940215e+01,1.986736e+01,2.034499e+01,2.083543e+01,
-2.133906e+01,2.185627e+01,2.238747e+01,2.293309e+01,2.349357e+01,2.406936e+01,2.466091e+01,
-2.526871e+01,2.589326e+01,2.653505e+01,2.719463e+01,2.787252e+01,2.856929e+01,2.928551e+01,
-3.002178e+01,3.077871e+01,3.155693e+01,3.235711e+01,3.317990e+01,3.402601e+01,3.489614e+01,
-3.579106e+01,3.671150e+01,3.765827e+01,3.863217e+01,3.963405e+01,4.066476e+01,4.172521e+01,
-4.281631e+01,4.393901e+01,4.509429e+01,4.628318e+01,4.750671e+01,4.876596e+01,5.006205e+01,
-5.139612e+01,5.276937e+01,5.418302e+01,5.563833e+01,5.713661e+01,5.867921e+01,6.026751e+01,
-6.190297e+01,6.358705e+01,6.532129e+01,6.710728e+01,6.894664e+01,7.084106e+01,7.279228e+01,
-7.480211e+01,7.687239e+01,7.900504e+01,8.120204e+01,8.346544e+01,8.579735e+01,8.819995e+01,
-9.067549e+01,9.322629e+01,9.585477e+01,9.856339e+01,1.013547e+02,1.042314e+02,1.071962e+02
-};
-  static const G4double P26[nE]={
-2.763953e-08,6.345949e-08,1.086410e-07,1.646514e-07,2.331424e-07,3.159704e-07,4.152194e-07,
-5.332258e-07,6.726060e-07,8.362873e-07,1.027541e-06,1.250021e-06,1.507800e-06,1.810470e-06,
-2.190769e-06,2.664122e-06,3.244155e-06,3.946134e-06,4.787143e-06,5.786279e-06,6.964869e-06,
-8.346712e-06,9.958338e-06,1.190868e-05,1.432794e-05,1.728288e-05,2.084815e-05,2.510710e-05,
-3.015277e-05,3.608891e-05,4.311988e-05,5.177849e-05,6.233615e-05,7.505340e-05,9.022094e-05,
-1.081628e-04,1.294330e-04,1.554788e-04,1.870999e-04,2.250498e-04,2.701684e-04,3.236600e-04,
-3.888571e-04,4.678518e-04,5.624921e-04,6.748370e-04,8.101707e-04,9.746542e-04,1.172191e-03,
-1.407177e-03,1.691031e-03,2.035063e-03,2.447271e-03,2.940049e-03,3.539047e-03,4.260131e-03,
-5.122493e-03,6.170607e-03,7.434979e-03,8.952649e-03,1.080167e-02,1.303248e-02,1.573588e-02,
-1.903802e-02,2.303667e-02,2.796869e-02,3.399608e-02,4.150621e-02,5.084875e-02,6.269354e-02,
-7.782102e-02,9.760857e-02,1.237277e-01,1.593755e-01,2.078596e-01,2.751986e-01,3.657927e-01,
-4.837016e-01,6.271917e-01,7.920609e-01,9.710429e-01,1.161533e+00,1.362429e+00,1.575182e+00,
-1.801311e+00,2.041842e+00,2.297083e+00,2.566537e+00,2.849279e+00,3.144251e+00,3.450405e+00,
-3.766771e+00,4.092464e+00,4.426651e+00,4.768529e+00,5.117305e+00,5.472190e+00,5.832406e+00,
-6.197200e+00,6.565854e+00,6.937695e+00,7.312125e+00,7.688622e+00,8.066700e+00,8.445965e+00,
-8.826109e+00,9.206837e+00,9.587977e+00,9.969349e+00,1.035087e+01,1.073249e+01,1.111417e+01,
-1.149595e+01,1.187788e+01,1.226005e+01,1.264257e+01,1.302559e+01,1.340927e+01,1.379384e+01,
-1.417951e+01,1.456656e+01,1.495527e+01,1.534597e+01,1.573905e+01,1.613491e+01,1.653401e+01,
-1.693687e+01,1.734407e+01,1.775627e+01,1.817421e+01,1.859874e+01,1.902838e+01,1.946037e+01,
-1.990328e+01,2.035890e+01,2.082955e+01,2.131826e+01,2.182915e+01,2.236781e+01,2.294202e+01,
-2.356264e+01,2.424460e+01,2.500821e+01,2.588024e+01,2.689479e+01,2.809335e+01,2.952398e+01,
-3.123968e+01,3.329659e+01,3.575267e+01,3.866763e+01,4.210424e+01,4.613052e+01,5.082266e+01,
-5.626792e+01,6.256728e+01,6.983744e+01,7.821214e+01,8.784217e+01,9.889362e+01,1.115436e+02,
-1.259725e+02,1.423521e+02,1.608289e+02,1.815051e+02,2.044192e+02,2.295289e+02,2.567044e+02,
-2.857326e+02,3.163352e+02,3.481975e+02,3.810013e+02,4.144549e+02,4.483161e+02,4.824071e+02,
-5.166161e+02,5.508948e+02,5.852521e+02,6.197460e+02,6.544766e+02,6.895795e+02,7.252210e+02,
-7.615940e+02,7.989157e+02,8.374251e+02,8.773781e+02,9.190446e+02,9.627033e+02,1.008634e+03,
-1.057108e+03,1.108378e+03,1.162661e+03,1.220133e+03,1.280910e+03,1.345053e+03,1.412558e+03,
-1.483376e+03,1.557421e+03,1.634595e+03,1.714809e+03,1.798003e+03,1.884166e+03,1.973341e+03,
-2.065641e+03,2.161241e+03,2.260386e+03,2.363376e+03,2.470569e+03,2.582365e+03,2.699205e+03,
-2.821563e+03,2.949940e+03,3.084860e+03,3.226865e+03,3.376512e+03,3.534371e+03,3.701025e+03,
-3.877070e+03,4.063111e+03,4.259770e+03,4.467683e+03,4.687502e+03,4.919903e+03,5.165583e+03,
-5.425268e+03,5.699711e+03,5.989703e+03,6.296071e+03,6.619683e+03,6.961453e+03,7.322347e+03,
-7.703383e+03,8.105638e+03,8.530251e+03,8.978428e+03,9.451447e+03,9.950663e+03,1.047751e+04,
-1.103351e+04,1.162029e+04,1.223954e+04,1.289309e+04,1.358286e+04,1.431090e+04,1.507936e+04,
-1.589056e+04,1.674691e+04,1.765102e+04,1.860561e+04,1.961359e+04,2.067805e+04,2.180224e+04,
-2.298963e+04,2.424390e+04,2.556894e+04,2.696888e+04,2.844810e+04,3.001123e+04,3.166322e+04,
-3.340927e+04,3.525492e+04,3.720606e+04,3.926890e+04,4.145005e+04,4.375653e+04,4.619574e+04,
-4.877559e+04,5.150442e+04,5.439111e+04,5.744506e+04,6.067625e+04,6.409526e+04,6.771333e+04,
-7.154238e+04,7.559504e+04,7.988472e+04,8.442567e+04,8.923299e+04,9.432270e+04,9.971181e+04,
-1.054184e+05,1.114616e+05,1.178617e+05,1.246404e+05,1.318205e+05,1.394264e+05,1.474839e+05,
-1.560204e+05,1.650649e+05,1.746485e+05,1.848038e+05,1.955658e+05,2.069713e+05,2.190597e+05,
-2.318726e+05,2.454544e+05,2.598521e+05,2.751156e+05,2.912980e+05,3.084555e+05,3.266481e+05,
-3.459394e+05,3.663968e+05,3.880920e+05,4.111014e+05,4.355058e+05,4.613913e+05,4.888493e+05,
-5.179768e+05,5.488770e+05,5.816596e+05,6.164410e+05,6.533451e+05,6.925033e+05,7.340555e+05,
-7.781503e+05,8.249455e+05,8.746091e+05,9.273193e+05,9.832659e+05,1.042650e+06,1.105687e+06,
-1.172603e+06,1.243642e+06,1.319059e+06,1.399130e+06,1.484145e+06,1.574413e+06,1.670262e+06,
-1.772044e+06,1.880129e+06,1.994914e+06,2.116817e+06,2.246287e+06,2.383799e+06,2.529858e+06
-  };
-  static const G4double P07[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,5.615850e-06,7.317061e-05,
-1.569824e-04,2.639676e-04,4.016252e-04,5.863944e-04,8.328386e-04,1.177938e-03,1.649296e-03,
-2.302400e-03,3.161734e-03,4.237816e-03,5.456960e-03,6.730797e-03,7.960891e-03,9.085925e-03,
-1.009134e-02,1.098015e-02,1.176593e-02,1.246461e-02,1.309051e-02,1.365573e-02,1.417019e-02,
-1.464189e-02,1.507718e-02,1.548101e-02,1.585724e-02,1.620889e-02,1.653832e-02,1.684741e-02,
-1.713770e-02,1.741048e-02,1.766689e-02,1.790792e-02,1.813454e-02,1.834756e-02,1.854780e-02,
-1.873604e-02,1.891300e-02,1.907937e-02,1.923580e-02,1.938293e-02,1.952135e-02,1.965163e-02,
-1.977430e-02,1.988986e-02,1.999879e-02,2.010154e-02,2.019852e-02,2.029015e-02,2.037679e-02,
-2.045879e-02,2.053649e-02,2.061020e-02,2.068021e-02,2.074680e-02,2.081022e-02,2.087073e-02,
-2.092857e-02,2.098394e-02,2.103706e-02,2.108813e-02,2.113735e-02,2.118465e-02,2.122987e-02,
-2.127393e-02,2.131701e-02,2.135933e-02,2.140114e-02,2.144273e-02,2.148447e-02,2.152683e-02,
-2.157041e-02,2.161596e-02,2.166444e-02,2.171699e-02,2.177491e-02,2.183961e-02,2.191251e-02,
-2.199488e-02,2.208782e-02,2.219215e-02,2.230849e-02,2.243729e-02,2.257897e-02,2.273395e-02,
-2.290275e-02,2.308599e-02,2.328443e-02,2.349891e-02,2.373031e-02,2.397948e-02,2.424715e-02,
-2.453375e-02,2.483929e-02,2.516314e-02,2.550390e-02,2.585931e-02,2.622620e-02,2.660061e-02,
-2.697807e-02,2.735392e-02,2.772372e-02,2.808361e-02,2.843053e-02,2.876237e-02,2.907794e-02,
-2.937688e-02,2.965945e-02,2.992642e-02,3.017888e-02,3.041812e-02,3.064554e-02,3.086254e-02,
-3.107052e-02,3.127081e-02,3.146466e-02,3.165321e-02,3.183749e-02,3.201839e-02,3.219668e-02,
-3.237296e-02,3.254769e-02,3.272115e-02,3.289347e-02,3.306460e-02,3.323440e-02,3.340257e-02,
-3.356878e-02,3.373266e-02,3.389385e-02,3.405206e-02,3.420704e-02,3.435868e-02,3.450692e-02,
-3.465181e-02,3.479348e-02,3.493210e-02,3.506790e-02,3.520114e-02,3.533207e-02,3.546095e-02,
-3.558802e-02,3.571351e-02,3.583761e-02,3.596050e-02,3.608232e-02,3.620319e-02,3.632322e-02,
-3.644246e-02,3.656098e-02,3.667881e-02,3.679597e-02,3.691248e-02,3.702833e-02,3.714354e-02,
-3.725808e-02,3.737196e-02,3.748515e-02,3.759766e-02,3.770946e-02,3.782055e-02,3.793092e-02,
-3.804056e-02,3.814948e-02,3.825765e-02,3.836510e-02,3.847181e-02,3.857779e-02,3.868304e-02,
-3.878758e-02,3.889140e-02,3.899452e-02,3.909694e-02,3.919867e-02,3.929974e-02,3.940014e-02,
-3.949989e-02,3.959900e-02,3.969749e-02,3.979536e-02,3.989264e-02,3.998933e-02,4.008545e-02,
-4.018101e-02,4.027603e-02,4.037051e-02,4.046447e-02,4.055793e-02,4.065089e-02,4.074337e-02,
-4.083538e-02,4.092693e-02,4.101803e-02,4.110870e-02,4.119895e-02,4.128879e-02,4.137822e-02,
-4.146726e-02,4.155592e-02,4.164422e-02,4.173215e-02,4.181972e-02,4.190696e-02,4.199387e-02,
-4.208045e-02,4.216671e-02,4.225267e-02,4.233834e-02,4.242371e-02,4.250880e-02,4.259361e-02,
-4.267816e-02,4.276246e-02,4.284650e-02,4.293029e-02,4.301385e-02,4.309718e-02,4.318028e-02,
-4.326316e-02,4.334584e-02,4.342831e-02,4.351058e-02,4.359266e-02,4.367456e-02,4.375627e-02,
-4.383781e-02,4.391918e-02,4.400038e-02,4.408143e-02,4.416233e-02,4.424307e-02,4.432368e-02,
-4.440415e-02,4.448448e-02,4.456469e-02,4.464477e-02,4.472474e-02,4.480460e-02,4.488434e-02,
-4.496398e-02,4.504353e-02,4.512297e-02,4.520233e-02,4.528160e-02,4.536079e-02,4.543990e-02,
-4.551894e-02,4.559790e-02,4.567681e-02,4.575564e-02,4.583443e-02,4.591315e-02,4.599183e-02,
-4.607046e-02,4.614905e-02,4.622760e-02,4.630612e-02,4.638460e-02,4.646306e-02,4.654149e-02,
-4.661990e-02,4.669829e-02,4.677667e-02,4.685504e-02,4.693340e-02,4.701176e-02,4.709012e-02
-  };
-  static const G4double P17[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,8.694188e-05,1.151450e-03,
-2.513681e-03,4.307796e-03,6.688706e-03,9.985798e-03,1.452144e-02,2.107299e-02,3.030290e-02,
-4.349128e-02,6.138684e-02,8.449316e-02,1.114863e-01,1.405633e-01,1.695167e-01,1.968221e-01,
-2.219850e-01,2.449239e-01,2.658362e-01,2.850105e-01,3.027228e-01,3.192162e-01,3.346962e-01,
-3.493314e-01,3.632567e-01,3.765775e-01,3.893736e-01,4.017050e-01,4.136155e-01,4.251374e-01,
-4.362941e-01,4.471031e-01,4.575777e-01,4.677296e-01,4.775694e-01,4.871054e-01,4.963468e-01,
-5.053029e-01,5.139821e-01,5.223946e-01,5.305490e-01,5.384555e-01,5.461239e-01,5.535637e-01,
-5.607851e-01,5.677982e-01,5.746128e-01,5.812389e-01,5.876864e-01,5.939653e-01,6.000854e-01,
-6.060565e-01,6.118886e-01,6.175915e-01,6.231750e-01,6.286492e-01,6.340241e-01,6.393099e-01,
-6.445170e-01,6.496560e-01,6.547378e-01,6.597740e-01,6.647766e-01,6.697321e-01,6.746154e-01,
-6.795190e-01,6.844617e-01,6.894666e-01,6.945629e-01,6.997888e-01,7.051949e-01,7.108496e-01,
-7.168454e-01,7.233059e-01,7.303926e-01,7.383100e-01,7.473057e-01,7.576639e-01,7.696919e-01,
-7.837012e-01,7.999913e-01,8.188394e-01,8.405009e-01,8.652194e-01,8.932419e-01,9.248353e-01,
-9.603004e-01,9.999814e-01,1.044271e+00,1.093607e+00,1.148468e+00,1.209355e+00,1.276765e+00,
-1.351156e+00,1.432891e+00,1.522179e+00,1.619010e+00,1.723096e+00,1.833831e+00,1.950298e+00,
-2.071307e+00,2.195490e+00,2.321415e+00,2.447717e+00,2.573196e+00,2.696895e+00,2.818133e+00,
-2.936495e+00,3.051807e+00,3.164089e+00,3.273524e+00,3.380405e+00,3.485116e+00,3.588094e+00,
-3.689814e+00,3.790775e+00,3.891483e+00,3.992439e+00,4.094131e+00,4.197019e+00,4.301527e+00,
-4.408024e+00,4.516815e+00,4.628125e+00,4.742085e+00,4.858732e+00,4.978006e+00,5.099759e+00,
-5.223773e+00,5.349792e+00,5.477539e+00,5.606756e+00,5.737222e+00,5.868772e+00,6.001315e+00,
-6.134829e+00,6.269367e+00,6.405046e+00,6.542037e+00,6.680554e+00,6.820840e+00,6.963154e+00,
-7.107768e+00,7.254950e+00,7.404963e+00,7.558058e+00,7.714470e+00,7.874417e+00,8.038099e+00,
-8.205696e+00,8.377371e+00,8.553273e+00,8.733533e+00,8.918273e+00,9.107605e+00,9.301632e+00,
-9.500452e+00,9.704160e+00,9.912848e+00,1.012661e+01,1.034554e+01,1.056973e+01,1.079929e+01,
-1.103432e+01,1.127492e+01,1.152121e+01,1.177333e+01,1.203138e+01,1.229551e+01,1.256585e+01,
-1.284257e+01,1.312581e+01,1.341573e+01,1.371252e+01,1.401634e+01,1.432738e+01,1.464584e+01,
-1.497192e+01,1.530584e+01,1.564780e+01,1.599804e+01,1.635679e+01,1.672429e+01,1.710079e+01,
-1.748656e+01,1.788187e+01,1.828699e+01,1.870221e+01,1.912783e+01,1.956415e+01,2.001149e+01,
-2.047018e+01,2.094055e+01,2.142296e+01,2.191775e+01,2.242530e+01,2.294600e+01,2.348023e+01,
-2.402840e+01,2.459093e+01,2.516825e+01,2.576081e+01,2.636905e+01,2.699347e+01,2.763453e+01,
-2.829276e+01,2.896865e+01,2.966276e+01,3.037563e+01,3.110782e+01,3.185993e+01,3.263256e+01,
-3.342632e+01,3.424188e+01,3.507988e+01,3.594100e+01,3.682597e+01,3.773550e+01,3.867034e+01,
-3.963126e+01,4.061907e+01,4.163459e+01,4.267867e+01,4.375217e+01,4.485602e+01,4.599113e+01,
-4.715847e+01,4.835904e+01,4.959386e+01,5.086399e+01,5.217051e+01,5.351455e+01,5.489727e+01,
-5.631988e+01,5.778360e+01,5.928972e+01,6.083956e+01,6.243446e+01,6.407585e+01,6.576516e+01,
-6.750389e+01,6.929358e+01,7.113583e+01,7.303229e+01,7.498465e+01,7.699466e+01,7.906413e+01,
-8.119494e+01,8.338901e+01,8.564834e+01,8.797497e+01,9.037104e+01,9.283874e+01,9.538033e+01,
-9.799814e+01,1.006946e+02,1.034722e+02,1.063335e+02,1.092812e+02,1.123179e+02,1.154467e+02,
-1.186703e+02,1.219918e+02,1.254143e+02,1.289411e+02,1.325755e+02,1.363208e+02,1.401808e+02
-  };
-  static const G4double P27[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.345993e-03,1.812154e-02,
-4.026430e-02,7.035354e-02,1.115368e-01,1.703760e-01,2.538581e-01,3.782461e-01,5.589961e-01,
-8.253354e-01,1.198038e+00,1.694231e+00,2.291935e+00,2.955705e+00,3.637254e+00,4.300026e+00,
-4.929838e+00,5.521904e+00,6.078501e+00,6.604750e+00,7.106030e+00,7.587357e+00,8.053179e+00,
-8.507290e+00,8.952817e+00,9.392248e+00,9.827489e+00,1.025995e+01,1.069061e+01,1.112015e+01,
-1.154897e+01,1.197730e+01,1.240524e+01,1.283285e+01,1.326014e+01,1.368706e+01,1.411358e+01,
-1.453973e+01,1.496547e+01,1.539087e+01,1.581597e+01,1.624088e+01,1.666572e+01,1.709063e+01,
-1.751579e+01,1.794142e+01,1.836777e+01,1.879512e+01,1.922377e+01,1.965407e+01,2.008642e+01,
-2.052125e+01,2.095904e+01,2.140031e+01,2.184566e+01,2.229574e+01,2.275125e+01,2.321300e+01,
-2.368188e+01,2.415886e+01,2.464505e+01,2.514170e+01,2.565021e+01,2.616939e+01,2.669677e+01,
-2.724263e+01,2.780976e+01,2.840169e+01,2.902295e+01,2.967960e+01,3.037978e+01,3.113466e+01,
-3.195970e+01,3.287602e+01,3.391207e+01,3.510515e+01,3.650240e+01,3.816072e+01,4.014549e+01,
-4.252816e+01,4.538374e+01,4.878905e+01,5.282265e+01,5.756664e+01,6.310963e+01,6.955058e+01,
-7.700256e+01,8.559606e+01,9.548163e+01,1.068314e+02,1.198391e+02,1.347180e+02,1.516961e+02,
-1.710065e+02,1.928734e+02,2.174931e+02,2.450103e+02,2.754950e+02,3.089205e+02,3.451524e+02,
-3.839498e+02,4.249834e+02,4.678667e+02,5.121950e+02,5.575832e+02,6.036977e+02,6.502788e+02,
-6.971481e+02,7.442078e+02,7.914355e+02,8.388753e+02,8.866283e+02,9.348447e+02,9.837162e+02,
-1.033470e+03,1.084366e+03,1.136689e+03,1.190749e+03,1.246871e+03,1.305393e+03,1.366657e+03,
-1.430999e+03,1.498741e+03,1.570174e+03,1.645547e+03,1.725059e+03,1.808851e+03,1.897003e+03,
-1.989542e+03,2.086454e+03,2.187703e+03,2.293252e+03,2.403083e+03,2.517218e+03,2.635733e+03,
-2.758773e+03,2.886552e+03,3.019360e+03,3.157558e+03,3.301573e+03,3.451893e+03,3.609055e+03,
-3.773646e+03,3.946289e+03,4.127639e+03,4.318381e+03,4.519221e+03,4.730887e+03,4.954126e+03,
-5.189702e+03,5.438396e+03,5.701012e+03,5.978373e+03,6.271328e+03,6.580753e+03,6.907557e+03,
-7.252683e+03,7.617117e+03,8.001887e+03,8.408074e+03,8.836812e+03,9.289295e+03,9.766784e+03,
-1.027061e+04,1.080218e+04,1.136297e+04,1.195458e+04,1.257866e+04,1.323698e+04,1.393143e+04,
-1.466398e+04,1.543675e+04,1.625197e+04,1.711202e+04,1.801940e+04,1.897679e+04,1.998700e+04,
-2.105305e+04,2.217810e+04,2.336552e+04,2.461890e+04,2.594203e+04,2.733891e+04,2.881382e+04,
-3.037128e+04,3.201606e+04,3.375326e+04,3.558825e+04,3.752676e+04,3.957482e+04,4.173887e+04,
-4.402572e+04,4.644258e+04,4.899711e+04,5.169743e+04,5.455215e+04,5.757040e+04,6.076187e+04,
-6.413682e+04,6.770616e+04,7.148143e+04,7.547490e+04,7.969957e+04,8.416924e+04,8.889853e+04,
-9.390298e+04,9.919906e+04,1.048042e+05,1.107370e+05,1.170172e+05,1.236655e+05,1.307042e+05,
-1.381568e+05,1.460482e+05,1.544049e+05,1.632551e+05,1.726285e+05,1.825569e+05,1.930738e+05,
-2.042150e+05,2.160183e+05,2.285240e+05,2.417748e+05,2.558161e+05,2.706959e+05,2.864654e+05,
-3.031790e+05,3.208942e+05,3.396723e+05,3.595783e+05,3.806813e+05,4.030546e+05,4.267761e+05,
-4.519286e+05,4.786000e+05,5.068836e+05,5.368787e+05,5.686906e+05,6.024313e+05,6.382197e+05,
-6.761823e+05,7.164532e+05,7.591751e+05,8.044997e+05,8.525881e+05,9.036114e+05,9.577516e+05,
-1.015202e+06,1.076168e+06,1.140869e+06,1.209535e+06,1.282415e+06,1.359770e+06,1.441879e+06,
-1.529038e+06,1.621562e+06,1.719787e+06,1.824068e+06,1.934784e+06,2.052338e+06,2.177156e+06,
-2.309695e+06,2.450437e+06,2.599897e+06,2.758623e+06,2.927195e+06,3.106232e+06,3.296392e+06
-  };
-  static const G4double P08[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,5.850394e-06,3.813802e-05,7.678856e-05,1.235890e-04,
-1.811834e-04,2.505496e-04,3.370214e-04,4.423119e-04,5.737849e-04,7.362470e-04,9.394324e-04,
-1.193306e-03,1.512903e-03,1.914433e-03,2.424835e-03,3.067238e-03,3.887084e-03,4.914388e-03,
-6.198077e-03,7.742119e-03,9.530727e-03,1.145750e-02,1.342370e-02,1.532690e-02,1.710499e-02,
-1.873750e-02,2.022106e-02,2.156321e-02,2.277662e-02,2.387485e-02,2.487089e-02,2.577662e-02,
-2.660257e-02,2.735786e-02,2.805033e-02,2.868661e-02,2.927238e-02,2.981248e-02,3.031106e-02,
-3.077178e-02,3.119783e-02,3.159205e-02,3.195707e-02,3.229527e-02,3.260875e-02,3.289948e-02,
-3.316932e-02,3.341990e-02,3.365279e-02,3.386940e-02,3.407105e-02,3.425896e-02,3.443423e-02,
-3.459791e-02,3.475094e-02,3.489419e-02,3.502849e-02,3.515456e-02,3.527311e-02,3.538476e-02,
-3.549011e-02,3.558968e-02,3.568400e-02,3.577351e-02,3.585865e-02,3.593982e-02,3.601738e-02,
-3.609170e-02,3.616308e-02,3.623182e-02,3.629822e-02,3.636254e-02,3.642405e-02,3.648154e-02,
-3.653815e-02,3.659408e-02,3.664961e-02,3.670503e-02,3.676072e-02,3.681714e-02,3.687490e-02,
-3.693479e-02,3.699783e-02,3.706528e-02,3.713867e-02,3.721973e-02,3.731032e-02,3.741226e-02,
-3.752719e-02,3.765644e-02,3.780102e-02,3.796161e-02,3.813871e-02,3.833276e-02,3.854422e-02,
-3.877367e-02,3.902186e-02,3.928968e-02,3.957815e-02,3.988836e-02,4.022139e-02,4.057812e-02,
-4.095916e-02,4.136456e-02,4.179369e-02,4.224495e-02,4.271572e-02,4.320224e-02,4.369977e-02,
-4.420281e-02,4.470553e-02,4.520218e-02,4.568761e-02,4.615755e-02,4.660887e-02,4.703959e-02,
-4.744879e-02,4.783646e-02,4.820329e-02,4.855044e-02,4.887942e-02,4.919191e-02,4.948968e-02,
-4.977449e-02,5.004805e-02,5.031198e-02,5.056777e-02,5.081677e-02,5.106018e-02,5.129904e-02,
-5.153419e-02,5.176632e-02,5.199590e-02,5.222324e-02,5.244845e-02,5.267151e-02,5.289225e-02,
-5.311040e-02,5.332567e-02,5.353771e-02,5.374625e-02,5.395103e-02,5.415190e-02,5.434879e-02,
-5.454172e-02,5.473078e-02,5.491615e-02,5.509804e-02,5.527672e-02,5.545245e-02,5.562552e-02,
-5.579619e-02,5.596472e-02,5.613134e-02,5.629624e-02,5.645961e-02,5.662158e-02,5.678228e-02,
-5.694179e-02,5.710018e-02,5.725750e-02,5.741379e-02,5.756906e-02,5.772332e-02,5.787658e-02,
-5.802884e-02,5.818008e-02,5.833029e-02,5.847948e-02,5.862764e-02,5.877475e-02,5.892081e-02,
-5.906581e-02,5.920977e-02,5.935267e-02,5.949453e-02,5.963535e-02,5.977514e-02,5.991390e-02,
-6.005165e-02,6.018840e-02,6.032417e-02,6.045897e-02,6.059282e-02,6.072574e-02,6.085774e-02,
-6.098884e-02,6.111906e-02,6.124841e-02,6.137693e-02,6.150463e-02,6.163152e-02,6.175763e-02,
-6.188297e-02,6.200757e-02,6.213144e-02,6.225460e-02,6.237706e-02,6.249886e-02,6.261999e-02,
-6.274049e-02,6.286037e-02,6.297964e-02,6.309831e-02,6.321642e-02,6.333396e-02,6.345096e-02,
-6.356743e-02,6.368338e-02,6.379883e-02,6.391380e-02,6.402828e-02,6.414231e-02,6.425588e-02,
-6.436902e-02,6.448173e-02,6.459402e-02,6.470592e-02,6.481742e-02,6.492854e-02,6.503929e-02,
-6.514969e-02,6.525973e-02,6.536943e-02,6.547880e-02,6.558786e-02,6.569660e-02,6.580504e-02,
-6.591318e-02,6.602104e-02,6.612863e-02,6.623595e-02,6.634300e-02,6.644981e-02,6.655637e-02,
-6.666270e-02,6.676880e-02,6.687467e-02,6.698034e-02,6.708579e-02,6.719105e-02,6.729611e-02,
-6.740099e-02,6.750569e-02,6.761022e-02,6.771458e-02,6.781878e-02,6.792283e-02,6.802673e-02,
-6.813049e-02,6.823412e-02,6.833761e-02,6.844098e-02,6.854423e-02,6.864738e-02,6.875041e-02,
-6.885334e-02,6.895618e-02,6.905893e-02,6.916159e-02,6.926418e-02,6.936669e-02,6.946912e-02,
-6.957150e-02,6.967381e-02,6.977607e-02,6.987829e-02,6.998045e-02,7.008258e-02,7.018467e-02,
-7.028673e-02,7.038876e-02,7.049077e-02,7.059277e-02,7.069475e-02,7.079672e-02,7.089869e-02
-};
-  static const G4double P18[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,6.824362e-05,4.522706e-04,9.266015e-04,1.519331e-03,
-2.271897e-03,3.207104e-03,4.409961e-03,5.920914e-03,7.867568e-03,1.034890e-02,1.355071e-02,
-1.767709e-02,2.303624e-02,2.998068e-02,3.908692e-02,5.090796e-02,6.646885e-02,8.657934e-02,
-1.124957e-01,1.446424e-01,1.830426e-01,2.256984e-01,2.705794e-01,3.153773e-01,3.585357e-01,
-3.993962e-01,4.376870e-01,4.734083e-01,5.067098e-01,5.377891e-01,5.668544e-01,5.941073e-01,
-6.197329e-01,6.438952e-01,6.667360e-01,6.883758e-01,7.089162e-01,7.284426e-01,7.470277e-01,
-7.647338e-01,7.816149e-01,7.977194e-01,8.130925e-01,8.277769e-01,8.418093e-01,8.552264e-01,
-8.680643e-01,8.803545e-01,8.921305e-01,9.034214e-01,9.142574e-01,9.246668e-01,9.346759e-01,
-9.443113e-01,9.535980e-01,9.625599e-01,9.712203e-01,9.796014e-01,9.877249e-01,9.956119e-01,
-1.003283e+00,1.010757e+00,1.018054e+00,1.025193e+00,1.032192e+00,1.039071e+00,1.045846e+00,
-1.052537e+00,1.059162e+00,1.065739e+00,1.072287e+00,1.078824e+00,1.085267e+00,1.091476e+00,
-1.097776e+00,1.104194e+00,1.110761e+00,1.117517e+00,1.124514e+00,1.131820e+00,1.139531e+00,
-1.147772e+00,1.156712e+00,1.166573e+00,1.177631e+00,1.190221e+00,1.204723e+00,1.221543e+00,
-1.241088e+00,1.263744e+00,1.289862e+00,1.319764e+00,1.353751e+00,1.392131e+00,1.435238e+00,
-1.483446e+00,1.537190e+00,1.596963e+00,1.663320e+00,1.736867e+00,1.818241e+00,1.908081e+00,
-2.006982e+00,2.115434e+00,2.233748e+00,2.361978e+00,2.499847e+00,2.646693e+00,2.801459e+00,
-2.962731e+00,3.128831e+00,3.297953e+00,3.468314e+00,3.638292e+00,3.806530e+00,3.972005e+00,
-4.134030e+00,4.292233e+00,4.446513e+00,4.596991e+00,4.743962e+00,4.887846e+00,5.029151e+00,
-5.168447e+00,5.306340e+00,5.443454e+00,5.580411e+00,5.717819e+00,5.856258e+00,5.996267e+00,
-6.138329e+00,6.282856e+00,6.430177e+00,6.580525e+00,6.734031e+00,6.890722e+00,7.050529e+00,
-7.213302e+00,7.378833e+00,7.546883e+00,7.717208e+00,7.889591e+00,8.063859e+00,8.239901e+00,
-8.417680e+00,8.597232e+00,8.778664e+00,8.962146e+00,9.147902e+00,9.336191e+00,9.527301e+00,
-9.721535e+00,9.919203e+00,1.012061e+01,1.032605e+01,1.053580e+01,1.075013e+01,1.096928e+01,
-1.119347e+01,1.142290e+01,1.165776e+01,1.189822e+01,1.214442e+01,1.239652e+01,1.265463e+01,
-1.291891e+01,1.318945e+01,1.346640e+01,1.374986e+01,1.403997e+01,1.433686e+01,1.464064e+01,
-1.495148e+01,1.526949e+01,1.559485e+01,1.592771e+01,1.626825e+01,1.661662e+01,1.697304e+01,
-1.733768e+01,1.771076e+01,1.809249e+01,1.848310e+01,1.888282e+01,1.929190e+01,1.971059e+01,
-2.013915e+01,2.057787e+01,2.102702e+01,2.148690e+01,2.195783e+01,2.244012e+01,2.293409e+01,
-2.344009e+01,2.395847e+01,2.448959e+01,2.503383e+01,2.559158e+01,2.616323e+01,2.674919e+01,
-2.734990e+01,2.796580e+01,2.859733e+01,2.924496e+01,2.990918e+01,3.059048e+01,3.128937e+01,
-3.200638e+01,3.274207e+01,3.349698e+01,3.427170e+01,3.506682e+01,3.588297e+01,3.672077e+01,
-3.758087e+01,3.846397e+01,3.937074e+01,4.030190e+01,4.125820e+01,4.224040e+01,4.324928e+01,
-4.428566e+01,4.535037e+01,4.644426e+01,4.756824e+01,4.872322e+01,4.991015e+01,5.112999e+01,
-5.238376e+01,5.367249e+01,5.499726e+01,5.635916e+01,5.775935e+01,5.919898e+01,6.067929e+01,
-6.220151e+01,6.376694e+01,6.537690e+01,6.703278e+01,6.873600e+01,7.048801e+01,7.229032e+01,
-7.414450e+01,7.605215e+01,7.801493e+01,8.003455e+01,8.211279e+01,8.425146e+01,8.645245e+01,
-8.871771e+01,9.104924e+01,9.344911e+01,9.591946e+01,9.846249e+01,1.010805e+02,1.037758e+02,
-1.065509e+02,1.094082e+02,1.123504e+02,1.153801e+02,1.185000e+02,1.217131e+02,1.250223e+02,
-1.284306e+02,1.319411e+02,1.355571e+02,1.392819e+02,1.431190e+02,1.470720e+02,1.511445e+02,
-1.553403e+02,1.596635e+02,1.641179e+02,1.687079e+02,1.734378e+02,1.783119e+02,1.833351e+02
-  };
-  static const G4double P28[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,7.960502e-04,5.364017e-03,1.118562e-02,1.869316e-02,
-2.852749e-02,4.113714e-02,5.787072e-02,7.955515e-02,1.083806e-01,1.462818e-01,1.967401e-01,
-2.638146e-01,3.536865e-01,4.737998e-01,6.362798e-01,8.538194e-01,1.149192e+00,1.542907e+00,
-2.066174e+00,2.735516e+00,3.560003e+00,4.504415e+00,5.528958e+00,6.583511e+00,7.631145e+00,
-8.653933e+00,9.642298e+00,1.059309e+01,1.150711e+01,1.238671e+01,1.323493e+01,1.405501e+01,
-1.485012e+01,1.562315e+01,1.637661e+01,1.711263e+01,1.783294e+01,1.853896e+01,1.923178e+01,
-1.991230e+01,2.058123e+01,2.123916e+01,2.188666e+01,2.252430e+01,2.315250e+01,2.377173e+01,
-2.438256e+01,2.498540e+01,2.558088e+01,2.616948e+01,2.675181e+01,2.732849e+01,2.790012e+01,
-2.846739e+01,2.903101e+01,2.959170e+01,3.015023e+01,3.070742e+01,3.126414e+01,3.182130e+01,
-3.237989e+01,3.294094e+01,3.350557e+01,3.407498e+01,3.465046e+01,3.523340e+01,3.582530e+01,
-3.642781e+01,3.704271e+01,3.767193e+01,3.831763e+01,3.898218e+01,3.965715e+01,4.032768e+01,
-4.102906e+01,4.176548e+01,4.254216e+01,4.336573e+01,4.424489e+01,4.519125e+01,4.622060e+01,
-4.735458e+01,4.862267e+01,5.006425e+01,5.173064e+01,5.368618e+01,5.600789e+01,5.878339e+01,
-6.210756e+01,6.607900e+01,7.079781e+01,7.636571e+01,8.288853e+01,9.048030e+01,9.926829e+01,
-1.093979e+02,1.210367e+02,1.343782e+02,1.496435e+02,1.670814e+02,1.869668e+02,2.095939e+02,
-2.352665e+02,2.642811e+02,2.969039e+02,3.333440e+02,3.737232e+02,4.180489e+02,4.661957e+02,
-5.179023e+02,5.727873e+02,6.303818e+02,6.901743e+02,7.516590e+02,8.143781e+02,8.779563e+02,
-9.421156e+02,1.006680e+03,1.071573e+03,1.136805e+03,1.202469e+03,1.268723e+03,1.335784e+03,
-1.403917e+03,1.473430e+03,1.544668e+03,1.618005e+03,1.693837e+03,1.772579e+03,1.854654e+03,
-1.940482e+03,2.030475e+03,2.125017e+03,2.224456e+03,2.329092e+03,2.439170e+03,2.554874e+03,
-2.676334e+03,2.803633e+03,2.936826e+03,3.075954e+03,3.221074e+03,3.372272e+03,3.529685e+03,
-3.693517e+03,3.864050e+03,4.041643e+03,4.226743e+03,4.419872e+03,4.621628e+03,4.832678e+03,
-5.053744e+03,5.285606e+03,5.529085e+03,5.785043e+03,6.054376e+03,6.338009e+03,6.636897e+03,
-6.952019e+03,7.284382e+03,7.635021e+03,8.005001e+03,8.395420e+03,8.807417e+03,9.242171e+03,
-9.700911e+03,1.018492e+04,1.069554e+04,1.123417e+04,1.180231e+04,1.240150e+04,1.303339e+04,
-1.369971e+04,1.440231e+04,1.514313e+04,1.592423e+04,1.674777e+04,1.761608e+04,1.853161e+04,
-1.949694e+04,2.051483e+04,2.158819e+04,2.272013e+04,2.391392e+04,2.517305e+04,2.650119e+04,
-2.790227e+04,2.938043e+04,3.094006e+04,3.258584e+04,3.432269e+04,3.615588e+04,3.809095e+04,
-4.013379e+04,4.229066e+04,4.456817e+04,4.697334e+04,4.951363e+04,5.219692e+04,5.503158e+04,
-5.802649e+04,6.119106e+04,6.453527e+04,6.806970e+04,7.180556e+04,7.575476e+04,7.992991e+04,
-8.434440e+04,8.901242e+04,9.394902e+04,9.917018e+04,1.046928e+05,1.105349e+05,1.167156e+05,
-1.232549e+05,1.301745e+05,1.374970e+05,1.452466e+05,1.534490e+05,1.621312e+05,1.713222e+05,
-1.810526e+05,1.913548e+05,2.022635e+05,2.138150e+05,2.260484e+05,2.390048e+05,2.527280e+05,
-2.672645e+05,2.826635e+05,2.989775e+05,3.162621e+05,3.345761e+05,3.539825e+05,3.745475e+05,
-3.963420e+05,4.194409e+05,4.439240e+05,4.698758e+05,4.973862e+05,5.265506e+05,5.574705e+05,
-5.902534e+05,6.250137e+05,6.618730e+05,7.009603e+05,7.424127e+05,7.863758e+05,8.330043e+05,
-8.824628e+05,9.349258e+05,9.905789e+05,1.049619e+06,1.112257e+06,1.178714e+06,1.249227e+06,
-1.324048e+06,1.403444e+06,1.487699e+06,1.577115e+06,1.672012e+06,1.772733e+06,1.879639e+06,
-1.993117e+06,2.113574e+06,2.241448e+06,2.377201e+06,2.521325e+06,2.674344e+06,2.836814e+06,
-3.009326e+06,3.192510e+06,3.387034e+06,3.593610e+06,3.812994e+06,4.045989e+06,4.293452e+06
-  };
-  static const G4double P09[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,7.515803e-06,1.731827e-05,
-2.874685e-05,4.278170e-05,6.015953e-05,8.098262e-05,1.059240e-04,1.374744e-04,1.760954e-04,
-2.225746e-04,2.816669e-04,3.547278e-04,4.438203e-04,5.576081e-04,6.979665e-04,8.731555e-04,
-1.095439e-03,1.369207e-03,1.718647e-03,2.151439e-03,2.698367e-03,3.379582e-03,4.229614e-03,
-5.283815e-03,6.581892e-03,8.166275e-03,1.007243e-02,1.232577e-02,1.488678e-02,1.770487e-02,
-2.061095e-02,2.348657e-02,2.621326e-02,2.873192e-02,3.102728e-02,3.310043e-02,3.496870e-02,
-3.665237e-02,3.817043e-02,3.954315e-02,4.078897e-02,4.192379e-02,4.296125e-02,4.391292e-02,
-4.478859e-02,4.559645e-02,4.634342e-02,4.703529e-02,4.767699e-02,4.827277e-02,4.882633e-02,
-4.934096e-02,4.981961e-02,5.026497e-02,5.067957e-02,5.106575e-02,5.142564e-02,5.176126e-02,
-5.207454e-02,5.236721e-02,5.264095e-02,5.289729e-02,5.313769e-02,5.336347e-02,5.357588e-02,
-5.377608e-02,5.396514e-02,5.414407e-02,5.431378e-02,5.447513e-02,5.462891e-02,5.477585e-02,
-5.491664e-02,5.505189e-02,5.518220e-02,5.530808e-02,5.543004e-02,5.554853e-02,5.566397e-02,
-5.577674e-02,5.588719e-02,5.599565e-02,5.610241e-02,5.620776e-02,5.631089e-02,5.641045e-02,
-5.650990e-02,5.660948e-02,5.670951e-02,5.681040e-02,5.691268e-02,5.701709e-02,5.712461e-02,
-5.723655e-02,5.735463e-02,5.748102e-02,5.761830e-02,5.776937e-02,5.793723e-02,5.812477e-02,
-5.833443e-02,5.856813e-02,5.882715e-02,5.911232e-02,5.942417e-02,5.976317e-02,6.012990e-02,
-6.052514e-02,6.094997e-02,6.140573e-02,6.189398e-02,6.241639e-02,6.297464e-02,6.357021e-02,
-6.420419e-02,6.487694e-02,6.558787e-02,6.633509e-02,6.711523e-02,6.792326e-02,6.875260e-02,
-6.959533e-02,7.044270e-02,7.128573e-02,7.211586e-02,7.292555e-02,7.370873e-02,7.446102e-02,
-7.517973e-02,7.586367e-02,7.651297e-02,7.712872e-02,7.771273e-02,7.826729e-02,7.879494e-02,
-7.929835e-02,7.978018e-02,8.024301e-02,8.068929e-02,8.112124e-02,8.154090e-02,8.195006e-02,
-8.235029e-02,8.274289e-02,8.312891e-02,8.350916e-02,8.388422e-02,8.425443e-02,8.461996e-02,
-8.498082e-02,8.533691e-02,8.568805e-02,8.603405e-02,8.637472e-02,8.670993e-02,8.703958e-02,
-8.736369e-02,8.768234e-02,8.799567e-02,8.830390e-02,8.860731e-02,8.890618e-02,8.920084e-02,
-8.949159e-02,8.977874e-02,9.006257e-02,9.034333e-02,9.062125e-02,9.089651e-02,9.116928e-02,
-9.143968e-02,9.170781e-02,9.197375e-02,9.223754e-02,9.249923e-02,9.275884e-02,9.301639e-02,
-9.327188e-02,9.352532e-02,9.377671e-02,9.402605e-02,9.427335e-02,9.451861e-02,9.476185e-02,
-9.500306e-02,9.524227e-02,9.547949e-02,9.571474e-02,9.594804e-02,9.617943e-02,9.640892e-02,
-9.663655e-02,9.686235e-02,9.708636e-02,9.730860e-02,9.752912e-02,9.774795e-02,9.796512e-02,
-9.818069e-02,9.839467e-02,9.860712e-02,9.881806e-02,9.902755e-02,9.923560e-02,9.944226e-02,
-9.964757e-02,9.985156e-02,1.000543e-01,1.002557e-01,1.004560e-01,1.006550e-01,1.008529e-01,
-1.010497e-01,1.012454e-01,1.014400e-01,1.016336e-01,1.018262e-01,1.020178e-01,1.022085e-01,
-1.023982e-01,1.025870e-01,1.027750e-01,1.029621e-01,1.031484e-01,1.033339e-01,1.035186e-01,
-1.037025e-01,1.038858e-01,1.040682e-01,1.042500e-01,1.044311e-01,1.046116e-01,1.047914e-01,
-1.049706e-01,1.051492e-01,1.053272e-01,1.055046e-01,1.056815e-01,1.058578e-01,1.060337e-01,
-1.062090e-01,1.063838e-01,1.065581e-01,1.067320e-01,1.069054e-01,1.070784e-01,1.072510e-01,
-1.074231e-01,1.075949e-01,1.077663e-01,1.079373e-01,1.081079e-01,1.082783e-01,1.084482e-01,
-1.086179e-01,1.087872e-01,1.089563e-01,1.091250e-01,1.092935e-01,1.094617e-01,1.096296e-01,
-1.097973e-01,1.099648e-01,1.101320e-01,1.102990e-01,1.104659e-01,1.106325e-01,1.107989e-01,
-1.109651e-01,1.111312e-01,1.112971e-01,1.114629e-01,1.116285e-01,1.117940e-01,1.119593e-01,
-1.121246e-01,1.122897e-01,1.124547e-01,1.126197e-01,1.127845e-01,1.129493e-01,1.131140e-01,
-1.132786e-01,1.134432e-01,1.136078e-01,1.137723e-01,1.139367e-01,1.141012e-01,1.142656e-01
-  };
-  static const G4double P19[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,5.927935e-05,1.389914e-04,
-2.349414e-04,3.566209e-04,5.121431e-04,7.045053e-04,9.423805e-04,1.252973e-03,1.645359e-03,
-2.132778e-03,2.772367e-03,3.588379e-03,4.615362e-03,5.968874e-03,7.691507e-03,9.910494e-03,
-1.281519e-02,1.650640e-02,2.136751e-02,2.757845e-02,3.567673e-02,4.608131e-02,5.947584e-02,
-7.661025e-02,9.837506e-02,1.257751e-01,1.597774e-01,2.012338e-01,2.498273e-01,3.049689e-01,
-3.636123e-01,4.234494e-01,4.819630e-01,5.377010e-01,5.900857e-01,6.388778e-01,6.842212e-01,
-7.263609e-01,7.655421e-01,8.020772e-01,8.362684e-01,8.683839e-01,8.986585e-01,9.272944e-01,
-9.544631e-01,9.803078e-01,1.004947e+00,1.028478e+00,1.050980e+00,1.072520e+00,1.093154e+00,
-1.112933e+00,1.131898e+00,1.150092e+00,1.167553e+00,1.184321e+00,1.200431e+00,1.215920e+00,
-1.230825e+00,1.245180e+00,1.259022e+00,1.272384e+00,1.285302e+00,1.297810e+00,1.309940e+00,
-1.321726e+00,1.333200e+00,1.344393e+00,1.355338e+00,1.366064e+00,1.376603e+00,1.386983e+00,
-1.397235e+00,1.407387e+00,1.417470e+00,1.427510e+00,1.437537e+00,1.447579e+00,1.457663e+00,
-1.467817e+00,1.478068e+00,1.488444e+00,1.498973e+00,1.509682e+00,1.520485e+00,1.531238e+00,
-1.542307e+00,1.553733e+00,1.565564e+00,1.577862e+00,1.590714e+00,1.604236e+00,1.618589e+00,
-1.633991e+00,1.650739e+00,1.669215e+00,1.689901e+00,1.713363e+00,1.740235e+00,1.771177e+00,
-1.806833e+00,1.847794e+00,1.894587e+00,1.947683e+00,2.007527e+00,2.074576e+00,2.149333e+00,
-2.232374e+00,2.324368e+00,2.426086e+00,2.538395e+00,2.662248e+00,2.798655e+00,2.948644e+00,
-3.113195e+00,3.293165e+00,3.489174e+00,3.701503e+00,3.929974e+00,4.173863e+00,4.431848e+00,
-4.702026e+00,4.982009e+00,5.269084e+00,5.560423e+00,5.853292e+00,6.145244e+00,6.434268e+00,
-6.718845e+00,6.997954e+00,7.271040e+00,7.537949e+00,7.798855e+00,8.054192e+00,8.304585e+00,
-8.550792e+00,8.793666e+00,9.034113e+00,9.273058e+00,9.511420e+00,9.750093e+00,9.989927e+00,
-1.023171e+01,1.047615e+01,1.072385e+01,1.097533e+01,1.123096e+01,1.149102e+01,1.175565e+01,
-1.202490e+01,1.229872e+01,1.257701e+01,1.285961e+01,1.314639e+01,1.343720e+01,1.373195e+01,
-1.403061e+01,1.433323e+01,1.463991e+01,1.495084e+01,1.526627e+01,1.558650e+01,1.591187e+01,
-1.624276e+01,1.657956e+01,1.692265e+01,1.727242e+01,1.762926e+01,1.799350e+01,1.836549e+01,
-1.874553e+01,1.913392e+01,1.953093e+01,1.993678e+01,2.035173e+01,2.077597e+01,2.120973e+01,
-2.165319e+01,2.210656e+01,2.257002e+01,2.304378e+01,2.352804e+01,2.402301e+01,2.452891e+01,
-2.504595e+01,2.557440e+01,2.611448e+01,2.666648e+01,2.723067e+01,2.780733e+01,2.839679e+01,
-2.899935e+01,2.961537e+01,3.024518e+01,3.088917e+01,3.154771e+01,3.222121e+01,3.291007e+01,
-3.361474e+01,3.433567e+01,3.507331e+01,3.582815e+01,3.660069e+01,3.739145e+01,3.820096e+01,
-3.902978e+01,3.987847e+01,4.074762e+01,4.163784e+01,4.254976e+01,4.348402e+01,4.444130e+01,
-4.542228e+01,4.642768e+01,4.745822e+01,4.851467e+01,4.959779e+01,5.070840e+01,5.184732e+01,
-5.301540e+01,5.421353e+01,5.544261e+01,5.670357e+01,5.799738e+01,5.932503e+01,6.068754e+01,
-6.208597e+01,6.352141e+01,6.499498e+01,6.650784e+01,6.806117e+01,6.965620e+01,7.129421e+01,
-7.297649e+01,7.470440e+01,7.647932e+01,7.830269e+01,8.017598e+01,8.210072e+01,8.407848e+01,
-8.611087e+01,8.819958e+01,9.034631e+01,9.255287e+01,9.482106e+01,9.715280e+01,9.955002e+01,
-1.020148e+02,1.045491e+02,1.071551e+02,1.098351e+02,1.125913e+02,1.154261e+02,1.183418e+02,
-1.213411e+02,1.244265e+02,1.276007e+02,1.308664e+02,1.342265e+02,1.376838e+02,1.412415e+02,
-1.449027e+02,1.486706e+02,1.525485e+02,1.565399e+02,1.606483e+02,1.648774e+02,1.692309e+02,
-1.737129e+02,1.783272e+02,1.830781e+02,1.879699e+02,1.930070e+02,1.981940e+02,2.035356e+02,
-2.090368e+02,2.147025e+02,2.205380e+02,2.265486e+02,2.327400e+02,2.391178e+02,2.456880e+02,
-2.524567e+02,2.594302e+02,2.666150e+02,2.740179e+02,2.816459e+02,2.895062e+02,2.976061e+02
-  };
-  static const G4double P29[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,4.675863e-04,1.115848e-03,
-1.921474e-03,2.976502e-03,4.368459e-03,6.145635e-03,8.414529e-03,1.147236e-02,1.545930e-02,
-2.057119e-02,2.749440e-02,3.660912e-02,4.844832e-02,6.454972e-02,8.569351e-02,1.138020e-01,
-1.517623e-01,2.015348e-01,2.691639e-01,3.583034e-01,4.782232e-01,6.371509e-01,8.482346e-01,
-1.126750e+00,1.491709e+00,1.965598e+00,2.572184e+00,3.334953e+00,4.257053e+00,5.336097e+00,
-6.519588e+00,7.764801e+00,9.020575e+00,1.025416e+01,1.144977e+01,1.259820e+01,1.369879e+01,
-1.475356e+01,1.576491e+01,1.673737e+01,1.767581e+01,1.858475e+01,1.946828e+01,2.033001e+01,
-2.117302e+01,2.199989e+01,2.281269e+01,2.361303e+01,2.440215e+01,2.518099e+01,2.595023e+01,
-2.671041e+01,2.746196e+01,2.820524e+01,2.894070e+01,2.966884e+01,3.039005e+01,3.110491e+01,
-3.181409e+01,3.251822e+01,3.321818e+01,3.391476e+01,3.460900e+01,3.530194e+01,3.599472e+01,
-3.668862e+01,3.738499e+01,3.808532e+01,3.879119e+01,3.950432e+01,4.022655e+01,4.095989e+01,
-4.170647e+01,4.246862e+01,4.324879e+01,4.404966e+01,4.487409e+01,4.572515e+01,4.660610e+01,
-4.752048e+01,4.847204e+01,4.946482e+01,5.050316e+01,5.159177e+01,5.272361e+01,5.388496e+01,
-5.511729e+01,5.642837e+01,5.782761e+01,5.932695e+01,6.094192e+01,6.269331e+01,6.460937e+01,
-6.672884e+01,6.910427e+01,7.180553e+01,7.492262e+01,7.856680e+01,8.286884e+01,8.797459e+01,
-9.403866e+01,1.012187e+02,1.096725e+02,1.195593e+02,1.310443e+02,1.443066e+02,1.595468e+02,
-1.769950e+02,1.969173e+02,2.196207e+02,2.454567e+02,2.748218e+02,3.081551e+02,3.459309e+02,
-3.886448e+02,4.367924e+02,4.908381e+02,5.511773e+02,6.180927e+02,6.917113e+02,7.719694e+02,
-8.585945e+02,9.511118e+02,1.048877e+03,1.151132e+03,1.257071e+03,1.365912e+03,1.476962e+03,
-1.589651e+03,1.703560e+03,1.818425e+03,1.934131e+03,2.050699e+03,2.168274e+03,2.287105e+03,
-2.407530e+03,2.529963e+03,2.654887e+03,2.782834e+03,2.914378e+03,3.050129e+03,3.190720e+03,
-3.336794e+03,3.488995e+03,3.647955e+03,3.814276e+03,3.988525e+03,4.171219e+03,4.362818e+03,
-4.563730e+03,4.774309e+03,4.994874e+03,5.225720e+03,5.467141e+03,5.719453e+03,5.983016e+03,
-6.258253e+03,6.545669e+03,6.845863e+03,7.159534e+03,7.487485e+03,7.830622e+03,8.189944e+03,
-8.566547e+03,8.961603e+03,9.376365e+03,9.812149e+03,1.027033e+04,1.075235e+04,1.125969e+04,
-1.179388e+04,1.235652e+04,1.294923e+04,1.357370e+04,1.423170e+04,1.492505e+04,1.565562e+04,
-1.642541e+04,1.723648e+04,1.809099e+04,1.899122e+04,1.993956e+04,2.093854e+04,2.199082e+04,
-2.309921e+04,2.426670e+04,2.549643e+04,2.679175e+04,2.815618e+04,2.959348e+04,3.110761e+04,
-3.270279e+04,3.438349e+04,3.615442e+04,3.802062e+04,3.998739e+04,4.206039e+04,4.424559e+04,
-4.654932e+04,4.897832e+04,5.153970e+04,5.424101e+04,5.709028e+04,6.009598e+04,6.326712e+04,
-6.661323e+04,7.014443e+04,7.387144e+04,7.780561e+04,8.195901e+04,8.634439e+04,9.097530e+04,
-9.586609e+04,1.010320e+05,1.064891e+05,1.122546e+05,1.183466e+05,1.247843e+05,1.315882e+05,
-1.387798e+05,1.463820e+05,1.544194e+05,1.629175e+05,1.719038e+05,1.814074e+05,1.914589e+05,
-2.020912e+05,2.133387e+05,2.252383e+05,2.378290e+05,2.511522e+05,2.652516e+05,2.801740e+05,
-2.959687e+05,3.126882e+05,3.303881e+05,3.491275e+05,3.689692e+05,3.899795e+05,4.122292e+05,
-4.357933e+05,4.607512e+05,4.871874e+05,5.151917e+05,5.448592e+05,5.762909e+05,6.095943e+05,
-6.448833e+05,6.822787e+05,7.219092e+05,7.639111e+05,8.084294e+05,8.556178e+05,9.056399e+05,
-9.586691e+05,1.014890e+06,1.074498e+06,1.137701e+06,1.204721e+06,1.275792e+06,1.351163e+06,
-1.431099e+06,1.515882e+06,1.605811e+06,1.701204e+06,1.802397e+06,1.909751e+06,2.023645e+06,
-2.144486e+06,2.272704e+06,2.408756e+06,2.553128e+06,2.706338e+06,2.868935e+06,3.041503e+06,
-3.224662e+06,3.419071e+06,3.625434e+06,3.844494e+06,4.077045e+06,4.323928e+06,4.586041e+06,
-4.864335e+06,5.159824e+06,5.473583e+06,5.806757e+06,6.160565e+06,6.536300e+06,6.935340e+06
-  };
-  static const G4double P010[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-1.420000e-05,4.701887e-05,8.694089e-05,1.341836e-04,1.940077e-04,2.718261e-04,3.681895e-04,
-4.837658e-04,6.323004e-04,8.240919e-04,1.060464e-03,1.350967e-03,1.731360e-03,2.208133e-03,
-2.792245e-03,3.550245e-03,4.501045e-03,5.670796e-03,7.167402e-03,9.014729e-03,1.129037e-02,
-1.410796e-02,1.749772e-02,2.157807e-02,2.639241e-02,3.199085e-02,3.841369e-02,4.559250e-02,
-5.345748e-02,6.167108e-02,6.986856e-02,7.767193e-02,8.480019e-02,9.117305e-02,9.677277e-02,
-1.016834e-01,1.059752e-01,1.097284e-01,1.130297e-01,1.159373e-01,1.185096e-01,1.207998e-01,
-1.228498e-01,1.246924e-01,1.263587e-01,1.278743e-01,1.292600e-01,1.305329e-01,1.317074e-01,
-1.327952e-01,1.338059e-01,1.347478e-01,1.356275e-01,1.364508e-01,1.372227e-01,1.379475e-01,
-1.386291e-01,1.392709e-01,1.398763e-01,1.404481e-01,1.409894e-01,1.415026e-01,1.419903e-01,
-1.424548e-01,1.428983e-01,1.433229e-01,1.437305e-01,1.441228e-01,1.445015e-01,1.448681e-01,
-1.452240e-01,1.455704e-01,1.459086e-01,1.462395e-01,1.465641e-01,1.468832e-01,1.471976e-01,
-1.475078e-01,1.478144e-01,1.481178e-01,1.484184e-01,1.487165e-01,1.490123e-01,1.493060e-01,
-1.495976e-01,1.498872e-01,1.501749e-01,1.504606e-01,1.507445e-01,1.510251e-01,1.513010e-01,
-1.515759e-01,1.518503e-01,1.521247e-01,1.524003e-01,1.526783e-01,1.529609e-01,1.532511e-01,
-1.535529e-01,1.538711e-01,1.542117e-01,1.545816e-01,1.549877e-01,1.554367e-01,1.559341e-01,
-1.564842e-01,1.570896e-01,1.577520e-01,1.584720e-01,1.592503e-01,1.600875e-01,1.609849e-01,
-1.619445e-01,1.629686e-01,1.640604e-01,1.652234e-01,1.664613e-01,1.677779e-01,1.691764e-01,
-1.706592e-01,1.722273e-01,1.738801e-01,1.756140e-01,1.774230e-01,1.792977e-01,1.812255e-01,
-1.831911e-01,1.851767e-01,1.871639e-01,1.891341e-01,1.910700e-01,1.929567e-01,1.947824e-01,
-1.965384e-01,1.982195e-01,1.998234e-01,2.013502e-01,2.028018e-01,2.041820e-01,2.054950e-01,
-2.067461e-01,2.079405e-01,2.090837e-01,2.101810e-01,2.112372e-01,2.122572e-01,2.132451e-01,
-2.142048e-01,2.151398e-01,2.160530e-01,2.169469e-01,2.178237e-01,2.186851e-01,2.195325e-01,
-2.203669e-01,2.211890e-01,2.219995e-01,2.227987e-01,2.235869e-01,2.243642e-01,2.251309e-01,
-2.258871e-01,2.266330e-01,2.273689e-01,2.280950e-01,2.288117e-01,2.295194e-01,2.302182e-01,
-2.309088e-01,2.315914e-01,2.322663e-01,2.329339e-01,2.335944e-01,2.342481e-01,2.348952e-01,
-2.355358e-01,2.361701e-01,2.367983e-01,2.374202e-01,2.380361e-01,2.386460e-01,2.392499e-01,
-2.398478e-01,2.404398e-01,2.410260e-01,2.416063e-01,2.421808e-01,2.427496e-01,2.433128e-01,
-2.438703e-01,2.444223e-01,2.449688e-01,2.455100e-01,2.460459e-01,2.465767e-01,2.471023e-01,
-2.476231e-01,2.481389e-01,2.486500e-01,2.491565e-01,2.496584e-01,2.501560e-01,2.506492e-01,
-2.511383e-01,2.516232e-01,2.521042e-01,2.525813e-01,2.530547e-01,2.535244e-01,2.539906e-01,
-2.544533e-01,2.549127e-01,2.553688e-01,2.558217e-01,2.562715e-01,2.567184e-01,2.571623e-01,
-2.576034e-01,2.580418e-01,2.584775e-01,2.589107e-01,2.593413e-01,2.597694e-01,2.601952e-01,
-2.606187e-01,2.610399e-01,2.614590e-01,2.618760e-01,2.622909e-01,2.627038e-01,2.631147e-01,
-2.635238e-01,2.639311e-01,2.643365e-01,2.647403e-01,2.651423e-01,2.655427e-01,2.659416e-01,
-2.663389e-01,2.667347e-01,2.671291e-01,2.675220e-01,2.679136e-01,2.683038e-01,2.686928e-01,
-2.690805e-01,2.694670e-01,2.698523e-01,2.702364e-01,2.706195e-01,2.710015e-01,2.713824e-01,
-2.717623e-01,2.721413e-01,2.725193e-01,2.728963e-01,2.732725e-01,2.736479e-01,2.740223e-01,
-2.743960e-01,2.747690e-01,2.751411e-01,2.755126e-01,2.758833e-01,2.762534e-01,2.766228e-01,
-2.769916e-01,2.773598e-01,2.777275e-01,2.780946e-01,2.784611e-01,2.788272e-01,2.791927e-01,
-2.795578e-01,2.799225e-01,2.802868e-01,2.806506e-01,2.810141e-01,2.813772e-01,2.817400e-01,
-2.821025e-01,2.824646e-01,2.828265e-01,2.831881e-01,2.835495e-01,2.839107e-01,2.842716e-01,
-2.846324e-01,2.849930e-01,2.853535e-01,2.857138e-01,2.860740e-01,2.864341e-01,2.867942e-01
-  };
-  static const G4double P110[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-9.591763e-05,3.231969e-04,6.087125e-04,9.576234e-04,1.414059e-03,2.027041e-03,2.810721e-03,
-3.781121e-03,5.069066e-03,6.785649e-03,8.969373e-03,1.174027e-02,1.548527e-02,2.032949e-02,
-2.645527e-02,3.465992e-02,4.527966e-02,5.876373e-02,7.656597e-02,9.923844e-02,1.280600e-01,
-1.648770e-01,2.105763e-01,2.673302e-01,3.364120e-01,4.192864e-01,5.173684e-01,6.304481e-01,
-7.582455e-01,8.958848e-01,1.037582e+00,1.176684e+00,1.307744e+00,1.428590e+00,1.538109e+00,
-1.637162e+00,1.726448e+00,1.806975e+00,1.880027e+00,1.946380e+00,2.006917e+00,2.062500e+00,
-2.113806e+00,2.161365e+00,2.205714e+00,2.247309e+00,2.286523e+00,2.323671e+00,2.359012e+00,
-2.392761e+00,2.425097e+00,2.456165e+00,2.486085e+00,2.514957e+00,2.542866e+00,2.569884e+00,
-2.596079e+00,2.621512e+00,2.646242e+00,2.670327e+00,2.693830e+00,2.716805e+00,2.739313e+00,
-2.761415e+00,2.783170e+00,2.804641e+00,2.825886e+00,2.846969e+00,2.867949e+00,2.888885e+00,
-2.909838e+00,2.930865e+00,2.952023e+00,2.973366e+00,2.994948e+00,3.016818e+00,3.039026e+00,
-3.061616e+00,3.084631e+00,3.108110e+00,3.132088e+00,3.156597e+00,3.181666e+00,3.207319e+00,
-3.233578e+00,3.260461e+00,3.287985e+00,3.316164e+00,3.345014e+00,3.374420e+00,3.404208e+00,
-3.434812e+00,3.466295e+00,3.498755e+00,3.532340e+00,3.567273e+00,3.603879e+00,3.642620e+00,
-3.684134e+00,3.729263e+00,3.779065e+00,3.834802e+00,3.897876e+00,3.969744e+00,4.051813e+00,
-4.145355e+00,4.251473e+00,4.371124e+00,4.505184e+00,4.654526e+00,4.820112e+00,5.003050e+00,
-5.204640e+00,5.426399e+00,5.670065e+00,5.937583e+00,6.231072e+00,6.552772e+00,6.904959e+00,
-7.289825e+00,7.709327e+00,8.164993e+00,8.657708e+00,9.187498e+00,9.753341e+00,1.035304e+01,
-1.098318e+01,1.163929e+01,1.231599e+01,1.300745e+01,1.370769e+01,1.441103e+01,1.511244e+01,
-1.580777e+01,1.649383e+01,1.716840e+01,1.783020e+01,1.847874e+01,1.911420e+01,1.973730e+01,
-2.034918e+01,2.095125e+01,2.154514e+01,2.213262e+01,2.271548e+01,2.329555e+01,2.387461e+01,
-2.445438e+01,2.503650e+01,2.562246e+01,2.621364e+01,2.681125e+01,2.741634e+01,2.802980e+01,
-2.865235e+01,2.928457e+01,2.992690e+01,3.057966e+01,3.124314e+01,3.191753e+01,3.260304e+01,
-3.329988e+01,3.400829e+01,3.472857e+01,3.546106e+01,3.620616e+01,3.696434e+01,3.773610e+01,
-3.852199e+01,3.932257e+01,4.013841e+01,4.097009e+01,4.181816e+01,4.268318e+01,4.356564e+01,
-4.446606e+01,4.538488e+01,4.632254e+01,4.727946e+01,4.825604e+01,4.925267e+01,5.026972e+01,
-5.130758e+01,5.236662e+01,5.344725e+01,5.454987e+01,5.567490e+01,5.682280e+01,5.799403e+01,
-5.918909e+01,6.040851e+01,6.165285e+01,6.292269e+01,6.421865e+01,6.554139e+01,6.689158e+01,
-6.826996e+01,6.967727e+01,7.111431e+01,7.258189e+01,7.408087e+01,7.561215e+01,7.717665e+01,
-7.877533e+01,8.040918e+01,8.207925e+01,8.378660e+01,8.553234e+01,8.731762e+01,8.914361e+01,
-9.101153e+01,9.292265e+01,9.487827e+01,9.687973e+01,9.892841e+01,1.010257e+02,1.031732e+02,
-1.053723e+02,1.076245e+02,1.099316e+02,1.122952e+02,1.147170e+02,1.171987e+02,1.197421e+02,
-1.223492e+02,1.250219e+02,1.277621e+02,1.305719e+02,1.334534e+02,1.364088e+02,1.394403e+02,
-1.425502e+02,1.457410e+02,1.490151e+02,1.523749e+02,1.558232e+02,1.593625e+02,1.629957e+02,
-1.667257e+02,1.705553e+02,1.744876e+02,1.785257e+02,1.826729e+02,1.869325e+02,1.913079e+02,
-1.958027e+02,2.004204e+02,2.051650e+02,2.100402e+02,2.150500e+02,2.201987e+02,2.254904e+02,
-2.309295e+02,2.365206e+02,2.422684e+02,2.481777e+02,2.542534e+02,2.605007e+02,2.669250e+02,
-2.735316e+02,2.803262e+02,2.873146e+02,2.945029e+02,3.018973e+02,3.095041e+02,3.173299e+02,
-3.253817e+02,3.336664e+02,3.421912e+02,3.509637e+02,3.599917e+02,3.692831e+02,3.788461e+02,
-3.886893e+02,3.988214e+02,4.092516e+02,4.199893e+02,4.310440e+02,4.424257e+02,4.541449e+02,
-4.662121e+02,4.786383e+02,4.914349e+02,5.046135e+02,5.181864e+02,5.321660e+02,5.465652e+02,
-5.613974e+02,5.766763e+02,5.924161e+02,6.086315e+02,6.253377e+02,6.425504e+02,6.602857e+02
-  };
-  static const G4double P210[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-6.479160e-04,2.222020e-03,4.264157e-03,6.841262e-03,1.032399e-02,1.515291e-02,2.152677e-02,
-2.967511e-02,4.084384e-02,5.620899e-02,7.638501e-02,1.028167e-01,1.396897e-01,1.889132e-01,
-2.531616e-01,3.419767e-01,4.606012e-01,6.160489e-01,8.278253e-01,1.106110e+00,1.471173e+00,
-1.952294e+00,2.568440e+00,3.357900e+00,4.349247e+00,5.576148e+00,7.074057e+00,8.855419e+00,
-1.093215e+01,1.323883e+01,1.568832e+01,1.816813e+01,2.057800e+01,2.286974e+01,2.501187e+01,
-2.701003e+01,2.886770e+01,3.059561e+01,3.221218e+01,3.372653e+01,3.515134e+01,3.650043e+01,
-3.778462e+01,3.901221e+01,4.019267e+01,4.133432e+01,4.244420e+01,4.352833e+01,4.459184e+01,
-4.563906e+01,4.667362e+01,4.769852e+01,4.871621e+01,4.972874e+01,5.073786e+01,5.174512e+01,
-5.275195e+01,5.375980e+01,5.477015e+01,5.578467e+01,5.680527e+01,5.783387e+01,5.887274e+01,
-5.992444e+01,6.099162e+01,6.207742e+01,6.318504e+01,6.431812e+01,6.548052e+01,6.667634e+01,
-6.791004e+01,6.918632e+01,7.051016e+01,7.188680e+01,7.332174e+01,7.482073e+01,7.638975e+01,
-7.803498e+01,7.976279e+01,8.157970e+01,8.349240e+01,8.550769e+01,8.763244e+01,8.987365e+01,
-9.223838e+01,9.473382e+01,9.736730e+01,1.001464e+02,1.030792e+02,1.061603e+02,1.093776e+02,
-1.127846e+02,1.163971e+02,1.202362e+02,1.243305e+02,1.287201e+02,1.334613e+02,1.386334e+02,
-1.443459e+02,1.507468e+02,1.580279e+02,1.664268e+02,1.762236e+02,1.877291e+02,2.012708e+02,
-2.171791e+02,2.357799e+02,2.573961e+02,2.823579e+02,3.110181e+02,3.437701e+02,3.810638e+02,
-4.234203e+02,4.714435e+02,5.258289e+02,5.873688e+02,6.569534e+02,7.355652e+02,8.242650e+02,
-9.241665e+02,1.036396e+03,1.162036e+03,1.302054e+03,1.457221e+03,1.628023e+03,1.814588e+03,
-2.016629e+03,2.233434e+03,2.463894e+03,2.706587e+03,2.959889e+03,3.222102e+03,3.491605e+03,
-3.766953e+03,4.046947e+03,4.330688e+03,4.617582e+03,4.907339e+03,5.199952e+03,5.495663e+03,
-5.794940e+03,6.098442e+03,6.406997e+03,6.721566e+03,7.043226e+03,7.373149e+03,7.712587e+03,
-8.062854e+03,8.425307e+03,8.801331e+03,9.192321e+03,9.599669e+03,1.002475e+04,1.046890e+04,
-1.093345e+04,1.141964e+04,1.192874e+04,1.246195e+04,1.302049e+04,1.360562e+04,1.421860e+04,
-1.486078e+04,1.553362e+04,1.623867e+04,1.697762e+04,1.775231e+04,1.856473e+04,1.941702e+04,
-2.031147e+04,2.125054e+04,2.223681e+04,2.327300e+04,2.436195e+04,2.550666e+04,2.671021e+04,
-2.797583e+04,2.930685e+04,3.070674e+04,3.217911e+04,3.372772e+04,3.535650e+04,3.706952e+04,
-3.887109e+04,4.076570e+04,4.275810e+04,4.485325e+04,4.705643e+04,4.937318e+04,5.180937e+04,
-5.437120e+04,5.706526e+04,5.989850e+04,6.287829e+04,6.601245e+04,6.930926e+04,7.277750e+04,
-7.642649e+04,8.026610e+04,8.430679e+04,8.855965e+04,9.303645e+04,9.774966e+04,1.027125e+05,
-1.079389e+05,1.134438e+05,1.192429e+05,1.253529e+05,1.317915e+05,1.385774e+05,1.457304e+05,
-1.532716e+05,1.612234e+05,1.696092e+05,1.784543e+05,1.877851e+05,1.976298e+05,2.080182e+05,
-2.189820e+05,2.305546e+05,2.427716e+05,2.556706e+05,2.692916e+05,2.836769e+05,2.988713e+05,
-3.149225e+05,3.318808e+05,3.497998e+05,3.687362e+05,3.887501e+05,4.099053e+05,4.322695e+05,
-4.559143e+05,4.809159e+05,5.073551e+05,5.353173e+05,5.648935e+05,5.961799e+05,6.292788e+05,
-6.642985e+05,7.013543e+05,7.405681e+05,7.820695e+05,8.259959e+05,8.724933e+05,9.217165e+05,
-9.738297e+05,1.029007e+06,1.087434e+06,1.149308e+06,1.214835e+06,1.284239e+06,1.357754e+06,
-1.435629e+06,1.518129e+06,1.605537e+06,1.698150e+06,1.796285e+06,1.900280e+06,2.010491e+06,
-2.127300e+06,2.251108e+06,2.382345e+06,2.521465e+06,2.668952e+06,2.825320e+06,2.991112e+06,
-3.166910e+06,3.353328e+06,3.551019e+06,3.760679e+06,3.983046e+06,4.218903e+06,4.469084e+06,
-4.734475e+06,5.016015e+06,5.314705e+06,5.631606e+06,5.967849e+06,6.324634e+06,6.703234e+06,
-7.105007e+06,7.531392e+06,7.983922e+06,8.464224e+06,8.974029e+06,9.515176e+06,1.008962e+07,
-1.069945e+07,1.134686e+07,1.203421e+07,1.276399e+07,1.353888e+07,1.436168e+07,1.523540e+07
-  };
-  static const G4double P011[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,8.561707e-05,1.906331e-04,3.154098e-04,
-4.819877e-04,6.963055e-04,9.598242e-04,1.274050e-03,1.676401e-03,2.205375e-03,2.864847e-03,
-3.659508e-03,4.684845e-03,6.012414e-03,7.651465e-03,9.662871e-03,1.227193e-02,1.552037e-02,
-1.946512e-02,2.442244e-02,3.048669e-02,3.773801e-02,4.644389e-02,5.668052e-02,6.855143e-02,
-8.219187e-02,9.763501e-02,1.147626e-01,1.335674e-01,1.528473e-01,1.718772e-01,1.898295e-01,
-2.058575e-01,2.199478e-01,2.320907e-01,2.425378e-01,2.514765e-01,2.591877e-01,2.658072e-01,
-2.715525e-01,2.765412e-01,2.808940e-01,2.847237e-01,2.881029e-01,2.911027e-01,2.937862e-01,
-2.962019e-01,2.983884e-01,3.003811e-01,3.022094e-01,3.038971e-01,3.054638e-01,3.069258e-01,
-3.082963e-01,3.095866e-01,3.108058e-01,3.119616e-01,3.130607e-01,3.141086e-01,3.151103e-01,
-3.160703e-01,3.169924e-01,3.178803e-01,3.187374e-01,3.195668e-01,3.203714e-01,3.211538e-01,
-3.219164e-01,3.226615e-01,3.233911e-01,3.241070e-01,3.248106e-01,3.255035e-01,3.261867e-01,
-3.268613e-01,3.275281e-01,3.281876e-01,3.288405e-01,3.294869e-01,3.301272e-01,3.307613e-01,
-3.313894e-01,3.320112e-01,3.326266e-01,3.332354e-01,3.338373e-01,3.344320e-01,3.350193e-01,
-3.355989e-01,3.361705e-01,3.367340e-01,3.372893e-01,3.378364e-01,3.383744e-01,3.389023e-01,
-3.394248e-01,3.399435e-01,3.404607e-01,3.409797e-01,3.415051e-01,3.420432e-01,3.426019e-01,
-3.431912e-01,3.438227e-01,3.445089e-01,3.452623e-01,3.460940e-01,3.470130e-01,3.480253e-01,
-3.491345e-01,3.503420e-01,3.516483e-01,3.530539e-01,3.545595e-01,3.561672e-01,3.578801e-01,
-3.597024e-01,3.616397e-01,3.636979e-01,3.658841e-01,3.682050e-01,3.706672e-01,3.732763e-01,
-3.760363e-01,3.789488e-01,3.820118e-01,3.852192e-01,3.885601e-01,3.920181e-01,3.955715e-01,
-3.991939e-01,4.028554e-01,4.065239e-01,4.101673e-01,4.137552e-01,4.172611e-01,4.206628e-01,
-4.239442e-01,4.270940e-01,4.301065e-01,4.329801e-01,4.357169e-01,4.383219e-01,4.408018e-01,
-4.431646e-01,4.454194e-01,4.475751e-01,4.496409e-01,4.516255e-01,4.535373e-01,4.553840e-01,
-4.571727e-01,4.589098e-01,4.606012e-01,4.622520e-01,4.638665e-01,4.654485e-01,4.670014e-01,
-4.685277e-01,4.700296e-01,4.715090e-01,4.729673e-01,4.744057e-01,4.758250e-01,4.772260e-01,
-4.786094e-01,4.799758e-01,4.813257e-01,4.826595e-01,4.839778e-01,4.852810e-01,4.865695e-01,
-4.878438e-01,4.891042e-01,4.903511e-01,4.915848e-01,4.928055e-01,4.940135e-01,4.952088e-01,
-4.963917e-01,4.975623e-01,4.987206e-01,4.998667e-01,5.010006e-01,5.021224e-01,5.032320e-01,
-5.043297e-01,5.054154e-01,5.064892e-01,5.075511e-01,5.086014e-01,5.096401e-01,5.106674e-01,
-5.116834e-01,5.126883e-01,5.136823e-01,5.146656e-01,5.156384e-01,5.166009e-01,5.175533e-01,
-5.184958e-01,5.194287e-01,5.203523e-01,5.212667e-01,5.221722e-01,5.230690e-01,5.239574e-01,
-5.248375e-01,5.257097e-01,5.265740e-01,5.274309e-01,5.282804e-01,5.291227e-01,5.299582e-01,
-5.307869e-01,5.316092e-01,5.324250e-01,5.332348e-01,5.340385e-01,5.348365e-01,5.356289e-01,
-5.364158e-01,5.371974e-01,5.379738e-01,5.387453e-01,5.395119e-01,5.402738e-01,5.410311e-01,
-5.417840e-01,5.425326e-01,5.432770e-01,5.440173e-01,5.447537e-01,5.454863e-01,5.462151e-01,
-5.469403e-01,5.476620e-01,5.483803e-01,5.490953e-01,5.498071e-01,5.505157e-01,5.512213e-01,
-5.519240e-01,5.526238e-01,5.533208e-01,5.540151e-01,5.547068e-01,5.553960e-01,5.560827e-01,
-5.567669e-01,5.574489e-01,5.581286e-01,5.588061e-01,5.594815e-01,5.601548e-01,5.608261e-01,
-5.614955e-01,5.621630e-01,5.628287e-01,5.634926e-01,5.641548e-01,5.648154e-01,5.654744e-01,
-5.661318e-01,5.667877e-01,5.674422e-01,5.680953e-01,5.687470e-01,5.693975e-01,5.700467e-01,
-5.706946e-01,5.713415e-01,5.719872e-01,5.726318e-01,5.732754e-01,5.739180e-01,5.745597e-01,
-5.752004e-01,5.758403e-01,5.764794e-01,5.771176e-01,5.777552e-01,5.783920e-01,5.790281e-01,
-5.796636e-01,5.802985e-01,5.809328e-01,5.815666e-01,5.821998e-01,5.828326e-01,5.834650e-01,
-5.840970e-01,5.847286e-01,5.853599e-01,5.859909e-01,5.866216e-01,5.872521e-01,5.878823e-01
-  };
-  static const G4double P111[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,5.209548e-04,1.180711e-03,1.990663e-03,
-3.107743e-03,4.592002e-03,6.476688e-03,8.797445e-03,1.186734e-02,1.603420e-02,2.139747e-02,
-2.806967e-02,3.696045e-02,4.884261e-02,6.398504e-02,8.316995e-02,1.088558e-01,1.418609e-01,
-1.832285e-01,2.368826e-01,3.046122e-01,3.881885e-01,4.917300e-01,6.173520e-01,7.676664e-01,
-9.458741e-01,1.154034e+00,1.392213e+00,1.661998e+00,1.947285e+00,2.237778e+00,2.520414e+00,
-2.780710e+00,3.016745e+00,3.226555e+00,3.412755e+00,3.577076e+00,3.723291e+00,3.852749e+00,
-3.968634e+00,4.072420e+00,4.165812e+00,4.250554e+00,4.327670e+00,4.398270e+00,4.463397e+00,
-4.523860e+00,4.580294e+00,4.633332e+00,4.683510e+00,4.731274e+00,4.776995e+00,4.820987e+00,
-4.863513e+00,4.904792e+00,4.945010e+00,4.984323e+00,5.022866e+00,5.060755e+00,5.098099e+00,
-5.134994e+00,5.171534e+00,5.207809e+00,5.243910e+00,5.279928e+00,5.315948e+00,5.352059e+00,
-5.388348e+00,5.424899e+00,5.461794e+00,5.499112e+00,5.536929e+00,5.575317e+00,5.614339e+00,
-5.654057e+00,5.694526e+00,5.735793e+00,5.777899e+00,5.820879e+00,5.864759e+00,5.909560e+00,
-5.955296e+00,6.001974e+00,6.049594e+00,6.098153e+00,6.147641e+00,6.198045e+00,6.249350e+00,
-6.301538e+00,6.354593e+00,6.408503e+00,6.463261e+00,6.518875e+00,6.575240e+00,6.632248e+00,
-6.690414e+00,6.749930e+00,6.811096e+00,6.874363e+00,6.940381e+00,7.010064e+00,7.084648e+00,
-7.165738e+00,7.255305e+00,7.355625e+00,7.469147e+00,7.598323e+00,7.745430e+00,7.912453e+00,
-8.101065e+00,8.312698e+00,8.548675e+00,8.810356e+00,9.099276e+00,9.417241e+00,9.766397e+00,
-1.014926e+01,1.056874e+01,1.102811e+01,1.153097e+01,1.208119e+01,1.268281e+01,1.333988e+01,
-1.405626e+01,1.483537e+01,1.567986e+01,1.659126e+01,1.756967e+01,1.861338e+01,1.971876e+01,
-2.088013e+01,2.208995e+01,2.333920e+01,2.461789e+01,2.591570e+01,2.722262e+01,2.852960e+01,
-2.982889e+01,3.111433e+01,3.238135e+01,3.362699e+01,3.484969e+01,3.604911e+01,3.722590e+01,
-3.838153e+01,3.951805e+01,4.063795e+01,4.174401e+01,4.283916e+01,4.392643e+01,4.500884e+01,
-4.608939e+01,4.717095e+01,4.825627e+01,4.934793e+01,5.044832e+01,5.155962e+01,5.268381e+01,
-5.382263e+01,5.497760e+01,5.615006e+01,5.734118e+01,5.855195e+01,5.978329e+01,6.103600e+01,
-6.231082e+01,6.360849e+01,6.492971e+01,6.627522e+01,6.764576e+01,6.904207e+01,7.046495e+01,
-7.191516e+01,7.339351e+01,7.490076e+01,7.643768e+01,7.800500e+01,7.960342e+01,8.123360e+01,
-8.289618e+01,8.459176e+01,8.632091e+01,8.808419e+01,8.988213e+01,9.171528e+01,9.358418e+01,
-9.548939e+01,9.743150e+01,9.941112e+01,1.014289e+02,1.034855e+02,1.055817e+02,1.077184e+02,
-1.098962e+02,1.121162e+02,1.143792e+02,1.166864e+02,1.190388e+02,1.214375e+02,1.238837e+02,
-1.263787e+02,1.289239e+02,1.315205e+02,1.341702e+02,1.368742e+02,1.396344e+02,1.424522e+02,
-1.453293e+02,1.482676e+02,1.512688e+02,1.543349e+02,1.574678e+02,1.606694e+02,1.639419e+02,
-1.672875e+02,1.707082e+02,1.742066e+02,1.777848e+02,1.814453e+02,1.851906e+02,1.890234e+02,
-1.929462e+02,1.969619e+02,2.010732e+02,2.052830e+02,2.095944e+02,2.140105e+02,2.185344e+02,
-2.231694e+02,2.279189e+02,2.327864e+02,2.377754e+02,2.428897e+02,2.481330e+02,2.535094e+02,
-2.590228e+02,2.646774e+02,2.704774e+02,2.764274e+02,2.825319e+02,2.887956e+02,2.952232e+02,
-3.018199e+02,3.085907e+02,3.155410e+02,3.226763e+02,3.300021e+02,3.375242e+02,3.452488e+02,
-3.531820e+02,3.613300e+02,3.696996e+02,3.782975e+02,3.871306e+02,3.962063e+02,4.055319e+02,
-4.151151e+02,4.249638e+02,4.350862e+02,4.454907e+02,4.561860e+02,4.671811e+02,4.784852e+02,
-4.901079e+02,5.020589e+02,5.143485e+02,5.269872e+02,5.399857e+02,5.533553e+02,5.671075e+02,
-5.812541e+02,5.958075e+02,6.107802e+02,6.261855e+02,6.420367e+02,6.583478e+02,6.751333e+02,
-6.924079e+02,7.101869e+02,7.284863e+02,7.473223e+02,7.667118e+02,7.866722e+02,8.072215e+02,
-8.283782e+02,8.501616e+02,8.725913e+02,8.956879e+02,9.194725e+02,9.439667e+02,9.691932e+02,
-9.951752e+02,1.021937e+03,1.049502e+03,1.077898e+03,1.107150e+03,1.137285e+03,1.168332e+03
-  };
-  static const G4double P211[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,3.170118e-03,7.315363e-03,1.257339e-02,
-2.006524e-02,3.034536e-02,4.382582e-02,6.096755e-02,8.439254e-02,1.172188e-01,1.608402e-01,
-2.168665e-01,2.939658e-01,4.003237e-01,5.402293e-01,7.232315e-01,9.761260e-01,1.311496e+00,
-1.745343e+00,2.326101e+00,3.082613e+00,4.045963e+00,5.277513e+00,6.819248e+00,8.722748e+00,
-1.105116e+01,1.385719e+01,1.716964e+01,2.104044e+01,2.526219e+01,2.969696e+01,3.414706e+01,
-3.837462e+01,4.232892e+01,4.595438e+01,4.927332e+01,5.229426e+01,5.506693e+01,5.759896e+01,
-5.993661e+01,6.209595e+01,6.409989e+01,6.597519e+01,6.773518e+01,6.939684e+01,7.097759e+01,
-7.249103e+01,7.394773e+01,7.535948e+01,7.673677e+01,7.808864e+01,7.942302e+01,8.074691e+01,
-8.206649e+01,8.338723e+01,8.471403e+01,8.605126e+01,8.740299e+01,8.877308e+01,9.016530e+01,
-9.158348e+01,9.303155e+01,9.451368e+01,9.603439e+01,9.759857e+01,9.921130e+01,1.008781e+02,
-1.026050e+02,1.043980e+02,1.062640e+02,1.082097e+02,1.102423e+02,1.123692e+02,1.145981e+02,
-1.169368e+02,1.193933e+02,1.219754e+02,1.246913e+02,1.275491e+02,1.305566e+02,1.337220e+02,
-1.370529e+02,1.405572e+02,1.442423e+02,1.481158e+02,1.521850e+02,1.564570e+02,1.609392e+02,
-1.656389e+02,1.705636e+02,1.757217e+02,1.811220e+02,1.867754e+02,1.926811e+02,1.988382e+02,
-2.053134e+02,2.121426e+02,2.193769e+02,2.270897e+02,2.353854e+02,2.444109e+02,2.543683e+02,
-2.655272e+02,2.782318e+02,2.928987e+02,3.100059e+02,3.300699e+02,3.536201e+02,3.811791e+02,
-4.132549e+02,4.503497e+02,4.929799e+02,5.417037e+02,5.971489e+02,6.600395e+02,7.312176e+02,
-8.116615e+02,9.025013e+02,1.005029e+03,1.120706e+03,1.251160e+03,1.398173e+03,1.563658e+03,
-1.749612e+03,1.958046e+03,2.190894e+03,2.449893e+03,2.736450e+03,3.051500e+03,3.395381e+03,
-3.767744e+03,4.167523e+03,4.592970e+03,5.041778e+03,5.511247e+03,5.998488e+03,6.500670e+03,
-7.015188e+03,7.539806e+03,8.072749e+03,8.612744e+03,9.159028e+03,9.711325e+03,1.026981e+04,
-1.083504e+04,1.140796e+04,1.198979e+04,1.258204e+04,1.318641e+04,1.380480e+04,1.443930e+04,
-1.509210e+04,1.576553e+04,1.646199e+04,1.718399e+04,1.793404e+04,1.871473e+04,1.952866e+04,
-2.037842e+04,2.126663e+04,2.219590e+04,2.316886e+04,2.418816e+04,2.525650e+04,2.637667e+04,
-2.755151e+04,2.878401e+04,3.007731e+04,3.143470e+04,3.285966e+04,3.435587e+04,3.592721e+04,
-3.757777e+04,3.931185e+04,4.113396e+04,4.304881e+04,4.506131e+04,4.717656e+04,4.939988e+04,
-5.173679e+04,5.419304e+04,5.677458e+04,5.948765e+04,6.233872e+04,6.533460e+04,6.848239e+04,
-7.178955e+04,7.526394e+04,7.891383e+04,8.274793e+04,8.677546e+04,9.100617e+04,9.545036e+04,
-1.001189e+05,1.050235e+05,1.101763e+05,1.155902e+05,1.212792e+05,1.272577e+05,1.335413e+05,
-1.401464e+05,1.470904e+05,1.543917e+05,1.620700e+05,1.701459e+05,1.786414e+05,1.875799e+05,
-1.969859e+05,2.068858e+05,2.173072e+05,2.282796e+05,2.398340e+05,2.520035e+05,2.648230e+05,
-2.783297e+05,2.925628e+05,3.075639e+05,3.233770e+05,3.400491e+05,3.576294e+05,3.761706e+05,
-3.957283e+05,4.163613e+05,4.381322e+05,4.611072e+05,4.853564e+05,5.109543e+05,5.379797e+05,
-5.665162e+05,5.966524e+05,6.284822e+05,6.621053e+05,6.976273e+05,7.351601e+05,7.748225e+05,
-8.167405e+05,8.610475e+05,9.078852e+05,9.574039e+05,1.009763e+06,1.065131e+06,1.123687e+06,
-1.185622e+06,1.251138e+06,1.320447e+06,1.393779e+06,1.471372e+06,1.553484e+06,1.640385e+06,
-1.732364e+06,1.829725e+06,1.932793e+06,2.041912e+06,2.157447e+06,2.279787e+06,2.409342e+06,
-2.546550e+06,2.691874e+06,2.845807e+06,3.008872e+06,3.181623e+06,3.364649e+06,3.558578e+06,
-3.764073e+06,3.981840e+06,4.212628e+06,4.457233e+06,4.716501e+06,4.991329e+06,5.282672e+06,
-5.591541e+06,5.919014e+06,6.266233e+06,6.634412e+06,7.024842e+06,7.438893e+06,7.878021e+06,
-8.343775e+06,8.837797e+06,9.361836e+06,9.917747e+06,1.050750e+07,1.113320e+07,1.179707e+07,
-1.250148e+07,1.324894e+07,1.404213e+07,1.488389e+07,1.577725e+07,1.672542e+07,1.773181e+07,
-1.880006e+07,1.993402e+07,2.113780e+07,2.241576e+07,2.377254e+07,2.521307e+07,2.674259e+07
-  };
-  static const G4double P012[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,4.229739e-04,1.122568e-03,
-2.064930e-03,3.284750e-03,4.790517e-03,6.590986e-03,8.900132e-03,1.193812e-02,1.572724e-02,
-2.029405e-02,2.612967e-02,3.360287e-02,4.276376e-02,5.386159e-02,6.777878e-02,8.469189e-02,
-1.048143e-01,1.292053e-01,1.582020e-01,1.919795e-01,2.308545e-01,2.750062e-01,3.220332e-01,
-3.681689e-01,4.129651e-01,4.533231e-01,4.884559e-01,5.187789e-01,5.444843e-01,5.662268e-01,
-5.846749e-01,6.003010e-01,6.136180e-01,6.250143e-01,6.347777e-01,6.432341e-01,6.505388e-01,
-6.569272e-01,6.625246e-01,6.674590e-01,6.718492e-01,6.757719e-01,6.793023e-01,6.825069e-01,
-6.854375e-01,6.881350e-01,6.906373e-01,6.929758e-01,6.951759e-01,6.972587e-01,6.992414e-01,
-7.011385e-01,7.029615e-01,7.047201e-01,7.064225e-01,7.080751e-01,7.096835e-01,7.112527e-01,
-7.127865e-01,7.142885e-01,7.157619e-01,7.172092e-01,7.186329e-01,7.200349e-01,7.214168e-01,
-7.227802e-01,7.241260e-01,7.254552e-01,7.267683e-01,7.280657e-01,7.293477e-01,7.306141e-01,
-7.318649e-01,7.330998e-01,7.343184e-01,7.355204e-01,7.367051e-01,7.378722e-01,7.390210e-01,
-7.401512e-01,7.412621e-01,7.423534e-01,7.434246e-01,7.444755e-01,7.455059e-01,7.465157e-01,
-7.475050e-01,7.484740e-01,7.494234e-01,7.503538e-01,7.512667e-01,7.521635e-01,7.530473e-01,
-7.539251e-01,7.548030e-01,7.556892e-01,7.565948e-01,7.575336e-01,7.585223e-01,7.595799e-01,
-7.607266e-01,7.619819e-01,7.633625e-01,7.648809e-01,7.665452e-01,7.683588e-01,7.703228e-01,
-7.724363e-01,7.746990e-01,7.771113e-01,7.796756e-01,7.823961e-01,7.852792e-01,7.883330e-01,
-7.915675e-01,7.949937e-01,7.986237e-01,8.024699e-01,8.065444e-01,8.108585e-01,8.154213e-01,
-8.202389e-01,8.253131e-01,8.306399e-01,8.362083e-01,8.419994e-01,8.479855e-01,8.541308e-01,
-8.603917e-01,8.667190e-01,8.730602e-01,8.793625e-01,8.855761e-01,8.916562e-01,8.975657e-01,
-9.032762e-01,9.087677e-01,9.140286e-01,9.190547e-01,9.238476e-01,9.284140e-01,9.327639e-01,
-9.369096e-01,9.408651e-01,9.446450e-01,9.482641e-01,9.517370e-01,9.550773e-01,9.582984e-01,
-9.614123e-01,9.644302e-01,9.673624e-01,9.702179e-01,9.730048e-01,9.757305e-01,9.784010e-01,
-9.810219e-01,9.835976e-01,9.861323e-01,9.886290e-01,9.910907e-01,9.935195e-01,9.959175e-01,
-9.982862e-01,1.000627e+00,1.002941e+00,1.005229e+00,1.007492e+00,1.009731e+00,1.011947e+00,
-1.014139e+00,1.016308e+00,1.018455e+00,1.020580e+00,1.022683e+00,1.024763e+00,1.026822e+00,
-1.028859e+00,1.030874e+00,1.032867e+00,1.034838e+00,1.036787e+00,1.038714e+00,1.040619e+00,
-1.042502e+00,1.044363e+00,1.046202e+00,1.048019e+00,1.049815e+00,1.051590e+00,1.053344e+00,
-1.055077e+00,1.056790e+00,1.058483e+00,1.060156e+00,1.061810e+00,1.063446e+00,1.065062e+00,
-1.066661e+00,1.068243e+00,1.069807e+00,1.071355e+00,1.072886e+00,1.074402e+00,1.075902e+00,
-1.077388e+00,1.078859e+00,1.080316e+00,1.081759e+00,1.083190e+00,1.084607e+00,1.086012e+00,
-1.087404e+00,1.088785e+00,1.090155e+00,1.091513e+00,1.092861e+00,1.094198e+00,1.095525e+00,
-1.096843e+00,1.098150e+00,1.099449e+00,1.100739e+00,1.102020e+00,1.103292e+00,1.104557e+00,
-1.105813e+00,1.107062e+00,1.108303e+00,1.109537e+00,1.110764e+00,1.111984e+00,1.113197e+00,
-1.114404e+00,1.115605e+00,1.116799e+00,1.117988e+00,1.119171e+00,1.120348e+00,1.121520e+00,
-1.122687e+00,1.123848e+00,1.125005e+00,1.126156e+00,1.127304e+00,1.128446e+00,1.129584e+00,
-1.130718e+00,1.131848e+00,1.132973e+00,1.134095e+00,1.135213e+00,1.136328e+00,1.137438e+00,
-1.138545e+00,1.139649e+00,1.140750e+00,1.141847e+00,1.142942e+00,1.144033e+00,1.145122e+00,
-1.146208e+00,1.147291e+00,1.148371e+00,1.149450e+00,1.150525e+00,1.151598e+00,1.152669e+00,
-1.153738e+00,1.154805e+00,1.155870e+00,1.156933e+00,1.157993e+00,1.159053e+00,1.160110e+00,
-1.161166e+00,1.162220e+00,1.163272e+00,1.164324e+00,1.165373e+00,1.166422e+00,1.167469e+00,
-1.168515e+00,1.169560e+00,1.170604e+00,1.171647e+00,1.172688e+00,1.173729e+00,1.174769e+00,
-1.175809e+00,1.176847e+00,1.177885e+00,1.178923e+00,1.179959e+00,1.180996e+00,1.182031e+00
-  };
-  static const G4double P112[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,2.669456e-03,7.210759e-03,
-1.353042e-02,2.197839e-02,3.274774e-02,4.604543e-02,6.366403e-02,8.759503e-02,1.184107e-01,
-1.567549e-01,2.073542e-01,2.742402e-01,3.588721e-01,4.647151e-01,6.017175e-01,7.735506e-01,
-9.845531e-01,1.248518e+00,1.572353e+00,1.961623e+00,2.423926e+00,2.965705e+00,3.560928e+00,
-4.163437e+00,4.766978e+00,5.327878e+00,5.831605e+00,6.280136e+00,6.672360e+00,7.014629e+00,
-7.314181e+00,7.575938e+00,7.806026e+00,8.009145e+00,8.188626e+00,8.348974e+00,8.491835e+00,
-8.620696e+00,8.737148e+00,8.843020e+00,8.940169e+00,9.029691e+00,9.112779e+00,9.190558e+00,
-9.263911e+00,9.333538e+00,9.400141e+00,9.464325e+00,9.526593e+00,9.587378e+00,9.647045e+00,
-9.705909e+00,9.764235e+00,9.822253e+00,9.880155e+00,9.938113e+00,9.996274e+00,1.005477e+01,
-1.011373e+01,1.017325e+01,1.023345e+01,1.029441e+01,1.035624e+01,1.041901e+01,1.048279e+01,
-1.054767e+01,1.061369e+01,1.068090e+01,1.074936e+01,1.081909e+01,1.089011e+01,1.096245e+01,
-1.103609e+01,1.111104e+01,1.118729e+01,1.126481e+01,1.134358e+01,1.142356e+01,1.150472e+01,
-1.158702e+01,1.167041e+01,1.175485e+01,1.184030e+01,1.192670e+01,1.201403e+01,1.210224e+01,
-1.219132e+01,1.228126e+01,1.237208e+01,1.246383e+01,1.255663e+01,1.265058e+01,1.274603e+01,
-1.284374e+01,1.294447e+01,1.304928e+01,1.315968e+01,1.327765e+01,1.340570e+01,1.354690e+01,
-1.370470e+01,1.388274e+01,1.408458e+01,1.431338e+01,1.457185e+01,1.486217e+01,1.518618e+01,
-1.554557e+01,1.594212e+01,1.637787e+01,1.685527e+01,1.737730e+01,1.794750e+01,1.857000e+01,
-1.924953e+01,1.999143e+01,2.080156e+01,2.168625e+01,2.265222e+01,2.370633e+01,2.485539e+01,
-2.610582e+01,2.746321e+01,2.893183e+01,3.051411e+01,3.221007e+01,3.401687e+01,3.592851e+01,
-3.793576e+01,4.002641e+01,4.218581e+01,4.439773e+01,4.664525e+01,4.891184e+01,5.118231e+01,
-5.344347e+01,5.568452e+01,5.789724e+01,6.007592e+01,6.221721e+01,6.431975e+01,6.638393e+01,
-6.841150e+01,7.040530e+01,7.236897e+01,7.430671e+01,7.622307e+01,7.812281e+01,8.001079e+01,
-8.189187e+01,8.377082e+01,8.565227e+01,8.754065e+01,8.944017e+01,9.135476e+01,9.328811e+01,
-9.524359e+01,9.722429e+01,9.923302e+01,1.012723e+02,1.033445e+02,1.054517e+02,1.075958e+02,
-1.097786e+02,1.120016e+02,1.142666e+02,1.165748e+02,1.189278e+02,1.213268e+02,1.237731e+02,
-1.262679e+02,1.288124e+02,1.314077e+02,1.340547e+02,1.367544e+02,1.395077e+02,1.423154e+02,
-1.451783e+02,1.480970e+02,1.510722e+02,1.541047e+02,1.571950e+02,1.603439e+02,1.635520e+02,
-1.668202e+02,1.701491e+02,1.735398e+02,1.769930e+02,1.805099e+02,1.840917e+02,1.877394e+02,
-1.914545e+02,1.952384e+02,1.990926e+02,2.030187e+02,2.070186e+02,2.110939e+02,2.152468e+02,
-2.194793e+02,2.237936e+02,2.281918e+02,2.326765e+02,2.372501e+02,2.419151e+02,2.466743e+02,
-2.515305e+02,2.564865e+02,2.615454e+02,2.667102e+02,2.719843e+02,2.773708e+02,2.828733e+02,
-2.884953e+02,2.942405e+02,3.001125e+02,3.061153e+02,3.122530e+02,3.185296e+02,3.249493e+02,
-3.315166e+02,3.382361e+02,3.451123e+02,3.521500e+02,3.593542e+02,3.667299e+02,3.742825e+02,
-3.820173e+02,3.899398e+02,3.980558e+02,4.063711e+02,4.148920e+02,4.236245e+02,4.325751e+02,
-4.417506e+02,4.511576e+02,4.608034e+02,4.706951e+02,4.808402e+02,4.912465e+02,5.019218e+02,
-5.128744e+02,5.241128e+02,5.356456e+02,5.474817e+02,5.596305e+02,5.721016e+02,5.849046e+02,
-5.980497e+02,6.115475e+02,6.254086e+02,6.396443e+02,6.542659e+02,6.692852e+02,6.847145e+02,
-7.005664e+02,7.168537e+02,7.335900e+02,7.507889e+02,7.684647e+02,7.866322e+02,8.053064e+02,
-8.245030e+02,8.442381e+02,8.645283e+02,8.853909e+02,9.068435e+02,9.289045e+02,9.515927e+02,
-9.749276e+02,9.989293e+02,1.023618e+03,1.049017e+03,1.075146e+03,1.102029e+03,1.129689e+03,
-1.158151e+03,1.187440e+03,1.217582e+03,1.248602e+03,1.280530e+03,1.313394e+03,1.347222e+03,
-1.382046e+03,1.417896e+03,1.454806e+03,1.492808e+03,1.531936e+03,1.572228e+03,1.613719e+03,
-1.656447e+03,1.700453e+03,1.745775e+03,1.792457e+03,1.840541e+03,1.890072e+03,1.941097e+03
-  };
-  static const G4double P212[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,1.684810e-02,4.632984e-02,
-8.871441e-02,1.472267e-01,2.242564e-01,3.224773e-01,4.569173e-01,6.454442e-01,8.960796e-01,
-1.218055e+00,1.656827e+00,2.255513e+00,3.037441e+00,4.046981e+00,5.395760e+00,7.141687e+00,
-9.354437e+00,1.221137e+01,1.582824e+01,2.031476e+01,2.581295e+01,3.246157e+01,3.999597e+01,
-4.786507e+01,5.599726e+01,6.379332e+01,7.101625e+01,7.765137e+01,8.363657e+01,8.902498e+01,
-9.388937e+01,9.827447e+01,1.022502e+02,1.058707e+02,1.091704e+02,1.122111e+02,1.150053e+02,
-1.176048e+02,1.200277e+02,1.222995e+02,1.244494e+02,1.264926e+02,1.284483e+02,1.303362e+02,
-1.321723e+02,1.339697e+02,1.357426e+02,1.375044e+02,1.392669e+02,1.410410e+02,1.428367e+02,
-1.446633e+02,1.465296e+02,1.484437e+02,1.504133e+02,1.524461e+02,1.545493e+02,1.567303e+02,
-1.589966e+02,1.613556e+02,1.638152e+02,1.663834e+02,1.690685e+02,1.718788e+02,1.748232e+02,
-1.779103e+02,1.811492e+02,1.845488e+02,1.881180e+02,1.918658e+02,1.958012e+02,1.999327e+02,
-2.042690e+02,2.088184e+02,2.135892e+02,2.185894e+02,2.238267e+02,2.293087e+02,2.350430e+02,
-2.410367e+02,2.472972e+02,2.538316e+02,2.606472e+02,2.677517e+02,2.751528e+02,2.828593e+02,
-2.908809e+02,2.992293e+02,3.079187e+02,3.169676e+02,3.264006e+02,3.362449e+02,3.465537e+02,
-3.574312e+02,3.689892e+02,3.813869e+02,3.948465e+02,4.096708e+02,4.262580e+02,4.451096e+02,
-4.668260e+02,4.920818e+02,5.215910e+02,5.560706e+02,5.962149e+02,6.426899e+02,6.961495e+02,
-7.572662e+02,8.267702e+02,9.054874e+02,9.943751e+02,1.094553e+03,1.207331e+03,1.334230e+03,
-1.477006e+03,1.637665e+03,1.818480e+03,2.021994e+03,2.251016e+03,2.508599e+03,2.797992e+03,
-3.122568e+03,3.485707e+03,3.890646e+03,4.340289e+03,4.837003e+03,5.382390e+03,5.977096e+03,
-6.620672e+03,7.311514e+03,8.046928e+03,8.823291e+03,9.636310e+03,1.048133e+04,1.135372e+04,
-1.224914e+04,1.316377e+04,1.409450e+04,1.503898e+04,1.599568e+04,1.696385e+04,1.794346e+04,
-1.893518e+04,1.994025e+04,2.096045e+04,2.199802e+04,2.305557e+04,2.413607e+04,2.524277e+04,
-2.637920e+04,2.754912e+04,2.875647e+04,3.000538e+04,3.130013e+04,3.264512e+04,3.404488e+04,
-3.550403e+04,3.702724e+04,3.861931e+04,4.028511e+04,4.202960e+04,4.385786e+04,4.577509e+04,
-4.778667e+04,4.989812e+04,5.211519e+04,5.444383e+04,5.689024e+04,5.946088e+04,6.216245e+04,
-6.500194e+04,6.798661e+04,7.112399e+04,7.442190e+04,7.788844e+04,8.153200e+04,8.536127e+04,
-8.938526e+04,9.361335e+04,9.805527e+04,1.027212e+05,1.076216e+05,1.127678e+05,1.181712e+05,
-1.238442e+05,1.297996e+05,1.360510e+05,1.426127e+05,1.495000e+05,1.567288e+05,1.643162e+05,
-1.722801e+05,1.806398e+05,1.894154e+05,1.986284e+05,2.083016e+05,2.184591e+05,2.291266e+05,
-2.403312e+05,2.521018e+05,2.644689e+05,2.774648e+05,2.911240e+05,3.054827e+05,3.205795e+05,
-3.364554e+05,3.531535e+05,3.707199e+05,3.892030e+05,4.086544e+05,4.291288e+05,4.506839e+05,
-4.733811e+05,4.972852e+05,5.224649e+05,5.489933e+05,5.769474e+05,6.064091e+05,6.374651e+05,
-6.702071e+05,7.047325e+05,7.411446e+05,7.795524e+05,8.200720e+05,8.628259e+05,9.079443e+05,
-9.555652e+05,1.005835e+06,1.058907e+06,1.114948e+06,1.174130e+06,1.236639e+06,1.302669e+06,
-1.372430e+06,1.446140e+06,1.524033e+06,1.606356e+06,1.693372e+06,1.785359e+06,1.882612e+06,
-1.985444e+06,2.094187e+06,2.209195e+06,2.330839e+06,2.459517e+06,2.595650e+06,2.739683e+06,
-2.892091e+06,3.053375e+06,3.224069e+06,3.404739e+06,3.595986e+06,3.798446e+06,4.012797e+06,
-4.239756e+06,4.480087e+06,4.734597e+06,5.004147e+06,5.289647e+06,5.592067e+06,5.912434e+06,
-6.251840e+06,6.611444e+06,6.992476e+06,7.396245e+06,7.824137e+06,8.277627e+06,8.758281e+06,
-9.267762e+06,9.807836e+06,1.038038e+07,1.098738e+07,1.163097e+07,1.231338e+07,1.303701e+07,
-1.380440e+07,1.461824e+07,1.548140e+07,1.639693e+07,1.736806e+07,1.839823e+07,1.949109e+07,
-2.065053e+07,2.188068e+07,2.318592e+07,2.457091e+07,2.604061e+07,2.760029e+07,2.925554e+07,
-3.101232e+07,3.287695e+07,3.485616e+07,3.695711e+07,3.918738e+07,4.155507e+07,4.406876e+07
-  };
-  static const G4double P013[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,3.486588e-04,9.620452e-04,1.718673e-03,2.622926e-03,3.703060e-03,
-5.154692e-03,7.030543e-03,9.343593e-03,1.210723e-02,1.562440e-02,2.020681e-02,2.588705e-02,
-3.270264e-02,4.120096e-02,5.179545e-02,6.455027e-02,7.958144e-02,9.716667e-02,1.174069e-01,
-1.402537e-01,1.647614e-01,1.907608e-01,2.180777e-01,2.456543e-01,2.733481e-01,3.011684e-01,
-3.291280e-01,3.571385e-01,3.844637e-01,4.109055e-01,4.353907e-01,4.572419e-01,4.764803e-01,
-4.931270e-01,5.074779e-01,5.198558e-01,5.305684e-01,5.398436e-01,5.479555e-01,5.550351e-01,
-5.612855e-01,5.668161e-01,5.717392e-01,5.761608e-01,5.801498e-01,5.837742e-01,5.870950e-01,
-5.901599e-01,5.930068e-01,5.956710e-01,5.981820e-01,6.005639e-01,6.028363e-01,6.050157e-01,
-6.071155e-01,6.091467e-01,6.111183e-01,6.130377e-01,6.149109e-01,6.167431e-01,6.185383e-01,
-6.203001e-01,6.220315e-01,6.237350e-01,6.254128e-01,6.270666e-01,6.286979e-01,6.303078e-01,
-6.318973e-01,6.334668e-01,6.350169e-01,6.365477e-01,6.380590e-01,6.395509e-01,6.410229e-01,
-6.424746e-01,6.439056e-01,6.453153e-01,6.467032e-01,6.480686e-01,6.494110e-01,6.507298e-01,
-6.520247e-01,6.532950e-01,6.545406e-01,6.557611e-01,6.569564e-01,6.581265e-01,6.592715e-01,
-6.603918e-01,6.614881e-01,6.625614e-01,6.636131e-01,6.646453e-01,6.656609e-01,6.666658e-01,
-6.676680e-01,6.686761e-01,6.697018e-01,6.707597e-01,6.718679e-01,6.730471e-01,6.743195e-01,
-6.757071e-01,6.772293e-01,6.789009e-01,6.807315e-01,6.827259e-01,6.848850e-01,6.872080e-01,
-6.896938e-01,6.923421e-01,6.951548e-01,6.981356e-01,7.012908e-01,7.046287e-01,7.081597e-01,
-7.118958e-01,7.158503e-01,7.200374e-01,7.244715e-01,7.291667e-01,7.341357e-01,7.393889e-01,
-7.449331e-01,7.507700e-01,7.568949e-01,7.632950e-01,7.699485e-01,7.768239e-01,7.838803e-01,
-7.910682e-01,7.983318e-01,8.056115e-01,8.128477e-01,8.199835e-01,8.269680e-01,8.337591e-01,
-8.403238e-01,8.466393e-01,8.526920e-01,8.584765e-01,8.639943e-01,8.692526e-01,8.742622e-01,
-8.790371e-01,8.835929e-01,8.879462e-01,8.921136e-01,8.961116e-01,8.999559e-01,9.036615e-01,
-9.072423e-01,9.107112e-01,9.140799e-01,9.173590e-01,9.205578e-01,9.236848e-01,9.267473e-01,
-9.297517e-01,9.327034e-01,9.356072e-01,9.384670e-01,9.412861e-01,9.440675e-01,9.468134e-01,
-9.495258e-01,9.522065e-01,9.548567e-01,9.574777e-01,9.600704e-01,9.626357e-01,9.651742e-01,
-9.676864e-01,9.701728e-01,9.726336e-01,9.750691e-01,9.774794e-01,9.798646e-01,9.822246e-01,
-9.845594e-01,9.868688e-01,9.891530e-01,9.914116e-01,9.936448e-01,9.958524e-01,9.980344e-01,
-1.000191e+00,1.002322e+00,1.004428e+00,1.006508e+00,1.008564e+00,1.010594e+00,1.012601e+00,
-1.014583e+00,1.016542e+00,1.018478e+00,1.020391e+00,1.022281e+00,1.024150e+00,1.025997e+00,
-1.027824e+00,1.029630e+00,1.031416e+00,1.033183e+00,1.034931e+00,1.036661e+00,1.038373e+00,
-1.040068e+00,1.041746e+00,1.043408e+00,1.045054e+00,1.046684e+00,1.048300e+00,1.049901e+00,
-1.051488e+00,1.053062e+00,1.054622e+00,1.056169e+00,1.057704e+00,1.059227e+00,1.060738e+00,
-1.062238e+00,1.063727e+00,1.065205e+00,1.066673e+00,1.068130e+00,1.069578e+00,1.071017e+00,
-1.072446e+00,1.073866e+00,1.075278e+00,1.076681e+00,1.078076e+00,1.079463e+00,1.080843e+00,
-1.082215e+00,1.083579e+00,1.084937e+00,1.086288e+00,1.087632e+00,1.088970e+00,1.090301e+00,
-1.091626e+00,1.092946e+00,1.094259e+00,1.095567e+00,1.096870e+00,1.098168e+00,1.099460e+00,
-1.100747e+00,1.102030e+00,1.103308e+00,1.104581e+00,1.105850e+00,1.107115e+00,1.108376e+00,
-1.109632e+00,1.110885e+00,1.112134e+00,1.113379e+00,1.114621e+00,1.115859e+00,1.117094e+00,
-1.118326e+00,1.119555e+00,1.120780e+00,1.122003e+00,1.123223e+00,1.124440e+00,1.125655e+00,
-1.126867e+00,1.128077e+00,1.129284e+00,1.130489e+00,1.131692e+00,1.132893e+00,1.134092e+00,
-1.135289e+00,1.136484e+00,1.137677e+00,1.138868e+00,1.140058e+00,1.141247e+00,1.142434e+00,
-1.143619e+00,1.144803e+00,1.145986e+00,1.147168e+00,1.148349e+00,1.149528e+00,1.150707e+00,
-1.151884e+00,1.153061e+00,1.154237e+00,1.155413e+00,1.156587e+00,1.157761e+00,1.158935e+00
-  };
-  static const G4double P113[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,1.995454e-03,5.606334e-03,1.020784e-02,1.588884e-02,2.290033e-02,
-3.263520e-02,4.562653e-02,6.216957e-02,8.258086e-02,1.094157e-01,1.455118e-01,1.917068e-01,
-2.489316e-01,3.226120e-01,4.174284e-01,5.352577e-01,6.785911e-01,8.516731e-01,1.057284e+00,
-1.296801e+00,1.561942e+00,1.852224e+00,2.166939e+00,2.494770e+00,2.834492e+00,3.186635e+00,
-3.551797e+00,3.929232e+00,4.309095e+00,4.688324e+00,5.050545e+00,5.384012e+00,5.686875e+00,
-5.957193e+00,6.197595e+00,6.411465e+00,6.602403e+00,6.772914e+00,6.926734e+00,7.065197e+00,
-7.191277e+00,7.306340e+00,7.411974e+00,7.509819e+00,7.600857e+00,7.686161e+00,7.766762e+00,
-7.843477e+00,7.916960e+00,7.987876e+00,8.056797e+00,8.124211e+00,8.190532e+00,8.256119e+00,
-8.321275e+00,8.386263e+00,8.451305e+00,8.516592e+00,8.582289e+00,8.648537e+00,8.715465e+00,
-8.783185e+00,8.851798e+00,8.921398e+00,8.992070e+00,9.063890e+00,9.136925e+00,9.211233e+00,
-9.286866e+00,9.363861e+00,9.442250e+00,9.522053e+00,9.603281e+00,9.685935e+00,9.770007e+00,
-9.855482e+00,9.942335e+00,1.003054e+01,1.012005e+01,1.021082e+01,1.030282e+01,1.039600e+01,
-1.049029e+01,1.058565e+01,1.068203e+01,1.077938e+01,1.087765e+01,1.097681e+01,1.107684e+01,
-1.117772e+01,1.127947e+01,1.138215e+01,1.148585e+01,1.159077e+01,1.169718e+01,1.180571e+01,
-1.191727e+01,1.203294e+01,1.215425e+01,1.228322e+01,1.242248e+01,1.257521e+01,1.274509e+01,
-1.293604e+01,1.315194e+01,1.339632e+01,1.367216e+01,1.398189e+01,1.432750e+01,1.471074e+01,
-1.513342e+01,1.559757e+01,1.610563e+01,1.666058e+01,1.726601e+01,1.792615e+01,1.864590e+01,
-1.943082e+01,2.028712e+01,2.122158e+01,2.224152e+01,2.335462e+01,2.456876e+01,2.589168e+01,
-2.733069e+01,2.889211e+01,3.058077e+01,3.239937e+01,3.434789e+01,3.642310e+01,3.861815e+01,
-4.092260e+01,4.332263e+01,4.580166e+01,4.834130e+01,5.092240e+01,5.352617e+01,5.613531e+01,
-5.873476e+01,6.131210e+01,6.385783e+01,6.636527e+01,6.883039e+01,7.125148e+01,7.362876e+01,
-7.596408e+01,7.826048e+01,8.052200e+01,8.275327e+01,8.495940e+01,8.714572e+01,8.931771e+01,
-9.148086e+01,9.364060e+01,9.580217e+01,9.797066e+01,1.001509e+02,1.023474e+02,1.045645e+02,
-1.068062e+02,1.090760e+02,1.113772e+02,1.137131e+02,1.160862e+02,1.184992e+02,1.209544e+02,
-1.234539e+02,1.259998e+02,1.285938e+02,1.312377e+02,1.339332e+02,1.366818e+02,1.394850e+02,
-1.423440e+02,1.452603e+02,1.482350e+02,1.512691e+02,1.543638e+02,1.575200e+02,1.607384e+02,
-1.640199e+02,1.673652e+02,1.707750e+02,1.742501e+02,1.777910e+02,1.813985e+02,1.850734e+02,
-1.888164e+02,1.926284e+02,1.965104e+02,2.004634e+02,2.044885e+02,2.085870e+02,2.127603e+02,
-2.170098e+02,2.213372e+02,2.257441e+02,2.302324e+02,2.348040e+02,2.394612e+02,2.442060e+02,
-2.490408e+02,2.539681e+02,2.589904e+02,2.641105e+02,2.693311e+02,2.746552e+02,2.800858e+02,
-2.856261e+02,2.912794e+02,2.970490e+02,3.029386e+02,3.089517e+02,3.150921e+02,3.213638e+02,
-3.277707e+02,3.343169e+02,3.410068e+02,3.478447e+02,3.548352e+02,3.619830e+02,3.692928e+02,
-3.767697e+02,3.844189e+02,3.922454e+02,4.002549e+02,4.084528e+02,4.168450e+02,4.254374e+02,
-4.342361e+02,4.432473e+02,4.524776e+02,4.619337e+02,4.716224e+02,4.815508e+02,4.917263e+02,
-5.021563e+02,5.128485e+02,5.238111e+02,5.350521e+02,5.465802e+02,5.584039e+02,5.705323e+02,
-5.829747e+02,5.957407e+02,6.088401e+02,6.222830e+02,6.360800e+02,6.502418e+02,6.647796e+02,
-6.797048e+02,6.950292e+02,7.107652e+02,7.269252e+02,7.435222e+02,7.605696e+02,7.780812e+02,
-7.960713e+02,8.145545e+02,8.335460e+02,8.530613e+02,8.731166e+02,8.937286e+02,9.149143e+02,
-9.366915e+02,9.590784e+02,9.820938e+02,1.005757e+03,1.030089e+03,1.055109e+03,1.080839e+03,
-1.107302e+03,1.134519e+03,1.162515e+03,1.191313e+03,1.220939e+03,1.251419e+03,1.282778e+03,
-1.315045e+03,1.348248e+03,1.382416e+03,1.417580e+03,1.453770e+03,1.491019e+03,1.529361e+03,
-1.568829e+03,1.609460e+03,1.651289e+03,1.694355e+03,1.738697e+03,1.784354e+03,1.831369e+03,
-1.879785e+03,1.929646e+03,1.980999e+03,2.033889e+03,2.088367e+03,2.144482e+03,2.202288e+03
-  };
-  static const G4double P213[nE]={
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,
-0.000000e+00,0.000000e+00,1.142094e-02,3.267935e-02,6.066632e-02,9.636049e-02,1.418783e-01,
-2.071675e-01,2.971476e-01,4.154746e-01,5.662385e-01,7.709965e-01,1.055354e+00,1.431069e+00,
-1.911579e+00,2.550442e+00,3.399081e+00,4.487682e+00,5.854588e+00,7.558283e+00,9.647155e+00,
-1.215838e+01,1.502709e+01,1.826833e+01,2.189443e+01,2.579202e+01,2.995976e+01,3.441746e+01,
-3.918699e+01,4.427325e+01,4.955437e+01,5.499373e+01,6.035267e+01,6.544206e+01,7.021030e+01,
-7.460021e+01,7.862768e+01,8.232331e+01,8.572679e+01,8.886164e+01,9.177863e+01,9.448690e+01,
-9.703032e+01,9.942442e+01,1.016911e+02,1.038565e+02,1.059344e+02,1.079422e+02,1.098987e+02,
-1.118190e+02,1.137160e+02,1.156037e+02,1.174956e+02,1.194037e+02,1.213395e+02,1.233134e+02,
-1.253353e+02,1.274148e+02,1.295607e+02,1.317816e+02,1.340858e+02,1.364815e+02,1.389768e+02,
-1.415800e+02,1.442993e+02,1.471432e+02,1.501202e+02,1.532394e+02,1.565095e+02,1.599395e+02,
-1.635387e+02,1.673159e+02,1.712805e+02,1.754412e+02,1.798071e+02,1.843868e+02,1.891890e+02,
-1.942219e+02,1.994937e+02,2.050125e+02,2.107860e+02,2.168218e+02,2.231274e+02,2.297101e+02,
-2.365773e+02,2.437362e+02,2.511944e+02,2.589596e+02,2.670399e+02,2.754442e+02,2.841827e+02,
-2.932671e+02,3.027119e+02,3.125358e+02,3.227634e+02,3.334288e+02,3.445781e+02,3.563001e+02,
-3.687193e+02,3.819927e+02,3.963408e+02,4.120653e+02,4.295658e+02,4.493503e+02,4.720319e+02,
-4.983109e+02,5.289362e+02,5.646649e+02,6.062317e+02,6.543377e+02,7.096627e+02,7.728953e+02,
-8.447731e+02,9.261237e+02,1.017903e+03,1.121228e+03,1.237410e+03,1.367978e+03,1.514703e+03,
-1.679620e+03,1.865051e+03,2.073617e+03,2.308241e+03,2.572149e+03,2.868835e+03,3.202016e+03,
-3.575541e+03,3.993264e+03,4.458871e+03,4.975670e+03,5.546355e+03,6.172760e+03,6.855637e+03,
-7.594502e+03,8.387576e+03,9.231842e+03,1.012323e+04,1.105692e+04,1.202765e+04,1.303017e+04,
-1.405955e+04,1.511144e+04,1.618224e+04,1.726924e+04,1.837063e+04,1.948547e+04,2.061368e+04,
-2.175592e+04,2.291353e+04,2.408848e+04,2.528322e+04,2.650068e+04,2.774417e+04,2.901736e+04,
-3.032420e+04,3.166894e+04,3.305604e+04,3.449021e+04,3.597630e+04,3.751935e+04,3.912456e+04,
-4.079722e+04,4.254275e+04,4.436670e+04,4.627470e+04,4.827254e+04,5.036614e+04,5.256157e+04,
-5.486506e+04,5.728307e+04,5.982226e+04,6.248955e+04,6.529208e+04,6.823731e+04,7.133295e+04,
-7.458700e+04,7.800776e+04,8.160383e+04,8.538411e+04,8.935781e+04,9.353444e+04,9.792387e+04,
-1.025363e+05,1.073824e+05,1.124731e+05,1.178200e+05,1.234350e+05,1.293307e+05,1.355202e+05,
-1.420175e+05,1.488372e+05,1.559945e+05,1.635058e+05,1.713882e+05,1.796600e+05,1.883405e+05,
-1.974500e+05,2.070104e+05,2.170444e+05,2.275766e+05,2.386327e+05,2.502401e+05,2.624280e+05,
-2.752272e+05,2.886704e+05,3.027922e+05,3.176294e+05,3.332210e+05,3.496083e+05,3.668349e+05,
-3.849474e+05,4.039947e+05,4.240291e+05,4.451057e+05,4.672829e+05,4.906228e+05,5.151909e+05,
-5.410568e+05,5.682940e+05,5.969807e+05,6.271995e+05,6.590381e+05,6.925891e+05,7.279509e+05,
-7.652278e+05,8.045300e+05,8.459747e+05,8.896858e+05,9.357945e+05,9.844402e+05,1.035770e+06,
-1.089941e+06,1.147119e+06,1.207478e+06,1.271207e+06,1.338501e+06,1.409570e+06,1.484636e+06,
-1.563934e+06,1.647715e+06,1.736241e+06,1.829794e+06,1.928671e+06,2.033188e+06,2.143679e+06,
-2.260499e+06,2.384024e+06,2.514653e+06,2.652811e+06,2.798946e+06,2.953535e+06,3.117084e+06,
-3.290130e+06,3.473241e+06,3.667023e+06,3.872116e+06,4.089200e+06,4.318999e+06,4.562278e+06,
-4.819852e+06,5.092583e+06,5.381389e+06,5.687242e+06,6.011176e+06,6.354288e+06,6.717741e+06,
-7.102774e+06,7.510697e+06,7.942907e+06,8.400882e+06,8.886195e+06,9.400517e+06,9.945620e+06,
-1.052339e+07,1.113582e+07,1.178504e+07,1.247331e+07,1.320302e+07,1.397672e+07,1.479713e+07,
-1.566710e+07,1.658970e+07,1.756817e+07,1.860597e+07,1.970674e+07,2.087440e+07,2.211307e+07,
-2.342715e+07,2.482132e+07,2.630054e+07,2.787009e+07,2.953558e+07,3.130298e+07,3.317862e+07,
-3.516924e+07,3.728200e+07,3.952452e+07,4.190489e+07,4.443171e+07,4.711414e+07,4.996191e+07
-};
-  static const G4double* P0[nN]=
-                           {P00,P01,P02,P03,P04,P05,P06,P07,P08,P09,P010,P011,P012,P013};
-  static const G4double* P1[nN]=
-                           {P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P110,P111,P112,P113};
-  static const G4double* P2[nN]=
-                           {P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,P210,P211,P212,P213};
-  // --------------------------------
-  G4int r=-1;                          // Low channel for J-functions
-  if(a<=.9999 || a>238.49)             // Plutonium 244 is forbidden
-  {
-    G4cout<<"***G4QTauNuclearCrossSection::GetFunctions:A="<<a<<".No CS returned"<<G4endl;
-    return r;
-  }
-  G4int iA=static_cast<G4int>(a+.499); // Make the round integer of the atomic number
-  G4double ai=iA;
-  if(a!=ai) a=ai;
-  for(G4int i=0; i<nN; i++)
-  {
-    if(std::fabs(a-A[i])<.0005)        // A coincides with one of basic A's -> get from Tab
-    {
-      for(G4int k=0; k<nE; k++)
-      {
-        x[k]=P0[i][k];                 // J0
-        y[k]=P1[i][k];                 // J1
-        z[k]=P2[i][k];                 // J2
-   }
-      r=L[i];                          // Low channel for the J-functions
-    }
-    if(r<0)                            // Not the basic A-value -> must be calculated
-    {
-      G4int k=0;                       // !! To be good for different compilers !!
-      for(k=1; k<nN; k++)if(a<A[k]) break;// Find the top basic A-value
-      if(k<1) k=1;                     // Extrapolation from the first bin (D)
-      if(k>=nN) k=nN-1;                // Extrapolation from the last bin (U)
-      G4int     k1=k-1;
-      G4double  xi=A[k1];
-      G4double   b=(a-xi)/(A[k]-xi);
-      for(G4int m=0; m<nE; m++)
-      {
-        G4double xi=P0[k1][m];
-        x[m]=xi+(P0[k][m]-xi)*b;
-        G4double yi=P1[k1][m];
-        y[m]=yi+(P1[k][m]-yi)*b;
-        G4double zi=P2[k1][m];
-        z[m]=zi+(P2[k][m]-zi)*b;
-      }
-      r=L[k];
-      if(L[k1]<r) r=L[k1];
- }
-  }
-  return r;
-}
-
-G4double G4QTauNuclearCrossSection::GetExchangeEnergy()
-{
-  // @@ All constants are copy of that from GetCrossSection funct. => Make them general.
-  static const G4int nE=336; // !!  If change this, change it in GetFunctions() (*.hh) !!
-  static const G4int mL=nE-1;
-  static const G4double EMi=2.0612;          // Minimum Energy
-  static const G4double EMa=50000.;          // Maximum Energy
-  static const G4double lEMi=std::log(EMi);       // Minimum logarithmic Energy
-  static const G4double lEMa=std::log(EMa);       // Maximum logarithmic Energy
-  static const G4double dlnE=(lEMa-lEMi)/mL; // Logarithmic step in Energy
-  static const G4double mtu=1777.;       // Mass of muon in MeV
-  static const G4double lmtu=std::log(mtu);       // Log of muon mass
-  G4double phLE=0.;                     // Prototype of the log(nu=E_gamma)
-  G4double Y[nE];                       // Prepare the array for randomization
-#ifdef debug
-  G4cout<<"G4QTauNuclCrossSect::GetExchanEn: B="<<lastF<<",l="<<lastL<<",1="<<lastJ1[lastL]
-        <<",2="<<lastJ2[lastL]<<",3="<<lastJ3[lastL]<<",S="<<lastSig<<",E="<<lastE<<G4endl;
-#endif
-  G4double lastLE=lastG+lmtu;           // recover log(eE) from the gamma (lastG)
-  G4double dlg1=lastG+lastG-1.;
-  G4double lgoe=lastG/lastE;
-  for(G4int i=lastF; i<=lastL; i++)
-                            Y[i]=dlg1*lastJ1[i]-lgoe*(lastJ2[i]+lastJ2[i]-lastJ3[i]/lastE);
-  G4double ris=lastSig*G4UniformRand(); // Sig can be > Y[lastL=mL], then it is funct. reg.
-#ifdef debug
-  G4cout<<"G4QTauNuclearCrossSection::GetExchangeEnergy: "<<ris<<",Y="<<Y[lastL]<<G4endl;
-#endif
-  if(ris<Y[lastL])                      // Search in the table
-  {
-    G4int j=lastF;
-    G4double Yj=Y[j];                   // It mast be 0 (some times just very small)
-    while (ris>Yj && j<lastL)           // Associative search
-    {
-      j++;
-      Yj=Y[j];                          // High value
-    }
-    G4int j1=j-1;
-    G4double Yi=Y[j1];                  // Low value
-    phLE=lEMi+(j1+(ris-Yi)/(Yj-Yi))*dlnE;
-#ifdef debug
- G4cout<<"G4QTauNuclearCS::E="<<phLE<<",l="<<lEMi<<",j="<<j<<",ris="<<ris<<",Yi="<<Yi
-          <<",Y="<<Yj<<G4endl;
-#endif
-  }
-  else                                  // Search with the function
-  {
-    if(lastL<mL)
-      G4cerr<<"**G4QTauNucCS::GetExEn: L="<<lastL<<",S="<<lastSig<<",Y="<<Y[lastL]<<G4endl;
-    G4double f=(ris-Y[lastL])/lastH;    // ScaledResidualValue of the cross-sec. integral
-#ifdef pdebug
-    G4cout<<"G4QTauNucCS::GetExEn:HighEnergy f="<<f<<", ris="<<ris<<", lH="<<lastH<<G4endl;
-#endif
-    phLE=SolveTheEquation(f);           // Solve equation to find theLog(phE) (comp lastLE)
-#ifdef pdebug
-    G4cout<<"G4QTauNuclearCrossSection::GetExchangeEnergy: HighEnergy lphE="<<phLE<<G4endl;
-#endif
-  }
-  if(phLE>lastLE)
-  {
-    G4cerr<<"**G4QTauNuclearCS::GetExEnergy: N="<<lastN<<",Z="<<lastZ<<",lpE"<<phLE<<">leE"
-          <<lastLE<<",Sig="<<lastSig<<",rndSig="<<ris<<",Beg="<<lastF<<",End="<<lastL
-          <<",Y="<<Y[lastL]<<G4endl;
-    if(lastLE<7.2) phLE=std::log(std::exp(lastLE)-mtu);
-    else phLE=7.;
-  }
-  return std::exp(phLE);
-}
-
-G4double G4QTauNuclearCrossSection::SolveTheEquation(G4double f)
-{
-  // This parameters must correspond to the G4PhotonuclearCrossSec::GetCrossSec parameters
-  static const G4double shd=1.0734;                    // HE PomShadowing(D)
-  static const G4double poc=0.0375;                    // HE Pomeron coefficient
-  static const G4double pos=16.5;                      // HE Pomeron shift
-  static const G4double reg=.11;                       // HE Reggeon slope
-  static const G4double EMa=50000.;                    // Maximum Energy
-  static const G4double mtu=1777.;                     // Mass of muon in MeV
-  static const G4double lmtu=std::log(mtu);                 // Log of muon mass
-  static const G4double z=std::log(EMa);                    // Initial argument
-  static const G4double p=poc*(z-pos)+shd*std::exp(-reg*z); // CrossX on theHighTabEdge
-  static const G4int    imax=27;   // Not more than "imax" steps to find the solution
-  static const G4double eps=0.001; // Accuracy which satisfies the search
-  G4double lastLE=lastG+lmtu;                 // recover log(eE) from the gamma (lastG)
-  G4double topLim=lastLE-.001;                // maximum log(phE) for equivalent photons
-  G4double rE=EMa/std::exp(lastLE);                // r=EMa/Eel to make the firs guess
-  G4double x=z+f/p/(lastG*(2.-rE*(2.-rE))-1.);// First guess (the first step from the edge)
-#ifdef pdebug
-  G4cout<<"G4QTauNucCS::SolveTheEq: e="<<eps<<",f="<<f<<",z="<<z<<",p="<<p<<",lastG="
-        <<lastG<<",x="<<x<<G4endl;
-#endif
-  if(x>topLim) x=topLim;
-  for(G4int i=0; i<imax; i++)
-  {
-    G4double fx=Fun(x);
-    G4double df=DFun(x);
-    G4double d=(f-fx)/df;
-    x=x+d;
-#ifdef pdebug
-    G4cout<<"G4QTauNCS::SolveEq:i="<<i<<",d="<<d<<",x="<<x<<",fx="<<fx<<",df="<<df<<G4endl;
-#endif
-    if(x>=lastLE)
-    {
-      G4cerr<<"*G4QTauNCS::SolveTheEq:*Correction*"<<i<<",d="<<d<<",x="<<x<<">lE="<<lastLE
-            <<",f="<<f<<",fx="<<fx<<",df="<<df<<",A(Z="<<lastZ<<",N="<<lastN<<")"<<G4endl;
-      x=topLim;
-      if(i)G4Exception("G4QTauNuclearCrossSect::SolveTheEq()","009",FatalException,"E>eE");
-    }
-    if(std::fabs(d)<eps) break;
-    if(i+1>=imax) G4cerr<<"G4QTauNucCS::SolveTheE:"<<i+2<<">"<<imax<<"->Use bigMax ln(eE)="
-                        <<lastLE<<",Z="<<lastZ<<", N="<<lastN<<G4endl;
-  }
-  return x;
-}
-
-// Randomize Q2 for the scattered muon when nu is already known
-G4double G4QTauNuclearCrossSection::GetExchangeQ2(G4double nu)
-{
-  static const G4double mtu=1777.;      // Mass of muon in MeV
-  static const G4double mtu2=mtu*mtu;   // Squared Mass of muon in MeV
-  G4double y=nu/lastE;                  // Part of energy carried by the equivalent pfoton
-  if(y>=1.-1./(lastG+lastG)) return 0.; // The region where the method does not work
-  G4double y2=y*y;                      // Squared photonic part of energy
-  G4double ye=1.-y;                     // Part of energy carried by the secondary tau-lept
-  G4double Qi2=mtu2*y2/ye;              // Minimum Q2
-  G4double Qa2=4*lastE*lastE*ye;        // Maximum Q2
-  G4double iar=Qi2/Qa2;                 // Q2min/Q2max ratio
-  G4double Dy=ye+.5*y2;                 // D(y) function
-  G4double Py=ye/Dy;                    // P(y) function
-  G4double ePy=1.-std::exp(Py);              // 1-exp(P(y)) part
-  G4double Uy=Py*(1.-iar);              // U(y) function
-  G4double Fy=(ye+ye)*(1.+ye)*iar/y2;   // F(y) function
-  G4double fr=iar/(1.-ePy*iar);         // Q-fraction
-  if(Fy<=-fr)
-  {
-#ifdef edebug
-    G4cerr<<"***G4QTauNuclCS::GetExchQ2: Fy="<<Fy<<"+fr="<<fr<<" <0"<<",iar="<<iar<<G4endl;
-#endif
-    return 0.;
-  }    
-  G4double LyQa2=std::log(Fy+fr);            // L(y,Q2max) function
-  G4bool cond=true;
-  G4int maxTry=3;
-  G4int cntTry=0;
-  G4double Q2=Qi2;
-  while(cond&&cntTry<maxTry)            // The loop to avoid x>1.
-  {
-    G4double R=G4UniformRand();         // Random number (0,1)
-    Q2=Qi2*(ePy+1./(std::exp(R*LyQa2-(1.-R)*Uy)-Fy));
-    cntTry++;
-    cond = Q2>1878.*nu;
-  }
-  if(Q2<Qi2)
-  {
-#ifdef edebug
-    G4cerr<<"*G4QTauNuclearCrossSection::GetExchangeQ2: Q2="<<Q2<<" < Q2min="<<Qi2<<G4endl;
-#endif
-    return Qi2;
-  }  
-  if(Q2>Qa2)
-  {
-#ifdef edebug
-    G4cerr<<"*G4QTauNuclearCrossSection::GetExchangeQ2: Q2="<<Q2<<" > Q2max="<<Qi2<<G4endl;
-#endif
-    return Qa2;
-  }  
-  return Q2;
-}
-
-// This class can provide only virtual exchange photons for all nu's and Q2's
-G4int G4QTauNuclearCrossSection::GetExchangePDGCode() {return 22;}
-
-G4double G4QTauNuclearCrossSection::GetVirtualFactor(G4double nu, G4double Q2)
-{
-  static const G4double dM=938.27+939.57;// Mean double nucleon mass = m_n+m_p (no binding)
-  static const G4double Q0=843.;         // Coefficient of the dipole nucleonic form-factor
-  static const G4double Q02=Q0*Q0;       // Squared coefficient of theDipoleNuclFormFactor
-  static const G4double blK0=std::log(185.);  // Coefficient of the b-function
-  static const G4double bp=0.85;         // Power of the b-function
-  static const G4double clK0=std::log(1390.); // Coefficient of the c-function
-  static const G4double cp=3.;           // Power of the c-function
-  //G4double x=Q2/dM/nu;                 // Direct x definition
-  G4double K=nu-Q2/dM;                   // K=nu*(1-x)
-  if(K<0.)
-  {
-#ifdef edebug
-    G4cerr<<"**G4QTauNuclCS::GetVirtFact:K="<<K<<",nu="<<nu<<",Q2="<<Q2<<",d="<<dM<<G4endl;
-#endif
-    return 0.;
-  }
-  G4double lK=std::log(K);               // ln(K)
-  G4double x=1.-K/nu;                    // This definitin saves one div.
-  G4double GD=1.+Q2/Q02;                 // Reversed nucleonic form-factor
-  G4double b=std::exp(bp*(lK-blK0));     // b-factor
-  G4double c=std::exp(cp*(lK-clK0));     // c-factor
-  G4double r=.5*std::log(Q2+nu*nu)-lK;   // r=.5*log((Q^2+nu^2)/K^2)
-  G4double ef=std::exp(r*(b-c*r*r));     // exponential factor
-  return (1.-x)*ef/GD/GD;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QuasiFreeRatios.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QuasiFreeRatios.cc	(revision 1197)
+++ 	(revision )
@@ -1,1133 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4QuasiFreeRatios.cc,v 1.21 2009/04/09 08:25:46 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// G4 Physics class: G4QuasiFreeRatios for N+A elastic cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-01
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 15-Oct-06
-// 
-//=======================================================================
-// Short description: Provides percentage of quasi-free and quasi-elastic
-// reactions in the inelastic reactions.
-// ----------------------------------------------------------------------
-
-//#define debug
-//#define pdebug
-//#define ppdebug
-//#define nandebug
-
-#include "G4QuasiFreeRatios.hh"
-
-// initialisation of statics
-std::vector<G4double*> G4QuasiFreeRatios::vT; // Vector of pointers to LinTable in C++ heap
-std::vector<G4double*> G4QuasiFreeRatios::vL; // Vector of pointers to LogTable in C++ heap
-std::vector<std::pair<G4double,G4double>*> G4QuasiFreeRatios::vX; // ETPointers to LogTable
-
-G4QuasiFreeRatios::G4QuasiFreeRatios()
-{
-#ifdef pdebug
-  G4cout<<"***^^^*** G4QuasiFreeRatios singletone is created ***^^^***"<<G4endl;
-#endif
-}
-
-G4QuasiFreeRatios::~G4QuasiFreeRatios()
-{
-  std::vector<G4double*>::iterator pos;
-  for(pos=vT.begin(); pos<vT.end(); pos++)
-  { delete [] *pos; }
-  vT.clear();
-  for(pos=vL.begin(); pos<vL.end(); pos++)
-  { delete [] *pos; }
-  vL.clear();
-
-  std::vector<std::pair<G4double,G4double>*>::iterator pos2;
-  for(pos2=vX.begin(); pos2<vX.end(); pos2++)
-  { delete [] *pos2; }
-  vX.clear();
-}
-
-// Returns Pointer to the G4VQCrossSection class
-G4QuasiFreeRatios* G4QuasiFreeRatios::GetPointer()
-{
-  static G4QuasiFreeRatios theRatios;   // *** Static body of the QEl Cross Section ***
-  return &theRatios;
-}
-
-// Calculation of pair(QuasiFree/Inelastic,QuasiElastic/QuasiFree)
-std::pair<G4double,G4double> G4QuasiFreeRatios::GetRatios(G4double pIU, G4int pPDG,
-                                                           G4int tgZ,    G4int tgN)
-{
-#ifdef pdebug
-  G4cout<<">>>IN>>>G4QFRat::GetQF:P="<<pIU<<",pPDG="<<pPDG<<",Z="<<tgZ<<",N="<<tgN<<G4endl;
-#endif
-  G4double R=0.;
-  G4double QF2In=1.;                        // Prototype of QuasiFree/Inel ratio for hN_tot
-  G4int tgA=tgZ+tgN;
-  if(tgA<2) return std::make_pair(QF2In,R); // No quasi-elastic on the only nucleon
-  std::pair<G4double,G4double> ElTot=GetElTot(pIU, pPDG, tgZ, tgN); // mean hN El&Tot(IU)
-  //if( ( (pPDG>999 && pIU<227.) || pIU<27.) && tgA>1) R=1.; // @@ TMP to accelerate @lowE
-  if(pPDG>999 && pIU<227. && tgZ+tgN>1) R=1.;                // To accelerate @lowE
-  else if(ElTot.second>0.)
-  {
-    R=ElTot.first/ElTot.second;             // El/Total ratio (does not depend on units
-    QF2In=GetQF2IN_Ratio(ElTot.second/millibarn, tgZ+tgN);   // QuasiFree/Inelastic ratio
-  }
-#ifdef pdebug
-  G4cout<<">>>OUT>>>G4QuasiFreeRatio::GetQF2IN_Ratio: QF2In="<<QF2In<<", R="<<R<<G4endl;
-#endif
-  return std::make_pair(QF2In,R);
-}
-
-// Calculatio QasiFree/Inelastic Ratio as a function of total hN cross-section (mb) and A
-G4double G4QuasiFreeRatios::GetQF2IN_Ratio(G4double s, G4int A)
-{
-  static const G4int    nps=150;        // Number of steps in the R(s) LinTable
-  static const G4int    mps=nps+1;      // Number of elements in the R(s) LinTable
-  static const G4double sma=150.;       // The first LinTabEl(s=0)=1., s>sma -> logTab
-  static const G4double ds=sma/nps;     // Step of the linear Table
-  static const G4int    nls=100;        // Number of steps in the R(lns) logTable
-  static const G4int    mls=nls+1;      // Number of elements in the R(lns) logTable
-  static const G4double lsi=5.;         // The min ln(s) logTabEl(s=148.4 < sma=150.)
-  static const G4double lsa=9.;         // The max ln(s) logTabEl(s=148.4 - 8103. mb)
-  static const G4double mi=std::exp(lsi);// The min s of logTabEl(~ 148.4 mb)
-  static const G4double ms=std::exp(lsa);// The max s of logTabEl(~ 8103. mb)
-  static const G4double dl=(lsa-lsi)/nls;// Step of the logarithmic Table
-  static const G4double edl=std::exp(dl);// Multiplication step of the logarithmic Table
-  static const G4double toler=.01;      // The tolarence mb defining the same cross-section
-  static G4double lastS=0.;             // The last sigma value for which R was calculated
-  static G4double lastR=0.;             // The last ratio R which was calculated
-  // Local Associative Data Base:
-  static std::vector<G4int>     vA;     // Vector of calculated A
-  static std::vector<G4double>  vH;     // Vector of max s initialized in the LinTable
-  static std::vector<G4int>     vN;     // Vector of topBin number initialized in LinTable
-  static std::vector<G4double>  vM;     // Vector of rel max ln(s) initialized in LogTable
-  static std::vector<G4int>     vK;     // Vector of topBin number initialized in LogTable
-  // Last values of the Associative Data Base:
-  static G4int     lastA=0;             // theLast of calculated A
-  static G4double  lastH=0.;            // theLast of max s initialized in the LinTable
-  static G4int     lastN=0;             // theLast of topBin number initialized in LinTable
-  static G4double  lastM=0.;            // theLast of rel max ln(s) initialized in LogTable
-  static G4int     lastK=0;             // theLast of topBin number initialized in LogTable
-  static G4double* lastT=0;             // theLast of pointer to LinTable in the C++ heap
-  static G4double* lastL=0;             // theLast of pointer to LogTable in the C++ heap
-  // LogTable is created only if necessary. The ratio R(s>8100 mb) = 0 for any nuclei
-#ifdef pdebug
-  G4cout<<"+++G4QuasiFreeRatio::GetQF2IN_Ratio:A="<<A<<", s="<<s<<G4endl;
-#endif
-  if(s<toler || A<2) return 1.;
-  if(s>ms) return 0.;
-  if(A>238)
-  {
-    G4cout<<"-Warning-G4QuasiFreeRatio::GetQF2IN_Ratio:A="<<A<<">238, return zero"<<G4endl;
-    return 0.;
-  }
-  G4int nDB=vA.size();                  // A number of nuclei already initialized in AMDB
-  //  if(nDB && lastA==A && std::fabs(s-lastS)<toler) return lastR;
-  if(nDB && lastA==A && s==lastS) return lastR;  // VI do not use tolerance
-  G4bool found=false;
-  G4int i=-1;
-  if(nDB) for (i=0; i<nDB; i++) if(A==vA[i]) // Sirch for this A in AMDB
-  {
-    found=true;                         // The A value is found
-    break;
-  }
-#ifdef pdebug
-  G4cout<<"+++G4QuasiFreeRatio::GetQF2IN_Ratio: nDB="<<nDB<<", found="<<found<<G4endl;
-#endif
-  if(!nDB || !found)                    // Create new line in the AMDB
-  {
-    lastA = A;
-#ifdef pdebug
-    G4cout<<"G4QuasiFreeRatios::GetQF2IN_Ratio: NewT, A="<<A<<", nDB="<<nDB<<G4endl;
-#endif
-    lastT = new G4double[mps];          // Create the linear Table
-    lastN = static_cast<int>(s/ds)+1;   // MaxBin to be initialized
-    if(lastN>nps)
-    {
-      lastN=nps;
-      lastH=sma;
-    }
-    else lastH = lastN*ds;              // Calculate max initialized s for LinTab
-    G4double sv=0;
-    lastT[0]=1.;
-    for(G4int j=1; j<=lastN; j++)       // Calculate LogTab values
-    {
-      sv+=ds;
-      lastT[j]=CalcQF2IN_Ratio(sv,A);
-    }
-    lastL=new G4double[mls];          // Create the logarithmic Table
-    if(s>sma)                           // Initialize the logarithmic Table
-    {
-#ifdef pdebug
-      G4cout<<"G4QuasiFreeRatios::GetQF2IN_Ratio: NewL, A="<<A<<", nDB="<<nDB<<G4endl;
-#endif
-      G4double ls=std::log(s);
-      lastK = static_cast<int>((ls-lsi)/dl)+1; // MaxBin to be initialized in LogTaB
-      if(lastK>nls)
-      {
-        lastK=nls;
-        lastM=lsa-lsi;
-      }
-      else lastM = lastK*dl;            // Calculate max initialized ln(s)-lsi for LogTab
-      sv=mi;
-      for(G4int j=0; j<=lastK; j++)     // Calculate LogTab values
-      {
-        lastL[j]=CalcQF2IN_Ratio(sv,A);
-        if(j!=lastK) sv*=edl;
-      }
-    }
-    else                                // LogTab is not initialized
-    {
-      lastK = 0;
-      lastM = 0.;
-    }
-    i++;                                // Make a new record to AMDB and position on it
-    vA.push_back(lastA);
-    vH.push_back(lastH);
-    vN.push_back(lastN);
-    vM.push_back(lastM);
-    vK.push_back(lastK);
-    vT.push_back(lastT);
-    vL.push_back(lastL);
-  }
-  else                                  // The A value was found in AMDB
-  {
-    lastA=vA[i];
-    lastH=vH[i];
-    lastN=vN[i];
-    lastM=vM[i];
-    lastK=vK[i];
-    lastT=vT[i];
-    lastL=vL[i];
-#ifdef pdebug
-    G4cout<<"G4QuasiFreeRatios::GetQF2IN_Ratio: Found, s="<<s<<", lastM="<<lastM<<G4endl;
-#endif
-    if(s>lastM)                          // At least LinTab must be updated
-    {
-      G4int nextN=lastN+1;               // The next bin to be initialized
-#ifdef pdebug
-      G4cout<<"G4QuasiFreeRatios::GetQF2IN_Ratio: lastN="<<lastN<<" ?< nps="<<nps<<G4endl;
-#endif
-      if(lastN<nps)
-      {
-        lastN = static_cast<int>(s/ds)+1;// MaxBin to be initialized
-        if(lastN>nps)
-        {
-          lastN=nps;
-          lastH=sma;
-        }
-        else lastH = lastN*ds;           // Calculate max initialized s for LinTab
-        G4double sv=lastM;
-        for(G4int j=nextN; j<=lastN; j++)// Calculate LogTab values
-        {
-          sv+=ds;
-          lastT[j]=CalcQF2IN_Ratio(sv,A);
-        }
-#ifdef pdebug
-        G4cout<<"G4QuasiFreeRatios::GetQF2IN_Ratio: End of LinTab update"<<G4endl;
-#endif
-      } // End of LinTab update
-#ifdef pdebug
-      G4cout<<"G4QFRatios::GetQF2IN_Ratio: lN="<<lastN<<", nN="<<nextN<<", i="<<i<<G4endl;
-#endif
-      if(lastN>=nextN)
-      {
-        vH[i]=lastH;
-        vN[i]=lastN;
-      }
-      G4int nextK=lastK+1;
-      if(!lastK) nextK=0;
-#ifdef pdebug
-      G4cout<<"G4QFRat::GetQF2IN_Ratio: sma="<<sma<<", lastK="<<lastK<<" < "<<nls<<G4endl;
-#endif
-      if(s>sma && lastK<nls)             // LogTab must be updated
-      {
-        G4double sv=std::exp(lastM+lsi); // Define starting poit (lastM will be changed)
-        G4double ls=std::log(s);
-        lastK = static_cast<int>((ls-lsi)/dl)+1; // MaxBin to be initialized in LogTaB
-        if(lastK>nls)
-        {
-          lastK=nls;
-          lastM=lsa-lsi;
-        }
-        else lastM = lastK*dl;           // Calculate max initialized ln(s)-lsi for LogTab
-#ifdef pdebug
-        G4cout<<"G4QFRat::GetQF2IN_Ratio: nK="<<nextK<<", lK="<<lastK<<", sv="<<sv<<G4endl;
-#endif
-        for(G4int j=nextK; j<=lastK; j++)// Calculate LogTab values
-        {
-          sv*=edl;
-#ifdef pdebug
-          G4cout<<"G4QFRat::GetQF2IN_Ratio: j="<<j<<", sv="<<sv<<", A="<<A<<G4endl;
-#endif
-          lastL[j]=CalcQF2IN_Ratio(sv,A);
-        }
-#ifdef pdebug
-        G4cout<<"G4QuasiFreeRatios::GetQF2IN_Ratio: End of LinTab update"<<G4endl;
-#endif
-      } // End of LogTab update
-#ifdef pdebug
-      G4cout<<"G4QFRatios::GetQF2IN_Ratio: lK="<<lastK<<", nK="<<nextK<<", i="<<i<<G4endl;
-#endif
-      if(lastK>=nextK)
-      {
-        vM[i]=lastM;
-        vK[i]=lastK;
-      }
-    }
-  }
-#ifdef pdebug
-  G4cout<<"G4QuasiFreeRatios::GetQF2IN_Ratio: BeforeTab s="<<s<<", sma="<<sma<<G4endl;
-#endif
-  // Now one can use tabeles to calculate the value
-  if(s<sma)                             // Use linear table
-  {
-    G4int n=static_cast<int>(s/ds);     // Low edge number of the bin
-    G4double d=s-n*ds;                  // Linear shift
-    G4double v=lastT[n];                // Base
-    lastR=v+d*(lastT[n+1]-v)/ds;        // Result
-  }
-  else                                  // Use log table
-  {
-    G4double ls=std::log(s)-lsi;        // ln(s)-l_min
-    G4int n=static_cast<int>(ls/dl);    // Low edge number of the bin
-    G4double d=ls-n*dl;                 // Log shift
-    G4double v=lastL[n];                // Base
-    lastR=v+d*(lastL[n+1]-v)/dl;        // Result
-  }
-  if(lastR<0.) lastR=0.;
-  if(lastR>1.) lastR=1.;
-#ifdef pdebug
-  G4cout<<"G4QuasiFreeRatios::GetQF2IN_Ratio: BeforeRet lastR="<<lastR<<G4endl;
-#endif
-  return lastR;
-} // End of CalcQF2IN_Ratio
-
-// Calculatio QasiFree/Inelastic Ratio as a function of total hN cross-section and A
-G4double G4QuasiFreeRatios::CalcQF2IN_Ratio(G4double s, G4int A)
-{
-  static const G4double C=1.246;
-  G4double s2=s*s;
-  G4double s4=s2*s2;
-  G4double ss=std::sqrt(std::sqrt(s));
-  G4double P=7.48e-5*s2/(1.+8.77e12/s4/s4/s2);
-  G4double E=.2644+.016/(1.+std::exp((29.54-s)/2.49));
-  G4double F=ss*.1526*std::exp(-s2*ss*.0000859);
-  return C*std::exp(-E*std::pow(G4double(A-1.),F))/std::pow(G4double(A),P);
-} // End of CalcQF2IN_Ratio
-
-// Calculatio pair(hN_el,hN_tot) (mb): p in GeV/c, index(PDG,F) (see FetchElTot)
-std::pair<G4double,G4double> G4QuasiFreeRatios::CalcElTot(G4double p, G4int I)
-{
-  // ---------> Each parameter set can have not more than nPoints=128 parameters
-  static const G4double lmi=3.5;       // min of (lnP-lmi)^2 parabola
-  static const G4double pbe=.0557;     // elastic (lnP-lmi)^2 parabola coefficient
-  static const G4double pbt=.3;        // total (lnP-lmi)^2 parabola coefficient
-  static const G4double pmi=.1;        // Below that fast LE calculation is made
-  static const G4double pma=1000.;     // Above that fast HE calculation is made
-  // ======================================================================================
-  G4double El=0.;                      // prototype of the elastic hN cross-section
-  G4double To=0.;                      // prototype of the total hN cross-section
-  if(p<=0.)
-  {
-    G4cout<<"-Warning-G4QuasiFreeRatios::CalcElTot: p="<<p<<" is zero or negative"<<G4endl;
-    return std::make_pair(El,To);
-  }
-  if     (!I)                          // pp/nn
-  {
-#ifdef debug
-    G4cout<<"G4QuasiFreeR::CalcElTot:I=0, p="<<p<<", pmi="<<pmi<<", pma="<<pma<<G4endl;
-#endif
-    if(p<pmi)
-    {
-      G4double p2=p*p;
-      El=1./(.00012+p2*.2);
-      To=El;
-#ifdef debug
-      G4cout<<"G4QuasiFreeR::CalcElTot:I=0i, El="<<El<<", To="<<To<<", p2="<<p2<<G4endl;
-#endif
-    }
-    else if(p>pma)
-    {
-      G4double lp=std::log(p)-lmi;
-      G4double lp2=lp*lp;
-      El=pbe*lp2+6.72;
-      To=pbt*lp2+38.2;
-#ifdef debug
-      G4cout<<"G4QuasiFreeR::CalcElTot:I=0a, El="<<El<<", To="<<To<<", lp2="<<lp2<<G4endl;
-#endif
-    }
-    else
-    {
-      G4double p2=p*p;
-      G4double LE=1./(.00012+p2*.2);
-      G4double lp=std::log(p)-lmi;
-      G4double lp2=lp*lp;
-      G4double rp2=1./p2;
-      El=LE+(pbe*lp2+6.72+32.6/p)/(1.+rp2/p);
-      To=LE+(pbt*lp2+38.2+52.7*rp2)/(1.+2.72*rp2*rp2);
-#ifdef debug
-      G4cout<<"G4QuasiFreeR::CalcElTot:0,E="<<El<<",T="<<To<<",s="<<p2<<",l="<<lp2<<G4endl;
-#endif
-    }
-  }
-  else if(I==1)                        // np/pn
-  {
-    if(p<pmi)
-    {
-      G4double p2=p*p;
-      El=1./(.00012+p2*(.051+.1*p2));
-      To=El;
-    }
-    else if(p>pma)
-    {
-      G4double lp=std::log(p)-lmi;
-      G4double lp2=lp*lp;
-      El=pbe*lp2+6.72;
-      To=pbt*lp2+38.2;
-    }
-    else
-    {
-      G4double p2=p*p;
-      G4double LE=1./(.00012+p2*(.051+.1*p2));
-      G4double lp=std::log(p)-lmi;
-      G4double lp2=lp*lp;
-      G4double rp2=1./p2;
-      El=LE+(pbe*lp2+6.72+30./p)/(1.+.49*rp2/p);
-      To=LE+(pbt*lp2+38.2)/(1.+.54*rp2*rp2);
-    }
-  }
-  else if(I==2)                        // pimp/pipn
-  {
-    G4double lp=std::log(p);
-    if(p<pmi)
-    {
-      G4double lr=lp+1.27;
-      El=1.53/(lr*lr+.0676);
-      To=El*3;
-    }
-    else if(p>pma)
-    {
-      G4double ld=lp-lmi;
-      G4double ld2=ld*ld;
-      G4double sp=std::sqrt(p);
-      El=pbe*ld2+2.4+7./sp;
-      To=pbt*ld2+22.3+12./sp;
-    }
-    else
-    {
-      G4double lr=lp+1.27;
-      G4double LE=1.53/(lr*lr+.0676);
-      G4double ld=lp-lmi;
-      G4double ld2=ld*ld;
-      G4double p2=p*p;
-      G4double p4=p2*p2;
-      G4double sp=std::sqrt(p);
-      G4double lm=lp+.36;
-      G4double md=lm*lm+.04;
-      G4double lh=lp-.017;
-      G4double hd=lh*lh+.0025;
-      El=LE+(pbe*ld2+2.4+7./sp)/(1.+.7/p4)+.6/md+.05/hd;
-      To=LE*3+(pbt*ld2+22.3+12./sp)/(1.+.4/p4)+1./md+.06/hd;
-    }
-  }
-  else if(I==3)                        // pipp/pimn
-  {
-    G4double lp=std::log(p);
-    if(p<pmi)
-    {
-      G4double lr=lp+1.27;
-      G4double lr2=lr*lr;
-      El=13./(lr2+lr2*lr2+.0676);
-      To=El;
-    }
-    else if(p>pma)
-    {
-      G4double ld=lp-lmi;
-      G4double ld2=ld*ld;
-      G4double sp=std::sqrt(p);
-      El=pbe*ld2+2.4+6./sp;
-      To=pbt*ld2+22.3+5./sp;
-    }
-    else
-    {
-      G4double lr=lp+1.27;
-      G4double lr2=lr*lr;
-      G4double LE=13./(lr2+lr2*lr2+.0676);
-      G4double ld=lp-lmi;
-      G4double ld2=ld*ld;
-      G4double p2=p*p;
-      G4double p4=p2*p2;
-      G4double sp=std::sqrt(p);
-      G4double lm=lp-.32;
-      G4double md=lm*lm+.0576;
-      El=LE+(pbe*ld2+2.4+6./sp)/(1.+3./p4)+.7/md;
-      To=LE+(pbt*ld2+22.3+5./sp)/(1.+1./p4)+.8/md;
-    }
-  }
-  else if(I==4)                        // Kmp/Kmn/K0p/K0n
-  {
-
-    if(p<pmi)
-    {
-      G4double psp=p*std::sqrt(p);
-      El=5.2/psp;
-      To=14./psp;
-    }
-    else if(p>pma)
-    {
-      G4double ld=std::log(p)-lmi;
-      G4double ld2=ld*ld;
-      El=pbe*ld2+2.23;
-      To=pbt*ld2+19.5;
-    }
-    else
-    {
-      G4double ld=std::log(p)-lmi;
-      G4double ld2=ld*ld;
-      G4double sp=std::sqrt(p);
-      G4double psp=p*sp;
-      G4double p2=p*p;
-      G4double p4=p2*p2;
-      G4double lm=p-.39;
-      G4double md=lm*lm+.000156;
-      G4double lh=p-1.;
-      G4double hd=lh*lh+.0156;
-      El=5.2/psp+(pbe*ld2+2.23)/(1.-.7/sp+.075/p4)+.004/md+.15/hd;
-      To=14./psp+(pbt*ld2+19.5)/(1.-.21/sp+.52/p4)+.006/md+.30/hd;
-    }
-  }
-  else if(I==5)                        // Kpp/Kpn/aKp/aKn
-  {
-    if(p<pmi)
-    {
-      G4double lr=p-.38;
-      G4double lm=p-1.;
-      G4double md=lm*lm+.372;   
-      El=.7/(lr*lr+.0676)+2./md;
-      To=El+.6/md;
-    }
-    else if(p>pma)
-    {
-      G4double ld=std::log(p)-lmi;
-      G4double ld2=ld*ld;
-      El=pbe*ld2+2.23;
-      To=pbt*ld2+19.5;
-    }
-    else
-    {
-      G4double ld=std::log(p)-lmi;
-      G4double ld2=ld*ld;
-      G4double lr=p-.38;
-      G4double LE=.7/(lr*lr+.0676);
-      G4double sp=std::sqrt(p);
-      G4double p2=p*p;
-      G4double p4=p2*p2;
-      G4double lm=p-1.;
-      G4double md=lm*lm+.372;
-      El=LE+(pbe*ld2+2.23)/(1.-.7/sp+.1/p4)+2./md;
-      To=LE+(pbt*ld2+19.5)/(1.+.46/sp+1.6/p4)+2.6/md;
-    }
-  }
-  else if(I==6)                        // hyperon-N
-  {
-    if(p<pmi)
-    {
-      G4double p2=p*p;
-      El=1./(.002+p2*(.12+p2));
-      To=El;
-    }
-    else if(p>pma)
-    {
-      G4double lp=std::log(p)-lmi;
-      G4double lp2=lp*lp;
-      G4double sp=std::sqrt(p);
-      El=(pbe*lp2+6.72)/(1.+2./sp);
-      To=(pbt*lp2+38.2+900./sp)/(1.+27./sp);
-    }
-    else
-    {
-      G4double p2=p*p;
-      G4double LE=1./(.002+p2*(.12+p2));
-      G4double lp=std::log(p)-lmi;
-      G4double lp2=lp*lp;
-      G4double p4=p2*p2;
-      G4double sp=std::sqrt(p);
-      El=LE+(pbe*lp2+6.72+99./p2)/(1.+2./sp+2./p4);
-      To=LE+(pbt*lp2+38.2+900./sp)/(1.+27./sp+3./p4);
-    }
-  }
-  else if(I==7)                        // antibaryon-N
-  {
-    if(p>pma)
-    {
-      G4double lp=std::log(p)-lmi;
-      G4double lp2=lp*lp;
-      El=pbe*lp2+6.72;
-      To=pbt*lp2+38.2;
-    }
-    else
-    {
-      G4double ye=std::pow(p,1.25);
-      G4double yt=std::pow(p,.35);
-      G4double lp=std::log(p)-lmi;
-      G4double lp2=lp*lp;
-      El=80./(ye+1.)+pbe*lp2+6.72;
-      To=(80./yt+.3)/yt+pbt*lp2+38.2;
-    }
-  }
-  else
-  {
-    G4cout<<"*Error*G4QuasiFreeRatios::CalcElTot:ind="<<I<<" is not defined (0-7)"<<G4endl;
-    G4Exception("G4QuasiFreeRatios::CalcElTot:","23",FatalException,"CHIPScrash");
-  }
-  if(El>To) El=To;
-  return std::make_pair(El,To);
-} // End of CalcElTot
-
-// Calculatio pair(hN_el,hN_tot)(mb): p in GeV/c, F=true -> N=proton, F=false -> N=neutron
-std::pair<G4double,G4double> G4QuasiFreeRatios::FetchElTot(G4double p, G4int PDG, G4bool F)
-{
-  static const G4int    nlp=300;         // Number of steps in the S(lnp) logTable(5% step)
-  static const G4int    mlp=nlp+1;       // Number of elements in the S(lnp) logTable
-  static const G4double lpi=-5.;         // The min ln(p) logTabEl(p=6.7 MeV/c - 22. TeV/c)
-  static const G4double lpa=10.;         // The max ln(p) logTabEl(p=6.7 MeV/c - 22. TeV/c)
-  static const G4double mi=std::exp(lpi);// The min p of logTabEl(~ 6.7 MeV/c)
-  static const G4double ma=std::exp(lpa);// The max p of logTabEl(~ 22. TeV)
-  static const G4double dl=(lpa-lpi)/nlp;// Step of the logarithmic Table
-  static const G4double edl=std::exp(dl);// Multiplication step of the logarithmic Table
-  //static const G4double toler=.001;      // Relative Tolarence defining "theSameMomentum"
-  static G4double lastP=0.;              // The last momentum for which XS was calculated
-  static G4int    lastH=0;               // The last projPDG for which XS was calculated
-  static G4bool   lastF=true;            // The last nucleon for which XS was calculated
-  static std::pair<G4double,G4double> lastR=std::make_pair(0.,0.); // The last result
-  // Local Associative Data Base:
-  static std::vector<G4int>     vI;      // Vector of index for which XS was calculated
-  static std::vector<G4double>  vM;      // Vector of rel max ln(p) initialized in LogTable
-  static std::vector<G4int>     vK;      // Vector of topBin number initialized in LogTable
-  // Last values of the Associative Data Base:
-  static G4int     lastI=0;              // The Last index for which XS was calculated
-  static G4double  lastM=0.;             // The Last rel max ln(p) initialized in LogTable
-  static G4int     lastK=0;             // The Last topBin number initialized in LogTable
-  static std::pair<G4double,G4double>* lastX=0; // The Last ETPointers to LogTable in heap
-  // LogTable is created only if necessary. The ratio R(s>8100 mb) = 0 for any nuclei
-  G4int nDB=vI.size();                   // A number of hadrons already initialized in AMDB
-#ifdef pdebug
-  G4cout<<"G4QuasiFreeR::FetchElTot:p="<<p<<",PDG="<<PDG<<",F="<<F<<",nDB="<<nDB<<G4endl;
-#endif
-  if(nDB && lastH==PDG && lastF==F && p>0. && p==lastP) return lastR;// VI don't use toler.
-  //  if(nDB && lastH==PDG && lastF==F && p>0. && std::fabs(p-lastP)/p<toler) return lastR;
-  lastH=PDG;
-  lastF=F;
-  G4int ind=-1;                          // Prototipe of the index of the PDG/F combination
-  // i=0: pp(nn), i=1: np(pn), i=2: pimp(pipn), i=3: pipp(pimn), i=4: Kmp(Kmn,K0n,K0p),
-  // i=5: Kpp(Kpn,aK0n,aK0p), i=6: Hp(Hn), i=7: app(apn,ann,anp) 
-  G4bool kfl=true;                             // Flag of K0/aK0 oscillation
-  G4bool kf=false;
-  if(PDG==130||PDG==310)
-  {
-    kf=true;
-    if(G4UniformRand()>.5) kfl=false;
-  }
-  if ( (PDG == 2212 && F) || (PDG == 2112 && !F) ) {
-    ind=0; // pp/nn
-  } else if ( (PDG == 2112 && F) || (PDG == 2212 && !F) ) {
-    ind=1; // np/pn
-  } else if ( (PDG == -211 && F) || (PDG == 211 && !F) ) {
-    ind=2; // pimp/pipn
-  } else if ( (PDG == 211 && F) || (PDG == -211 && !F) ) {
-    ind=3; // pipp/pimn
-  } else if ( PDG == -321 || PDG == -311 || (kf && !kfl) ) {
-    ind=4; // KmN/K0N
-  } else if ( PDG == 321 || PDG == 311 || (kf && kfl) ) {
-    ind=5; // KpN/aK0N
-  } else if ( PDG > 3000 && PDG < 3335) {
-    ind=6;        // @@ for all hyperons - take Lambda
-  } else if ( PDG < -2000 && PDG > -3335 ) {
-    ind=7;        // @@ for all anti-baryons - anti-p/anti-n
-  } else {
-    G4cout<<"*Error*G4QuasiFreeRatios::FetchElTot: PDG="<<PDG
-          <<", while it is defined only for p,n,hyperons,anti-baryons,pi,K/antiK"<<G4endl;
-    G4Exception("G4QuasiFreeRatio::FetchElTot:","22",FatalException,"CHIPScrash");
-  }
-  if(nDB && lastI==ind && p>0. && p==lastP) return lastR;  // VI do not use toler
-  //  if(nDB && lastI==ind && p>0. && std::fabs(p-lastP)/p<toler) return lastR;
-  if(p<=mi || p>=ma) return CalcElTot(p,ind);   // @@ Slow calculation ! (Warning?)
-  G4bool found=false;
-  G4int i=-1;
-  if(nDB) for (i=0; i<nDB; i++) if(ind==vI[i])  // Sirch for this index in AMDB
-  {
-    found=true;                                 // The index is found
-    break;
-  }
-  G4double lp=std::log(p);
-#ifdef pdebug
-  G4cout<<"G4QuasiFreeR::FetchElTot:I="<<ind<<",i="<<i<<",fd="<<found<<",lp="<<lp<<G4endl;
-#endif
-  if(!nDB || !found)                            // Create new line in the AMDB
-  {
-#ifdef pdebug
-    G4cout<<"G4QuasiFreeRatios::FetchElTot: NewX, ind="<<ind<<", nDB="<<nDB<<G4endl;
-#endif
-    lastX = new std::pair<G4double,G4double>[mlp]; // Create logarithmic Table for ElTot
-    lastI = ind;                                // Remember the initialized inex
-    lastK = static_cast<int>((lp-lpi)/dl)+1;    // MaxBin to be initialized in LogTaB
-    if(lastK>nlp)
-    {
-      lastK=nlp;
-      lastM=lpa-lpi;
-    }
-    else lastM = lastK*dl;               // Calculate max initialized ln(p)-lpi for LogTab
-    G4double pv=mi;
-    for(G4int j=0; j<=lastK; j++)        // Calculate LogTab values
-    {
-      lastX[j]=CalcElTot(pv,ind);
-#ifdef pdebug
-      G4cout<<"G4QuasiFreeR::FetchElTot:I,j="<<j<<",pv="<<pv<<",E="<<lastX[j].first<<",T="
-            <<lastX[j].second<<G4endl;
-#endif
-      if(j!=lastK) pv*=edl;
-    }
-    i++;                                 // Make a new record to AMDB and position on it
-    vI.push_back(lastI);
-    vM.push_back(lastM);
-    vK.push_back(lastK);
-    vX.push_back(lastX);
-  }
-  else                                   // The A value was found in AMDB
-  {
-    lastI=vI[i];
-    lastM=vM[i];
-    lastK=vK[i];
-    lastX=vX[i];
-    G4int nextK=lastK+1;
-    G4double lpM=lastM+lpi;
-#ifdef pdebug
-    G4cout<<"G4QuasiFreeR::FetchElTo:M="<<lpM<<",l="<<lp<<",K="<<lastK<<",n="<<nlp<<G4endl;
-#endif
-    if(lp>lpM && lastK<nlp)              // LogTab must be updated
-    {
-      lastK = static_cast<int>((lp-lpi)/dl)+1; // MaxBin to be initialized in LogTab
-#ifdef pdebug
-      G4cout<<"G4QuasiFreeR::FetET:K="<<lastK<<",lp="<<lp<<",li="<<lpi<<",dl="<<dl<<G4endl;
-#endif
-      if(lastK>nlp)
-      {
-        lastK=nlp;
-        lastM=lpa-lpi;
-      }
-      else lastM = lastK*dl;           // Calculate max initialized ln(p)-lpi for LogTab
-      G4double pv=std::exp(lpM);       // momentum of the last calculated beam
-      for(G4int j=nextK; j<=lastK; j++)// Calculate LogTab values
-      {
-        pv*=edl;
-        lastX[j]=CalcElTot(pv,ind);
-#ifdef pdebug
-        G4cout<<"G4QuasiFreeR::FetchElTot:U:j="<<j<<",p="<<pv<<",E="<<lastX[j].first<<",T="
-              <<lastX[j].second<<G4endl;
-#endif
-      }
-    } // End of LogTab update
-    if(lastK>=nextK)                   // The AMDB was apdated
-    {
-      vM[i]=lastM;
-      vK[i]=lastK;
-    }
-  }
-  // Now one can use tabeles to calculate the value
-  G4double dlp=lp-lpi;                       // Shifted log(p) value
-  G4int n=static_cast<int>(dlp/dl);          // Low edge number of the bin
-  G4double d=dlp-n*dl;                       // Log shift
-  G4double e=lastX[n].first;                 // E-Base
-  lastR.first=e+d*(lastX[n+1].first-e)/dl;   // E-Result
-  if(lastR.first<0.)  lastR.first = 0.;
-  G4double t=lastX[n].second;                // T-Base
-  lastR.second=t+d*(lastX[n+1].second-t)/dl; // T-Result
-  if(lastR.second<0.) lastR.second= 0.;
-#ifdef pdebug
-  G4cout<<"=O=>G4QuasiFreeR::FetchElTot:1st="<<lastR.first<<", 2nd="<<lastR.second<<G4endl;
-#endif
-  if(lastR.first>lastR.second) lastR.first = lastR.second;
-  return lastR;
-} // End of FetchElTot
-
-// (Mean Elastic and Mean Total) Cross-Sections (mb) for PDG+(Z,N) at P=p[GeV/c]
-std::pair<G4double,G4double> G4QuasiFreeRatios::GetElTot(G4double pIU, G4int hPDG,
-                                                         G4int Z,       G4int N)
-{
-  G4double pGeV=pIU/gigaelectronvolt;
-#ifdef pdebug
-  G4cout<<"-->G4QuasiFreeR::GetElTot: P="<<pIU<<",pPDG="<<hPDG<<",Z="<<Z<<",N="<<N<<G4endl;
-#endif
-  if(Z<1 && N<1)
-  {
-    G4cout<<"-Warning-G4QuasiFreeRatio::GetElTot:Z="<<Z<<",N="<<N<<", return zero"<<G4endl;
-    return std::make_pair(0.,0.);
-  }
-  std::pair<G4double,G4double> hp=FetchElTot(pGeV, hPDG, true);
-  std::pair<G4double,G4double> hn=FetchElTot(pGeV, hPDG, false);
-#ifdef pdebug
-  G4cout<<"-OUT->G4QFRat::GetElTot: hp("<<hp.first<<","<<hp.second<<"), hn("<<hn.first<<","
-        <<hn.second<<")"<<G4endl;
-#endif
-  G4double A=(Z+N)/millibarn;                // To make the result in independent units(IU)
-  return std::make_pair((Z*hp.first+N*hn.first)/A,(Z*hp.second+N*hn.second)/A);
-} // End of GetElTot
-
-// (Mean Elastic and Mean Total) Cross-Sections (mb) for PDG+(Z,N) at P=p[GeV/c]
-std::pair<G4double,G4double> G4QuasiFreeRatios::GetChExFactor(G4double pIU, G4int hPDG,
-                                                              G4int Z, G4int N)
-{
-  G4double pGeV=pIU/gigaelectronvolt;
-  G4double resP=0.;
-  G4double resN=0.;
-  if(Z<1 && N<1)
-  {
-    G4cout<<"-Warning-G4QuasiFreeRatio::GetChExF:Z="<<Z<<",N="<<N<<", return zero"<<G4endl;
-    return std::make_pair(resP,resN);
-  }
-  G4double A=Z+N;
-  G4double pf=0.;                              // Possibility to interact with a proton
-  G4double nf=0.;                              // Possibility to interact with a neutron
-  if   (hPDG==-211||hPDG==-321||hPDG==3112||hPDG==3212||hPDG==3312) pf=Z/(A+N);
-  else if(hPDG==211||hPDG==321||hPDG==3222||hPDG==3212||hPDG==3322) nf=N/(A+Z);
-  else if(hPDG==-311||hPDG==311||hPDG==130||hPDG==310)
-  {
-    G4double dA=A+A;
-    pf=Z/(dA+N+N);
-    nf=N/(dA+Z+Z);
-  }
-  G4double mult=1.;  // Factor of increasing multiplicity ( ? @@)
-  if(pGeV>.5)
-  {
-    mult=1./(1.+std::log(pGeV+pGeV))/pGeV;
-    if(mult>1.) mult=1.;
-  }
-  if(pf)
-  {
-    std::pair<G4double,G4double> hp=FetchElTot(pGeV, hPDG, true);
-    resP=pf*(hp.second/hp.first-1.)*mult;
-  }
-  if(nf)
-  {
-    std::pair<G4double,G4double> hn=FetchElTot(pGeV, hPDG, false);
-    resN=nf*(hn.second/hn.first-1.)*mult;
-  }
-  return std::make_pair(resP,resN);
-} // End of GetChExFactor
-
-// scatter (pPDG,p4M) on a virtual nucleon (NPDG,N4M), result: final pair(newN4M,newp4M)
-// if(newN4M.e()==0.) - below threshold, XS=0, no scattering of the progectile happened
-std::pair<G4LorentzVector,G4LorentzVector> G4QuasiFreeRatios::Scatter(G4int NPDG,
-                                     G4LorentzVector N4M, G4int pPDG, G4LorentzVector p4M)
-{
-  static const G4double mNeut= G4QPDGCode(2112).GetMass();
-  static const G4double mProt= G4QPDGCode(2212).GetMass();
-  static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0);// Mass of deuteron
-  static const G4double mTrit= G4QPDGCode(2112).GetNuclMass(1,2,0);// Mass of tritium
-  static const G4double mHel3= G4QPDGCode(2112).GetNuclMass(2,1,0);// Mass of Helium3
-  static const G4double mAlph= G4QPDGCode(2112).GetNuclMass(2,2,0);// Mass of alpha
-  G4LorentzVector pr4M=p4M/megaelectronvolt;   // Convert 4-momenta in MeV (keep p4M)
-  N4M/=megaelectronvolt;
-  G4LorentzVector tot4M=N4M+p4M;
-#ifdef ppdebug
-  G4cerr<<"->G4QFR::Scat:p4M="<<pr4M<<",N4M="<<N4M<<",t4M="<<tot4M<<",NPDG="<<NPDG<<G4endl;
-#endif
-  G4double mT=mNeut;
-  G4int Z=0;
-  G4int N=1;
-  if(NPDG==2212||NPDG==90001000)
-  {
-    mT=mProt;
-    Z=1;
-    N=0;
-  }
-  else if(NPDG==90001001)
-  {
-    mT=mDeut;
-    Z=1;
-    N=1;
-  }
-  else if(NPDG==90002001)
-  {
-    mT=mHel3;
-    Z=2;
-    N=1;
-  }
-  else if(NPDG==90001002)
-  {
-    mT=mTrit;
-    Z=1;
-    N=2;
-  }
-  else if(NPDG==90002002)
-  {
-    mT=mAlph;
-    Z=2;
-    N=2;
-  }
-  else if(NPDG!=2112&&NPDG!=90000001)
-  {
-    G4cout<<"Error:G4QuasiFreeRatios::Scatter:NPDG="<<NPDG<<" is not 2212 or 2112"<<G4endl;
-    G4Exception("G4QuasiFreeRatios::Scatter:","21",FatalException,"CHIPScomplain");
-    //return std::make_pair(G4LorentzVector(0.,0.,0.,0.),p4M);// Use this if not exception
-  }
-  G4double mT2=mT*mT;
-  G4double mP2=pr4M.m2();
-  G4double E=(tot4M.m2()-mT2-mP2)/(mT+mT);
-#ifdef pdebug
-  G4cerr<<"G4QFR::Scat:qM="<<mT<<",qM2="<<mT2<<",pM2="<<mP2<<",totM2="<<tot4M.m2()<<G4endl;
-#endif
-  G4double E2=E*E;
-  if(E<0. || E2<mP2)
-  {
-#ifdef ppdebug
-    G4cerr<<"-Warning-G4QFR::Scat:*Negative Energy*E="<<E<<",E2="<<E2<<"<M2="<<mP2<<G4endl;
-#endif
-    return std::make_pair(G4LorentzVector(0.,0.,0.,0.),p4M); // Do Nothing Action
-  }
-  G4double P=std::sqrt(E2-mP2);                   // Momentum in pseudo laboratory system
-  G4VQCrossSection* CSmanager=G4QElasticCrossSection::GetPointer();
-#ifdef ppdebug
-  G4cout<<"G4QFR::Scatter: Before XS, P="<<P<<", Z="<<Z<<", N="<<N<<", PDG="<<pPDG<<G4endl;
-#endif
-  // @@ Temporary NN t-dependence for all hadrons
-  if(pPDG>3400 || pPDG<-3400) G4cout<<"-Warning-G4QElast::Scatter: pPDG="<<pPDG<<G4endl;
-  G4int PDG=2212;                                                // *TMP* instead of pPDG
-  if(pPDG==2112||pPDG==-211||pPDG==-321) PDG=2112;               // *TMP* instead of pPDG
-  G4double xSec=CSmanager->GetCrossSection(false, P, Z, N, PDG); // Rec.CrossSect *TMP*
-  //G4double xSec=CSmanager->GetCrossSection(false, P, Z, N, pPDG); // Rec.CrossSect
-#ifdef ppdebug
-  G4cout<<"G4QElast::Scatter:pPDG="<<pPDG<<",P="<<P<<",CS="<<xSec/millibarn<<G4endl;
-#endif
-#ifdef nandebug
-  if(xSec>0. || xSec<0. || xSec==0);
-  else  G4cout<<"*Warning*G4QElast::Scatter: xSec="<<xSec/millibarn<<G4endl;
-#endif
-  // @@ check a possibility to separate p, n, or alpha (!)
-  if(xSec <= 0.) // The cross-section iz 0 -> Do Nothing
-  {
-#ifdef ppdebug
-    G4cerr<<"-Warning-G4QFR::Scat:**Zero XS**PDG="<<pPDG<<",NPDG="<<NPDG<<",P="<<P<<G4endl;
-#endif
-    return std::make_pair(G4LorentzVector(0.,0.,0.,0.),p4M); //Do Nothing Action
-  }
-  G4double mint=CSmanager->GetExchangeT(Z,N,PDG); // functional randomized -t (MeV^2) *TMP*
-  //G4double mint=CSmanager->GetExchangeT(Z,N,pPDG); // functional randomized -t in MeV^2
-  G4double maxt=CSmanager->GetHMaxT();            // max possible -t
-#ifdef ppdebug
-  G4cout<<"G4QFR::Scat:PDG="<<PDG<<",P="<<P<<",X="<<xSec<<",-t="<<mint<<"<"<<maxt<<", Z="
-        <<Z<<",N="<<N<<G4endl;
-#endif
-#ifdef nandebug
-  if(mint>-.0000001);
-  else  G4cout<<"*Warning*G4QFR::Scat: -t="<<mint<<G4endl;
-#endif
-  G4double cost=1.-(mint+mint)/maxt; // cos(theta) in CMS
-#ifdef ppdebug
-  G4cout<<"G4QFR::Scat:-t="<<mint<<"<"<<maxt<<", cost="<<cost<<", Z="<<Z<<",N="<<N<<G4endl;
-#endif
-  if(cost>1. || cost<-1. || !(cost>-1. || cost<=1.))
-  {
-    if     (cost>1.)  cost=1.;
-    else if(cost<-1.) cost=-1.;
-    else
-    {
-      G4cerr<<"G4QFR::S:*NAN*c="<<cost<<",t="<<mint<<",tm="<<CSmanager->GetHMaxT()<<G4endl;
-      return std::make_pair(G4LorentzVector(0.,0.,0.,0.),p4M); // Do Nothing Action
-    }
-  }
-  G4LorentzVector reco4M=G4LorentzVector(0.,0.,0.,mT);      // 4mom of the recoil nucleon
-  G4LorentzVector dir4M=tot4M-G4LorentzVector(0.,0.,0.,(tot4M.e()-mT)*.01);
-  if(!G4QHadron(tot4M).RelDecayIn2(pr4M, reco4M, dir4M, cost, cost))
-  {
-    G4cerr<<"G4QFR::Scat:t="<<tot4M<<tot4M.m()<<",mT="<<mT<<",mP="<<std::sqrt(mP2)<<G4endl;
-    //G4Exception("G4QFR::Scat:","009",FatalException,"Decay of ElasticComp");
-    return std::make_pair(G4LorentzVector(0.,0.,0.,0.),p4M); // Do Nothing Action
-  }
-#ifdef ppdebug
-  G4cout<<"G4QFR::Scat:p4M="<<pr4M<<"+r4M="<<reco4M<<",dr="<<dir4M<<",t4M="<<tot4M<<G4endl;
-#endif
-  return std::make_pair(reco4M*megaelectronvolt,pr4M*megaelectronvolt); // Result
-} // End of Scatter
-
-// scatter (pPDG,p4M) on a virtual nucleon (NPDG,N4M), result: final pair(newN4M,newp4M)
-// if(newN4M.e()==0.) - below threshold, XS=0, no scattering of the progectile happened
-// User should himself change the charge (PDG) (e.g. pn->np, pi+n->pi0p, pi-p->pi0n etc.)
-std::pair<G4LorentzVector,G4LorentzVector> G4QuasiFreeRatios::ChExer(G4int NPDG,
-                                     G4LorentzVector N4M, G4int pPDG, G4LorentzVector p4M)
-{
-  static const G4double mNeut= G4QPDGCode(2112).GetMass();
-  static const G4double mProt= G4QPDGCode(2212).GetMass();
-  G4LorentzVector pr4M=p4M/megaelectronvolt;          // Convert 4-momenta in MeV(keep p4M)
-  N4M/=megaelectronvolt;
-  G4LorentzVector tot4M=N4M+p4M;
-  G4int Z=0;
-  G4int N=1;
-  G4int RPDG=2212;                                     // PDG of the recoil nucleon
-  G4int sPDG=0;                                        // PDG code of the scattered hadron
-  G4double mS=0.;                                      // proto of mass of scattered hadron
-  G4double mT=mProt;                                   // mass of the recoil nucleon
-  if(NPDG==2212)
-  {
-    mT=mNeut;
-    Z=1;
-    N=0;
-    RPDG=2112;                                         // PDG of the recoil nucleon
-    if(pPDG==-211) sPDG=111;                           // pi+    -> pi0
-    else if(pPDG==-321)
-    {
-      sPDG=310;                                        // K+     -> K0S
-      if(G4UniformRand()>.5) sPDG=130;                 // K+     -> K0L
-    }
-    else if(pPDG==-311||pPDG==311||pPDG==130||pPDG==310) sPDG=321;  // K0     -> K+ (?)
-    else if(pPDG==3112) sPDG=3212;                     // Sigma- -> Sigma0
-    else if(pPDG==3212) sPDG=3222;                     // Sigma0 -> Sigma+
-    else if(pPDG==3312) sPDG=3322;                     // Xi-    -> Xi0
-  }
-  else if(NPDG==2112) // Default
-  {
-    if(pPDG==211)  sPDG=111;                           // pi+    -> pi0
-    else if(pPDG==321)
-    {
-      sPDG=310;                                        // K+     -> K0S
-      if(G4UniformRand()>.5) sPDG=130;                 // K+     -> K0L
-    }
-    else if(pPDG==-311||pPDG==311||pPDG==130||pPDG==310) sPDG=-321; // K0     -> K- (?)
-    else if(pPDG==3222) sPDG=3212;                     // Sigma+ -> Sigma0
-    else if(pPDG==3212) sPDG=3112;                     // Sigma0 -> Sigma-
-    else if(pPDG==3322) sPDG=3312;                     // Xi0    -> Xi-
-  }
-  else
-  {
-    G4cout<<"Error:G4QuasiFreeRatios::ChExer: NPDG="<<NPDG<<" is not 2212 or 2112"<<G4endl;
-    G4Exception("G4QuasiFreeRatios::ChExer:","21",FatalException,"CHIPS complain");
-    //return std::make_pair(G4LorentzVector(0.,0.,0.,0.),p4M);// Use this if not exception
-  }
-  if(sPDG) mS=G4QPDGCode(2112).GetMass();
-  else
-  {
-    G4cout<<"Error:G4QuasiFreeRatios::ChExer: BAD pPDG="<<pPDG<<", NPDG="<<NPDG<<G4endl;
-    G4Exception("G4QuasiFreeRatios::ChExer:","21",FatalException,"CHIPS complain");
-    //return std::make_pair(G4LorentzVector(0.,0.,0.,0.),p4M);// Use this if not exception
-  }
-  G4double mT2=mT*mT;
-  G4double mS2=mS*mS;
-  G4double E=(tot4M.m2()-mT2-mS2)/(mT+mT);
-  G4double E2=E*E;
-  if(E<0. || E2<mS2)
-  {
-#ifdef pdebug
-    G4cerr<<"-Warning-G4QFR::ChEx:*Negative Energy*E="<<E<<",E2="<<E2<<"<M2="<<mS2<<G4endl;
-#endif
-    return std::make_pair(G4LorentzVector(0.,0.,0.,0.),p4M); // Do Nothing Action
-  }
-  G4double P=std::sqrt(E2-mS2);                   // Momentum in pseudo laboratory system
-  G4VQCrossSection* CSmanager=G4QElasticCrossSection::GetPointer();
-#ifdef debug
-  G4cout<<"G4QFR::ChExer: Before XS, P="<<P<<", Z="<<Z<<", N="<<N<<", PDG="<<pPDG<<G4endl;
-#endif
-  // @@ Temporary NN t-dependence for all hadrons
-  G4int PDG=2212;                                                // *TMP* instead of pPDG
-  G4double xSec=CSmanager->GetCrossSection(false, P, Z, N, PDG); // Rec.CrossSect *TMP*
-  //G4double xSec=CSmanager->GetCrossSection(false, P, Z, N, pPDG); // Rec.CrossSect
-#ifdef debug
-  G4cout<<"G4QElast::ChExer:pPDG="<<pPDG<<",P="<<P<<",CS="<<xSec/millibarn<<G4endl;
-#endif
-#ifdef nandebug
-  if(xSec>0. || xSec<0. || xSec==0);
-  else  G4cout<<"*Warning*G4QElast::ChExer: xSec="<<xSec/millibarn<<G4endl;
-#endif
-  // @@ check a possibility to separate p, n, or alpha (!)
-  if(xSec <= 0.) // The cross-section iz 0 -> Do Nothing
-  {
-#ifdef pdebug
-    G4cerr<<"-Warning-G4QFR::ChEx:**Zero XS**PDG="<<pPDG<<",NPDG="<<NPDG<<",P="<<P<<G4endl;
-#endif
-    return std::make_pair(G4LorentzVector(0.,0.,0.,0.),p4M); //Do Nothing Action
-  }
-  G4double mint=CSmanager->GetExchangeT(Z,N,PDG); // functional randomized -t (MeV^2) *TMP*
-  //G4double mint=CSmanager->GetExchangeT(Z,N,pPDG); // functional randomized -t in MeV^2
-#ifdef pdebug
-  G4cout<<"G4QFR::ChEx:PDG="<<pPDG<<", P="<<P<<", CS="<<xSec<<", -t="<<mint<<G4endl;
-#endif
-#ifdef nandebug
-  if(mint>-.0000001);
-  else  G4cout<<"*Warning*G4QFR::ChExer: -t="<<mint<<G4endl;
-#endif
-  G4double cost=1.-mint/CSmanager->GetHMaxT(); // cos(theta) in CMS
-#ifdef pdebug
-  G4cout<<"G4QFR::ChEx:-t="<<mint<<",dpc2="<<CSmanager->GetHMaxT()<<",cost="<<cost<<G4endl;
-#endif
-  if(cost>1. || cost<-1. || !(cost>-1. || cost<=1.))
-  {
-    if     (cost>1.)  cost=1.;
-    else if(cost<-1.) cost=-1.;
-    else
-    {
-      G4cerr<<"G4QFR::C:*NAN*c="<<cost<<",t="<<mint<<",tm="<<CSmanager->GetHMaxT()<<G4endl;
-      return std::make_pair(G4LorentzVector(0.,0.,0.,0.),p4M); // Do Nothing Action
-    }
-  }
-  G4LorentzVector reco4M=G4LorentzVector(0.,0.,0.,mT);      // 4mom of the recoil nucleon
-  pr4M=G4LorentzVector(0.,0.,0.,mS);                        // 4mom of the scattered hadron
-  G4LorentzVector dir4M=tot4M-G4LorentzVector(0.,0.,0.,(tot4M.e()-mT)*.01);
-  if(!G4QHadron(tot4M).RelDecayIn2(pr4M, reco4M, dir4M, cost, cost))
-  {
-    G4cerr<<"G4QFR::ChEx:t="<<tot4M<<tot4M.m()<<",mT="<<mT<<",mP="<<mS<<G4endl;
-    //G4Exception("G4QFR::ChExer:","009",FatalException,"Decay of ElasticComp");
-    return std::make_pair(G4LorentzVector(0.,0.,0.,0.),p4M); // Do Nothing Action
-  }
-#ifdef debug
-  G4cout<<"G4QFR::ChEx:p4M="<<p4M<<"+r4M="<<reco4M<<"="<<p4M+reco4M<<"="<<tot4M<<G4endl;
-#endif
-  return std::make_pair(reco4M*megaelectronvolt,pr4M*megaelectronvolt); // Result
-} // End of ChExer
-
-// Calculate ChEx/El ratio (p is in independent units, (Z,N) is target, pPDG is projectile)
-G4double G4QuasiFreeRatios::ChExElCoef(G4double p, G4int Z, G4int N, G4int pPDG) 
-{
-  p/=MeV;                                // Converted from independent units
-  G4double A=Z+N;
-  if(A<1.5) return 0.;
-  G4double C=0.;
-  if     (pPDG==2212) C=N/(A+Z);
-  else if(pPDG==2112) C=Z/(A+N);
-  else G4cout<<"*Warning*G4QCohChrgExchange::ChExElCoef: wrong PDG="<<pPDG<<G4endl;
-  C*=C;                         // Coherent processes squares the amplitude
-  // @@ This is true only for nucleons: other projectiles must be treated differently
-  G4double sp=std::sqrt(p);
-  G4double p2=p*p;            
-  G4double p4=p2*p2;
-  G4double dl1=std::log(p)-5.;
-  G4double T=(6.75+.14*dl1*dl1+13./p)/(1.+.14/p4)+.6/(p4+.00013);
-  G4double U=(6.25+8.33e-5/p4/p)*(p*sp+.34)/p2/p; 
-  G4double R=U/T;
-  return C*R*R;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4VQCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4VQCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,122 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4VQCrossSection.cc,v 1.16 2009/03/09 15:41:17 mkossov Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
-//
-//
-// CHIPS virtual class: G4VQCrossSection for the collision cross sections
-// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-04
-// The last update: M.V. Kossov, CERN/ITEP (Moscow) 27-Nov-04
-// 
-//=========================================================================================
-// ****************************************************************************************
-// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
-// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
-// ****************************************************************************************
-// Short description: a basic class for all CHIPS reaction cross-sections.
-// -----------------------------------------------------------------------
-
-//#define debug
-#define edebug
-//#define pdebug
-//#define ppdebug
-//#define tdebug
-//#define sdebug
-
-#include "G4VQCrossSection.hh"
-
-// Initialization of the
-G4double  G4VQCrossSection::tolerance=.001;   // The relative tolarence for the same CrSec
-
-// Gives the threshold energy for different isotopes (can be improved in the derived class)
-G4double G4VQCrossSection::ThresholdEnergy(G4int , G4int, G4int) {return 0.;} // Fake use
-
-G4double G4VQCrossSection::GetDirectPart(G4double) {return 0.;} // Direct interaction
-
-G4double G4VQCrossSection::GetNPartons(G4double) {return 3.;} // Direct interaction
-
-G4double G4VQCrossSection::GetLastTOTCS() {return 0.;} // Get the last total CS
-
-G4double G4VQCrossSection::GetLastQELCS() {return 0.;} // Get the last quasi-elast CS
-
-G4double G4VQCrossSection::GetExchangeEnergy() {return 0.;}
-
-G4double G4VQCrossSection::GetExchangeQ2(G4double) {return 0.;}
-
-G4double G4VQCrossSection::GetSlope(G4int,G4int,G4int) {return 0.;}
-
-G4double G4VQCrossSection::GetExchangeT(G4int,G4int,G4int) {return 0.;}
-
-G4double G4VQCrossSection::GetHMaxT() {return 0.;}
-
-G4double G4VQCrossSection::GetQEL_ExchangeQ2() {return 0.;}
-
-G4double G4VQCrossSection::GetNQE_ExchangeQ2() {return 0.;}
-
-G4int G4VQCrossSection::GetExchangePDGCode() {return 0;}
-
-G4double G4VQCrossSection::GetVirtualFactor(G4double nu, G4double Q2) {return 0.*nu*Q2;}
-
-// This function finds  the linear approximation Y-point for the XN(N), YN(N) table
-G4double G4VQCrossSection::LinearFit(G4double X, G4int N, G4double* XN, G4double* YN)
-{
-  G4double Xj=XN[0];
-  G4double Xh=XN[N-1];
-  if(X<=Xj) return YN[0]; 
-  else if(X>=Xh) return YN[N-1];
-  G4double Xp=0.; G4int j=0; while (X>Xj && j<N) {j++; Xp=Xj; Xj=XN[j];}
-  return YN[j]-(Xj-X)*(YN[j]-YN[j-1])/(Xj-Xp);
-}
-
-// This function finds the linear approximation Y-point for equidistant bins: XI=X0+I*DX
-G4double G4VQCrossSection::EquLinearFit(G4double X, G4int N, G4double X0, G4double DX,
-                                        G4double* Y)
-{
-#ifdef pdebug
-  G4cout<<"G4VQCrossSection::EquLinearFit: ***Called*** X="<<X<<", N="<<N<<", X0="<<X0
-        <<", DX="<<DX<<G4endl;
-  G4cout<<"G4VQCrossSection::EquLinearFit: Y[0]="<<Y[0]<<", Y[N-1]="<<Y[N-1]<<G4endl;
-  //for(G4int i=1; i<N; i++)G4cout<<"-----G4VQCS::EquLinearFit: Y["<<i<<"]="<<Y[i]<<G4endl;
-#endif
-  if(DX<=0. || N<2)
-  {
-    G4cerr<<"***G4VQCrossSection::EquLinearFit: DX="<<DX<<", N="<<N<<G4endl;
-    return Y[0];
-  }
-  G4int    N2=N-2;
-  G4double d=(X-X0)/DX;
-  G4int         j=static_cast<int>(d);
-  if     (j<0)  j=0;
-  else if(j>N2) j=N2;
-  d-=j; // excess
-  G4double yi=Y[j];
-  G4double sigma=yi+(Y[j+1]-yi)*d;
-#ifdef pdebug
-  G4cout<<"G4VQCrossSection::EquLinearFit: CS="<<sigma<<G4endl;
-#endif
-  return sigma;
-}
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/nucleus/GNUmakefile
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/nucleus/GNUmakefile	(revision 1197)
+++ 	(revision )
@@ -1,33 +1,0 @@
-# -----------------------------------------------------------
-# GNUmakefile for chips granular library.  HPW 20-Nov-99
-# -----------------------------------------------------------
-
-name := G4hadronic_nuc_ci
-
-ifndef G4INSTALL
-  G4INSTALL = ../../../../../..
-endif
-
-include $(G4INSTALL)/config/architecture.gmk
-
-CPPFLAGS += -I$(G4BASE)/global/management/include \
-            -I$(G4BASE)/global/HEPRandom/include \
-            -I$(G4BASE)/global/HEPGeometry/include \
-            -I$(G4BASE)/track/include \
-            -I$(G4BASE)/geometry/volumes/include \
-            -I$(G4BASE)/geometry/management/include \
-            -I$(G4BASE)/processes/management/include \
-            -I$(G4BASE)/processes/hadronic/management/include/ \
-            -I$(G4BASE)/processes/hadronic/util/include \
-            -I$(G4BASE)/processes/hadronic/cross_sections/include/ \
-            -I$(G4BASE)/processes/hadronic/models/generator/util/include \
-            -I$(G4BASE)/processes/hadronic/models/generator/management/include \
-            -I$(G4BASE)/particles/management/include \
-            -I$(G4BASE)/particles/leptons/include \
-            -I$(G4BASE)/particles/bosons/include \
-            -I$(G4BASE)/particles/hadrons/mesons/include \
-            -I$(G4BASE)/particles/hadrons/barions/include \
-            -I$(G4BASE)/particles/hadrons/ions/include \
-            -I$(G4BASE)/materials/include
-           
-include $(G4INSTALL)/config/common.gmk
Index: unk/source/processes/hadronic/models/chiral_inv_phase_space/utils/GNUmakefile
===================================================================
--- /trunk/source/processes/hadronic/models/chiral_inv_phase_space/utils/GNUmakefile	(revision 1197)
+++ 	(revision )
@@ -1,32 +1,0 @@
-# -----------------------------------------------------------
-# GNUmakefile for chips granular library.  HPW 20-Nov-99
-# -----------------------------------------------------------
-
-name := G4hadronic_util_ci
-
-ifndef G4INSTALL
-  G4INSTALL = ../../../../../..
-endif
-
-include $(G4INSTALL)/config/architecture.gmk
-
-CPPFLAGS += -I$(G4BASE)/global/management/include \
-            -I$(G4BASE)/global/HEPRandom/include \
-            -I$(G4BASE)/global/HEPGeometry/include \
-            -I$(G4BASE)/track/include \
-            -I$(G4BASE)/geometry/volumes/include \
-            -I$(G4BASE)/geometry/management/include \
-            -I$(G4BASE)/processes/management/include \
-            -I$(G4BASE)/processes/hadronic/management/include/ \
-            -I$(G4BASE)/processes/hadronic/util/include \
-            -I$(G4BASE)/processes/hadronic/cross_sections/include/ \
-            -I$(G4BASE)/processes/hadronic/models/generator/util/include \
-            -I$(G4BASE)/particles/management/include \
-            -I$(G4BASE)/particles/leptons/include \
-            -I$(G4BASE)/particles/bosons/include \
-            -I$(G4BASE)/particles/hadrons/mesons/include \
-            -I$(G4BASE)/particles/hadrons/barions/include \
-            -I$(G4BASE)/particles/hadrons/ions/include \
-            -I$(G4BASE)/materials/include
-           
-include $(G4INSTALL)/config/common.gmk
Index: unk/source/processes/hadronic/models/parton_string/management/include/G4FTFCrossSection.hh
===================================================================
--- /trunk/source/processes/hadronic/models/parton_string/management/include/G4FTFCrossSection.hh	(revision 1197)
+++ 	(revision )
@@ -1,90 +1,0 @@
-//
-// ********************************************************************
-// * 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 G4FTFCrossSection_h
-#define G4FTFCrossSection_h 1
-//
-// $Id: G4FTFCrossSection.hh,v 1.2 2007/04/24 10:37:10 gunter Exp $
-// GEANT4 tag $Name: geant4-09-01-patch-02 $
-//
-#include "G4Proton.hh"
-class G4FTFCrossSection
-{
-
-  public:
-  	G4FTFCrossSection(const G4ParticleDefinition * , G4double );
-
-	~G4FTFCrossSection();
-
-        void SethNcmsEnergy(const G4double s);
-        void SetTotalCrossSection(const G4double Xtotal);
-        void SetElastisCrossSection(const G4double Xelastic);
-        void SetInelasticCrossSection(const G4double Xinelastic);
-        void SetSlope(const G4double Slope);
-        void SetGamma0(const G4double Gamma0);
-
-	G4double GetTotalCrossSection();
-	G4double GetElasticCrossSection();
-	G4double GetInelasticCrossSection();
-
-        G4double GetSlope();
-
-	G4double GetInelasticProbability(const G4double impactsquare);
-
-//  private: 
-
-	G4FTFCrossSection();
-
-        G4double GammaElastic(const G4double impactsquare) {return (FTFGamma0 * std::exp(-FTFSlope * impactsquare));};
-	
-        G4double FTFhNcmsEnergy;  // Uzhi Initial hN CMS energy
-        G4double FTFXtotal;
-        G4double FTFXelastic;
-        G4double FTFXinelastic;
-        G4double FTFSlope;
-        G4double FTFGamma0;
-
-};
-
-inline  void G4FTFCrossSection::SethNcmsEnergy(const G4double s)                    {FTFhNcmsEnergy = s;}
-inline  void G4FTFCrossSection::SetTotalCrossSection(const G4double Xtotal)         {FTFXtotal = Xtotal;}
-inline  void G4FTFCrossSection::SetElastisCrossSection(const G4double Xelastic)     {FTFXelastic = Xelastic;}
-inline  void G4FTFCrossSection::SetInelasticCrossSection(const G4double Xinelastic) {FTFXinelastic = Xinelastic;}
-inline  void G4FTFCrossSection::SetSlope(const G4double Slope)                      {FTFSlope = 12.84/Slope;}
-inline  void G4FTFCrossSection::SetGamma0(const G4double Gamma0)                    {FTFGamma0 = Gamma0;}
-
-inline  G4double G4FTFCrossSection::GetTotalCrossSection()                          {return FTFXtotal;}
-inline  G4double G4FTFCrossSection::GetElasticCrossSection()                        {return FTFXelastic;}
-inline  G4double G4FTFCrossSection::GetInelasticCrossSection()                      {return FTFXinelastic;}
-
-inline  G4double G4FTFCrossSection::GetSlope()                                      {return FTFSlope;}
-
-inline  G4double G4FTFCrossSection::GetInelasticProbability( const G4double impactsquare)
-        {
-         G4double Gamma = GammaElastic(impactsquare);
-         return 2 * Gamma - Gamma *Gamma;
-        }
-
-#endif
Index: unk/source/processes/hadronic/models/parton_string/management/src/G4FTFCrossSection.cc
===================================================================
--- /trunk/source/processes/hadronic/models/parton_string/management/src/G4FTFCrossSection.cc	(revision 1197)
+++ 	(revision )
@@ -1,194 +1,0 @@
-//
-// ********************************************************************
-// * 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: G4FTFCrossSection.cc,v 1.2 2007/04/24 10:37:10 gunter Exp $
-// GEANT4 tag $Name: geant4-09-01-patch-02 $
-//
-
-#include "G4FTFCrossSection.hh"
-
-G4FTFCrossSection::G4FTFCrossSection()
-{;}
-
-
-G4FTFCrossSection::~G4FTFCrossSection()
-{;}
-//**********************************************************************************************
-
-G4FTFCrossSection::G4FTFCrossSection(const G4ParticleDefinition * particle, G4double s) 
-    {
-    G4int PDGcode = particle->GetPDGEncoding();
-    G4int absPDGcode = std::abs(PDGcode);
-    G4double Elab = (s - 2*0.88*GeV*GeV)/(2*0.939*GeV)/GeV;
-    G4double Plab = std::sqrt(Elab * Elab - 0.88);
-
-    G4double LogPlab = std::log( Plab );
-    G4double sqrLogPlab = LogPlab * LogPlab;
-
-//G4cout<<"G4FTFCrossSection Plab "<<Plab<<G4endl;
-
-    G4int NumberOfTargetProtons  = 1; //aNucleus.GetZ();             // ??????????????????????
-    G4int NumberOfTargetNeutrons = 1; //aNucleus.GetN();
-    G4int NumberOfTargetNucleons = NumberOfTargetProtons + NumberOfTargetNeutrons;
-
-    G4double Xtotal, Xelastic;
-
-    if( absPDGcode > 1000 )                        //------Projectile is baryon --------
-      {        
-       G4double XtotPP = 48.0 +  0. *std::pow(Plab, 0.  ) + 0.522*sqrLogPlab - 4.51*LogPlab;
-       G4double XtotPN = 47.3 +  0. *std::pow(Plab, 0.  ) + 0.513*sqrLogPlab - 4.27*LogPlab;
-
-       G4double XelPP  = 11.9 + 26.9*std::pow(Plab,-1.21) + 0.169*sqrLogPlab - 1.85*LogPlab;
-       G4double XelPN  = 11.9 + 26.9*std::pow(Plab,-1.21) + 0.169*sqrLogPlab - 1.85*LogPlab;
-
-       Xtotal          = ( NumberOfTargetProtons  * XtotPP + 
-                           NumberOfTargetNeutrons * XtotPN  ) / NumberOfTargetNucleons;
-       Xelastic        = ( NumberOfTargetProtons  * XelPP  + 
-                           NumberOfTargetNeutrons * XelPN   ) / NumberOfTargetNucleons;
-      }
-    else if( PDGcode ==  211 )                     //------Projectile is PionPlus -------
-      {
-       G4double XtotPiP = 16.4 + 19.3 *std::pow(Plab,-0.42) + 0.19 *sqrLogPlab - 0.0 *LogPlab;
-       G4double XtotPiN = 33.0 + 14.0 *std::pow(Plab,-1.36) + 0.456*sqrLogPlab - 4.03*LogPlab;
-           
-       G4double XelPiP  =  0.0 + 11.4*std::pow(Plab,-0.40) + 0.079*sqrLogPlab - 0.0 *LogPlab;
-       G4double XelPiN  = 1.76 + 11.2*std::pow(Plab,-0.64) + 0.043*sqrLogPlab - 0.0 *LogPlab;
-
-       Xtotal           = ( NumberOfTargetProtons  * XtotPiP + 
-                            NumberOfTargetNeutrons * XtotPiN  ) / NumberOfTargetNucleons;
-       Xelastic         = ( NumberOfTargetProtons  * XelPiP  + 
-                            NumberOfTargetNeutrons * XelPiN   ) / NumberOfTargetNucleons; 
-      }
-    else if( PDGcode == -211 )                     //------Projectile is PionMinus -------
-      {
-       G4double XtotPiP = 33.0 + 14.0 *std::pow(Plab,-1.36) + 0.456*sqrLogPlab - 4.03*LogPlab;
-       G4double XtotPiN = 16.4 + 19.3 *std::pow(Plab,-0.42) + 0.19 *sqrLogPlab - 0.0 *LogPlab;
-           
-       G4double XelPiP  = 1.76 + 11.2*std::pow(Plab,-0.64) + 0.043*sqrLogPlab - 0.0 *LogPlab;
-       G4double XelPiN  =  0.0 + 11.4*std::pow(Plab,-0.40) + 0.079*sqrLogPlab - 0.0 *LogPlab;
-
-       Xtotal           = ( NumberOfTargetProtons  * XtotPiP + 
-                            NumberOfTargetNeutrons * XtotPiN  ) / NumberOfTargetNucleons;
-       Xelastic         = ( NumberOfTargetProtons  * XelPiP  + 
-                            NumberOfTargetNeutrons * XelPiN   ) / NumberOfTargetNucleons;
-      }
-
-    else if( PDGcode ==  111 )                     //------Projectile is PionZero  -------
-      {
-       G4double XtotPiP =(16.4 + 19.3 *std::pow(Plab,-0.42) + 0.19 *sqrLogPlab - 0.0 *LogPlab +   //Pi+
-                          33.0 + 14.0 *std::pow(Plab,-1.36) + 0.456*sqrLogPlab - 4.03*LogPlab)/2; //Pi-
-
-       G4double XtotPiN =(33.0 + 14.0 *std::pow(Plab,-1.36) + 0.456*sqrLogPlab - 4.03*LogPlab +   //Pi+
-                          16.4 + 19.3 *std::pow(Plab,-0.42) + 0.19 *sqrLogPlab - 0.0 *LogPlab)/2; //Pi-
-           
-       G4double XelPiP  =( 0.0 + 11.4*std::pow(Plab,-0.40) + 0.079*sqrLogPlab - 0.0 *LogPlab +    //Pi+
-                           1.76 + 11.2*std::pow(Plab,-0.64) + 0.043*sqrLogPlab - 0.0 *LogPlab)/2; //Pi-
-       G4double XelPiN  =( 1.76 + 11.2*std::pow(Plab,-0.64) + 0.043*sqrLogPlab - 0.0 *LogPlab +   //Pi+
-                           0.0  + 11.4*std::pow(Plab,-0.40) + 0.079*sqrLogPlab - 0.0 *LogPlab)/2; //Pi-
-
-       Xtotal           = ( NumberOfTargetProtons  * XtotPiP + 
-                            NumberOfTargetNeutrons * XtotPiN  ) / NumberOfTargetNucleons;
-       Xelastic         = ( NumberOfTargetProtons  * XelPiP  + 
-                            NumberOfTargetNeutrons * XelPiN   ) / NumberOfTargetNucleons; 
-      }
-    else if( PDGcode == 321 )                      //------Projectile is KaonPlus -------
-      {
-       G4double XtotKP = 18.1 +  0. *std::pow(Plab, 0.  ) + 0.26 *sqrLogPlab - 1.0 *LogPlab;
-       G4double XtotKN = 18.7 +  0. *std::pow(Plab, 0.  ) + 0.21 *sqrLogPlab - 0.89*LogPlab;
-
-       G4double XelKP  =  5.0 +  8.1*std::pow(Plab,-1.8 ) + 0.16 *sqrLogPlab - 1.3 *LogPlab;
-       G4double XelKN  =  7.3 +  0. *std::pow(Plab,-0.  ) + 0.29 *sqrLogPlab - 2.4 *LogPlab;
-
-       Xtotal          = ( NumberOfTargetProtons  * XtotKP + 
-                           NumberOfTargetNeutrons * XtotKN  ) / NumberOfTargetNucleons;
-       Xelastic        = ( NumberOfTargetProtons  * XelKP  + 
-                           NumberOfTargetNeutrons * XelKN   ) / NumberOfTargetNucleons;
-      }
-    else if( PDGcode ==-321 )                      //------Projectile is KaonMinus ------
-      {
-       G4double XtotKP = 32.1 +  0. *std::pow(Plab, 0.  ) + 0.66 *sqrLogPlab - 5.6 *LogPlab;
-       G4double XtotKN = 25.2 +  0. *std::pow(Plab, 0.  ) + 0.38 *sqrLogPlab - 2.9 *LogPlab;
-
-       G4double XelKP  =  7.3 +  0. *std::pow(Plab,-0.  ) + 0.29 *sqrLogPlab - 2.4 *LogPlab;
-       G4double XelKN  =  5.0 +  8.1*std::pow(Plab,-1.8 ) + 0.16 *sqrLogPlab - 1.3 *LogPlab;
-
-       Xtotal          = ( NumberOfTargetProtons  * XtotKP + 
-                           NumberOfTargetNeutrons * XtotKN  ) / NumberOfTargetNucleons;
-       Xelastic        = ( NumberOfTargetProtons  * XelKP  + 
-                           NumberOfTargetNeutrons * XelKN   ) / NumberOfTargetNucleons;
-      }
-    else if( PDGcode == 311 )                      //------Projectile is KaonZero ------
-      {
-       G4double XtotKP =( 18.1 +  0. *std::pow(Plab, 0.  ) + 0.26 *sqrLogPlab - 1.0 *LogPlab +   //K+
-                          32.1 +  0. *std::pow(Plab, 0.  ) + 0.66 *sqrLogPlab - 5.6 *LogPlab)/2; //K-
-       G4double XtotKN =( 18.7 +  0. *std::pow(Plab, 0.  ) + 0.21 *sqrLogPlab - 0.89*LogPlab +   //K+
-                          25.2 +  0. *std::pow(Plab, 0.  ) + 0.38 *sqrLogPlab - 2.9 *LogPlab)/2; //K-
-
-       G4double XelKP  =(  5.0 +  8.1*std::pow(Plab,-1.8 ) + 0.16 *sqrLogPlab - 1.3 *LogPlab +   //K+
-                           7.3 +  0. *std::pow(Plab,-0.  ) + 0.29 *sqrLogPlab - 2.4 *LogPlab)/2; //K-
-       G4double XelKN  =(  7.3 +  0. *std::pow(Plab,-0.  ) + 0.29 *sqrLogPlab - 2.4 *LogPlab +   //K+
-                           5.0 +  8.1*std::pow(Plab,-1.8 ) + 0.16 *sqrLogPlab - 1.3 *LogPlab)/2; //K-
-       Xtotal          = ( NumberOfTargetProtons  * XtotKP + 
-                           NumberOfTargetNeutrons * XtotKN  ) / NumberOfTargetNucleons;
-       Xelastic        = ( NumberOfTargetProtons  * XelKP  + 
-                           NumberOfTargetNeutrons * XelKN   ) / NumberOfTargetNucleons;
-      }
-    else                                          //------Projectile is undefined, Nucleon assumed
-      {
-       G4double XtotPP = 48.0 +  0. *std::pow(Plab, 0.  ) + 0.522*sqrLogPlab - 4.51*LogPlab;
-       G4double XtotPN = 47.3 +  0. *std::pow(Plab, 0.  ) + 0.513*sqrLogPlab - 4.27*LogPlab;
-
-       G4double XelPP  = 11.9 + 26.9*std::pow(Plab,-1.21) + 0.169*sqrLogPlab - 1.85*LogPlab;
-       G4double XelPN  = 11.9 + 26.9*std::pow(Plab,-1.21) + 0.169*sqrLogPlab - 1.85*LogPlab;
-
-       Xtotal          = ( NumberOfTargetProtons  * XtotPP + 
-                           NumberOfTargetNeutrons * XtotPN  ) / NumberOfTargetNucleons;
-       Xelastic        = ( NumberOfTargetProtons  * XelPP  + 
-                           NumberOfTargetNeutrons * XelPN   ) / NumberOfTargetNucleons;
-      };
-
-      SetTotalCrossSection(Xtotal);
-      SetElastisCrossSection(Xelastic);
-      SetInelasticCrossSection(Xtotal-Xelastic);
-
-//G4cout<<"G4FTFCrossSection Xt Xel "<<Xtotal<<" "<<Xelastic<<G4endl;
-
-//-----------------------------------------------------------------------------------  
-      SetSlope( Xtotal*Xtotal/16./pi/Xelastic/0.3894 ); // Slope parameter of elastic scattering
-                                                        //      (GeV/c)^(-2))
-                                                        // Gaussian parametrization of
-                                                        // elastic scattering amplitude assumed
-
-//G4cout<<"G4FTFCrossSection Slope "<<GetSlope()<<G4endl;
-
-//-----------------------------------------------------------------------------------
-      SetGamma0( GetSlope()*Xtotal/10./2./pi );
-//-----------------------------------------------------------------------------------
-
-//G4cout<<"G4FTFCrossSection Out"<<G4endl;
-
-    } 
-//**********************************************************************************************
