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 #ifndef G4NeutronHPPhotonXSection_h
00030 #define G4NeutronHPPhotonXSection_h 1
00031
00032 #include <fstream>
00033 #include <CLHEP/Units/SystemOfUnits.h>
00034
00035 #include "globals.hh"
00036 #include "G4ios.hh"
00037 #include "Randomize.hh"
00038 #include "G4NeutronHPVector.hh"
00039 #include "G4VNeutronVector.hh"
00040
00041
00042
00043 class G4NeutronHPPhotonXSection
00044 {
00045 public:
00046 G4NeutronHPPhotonXSection()
00047 {
00048 theExclusive = 0;
00049 theExShell = 0;
00050 theExEnergy = 0;
00051 theExFlag = 0;
00052 theExDisFlag = 0;
00053 }
00054 ~G4NeutronHPPhotonXSection()
00055 {
00056 if(theExclusive!=0) delete [] theExclusive;
00057 if(theExShell != 0) delete [] theExShell;
00058 if(theExEnergy != 0) delete [] theExEnergy;
00059 if(theExFlag != 0) delete [] theExFlag;
00060 if(theExDisFlag != 0) delete [] theExDisFlag;
00061 }
00062
00063 inline void Init(std::ifstream & aDataFile)
00064 {
00065 aDataFile >> nChannels >> targetMass;
00066 if(nChannels!=1)
00067 {
00068 aDataFile >> theIncEnergy>>theIncShell>>theIncFlag>>theIncDisFlag;
00069 theaDataFileInclusive.Init(aDataFile, CLHEP::eV);
00070 }
00071 theExclusive = new G4NeutronHPVector[nChannels];
00072 theExShell = new G4double[nChannels];
00073 theExEnergy = new G4double[nChannels];
00074 theExFlag = new G4int[nChannels];
00075 theExDisFlag = new G4int[nChannels];
00076 for(G4int i=0; i<nChannels; i++)
00077 {
00078 aDataFile>>theExEnergy[i]>>theExShell[i]>>theExFlag[i]>>theExDisFlag[i];
00079 theExclusive[i].Init(aDataFile,CLHEP::eV);
00080 }
00081 }
00082
00083 G4double Sample(G4double anEnergy)
00084 {
00085 return -1;
00086 }
00087
00088 private:
00089
00090 G4double targetMass;
00091
00092 G4double theIncShell;
00093 G4double theIncEnergy;
00094 G4int theIncFlag
00095 G4int theIncDisFlag;
00096 G4NeutronHPVector theInclusive;
00097
00098 G4int nChannels;
00099 G4double * theExShell;
00100 G4double * theExEnergy;
00101 G4int * theExFlag
00102 G4int * theExDisFlag;
00103 G4NeutronHPVector * theExclusive;
00104
00105 };
00106
00107 #endif