pro batch_darkcurrent,dkdir=dkdir,noref=noref,saturation=saturation,e=e,nornhist=nornhist

    ; default directory containing raw dark current FITS files
    if not(keyword_set(dkdir)) then begin
       ; set directory according to whether using a PC or workstation
       if (!version.os_family eq 'unix') then begin
         dkdir='/data/skunk3/idtl/data/H1RG-022-SIPIN/cold1/darkcurrent_test.7May05/'
       endif else begin
         dkdir='E:\H4RG-10-007\Cold1\ASIC\07Jun01\'
       endelse
    endif
	if not(keyword_set(saturation)) then saturation=37900.

    ; check to see if input directory name ends in path delimiter--if not, add it to the end
    if (strmid(dkdir,strlen(dkdir)-1,1) ne path_sep()) then dkdir=dkdir+path_sep()
    norefdir=''
    if (keyword_set(noref)) then norefdir='noref'+path_sep()

    ; define regions for analysis
    region1=[4,1019,4,1019]
;    region1=[700,900,200,900]
;   region1=[4,4091,4,4091]
;    region1=[4,2047,4,4091]
;    region1=[0,3,0,4095]
; 	region1=[4,127,4,4091]
; 	region1=[50,100,1000,1000]
	region2=[4,511,4,4091]
;   region2=[2048,2175,3950,4050]
    region2_even=[200,300,100,200]
    region2_odd = [200,300,101,200]
;    regiontop=[0,4095,4092,4095]
    regionleft=[0,3,4,4090]
;    regionleft=[0,3,4,1019]

    ; set flags to enable reducing specific regions
    doregion1=1
    doregion2=0
    doregion2_even= 0
    doregion2_odd = 0
    doregiontop=0
    doregionleft=0

    ; define directories to contain slope images and plots and histograms
    slopedir1=dkdir+norefdir+'SlopePlots'+path_sep()
    slopedir2 = slopedir1+'Region2' + path_sep()
    slopedir2_even=slopedir1+norefdir+'Region2_even' + path_sep()
    slopedir2_odd=slopedir1+norefdir+'Region2_odd' + path_sep()
    slopehistdir1=slopedir1+'histograms'+path_sep()
    slopehistdir2=slopedir2 +'hiltograms'+path_sep()
    slopehistdir2_even=slopedir2_even +'histograms'+path_sep()
    slopehistdir2_odd=slopedir2_odd +'histograms'+path_sep()
    if doregion1 then file_mkdir,slopedir1
    if doregion2 then file_mkdir, slopedir2
    if doregion2_even then file_mkdir,slopedir2_even
    if doregion2_odd then file_mkdir, slopedir2_odd
    if doregion1 then file_mkdir,slopehistdir1
    if doregion2 then file_mkdir, slopehistdir2
    if doregion2_even then file_mkdir,slopehistdir2_even
    if doregion2_odd then file_mkdir,slopehistdir2_odd

    ; define directories to contain read noise images, plots, and histograms
    readnoisedir1=dkdir+norefdir+'ReadNoise_Results'+path_sep()
    readnoisedir2=readnoisedir1+'Region2'+path_sep()
    readnoisedir2_even =readnoisedir1+'Region2_even'+path_sep()
    readnoisedir2_odd =readnoisedir1+'Region2_odd'+path_sep()
    readnoisedirtop=readnoisedir1+'ref_pixels_top'+path_sep()
    readnoisedirleft=readnoisedir1+'ref_pixels_left'+path_sep()
    readnoisehistdir1=readnoisedir1+'histograms'+path_sep()
    readnoisehistdir2=readnoisedir2+'histograms'+path_sep()
    readnoisehistdir2_even = readnoisedir2_even+'histograms'+path_sep()
    readnoisehistdir2_odd =readnoisedir2_odd+'histograms'+path_sep()
    readnoisehistdirtop=readnoisedirtop+'histograms'+path_sep()
    readnoisehistdirleft=readnoisedirleft+'histograms'+path_sep()
    if doregion1 then file_mkdir,readnoisedir1
    if doregion2 then file_mkdir,readnoisedir2
    if doregion2_even then file_mkdir, readnoisedir2_even
    if doregion2_odd then file_mkdir, readnoisedir2_odd
    if doregiontop then file_mkdir,readnoisedirtop
    if doregionleft then file_mkdir,readnoisedirleft
    if doregion1 then file_mkdir,readnoisehistdir1
    if doregion2 then file_mkdir,readnoisehistdir2
    if doregion2_even then file_mkdir, readnoisehistdir2_even
    if doregion2_odd then file_mkdir, readnoisehistdir2_odd
    if doregiontop then file_mkdir,readnoisehistdirtop
    if doregionleft then file_mkdir,readnoisehistdirleft

goto, skipdark

    ; reduce dark current data---------------------------------------------------------------

    if doregion1 then begin
		region=region1
		slopedir=slopedir1
		slopehistdir=slopehistdir1

		darkcurrent_reduce,dkdir,outdir=slopedir,region=region,noref=noref
		darkcurrent_analysis,slopedir,saturation=saturation			;,e=1620./7500.	;,e=3.45
		darkjumbo2,slopedir		;,egain=3.45
		makehistogram,slopedir,'slopeimgs.txt','Dark Current',outdir=slopehistdir,'Dark Current (ADU/second)',region=region

		; reduce initial dark current images
		cd, dkdir
		cd, current = cwd
		temp=file_search('initial_dark_*.fits')
		if (temp[0] ne '') then begin
		   darkcurrent_reduce,dkdir,infile='initial.lst',outdir=slopedir,region=region,valoutfile='slopevals_init.txt', $
		           imgoutfile = 'slopeimgs_init.txt',noref=noref
		   darkcurrent_analysis,slopedir,infile='slopevals_init.txt',jumbofile='darkjumbo_init.txt'
		   makehistogram,slopedir,'slopeimgs_init.txt','Dark Current',outdir=slopehistdir,'Dark Current (ADU/second)',region=region
		   darkjumbo2,slopedir,infile='darkjumbo_init.txt',ext='_init'
		endif
		cd, cwd
    endif

    if doregion2 then begin
       region=region2
       slopedir=slopedir2
       slopehistdir=slopehistdir2
       darkcurrent_reduce,dkdir,outdir=slopedir,region=region,infile='dark.lst',noref=noref
       darkcurrent_analysis,slopedir
       makehistogram,slopedir,'slopeimgs.txt','Dark Current',outdir=slopehistdir,$
               'Dark Current (ADU/second)',region=region
       darkjumbo2,slopedir

       ; reduce initial dark current images
       cd, dkdir
       cd, current = cwd
       temp=file_search('initial_dark_*.fits')
       if (temp[0] ne '') then begin
           darkcurrent_reduce,dkdir,infile='initial.lst',outdir=slopedir,region=region,$
                   valoutfile='slopevals_init.txt', $
                   imgoutfile = 'slopeimgs_init.txt',noref=noref
           darkcurrent_analysis,slopedir,infile='slopevals_init.txt',$
                   jumbofile='darkjumbo_init.txt'
           makehistogram,slopedir,'slopeimgs_init.txt','Dark Current',outdir=slopehistdir,$
                   'Dark Current (ADU/second)',region=region
           darkjumbo2,slopedir,infile='darkjumbo_init.txt',ext='_init'
       endif
       cd, cwd
    endif

    if doregion2_even then begin
       region=region2_even
       slopedir=slopedir2_even
       slopehistdir=slopehistdir2_even

       darkcurrent_reduce,dkdir,outdir=slopedir,region=region, $
               rowinc = 2,noref=noref
       darkcurrent_analysis,slopedir

       makehistogram,slopedir,'slopeimgs.txt','Dark Current', $
               outdir=slopehistdir,'Dark Current (ADU/second)', $
               region=region, rowinc = 2

       darkjumbo2,slopedir

       ; reduce initial dark current images for region2

       cd, dkdir
       cd, current = cwd
       temp=file_search('initial_dark_*.fits')
        if (temp[0] ne '') then begin
           darkcurrent_reduce,dkdir,infile='initial.lst',outdir=slopedir,region=region, valoutfile='slopevals_init.txt', $
                   imgoutfile = 'slopeimgs_init.txt', rowinc = 2,noref=noref
           darkcurrent_analysis,slopedir,infile='slopevals_init.txt',jumbofile='darkjumbo_init.txt'
           makehistogram,slopedir,'slopeimgs_init.txt','Dark Current',$
                   outdir=slopehistdir,'Dark Current (ADU/second)',$
                   region=region, rowinc = 2
           darkjumbo2,slopedir,infile='darkjumbo_init.txt',ext='_init'
       endif
       cd, cwd
    endif

    if doregion2_odd then begin
       region=region2_odd
       slopedir=slopedir2_odd
       slopehistdir=slopehistdir2_odd

       darkcurrent_reduce,dkdir,outdir=slopedir,region=region, $
               rowinc = 2,noref=noref
       darkcurrent_analysis,slopedir

       makehistogram,slopedir,'slopeimgs.txt','Dark Current', $
               outdir=slopehistdir,'Dark Current (ADU/second)', $
               region=region, rowinc = 2
       darkjumbo2,slopedir

       ; reduce initial dark current images for region2

       cd, dkdir
       cd, current = cwd
       temp=file_search('initial_dark_*.fits')
        if (temp[0] ne '') then begin
           darkcurrent_reduce,dkdir,infile='initial.lst',outdir=slopedir,region=region, valoutfile='slopevals_init.txt', $
                   imgoutfile = 'slopeimgs_init.txt', rowinc = 2,noref=noref
           darkcurrent_analysis,slopedir,infile='slopevals_init.txt',jumbofile='darkjumbo_init.txt'
           makehistogram,slopedir,'slopeimgs_init.txt','Dark Current',$
                   outdir=slopehistdir,'Dark Current (ADU/second)',$
                   region=region, rowinc = 2
           darkjumbo2,slopedir,infile='darkjumbo_init.txt',ext='_init'
       endif
       cd, cwd
    endif

;stop
skipdark:

    ; reduce read noise data---------------------------------------------------------------
    ; call rnperpixel to write the std histogram images into the ReadNoise_Results directory
    ; create read noise histogram data

    if doregion1 then begin
	    if not(keyword_set(nornhist)) then rnperpixel,dkdir,infile='dark.lst',outdir=readnoisedir1
       ; readuce read noise data for region2
       region=region1
       outdir=readnoisedir1
       histdir=readnoisehistdir1
       readnoise_reduce,dkdir,infile='dark.lst',outdir=outdir,region=region, /minexp,noref=noref,e=e	;,e=2.5	;,e=1620./7500.
       readnoise_reduce,dkdir,infile='dark.lst',outdir=outdir,region=region, /novar,noref=noref,e=e	;,e=2.5	;e=1620./7500.
;	    readnoise_reduce,dkdir,infile='gain=16.lst',outdir=readnoisedir1+'gain=16_small\',region=region, /minexp,noref=noref
;	    readnoise_reduce,dkdir,infile='gain=4.lst',outdir=readnoisedir1+'gain=4_small\',region=region, /minexp,noref=noref
;	    readnoise_reduce,dkdir,infile='gain=2.lst',outdir=readnoisedir1+'gain=2_small\',region=region, /minexp,noref=noref
;	    readnoise_reduce,dkdir,infile='gain=1.lst',outdir=readnoisedir1+'gain=1_small\',region=region, /minexp,noref=noref	;,e=3.4
;	    readnoise_reduce,dkdir,infile='gain=8.lst',outdir=readnoisedir1+'gain=8_small\',region=region, /minexp,noref=noref
;
;	    readnoise_reduce,dkdir,infile='gain=1_Switchbox=4808.lst',outdir=readnoisedir1+'gain=1_Switchbox=4808\',region=region, /minexp,noref=noref
;	    readnoise_reduce,dkdir,infile='gain=4_Switchbox=4808.lst',outdir=readnoisedir1+'gain=4_Switchbox=4808\',region=region, /minexp,noref=noref

;	    readnoise_reduce,dkdir,infile='gain=1_Volt_Adj.lst',outdir=readnoisedir1+'gain=1_Volt_Adj\',region=region, /minexp,noref=noref	;,e=3.4
;	    readnoise_reduce,dkdir,infile='gain=2_Volt_Adj.lst',outdir=readnoisedir1+'gain=2_Volt_Adj\',region=region, /minexp,noref=noref
;	    readnoise_reduce,dkdir,infile='gain=4_Volt_Adj.lst',outdir=readnoisedir1+'gain=4_Volt_Adj\',region=region, /minexp,noref=noref
;	    readnoise_reduce,dkdir,infile='gain=8_Volt_Adj.lst',outdir=readnoisedir1+'gain=8_Volt_Adj\',region=region, /minexp,noref=noref
;	    readnoise_reduce,dkdir,infile='gain=16_Volt_Adj.lst',outdir=readnoisedir1+'gain=16_Volt_Adj\',region=region, /minexp,noref=noref
;	    readnoise_reduce,dkdir,infile='gain=1_Volt_Adj_Switchbox=4808.lst',outdir=readnoisedir1+'gain=1_Volt_Adj_Switchbox=4808\',region=region, /minexp,noref=noref
;	    readnoise_reduce,dkdir,infile='gain=4_Volt_Adj_Switchbox=4808.lst',outdir=readnoisedir1+'gain=4_Volt_Adj_Switchbox=4808\',region=region, /minexp,noref=noref
;

       ; make read noise histograms
	    if not(keyword_set(nornhist)) then makehistogram,readnoisedir1,'stdfiles.txt','CDS Noise','CDS Noise (ADU)', outdir=histdir, region=region
    endif

    if doregion2 then begin
       ; readuce read noise data for region2
	    if not(keyword_set(nornhist)) then rnperpixel,dkdir,infile='rn.lst',outdir=readnoisedir2
       region=region2
       outdir=readnoisedir2
       histdir=readnoisehistdir2
       readnoise_reduce,dkdir,infile='dark.lst',outdir=outdir,region=region, /minexp,noref=noref
       readnoise_reduce,dkdir,infile='dark.lst',outdir=outdir,region=region, /novar,noref=noref

       ; make read noise histograms
	    if not(keyword_set(nornhist)) then makehistogram,readnoisedir2,'stdfiles.txt','CDS Noise','CDS Noise (ADU)', outdir=histdir, region=region
    endif

    if doregion2_even then begin
       ; readuce read noise data for region2
       region=region2_even
       outdir=readnoisedir2_even
       histdir=readnoisehistdir2_even
       readnoise_reduce,dkdir,infile='rn.lst',outdir=outdir,region=region, rowinc = 2, /minexp,noref=noref
       readnoise_reduce,dkdir,infile='rn.lst',outdir=outdir,region=region, rowinc = 2, /novar,noref=noref

       ; make read noise histograms
       makehistogram,readnoisedir1,'stdfiles.txt','CDS Noise','CDS Noise (ADU)', $
               outdir=histdir, region=region, rowinc = 2
    endif

    if doregion2_odd then begin
       ; readuce read noise data for region2
       region=region2_odd
       outdir=readnoisedir2_odd
       histdir=readnoisehistdir2_odd
       readnoise_reduce,dkdir,infile='rn.lst',outdir=outdir,region=region, rowinc = 2, /minexp,noref=noref
       readnoise_reduce,dkdir,infile='rn.lst',outdir=outdir,region=region, rowinc = 2, /novar,noref=noref

       ; make read noise histograms
       makehistogram,readnoisedir1,'stdfiles.txt','CDS Noise','CDS Noise (ADU)', $
               outdir=histdir, region=region, rowinc = 2
    endif

    if doregiontop then begin
       ; readuce read noise data for top reference rows
       region=regiontop
       outdir=readnoisedirtop
       histdir=readnoisehistdirtop
       readnoise_reduce,dkdir,infile='rn.lst',outdir=outdir,region=region, /minexp,noref=noref
       readnoise_reduce,dkdir,infile='rn.lst',outdir=outdir,region=region, /novar,noref=noref
       ; make read noise histograms
       makehistogram,readnoisedir1,'stdfiles.txt','CDS Noise','CDS Noise (ADU)',outdir=histdir,region=region
    endif

    if doregionleft then begin
       ; readuce read noise data for left reference rows
       region=regionleft
       outdir=readnoisedirleft
       histdir=readnoisehistdirleft
       readnoise_reduce,dkdir,infile='rn.lst',outdir=outdir,region=region, /minexp,noref=noref
       readnoise_reduce,dkdir,infile='rn.lst',outdir=outdir,region=region, /novar,noref=noref
       ; make read noise histograms
       makehistogram,readnoisedir1,'stdfiles.txt','CDS Noise','CDS Noise (ADU)',outdir=histdir,region=region
    endif

end
;-----------------------------------------------------------------
pro doall

	CD , 'c:\rsi' , CURRENT=savdir
	setenv, 'MYARG="hostname" >  "temp.txt"
	SPAWN, '%MYARG%'
	readcol,'temp.txt',dummy,format='a'
	if stregex(dummy,'TIGER',/boolean) then drive='\\hawk.cis.rit.edu\raid1'
	if stregex(dummy,'wolf',/boolean) then drive='\\hawk.cis.rit.edu\raid1'
	if stregex(dummy,'HAWK',/boolean) then drive='e:'

	drive='k:'
	batch_darkcurrent,dkdir=drive+'\LEACH\2007Nov13_2\Fe-55\Complete_Images',saturation=60000,/noref, /nornhist
stop
	batch_darkcurrent,dkdir=drive+'\ASIC\ktc\H4RG_gain=1\present',saturation=60000,/noref, /nornhist
	batch_darkcurrent,dkdir=drive+'\ASIC\ktc\H4RG_gain=1\removed',saturation=60000,/noref, /nornhist
	batch_darkcurrent,dkdir=drive+'\ASIC\ktc\H4RG_gain=4\present',saturation=60000,/noref, /nornhist
	batch_darkcurrent,dkdir=drive+'\ASIC\ktc\H4RG_gain=4\removed',saturation=60000,/noref, /nornhist
	batch_darkcurrent,dkdir=drive+'\ASIC\ktc\H4RG_gain=8\present',saturation=60000,/noref, /nornhist
	batch_darkcurrent,dkdir=drive+'\ASIC\ktc\H4RG_gain=8\removed',saturation=60000,/noref, /nornhist
stop
	batch_darkcurrent,dkdir=drive+'\RdNoiseTest',saturation=60000,/noref, /nornhist
stop
	batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\Leach\11Sep07_Fe55VsVSUB\VSUB=0',saturation=60000,/noref, /nornhist
	batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\Leach\11Sep07_Fe55VsVSUB\VSUB=5',saturation=60000,/noref,/nornhist
	batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\Leach\11Sep07_Fe55VsVSUB\VSUB=10',saturation=60000,/noref, /nornhist
	batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\Leach\11Sep07_Fe55VsVSUB\VSUB=20',saturation=60000,/noref,/nornhist
	batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\Leach\11Sep07_Fe55VsVSUB\VSUB=30',saturation=60000,/noref,/nornhist
	batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\Leach\11Sep07_Fe55VsVSUB\VSUB=40',saturation=60000,/noref,/nornhist
	batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\Leach\11Sep07_Fe55VsVSUB\VSUB=50',saturation=60000,/noref,/nornhist
	stop
	batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\ASIC\darkcurrent_gain=4_nolownoise.02Sep07',saturation=60000,/noref,/nornhist
	batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\ASIC\darkcurrent_gain=4.03Sep07',saturation=60000,/noref,/nornhist
	stop

    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\ASIC\fe55_gain.22Aug07\Fe55_gain=2\',saturation=60000,/noref,/nornhist
    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\ASIC\fe55_gain.22Aug07\Fe55_gain=4\',saturation=60000,/noref,/nornhist
    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\ASIC\fe55_gain.22Aug07\Fe55_gain=8\',saturation=60000,/noref,/nornhist
    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\ASIC\fe55_gain.22Aug07\Fe55_gain=16\',saturation=60000,/noref,/nornhist

    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\ASIC\fe55_gain_NOSF.23Aug07\Fe55_gain=1\',saturation=60000,/noref,/nornhist
    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\ASIC\fe55_gain_NOSF.23Aug07\Fe55_gain=2\',saturation=60000,/noref,/nornhist
    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\ASIC\fe55_gain_NOSF.23Aug07\Fe55_gain=4\',saturation=60000,/noref,/nornhist
    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\ASIC\fe55_gain_NOSF.23Aug07\Fe55_gain=8\',saturation=60000,/noref,/nornhist
    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\ASIC\fe55_gain_NOSF.23Aug07\Fe55_gain=16\',saturation=60000,/noref,/nornhist

stop
    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold3\Leach\15Aug07_Dark_Vreset\',saturation=65000,/noref
    batch_darkcurrent,dkdir=drive+'\H1RG-022-SIPIN\Cold1\LEACH\10Aug07_Fe55\Low_Gain\',saturation=65000,e=1620./420.
    batch_darkcurrent,dkdir=drive+'\H1RG-022-SIPIN\Cold1\LEACH\10Aug07_Fe55\High_Gain\',saturation=65000,e=1620./1730.
    batch_darkcurrent,dkdir=drive+'\H1RG-022-SIPIN\Cold1\LEACH\10Aug07_DarkCurrent\High_Gain\',saturation=65000,e=1620./1730.
    batch_darkcurrent,dkdir=drive+'\H1RG-022-SIPIN\Cold1\LEACH\10Aug07_DarkCurrent\Low_Gain\',saturation=65000,e=1620./420.
stop
    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold2\Leach\30July07_Fe55\',saturation=60000,/noref

stop
    batch_darkcurrent,dkdir=drive+'\H1RG-022-SIPIN\Cold1\ASIC\fe55_gain.11Aug07\Fe55_gain=16\', saturation=65000
    batch_darkcurrent,dkdir=drive+'\H1RG-022-SIPIN\Cold1\ASIC\fe55_gain.11Aug07\Fe55_gain=2\', saturation=65000
    batch_darkcurrent,dkdir=drive+'\H1RG-022-SIPIN\Cold1\ASIC\fe55_gain.11Aug07\Fe55_gain=4\', saturation=65000
    batch_darkcurrent,dkdir=drive+'\H1RG-022-SIPIN\Cold1\ASIC\fe55_gain.11Aug07\Fe55_gain=8\', saturation=65000
    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold2\ASIC\darkcurrent_test.22Jul07\',saturation=37000
    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold2\ASIC\darkcurrent_test.25Jul07\',saturation=37000
    ;batch_darkcurrent,dkdir='\H4RG-10-007\Cold1\ASIC\07Jun01\',/noref
;    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold2\Leach\30July07_Fe55\'		;,/noref
;    batch_darkcurrent,dkdir=drive+'\H4RG-10-007\cold2\Leach\30July07_Fe55\',/noref

end