function c2_calfactor,Header,NOSUM=nosum
ver= '@(#)c2_calfactor.pro  1.9, 03/22/07' ;NRL LASCO IDL LIBRARY
;
;version='V1'
version = STRMID(ver,4,strlen(ver))
hdr = header
IF (DATATYPE(hdr) NE 'STC')  THEN hdr=LASCO_FITSHDR2STRUCT(hdr)
dte=STR2UTC(hdr.date_obs)
mjd=dte.mjd
;
;
;retrieve filter and polarizer position from the header
;
filter = STRUPCASE(STRCOMPRESS(hdr.filter,/remove_all))
polarizer = STRUPCASE(STRCOMPRESS(hdr.POLAR,/remove_all))
;
;set calibration factor for the various filters and polarizers
; polarizers have same factor (1.0)
;
CASE filter OF
  'ORANGE':     BEGIN 
;                   cal_factor=0.06047
                   cal_factor=4.60403e-07*mjd+0.0374116
                   polref=cal_factor/.25256     ; absolute value of +60
                   CASE polarizer OF
                     'CLEAR':   cal_factor=cal_factor*1.
                     '+60DEG':  cal_factor=polref
                     '0DEG':    cal_factor=polref
                     '-60DEG':  cal_factor=polref
                     'nd':  cal_factor=polref
                     ELSE:      cal_factor=cal_factor*1.
                   ENDCASE
                END
  'BLUE':   BEGIN 
                   cal_factor=0.1033
                   polref=cal_factor/.25256     ; absolute value of +60
                   CASE polarizer OF
                     'CLEAR':   cal_factor=cal_factor*1.
                     '+60DEG':  cal_factor=polref
                     '0DEG':    cal_factor=polref
                     '-60DEG':  cal_factor=polref
                     'nd':  cal_factor=polref
                     ELSE:      cal_factor=cal_factor*1.
                   ENDCASE
                END
  'DEEPRD': BEGIN
                   cal_factor=0.1033
                   polref=cal_factor/.25256     ; absolute value of +60
                   CASE STRUPCASE(polarizer) OF
                     'CLEAR':   cal_factor=cal_factor*1.
                     '+60DEG':  cal_factor=polref
                     '0DEG':    cal_factor=polref
                     '-60DEG':  cal_factor=polref
                     'nd':  cal_factor=polref
             ELSE:      cal_factor=0.
                   ENDCASE
                END
  'HALPHA': BEGIN
                   cal_factor=0.01055       ; wrong
                   polref=cal_factor/.25256     ; absolute value of +60
                   CASE polarizer OF
                     'CLEAR':   cal_factor=cal_factor*1.
                     '+60DEG':  cal_factor=polref
                     '0DEG':    cal_factor=polref
                     '-60DEG':  cal_factor=polref
                     'nd':  cal_factor=polref
                     ELSE:      cal_factor=cal_factor*1.
                   ENDCASE
                END
  'LENS':   BEGIN
                   cal_factor=0.01055       ; wrong
                   polref=cal_factor/.25256     ; absolute value of +60
                   CASE polarizer OF
                     'CLEAR':   cal_factor=cal_factor*1.
                     '+60DEG':  cal_factor=polref
                     '0DEG':    cal_factor=polref
                     '-60DEG':  cal_factor=polref
                     'nd':  cal_factor=polref
                     ELSE:      cal_factor=cal_factor*1.
                   ENDCASE
                END
  ELSE:     cal_factor=0.
ENDCASE

IF NOT(keyword_set(NOSUM)) THEN BEGIN
    ;
    ;correct calibration factor for pixel summation
    ;
    IF (hdr.sumcol GT 0)  THEN cal_factor=cal_factor/hdr.sumcol
    IF (hdr.sumrow GT 0)  THEN cal_factor=cal_factor/hdr.sumrow
    IF (hdr.lebxsum GT 1)  THEN cal_factor=cal_factor/hdr.lebxsum
    IF (hdr.lebysum GT 1)  THEN cal_factor=cal_factor/hdr.lebysum
;
ENDIF
;PRINT,'C2_CALFACTOR version = V2'
;IF (cal_factor EQ 0) THEN PRINT,'invalid filter and polarizer position'
;print,'filter position =  ',filter
;print,'polarizer position =  ',polarizer
;PRINT,'cal_factor =',cal_factor
;PRINT,'units of (10^-10B/Bsun)/(DN/pixel-second)'
;
;

; Ratio of C2/C3 in Orange filter
;c2c3match = (7.5575/2.86) ; using correct calfact negates the need for this fudge factor
;cal_factor = cal_factor*1.e-10*c2c3match
cal_factor = cal_factor*1.e-10

IF (DATATYPE(header) NE 'STC')  $
   THEN FXADDPAR,header,'HISTORY',' '+strcompress(version)+': '+strcompress(TRIM(STRING(cal_factor)))

RETURN, cal_factor
END