00001 #include <stdlib.h>
00002 #include <string.h>
00003
00004 #include "NdbDefs.h"
00005 #include "NdbEndfIO.h"
00006 #include "NdbMTDir.h"
00007
00008 ClassImp(NdbMTDir);
00009
00010
00011 NdbMTDir::~NdbMTDir( )
00012 {
00013 if (ZSYMAM) free(ZSYMAM);
00014 if (ALAB) free(ALAB);
00015 if (EDATE) free(EDATE);
00016 if (AUTH) free(AUTH);
00017 if (REF) free(REF);
00018 if (DDATE) free(DDATE);
00019 if (RDATE) free(RDATE);
00020 if (ENDATE) free(ENDATE);
00021 }
00022
00023
00024 Bool_t
00025 NdbMTDir::LoadENDF( char *filename )
00026 {
00027 Bool_t error;
00028
00029 NdbEndfIO endf(filename,TENDF_READ);
00030
00031 if (!endf.IsOpen()) return kTRUE;
00032
00033 endf.FindMFMT(1,MT());
00034
00035 ZA = endf.ReadReal(&error);
00036 AWR = endf.ReadReal(&error);
00037 LRP = endf.ReadInt(&error);
00038 LFI = endf.ReadInt(&error);
00039 NLIB = endf.ReadInt(&error);
00040 NMOD = endf.ReadInt(&error);
00041
00042 ELIS = endf.ReadReal(&error);
00043 STA = endf.ReadInt(&error);
00044 LIS = endf.ReadInt(&error);
00045 LISO = endf.ReadInt(&error);
00046 endf.ReadInt(&error);
00047 NFOR = endf.ReadInt(&error);
00048
00049 AWI = endf.ReadReal(&error);
00050 endf.ReadReal(&error);
00051 endf.ReadInt(&error);
00052 endf.ReadInt(&error);
00053 NSUB = endf.ReadInt(&error);
00054 NVER = endf.ReadInt(&error);
00055
00056 TEMP = endf.ReadReal(&error);
00057 endf.ReadReal(&error);
00058 LDRV = endf.ReadInt(&error);
00059 endf.ReadInt(&error);
00060 NWD = endf.ReadInt(&error);
00061 NXC = endf.ReadInt(&error);
00062
00063
00064
00065
00066 endf.ReadLine();
00067 ZSYMAM = strdup(endf.Substr(0,11));
00068 ALAB = strdup(endf.Substr(11,10));
00069 EDATE = strdup(endf.Substr(22,10));
00070 AUTH = strdup(endf.Substr(33,33));
00071 endf.ReadLine();
00072 REF = strdup(endf.Substr(1,20));
00073 DDATE = strdup(endf.Substr(22,10));
00074 RDATE = strdup(endf.Substr(33,10));
00075 ENDATE = strdup(endf.Substr(55,6));
00076
00077
00078 for (int i=0; i<NWD-2; i++) {
00079 endf.ReadLine();
00080 INFO.Append(endf.Substr(0,66));
00081 INFO.Append("\n");
00082 }
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 dir_mf.Set(NXC);
00094 dir_mt.Set(NXC);
00095 dir_mc.Set(NXC);
00096 dir_mod.Set(NXC);
00097
00098 endf.ReadLine();
00099 for (int i=0; i<NXC; i++) {
00100 dir_mf.AddAt(endf.ReadInt(&error,2), i);
00101 dir_mt.AddAt(endf.ReadInt(&error), i);
00102 dir_mc.AddAt(endf.ReadInt(&error), i);
00103 dir_mod.AddAt(endf.ReadInt(&error), i);
00104 endf.ReadLine();
00105
00106 }
00107 return kFALSE;
00108 }