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 // 28 // GEANT4 Class header file 29 // 30 // 31 // File name: G4NeutronInelasticXS 32 // 33 // Author Ivantchenko, Geant4, 3-AUG-09 34 // 35 36 // Class Description: 37 // This is a base class for neutron inelastic 38 // data files from G4PARTICLEXSDATA data set 39 // Class Description - End 40 41 #ifndef G4NeutronInelasticXS_h 42 #define G4NeutronInelasticXS_h 1 43 44 #include "G4VCrossSectionDataSet.hh" 45 #include "globals.hh" 46 #include "G4ElementData.hh" 47 #include "G4PhysicsVector.hh" 48 #include <vector> 49 50 class G4DynamicParticle; 51 class G4ParticleDefinition; 52 class G4Element; 53 class G4VComponentCrossSection; 54 55 class G4NeutronInelasticXS final : public G4VC 56 { 57 public: 58 59 G4NeutronInelasticXS(); 60 61 ~G4NeutronInelasticXS() override = default; 62 63 static const char* Default_Name() { return " 64 65 G4bool IsElementApplicable(const G4DynamicPa 66 const G4Material*) final; 67 68 G4bool IsIsoApplicable(const G4DynamicPartic 69 const G4Element*, const G4Material*) fi 70 71 G4double GetElementCrossSection(const G4Dyna 72 G4int Z, const G4Material*) final; 73 74 G4double ComputeCrossSectionPerElement(G4dou 75 const 76 const 77 const 78 79 G4double ComputeIsoCrossSection(G4double kin 80 const G4Part 81 G4int Z, G4i 82 const G4Isot 83 const G4Elem 84 const G4Mate 85 86 G4double GetIsoCrossSection(const G4DynamicP 87 const G4Isotope* 88 const G4Element* 89 const G4Material 90 91 const G4Isotope* SelectIsotope(const G4Eleme 92 G4double kinE 93 94 void BuildPhysicsTable(const G4ParticleDefin 95 96 void CrossSectionDescription(std::ostream&) 97 98 G4double ElementCrossSection(G4double kinEne 99 100 G4double IsoCrossSection(G4double ekin, G4do 101 102 G4NeutronInelasticXS & operator=(const G4Neu 103 G4NeutronInelasticXS(const G4NeutronInelasti 104 105 private: 106 107 void Initialise(G4int Z); 108 109 void InitialiseOnFly(G4int Z); 110 111 const G4String& FindDirectoryPath(); 112 113 inline const G4PhysicsVector* GetPhysicsVect 114 115 G4PhysicsVector* RetrieveVector(std::ostring 116 117 G4VComponentCrossSection* ggXsection = nullp 118 119 const G4ParticleDefinition* neutron; 120 121 std::vector<G4double> temp; 122 123 G4double elimit; 124 G4double lowElimit; 125 G4double loglowElimit; 126 127 G4bool isInitializer{false}; 128 129 static const G4int MAXZINEL = 93; 130 static G4ElementData* data; 131 static G4double coeff[MAXZINEL]; 132 static G4double lowcoeff[MAXZINEL]; 133 static G4String gDataDirectory; 134 }; 135 136 inline 137 const G4PhysicsVector* G4NeutronInelasticXS::G 138 { 139 const G4PhysicsVector* pv = data->GetElement 140 if (pv == nullptr) { 141 InitialiseOnFly(Z); 142 pv = data->GetElementData(Z); 143 } 144 return pv; 145 } 146 147 #endif 148