00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef G4NeutronHPElementData_h
00036 #define G4NeutronHPElementData_h 1
00037 #include "globals.hh"
00038 #include "G4NeutronHPIsoData.hh"
00039 #include "G4NeutronHPVector.hh"
00040 #include "G4Material.hh"
00041 #include "G4HadronCrossSections.hh"
00042 #include "G4ReactionProduct.hh"
00043 #include "G4Nucleus.hh"
00044
00045
00046
00047 #include "G4NeutronHPElasticData.hh"
00048 #include "G4NeutronHPFissionData.hh"
00049 #include "G4NeutronHPCaptureData.hh"
00050 #include "G4NeutronHPInelasticData.hh"
00051 #include "G4StableIsotopes.hh"
00052
00053 class G4NeutronHPElementData : public G4HadronCrossSections
00054 {
00055 public:
00056
00057 G4NeutronHPElementData();
00058
00059 ~G4NeutronHPElementData();
00060
00061 void Init(G4Element * theElement);
00062
00063
00064 void UpdateData(G4int A, G4int Z, G4int index, G4double abundance) { G4int M=0; UpdateData( A, Z, M, index, abundance); };
00065 void UpdateData(G4int A, G4int Z, G4int M, G4int index, G4double abundance);
00066
00067 void Harmonise(G4NeutronHPVector *& theStore, G4NeutronHPVector * theNew);
00068
00069 inline G4NeutronHPVector * GetData(G4NeutronHPFissionData * )
00070 {return theFissionData;}
00071 inline G4NeutronHPVector * GetData(G4NeutronHPCaptureData * )
00072 {return theCaptureData;}
00073 inline G4NeutronHPVector * GetData(G4NeutronHPElasticData * )
00074 {return theElasticData;}
00075 inline G4NeutronHPVector * GetData(G4NeutronHPInelasticData * )
00076 {return theInelasticData;}
00077
00078 G4NeutronHPVector * MakePhysicsVector(G4Element * theElement,
00079 G4ParticleDefinition * theP,
00080 G4NeutronHPFissionData* theSet);
00081
00082 G4NeutronHPVector * MakePhysicsVector(G4Element * theElement,
00083 G4ParticleDefinition * theP,
00084 G4NeutronHPCaptureData * theSet);
00085
00086 G4NeutronHPVector * MakePhysicsVector(G4Element * theElement,
00087 G4ParticleDefinition * theP,
00088 G4NeutronHPElasticData * theSet);
00089
00090 G4NeutronHPVector * MakePhysicsVector(G4Element * theElement,
00091 G4ParticleDefinition * theP,
00092 G4NeutronHPInelasticData * theSet);
00093
00094 private:
00095
00096 G4NeutronHPVector * theFissionData;
00097 G4NeutronHPVector * theCaptureData;
00098 G4NeutronHPVector * theElasticData;
00099 G4NeutronHPVector * theInelasticData;
00100 G4double precision;
00101
00102 G4NeutronHPVector * theBuffer;
00103
00104 G4NeutronHPIsoData * theIsotopeWiseData;
00105
00106 G4StableIsotopes theStableOnes;
00107
00108 G4String filename;
00109
00110 };
00111
00112 #endif