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 00027 #ifndef G4XNNTotalLowE_h 00028 #define G4XNNTotalLowE_h 00029 00030 #include <map> 00031 #include <CLHEP/Units/SystemOfUnits.h> 00032 00033 #include "globals.hh" 00034 #include "G4VCrossSectionSource.hh" 00035 #include "G4CrossSectionVector.hh" 00036 #include "G4LowEXsection.hh" 00037 00038 class G4KineticTrack; 00039 00040 class G4XNNTotalLowE : public G4VCrossSectionSource 00041 { 00042 00043 public: 00044 00045 G4XNNTotalLowE(); 00046 00047 virtual ~G4XNNTotalLowE(); 00048 00049 virtual G4double CrossSection(const G4KineticTrack& trk1, const G4KineticTrack& trk2) const; 00050 virtual const G4CrossSectionVector* GetComponents() const { return 0; } 00051 virtual G4bool IsValid(G4double e) const; 00052 00053 virtual G4String Name() const; 00054 virtual G4double HighLimit() const { return 3.*CLHEP::GeV; } 00055 00056 00057 protected: 00058 00059 00060 private: 00061 00062 G4XNNTotalLowE(const G4XNNTotalLowE &right); 00063 const G4XNNTotalLowE& operator=(const G4XNNTotalLowE &right); 00064 00065 static const G4double ppTot[29]; 00066 static const G4double ss[29]; 00067 static const G4double npTot[29]; 00068 static const G4int tableSize; 00069 00070 std::map <G4ParticleDefinition *, G4LowEXsection *, 00071 std::less<G4ParticleDefinition *> > theCrossSections; 00072 typedef std::map <G4ParticleDefinition *, G4LowEXsection*, std::less<G4ParticleDefinition *> > LowEMap; 00073 00074 }; 00075 00076 #endif 00077 00078 00079 00080 00081 00082 00083 00084 00085 00086 00087 00088 00089 00090 00091 00092 00093 00094 00095 00096 00097 00098 00099 00100 00101 00102 00103 00104 00105 00106 00107 00108 00109 00110 00111 00112 00113 00114 00115 00116 00117 00118 00119