Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // 27 // author: Vladimir.Grichine@cern.ch 28 // 29 // Implements data from: Barashenkov V.S., Nuc 30 // Preprint JINR P2-89-770, p. 12, Dubna 1989 31 // Based on G4NucleonNuclearCrossSection class 32 // 33 // Modifications: 16.08.2018 V.Ivanchenko majo 34 // 35 36 #ifndef G4ComponentBarNucleonNucleusXsc_h 37 #define G4ComponentBarNucleonNucleusXsc_h 38 39 40 #include "G4VComponentCrossSection.hh" 41 #include "G4ParticleDefinition.hh" 42 #include "G4DynamicParticle.hh" 43 44 #include "globals.hh" 45 #include "G4PiData.hh" 46 #include <vector> 47 48 class G4ComponentBarNucleonNucleusXsc : public 49 { 50 51 public: 52 53 G4ComponentBarNucleonNucleusXsc(); 54 ~G4ComponentBarNucleonNucleusXsc() override 55 56 G4double GetTotalIsotopeCrossSection(const G 57 G4double kinEnergy, 58 G4int Z, G4int ) final; 59 60 G4double GetTotalElementCrossSection(const G 61 G4double kinEnergy, 62 G4int Z, G4double ) final; 63 64 G4double GetInelasticIsotopeCrossSection(con 65 G4double kinEnergy, 66 G4int Z, G4int ) final; 67 68 G4double GetInelasticElementCrossSection(con 69 G4double kinEnergy, 70 G4int Z, G4double ) final; 71 72 G4double GetElasticElementCrossSection(const 73 G4double kinEnergy, 74 G4int Z, G4double ) final; 75 76 G4double GetElasticIsotopeCrossSection(const 77 G4double kinEnergy, 78 G4int Z, G4int ) final; 79 80 void ComputeCrossSections(const G4ParticleDe 81 G4double kinEnergy, G4int Z); 82 83 void Description(std::ostream&) const final; 84 85 inline G4double GetElementCrossSection(const 86 inline G4double GetElasticCrossSection(const 87 88 inline G4double GetTotalXsc() { return f 89 inline G4double GetElasticXsc() { return f 90 inline G4double GetInelasticXsc() { return f 91 92 G4ComponentBarNucleonNucleusXsc& operator= 93 (const G4ComponentBarNucleonNucleusXsc &righ 94 G4ComponentBarNucleonNucleusXsc(const G4Comp 95 96 private: 97 98 G4double Interpolate(G4int Z1, G4int Z2, G4i 99 100 void LoadData(); 101 102 // cross sections 103 G4double fTotalXsc{0.0}; 104 G4double fInelasticXsc{0.0}; 105 G4double fElasticXsc{0.0}; 106 107 // particles 108 const G4ParticleDefinition* theProton; 109 const G4ParticleDefinition* theNeutron; 110 111 static G4double A75[93]; 112 static const G4int NZ = 17; 113 static G4int theZ[NZ]; 114 static std::vector<G4PiData*>* thePData; 115 static std::vector<G4PiData*>* theNData; 116 }; 117 118 inline 119 G4double G4ComponentBarNucleonNucleusXsc::GetE 120 const G4DynamicParticle* dp, G4int Z) 121 { 122 ComputeCrossSections(dp->GetDefinition(), dp 123 return fInelasticXsc; 124 } 125 126 inline 127 G4double G4ComponentBarNucleonNucleusXsc::GetE 128 const G4DynamicParticle* dp, G4int Z) 129 { 130 ComputeCrossSections(dp->GetDefinition(), dp 131 return fElasticXsc; 132 } 133 134 #endif 135