pro newc2c3carr2, stmon, stday, cam, num, rad ,min, carrmap,pol

;NAME: NEWc2c3CARR2
;
;PURPOSE: 
;     Returns carrington maps at multiple radii for a passed 
;     date at radii chosen in this routine.  Note: for each day, 
;	only one image is used, all at approximately the same time. 
;     Program only works for maps beginning after 
;     January,6 1996.

;INPUTS:
;     The values for month, day, camera, and number of maps is passed to this routine. 
;	This routine asks the user for each radius. 
;
; OUTPUTS:	rad = fltarr(num)	:	radii of maps
;		carrmap = intarr(*,*,num):	carrington maps, one per radius
;		
;
;ROUTINES CALLED:
;    getmelasco2.pro
;    increaseday.pro
;    resize2.pro
;    getinfo.pro
;
; AUTHOR:	Julia Kraemer, NRL, June 7, 1996
;
; MODIFIED:	961004 by N. Rich	took this procedure from newcarr.pro
;		961007 by N. Rich	took out INTERPOLATE procedure; see what is 
;					happening with scaling to background; add min
;					parameter
;		961010 by N. Rich	changed map display to show progressing map
;		961011 by N. Rich	added GOTO to skip iterative query when no files
;					are present; modified to accept 1024x576 array if 
;					square array not available
;		961015 by N. Rich	modified val0 to use previous value if 0; rejects 
;					images where median is 0
;		961016 by N. Rich	commented out lines which look for 512x512 images
;		961030 by N. Rich	added procedure calls for getc2c3pol,  $
;					getc2c3unpol and getc2c3norm
;		961031 by N. Rich	modified val1 if val0 is 0
;

COMMON Share1, cx,cy,rconv

scale = 500

numim = 27

FOR r=0,num-1 DO BEGIN
   REPEAT BEGIN
   IF cam eq 'c2' THEN BEGIN
       READ, 'Enter solar radius between 2.2 and 5.2: ', radius
       rmin=2.2
       rmax=5.2
       cx=512
       cy=505
       rconv=79
   ENDIF
   IF cam eq 'c3' THEN BEGIN
      READ, 'Enter solar radius between 5 and 27: ', radius
      rmin=5 
      rmax=27
      cx=518
      cy=530
      rconv=18
   ENDIF
   
   IF radius lt rmin OR radius gt rmax THEN PRINT, 'Radius is out of range. Please try again: '
   ENDREP UNTIL radius ge rmin and radius le rmax
   rad(r)=radius
ENDFOR
 
window,0,xsize=600,ysize=190*num
window,2,xsize=512,ysize=512

strip=FLTARR(1,181)
seestrips=FLTARR(numim*10,181,num) 
newst=FLTARR(10,181,numim,num)
carrmap=FLTARR(numim*10,181,num)
val0=fltarr(num)
val1=fltarr(num)
val1(*) = 1

;val0(*) = 42.0				; average value for c3 at R = 20

month=stmon
day=FLOOR(stday)
IF stday-day ge .18118 THEN numinc=7
IF stday-day lt .18118 THEN numinc=6
FOR i=0,numinc-1 DO BEGIN
  increaseday,day,month
ENDFOR
PRINT,day
PRINT,month

stday=stday+6.81882
sttime=stday-FLOOR(stday)
sthour=STRTRIM(STRING(24*sttime,FORMAT='(I2.2)'),2)
stmin=24*sttime-FLOOR(24*sttime)
stmin=STRTRIM(STRING(stmin*60,FORMAT='(I2.2)'),2)
stime=sthour+':00:00'
PRINT,stime
mon=month

FOR k=0,numim-1 DO BEGIN                 ;cycles through each day
    print,'newcarr: k = ',k
  
    IF mon EQ 4 AND day EQ 18 THEN sttime = 0.625 ELSE $
    IF mon EQ 5 AND day EQ 21 THEN sttime = 0.833 ELSE $
	sttime = stday-FLOOR(stday)

    IF pol EQ 'p' THEN im=getc2c3pol(mon,day,cam,sttime) $
    ELSE IF pol EQ 'u' THEN im=getc2c3unpol(mon,day,cam,sttime)$
	ELSE im=getc2c3norm(mon,day,cam,sttime)

 resize2,im	; sizes im to 1024x1024

 wset,2
 IF pol EQ 'p' OR pol EQ 'u' THEN scale = 80
 tvscl,rebin(im,512,512)<scale
 wset,0
print,'max(im) = ',max(im)
print,'median(im) = ',median(im)

 FOR r=0,num-1 DO BEGIN               ; cycles through each radius
	r0=rad(r)*rconv
	rn=rad(r)*rconv
	
	FOR i=0,180 DO BEGIN
	   theta=i-90
	   th=theta*!PI/180
	   xcoor=r0*cos(th)+cx
	   ycoor=r0*sin(th)+cy
	   IF (xcoor ge 0 AND xcoor le 1023 AND ycoor ge 0 AND ycoor le 1023) $
	    THEN BEGIN
                  strip(0,i)=INTERPOLATE(im,xcoor,ycoor)
	   ENDIF
	ENDFOR   ;i loop

   ;  if day eq 15 or day eq 14 then stop

	newstrip = CONGRID(strip,10,181)
	newst(*,*,k,r)=(newstrip(*,*))
	val0(r)=median(newst(*,165:180,k,r))
	IF val1(r) EQ 1 THEN val1(r) = val0(r)		; check for initial condition
	IF val1(r) LT 0 THEN newst(*,*,k,r) = 0
;	IF val0(r) GT 0.5*val1(r) AND val0(r) LT 1.5*val1(r) THEN 
; if current median not between 50% and 150% of previous value, use previous value
	IF val0(r) GT 0 THEN val1(r) = val0(r)		
		; if 0 (such as when 1024x576), then uses previous value
	min=min(newst(*,*,k,r))
;	newst(*,*,k,r)=(strip(*,*))	; for 27x181 result

 print,'val1(r)= ',val1(r)
	IF val1(r) ne 0 THEN BEGIN
		newst(*,*,k,r)=10*newst(*,*,k,r)/val1(r)
		strip(0,*)=10*strip(0,*)/val1(r)
	ENDIF
	carrmap((numim-1)*10-k*10:(numim-1)*10-k*10+9,*,r) = newst(0:9,*,k,r)
;	carrmap(numim-1-k,*,r) = strip(0,*)	; for 27x181 result

;	numstrips((numim-1)-k,*,r) = newst(0,*,k,r)

 ;           FOR x=0,9 DO BEGIN 
 ;		FOR y=0,180 DO BEGIN
 ;              		carrmap((numim-1)*10-10*k+x,y,r)=newst(x,y,k,r)
 ;	    	ENDFOR     ; y loop
 ;	    ENDFOR     ; x loop

;	carrmap(*,*,r) = congrid(numstrips(*,*,r),(k+1)*10,181)		; for 27x181 result
	tvscl,carrmap(*,*,r),0,190*(num-r-1)
	
    ENDFOR

   increaseday,day,mon
ENDFOR     ;k loop
   

END ; newc2c3carr
