;******************************************************************************
;* File name: ql_get_stat.pro                                                 *
;*                                                                            *
;* Content  : 	ql_get_extrema                                                *
;*		ql_get_mean                                                   *
;*		ql_get_std_dev                                                *
;*		ql_get_mediane                                                *
;*                                                                            *
;*                                                                            *
;* Date		Author		Comment                                       *
;* -------------------------------------------------------------------------- *
;* 04-02-94	E.PETIT		Creation                                      *
;* 18-02-94	E.PETIT		Add init of lid                               *
;* 23-02-94	E.PETIT		Get Brightest pixel                           *
;* 22-04-94	E.PETIT		Use array indexes for profile                 *
;******************************************************************************


;***
;##############################################################################
;#Function  name   : ql_get_extrema                                           #
;#LEVEL            :                                                          #
;#                                                                            #
;#Author           : Emmanuel PETIT                                           #
;#Language         : IDL                                                      #
;#Purpose          : Get min & max of data array                              #
;#Creation date    : 04-02-1994                                               #
;#Update date      :                                                          #
;#External modules :                                                          #
;#                                                                            #
;#Call sequence    : ql_get_extrema, data, min, max, err                      #
;#                                                                            #
;#Arguments        : data: input array                                        #
;#                   min : output minimum                                     #
;#                   max : output maximum                                     #
;#                   err : 0 if OK                                            #
;#                                                                            #
;#Description      :                                                          #
;#                                                                            #
;#                                                                            #
;##############################################################################
;*** 

PRO ql_get_extrema, data, min, max, maxpix, err

  ;============================================================================
  ;                       Common Block in use
  ;============================================================================

  ;============================================================================
  ;                       Initialization
  ;============================================================================
  err = 0

  ;============================================================================
  ;                       Processing 
  ;============================================================================
  max = MAX (data, maxpix, MIN=min)
  
END      

;***
;##############################################################################
;#Function  name   : ql_get_mean                                              #
;#LEVEL            :                                                          #
;#                                                                            #
;#Author           : Emmanuel PETIT                                           #
;#Language         : IDL                                                      #
;#Purpose          : Get mean of data array                                   #
;#Creation date    : 04-02-1994                                               #
;#Update date      :                                                          #
;#External modules :                                                          #
;#                                                                            #
;#Call sequence    : ql_get_mean, data, mean, err                             #
;#                                                                            #
;#Arguments        : data: input array                                        #
;#                   mean: output mean                                        #
;#                   err : 0 if OK                                            #
;#                                                                            #
;#Description      :                                                          #
;#                                                                            #
;#                                                                            #
;##############################################################################
;*** 

PRO ql_get_mean , data, mean, err        

  ;============================================================================
  ;                       Common Block in use
  ;============================================================================

  ;============================================================================
  ;                       Initialization
  ;============================================================================
  err = 0

  ;============================================================================
  ;                       Processing 
  ;============================================================================
  
  Nb = N_ELEMENTS(data)
  mean = TOTAL (data)/Nb
  
END      

;***
;##############################################################################
;#Function  name   : ql_get_std_dev                                           #
;#LEVEL            :                                                          #
;#                                                                            #
;#Author           : Emmanuel PETIT                                           #
;#Language         : IDL                                                      #
;#Purpose          : Get standard deviation of input data                     #
;#Creation date    : 04-02-1994                                               #
;#Update date      :                                                          #
;#External modules :                                                          #
;#                                                                            #
;#Call sequence    : ql_get_std_dev, data, mean, std_dev, err                 #
;#                                                                            #
;#Arguments        : data: input array                                        #
;#                   mean: input mean                                         #
;#                   std_dev: output standard deviation value                 #
;#                   err : 0 if OK                                            #
;#                                                                            #
;#Description      :                                                          #
;#                                                                            #
;#                                                                            #
;##############################################################################
;*** 

PRO ql_get_std_dev , data, mean, std_dev, err        

  ;============================================================================
  ;                       Common Block in use
  ;============================================================================

  ;============================================================================
  ;                       Initialization
  ;============================================================================
  err = 0

  ;============================================================================
  ;                       Processing 
  ;============================================================================

  Nb = N_ELEMENTS(data) - 1
  std_dev = SQRT ( TOTAL ((data - mean)^2) /Nb)
  
END      

;***
;##############################################################################
;#Function  name   : ql_get_mediane                                           #
;#LEVEL            :                                                          #
;#                                                                            #
;#Author           : Emmanuel PETIT                                           #
;#Language         : IDL                                                      #
;#Purpose          : Get mediane of input data                                #
;#Creation date    : 04-02-1994                                               #
;#Update date      :                                                          #
;#External modules :                                                          #
;#                                                                            #
;#Call sequence    : ql_get_mediane, data, mediane, err                       #
;#                                                                            #
;#Arguments        : data: input array                                        #
;#                   mediane: output mediane value                            #
;#                   err : 0 if OK                                            #
;#                                                                            #
;#Description      :                                                          #
;#                                                                            #
;#                                                                            #
;##############################################################################
;*** 

PRO ql_get_mediane , data, mediane, err              

  ;============================================================================
  ;                       Common Block in use
  ;============================================================================

  ;============================================================================
  ;                       Initialization
  ;============================================================================
  err = 0

  ;============================================================================
  ;                       Processing 
  ;============================================================================

  mediane = MEDIAN (data)
  
END      

;***
;##############################################################################
;#Function  name   : ql_get_stat                                              #
;#LEVEL            :                                                          #
;#                                                                            #
;#Author           : Emmanuel PETIT                                           #
;#Language         : IDL                                                      #
;#Purpose          : Get min, max, average ,...                               #
;#Creation date    : 04-02-1994                                               #
;#Update date      :                                                          #
;#External modules :                                                          #
;#                                                                            #
;#Call sequence    : ql_get_stat, data, dest, err                             #
;#                                                                            #
;#Arguments        : dest:input: 0 for image, 1 for profil                    #
;#Arguments        : err : 0 if OK                                            #
;#                                                                            #
;#Description      :                                                          #
;#                                                                            #
;#                                                                            #
;##############################################################################
;*** 

PRO ql_get_stat , data, dest, err        

  ;============================================================================
  ;                       Common Block in use
  ;============================================================================
  COMMON curr_data_i_com
  COMMON curr_data_p_com
  COMMON const_com

  ;============================================================================
  ;                       Initialization
  ;============================================================================
  err = 0

  ;============================================================================
  ;                       Processing 
  ;============================================================================

  ql_get_extrema, data, min, max, maxpix, err
  ql_get_mean   , data, mean, err
  ql_get_std_dev, data, mean, std_dev, err
  ql_get_mediane, data, mediane, err

  IF (dest EQ 0) THEN BEGIN
    curr_banner_i.min     = min
    curr_banner_i.max     = max
    curr_banner_i.average = mean 
    curr_banner_i.mediane = mediane
    curr_banner_i.rms     = std_dev
  ENDIF ELSE BEGIN      	
    curr_banner_p.min     = min
    curr_banner_p.max     = max
    curr_banner_p.average = mean 
    curr_banner_p.mediane = mediane
    curr_banner_p.rms     = std_dev
  ENDELSE
END      
