Ignore:
Timestamp:
Nov 5, 2010, 3:45:55 PM (14 years ago)
Author:
garnier
Message:

update ti head

Location:
trunk/source/processes/hadronic/cross_sections/include
Files:
33 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/hadronic/cross_sections/include/G4BGGNucleonElasticXS.hh

    r1337 r1340  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BGGNucleonElasticXS.hh,v 1.5 2009/11/19 11:41:30 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-04-beta-01 $
     26// $Id: G4BGGNucleonElasticXS.hh,v 1.6 2010/10/12 06:02:09 dennis Exp $
     27// GEANT4 tag $Name: hadr-cross-V09-03-12 $
    2828//
    2929// -------------------------------------------------------------------
     
    5555#include "G4ParticleDefinition.hh"
    5656#include "G4Element.hh"
     57#include "G4HadTmpUtil.hh"
    5758
    58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    5959
    6060class G4GlauberGribovCrossSection;
     
    7474
    7575  virtual
    76   G4bool IsZAApplicable(const G4DynamicParticle*, G4double Z, G4double A);
     76  G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A);
    7777
    7878  virtual
     
    8181
    8282  virtual
    83   G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double /*Z*/,
    84                                 G4double /*A*/, G4double aTemperature = 0.);
     83  G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/,
     84                                G4int /*A*/, G4double aTemperature = 0.);
    8585
    8686  virtual
     
    9494  void Initialise();
    9595
    96   G4double CoulombFactor(G4double kinEnergy, G4double A);
     96  G4double CoulombFactor(G4double kinEnergy, G4int A);
    9797
    9898  G4double fGlauberEnergy; 
     
    109109};
    110110
    111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    112111
    113112inline
     
    116115{
    117116  return true;
    118   //  return IsZAApplicable(dp, elm->GetZ(), elm->GetN());
    119117}
    120118
    121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    122119
    123120inline
    124 G4bool G4BGGNucleonElasticXS::IsZAApplicable(const G4DynamicParticle*,
    125                                              G4double /*Z*/, G4double/* A*/)
     121G4bool G4BGGNucleonElasticXS::IsIsoApplicable(const G4DynamicParticle*,
     122                                              G4int /*Z*/, G4int/* A*/)
    126123{
    127124  return true;
    128   //  return (dp->GetDefinition() == particle);
    129125}
    130126
    131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    132127
    133128inline
     
    136131                                                G4double temp)
    137132{
    138   return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp);
     133//  return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp);
     134  G4int Z = G4lrint(elm->GetZ());
     135  G4int N = G4lrint(elm->GetN());
     136  return GetZandACrossSection(dp, Z, N, temp);
    139137}
    140138
    141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    142 
    143139#endif
  • trunk/source/processes/hadronic/cross_sections/include/G4BGGNucleonInelasticXS.hh

    r1337 r1340  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BGGNucleonInelasticXS.hh,v 1.6 2009/11/19 11:44:46 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-04-beta-01 $
     26// $Id: G4BGGNucleonInelasticXS.hh,v 1.7 2010/10/12 06:02:28 dennis Exp $
     27// GEANT4 tag $Name: hadr-cross-V09-03-12 $
    2828//
    2929// -------------------------------------------------------------------
     
    5555#include "G4ParticleDefinition.hh"
    5656#include "G4Element.hh"
     57#include "G4HadTmpUtil.hh"
    5758
    58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    5959
    6060class G4GlauberGribovCrossSection;
     
    7474
    7575  virtual
    76   G4bool IsZAApplicable(const G4DynamicParticle*, G4double Z, G4double A);
     76  G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A);
    7777
    7878  virtual
     
    8181
    8282  virtual
    83   G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double /*Z*/,
    84                                 G4double /*A*/, G4double aTemperature = 0.);
     83  G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/,
     84                                G4int /*A*/, G4double aTemperature = 0.);
    8585
    8686  virtual
     
    9494  void Initialise();
    9595
    96   G4double CoulombFactor(G4double kinEnergy, G4double A);
     96  G4double CoulombFactor(G4double kinEnergy, G4int A);
    9797
    9898  G4double fGlauberEnergy; 
     
    109109};
    110110
    111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    112111
    113112inline
     
    116115{
    117116  return true;
    118   //  return IsZAApplicable(dp, elm->GetZ(), elm->GetN());
    119117}
    120118
    121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    122119
    123120inline
    124 G4bool G4BGGNucleonInelasticXS::IsZAApplicable(const G4DynamicParticle*,
    125                                                G4double /*Z*/, G4double/* A*/)
     121G4bool G4BGGNucleonInelasticXS::IsIsoApplicable(const G4DynamicParticle*,
     122                                                G4int /*Z*/, G4int/* A*/)
    126123{
    127124  return false;
    128   //  return (dp->GetDefinition() == particle);
    129125}
    130126
    131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    132127
    133128inline
     
    136131                                                  G4double temp)
    137132{
    138   return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp);
     133  G4int Z = G4lrint(elm->GetZ());
     134  G4int N = G4lrint(elm->GetN());
     135  return GetZandACrossSection(dp, Z, N, temp);
    139136}
    140137
    141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    142138
    143139#endif
  • trunk/source/processes/hadronic/cross_sections/include/G4BGGPionElasticXS.hh

    r1337 r1340  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BGGPionElasticXS.hh,v 1.5 2009/11/19 11:46:13 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-04-beta-01 $
     26// $Id: G4BGGPionElasticXS.hh,v 1.7 2010/10/20 09:07:38 stesting Exp $
     27// GEANT4 tag $Name: hadr-cross-V09-03-12 $
    2828//
    2929// -------------------------------------------------------------------
     
    5555#include "G4ParticleDefinition.hh"
    5656#include "G4Element.hh"
     57#include "G4HadTmpUtil.hh"
    5758
    58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    5959
    6060class G4GlauberGribovCrossSection;
     
    7373  G4bool IsApplicable(const G4DynamicParticle*, const G4Element*);
    7474
     75//  virtual
     76//  G4bool IsZAApplicable(const G4DynamicParticle*, G4double Z, G4double A);
     77
    7578  virtual
    76   G4bool IsZAApplicable(const G4DynamicParticle*, G4double Z, G4double A);
     79  G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A);
    7780
    7881  virtual
     
    8083                           const G4Element*, G4double aTemperature = 0.);
    8184
     85//  virtual
     86//  G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double /*Z*/,
     87//                              G4double /*A*/, G4double aTemperature = 0.);
     88
    8289  virtual
    83   G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double /*Z*/,
    84                                 G4double /*A*/, G4double aTemperature = 0.);
     90  G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/,
     91                                G4int /*A*/, G4double aTemperature = 0.);
    8592
    8693  virtual
     
    94101  void Initialise();
    95102
    96   G4double CoulombFactor(G4double kinEnergy, G4double A);
     103//  G4double CoulombFactor(G4double kinEnergy, G4double A);
     104  G4double CoulombFactor(G4double kinEnergy, G4int A);
    97105
    98106  G4double fGlauberEnergy; 
     
    116124{
    117125  return true;
    118   //return IsZAApplicable(dp, elm->GetZ(), elm->GetN());
    119126}
    120127
    121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     128//inline
     129//G4bool G4BGGPionElasticXS::IsZAApplicable(const G4DynamicParticle*,
     130//                                        G4double /*Z*/, G4double/* A*/)
    122131
    123132inline
    124 G4bool G4BGGPionElasticXS::IsZAApplicable(const G4DynamicParticle*,
    125                                           G4double /*Z*/, G4double/* A*/)
     133G4bool G4BGGPionElasticXS::IsIsoApplicable(const G4DynamicParticle*,
     134                                           G4int /*Z*/, G4int/* A*/)
    126135{
    127136  return false;
    128   //  return (dp->GetDefinition() == particle);
    129137}
    130138
    131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    132139
    133 inline
     140inline 
    134141G4double G4BGGPionElasticXS::GetCrossSection(const G4DynamicParticle* dp,
    135142                                             const G4Element* elm,
    136143                                             G4double temp)
    137144{
    138   return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp);
     145//  return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp);
     146  G4int Z = G4lrint(elm->GetZ());
     147  G4int N = G4lrint(elm->GetN());
     148  return GetZandACrossSection(dp, Z, N, temp);
    139149}
    140150
    141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    142 
    143151#endif
  • trunk/source/processes/hadronic/cross_sections/include/G4BGGPionInelasticXS.hh

    r1337 r1340  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BGGPionInelasticXS.hh,v 1.5 2009/11/19 11:47:19 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-04-beta-01 $
     26// $Id: G4BGGPionInelasticXS.hh,v 1.6 2010/10/12 06:04:02 dennis Exp $
     27// GEANT4 tag $Name: hadr-cross-V09-03-12 $
    2828//
    2929// -------------------------------------------------------------------
     
    5555#include "G4ParticleDefinition.hh"
    5656#include "G4Element.hh"
     57#include "G4HadTmpUtil.hh"
    5758
    58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    5959
    6060class G4GlauberGribovCrossSection;
     
    7373  G4bool IsApplicable(const G4DynamicParticle*, const G4Element*);
    7474
     75//  virtual
     76//  G4bool IsZAApplicable(const G4DynamicParticle*, G4double Z, G4double A);
     77
    7578  virtual
    76   G4bool IsZAApplicable(const G4DynamicParticle*, G4double Z, G4double A);
     79  G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A);
    7780
    7881  virtual
     
    8083                           const G4Element*, G4double aTemperature = 0.);
    8184
     85//  virtual
     86//  G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double /*Z*/,
     87//                              G4double /*A*/, G4double aTemperature = 0.);
     88
    8289  virtual
    83   G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double /*Z*/,
    84                                 G4double /*A*/, G4double aTemperature = 0.);
     90  G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/,
     91                                G4int /*A*/, G4double aTemperature = 0.);
    8592
    8693  virtual
     
    94101  void Initialise();
    95102
    96   G4double CoulombFactor(G4double kinEnergy, G4double A);
     103  G4double CoulombFactor(G4double kinEnergy, G4int A);
    97104
    98105  G4double fGlauberEnergy; 
     
    109116};
    110117
    111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    112118
    113119inline
     
    116122{
    117123  return true;
    118   //  return IsZAApplicable(dp, elm->GetZ(), elm->GetN());
    119124}
    120125
    121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    122126
    123127inline
    124 G4bool G4BGGPionInelasticXS::IsZAApplicable(const G4DynamicParticle*,
    125                                             G4double /*Z*/, G4double/* A*/)
     128G4bool G4BGGPionInelasticXS::IsIsoApplicable(const G4DynamicParticle*,
     129                                             G4int /*Z*/, G4int/* A*/)
    126130{
    127131  return false;
    128   // return (dp->GetDefinition() == particle);
    129132}
    130133
    131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    132134
    133135inline
     
    136138                                               G4double temp)
    137139{
    138   return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp);
     140//  return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp);
     141  G4int Z = G4lrint(elm->GetZ());
     142  G4int N = G4lrint(elm->GetN());
     143  return GetZandACrossSection(dp, Z, N, temp);
    139144}
    140145
    141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    142 
    143146#endif
  • trunk/source/processes/hadronic/cross_sections/include/G4EMDissociationCrossSection.hh

    r819 r1340  
    7979    virtual G4bool IsApplicable (const G4DynamicParticle*, const G4Element*);
    8080 
    81     virtual G4bool IsZAApplicable(const G4DynamicParticle*, G4double ZZ,
    82                                                             G4double AA);
     81    virtual G4bool IsIsoApplicable(const G4DynamicParticle*, G4int ZZ, G4int AA);
    8382 
    8483    virtual G4double GetCrossSection (const G4DynamicParticle *,
    8584      const G4Element *, G4double);
    8685     
    87     virtual G4double GetIsoZACrossSection(const G4DynamicParticle*,
    88                                           G4double ZZ, G4double AA,
     86    virtual G4double GetZandACrossSection(const G4DynamicParticle*,
     87                                          G4int ZZ, G4int AA,
    8988                                          G4double temperature);
    9089     
     
    110109    G4double                 xd;
    111110};
    112 ///////////////////////////////////////////////////////////////////////////////
    113 //
     111
    114112#endif
  • trunk/source/processes/hadronic/cross_sections/include/G4ElectroNuclearCrossSection.hh

    r1337 r1340  
    2525//
    2626//
    27 // GEANT4 tag $Name: geant4-09-04-beta-01 $
     27// GEANT4 tag $Name: hadr-cross-V09-03-12 $
    2828//
    2929//
     
    5555  G4bool IsApplicable(const G4DynamicParticle* aParticle, const G4Element* )
    5656  {
    57     return IsZAApplicable(aParticle, 0., 0.);
     57    return IsIsoApplicable(aParticle, 0, 0);
    5858  }
    5959
    60   G4bool IsZAApplicable(const G4DynamicParticle* aParticle, G4double /*ZZ*/,
    61                                                             G4double /*AA*/)
     60  G4bool IsIsoApplicable(const G4DynamicParticle* aParticle,
     61                         G4int /*ZZ*/, G4int /*AA*/)
    6262  {
    6363    G4bool result = false;
    64     if( aParticle->GetDefinition()==G4Electron::ElectronDefinition()) result = true;
    65     if( aParticle->GetDefinition()==G4Positron::PositronDefinition()) result = true;
     64    if (aParticle->GetDefinition() == G4Electron::ElectronDefinition())
     65       result = true;
     66    if (aParticle->GetDefinition() == G4Positron::PositronDefinition())
     67       result = true;
    6668    return result;
    6769  }
     
    7173                           const G4Element* anElement, G4double T=0.);
    7274
    73   G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle,
    74                                 G4double ZZ, G4double AA, G4double T=0.);
    75 
     75  G4double GetZandACrossSection(const G4DynamicParticle* aParticle,
     76                                G4int ZZ, G4int AA, G4double T=0.);
    7677
    7778  G4double GetEquivalentPhotonEnergy();
     
    8788private:
    8889  G4int    GetFunctions(G4double a, G4double* x, G4double* y, G4double* z);
    89   //G4double LinearFit(G4double X, G4int N, const G4double* XN, const G4double* YN);
     90
    9091  G4double ThresholdEnergy(G4int Z, G4int N);
    9192  G4double HighEnergyJ1(G4double lE);
     
    111112  static G4double  lastH;    // Last value of the High energy A-dependence
    112113
    113   static std::vector <G4double*> J1;     // Vector of pointers to the J1 tabulated functions
    114   static std::vector <G4double*> J2;     // Vector of pointers to the J2 tabulated functions
    115   static std::vector <G4double*> J3;     // Vector of pointers to the J3 tabulated functions
     114  // Vector of pointers to the J1 tabulated functions
     115  static std::vector <G4double*> J1;
     116
     117  // Vector of pointers to the J2 tabulated functions
     118  static std::vector <G4double*> J2;
     119
     120  // Vector of pointers to the J3 tabulated functions
     121  static std::vector <G4double*> J3;
    116122};
    117123
    118 inline G4double G4ElectroNuclearCrossSection::DFun(G4double x)// Parametrization of the PhotoNucCS
     124
     125inline G4double
     126G4ElectroNuclearCrossSection::DFun(G4double x)
    119127{
    120   static const G4double shd=1.0734;                    // HE PomShadowing(D)
    121   static const G4double poc=0.0375;                    // HE Pomeron coefficient
    122   static const G4double pos=16.5;                      // HE Pomeron shift
    123   static const G4double reg=.11;                       // HE Reggeon slope
    124   static const G4double mel=0.5109989;                 // Mass of an electron in MeV
    125   static const G4double lmel=std::log(mel);                 // Log of an electron mass
    126   G4double y=std::exp(x-lastG-lmel);                        // y for the x
    127   G4double flux=lastG*(2.-y*(2.-y))-1.;                // flux factor
     128  // Parametrization of the PhotoNucCS
     129  static const G4double shd=1.0734;              // HE PomShadowing(D)
     130  static const G4double poc=0.0375;              // HE Pomeron coefficient
     131  static const G4double pos=16.5;                // HE Pomeron shift
     132  static const G4double reg=.11;                 // HE Reggeon slope
     133  static const G4double mel=0.5109989;           // Mass of an electron in MeV
     134  static const G4double lmel=std::log(mel);      // Log of an electron mass
     135  G4double y=std::exp(x-lastG-lmel);             // y for the x
     136  G4double flux=lastG*(2.-y*(2.-y))-1.;          // flux factor
    128137  return (poc*(x-pos)+shd*std::exp(-reg*x))*flux;
    129138}
    130139
    131 inline G4double G4ElectroNuclearCrossSection::Fun(G4double x) // Integrated PhoNuc cross section
     140
     141inline G4double
     142G4ElectroNuclearCrossSection::Fun(G4double x)
    132143{
     144  // Integrated PhoNuc cross section
    133145  G4double dlg1=lastG+lastG-1.;
    134146  G4double lgoe=lastG/lastE;
     
    137149}
    138150
    139 inline G4double G4ElectroNuclearCrossSection::HighEnergyJ1(G4double lEn)
     151
     152inline G4double
     153G4ElectroNuclearCrossSection::HighEnergyJ1(G4double lEn)
    140154{
    141155  static const G4double le=std::log(50000.); // std::log(E0)
     
    150164}
    151165
    152 inline G4double G4ElectroNuclearCrossSection::HighEnergyJ2(G4double lEn)
     166
     167inline G4double
     168G4ElectroNuclearCrossSection::HighEnergyJ2(G4double lEn)
    153169{
    154170  static const G4double e=50000.;       // E0
     
    164180}
    165181
    166 inline G4double G4ElectroNuclearCrossSection::HighEnergyJ3(G4double lEn)
     182
     183inline G4double
     184G4ElectroNuclearCrossSection::HighEnergyJ3(G4double lEn)
    167185{
    168186  static const G4double e=50000.;       // E0
  • trunk/source/processes/hadronic/cross_sections/include/G4GGNuclNuclCrossSection.hh

    r1228 r1340  
    3131//
    3232//
    33 //
    34 //
    35 //
    3633// 24.11.08 V. Grichine - first implementation based on G4GlauberGribovCrossSection
    3734//
     
    6057
    6158  virtual
    62   G4bool IsZAApplicable(const G4DynamicParticle* aDP, G4double Z, G4double A);
     59  G4bool IsIsoApplicable(const G4DynamicParticle* aDP, G4int Z, G4int A);
    6360
    6461  virtual
     
    6865
    6966  virtual
    70   G4double GetIsoZACrossSection(const G4DynamicParticle*,
    71                                 G4double Z, G4double A,
     67  G4double GetZandACrossSection(const G4DynamicParticle*,
     68                                G4int Z, G4int A,
    7269                                G4double aTemperature = 0.0);
    7370
    7471  G4double GetCoulombBarier(const G4DynamicParticle*,
    75                                 G4double Z, G4double A, G4double pR, G4double tR);
     72                            G4double Z, G4double A, G4double pR, G4double tR);
    7673
    7774  virtual
     
    8784
    8885  G4double GetHadronNucleonXsc(const G4DynamicParticle*, const G4Element*);
    89   G4double GetHadronNucleonXsc(const G4DynamicParticle*, G4double At, G4double Zt);
     86  G4double GetHadronNucleonXsc(const G4DynamicParticle*, G4int At, G4int Zt);
    9087
    9188  G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, const G4Element*);
    92   G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, G4double At, G4double Zt);
    93 
    94   // G4double GetHadronNucleonXscNS(const G4DynamicParticle*, const G4Element*);
    95   // G4double GetHadronNucleonXscNS(const G4DynamicParticle*,G4double At, G4double Zt);
    96 
     89  G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, G4int At, G4int Zt);
    9790  G4double GetHadronNucleonXscNS(G4ParticleDefinition*,G4double pTkin, G4ParticleDefinition*);
    9891
    99   // G4double GetHNinelasticXsc(const G4DynamicParticle*, const G4Element*);
    100   // G4double GetHNinelasticXsc(const G4DynamicParticle*, G4double At, G4double Zt);
    101 
    102   G4double GetHNinelasticXscVU(const G4DynamicParticle*, G4double At, G4double Zt);
    103 
    104   G4double CalculateEcmValue ( const G4double , const G4double , const G4double );
    105 
     92  G4double GetHNinelasticXscVU(const G4DynamicParticle*, G4int At, G4int Zt);
     93  G4double CalculateEcmValue(const G4double, const G4double, const G4double);
    10694  G4double CalcMandelstamS( const G4double , const G4double , const G4double );
    10795
    108   G4double GetElasticGlauberGribov(const G4DynamicParticle*,G4double Z, G4double A);
    109   G4double GetInelasticGlauberGribov(const G4DynamicParticle*,G4double Z, G4double A);
     96  G4double GetElasticGlauberGribov(const G4DynamicParticle*,G4int Z, G4int A);
     97  G4double GetInelasticGlauberGribov(const G4DynamicParticle*,G4int Z, G4int A);
    11098
    11199  G4double GetTotalGlauberGribovXsc()    { return fTotalXsc;     };
     
    118106  G4double GetNucleusRadius(const G4DynamicParticle*, const G4Element*);
    119107
    120 
    121108  G4double GetNucleusRadius(G4double At);
    122109  G4double GetNucleusRadiusGG(G4double At);
    123110  G4double GetNucleusRadiusDE(G4double At);
    124 
    125111
    126112  inline void SetEnergyLowerLimit(G4double E ){fLowerLimit=E;};
     
    144130// Inlines
    145131
    146 inline
    147 G4double G4GGNuclNuclCrossSection::GetElasticGlauberGribov(
    148          const G4DynamicParticle* dp, G4double Z, G4double A)
     132inline G4double
     133G4GGNuclNuclCrossSection::GetElasticGlauberGribov(const G4DynamicParticle* dp,
     134                                                  G4int Z, G4int A)
    149135{
    150   GetIsoZACrossSection(dp, Z, A);
     136  GetZandACrossSection(dp, Z, A);
    151137  return fElasticXsc;
    152138}
     
    154140/////////////////////////////////////////////////////////////////
    155141
    156 inline
    157 G4double G4GGNuclNuclCrossSection::GetInelasticGlauberGribov(
    158          const G4DynamicParticle* dp, G4double Z, G4double A)
     142inline G4double
     143G4GGNuclNuclCrossSection::GetInelasticGlauberGribov(const G4DynamicParticle* dp,
     144                                                    G4int Z, G4int A)
    159145{
    160   GetIsoZACrossSection(dp, Z, A);
     146  GetZandACrossSection(dp, Z, A);
    161147  return fInelasticXsc;
    162148}
    163149
    164 
    165 
    166150#endif
  • trunk/source/processes/hadronic/cross_sections/include/G4GeneralSpaceNNCrossSection.hh

    r819 r1340  
    9191      const G4Element* theTarget);
    9292
    93     virtual G4bool IsZAApplicable(const G4DynamicParticle* theProjectile,
    94       G4double ZZ, G4double AA);
     93    virtual G4bool IsIsoApplicable(const G4DynamicParticle* theProjectile,
     94      G4int ZZ, G4int AA);
    9595
    9696    virtual G4double GetCrossSection(const G4DynamicParticle* theProjectile,
    9797      const G4Element* theTarget, G4double theTemperature);
    9898
    99     virtual G4double GetIsoZACrossSection(const G4DynamicParticle* theProjectile,
    100       G4double ZZ, G4double AA, G4double theTemperature);
     99    virtual G4double GetZandACrossSection(const G4DynamicParticle* theProjectile,
     100      G4int ZZ, G4int AA, G4double theTemperature);
    101101
    102102    virtual void BuildPhysicsTable(const G4ParticleDefinition&)
     
    114114     G4IonsShenCrossSection        *Shen;
    115115};
    116 ////////////////////////////////////////////////////////////////////////////////
    117 //
     116
    118117#endif
  • trunk/source/processes/hadronic/cross_sections/include/G4GlauberGribovCrossSection.hh

    r1228 r1340  
    4747#include "G4Proton.hh"
    4848#include "G4Nucleus.hh"
     49#include "G4HadTmpUtil.hh"
    4950
    5051#include "G4VCrossSectionDataSet.hh"
     
    6364
    6465  virtual
    65   G4bool IsZAApplicable(const G4DynamicParticle* aDP, G4double Z, G4double A);
     66  G4bool IsIsoApplicable(const G4DynamicParticle* aDP, G4int Z, G4int A);
    6667
    6768  virtual
     
    7172
    7273  virtual
    73   G4double GetIsoZACrossSection(const G4DynamicParticle*,
    74                                 G4double Z, G4double A,
    75                                 G4double aTemperature = 0.0);
     74  G4double GetZandACrossSection(const G4DynamicParticle*,
     75                                G4int Z, G4int A,
     76                                G4double aTemperature = 0.0);
    7677
    7778  virtual
     
    8384  {G4cout << "G4GlauberGribovCrossSection: uses Glauber-Gribov formula"<<G4endl;}
    8485
    85   G4double GetRatioSD(const G4DynamicParticle*, G4double At, G4double Zt);
    86   G4double GetRatioQE(const G4DynamicParticle*, G4double At, G4double Zt);
     86  G4double GetRatioSD(const G4DynamicParticle*, G4int At, G4int Zt);
     87  G4double GetRatioQE(const G4DynamicParticle*, G4int At, G4int Zt);
    8788
    8889  G4double GetHadronNucleonXsc(const G4DynamicParticle*, const G4Element*);
    89   G4double GetHadronNucleonXsc(const G4DynamicParticle*, G4double At, G4double Zt);
     90  G4double GetHadronNucleonXsc(const G4DynamicParticle*, G4int At, G4int Zt);
    9091
    9192  G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, const G4Element*);
    92   G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, G4double At, G4double Zt);
     93  G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, G4int At, G4int Zt);
    9394
    9495  G4double GetHadronNucleonXscNS(const G4DynamicParticle*, const G4Element*);
    95   G4double GetHadronNucleonXscNS(const G4DynamicParticle*,G4double At, G4double Zt);
     96  G4double GetHadronNucleonXscNS(const G4DynamicParticle*, G4int At, G4int Zt);
    9697
    9798  G4double GetHNinelasticXsc(const G4DynamicParticle*, const G4Element*);
    98   G4double GetHNinelasticXsc(const G4DynamicParticle*, G4double At, G4double Zt);
    99   G4double GetHNinelasticXscVU(const G4DynamicParticle*, G4double At, G4double Zt);
     99  G4double GetHNinelasticXsc(const G4DynamicParticle*, G4int At, G4int Zt);
     100  G4double GetHNinelasticXscVU(const G4DynamicParticle*, G4int At, G4int Zt);
    100101
    101102  G4double CalculateEcmValue ( const G4double , const G4double , const G4double );
     
    103104  G4double CalcMandelstamS( const G4double , const G4double , const G4double );
    104105
    105   G4double GetElasticGlauberGribov(const G4DynamicParticle*,G4double Z, G4double A);
    106   G4double GetInelasticGlauberGribov(const G4DynamicParticle*,G4double Z, G4double A);
     106  G4double GetElasticGlauberGribov(const G4DynamicParticle*, G4int Z, G4int A);
     107  G4double GetInelasticGlauberGribov(const G4DynamicParticle*, G4int Z, G4int A);
    107108
    108109  G4double GetTotalGlauberGribovXsc()    { return fTotalXsc;     };
     
    114115
    115116  G4double GetNucleusRadius(const G4DynamicParticle*, const G4Element*);
    116   G4double GetNucleusRadius(G4double At);
    117 
    118   inline G4double GetParticleBarCorTot( const G4ParticleDefinition* theParticle, G4double Z );
    119   inline G4double GetParticleBarCorIn( const G4ParticleDefinition* theParticle, G4double Z );
     117  G4double GetNucleusRadius(G4int At);
     118
     119  inline G4double GetParticleBarCorTot(const G4ParticleDefinition* theParticle, G4int Z);
     120  inline G4double GetParticleBarCorIn(const G4ParticleDefinition* theParticle, G4int Z);
    120121
    121122  inline void SetEnergyLowerLimit(G4double E ){fLowerLimit=E;};
     
    180181
    181182inline
    182 G4double G4GlauberGribovCrossSection::GetElasticGlauberGribov(
    183          const G4DynamicParticle* dp, G4double Z, G4double A)
    184 {
    185   GetIsoZACrossSection(dp, Z, A);
     183G4double
     184G4GlauberGribovCrossSection::GetElasticGlauberGribov(const G4DynamicParticle* dp,
     185                                                     G4int Z, G4int A)
     186{
     187  GetZandACrossSection(dp, Z, A);
    186188  return fElasticXsc;
    187189}
     
    190192
    191193inline
    192 G4double G4GlauberGribovCrossSection::GetInelasticGlauberGribov(
    193          const G4DynamicParticle* dp, G4double Z, G4double A)
    194 {
    195   GetIsoZACrossSection(dp, Z, A);
     194G4double
     195G4GlauberGribovCrossSection::GetInelasticGlauberGribov(const G4DynamicParticle* dp,
     196                                                       G4int Z, G4int A)
     197{
     198  GetZandACrossSection(dp, Z, A);
    196199  return fInelasticXsc;
    197200}
     
    204207
    205208inline G4double G4GlauberGribovCrossSection::GetParticleBarCorTot(
    206                           const G4ParticleDefinition* theParticle, G4double Z )
    207 {
    208   G4int iZ = G4int(Z);
    209 
    210   if( iZ >= 2 && iZ <= 92)
     209                          const G4ParticleDefinition* theParticle, G4int Z)
     210{
     211  if(Z >= 2 && Z <= 92)
    211212  {
    212     if(      theParticle == theProton ) return fProtonBarCorrectionTot[iZ];
    213     else if( theParticle == theNeutron) return fNeutronBarCorrectionTot[iZ];
    214     else if( theParticle == thePiPlus ) return fPionPlusBarCorrectionTot[iZ];
    215     else if( theParticle == thePiMinus) return fPionMinusBarCorrectionTot[iZ];
     213    if(      theParticle == theProton ) return fProtonBarCorrectionTot[Z];
     214    else if( theParticle == theNeutron) return fNeutronBarCorrectionTot[Z];
     215    else if( theParticle == thePiPlus ) return fPionPlusBarCorrectionTot[Z];
     216    else if( theParticle == thePiMinus) return fPionMinusBarCorrectionTot[Z];
    216217    else return 1.0;
    217218  }
     
    226227
    227228inline G4double G4GlauberGribovCrossSection::GetParticleBarCorIn(
    228                           const G4ParticleDefinition* theParticle, G4double Z )
    229 {
    230   G4int iZ = G4int(Z);
    231 
    232   if( iZ >= 2 && iZ <= 92)
     229                          const G4ParticleDefinition* theParticle, G4int Z)
     230{
     231  if(Z >= 2 && Z <= 92)
    233232  {
    234     if(      theParticle == theProton ) return fProtonBarCorrectionIn[iZ];
    235     else if( theParticle == theNeutron) return fNeutronBarCorrectionIn[iZ];
    236     else if( theParticle == thePiPlus ) return fPionPlusBarCorrectionIn[iZ];
    237     else if( theParticle == thePiMinus) return fPionMinusBarCorrectionIn[iZ];
     233    if(      theParticle == theProton ) return fProtonBarCorrectionIn[Z];
     234    else if( theParticle == theNeutron) return fNeutronBarCorrectionIn[Z];
     235    else if( theParticle == thePiPlus ) return fPionPlusBarCorrectionIn[Z];
     236    else if( theParticle == thePiMinus) return fPionMinusBarCorrectionIn[Z];
    238237    else return 1.0;
    239238  }
  • trunk/source/processes/hadronic/cross_sections/include/G4HadronCaptureDataSet.hh

    r819 r1340  
    2323// * acceptance of all terms of the Geant4 Software license.          *
    2424// ********************************************************************
    25 //
    2625//
    2726//
     
    6463   }
    6564
    66    G4bool IsZAApplicable(const G4DynamicParticle* aParticle,
    67                          G4double ZZ, G4double AA)
     65   G4bool IsIsoApplicable(const G4DynamicParticle* aParticle,
     66                          G4int ZZ, G4int AA)
    6867   {
    6968     return theHadronCrossSections->IsApplicable(aParticle, ZZ, AA);
     
    7776   }
    7877
    79    G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle,
    80                             G4double ZZ, G4double AA,
    81                             G4double /*aTemperature*/)
     78   G4double GetZandACrossSection(const G4DynamicParticle* aParticle,
     79                                 G4int ZZ, G4int AA, G4double /*aTemperature*/)
    8280   {
    8381     return theHadronCrossSections->GetCaptureCrossSection(aParticle, ZZ, AA);
  • trunk/source/processes/hadronic/cross_sections/include/G4HadronCrossSections.hh

    r1337 r1340  
    2525//
    2626//
    27 // GEANT4 tag $Name: geant4-09-04-beta-01 $
     27// GEANT4 tag $Name: hadr-cross-V09-03-12 $
    2828//
    2929//
     
    5555#include "G4VProcess.hh"
    5656#include "G4DynamicParticle.hh"
    57 //#include "G4ParticleTypes.hh"
     57#include "G4HadTmpUtil.hh"
    5858#include "G4PionPlus.hh"
    5959#include "G4PionZero.hh"
     
    8484#include "G4OmegaMinus.hh"
    8585#include "G4AntiOmegaMinus.hh"
    86 //#include "G4LPhysicsFreeVector.hh"
    8786
    8887
     
    9594   G4HadronCrossSections()
    9695     : prevParticleDefinition(0), lastEkx(0.), lastEkxPower(0.), verboseLevel(0)
    97    {
    98    }
     96   {}
    9997
    10098   ~G4HadronCrossSections()
    101    {
    102    }
     99   {}
    103100
    104101   static G4HadronCrossSections* Instance()
     
    123120
    124121   G4double GetElasticCrossSection(const G4DynamicParticle*,
    125                                    G4double /*ZZ*/, G4double /*AA*/);
     122                                   G4int /*ZZ*/, G4int /*AA*/);
    126123
    127124   G4double GetInelasticCrossSection(const G4DynamicParticle*,
     
    129126
    130127   G4double GetInelasticCrossSection(const G4DynamicParticle*,
    131                                      G4double /*ZZ*/, G4double /*AA*/);
     128                                     G4int /*ZZ*/, G4int /*AA*/);
    132129
    133130   G4double GetCaptureCrossSection(const G4DynamicParticle* aParticle,
    134131                                   const G4Element* anElement)
    135132   {
    136      return GetCaptureCrossSection(aParticle, anElement->GetZ(),
    137                                               anElement->GetN());
     133     G4int Z = G4lrint(anElement->GetZ());
     134     G4int A = G4lrint(anElement->GetN());
     135     return GetCaptureCrossSection(aParticle, Z, A);
    138136   }
    139137
    140138   G4double GetCaptureCrossSection(const G4DynamicParticle*,
    141                                    G4double /*ZZ*/, G4double /*AA*/);
     139                                   G4int /*ZZ*/, G4int /*AA*/);
    142140
    143141   G4double GetFissionCrossSection(const G4DynamicParticle* aParticle,
    144142                                   const G4Element* anElement)
    145143   {
    146      return GetFissionCrossSection(aParticle, anElement->GetZ(),
    147                                               anElement->GetN());
     144     G4int Z = G4lrint(anElement->GetZ());
     145     G4int A = G4lrint(anElement->GetN());
     146     return GetFissionCrossSection(aParticle, Z, A);
    148147   }
    149148
    150149   G4double GetFissionCrossSection(const G4DynamicParticle*,
    151                                    G4double /*ZZ*/, G4double /*AA*/);
     150                                   G4int /*ZZ*/, G4int /*AA*/);
    152151
    153152
     
    177176
    178177   void CalcScatteringCrossSections(const G4DynamicParticle*,
    179                                     G4double /*ZZ*/, G4double /*AA*/);
     178                                    G4int /*ZZ*/, G4int /*AA*/);
    180179
    181180   static G4HadronCrossSections* theInstance;
     
    199198   static G4float csin[NPARTS][TSIZE];
    200199
    201 
    202200   static G4float cspiel[3][TSIZE];
    203201   static G4float cspiin[3][TSIZE];
  • trunk/source/processes/hadronic/cross_sections/include/G4HadronElasticDataSet.hh

    r819 r1340  
    6363   }
    6464
    65    G4bool IsZAApplicable(const G4DynamicParticle* aParticle,
    66                          G4double ZZ, G4double AA)
     65   G4bool IsIsoApplicable(const G4DynamicParticle* aParticle,
     66                          G4int ZZ, G4int AA)
    6767   {
    6868     return theHadronCrossSections->IsApplicable(aParticle, ZZ, AA);
     
    7777   }
    7878
    79    G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle,
    80                             G4double ZZ, G4double AA,
    81                             G4double /*aTemperature*/)
     79   G4double GetZandACrossSection(const G4DynamicParticle* aParticle,
     80                                 G4int ZZ, G4int AA,
     81                                 G4double /*aTemperature*/)
    8282   {
    8383     return theHadronCrossSections->GetElasticCrossSection(aParticle, ZZ, AA);
  • trunk/source/processes/hadronic/cross_sections/include/G4HadronFissionDataSet.hh

    r819 r1340  
    6262   }
    6363
    64    G4bool IsZAApplicable(const G4DynamicParticle* aParticle,
    65                          G4double ZZ, G4double AA)
     64   G4bool IsIsoApplicable(const G4DynamicParticle* aParticle,
     65                          G4int ZZ, G4int AA)
    6666   {
    6767     return theHadronCrossSections->IsApplicable(aParticle, ZZ, AA);
     
    7676   }
    7777
    78    G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle,
    79                             G4double ZZ, G4double AA,
    80                             G4double /*aTemperature*/)
     78   G4double GetZandACrossSection(const G4DynamicParticle* aParticle,
     79                                 G4int ZZ, G4int AA,
     80                                 G4double /*aTemperature*/)
    8181   {
    8282     return theHadronCrossSections->GetFissionCrossSection(aParticle, ZZ, AA);
  • trunk/source/processes/hadronic/cross_sections/include/G4HadronInelasticDataSet.hh

    r819 r1340  
    6363
    6464
    65    G4bool IsZAApplicable(const G4DynamicParticle* aParticle,
    66                          G4double ZZ, G4double AA)
     65   G4bool IsIsoApplicable(const G4DynamicParticle* aParticle,
     66                          G4int ZZ, G4int AA)
    6767   {
    6868     return theHadronCrossSections->IsApplicable(aParticle, ZZ, AA);
     
    7777   }
    7878
    79    G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle,
    80                             G4double ZZ, G4double AA,
    81                             G4double /*aTemperature*/)
     79   G4double GetZandACrossSection(const G4DynamicParticle* aParticle,
     80                                 G4int ZZ, G4int AA,
     81                                 G4double /*aTemperature*/)
    8282   {
    8383     return theHadronCrossSections->GetInelasticCrossSection(aParticle, ZZ, AA);
  • trunk/source/processes/hadronic/cross_sections/include/G4HadronNucleonXsc.hh

    r1228 r1340  
    3131//
    3232//
    33 //
    34 //
    3533// 14.03.07 V. Grichine - first implementation
    3634//
     
    5957
    6058  virtual
    61   G4bool IsZAApplicable(const G4DynamicParticle* aDP, G4double Z, G4double A);
     59  G4bool IsIsoApplicable(const G4DynamicParticle* aDP, G4int Z, G4int A);
    6260
    6361  virtual
  • trunk/source/processes/hadronic/cross_sections/include/G4IonProtonCrossSection.hh

    r819 r1340  
    2424// ********************************************************************
    2525//
    26 #ifndef G4IonProtonCrossSection_h
    27 #define G4IonProtonCrossSection_h
    28 
    29 #include "globals.hh"
    30 #include "G4Proton.hh"
    31 // Class Description
     26// $Id: G4IonProtonCrossSection.hh,v 1.12 2010/10/15 21:05:10 dennis Exp $
     27// GEANT4 tag $Name: hadr-cross-V09-03-12 $
     28//
     29// -------------------------------------------------------------------
     30//
     31// GEANT4 Class header file
     32//
     33// File name:    G4IonProtonCrossSection
     34//
     35//
    3236// Cross-sections for ion proton scattering up to 20 GeV, getting the low
    3337// energy threshold behaviour right.
    3438// H.P. Wellisch (TRIUMF), D. Axen (British Columbia U.). 1996.
    3539// Published in Phys.Rev.C54:1329-1332,1996
    36 // Class Description - End
     40//
     41// Original by H.P.Wellisch 28 June 2001
     42//
     43// Modifications:
     44// 30-07-2010 V.Ivanchenko move virtual methods to source,
     45//                         add constructor and destructor,
     46//                         make G4ProtonInelasticCrossSection class member,
     47//                         fix bug in kinematics
     48//
     49
     50#ifndef G4IonProtonCrossSection_h
     51#define G4IonProtonCrossSection_h 1
    3752
    3853#include "G4VCrossSectionDataSet.hh"
    39 #include "G4ProtonInelasticCrossSection.hh"
     54#include "globals.hh"
     55
     56class G4ProtonInelasticCrossSection;
    4057
    4158class G4IonProtonCrossSection : public G4VCrossSectionDataSet
    4259{
    43    public:
     60public:
    4461
    45    virtual
    46    G4bool IsZAApplicable(const G4DynamicParticle* aPart, G4double /*ZZ*/,
    47                          G4double AA)
    48    {
    49      G4bool result = false;
    50      if((AA < 1.1) &&
    51         ( aPart->GetKineticEnergy()/aPart->GetDefinition()
    52                                          ->GetBaryonNumber() < 20*GeV &&
    53           aPart->GetDefinition()->GetBaryonNumber() > 4)
    54        ) result = true;
    55      return result;
    56    }
     62  G4IonProtonCrossSection();
    5763
    58    virtual
    59    G4bool IsApplicable(const G4DynamicParticle* aPart, const G4Element* anEle)
    60    {
    61      return IsZAApplicable(aPart, 0., anEle->GetN());
    62    }
     64  virtual ~G4IonProtonCrossSection();
    6365
    64    virtual
    65    G4double GetCrossSection(const G4DynamicParticle* aPart,
    66                             const G4Element*, G4double )
    67    {
    68      return GetIsoZACrossSection(aPart, 0., 0., 0.);
    69    }
     66  virtual
     67  G4bool IsApplicable(const G4DynamicParticle* aPart, const G4Element* anEle);
    7068
    71    virtual
    72    G4double GetIsoZACrossSection(const G4DynamicParticle* aPart,
    73                                  G4double /*ZZ*/, G4double /*AA*/,
    74                                  G4double /*temperature*/)
    75    {
    76      G4ProtonInelasticCrossSection theForward;
    77      return theForward.GetCrossSection(aPart->GetKineticEnergy(),
    78                                   aPart->GetDefinition()->GetBaryonNumber(),
    79                                   aPart->GetDefinition()->GetPDGCharge());
    80    }
     69  virtual
     70  G4bool IsIsoApplicable(const G4DynamicParticle* aPart,
     71                         G4int Z, G4int A);
    8172
     73  virtual
     74  G4double GetCrossSection(const G4DynamicParticle* aPart,
     75                           const G4Element*, G4double);
     76 
     77  virtual
     78  G4double GetZandACrossSection(const G4DynamicParticle* aPart,
     79                                G4int Z=1, G4int A=1, G4double T=0.);
    8280
    83    virtual
    84    void BuildPhysicsTable(const G4ParticleDefinition&)
    85    {}
     81  virtual void BuildPhysicsTable(const G4ParticleDefinition&);
    8682
    87    virtual
    88    void DumpPhysicsTable(const G4ParticleDefinition&)
    89    {G4cout << "G4IonProtonCrossSection: uses formula"<<G4endl;}
     83  virtual void DumpPhysicsTable(const G4ParticleDefinition&);
     84
     85private: // Without Description
     86
     87  G4IonProtonCrossSection & operator=(const G4IonProtonCrossSection &right);
     88  G4IonProtonCrossSection(const G4IonProtonCrossSection&);
     89
     90  G4ProtonInelasticCrossSection* theForward;
    9091
    9192};
  • trunk/source/processes/hadronic/cross_sections/include/G4IonsKoxCrossSection.hh

    r819 r1340  
    5757   G4bool IsApplicable(const G4DynamicParticle* aDP, const G4Element*)
    5858   {
    59      return IsZAApplicable(aDP, 0., 0.);
     59     return IsIsoApplicable(aDP, 0, 0);
    6060   }
    61    
     61
     62
    6263   virtual
    63    G4bool IsZAApplicable(const G4DynamicParticle* aDP, G4double /*ZZ*/,
    64                        G4double /*AA*/)
     64   G4bool IsIsoApplicable(const G4DynamicParticle* aDP,
     65                          G4int /*ZZ*/, G4int /*AA*/)
    6566   {
    6667      G4int baryonNumber = aDP->GetDefinition()->GetBaryonNumber();
     
    7172   }
    7273
     74
    7375   virtual
    7476   G4double GetCrossSection(const G4DynamicParticle*,
    7577                            const G4Element*, G4double aTemperature);
    7678
     79
    7780   virtual
    78    G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double ZZ,
    79                                  G4double AA, G4double aTemperature);
     81   G4double GetZandACrossSection(const G4DynamicParticle*, G4int ZZ,
     82                                 G4int AA, G4double aTemperature);
    8083
    8184   virtual
  • trunk/source/processes/hadronic/cross_sections/include/G4IonsShenCrossSection.hh

    r819 r1340  
    6161   G4bool IsApplicable(const G4DynamicParticle* aDP, const G4Element*)
    6262   {
    63       return IsZAApplicable(aDP, 0., 0.);
     63     return IsIsoApplicable(aDP, 0, 0);
    6464   }
    6565
    6666   virtual
    67    G4bool IsZAApplicable(const G4DynamicParticle* aDP,
    68                          G4double /*ZZ*/, G4double /*AA*/)
     67   G4bool IsIsoApplicable(const G4DynamicParticle* aDP,
     68                          G4int /*ZZ*/, G4int /*AA*/)
    6969   {
    70       G4int baryonNumber = aDP->GetDefinition()->GetBaryonNumber();
    71       G4double kineticEnergy = aDP->GetKineticEnergy();
    72       if ( kineticEnergy / baryonNumber <= upperLimit )
    73          return true;
    74       return false;
     70     G4int baryonNumber = aDP->GetDefinition()->GetBaryonNumber();
     71     G4double kineticEnergy = aDP->GetKineticEnergy();
     72     if ( kineticEnergy / baryonNumber <= upperLimit )
     73        return true;
     74     return false;
    7575   }
    7676
     
    8181
    8282   virtual
    83    G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double ZZ,
    84                                  G4double AA, G4double aTemperature);
     83   G4double GetZandACrossSection(const G4DynamicParticle*, G4int ZZ,
     84                                 G4int AA, G4double aTemperature);
    8585
    8686   virtual
     
    9797      const G4double r0;
    9898
    99       G4double calEcmValue ( const G4double , const G4double , const G4double );
    100       G4double calCeValue ( const G4double );
     99      G4double calEcmValue(const G4double, const G4double, const G4double);
     100      G4double calCeValue(const G4double);
    101101};
    102102
  • trunk/source/processes/hadronic/cross_sections/include/G4IonsSihverCrossSection.hh

    r819 r1340  
    5454   G4bool IsApplicable(const G4DynamicParticle* aDP, const G4Element*)
    5555   {
    56      return IsZAApplicable(aDP, 0., 0.);
     56     return IsIsoApplicable(aDP, 0, 0);
    5757   }
    5858
    5959   virtual
    60    G4bool IsZAApplicable(const G4DynamicParticle* aDP, G4double /*ZZ*/,
    61                          G4double /*AA*/)
     60   G4bool IsIsoApplicable(const G4DynamicParticle* aDP, G4int /*ZZ*/,
     61                          G4int /*AA*/)
    6262   {
    6363      G4int BaryonNumber = aDP->GetDefinition()->GetBaryonNumber();
     
    7373
    7474   virtual
    75    G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double ZZ,
    76                                  G4double AA, G4double aTemperature);
     75   G4double GetZandACrossSection(const G4DynamicParticle*, G4int ZZ,
     76                                 G4int AA, G4double aTemperature);
    7777
    7878   virtual
  • trunk/source/processes/hadronic/cross_sections/include/G4NeutronCaptureXS.hh

    r1337 r1340  
    2424// ********************************************************************
    2525//
    26 // $Id: G4NeutronCaptureXS.hh,v 1.1 2009/11/12 00:36:01 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-04-beta-01 $
     26// $Id: G4NeutronCaptureXS.hh,v 1.4 2010/10/15 22:32:40 dennis Exp $
     27// GEANT4 tag $Name: hadr-cross-V09-03-12 $
    2828//
    2929// -------------------------------------------------------------------
     
    3838// Modifications:
    3939//
     40
     41// Class Description:
     42// This is a base class for neutron radiative capture cross section based on
     43// data files from G4NEUTRONXSDATA data set
     44// Class Description - End
    4045 
    41 
    4246#ifndef G4NeutronCaptureXS_h
    4347#define G4NeutronCaptureXS_h 1
     
    4549#include "G4VCrossSectionDataSet.hh"
    4650#include "globals.hh"
     51#include <vector>
    4752
    4853class G4DynamicParticle;
     
    5560public: // With Description
    5661
    57   G4int Z;
    5862  G4NeutronCaptureXS();
    5963
    6064  virtual ~G4NeutronCaptureXS();
    6165
    62   // The following methods need to be implemented for each new data set.
    6366  virtual
    6467  G4bool IsApplicable(const G4DynamicParticle*, const G4Element*);
    6568
    6669  virtual
    67   G4bool IsZAApplicable(const G4DynamicParticle*,
    68                         G4double /*Z*/, G4double /*A*/);
     70  G4bool IsIsoApplicable(const G4DynamicParticle*, G4int /*Z*/, G4int /*A*/);
    6971
    7072  virtual
     
    7981  void DumpPhysicsTable(const G4ParticleDefinition&);
    8082
    81 
    82 public: // Without Description
    83 
    84   inline void SetVerboseLevel(G4int value)
    85   {
    86     verboseLevel = value;
    87   }
    88   inline G4int GetVerboseLevel()
    89   {
    90     return verboseLevel;
    91   }
    92 
    93 private: // Without Description
     83private:
    9484
    9585  void Initialise(G4int Z, const char* = 0);
     
    9888  G4NeutronCaptureXS(const G4NeutronCaptureXS&);
    9989
    100   G4double         emax;
    101   G4PhysicsVector* data[93];
     90  G4double emax;
     91  G4int    maxZ;
     92  std::vector<G4PhysicsVector*> data;
    10293
    10394  G4bool  isInitialized;
  • trunk/source/processes/hadronic/cross_sections/include/G4NeutronElasticXS.hh

    r1337 r1340  
    2424// ********************************************************************
    2525//
    26 // $Id: G4NeutronElasticXS.hh,v 1.3 2009/11/19 11:51:46 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-04-beta-01 $
     26// $Id: G4NeutronElasticXS.hh,v 1.6 2010/10/15 22:32:55 dennis Exp $
     27// GEANT4 tag $Name: hadr-cross-V09-03-12 $
    2828//
    2929// -------------------------------------------------------------------
     
    3939//
    4040 
     41// Class Description:
     42// This is a base class for neutron elastic hadronic cross section based on
     43// data files from G4NEUTRONXSDATA data set
     44// Class Description - End
    4145
    4246#ifndef G4NeutronElasticXS_h
     
    4549#include "G4VCrossSectionDataSet.hh"
    4650#include "globals.hh"
     51#include <vector>
    4752
    4853class G4DynamicParticle;
     
    5156class G4PhysicsVector;
    5257class G4GlauberGribovCrossSection;
     58class G4HadronNucleonXsc;
    5359
    5460class G4NeutronElasticXS : public G4VCrossSectionDataSet
     
    5662public: // With Description
    5763
    58   G4int Z;
    5964  G4NeutronElasticXS();
    6065
    6166  virtual ~G4NeutronElasticXS();
    6267
    63   // The following methods need to be implemented for each new data set.
    6468  virtual
    6569  G4bool IsApplicable(const G4DynamicParticle*, const G4Element*);
    6670
    6771  virtual
    68   G4bool IsZAApplicable(const G4DynamicParticle*,
    69                         G4double /*Z*/, G4double /*A*/);
     72  G4bool IsIsoApplicable(const G4DynamicParticle*, G4int /*Z*/, G4int /*A*/);
    7073
    7174  virtual
     
    8083  void DumpPhysicsTable(const G4ParticleDefinition&);
    8184
    82 public: // Without Description
    83 
    84   inline void SetVerboseLevel(G4int value)
    85   {
    86     verboseLevel = value;
    87   }
    88   inline G4int GetVerboseLevel()
    89   {
    90     return verboseLevel;
    91   }
    92 
    93 private: // Without Description
     85private:
    9486
    9587  void Initialise(G4int Z, G4DynamicParticle* dp = 0, const char* = 0);
     
    9991 
    10092  G4GlauberGribovCrossSection* ggXsection;
     93  G4HadronNucleonXsc* fNucleon;
    10194
    102   G4PhysicsVector* data[93];
    103   G4double         coeff[93];
     95  const G4ParticleDefinition* proton;
     96
     97  std::vector<G4PhysicsVector*> data;
     98  std::vector<G4double>         coeff;
     99  G4int   maxZ;
    104100
    105101  G4bool  isInitialized;
  • trunk/source/processes/hadronic/cross_sections/include/G4NeutronInelasticCrossSection.hh

    r1228 r1340  
    5858   }
    5959
    60    G4bool IsZAApplicable(const G4DynamicParticle* aPart,
    61                          G4double ZZ, G4double /*AA*/)
     60   G4bool IsIsoApplicable(const G4DynamicParticle* aPart,
     61                          G4int ZZ, G4int /*AA*/)
    6262   {
    6363     G4bool result = false;
     
    7474                            const G4Element*, G4double aTemperature);
    7575
    76    G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle,
    77                                  G4double ZZ, G4double AA,
     76   G4double GetZandACrossSection(const G4DynamicParticle* aParticle,
     77                                 G4int ZZ, G4int AA,
    7878                                 G4double /*aTemperature*/)
    7979   {
     
    8282 
    8383
    84    G4double GetCrossSection(G4double anEnergy, G4double anA, G4double aZ);
     84   G4double GetCrossSection(G4double anEnergy, G4int anA, G4int aZ);
     85
    8586
    8687   virtual
  • trunk/source/processes/hadronic/cross_sections/include/G4NeutronInelasticXS.hh

    r1337 r1340  
    2424// ********************************************************************
    2525//
    26 // $Id: G4NeutronInelasticXS.hh,v 1.3 2009/11/19 11:52:27 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-04-beta-01 $
     26// $Id: G4NeutronInelasticXS.hh,v 1.6 2010/10/15 22:33:22 dennis Exp $
     27// GEANT4 tag $Name: hadr-cross-V09-03-12 $
    2828//
    2929// -------------------------------------------------------------------
     
    3838// Modifications:
    3939//
     40
     41// Class Description:
     42// This is a base class for neutron inelastic hadronic cross section based on
     43// data files from G4NEUTRONXSDATA data set
     44// Class Description - End
    4045 
    41 
    4246#ifndef G4NeutronInelasticXS_h
    4347#define G4NeutronInelasticXS_h 1
     
    4549#include "G4VCrossSectionDataSet.hh"
    4650#include "globals.hh"
     51#include <vector>
    4752
    4853class G4DynamicParticle;
     
    5156class G4PhysicsVector;
    5257class G4GlauberGribovCrossSection;
     58class G4HadronNucleonXsc;
    5359
    5460class G4NeutronInelasticXS : public G4VCrossSectionDataSet
    5561{
    56 public: // With Description
     62public:
    5763
    58   G4int Z;
    5964  G4NeutronInelasticXS();
    6065
    6166  virtual ~G4NeutronInelasticXS();
    6267
    63   // The following methods need to be implemented for each new data set.
    6468  virtual
    6569  G4bool IsApplicable(const G4DynamicParticle*, const G4Element*);
    6670
    6771  virtual
    68   G4bool IsZAApplicable(const G4DynamicParticle*,
    69                         G4double /*Z*/, G4double /*A*/);
     72  G4bool IsIsoApplicable(const G4DynamicParticle*, G4int /*Z*/, G4int /*A*/);
    7073
    7174  virtual
    72   G4double GetCrossSection(const G4DynamicParticle*,
    73                            const G4Element*,
     75  G4double GetCrossSection(const G4DynamicParticle*, const G4Element*,
    7476                           G4double aTemperature = 0.);
    7577
     
    8082  void DumpPhysicsTable(const G4ParticleDefinition&);
    8183
    82 public: // Without Description
    83 
    84   inline void SetVerboseLevel(G4int value)
    85   {
    86     verboseLevel = value;
    87   }
    88   inline G4int GetVerboseLevel()
    89   {
    90     return verboseLevel;
    91   }
    92 
    93 private: // Without Description
     84private:
    9485
    9586  void Initialise(G4int Z, G4DynamicParticle* dp = 0, const char* = 0);
     
    9990 
    10091  G4GlauberGribovCrossSection* ggXsection;
     92  G4HadronNucleonXsc* fNucleon;
    10193
    102   G4PhysicsVector* data[93];
    103   G4double         coeff[93];
     94  const G4ParticleDefinition* proton;
     95
     96  std::vector<G4PhysicsVector*> data;
     97  std::vector<G4double>         coeff;
     98  G4int   maxZ;
    10499
    105100  G4bool  isInitialized;
  • trunk/source/processes/hadronic/cross_sections/include/G4NucleonNuclearCrossSection.hh

    r819 r1340  
    5252  virtual ~G4NucleonNuclearCrossSection();
    5353
    54   virtual G4bool IsApplicable(const G4DynamicParticle* aParticle, const G4Element* anElement);
    55 
    56   virtual G4bool IsZAApplicable(const G4DynamicParticle* aParticle, G4double Z, G4double A);
     54  virtual G4bool IsApplicable(const G4DynamicParticle* aParticle,
     55                              const G4Element* anElement);
     56
     57  virtual G4bool IsIsoApplicable(const G4DynamicParticle* aParticle,
     58                                 G4int Z, G4int A);
    5759
    5860  G4double GetCrossSection(const G4DynamicParticle* aParticle,
     
    6062                           G4double T=0.);
    6163
    62   G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle,
    63                                 G4double ZZ, G4double AA, G4double T=0. );
     64  G4double GetZandACrossSection(const G4DynamicParticle* aParticle,
     65                                G4int ZZ, G4int AA, G4double T=0. );
    6466
    6567  G4double GetElasticCrossSection(const G4DynamicParticle* aParticle,
    66                                   G4double ZZ, G4double AA);
     68                                  G4int ZZ, G4int AA);
    6769
    6870  G4double GetTotalXsc()  { return fTotalXsc;   };
     
    190192inline
    191193G4double G4NucleonNuclearCrossSection::GetElasticCrossSection(
    192          const G4DynamicParticle* dp, G4double ZZ, G4double AA)
     194         const G4DynamicParticle* dp, G4int ZZ, G4int AA)
    193195{
    194   GetIsoZACrossSection(dp, ZZ, AA);
     196  GetZandACrossSection(dp, ZZ, AA);
    195197  return fElasticXsc;
    196198}
  • trunk/source/processes/hadronic/cross_sections/include/G4PhotoNuclearCrossSection.hh

    r1337 r1340  
    2525//
    2626//
    27 // GEANT4 tag $Name: geant4-09-04-beta-01 $
     27// GEANT4 tag $Name: hadr-cross-V09-03-12 $
    2828//
    2929//
     
    5353  G4bool IsApplicable(const G4DynamicParticle* particle, const G4Element* )
    5454  {
    55     return IsZAApplicable(particle, 0, 0);
     55    return IsIsoApplicable(particle, 0, 0);
    5656  }
    5757
    58   G4bool IsZAApplicable(const G4DynamicParticle* particle,
    59                         G4double /*ZZ*/, G4double /*AA*/)
     58  G4bool IsIsoApplicable(const G4DynamicParticle* particle,
     59                         G4int /*ZZ*/, G4int /*AA*/)
    6060  {
    6161    G4bool result = false;
     
    6868                           const G4Element* element, G4double temp = 0.);
    6969
    70   G4double GetIsoZACrossSection(const G4DynamicParticle* particle,
    71                                 G4double ZZ, G4double AA,
    72                                 G4double /*aTemperature*/);
     70
     71  G4double GetZandACrossSection(const G4DynamicParticle* particle,
     72                                G4int ZZ, G4int AA, G4double /*aTemperature*/);
    7373
    7474
     
    7878
    7979private:
    80   G4int    GetFunctions(G4double a, G4double* y, G4double* z);
    81   G4double EquLinearFit(G4double X, G4int N,const G4double X0,const G4double XD, const G4double* Y);
     80
     81  G4int GetFunctions(G4double a, G4double* y, G4double* z);
     82  G4double EquLinearFit(G4double X, G4int N, const G4double X0,
     83                        const G4double XD, const G4double* Y);
    8284  G4double ThresholdEnergy(G4int Z, G4int N);
    8385
    8486// Body
    8587private:
     88
    8689  static G4int     lastN;   // The last N of calculated nucleus
    8790  static G4int     lastZ;   // The last Z of calculated nucleus
     
    9396  static G4double  lastSP;  // Last value of the ShadowingPomeron (A-dependent)
    9497
    95   static std::vector <G4double*> GDR;   // Vector of pointers to the GDRPhotonuclearCrossSection
    96   static std::vector <G4double*> HEN;   // Vector of pointers to the HighEnPhotonuclearCrossSect
     98  // Vector of pointers to the GDRPhotonuclearCrossSection
     99  static std::vector <G4double*> GDR;
     100
     101  // Vector of pointers to the HighEnPhotonuclearCrossSect
     102  static std::vector <G4double*> HEN;
    97103
    98104};
  • trunk/source/processes/hadronic/cross_sections/include/G4PiNuclearCrossSection.hh

    r1228 r1340  
    4242  virtual ~G4PiNuclearCrossSection();
    4343
    44   G4bool IsApplicable(const G4DynamicParticle* aParticle, const G4Element* anElement)
     44  G4bool IsApplicable(const G4DynamicParticle* aParticle,
     45                      const G4Element* anElement)
    4546  {
    4647    G4bool result = false;
     
    5253  }
    5354
    54   G4bool IsZAApplicable(const G4DynamicParticle* particle,
    55                         G4double ZZ, G4double /*AA*/)
     55  G4bool
     56  IsIsoApplicable(const G4DynamicParticle* particle, G4int ZZ, G4int /*AA*/)
    5657  {
    5758    G4bool result = false;
    5859    if(particle->GetDefinition() == G4PionMinus::PionMinus()) result=true;
    5960    if(particle->GetDefinition() == G4PionPlus::PionPlus())   result=true;
    60     if(G4lrint(ZZ) == 1) result = false;
     61    if(ZZ == 1) result = false;
    6162    if(particle->GetKineticEnergy() > 99.9*TeV) result=false;
    6263    return result;
    6364  }
     65
    6466
    6567  G4double GetCrossSection(const G4DynamicParticle* particle,
     
    6769                           G4double temperature)
    6870  {
    69     return GetIsoZACrossSection(particle, element->GetZ(),
    70                                 element->GetN(), temperature);
     71    G4int Z = G4lrint(element->GetZ());
     72    G4int A = G4lrint(element->GetN());
     73    return GetZandACrossSection(particle, Z, A, temperature);
    7174  }
    7275
    73   G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle,
    74                                 G4double ZZ, G4double AA,
     76  G4double GetZandACrossSection(const G4DynamicParticle* aParticle,
     77                                G4int ZZ, G4int AA,
    7578                                G4double /*aTemperature*/);
    7679
    77   G4double GetTotalXsc()  { return fTotalXsc;   };
    78   G4double GetElasticXsc(){ return fElasticXsc; };
     80  G4double GetTotalXsc() {return fTotalXsc;};
     81  G4double GetElasticXsc() {return fElasticXsc;};
    7982
    8083
  • trunk/source/processes/hadronic/cross_sections/include/G4ProtonInelasticCrossSection.hh

    r1228 r1340  
    5656   {
    5757     G4bool result = false;
    58      if(( aPart->GetDefinition()==G4Proton::Proton()) &&
     58     if ( (aPart->GetDefinition()==G4Proton::Proton()) &&
    5959        ( aPart->GetKineticEnergy()<100*TeV) ) result = true;
    6060     if(aEle->GetZ()<3) result = false;
     
    6262   }
    6363
    64    G4bool IsZAApplicable(const G4DynamicParticle* aParticle,
    65                          G4double ZZ, G4double /*AA*/)
     64
     65   G4bool
     66   IsIsoApplicable(const G4DynamicParticle* aParticle, G4int ZZ, G4int /*AA*/)
    6667   {
    6768     G4bool result = false;
     
    7273   }
    7374
     75
    7476   virtual
    7577   G4double GetCrossSection(const G4DynamicParticle*,
    7678                            const G4Element*, G4double aTemperature);
     79
    7780   
    78    G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle,
    79                                  G4double ZZ, G4double AA,
    80                                 G4double /*aTemperature*/)
     81   G4double
     82   GetZandACrossSection(const G4DynamicParticle* aParticle,
     83                        G4int ZZ, G4int AA, G4double /*aTemperature*/)
    8184   {
    8285     return GetCrossSection(aParticle->GetKineticEnergy(), AA, ZZ);
     
    8487 
    8588
    86    G4double GetCrossSection(G4double anEnergy, G4double anA, G4double aZ);
     89   G4double GetCrossSection(G4double anEnergy, G4int anA, G4int aZ);
     90
    8791
    8892   virtual
    8993   void BuildPhysicsTable(const G4ParticleDefinition&)
    9094   {}
     95
    9196
    9297   virtual
  • trunk/source/processes/hadronic/cross_sections/include/G4TripathiCrossSection.hh

    r1196 r1340  
    4949   G4bool IsApplicable(const G4DynamicParticle* aPart, const G4Element*)
    5050   {
    51      return IsZAApplicable(aPart, 0., 0.);
     51     return IsIsoApplicable(aPart, 0, 0);
    5252   }
    5353
    5454   virtual
    55    G4bool IsZAApplicable(const G4DynamicParticle* aPart, G4double /*ZZ*/,
    56                          G4double /*AA*/)
     55   G4bool IsIsoApplicable(const G4DynamicParticle* aPart,
     56                          G4int /*ZZ*/, G4int /*AA*/)
    5757   {
    5858     G4bool result = false;
    59      if(( aPart->GetDefinition()->GetBaryonNumber()>2.5) &&
     59     if ( (aPart->GetDefinition()->GetBaryonNumber()>2.5) &&
    6060        ( aPart->GetKineticEnergy()/aPart->GetDefinition()->GetBaryonNumber()<1*GeV) ) result = true;
    6161     return result;
     
    6868
    6969   virtual
    70    G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double ZZ,
    71                                  G4double AA, G4double aTemperature);
     70   G4double GetZandACrossSection(const G4DynamicParticle*, G4int ZZ,
     71                                 G4int AA, G4double aTemperature);
    7272
    7373   virtual
  • trunk/source/processes/hadronic/cross_sections/include/G4TripathiLightCrossSection.hh

    r819 r1340  
    8686      const G4Element* theTarget);
    8787
    88     virtual G4bool IsZAApplicable(const G4DynamicParticle* theProjectile,
    89       G4double ZZ, G4double AA);
     88    virtual G4bool IsIsoApplicable(const G4DynamicParticle* theProjectile,
     89                                   G4int ZZ, G4int AA);
    9090
    9191    virtual G4double GetCrossSection(const G4DynamicParticle* theProjectile,
     
    9393
    9494    virtual
    95     G4double GetIsoZACrossSection(const G4DynamicParticle* theProjectile,
    96                                   G4double ZZ, G4double AA,
     95    G4double GetZandACrossSection(const G4DynamicParticle* theProjectile,
     96                                  G4int ZZ, G4int AA,
    9797                                  G4double theTemperature);
    9898
     
    102102    virtual void DumpPhysicsTable(const G4ParticleDefinition&)
    103103    {G4cout << "G4TripathiLightCrossSection: uses formula"<<G4endl;}
    104     void SetLowEnergyCheck (G4bool);
     104    void SetLowEnergyCheck(G4bool);
    105105
    106106  private:
     
    110110    G4bool         lowEnergyCheck;
    111111};
    112 ///////////////////////////////////////////////////////////////////////////////
    113 //
     112
    114113#endif
  • trunk/source/processes/hadronic/cross_sections/include/G4UElasticCrossSection.hh

    r819 r1340  
    6161
    6262  virtual
    63   G4bool IsZAApplicable(const G4DynamicParticle*, G4double Z, G4double A);
     63  G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A);
    6464
    6565  virtual
     
    6868
    6969  virtual
    70   G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double /*Z*/,
    71                                 G4double /*A*/, G4double aTemperature = 0.);
     70  G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/,
     71                                G4int /*A*/, G4double aTemperature = 0.);
    7272
    7373  virtual
  • trunk/source/processes/hadronic/cross_sections/include/G4UInelasticCrossSection.hh

    r819 r1340  
    6161
    6262  virtual
    63   G4bool IsZAApplicable(const G4DynamicParticle*, G4double Z, G4double A);
     63  G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A);
    6464
    6565  virtual
     
    6868
    6969  virtual
    70   G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double /*Z*/,
    71                                 G4double /*A*/, G4double aTemperature = 0.);
     70  G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/,
     71                                G4int /*A*/, G4double aTemperature = 0.);
    7272
    7373  virtual
     
    9090  G4HadronCrossSections*          fGheisha;
    9191
    92 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    93 
    9492};
    9593
  • trunk/source/processes/hadronic/cross_sections/include/G4UPiNuclearCrossSection.hh

    r1315 r1340  
    3939#include "G4DynamicParticle.hh"
    4040#include "G4DataVector.hh"
     41#include "G4HadTmpUtil.hh"
    4142#include "globals.hh"
    4243#include <vector>
     
    5758
    5859  virtual
    59   G4bool IsZAApplicable(const G4DynamicParticle* aParticle,
    60                         G4double Z, G4double A);
     60  G4bool IsIsoApplicable(const G4DynamicParticle* aParticle,
     61                         G4int Z, G4int A);
    6162
    6263  virtual
     
    6566
    6667  virtual
    67   G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle,
    68                                 G4double Z, G4double A, G4double T=0.);
     68  G4double GetZandACrossSection(const G4DynamicParticle* aParticle,
     69                                G4int Z, G4int A, G4double T=0.);
    6970
    7071  G4double GetElasticCrossSection(const G4DynamicParticle* aParticle,
     
    7273
    7374  G4double GetElasticCrossSection(const G4DynamicParticle* aParticle,
    74                                   G4double Z, G4double A);
     75                                  G4int Z, G4int A);
    7576
    7677  G4double GetInelasticCrossSection(const G4DynamicParticle* aParticle,
     
    7879
    7980  G4double GetInelasticCrossSection(const G4DynamicParticle* aParticle,
    80                                     G4double Z, G4double A);
     81                                    G4int Z, G4int A);
    8182
    8283  void BuildPhysicsTable(const G4ParticleDefinition&);
     
    9192                  const G4double* in, const G4double* e, G4int n);
    9293
    93   G4double Interpolate(G4double Z, G4double A, G4double ekin,
     94  G4double Interpolate(G4int Z, G4int A, G4double ekin,
    9495                       G4PhysicsTable*);
    9596
     
    115116                     const G4Element* elm)
    116117{
    117   return IsZAApplicable(part, elm->GetZ(), elm->GetN());
     118  G4int Z = G4lrint(elm->GetZ());
     119  G4int A = G4lrint(elm->GetN());
     120  return IsIsoApplicable(part, Z, A);
    118121}
    119122
    120 inline G4bool G4UPiNuclearCrossSection::IsZAApplicable(
    121                      const G4DynamicParticle* part,
    122                      G4double Z, G4double)
     123inline G4bool
     124G4UPiNuclearCrossSection::IsIsoApplicable(const G4DynamicParticle* part,
     125                                          G4int Z, G4int)
    123126{
    124127  return ((part->GetDefinition() == piMinus ||
    125128           part->GetDefinition() == piPlus) &&
    126            Z > 1.5);
     129           Z > 1);
    127130}
    128131
     
    131134                      const G4Element* elm, G4double)
    132135{
    133   return GetInelasticCrossSection(dp, elm->GetZ(), elm->GetN());
     136  G4int Z = G4lrint(elm->GetZ());
     137  G4int A = G4lrint(elm->GetN());
     138  return GetInelasticCrossSection(dp, Z, A);
    134139}
    135140
    136 inline G4double G4UPiNuclearCrossSection::GetIsoZACrossSection(
    137                       const G4DynamicParticle* dp,
    138                       G4double Z, G4double A, G4double)
     141inline G4double
     142G4UPiNuclearCrossSection::GetZandACrossSection(const G4DynamicParticle* dp,
     143                                               G4int Z, G4int A, G4double)
    139144{
    140145  return GetInelasticCrossSection(dp, Z, A);
     
    145150                      const G4Element* elm)
    146151{
    147   return GetInelasticCrossSection(dp, elm->GetZ(), elm->GetN());
     152  G4int Z = G4lrint(elm->GetZ());
     153  G4int A = G4lrint(elm->GetN());
     154  return GetInelasticCrossSection(dp, Z, A);
    148155}
    149156
     
    152159                      const G4Element* elm)
    153160{
    154   return GetElasticCrossSection(dp, elm->GetZ(), elm->GetN());
     161  G4int Z = G4lrint(elm->GetZ());
     162  G4int A = G4lrint(elm->GetN());
     163  return GetElasticCrossSection(dp, Z, A);
    155164}
    156165
  • trunk/source/processes/hadronic/cross_sections/include/G4VCrossSectionDataSet.hh

    r1337 r1340  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VCrossSectionDataSet.hh,v 1.13 2009/01/24 11:54:47 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-04-beta-01 $
     26// $Id: G4VCrossSectionDataSet.hh,v 1.14 2010/07/05 13:39:11 vnivanch Exp $
     27// GEANT4 tag $Name: hadr-cross-V09-03-12 $
    2828//
    2929// -------------------------------------------------------------------
     
    3838// Modifications:
    3939// 23.01.2009 V.Ivanchenko move constructor and destructor to source
     40// 05.07.2010 V.Ivanchenko added name, min and max energy limit and
     41//            corresponding access methods
    4042//
    4143 
     
    5860public: //with description
    5961
    60   G4VCrossSectionDataSet();
     62  G4VCrossSectionDataSet(const G4String& nam = "");
    6163
    6264  virtual ~G4VCrossSectionDataSet();
     
    6870  virtual
    6971  G4bool IsZAApplicable(const G4DynamicParticle*, G4double /*Z*/, G4double /*A*/);
     72
     73  virtual
     74  G4bool IsIsoApplicable(const G4DynamicParticle*, G4int /*Z*/, G4int /*N*/);
    7075
    7176  virtual
     
    8388
    8489  virtual
     90  G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/,
     91                                G4int /*A*/, G4double aTemperature = 0.);
     92
     93  virtual
    8594  void BuildPhysicsTable(const G4ParticleDefinition&) = 0;
    8695
     
    9099public: // Without Description
    91100
    92   inline void SetVerboseLevel(G4int value)
    93   {
    94     verboseLevel = value;
    95   }
     101  inline void SetVerboseLevel(G4int value);
    96102
    97   inline G4int GetVerboseLevel()
    98   {
    99     return verboseLevel;
    100   }
     103  inline G4double GetMinKinEnergy() const;
     104
     105  inline void SetMinKinEnergy(G4double value);
     106
     107  inline G4double GetMaxKinEnergy() const;
     108
     109  inline void SetMaxKinEnergy(G4double value);
     110
     111  inline const G4String& GetName() const;
    101112
    102113protected:
    103114
    104115  G4int verboseLevel;
     116
     117private:
     118
     119  G4VCrossSectionDataSet & operator=(const G4VCrossSectionDataSet &right);
     120  G4VCrossSectionDataSet(const G4VCrossSectionDataSet&);
     121
     122  G4double minKinEnergy;
     123  G4double maxKinEnergy;
     124
     125  const G4String name;
    105126};
    106127
     128inline void G4VCrossSectionDataSet::SetVerboseLevel(G4int value)
     129{
     130  verboseLevel = value;
     131}
     132
     133inline void G4VCrossSectionDataSet::SetMinKinEnergy(G4double value)
     134{
     135  minKinEnergy = value;
     136}
     137
     138inline G4double G4VCrossSectionDataSet::GetMinKinEnergy() const
     139{
     140  return minKinEnergy;
     141}
     142
     143inline void G4VCrossSectionDataSet::SetMaxKinEnergy(G4double value)
     144{
     145  maxKinEnergy = value;
     146}
     147
     148inline G4double G4VCrossSectionDataSet::GetMaxKinEnergy() const
     149{
     150  return maxKinEnergy;
     151}
     152
     153inline const G4String& G4VCrossSectionDataSet::GetName() const
     154{
     155  return name;
     156}
     157
    107158#endif
Note: See TracChangeset for help on using the changeset viewer.