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 #ifndef G4ecpssrBaseKxsModel_hh
00028 #define G4ecpssrBaseKxsModel_hh 1
00029
00030 #include "G4VecpssrKModel.hh"
00031 #include "globals.hh"
00032 #include <map>
00033 #include <vector>
00034
00035 #include "G4CrossSectionDataSet.hh"
00036
00037
00038 class G4ecpssrBaseKxsModel : public G4VecpssrKModel
00039 {
00040 public:
00041
00042 G4ecpssrBaseKxsModel();
00043
00044 ~G4ecpssrBaseKxsModel();
00045
00046
00047 G4double CalculateCrossSection(G4int, G4double, G4double);
00048
00049 G4double ExpIntFunction(G4int n,G4double x);
00050
00051 private:
00052
00053 G4ecpssrBaseKxsModel(const G4ecpssrBaseKxsModel&);
00054 G4ecpssrBaseKxsModel & operator = (const G4ecpssrBaseKxsModel &right);
00055
00056 G4double FunctionFK(G4double k, G4double theta);
00057
00058 G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
00059
00060 G4double LinLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
00061
00062 G4double QuadInterpolator(G4double e11,
00063 G4double e12,
00064 G4double e21,
00065 G4double e22,
00066 G4double x11,
00067 G4double x12,
00068 G4double x21,
00069 G4double x22,
00070 G4double t1,
00071 G4double t2,
00072 G4double t,
00073 G4double e);
00074
00075 typedef std::map<double, std::map<double, double> > TriDimensionMap;
00076
00077 TriDimensionMap FKData;
00078 std::vector<double> dummyVec;
00079
00080 typedef std::map<double, std::vector<double> > VecMap;
00081 VecMap aVecMap;
00082
00083 G4int verboseLevel;
00084
00085 G4CrossSectionDataSet* tableC1;
00086 G4CrossSectionDataSet* tableC2;
00087 G4CrossSectionDataSet* tableC3;
00088 };
00089
00090 #endif