program raxer4 structure /header/ union map byte bline(4096) end map map INTEGER*2 iline(4096) end map map character*10 device character*10 version character*20 crystal character*12 cry_sys real*4 cell(6) character*12 space real*4 mosaic character*80 memo integer*4 res1(21) character*12 date character*20 operator character*4 target real*4 wave character*20 monochro !mon name real*4 mono_2 !monoch 2theta dgr character*20 collimator character*4 filter real*4 camera_len !mm real*4 kvma(2) !X-ray power integer*4 res2(39) character*4 axis(2) real*4 phi0 !phi0 real*4 phist !phistart real*4 phiend !phiend integer*4 osc real*4 ex_time real*4 xray(2) !x,z - xray beam pos. num of pixels real*4 circle(3) !omega, chi 2theta dgr integer*4 res3(52) integer*4 pix_num(2) !x z number of pixels real*4 pix_size(2) !x z pix size (mm) integer*4 record(2) !rec length and number integer*4 read_start integer*4 ip_num real*4 ratio !hi/lo ratio real*4 fading(2) integer*4 res4(53) end map end union end structure record /header/ header integer*4 npix(1000) CHARACTER DAT*12,TIM*12,filedate*23 CHARACTER*80 TITLE CHARACTER*50 INFILE,OUTFILE CHARACTER*50 FILENAME CHARACTER*40 FNAME,ASTRING,outfilmx CHARACTER*1 OUTSTRING(3800),HSTRING(16),BOXFLAG LOGICAL EFLG integer*2 h,k,l DATA HSTRING/'0','1','2','3','4','5','6','7','8','9','A','B','C', - 'D','E','F'/ R64K=256*256 R32K=128*256 WRITE(6,1000) 1000 FORMAT(//' RAXIS-2 TO POSTSCRIPT IMAGE FILE CONVERSION . PROGRAM Version 950107'/' To print image: PLW "OUTPUT".ps') 5001 WRITE(6,1100) 1100 FORMAT(/'$Input filename (CR to quit): ') READ(5,1200) INFILE 1200 FORMAT(A) IF (INFILE(:5).EQ.' ') STOP INQUIRE(FILE=INFILE, NAME=FILENAME,EXIST=EFLG) IF (EFLG) GOTO 5 write(6,11001) goto 5001 11001 format(/' FILE DOES NOT EXIST ') 5 OPEN (UNIT=2,FILE=INFILE,STATUS='OLD') 335 continue C335 WRITE(6,1600) 1600 FORMAT('$Output filename: ') C READ(5,1200) outfilmx !!!VS07/07 file name instead Marxer.ps OPEN (UNIT=3,FILE='RAXXER.PS',STATUS='NEW',recl=1900, & CARRIAGECONTROL='LIST') 1400 write(6,*)'Enter window (pixels; xmin,xmax,ymin,ymax;', . ' 0 0 0 0 for default):' read(5,*) j1,j2,i1,i2 c (j1 refers to x, i1 to y -- see definition below in terms of record structure) C read HEADER into bline, encode into titles: READ(2,155) (header.BLINE(ii),ii=1,2048) 155 FORMAT (4096A1) TYPE *,'TIME: ',header.DATE TYPE *,'DISTANCE: ',header.CAMERA_len TYPE *,'LAMBDA: ',header.wave TYPE *,'PHI_START: ',header.PHIST TYPE *,'PHI_END: ',header.PHIEND TYPE *,'pix_X: ',header.PIX_NUM(1) TYPE *,'Pix_Z: ',header. PIX_NUM(2) type *,'memo: ',header.memo DMEAN=0 DMAX=-1E32 DMIN=1E32 NX=HEADER.PIX_NUM(1) NY=HEADER.PIX_NUM(2) ENCODE(80,6739,TITLE) HEADER.DATE,filedate 6739 FORMAT(' R-AXIS image of: ',A12,' Filedate:',a23) PIX=HEADER.PIX_size(1) 72 FORMAT(' ',A80) WRITE(6,72)TITLE write(3,'(A)') '50 752 moveto ('//title//') show' ENCODE(80,6745,TITLE) HEADER.EX_TIME 6745 FORMAT(' EXPOSURE TIME (MIN)',F7.2) WRITE(6,72)TITLE write(3,'(A)') '50 732 moveto ('//title//') show' ENCODE(80,6741,TITLE) HEADER.WAVE,HEADER.CAMERA_len, 1 HEADER.PHIST,HEADER.PHIEND 6741 FORMAT('LAMBDA: ',F11.4,' DISTANCE:',F9.2,' PHI:',2F9.2) WRITE (6,72)TITLE write(3,'(A)') '50 742 moveto ('//title//') show' title=header.memo write(3,'(A)') '50 712 moveto ('//title//') show' c Save lambda, distance for calculating resolution: wl=HEADER.WAVE dist = HEADER.CAMERA_len X0=DMEAN/2 XM=DMEAN*3 87 SCALE=(XM-X0)/16 if (j2.eq.0) then I1=0 I2=1899 J1=0 J2=1899 else if (I1.gt.1897) I1=1897 if (I2.gt.1899) I2=1899 if (J1.gt.1897) J1=1897 if (J2.gt.1899) J2=1899 endif in=1+i2-i1 jn=1+j2-j1 nmax=in if (jn.gt.nmax) nmax=jn c note i1,i2,in refer to dimension across records. c MRC considers this Y, mars X c j1,j2,jn refer to dimension along one record. MRC X, mars Y. DO 88 IY = 1,I1-1 88 READ(2,155,end=980) (header.BLINE(II),II=1,3800) DO 95 IY = I1,I2 READ(2,155,end=980) (header.BLINE(II),II=1,3800) DO 90 IX=J1,J2 X=header.ILINE(IX) if (x.lt.0) x=x+R64k c make histogram w x if (x.gt.dmax) dmax=x if (x.lt.dmin) dmin=x iden=1+ x/1000 npix(iden)=npix(iden)+1 90 continue 95 continue GOTO 990 980 WRITE(6,*)'UNEXPECTED END OF FILE READING IMAGE FILE! FILL W WHITE.' 990 CLOSE(UNIT=2) write(6,*)'Minimum and maximum density within the area is:',dmin,dmax OPEN (UNIT=3,FILE='RAXHIST.TXT',STATUS='NEW') do 995 i=1,10000 995 write(3,*) i,npix(i) close(unit=3) end