NdbMTDir.cxx

Go to the documentation of this file.
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 /* ========= NdbMTDir ========  */
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 } // ~NdbMTDir
00022 
00023 /* -------- LoadENDF -------- */
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); // Skip one number
00047         NFOR    = endf.ReadInt(&error);
00048 
00049         AWI     = endf.ReadReal(&error);
00050                   endf.ReadReal(&error);        // Skip three number
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); // Skip one number
00060         NWD     = endf.ReadInt(&error);
00061         NXC     = endf.ReadInt(&error);
00062 
00063 //
00064 // Author, Dates, etc, skip 'em for the moment
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 // Skip comments
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 //printf("ZSYMAM=\"%s\"\n",ZSYMAM);
00084 //printf("ALAB=\"%s\"\n",ALAB);
00085 //printf("EDATE=\"%s\"\n",EDATE);
00086 //printf("AUTH=\"%s\"\n",AUTH);
00087 //printf("REF=\"%s\"\n",REF);
00088 //printf("DDATE=\"%s\"\n",DDATE);
00089 //printf("RDATE=\"%s\"\n",RDATE);
00090 //printf("ENDATE=\"%s\"\n",ENDATE);
00091 //printf("INFO=\"%s\"\n",INFO.Data());
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 //printf("MF=%d MT=%d MC=%d\n",dir_mf[i], dir_mt[i], dir_mc[i]);
00106         }
00107         return kFALSE;
00108 } // LoadENDF

Generated on Tue Jul 5 15:15:04 2011 for ROOT_528-00b_version by  doxygen 1.5.1