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 00028 #ifndef G4XNNElasticLowE_h 00029 #define G4XNNElasticLowE_h 00030 00031 #include "globals.hh" 00032 #include "G4VCrossSectionSource.hh" 00033 #include "G4CrossSectionVector.hh" 00034 #include "G4PhysicsVector.hh" 00035 #include <map> 00036 00037 class G4KineticTrack; 00038 00039 class G4XNNElasticLowE : public G4VCrossSectionSource 00040 { 00041 00042 public: 00043 00044 G4XNNElasticLowE(); 00045 00046 virtual ~G4XNNElasticLowE(); 00047 00048 G4bool operator==(const G4XNNElasticLowE &right) const; 00049 G4bool operator!=(const G4XNNElasticLowE &right) const; 00050 00051 virtual G4double CrossSection(const G4KineticTrack& trk1, const G4KineticTrack& trk2) const; 00052 00053 virtual const G4CrossSectionVector* GetComponents() const { return 0; } 00054 00055 virtual G4bool IsValid(G4double e) const; 00056 00057 virtual G4String Name() const; 00058 00059 virtual void Print() const; 00060 00061 virtual G4double HighLimit() const { return _highLimit; } 00062 00063 00064 protected: 00065 00066 00067 private: 00068 00069 G4XNNElasticLowE(const G4XNNElasticLowE &right); 00070 const G4XNNElasticLowE& operator=(const G4XNNElasticLowE &right); 00071 00072 static const G4double _lowLimit; 00073 static const G4double _highLimit; 00074 static const G4double ppTable[101]; 00075 static const G4double npTable[101]; 00076 static const G4int tableSize; 00077 static const G4double _eMinTable; 00078 static const G4double _eStepLog; 00079 00080 std::map <G4ParticleDefinition *, G4PhysicsVector*, std::less<G4ParticleDefinition *> > xMap; 00081 00082 G4double _eMin; 00083 G4double _eMax; 00084 00085 }; 00086 00087 #endif 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 00120 00121 00122 00123 00124 00125 00126 00127 00128 00129 00130