- Make Poldi Tensile device work
- Added error resetting and a coupel of bug fixes for SLS magnets - Implemented new table driving mode for MARS
This commit is contained in:
71
sanslirebin.tc
Normal file
71
sanslirebin.tc
Normal file
@@ -0,0 +1,71 @@
|
||||
/**
|
||||
* A special module for doing SANSLI rebinning. This is a fudge to make
|
||||
* the data from the new detector electronics look like the old one.
|
||||
*
|
||||
* copyright: see file COPYRIGHT
|
||||
*
|
||||
* Mark Koennecke, May 2007
|
||||
*/
|
||||
<%! source ../sicstemplates.tcl %>
|
||||
<% stdIncludes %>
|
||||
#include <math.h>
|
||||
#include <sicsdata.h>
|
||||
#include "rebin.h"
|
||||
/*---------------------------------------------------------------------------*/
|
||||
<% makeSicsFunc SansliRebin%>{
|
||||
pSICSData target = NULL, hmData = NULL;
|
||||
pNXDS dataset = NULL;
|
||||
int iDim[2], ix, iy, pos, ival;
|
||||
double x, y, val;
|
||||
|
||||
<% testNoPar 2 4 %>
|
||||
|
||||
hmData = (pSICSData)FindCommandData(pSics,argv[1],"SICSData");
|
||||
if(hmData == NULL){
|
||||
SCWrite(pCon,"ERROR: histogram memory data not found",eError);
|
||||
return 0;
|
||||
}
|
||||
target = (pSICSData)FindCommandData(pSics,argv[2],"SICSData");
|
||||
if(target == NULL){
|
||||
SCWrite(pCon,"ERROR: target sicsdata not found",eError);
|
||||
return 0;
|
||||
}
|
||||
iDim[0] = 128;
|
||||
iDim[1] = 128;
|
||||
dataset = createNXDataset(2,NX_FLOAT64, iDim);
|
||||
if(dataset == NULL){
|
||||
SCWrite(pCon,"ERROR: out of memory allocating temporary data",eError);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
for(ix = 113; ix < 415; ix++){
|
||||
for(iy = 153; iy < 363; iy++){
|
||||
x = ((double)ix - 113.)/2.359;
|
||||
y = ((double)iy - 153.)/1.640;
|
||||
getSICSDataInt(hmData,512*iy + ix,&ival);
|
||||
val = (double)ival;
|
||||
rebinPoint2D(dataset,x,y,val,TRILINEAR);
|
||||
}
|
||||
}
|
||||
|
||||
pos = 0;
|
||||
clearSICSData(target);
|
||||
if(argc > 3) {
|
||||
setSICSDataInt(target,0,128);
|
||||
setSICSDataInt(target,1,128);
|
||||
pos = 2;
|
||||
}
|
||||
for(ix = 0; ix < 128*128; ix++, pos++){
|
||||
setSICSDataInt(target,pos,(int)floor(dataset->u.dPtr[ix] +.5));
|
||||
}
|
||||
dropNXDataset(dataset);
|
||||
SCSendOK(pCon);
|
||||
return 1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
<% makeSicsFunc MakeSansliRebin%>{
|
||||
AddCommand(pSics,"sanslirebin", SansliRebin,NULL,NULL);
|
||||
SCSendOK(pCon);
|
||||
return 1;
|
||||
}
|
||||
Reference in New Issue
Block a user