C++********************************************************************* C C REDPRQ.F C C OPFILEC FEB 03 ARDEAN LEITH C ********************************************************************** C=* FROM: SPIDER - MODULAR IMAGE PROCESSING SYSTEM. AUTHOR: J.FRANK * C=* Copyright (C) 1985-2005 Health Research Inc. * C=* * C=* HEALTH RESEARCH INCORPORATED (HRI), * C=* ONE UNIVERSITY PLACE, RENSSELAER, NY 12144-3455. * C=* * C=* Email: spider@wadsworth.org * C=* * C=* This program is free software; you can redistribute it and/or * C=* modify it under the terms of the GNU General Public License as * C=* published by the Free Software Foundation; either version 2 of the * C=* License, or (at your option) any later version. * C=* * C=* This program is distributed in the hope that it will be useful, * C=* but WITHOUT ANY WARRANTY; without even the implied warranty of * C=* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * C=* General Public License for more details. * C=* * C=* You should have received a copy of the GNU General Public License * C=* along with this program; if not, write to the * C=* Free Software Foundation, Inc., * C=* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * C=* * C ********************************************************************** C C REDPRQ C C IMAGE_PROCESSING_ROUTINE C C23456789 123456789 123456789 123456789 123456789 123456789 123456789 12 C--********************************************************************* SUBROUTINE REDPRQ(N,NANG,ANG,ILIST,IPCUBE,NN,DM, & RI,ABA,LUNPROJ,LUNVOL,IRTFLG) INCLUDE 'CMBLOCK.INC' REAL, ALLOCATABLE, DIMENSION(:,:,:) :: CB REAL, DIMENSION(N,N) :: PROJ INTEGER, DIMENSION(NANG) :: ILIST INTEGER, DIMENSION(5,NN) :: IPCUBE REAL, DIMENSION(9,NANG) :: DM REAL, DIMENSION(3,NANG) :: ANG CHARACTER*80 FINPIC,FINPAT COMMON /F_SPEC/ FINPAT,NLET,FINPIC COMMON /NORMB/ BNORM DOUBLE PRECISION ABA IRTFLG = 1 ABA = 0.0D0 KLP = 0 ALLOCATE (CB(N,N,N), STAT=IRTFLG) IF (IRTFLG.NE.0) THEN CALL ERRT(46,'REDPRQ, CB',IER) RETURN ENDIF C ZERO CB ARRAY CB = 0.0 DO K=1,NANG C OPEN DESIRED FILE CALL FILGET(FINPAT,FINPIC,NLET,ILIST(K),IRTFLG) IF (IRTFLG .NE. 0) RETURN MAXIM = 0 CALL OPFILEC(0,.FALSE.,FINPIC,LUNPROJ,'O',IFORM, & LSAM,LROW,NSL, & MAXIM,'DUMMY',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) RETURN DO K2=1,N CALL REDLIN(LUNPROJ,PROJ(1,K2),N,K2) ENDDO CLOSE(LUNPROJ) IF (VERBOSE) WRITE(NOUT,333) K,(ANG(J,K),J=3,1,-1) 333 FORMAT(' PROJECTION #',I6, & '; PSI=',F6.1,' THETA=',F6.1,' PHI=',F6.1) CALL ASTA(PROJ,N,RI,ABA,KLP) CALL RPRQ(N,PROJ,CB(1,1,1),IPCUBE,NN, & ANG(1,K),ANG(2,K),ANG(3,K),DM(1,K),RI) ENDDO ABA = ABA / KLP C PRINT STATISTICS WRITE(NOUT,2044) KLP,ABA 2044 FORMAT(' TOTAL NUMBER OF POINTS IN PROJECTIONS:',I10,/, & ' AVERAGE OUTSIDE THE WINDOW: ',1PE10.3,/) C SUBTRACT THE AVERAGE AND WRITE TO THE FILE BNORM = 0.0 QT = ABA * NANG DO KN=1,NN J = IPCUBE(4,KN) K = IPCUBE(5,KN) DO I=IPCUBE(3,KN),IPCUBE(3,KN)+IPCUBE(2,KN)-IPCUBE(1,KN) CB(I,J,K) = CB(I,J,K) - QT BNORM = BNORM+CB(I,J,K) * CB(I,J,K) ENDDO CALL WRTLIN(LUNVOL,CB(1,J,K),N,(K-1)*N+J) ENDDO IRTFLG = 0 IF (ALLOCATED(CB)) DEALLOCATE(CB) RETURN END