#%TITLE% mxmarccd.mac
#%NAME%
# Controls MAR CCD macro set for MX datacollection
#
#%CATEGORY% MX, Detection, Ccd
#
#%LOG%
#$Log: mxmarccd.mac,v $
#Revision 1.11 2012/06/26 17:35:43 guijarro
#fixed frame number
#
#Revision 1.10 2011/04/18 12:34:14 guijarro
#use 4 digits for image number
#
#Revision 1.9 2008/08/12 14:39:32 rey
#documentation changes
#
#Revision 1.8 2007/04/25 09:42:20 guijarro
#adapted for new /data/pyarch directory
#
#Revision 1.7 2006/06/16 07:12:10 guijarro
#thumbnails are jpegs (instead of tiffs)
#
#Revision 1.4 2006/06/09 13:27:25 guijarro
#turned mccdprep to a function
#
#Revision 1.3 2006/06/06 13:32:59 spruce
#forgot one COLLECT_PARS
#
#Revision 1.2 2006/06/06 13:31:33 spruce
#3/4 digit names, collect_pars changed for mxutils functions
#
#Revision 1.1 2005/11/08 17:38:15 beteva
#Initial revision
#
#%END%
def marccd_on '{
cdef("ccdstart","mccdstart","_pxccd",0x20)
cdef("ccdread","mccdread","_pxccd",0x20)
cdef("ccdsave","marccdsave","_pxccd",0x20)
cdef("ccdflush","marccdsave","_pxccd",0x20)
cdef("ccdfile","setccdfilename","_pxccd",0x20)
cdef("ccdprep","mccdprep","_pxccd",0x20)
cdef("ccdcleanup","mccdstop","_pxccd",0x20)
}'
def mccdprep(dark,start_angle,range,exp_time,number_of_passes,comment) '{
# hard code to corrected only for now
# call to take a background here if necessary
dark=MXCOLLECT_PARS["TakeDarkFlag"]
if (dark) {
gui_logmsg("Taking a background")
_mccd_state()
if (MCCD_STATE == 2) {
notice ("CCD Clearing before background image ...")
mccdstop
}
mccdwait
mccdstop_bkg
mccdwait
}
}'
def marccdsave '{
#$*
mccdsave_f(MCCD_FILENAME,MCCD_HEADER)
if ( MXCOLLECT_PARS["display"] == "adxv" ) {
mar_adxv_notify()
}
MXCOLLECT_PARS["TakeDarkFlag"]=0
}'
def setccdfilename(cpars,frame) '{
global MCCD_HEADER[] mccd_image_number
mccd_image_number = frame
formatstring = sprintf("%s%d%s","%s/%s_%d_%0",4,"d.%s")
MCCD_FILENAME = sprintf(formatstring,cpars["fileinfo"]["directory"],\
cpars["fileinfo"]["prefix"],\
cpars["fileinfo"]["run_number"],\
mccd_image_number,getMxDetectorFileSuffix())
# But also set the MAR parameters for mccdsave
MCCD_HEADER["xtal_to_detector"]= getMxCurrentDistance()
MCCD_HEADER["start_phi"]= getMxCollectPars("current_phi")
MCCD_HEADER["rotation_range"]= cpars["range"]
MCCD_HEADER["source_wavelength"]= getMxWavelength()
MCCD_HEADER["exposure_time"]= cpars["exposure_time"]
MCCD_HEADER["beam_x"]= getMxBeamCentreX()
MCCD_HEADER["beam_y"]= getMxBeamCentreY()
MCCD_HEADER["dataset_comments"]= cpars["comment"]
MCCD_HEADER["file_comments"]= cpars["comment"]
# prepare thumbnails
global MCCD_THUMBNAIL
local dir thumbnail1_filename thumbnail2_filename
thumbnail1_filename = sprintf(formatstring,cpars["archive_dir"],\
cpars["fileinfo"]["prefix"],\
cpars["fileinfo"]["run_number"],\
mccd_image_number,"jpeg")
thumbnail2_filename = sprintf(formatstring,cpars["archive_dir"],\
cpars["fileinfo"]["prefix"],\
cpars["fileinfo"]["run_number"],\
mccd_image_number,"thumb.jpeg")
printf("jpeg thumbnails should be written to : %s , %s\n", thumbnail1_filename, thumbnail2_filename)
if ((MCCD_THUMBNAIL["enable1"]==1)||(MCCD_THUMBNAIL["enable2"]==1)) {
unix(sprintf("mkdir -p \`dirname %s\`", thumbnail1_filename))
}
MCCD_THUMBNAIL["filename1"]=thumbnail1_filename
MCCD_THUMBNAIL["filename2"]=thumbnail2_filename
return(MCCD_FILENAME)
}'
# For using the adxv program with the mar software
# When images are saved
def mar_adxv_notify() '{
global MCCD_NOTIFY_FILE MCCD_NOTIFY_RUN
MCCD_NOTIFY_FILE = MXCOLLECT_PARS["adxv_notify_file"]
MCCD_NOTIFY_RUN += 1
tmpfile = "/tmp/adxv_notify"
fprintf(tmpfile,"%d %s", MCCD_NOTIFY_RUN, MCCD_FILENAME)
close(tmpfile)
unix(sprintf("cp %s %s;/bin/rm %s", tmpfile, MCCD_NOTIFY_FILE, tmpfile))
}'
#%MACROS%
#%IMACROS%
#%TOC%
#%AUTHOR% BLISS
#$Revision: 1.11 $$Date: 2012/06/26 17:35:43 $
|