Ignore:
Timestamp:
Mar 30, 2007 5:26:06 PM (16 years ago)
Author:
srkline
Message:

more transferring of functions to NCNR_* files.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/SANSReduction/branches/kline_29MAR07/Put in User Procedures/SANS_Reduction_v5.00/WorkFileUtils.ipf

    r47 r72  
    11301130End 
    11311131 
    1132 //function to read in the ASC output of SANS reduction 
    1133 // currently the file has 20 header lines, followed by a single column 
    1134 // of 16384 values, Data is written by row, starting with Y=1 and X=(1->128) 
    1135 // 
    1136 //returns 0 if read was ok 
    1137 //returns 1 if there was an error 
    1138 // 
    1139 // assumes a square detector 
    1140 // 
    1141 Function ReadASCData(fname,destPath) 
    1142         String fname, destPath 
    1143         //this function is for reading in ASCII data so put data in user-specified folder 
    1144         SetDataFolder "root:"+destPath 
    1145  
    1146         NVAR pixelsX = root:myGlobals:gNPixelsX 
    1147         NVAR pixelsY = root:myGlobals:gNPixelsY 
    1148         Variable refNum=0,ii,p1,p2,tot,num=pixelsX,numHdrLines=20 
    1149         String str="" 
    1150         //data is initially linear scale 
    1151         Variable/G :gIsLogScale=0 
    1152         Make/O/T/N=(numHdrLines) hdrLines 
    1153         Make/O/D/N=(num*num) data//,linear_data 
    1154          
    1155         //full filename and path is now passed in... 
    1156         //actually open the file 
    1157 //      SetDataFolder destPath 
    1158         Open/R/Z refNum as fname                // /Z flag means I must handle open errors 
    1159         if(refnum==0)           //FNF error, get out 
    1160                 DoAlert 0,"Could not find file: "+fname 
    1161                 Close/A 
    1162                 SetDataFolder root: 
    1163                 return(1) 
    1164         endif 
    1165         if(V_flag!=0) 
    1166                 DoAlert 0,"File open error: V_flag="+num2Str(V_Flag) 
    1167                 Close/A 
    1168                 SetDataFolder root: 
    1169                 return(1) 
    1170         Endif 
    1171         //  
    1172         for(ii=0;ii<numHdrLines;ii+=1)          //read (or skip) 18 header lines 
    1173                 FReadLine refnum,str 
    1174                 hdrLines[ii]=str 
    1175         endfor 
    1176         //       
    1177         Close refnum 
    1178          
    1179 //      SetDataFolder destPath 
    1180         LoadWave/Q/G/D/N=temp fName 
    1181         Wave/Z temp0=temp0 
    1182         data=temp0 
    1183         Redimension/N=(pixelsX,pixelsY) data//,linear_data 
    1184          
    1185         //linear_data = data 
    1186          
    1187         KillWaves/Z temp0  
    1188          
    1189         //return the data folder to root 
    1190         SetDataFolder root: 
    1191          
    1192         Return(0) 
    1193 End 
     1132 
    11941133 
    11951134//fileStr must be the FULL path and filename on disk 
     
    12621201End 
    12631202 
    1264 // fills the "default" fake header so that the SANS Reduction machinery does not have to be altered 
    1265 // pay attention to what is/not to be trusted due to "fake" information 
    1266 // 
    1267 // destFolder is of the form "myGlobals:WorkMath:AAA" 
    1268 // 
    1269 Function FillFakeHeader_ASC(destFolder) 
    1270         String destFolder 
    1271         Make/O/N=23 $("root:"+destFolder+":IntegersRead") 
    1272         Make/O/N=52 $("root:"+destFolder+":RealsRead") 
    1273         Make/O/T/N=11 $("root:"+destFolder+":TextRead") 
    1274          
    1275         Wave intw=$("root:"+destFolder+":IntegersRead") 
    1276         Wave realw=$("root:"+destFolder+":RealsRead") 
    1277         Wave/T textw=$("root:"+destFolder+":TextRead") 
    1278          
    1279         //Put in appropriate "fake" values 
    1280         //parse values as needed from headerLines 
    1281         Wave/T hdr=$("root:"+destFolder+":hdrLines") 
    1282         Variable monCt,lam,offset,sdd,trans,thick 
    1283         Variable xCtr,yCtr,a1,a2,a1a2Dist,dlam,bsDiam 
    1284         String detTyp="" 
    1285         String tempStr="",formatStr="",junkStr="" 
    1286         formatStr = "%g %g %g %g %g %g" 
    1287         tempStr=hdr[3] 
    1288         sscanf tempStr, formatStr, monCt,lam,offset,sdd,trans,thick 
    1289 //      Print monCt,lam,offset,sdd,trans,thick,avStr,step 
    1290         formatStr = "%g %g %g %g %g %g %g %s" 
    1291         tempStr=hdr[5] 
    1292         sscanf tempStr,formatStr,xCtr,yCtr,a1,a2,a1a2Dist,dlam,bsDiam,detTyp 
    1293 //      Print xCtr,yCtr,a1,a2,a1a2Dist,dlam,bsDiam,detTyp 
    1294          
    1295         realw[16]=xCtr          //xCtr(pixels) 
    1296         realw[17]=yCtr  //yCtr (pixels) 
    1297         realw[18]=sdd           //SDD (m) 
    1298         realw[26]=lam           //wavelength (A) 
    1299         // 
    1300         // necessary values 
    1301         realw[10]=5                     //detector calibration constants, needed for averaging 
    1302         realw[11]=10000 
    1303         realw[12]=0 
    1304         realw[13]=5 
    1305         realw[14]=10000 
    1306         realw[15]=0 
    1307         // 
    1308         // used in the resolution calculation, ONLY here to keep the routine from crashing 
    1309         realw[20]=65            //det size 
    1310         realw[27]=dlam  //delta lambda 
    1311         realw[21]=bsDiam        //BS size 
    1312         realw[23]=a1            //A1 
    1313         realw[24]=a2    //A2 
    1314         realw[25]=a1a2Dist      //A1A2 distance 
    1315         realw[4]=trans          //trans 
    1316         realw[3]=0              //atten 
    1317         realw[5]=thick          //thick 
    1318         // 
    1319         // 
    1320         realw[0]=monCt          //def mon cts 
    1321  
    1322         // fake values to get valid deadtime and detector constants 
    1323         // 
    1324         textw[9]=detTyp+"  "            //6 characters 4+2 spaces 
    1325         textw[3]="[NGxSANS00]"  //11 chars, NGx will return default values for atten trans, deadtime...  
    1326          
    1327         //set the string values 
    1328         formatStr="FILE: %s CREATED: %s" 
    1329         sscanf hdr[0],formatStr,tempStr,junkStr 
    1330 //      Print tempStr 
    1331 //      Print junkStr 
    1332         String/G $("root:"+destFolder+":fileList") = tempStr 
    1333         textw[0] = tempStr              //filename 
    1334         textw[1] = junkStr              //run date-time 
    1335          
    1336         //file label = hdr[1] 
    1337         tempStr = hdr[1] 
    1338         tempStr = tempStr[0,strlen(tempStr)-2]          //clean off the last LF 
    1339 //      Print tempStr 
    1340         textW[6] = tempStr      //sample label 
    1341          
    1342         return(0) 
    1343 End 
     1203 
    13441204 
    13451205//function called by the popups to get a file list of data that can be sorted 
Note: See TracChangeset for help on using the changeset viewer.