G4NucleonNuclearCrossSection.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 // author: Vladimir.Grichine@cern.ch
00027 //
00028 // Implements data from: Barashenkov V.S., Nucleon-Nucleus Cross Section,
00029 // Preprint JINR P2-89-770, p. 12, Dubna 1989 (scanned version from KEK)
00030 // Based on G. Folger version of G4PiNuclearCrossSection class
00031 //
00032 // Modified:
00033 // 05.03.07 V.Ivanchenko - add IfZAApplicable, remove "debug"
00034 // 06.03.07 V.Ivanchenko - add GetElasticCrossSection for combined dataset
00035 //
00036 
00037 #ifndef G4NucleonNuclearCrossSection_h
00038 #define G4NucleonNuclearCrossSection_h
00039 
00040 #include "G4VCrossSectionDataSet.hh"
00041 #include "G4ParticleDefinition.hh"
00042 
00043 #include "globals.hh"
00044 #include "G4PiData.hh"
00045 #include "G4HadTmpUtil.hh"
00046 
00047 class G4NucleonNuclearCrossSection : public G4VCrossSectionDataSet
00048 {
00049 public:
00050   
00051   G4NucleonNuclearCrossSection();
00052   virtual ~G4NucleonNuclearCrossSection();
00053     
00054   static const char* Default_Name() {return "G4NucleonNuclearCrossSection";}
00055 
00056   virtual G4bool IsElementApplicable(const G4DynamicParticle* aParticle,
00057                                      G4int Z, 
00058                                      const G4Material* mat = 0);
00059 
00060   virtual G4double GetElementCrossSection(const G4DynamicParticle* aParticle, 
00061                                           G4int Z, 
00062                                           const G4Material* mat = 0);
00063 
00064   virtual void CrossSectionDescription(std::ostream&) const;
00065 
00066   inline G4double GetElasticCrossSection(const G4DynamicParticle* aParticle, 
00067                                          G4int Z);
00068 
00069   inline G4double GetTotalXsc()  { return fTotalXsc;   };
00070   inline G4double GetElasticXsc(){ return fElasticXsc; };
00071   
00072 private:
00073 
00074   G4double Interpolate(G4int Z1, G4int Z2, G4int Z, G4double x1, G4double x2);
00075 
00076 // add Hydrogen from PDG group.
00077 
00078 static const G4double e1[44];
00079 
00080 static const G4double he_m_t[44];
00081 static const G4double he_m_in[44];
00082 static const G4double he_p_in[44];
00083 
00084 static const G4double be_m_t[44];
00085 static const G4double be_m_in[44];
00086 static const G4double be_p_in[44];
00087 
00088 static const G4double c_m_t[44];
00089 static const G4double c_m_in[44];
00090 static const G4double c_p_in[44];
00091 
00092 
00093 static const G4double e2[44];
00094 
00095 static const G4double n_m_t[44];
00096 static const G4double n_m_in[44];
00097 static const G4double n_p_in[44];
00098 
00099 static const G4double o_m_t[44];
00100 static const G4double o_m_in[44];
00101 static const G4double o_p_in[44];
00102 
00103 static const G4double na_m_t[44];
00104 static const G4double na_m_in[44];
00105 static const G4double na_p_in[44];
00106 
00107 
00108 static const G4double e3[45];
00109 
00110 // static const G4double e3_1[31];
00111 
00112 static const G4double al_m_t[45];
00113 static const G4double al_m_in[45];
00114 static const G4double al_p_in[45];
00115 
00116 static const G4double si_m_t[45];
00117 static const G4double si_m_in[45];
00118 static const G4double si_p_in[45];
00119 
00120 static const G4double ca_m_t[45];
00121 static const G4double ca_m_in[45];
00122 static const G4double ca_p_in[45];
00123 
00124 
00125 static const G4double e4[47];
00126 
00127 static const G4double fe_m_t[47];
00128 static const G4double fe_m_in[47];
00129 static const G4double fe_p_in[47];
00130 
00131 static const G4double cu_m_t[47];
00132 static const G4double cu_m_in[47];
00133 static const G4double cu_p_in[47];
00134 
00135 static const G4double mo_m_t[47];
00136 static const G4double mo_m_in[47];
00137 static const G4double mo_p_in[47];
00138 
00139 
00140 static const G4double e5[48];
00141 
00142 static const G4double cd_m_t[48];
00143 static const G4double cd_m_in[48];
00144 static const G4double cd_p_in[48];
00145 
00146 static const G4double sn_m_t[48];
00147 static const G4double sn_m_in[48];
00148 static const G4double sn_p_in[48];
00149 
00150 static const G4double w_m_t[48];
00151 static const G4double w_m_in[48];
00152 static const G4double w_p_in[48];
00153 
00154 static const G4double e6[46];
00155 
00156 // static const G4double e7[46];
00157 
00158 static const G4double pb_m_t[46];
00159 static const G4double pb_m_in[46];
00160 static const G4double pb_p_in[46];
00161 
00162 static const G4double u_m_t[46];
00163 static const G4double u_m_in[46];
00164 static const G4double u_p_in[46];
00165 
00166 // vectors for treatment
00167 
00168 std::vector< G4int >     theZ;
00169 std::vector< G4PiData* > thePipData;
00170 std::vector< G4PiData* > thePimData;
00171 
00172   // cross sections
00173 
00174   G4double fTotalXsc;
00175   G4double fElasticXsc;
00176 
00177   // particles
00178   const G4ParticleDefinition* theProton;
00179   const G4ParticleDefinition* theNeutron;
00180 
00181 };
00182 
00183 inline
00184 G4double G4NucleonNuclearCrossSection::GetElasticCrossSection(
00185          const G4DynamicParticle* dp, G4int Z)
00186 {
00187   GetElementCrossSection(dp, Z);
00188   return fElasticXsc;
00189 }
00190 
00191 #endif

Generated on Mon May 27 17:49:07 2013 for Geant4 by  doxygen 1.4.7